=
+ '__ctx' extends keyof __VLS_PickNotAny ? K extends { __ctx?: { props?: infer P } } ? NonNullable : never
+ : T extends (props: infer P, ...args: any) => any ? P :
+ {};
+ type __VLS_IsFunction = K extends keyof T
+ ? __VLS_IsAny extends false
+ ? unknown extends T[K]
+ ? false
+ : true
+ : false
+ : false;
+ type __VLS_NormalizeComponentEvent = (
+ __VLS_IsFunction extends true
+ ? Props
+ : __VLS_IsFunction extends true
+ ? { [K in onEvent]?: Events[Event] }
+ : __VLS_IsFunction extends true
+ ? { [K in onEvent]?: Events[CamelizedEvent] }
+ : Props
+ ) & Record;
+ // fix https://github.com/vuejs/language-tools/issues/926
+ type __VLS_UnionToIntersection = (U extends unknown ? (arg: U) => unknown : never) extends ((arg: infer P) => unknown) ? P : never;
+ type __VLS_OverloadUnionInner = U & T extends (...args: infer A) => infer R
+ ? U extends T
+ ? never
+ : __VLS_OverloadUnionInner & U & ((...args: A) => R)> | ((...args: A) => R)
+ : never;
+ type __VLS_OverloadUnion = Exclude<
+ __VLS_OverloadUnionInner<(() => never) & T>,
+ T extends () => never ? never : () => never
+ >;
+ type __VLS_ConstructorOverloads = __VLS_OverloadUnion extends infer F
+ ? F extends (event: infer E, ...args: infer A) => any
+ ? { [K in E & string]: (...args: A) => void; }
+ : never
+ : never;
+ type __VLS_NormalizeEmits = __VLS_PrettifyGlobal<
+ __VLS_UnionToIntersection<
+ __VLS_ConstructorOverloads & {
+ [K in keyof T]: T[K] extends any[] ? { (...args: T[K]): void } : never
+ }
+ >
+ >;
+ type __VLS_PrettifyGlobal = { [K in keyof T]: T[K]; } & {};
+ type __VLS_PickFunctionalComponentCtx = NonNullable<__VLS_PickNotAny<
+ '__ctx' extends keyof __VLS_PickNotAny ? K extends { __ctx?: infer Ctx } ? Ctx : never : any
+ , T extends (props: any, ctx: infer Ctx) => any ? Ctx : any
+ >>;
+ type __VLS_UseTemplateRef = Readonly>;
+
+ function __VLS_getVForSourceType(source: number): [number, number, number][];
+ function __VLS_getVForSourceType(source: string): [string, number, number][];
+ function __VLS_getVForSourceType(source: T): [
+ item: T[number],
+ key: number,
+ index: number,
+ ][];
+ function __VLS_getVForSourceType }>(source: T): [
+ item: T extends { [Symbol.iterator](): Iterator } ? T1 : never,
+ key: number,
+ index: undefined,
+ ][];
+ // #3845
+ function __VLS_getVForSourceType }>(source: T): [
+ item: number | (Exclude extends { [Symbol.iterator](): Iterator } ? T1 : never),
+ key: number,
+ index: undefined,
+ ][];
+ function __VLS_getVForSourceType(source: T): [
+ item: T[keyof T],
+ key: keyof T,
+ index: number,
+ ][];
+ // @ts-ignore
+ function __VLS_getSlotParams(slot: T): Parameters<__VLS_PickNotAny, (...args: any[]) => any>>;
+ // @ts-ignore
+ function __VLS_getSlotParam(slot: T): Parameters<__VLS_PickNotAny, (...args: any[]) => any>>[0];
+ function __VLS_asFunctionalDirective(dir: T): T extends import('vue').ObjectDirective
+ ? NonNullable
+ : T extends (...args: any) => any
+ ? T
+ : __VLS_unknownDirective;
+ function __VLS_withScope(ctx: T, scope: K): ctx is T & K;
+ function __VLS_makeOptional(t: T): { [K in keyof T]?: T[K] };
+ function __VLS_asFunctionalComponent any ? InstanceType : unknown>(t: T, instance?: K):
+ T extends new (...args: any) => any
+ ? (props: (K extends { $props: infer Props } ? Props : any) & Record, ctx?: any) => __VLS_Element & { __ctx?: {
+ attrs?: any,
+ slots?: K extends { $slots: infer Slots } ? Slots : any,
+ emit?: K extends { $emit: infer Emit } ? Emit : any
+ } & { props?: (K extends { $props: infer Props } ? Props : any) & Record; expose?(exposed: K): void; } }
+ : T extends () => any ? (props: {}, ctx?: any) => ReturnType
+ : T extends (...args: any) => any ? T
+ : (_: {} & Record, ctx?: any) => { __ctx?: { attrs?: any, expose?: any, slots?: any, emit?: any, props?: {} & Record } };
+ function __VLS_elementAsFunction(tag: T, endTag?: T): (_: T & Record) => void;
+ function __VLS_functionalComponentArgsRest any>(t: T): 2 extends Parameters['length'] ? [any] : [];
+ function __VLS_normalizeSlot(s: S): S extends () => infer R ? (props: {}) => R : S;
+ function __VLS_tryAsConstant(t: T): T;
+}
diff --git a/jiuyi2/pages/index/index.nvue b/jiuyi2/pages/index/index.nvue
index ce16ab87..94c26332 100644
--- a/jiuyi2/pages/index/index.nvue
+++ b/jiuyi2/pages/index/index.nvue
@@ -84,7 +84,7 @@
},
])
// tab下标
- const tabIndex = ref('')
+ const tabIndex = ref(1)
// 起始值
const startY = ref(0)
// 上一个播放索引
@@ -149,8 +149,8 @@
discOffsetTop.value = systemInfo.safeAreaInsets.top + 44 + 30
// 特效完成高度
complete2Top.value = systemInfo.safeAreaInsets.top + 44 + 150
- // 推荐
- handle_tab(1)
+ // 获取列表
+ tabCurrent.value.getList()
// 判断是否提醒过闹铃
if (!uni.getStorageSync('alarmAlt')) {
@@ -269,6 +269,7 @@
// 重载推荐列表
function refreshRecList() {
+ console.log('refreshRecList')
recList.pageNum = 1
recList.total = 0
getRecList()
@@ -292,7 +293,7 @@
pageSize: recList.pageSize,
}
}).then(rs => {
- console.log('getRecList then', rs)
+ console.log('getRecList then')
handleListData(rs, recList)
})
}
@@ -531,7 +532,6 @@
readSecondAdd()
}
tabIndex.value = index
- console.log('load', tab[tabIndex.value].load)
// 根据是否加载过判断 播放还是获取
if (tabCurrent.value.load && proxy.$refs[`videoRef${index}`]) proxy.$refs[`videoRef${index}`][current[index]]
.play()
diff --git a/jiuyi2/pages/login/lock.vue b/jiuyi2/pages/login/lock.vue
index 6af0b6b0..250f14de 100644
--- a/jiuyi2/pages/login/lock.vue
+++ b/jiuyi2/pages/login/lock.vue
@@ -58,7 +58,7 @@
- 输入二级密码解锁未成年模式
+ 输入登录密码解锁未成年模式
当前账号: {{userinfo.phoneNumber}}
diff --git a/jiuyi2/pages/mine/setting/secondPwd.vue b/jiuyi2/pages/mine/setting/secondPwd.vue
index fc619bab..3cb2c9ce 100644
--- a/jiuyi2/pages/mine/setting/secondPwd.vue
+++ b/jiuyi2/pages/mine/setting/secondPwd.vue
@@ -41,7 +41,6 @@
const userinfo = computed(() => {
let result = store.state.userinfo
if (result.hasSecondCipher) mode.value = 'check'
- console.log('userinfo', result)
return result
})
@@ -188,19 +187,12 @@
验证二级密码
请输入二级密码用于验证
-
-
-
-
-
-
+
验证
-
- {{userinfo}}
diff --git a/jiuyi2/pages/news/group-chat/index.vue b/jiuyi2/pages/news/group-chat/index.vue
index 7a6b6eb7..73632f91 100644
--- a/jiuyi2/pages/news/group-chat/index.vue
+++ b/jiuyi2/pages/news/group-chat/index.vue
@@ -111,14 +111,13 @@
}).then(rs => {
if (rs.code == 200) {
util.alert('创建成功')
- return
- //
setTimeout(() => {
form.name = ''
form.groupFaceUrl = ''
uni.navigateBack()
}, 2000)
+
return
}
util.alert({
diff --git a/jiuyi2/pages/release/commodity.vue b/jiuyi2/pages/release/commodity.vue
index 3fe367e1..e0dbaf07 100644
--- a/jiuyi2/pages/release/commodity.vue
+++ b/jiuyi2/pages/release/commodity.vue
@@ -38,8 +38,6 @@
form.id = detail.id
// 商品规格
form.categoryId = detail.categoryId
- //
- form.categoryCode = detail.categoryCode
// 商品价格
form.price = detail.price
// 商品名称
@@ -169,7 +167,6 @@
if (index == categoryIndex.value) return
categoryIndex.value = index
form.categoryId = category[categoryIndex.value].id
- form.categoryCode = category[categoryIndex.value].categoryCode
}
// 发布商品
@@ -211,7 +208,7 @@
-
+
diff --git a/jiuyi2/unpackage/dist/cache/.vite/deps/@tencentcloud_chat.js.map b/jiuyi2/unpackage/dist/cache/.vite/deps/@tencentcloud_chat.js.map
new file mode 100644
index 00000000..760e482a
--- /dev/null
+++ b/jiuyi2/unpackage/dist/cache/.vite/deps/@tencentcloud_chat.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../../../../node_modules/@tencentcloud/chat/index.js"],
+ "sourcesContent": ["\"use strict\";!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).TencentCloudChat=t()}(this,function(){function U(t,e){var n,o=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),o.push.apply(o,n)),o}function y(t){for(var e=1;ee.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:t};throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var h={SDK_READY:\"sdkStateReady\",SDK_NOT_READY:\"sdkStateNotReady\",SDK_DESTROY:\"sdkDestroy\",MESSAGE_RECEIVED:\"onMessageReceived\",ROOM_CUSTOM_DATA_RECEIVED:\"onRoomCustomDataReceived\",MESSAGE_MODIFIED:\"onMessageModified\",MESSAGE_REVOKED:\"onMessageRevoked\",MESSAGE_READ_BY_PEER:\"onMessageReadByPeer\",MESSAGE_READ_RECEIPT_RECEIVED:\"onMessageReadReceiptReceived\",MESSAGE_EXTENSIONS_UPDATED:\"onMessageExtensionsUpdated\",MESSAGE_EXTENSIONS_DELETED:\"onMessageExtensionsDeleted\",MESSAGE_REACTIONS_UPDATED:\"onMessageReactionsUpdated\",CONVERSATION_LIST_UPDATED:\"onConversationListUpdated\",TOTAL_UNREAD_MESSAGE_COUNT_UPDATED:\"onTotalUnreadMessageCountUpdated\",CONVERSATION_GROUP_LIST_UPDATED:\"onConversationGroupListUpdated\",CONVERSATION_IN_GROUP_UPDATED:\"onConversationInGroupUpdated\",GROUP_LIST_UPDATED:\"onGroupListUpdated\",GROUP_ATTRIBUTES_UPDATED:\"groupAttributesUpdated\",GROUP_COUNTER_UPDATED:\"onGroupCounterUpdated\",TOPIC_CREATED:\"onTopicCreated\",TOPIC_DELETED:\"onTopicDeleted\",TOPIC_UPDATED:\"onTopicUpdated\",PROFILE_UPDATED:\"onProfileUpdated\",USER_STATUS_UPDATED:\"onUserStatusUpdated\",BLACKLIST_UPDATED:\"blacklistUpdated\",FRIEND_LIST_UPDATED:\"onFriendListUpdated\",FRIEND_GROUP_LIST_UPDATED:\"onFriendGroupListUpdated\",FRIEND_APPLICATION_LIST_UPDATED:\"onFriendApplicationListUpdated\",MY_FOLLOWERS_LIST_UPDATED:\"onMyFollowersListUpdated\",MY_FOLLOWING_LIST_UPDATED:\"onMyFollowingListUpdated\",MUTUAL_FOLLOWERS_LIST_UPDATED:\"onMutualFollowersListUpdated\",KICKED_OUT:\"kickedOut\",ERROR:\"error\",NET_STATE_CHANGE:\"netStateChange\",ALL_RECEIVE_MESSAGE_OPT_UPDATED:\"onAllReceiveMessageOptUpdated\"},A={MSG_TEXT:\"TIMTextElem\",MSG_IMAGE:\"TIMImageElem\",MSG_SOUND:\"TIMSoundElem\",MSG_AUDIO:\"TIMSoundElem\",MSG_FILE:\"TIMFileElem\",MSG_FACE:\"TIMFaceElem\",MSG_VIDEO:\"TIMVideoFileElem\",MSG_GEO:\"TIMLocationElem\",MSG_LOCATION:\"TIMLocationElem\",MSG_GRP_TIP:\"TIMGroupTipElem\",MSG_GRP_SYS_NOTICE:\"TIMGroupSystemNoticeElem\",MSG_CUSTOM:\"TIMCustomElem\",MSG_MERGER:\"TIMRelayElem\",MSG_PRIORITY_HIGH:\"High\",MSG_PRIORITY_NORMAL:\"Normal\",MSG_PRIORITY_LOW:\"Low\",MSG_PRIORITY_LOWEST:\"Lowest\",CONV_C2C:\"C2C\",CONV_GROUP:\"GROUP\",CONV_TOPIC:\"TOPIC\",CONV_SYSTEM:\"@TIM#SYSTEM\",CONV_AT_ME:1,CONV_AT_ALL:2,CONV_AT_ALL_AT_ME:3,CONV_MARK_TYPE_STAR:1,CONV_MARK_TYPE_UNREAD:2,CONV_MARK_TYPE_FOLD:4,CONV_MARK_TYPE_HIDE:8,GRP_PRIVATE:\"Private\",GRP_WORK:\"Private\",GRP_PUBLIC:\"Public\",GRP_CHATROOM:\"ChatRoom\",GRP_MEETING:\"ChatRoom\",GRP_AVCHATROOM:\"AVChatRoom\",GRP_COMMUNITY:\"Community\",GRP_ROOM:\"Room\",GRP_LIVE:\"Live\",GRP_MBR_ROLE_OWNER:\"Owner\",GRP_MBR_ROLE_ADMIN:\"Admin\",GRP_MBR_ROLE_MEMBER:\"Member\",GRP_MBR_ROLE_CUSTOM:\"Custom\",GRP_TIP_MBR_JOIN:1,GRP_TIP_MBR_QUIT:2,GRP_TIP_MBR_KICKED_OUT:3,GRP_TIP_MBR_SET_ADMIN:4,GRP_TIP_MBR_CANCELED_ADMIN:5,GRP_TIP_GRP_PROFILE_UPDATED:6,GRP_TIP_MBR_PROFILE_UPDATED:7,GRP_TIP_BAN_AVCHATROOM_MEMBER:10,GRP_TIP_UNBAN_AVCHATROOM_MEMBER:11,MSG_REMIND_ACPT_AND_NOTE:\"AcceptAndNotify\",MSG_REMIND_ACPT_NOT_NOTE:\"AcceptNotNotify\",MSG_REMIND_DISCARD:\"Discard\",RECEIVE_WITH_OFFLINE_PUSH_EXCEPT_AT:\"AcceptNotNotifyExceptAt\",NOT_RECEIVE_OFFLINE_PUSH_EXCEPT_AT:\"AcceptNotNotifyExceptAt\",NOT_RECEIVE_MSG_EXCEPT_AT:\"NotReceiveMsgExceptAt\",GENDER_UNKNOWN:\"Gender_Type_Unknown\",GENDER_FEMALE:\"Gender_Type_Female\",GENDER_MALE:\"Gender_Type_Male\",KICKED_OUT_MULT_ACCOUNT:\"multipleAccount\",KICKED_OUT_MULT_DEVICE:\"multipleDevice\",KICKED_OUT_USERSIG_EXPIRED:\"userSigExpired\",KICKED_OUT_REST_API:\"REST_API_Kick\",ALLOW_TYPE_ALLOW_ANY:\"AllowType_Type_AllowAny\",ALLOW_TYPE_NEED_CONFIRM:\"AllowType_Type_NeedConfirm\",ALLOW_TYPE_DENY_ANY:\"AllowType_Type_DenyAny\",FORBID_TYPE_NONE:\"AdminForbid_Type_None\",FORBID_TYPE_SEND_OUT:\"AdminForbid_Type_SendOut\",JOIN_OPTIONS_FREE_ACCESS:\"FreeAccess\",JOIN_OPTIONS_NEED_PERMISSION:\"NeedPermission\",JOIN_OPTIONS_DISABLE_APPLY:\"DisableApply\",JOIN_STATUS_SUCCESS:\"JoinedSuccess\",JOIN_STATUS_ALREADY_IN_GROUP:\"AlreadyInGroup\",JOIN_STATUS_WAIT_APPROVAL:\"WaitAdminApproval\",INVITE_OPTIONS_DISABLE_INVITE:\"DisableInvite\",INVITE_OPTIONS_NEED_PERMISSION:\"NeedPermission\",INVITE_OPTIONS_FREE_ACCESS:\"FreeAccess\",GRP_PROFILE_OWNER_ID:\"ownerID\",GRP_PROFILE_CREATE_TIME:\"createTime\",GRP_PROFILE_LAST_INFO_TIME:\"lastInfoTime\",GRP_PROFILE_MEMBER_NUM:\"memberNum\",GRP_PROFILE_MAX_MEMBER_NUM:\"maxMemberNum\",GRP_PROFILE_JOIN_OPTION:\"joinOption\",GRP_PROFILE_INVITE_OPTION:\"inviteOption\",GRP_PROFILE_INTRODUCTION:\"introduction\",GRP_PROFILE_NOTIFICATION:\"notification\",GRP_PROFILE_MUTE_ALL_MBRS:\"muteAllMembers\",SNS_ADD_TYPE_SINGLE:\"Add_Type_Single\",SNS_ADD_TYPE_BOTH:\"Add_Type_Both\",SNS_DELETE_TYPE_SINGLE:\"Delete_Type_Single\",SNS_DELETE_TYPE_BOTH:\"Delete_Type_Both\",SNS_APPLICATION_TYPE_BOTH:\"Pendency_Type_Both\",SNS_APPLICATION_SENT_TO_ME:\"Pendency_Type_ComeIn\",SNS_APPLICATION_SENT_BY_ME:\"Pendency_Type_SendOut\",SNS_APPLICATION_AGREE:\"Response_Action_Agree\",SNS_APPLICATION_AGREE_AND_ADD:\"Response_Action_AgreeAndAdd\",SNS_CHECK_TYPE_BOTH:\"CheckResult_Type_Both\",SNS_CHECK_TYPE_SINGLE:\"CheckResult_Type_Single\",SNS_TYPE_NO_RELATION:\"CheckResult_Type_NoRelation\",SNS_TYPE_A_WITH_B:\"CheckResult_Type_AWithB\",SNS_TYPE_B_WITH_A:\"CheckResult_Type_BWithA\",SNS_TYPE_BOTH_WAY:\"CheckResult_Type_BothWay\",NET_STATE_CONNECTED:\"connected\",NET_STATE_CONNECTING:\"connecting\",NET_STATE_DISCONNECTED:\"disconnected\",MSG_AT_ALL:\"__kImSDK_MesssageAtALL__\",READ_ALL_C2C_MSG:\"readAllC2CMessage\",READ_ALL_GROUP_MSG:\"readAllGroupMessage\",READ_ALL_MSG:\"readAllMessage\",USER_STATUS_UNKNOWN:0,USER_STATUS_ONLINE:1,USER_STATUS_OFFLINE:2,USER_STATUS_UNLOGINED:3,IOS_OFFLINE_PUSH_NO_SOUND:\"push.no_sound\",IOS_OFFLINE_PUSH_DEFAULT_SOUND:\"default\"},Q={NEW_INVITATION_RECEIVED:\"newInvitationReceived\",INVITEE_ACCEPTED:\"ts_invitee_accepted\",INVITEE_REJECTED:\"ts_invitee_rejected\",INVITATION_CANCELLED:\"ts_invitation_cancelled\",INVITATION_TIMEOUT:\"ts_invitation_timeout\",INVITATION_MODIFIED:\"ts_invitation_modified\",ACTION_TYPE_UNKNOWN:0,ACTION_TYPE_INVITE:1,ACTION_TYPE_CANCEL_INVITE:2,ACTION_TYPE_ACCEPT_INVITE:3,ACTION_TYPE_REJECT_INVITE:4,ACTION_TYPE_INVITE_TIMEOUT:5},$=(e(de,[{key:\"use\",value:function(e){if(\"function\"!=typeof e)throw\"middleware must be a function\";return this.cache.push(e),this}},{key:\"next\",value:function(e){if(this.middlewares&&0=Math.pow(2,64)&&(c({api:t,paramName:n,desc:l(\"NumberLessThanLog\",n,\"Math.pow(2,64)\")}),1)):(c({api:t,paramName:n,desc:un()}),!1)}},enableMark:y({},bn)},createConversationGroup:{conversationIDList:y({},r),groupName:y(y({},o),{},{validator:function(e,t,n){return!(!e||32=this.TOPIC_MSG_LIMIT&&this._convM.clearMemMsg(i,!0)}}catch(e){n.e(e)}finally{n.f()}}}},{key:\"pushIn\",value:function(e){var t=1>(-2*a&6))))i=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(i);try{return decodeURIComponent(escape(n))}catch(e){return\"\"}}var jo,Jo,zo,Xo,Zo,Qo=[\"jpg\",\"jpeg\",\"gif\",\"png\",\"bmp\",\"image\",\"webp\"],$o=[\"mp4\",\"quicktime\",\"mov\"],ei=(e(oa,[{key:\"validate\",value:function(e){var t,n=!0,o=\"\";if(S(e))return{valid:!1,tips:\"empty options\"};if(e.profileCustomField)for(var i=e.profileCustomField.length,a=null,s=0;s=this.MAX_LENGTH&&(t=this.map.entries().next().value[0],this.map.delete(t)),this.map.set(e,1)}},{key:\"has\",value:function(e){return this.map.has(e)}},{key:\"delete\",value:function(e){this.has(e)&&this.map.delete(e)}},{key:\"reset\",value:function(){this.map.clear()}}]),na),ni=[\"groupID\",\"name\",\"avatar\",\"type\",\"introduction\",\"notification\",\"ownerID\",\"selfInfo\",\"createTime\",\"infoSequence\",\"lastInfoTime\",\"lastMessage\",\"nextMessageSeq\",\"memberNum\",\"maxMemberNum\",\"memberList\",\"joinOption\",\"groupCustomField\",\"muteAllMembers\",\"isSupportTopic\",\"inviteOption\",\"_lastRevokedTime\"],oi=(e(ta,[{key:\"memberNum\",get:function(){return this.memberCount},set:function(e){}},{key:\"maxMemberNum\",get:function(){return this.maxMemberCount},set:function(e){}},{key:\"_initGroup\",value:function(e){for(var t in e)ni.indexOf(t)<0||(\"selfInfo\"!==t?(\"memberNum\"===t&&(this.memberCount=e[t]),\"maxMemberNum\"===t&&(this.maxMemberCount=e[t]),\"isSupportTopic\"!==t?this[t]=e[t]:this.isSupportTopic=1===e[t]):this.updateSelfInfo(e[t]))}},{key:\"updateGroup\",value:function(e){var t=this,e=(e.appid=void 0,e.grossTopicNextMsgSeq=void 0,e.selfInfo&&(e.selfInfo.grossTopicReadSeq=void 0),JSON.parse(JSON.stringify(e)));e.lastMsgTime&&(this.lastMessage.lastTime=e.lastMsgTime),N(e.muteAllMembers)||(\"On\"===e.muteAllMembers?e.muteAllMembers=!0:e.muteAllMembers=!1),e.groupCustomField&&kt(this.groupCustomField,e.groupCustomField),N(e.memberNum)||(this.memberCount=e.memberNum),N(e.maxMemberNum)||(this.maxMemberCount=e.maxMemberNum),N(e.isSupportTopic)||(this.isSupportTopic=R(e.isSupportTopic)?1===e.isSupportTopic:e.isSupportTopic),_t(this,e,[\"members\",\"errorCode\",\"lastMsgTime\",\"groupCustomField\",\"memberNum\",\"maxMemberNum\",\"isSupportTopic\"]),O(e.members)&&0e?(c.messageList=i.slice(r-e,r),c.nextReqMessageID=s?i[r-e].ID:i[r-e].sequence+\"\"):(c.messageList=i.slice(0,r),c.isCompleted=!0):eo||n&&a.sequence>n)){if(\"in\"===a.flow&&a.isRead)break;a.setIsRead(!0)}}},{key:\"updateUnreadCount\",value:function(e){var t,n=!(1c&&e.sequence<=r:e.sequence>c&&e.sequencec&&i.length<60?u._recursiveGetMsgList(i,a,s,r,c,e):u._emitMsgReceived(a,i)})}},{key:\"_emitMsgReceived\",value:function(e,t){var n,o,i=this;0=i.MAX_CHECK_COUNT?(i._deleteCachedGroupTips(t),i._checkCountMap.delete(t)):i._checkCountMap.set(t,++n)})}},{key:\"onNewGroupTips\",value:function(e){M.l(\"\".concat(this._n,\".onNewGroupTips options:\").concat(JSON.stringify(e.dataList)));var e=this._assembly(e),t=e.eventDataList,n=e.result,e=e.AVChatRoomMessageList;0=i.MAX_CHECK_COUNT?(i._deleteCachedGroupMessage(t),i._checkCountMap.delete(t)):i._checkCountMap.set(t,++n)})}},{key:\"updateLastMsg\",value:function(e){var t=\"\".concat(this._n,\".updateLastMsg\");if(0!==this._grpM.getGroupMap().size){for(var n,o,i,a,s=!1,r=e.length,c=0;c=this.CACHE_EXPIRE_TIME||r=this.EXPIRE_TIME)return this._getRemoteGroupCounters({groupID:o,avChatRoomKey:a}).then(function(e){s.setMoreMessage(\"from remote. count:\".concat(e.length)).end(),M.l(\"\".concat(n,\" from remote. groupID:\").concat(o));e=t._getLocalCounters(o,i);return C({counters:e})}).catch(function(e){return s.setError(e).end(),D(e)});s.setMoreMessage(\"from cache\").end(),M.l(\"\".concat(n,\" from cache. groupID:\").concat(o));e=this._getLocalCounters(o,i);return T({counters:e})}},{key:\"_getRemoteGroupCounters\",value:function(n){var o=this;return this._grpM.req({P:k.GET_GRP_COUNTER,data:y({},n)}).then(function(e){var e=e.data,t=e.counterList,t=void 0===t?[]:t,e=e.groupCounterSeq;return o._updateLocalGroupCounters({groupID:n.groupID,counterList:t,groupCounterSeq:e}),M.l(\"\".concat(o._n,\"._getRemoteGroupCounters ok. groupID:\").concat(n.groupID)),t}).catch(function(e){return D(e)})}},{key:\"_convertObjectToList\",value:function(t){var n=[];return Object.keys(t).forEach(function(e){n.push({key:e,value:t[e]})}),n}},{key:\"_updateGroupCounters\",value:function(e){var t=\"\".concat(this._n,\"._updateGroupCounters\"),n=e.groupID,o=e.avChatRoomKey,i=e.mode;return M.l(\"\".concat(t,\". groupID:\").concat(n,\" avChatRoomKey:\").concat(o,\" mode:\").concat(i)),this._grpM.req({P:k.UPDATE_GRP_COUNTER,data:y({},e)}).then(function(e){M.l(\"\".concat(t,\" ok.\"));var e=e.data.counterList,n={};return(void 0===e?[]:e).forEach(function(e){var t=e.key,e=e.value;n[t]=e}),n}).catch(function(e){return D(e)})}},{key:\"_hasLocalGroupCounters\",value:function(e){return this._groupCountersMap.has(e)}},{key:\"_getLocalGroupCounters\",value:function(e){return this._hasLocalGroupCounters(e)||this.initGroupCountersCache({groupID:e}),this._groupCountersMap.get(e)}},{key:\"_updateLocalGroupCounters\",value:function(e){var n,t,o,i=e.groupID,a=e.counterList,a=void 0===a?[]:a,e=e.groupCounterSeq;this._hasLocalGroupCounters(i)&&(o=this._getLocalGroupCounters(i),n=o.counters,t=o.avChatRoomKey,o=o.groupCounterSeq,0this._startBroadcastSeq&&(this._startBroadcastSeq=c),O(s)&&01e3*t.expireTime&&1e4=i&&t.messageList.push(e)}),(Nt({groupID:n})||Gt(n))&&0===t.messageList.length&&a[0].sequencei.nextMessageSeq&&(i.updateNextMessageSeq(n),i.updateLastMessage(e),i.updateSelfInfo({readedSequence:t}),i.updateUnreadCount(0),this.emitOEvt(h.TOPIC_UPDATED,{groupID:o,topic:i}))}},{key:\"onMessageModified\",value:function(e){var t,n=e.to,o=e.time,i=e.sequence,a=e.elements,s=e.cloudCustomData,r=e.messageVersion,c=Jt(n),u=this.getLocalTopic(c,n);u&&(t=u.lastMessage,M.d(\"\".concat(this._n,\".onMessageModified topicID:\").concat(n,\" lastMessage:\"),JSON.stringify(t),\"options:\",JSON.stringify(e)),t)&&(null===t.payload||t.lastTime===o&&t.lastSequence===i&&t.version!==r)&&(t.type=a[0].type,t.payload=a[0].content,t.messageForShow=zt(t.type,t.payload,this.isIntl()),t.cloudCustomData=s,t.version=r,t.lastSequence=i,t.lastTime=o,this.emitOEvt(h.TOPIC_UPDATED,{groupID:c,topic:u}))}},{key:\"onMessageRevoked\",value:function(e){var n,o,i,a=this;0!==e.length&&(o=n=null,i=!1,e.forEach(function(e){var t=e.to;o=Jt(t),(n=a.getLocalTopic(o,t))&&(n.reduceUnreadCount()&&(i=!0),n.isLastMessageRevoked(e)&&(n.setLastMessageRevoked(!0),n.setLastMessageRevoker(e.revoker),i=!0),(t=n.selfInfo.excludedUnreadSequenceList||[]).push(e.sequence),n.updateSelfInfo({excludedUnreadSequenceList:t}))}),i)&&this.emitOEvt(h.TOPIC_UPDATED,{groupID:o,topic:n})}},{key:\"isLastMessageRevoked\",value:function(e){var t=e.topicID,e=e.sequence,n=Jt(t),n=this.getLocalTopic(n,t),t=!1;return t=n?n.isLastMessageRevoked({sequence:e}):t}},{key:\"updateUnreadCountAndLastMsg\",value:function(e,t,n){var o,i=Jt(e),a=this.getLocalTopic(i,e);a&&(o=a.selfInfo.excludedUnreadSequenceList||[],N(n)||(o=n),t._isExcludedFromUnreadCount&&o.push(t.sequence),a.updateSelfInfo({excludedUnreadSequenceList:o}),M.l(\"\".concat(this._n,\".updateUnreadCountAndLastMsg seq:\").concat(t.sequence,\" lastSeq:\").concat(a.lastMessage.lastSequence)),t.sequence>a.lastMessage.lastSequence)&&(a.updateLastMessage(t),n=t.sequence+1,a.updateNextMessageSeq(n),o=this._computeUnreadCount(a),a.updateUnreadCount(o),(t=this.get(11).getLocalConversation(\"\".concat(A.CONV_GROUP).concat(e)))&&t.updateUnreadCount({nextUnreadCount:o,isFromGetConversations:!0}),this.emitOEvt(h.TOPIC_UPDATED,{groupID:i,topic:a}))}},{key:\"getJoinedCommunityList\",value:function(){return this.get(7).syncCommunityWithTopic()}},{key:\"createTopicInCommunity\",value:function(t){var n,o=this,i=\"\".concat(this._n,\".\").concat(\"createTopicInCommunity\"),e=t.topicID;return N(e)||Gt(e)?t.topicName&&!1===this._filterProfanity(\"topicName\",t)||t.introduction&&!1===this._filterProfanity(\"introduction\",t)||t.notification&&!1===this._filterProfanity(\"notification\",t)?D({code:L.PROFANITY_FOUND}):(n=new G(\"createTopicInCommunity\"),this.req({P:k.CREATE_TOPIC,data:y({},t)}).then(function(e){e=e.data.topicID;return n.setMessage(\"topicID:\".concat(e)).end(),M.l(\"\".concat(i,\" ok. topicID:\").concat(e)),o._updateTopicMap([y(y({},t),{},{topicID:e})]),C({topicID:e})}).catch(function(e){return n.setError(e).end(),M.e(\"\".concat(i,\" failed. error:\"),e),D(e)})):D({code:L.ILLEGAL_TOPIC_ID})}},{key:\"deleteTopicFromCommunity\",value:function(e){var t=this,n=\"\".concat(this._n,\".\").concat(\"deleteTopicFromCommunity\"),a=e.groupID,e=e.topicIDList,e=void 0===e?[]:e,s=new G(\"deleteTopicFromCommunity\");return s.setMessage(\"groupID:\".concat(a,\" topicIDList:\").concat(e)),this.req({P:k.DEL_TOPIC,data:{groupID:a,topicIDList:e}}).then(function(e){var e=e.data.resultList,o=[],i=[],e=((void 0===e?[]:e).forEach(function(e){var t=e.topicID,n=e.errorCode,e=e.errorInfo;0===n?o.push({topicID:t}):i.push({topicID:t,code:n,message:e})}),\"success count:\".concat(o.length,\", fail count:\").concat(i.length));return s.setMoreMessage(e).end(),M.l(\"\".concat(n,\" ok. \").concat(e)),o.forEach(function(e){t._deleteLocalTopic(a,e.topicID)}),C({successTopicList:o,failureTopicList:i})}).catch(function(e){return s.setError(e).end(),M.e(\"\".concat(n,\" failed. error:\"),e),D(e)})}},{key:\"updateTopicProfile\",value:function(e){var t,n=this,o=\"\".concat(this._n,\".\").concat(\"updateTopicProfile\");return M.l(\"\".concat(o,\" options:\"),e),e.topicName&&!1===this._filterProfanity(\"topicName\",e)||e.introduction&&!1===this._filterProfanity(\"introduction\",e)||e.notification&&!1===this._filterProfanity(\"notification\",e)?D({code:L.PROFANITY_FOUND}):((t=new G(\"updateTopicProfile\")).setMessage(\"groupID:\".concat(e.groupID,\" topicID:\").concat(e.topicID)),N(e.muteAllMembers)||(e.muteAllMembers=!0===e.muteAllMembers?\"On\":\"Off\"),this.req({P:k.UPDATE_TOPIC_PROFILE,data:y({},e)}).then(function(){return t.end(),M.l(\"\".concat(o,\" ok\")),n._updateTopicMap([e]),C({topic:n.getLocalTopic(e.groupID,e.topicID)})}).catch(function(e){return t.setError(e).end(),M.e(\"\".concat(o,\" failed. error:\"),e),D(e)}))}},{key:\"getTopicList\",value:function(e){var t=this,n=\"\".concat(this._n,\".\").concat(\"getTopicList\"),o=e.groupID,e=e.topicIDList,e=void 0===e?[]:e,i=0===e.length,c=new G(\"getTopicList\");if(c.setMessage(\"groupID:\".concat(o)),this._getTopicTimeMap.has(o)){var a=this._getTopicTimeMap.get(o),s=a.isGetAll,a=a.time;if((s||!s&&!i)&&Date.now()-a<1e3*this.TOPIC_CACHE_TIME){s=this._getLocalTopicList(o,e);if(i||s.length===e.length)return c.setMoreMessage(\"from cache, topic count:\".concat(s.length)).end(),M.l(\"\".concat(n,\" groupID:\").concat(o,\" from cache, topic count:\").concat(s.length)),T({successTopicList:s,failureTopicList:[]})}}return this.req({P:k.GET_TOPIC_LIST,data:{groupID:o,topicIDList:e}}).then(function(e){var e=e.data.topicInfoList,a=[],s=[],r=[],e=((void 0===e?[]:e).forEach(function(e){var t=e.topic,n=e.selfInfo,o=e.errorCode,e=e.errorInfo,i=t.topicID;0===o?(a.push(y(y({},t),{},{selfInfo:n})),s.push(i)):r.push({topicID:i,code:o,message:e})}),t._updateTopicMap(a),t._handleTopicAtInfo(a),\"success count:\".concat(s.length,\", fail count:\").concat(r.length)),e=(c.setMoreMessage(e).end(),M.l(\"\".concat(n,\" groupID:\").concat(o,\" from remote, \").concat(e)),[]);return S(s)||(t._getTopicTimeMap.set(o,{time:Date.now(),isGetAll:i}),e=t._getLocalTopicList(o,s)),C({successTopicList:e,failureTopicList:r})}).catch(function(e){return c.setError(e).end(),M.e(\"\".concat(n,\" failed. error:\"),e),D(e)})}},{key:\"hasLocalTopic\",value:function(e,t){return!!this._topicMap.has(e)&&this._topicMap.get(e).has(t)}},{key:\"getLocalTopic\",value:function(e,t){var n=null;return n=this._topicMap.has(e)?this._topicMap.get(e).get(t):n}},{key:\"_getLocalTopicList\",value:function(e){var t=1this.MAX_QUERY_USER_COUNT&&(M.w(\"\".concat(o,\" \").concat($t(this.MAX_QUERY_USER_COUNT))),t=i.slice(0,this.MAX_QUERY_USER_COUNT));var s=new G(\"getUserStatus\");return this._userM.req({P:k.GET_USER_STATUS,data:{userIDList:t}}).then(function(e){var e=e.data,t=e.successUserList,t=void 0===t?[]:t,e=e.failureUserList,e=void 0===e?[]:e,t=t.map(function(e){var t=e.userID,n=e.statusType,e=e.customStatus;return{userID:t,statusType:n,customStatus:Wo(e)}}),e=e.map(function(e){var t=e.userID,n=e.invalidUserID,o=e.errorCode,e=e.errorInfo;return{userID:S(n)?t:n,code:o,message:e}}),n=(N(a)||t.unshift(a),\"userID count:\".concat(i.length,\", success count:\").concat(t.length,\", fail count:\").concat(e.length));return s.setMessage(\"\".concat(n)).end(),M.l(\"\".concat(o,\" ok. \").concat(n,\".\")),C({successUserList:t,failureUserList:e})}).catch(function(e){return s.setMessage(\"userID count:\".concat(i.length)).setError(e).end(),M.e(\"\".concat(o,\" failed. error:\"),e),D(e)})}},{key:\"subscribeUserStatus\",value:function(e){var t,n,o,i,a=\"subscribeUserStatus\";return this._userM.canIUse(_.USER_STATUS)?(t=\"\".concat(this._n,\".\").concat(a),(n=p(e=void 0===(e=e.userIDList)?[]:e)).length>this.MAX_SUBSCRIBE_USER_COUNT&&(M.w(\"\".concat(t,\" \").concat($t(this.MAX_SUBSCRIBE_USER_COUNT))),n=e.slice(0,this.MAX_SUBSCRIBE_USER_COUNT)),o=new G(a),i=\"userID count:\".concat(e.length),M.l(\"\".concat(t,\" \").concat(i)),this._userM.req({P:k.SUB_USER_STATUS,data:{userIDList:n}}).then(function(e){e=e.data.failureUserList,e=(void 0===e?[]:e).map(function(e){var t=e.userID,n=e.invalidUserID,o=e.errorCode,e=e.errorInfo;return{userID:S(n)?t:n,code:o,message:e}});return o.setMessage(\"\".concat(i,\" fail count:\").concat(e.length)).end(),M.l(\"\".concat(t,\" ok. fail count:\").concat(e.length,\".\")),C({failureUserList:e})}).catch(function(e){return o.setMessage(i).setError(e).end(),M.e(\"\".concat(t,\" failed. error:\"),e),D(e)})):this._userM.noUse(a)}},{key:\"unsubscribeUserStatus\",value:function(e){var t,n,o,i,a=\"unsubscribeUserStatus\";return this._userM.canIUse(_.USER_STATUS)?(t=\"\".concat(this._n,\".\").concat(a),n=p(e=void 0===(e=(e||{}).userIDList)?[]:e),e.length>this.MAX_UNSUBSCRIBE_USER_COUNT&&(M.w(\"\".concat(t,\" \").concat($t(this.MAX_UNSUBSCRIBE_USER_COUNT))),n=e.slice(0,this.MAX_UNSUBSCRIBE_USER_COUNT)),o=new G(a),i=\"userID count:\".concat(e.length),M.l(\"\".concat(t,\" \").concat(i)),e={userIDList:n},0===n.length&&(e.userIDList=void 0,e.unsubscribeAll=1),this._userM.req({P:k.UNSUB_USER_STATUS,data:e}).then(function(e){e=e.data.failureUserList,e=(void 0===e?[]:e).map(function(e){var t=e.userID,n=e.invalidUserID,o=e.errorCode,e=e.errorInfo;return{userID:S(n)?t:n,code:o,message:e}});return o.setMessage(\"\".concat(i,\" fail count:\").concat(e.length)).end(),M.l(\"\".concat(t,\" ok. fail count:\").concat(e.length,\".\")),C({failureUserList:e})}).catch(function(e){return o.setMessage(\"\".concat(i)).setError(e).end(),M.e(\"\".concat(t,\" failed. error:\"),e),D(e)})):this._userM.noUse(a)}},{key:\"reset\",value:function(){this.MAX_QUERY_USER_COUNT=500,this.MAX_SUBSCRIBE_USER_COUNT=100,this.MAX_UNSUBSCRIBE_USER_COUNT=100}}]),bi),Ai=(t(Ui,u),Jo=n(Ui),e(Ui,[{key:\"onContextUpdated\",value:function(e){this._profileHandler.getMyProfile(),this._blacklistHandler.getBlacklist()}},{key:\"mockOnNickAvatarModified\",value:function(e,t){M.l(\"\".concat(this._n,\"._mockOnNickAvatarModified nick:\").concat(e,\" avatar:\").concat(t)),this.onProfileModified({dataList:[{pushType:1,userID:this.getMyUserID(),profileList:[{tag:g.NICK,value:e},{tag:g.AVATAR,value:t}]}]})}},{key:\"onProfileModified\",value:function(e){this._profileHandler.onProfileModified(e)}},{key:\"onRelationChainModified\",value:function(e){var t,n,e=e.dataList;S(e)||(t=[],e.forEach(function(e){e.blackListDelAccount&&t.push.apply(t,p(e.blackListDelAccount))}),0=this.MIN_THRESHOLD)&&this._report()}},{key:\"onCheckTimer\",value:function(){Date.now()n.MAX_THRESHOLD&&n._flushAtOnce()})):this._lastReportTime=Date.now())}},{key:\"_flushAtOnce\",value:function(){var e=this.get(13),t=e.getItem(this.TAG,!1),n=this._reportBody.getLogsInMemory(),o=\"\".concat(this._n,\"._flushAtOnce\");S(t)?(M.l(\"\".concat(o,\" count:\").concat(n.length)),e.setItem(this.TAG,n,!0,!1)):((n=n.concat(t)).length>this.MAX_THRESHOLD&&(n=n.slice(0,this.MAX_THRESHOLD)),M.l(\"\".concat(o,\" count:\").concat(n.length)),e.setItem(this.TAG,n,!0,!1))}},{key:\"reset\",value:function(){M.l(\"\".concat(this._n,\".reset\")),this._lastReportTime=0,this._report(),this.REPORT_SDKAPPID_BLACKLIST=[],this.REPORT_TINYID_WHITELIST=[]}}]),ha),la=\"none\",da=\"online\",pa=(e(_a,[{key:\"_startRN\",value:function(){var e,n=this;ye&&(e=this._m.get(18).getPlugin(\"chat-network-monitor\"))&&(this._removeListener=e.addEventListener(function(e){var t=e.isConnected,e=e.type;n._networkType!==e&&n._onNetworkStatusChange({isConnected:void 0!==t&&t,networkType:e})}))}},{key:\"start\",value:function(){var t=this,n=\"\".concat(this._n,\".start\");v?(I.getNetworkType({success:function(e){t._networkType=e.networkType||e.subtype||\"\",e.networkType===la?M.w(\"\".concat(n,\" no network, please check!\")):M.i(\"\".concat(n,\" networkType:\").concat(e.networkType))}}),this._mpNetworkStatusCallback=this._onNetworkStatusChange.bind(this),I.onNetworkStatusChange(this._mpNetworkStatusCallback)):Ce&&(this._networkType=da,this._webOnlineCallback=this._onWebOnline.bind(this),this._webOfflineCallback=this._onWebOffline.bind(this),window.addEventListener(\"online\",this._webOnlineCallback),window.addEventListener(\"offline\",this._webOfflineCallback))}},{key:\"_onWebOnline\",value:function(){this._onNetworkStatusChange({isConnected:!0,networkType:da})}},{key:\"_onWebOffline\",value:function(){this._onNetworkStatusChange({isConnected:!1,networkType:la})}},{key:\"_onNetworkStatusChange\",value:function(e){var t=e.isConnected,e=e.networkType,n=\"\".concat(this._n,\"._onNetworkStatusChange\"),o=!1,i=\"previous:\".concat(this._networkType,\" current:\").concat(e);t?(M.i(\"\".concat(n,\" \").concat(i)),this._networkType!==e&&(o=!0,this._networkType=e,this._m.get(21).reConnect(!0))):this._networkType!==e&&(o=!0,this._networkType=e,M.w(\"\".concat(n,\" no network, please check!\")),this._m.get(21).offline()),o&&new G(\"networkChange\").setMessage(\"isConnected:\".concat(t,\" \").concat(i)).end()}},{key:\"isOnline\",value:function(){return this._networkType!==la}},{key:\"getNetworkType\",value:function(){return this._networkType}},{key:\"reset\",value:function(){M.l(\"\".concat(this._n,\".reset\")),v?null!==this._mpNetworkStatusCallback&&(I.offNetworkStatusChange&&I.offNetworkStatusChange(this._mpNetworkStatusCallback),this._mpNetworkStatusCallback=null):Ce?(null!==this._webOnlineCallback&&(window.removeEventListener(\"online\",this._webOnlineCallback),this._webOnlineCallback=null),null!==this._onWebOffline&&(window.removeEventListener(\"offline\",this._webOfflineCallback),this._webOfflineCallback=null)):ye&&this._removeListener&&(this._removeListener(),this._removeListener=null)}}]),_a);function _a(e){d(this,_a),this._m=e,this._networkType=da,this._n=\"NetMonitorModule\",this._mpNetworkStatusCallback=null,this._webOnlineCallback=null,this._webOfflineCallback=null,this._removeListener=null,this._m.getIEmitInst().on(P.A2KEY_AND_TINYID_UPDATED,this._startRN,this)}function ha(e){d(this,ha),(e=sa.call(this,e))._n=\"EventStatModule\",e.TAG=\"im-ssolog-event\",e._reportBody=new ca,e.MIN_THRESHOLD=20,e.MAX_THRESHOLD=100,e.WAITING_TIME=6e4,e.REPORT_LEVEL=[4,5,6],e.REPORT_SDKAPPID_BLACKLIST=[],e.REPORT_TINYID_WHITELIST=[],e._lastReportTime=Date.now();var t=e.getIEmitInst();return t.on(P.A2KEY_AND_TINYID_UPDATED,e._onLoginSuccess,i(e)),t.on(P.CLOUD_CONFIG,e._onCloudConfig,i(e)),e}function ga(e){d(this,ga),this._n=\"SSOLogBody\",this._report=[]}function fa(e){d(this,fa),this._m=e,this._n=\"StorageModule\",this._storageQueue=new Map,this._errorTolerantHandle()}function ma(e,t){return e(t={exports:{}},t.exports),t.exports}var va,Ia=ma(function(e){var o=Object.prototype.hasOwnProperty,_=\"~\";function n(){}function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function i(e,t,n,o,i){if(\"function\"!=typeof n)throw new TypeError(\"The listener must be a function\");n=new a(n,o||e,i),o=_?_+t:t;return e._events[o]?e._events[o].fn?e._events[o]=[e._events[o],n]:e._events[o].push(n):(e._events[o]=n,e._eventsCount++),e}function c(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function t(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(_=!1)),t.prototype.eventNames=function(){var e,t,n=[];if(0===this._eventsCount)return n;for(t in e=this._events)o.call(e,t)&&n.push(_?t.slice(1):t);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},t.prototype.listeners=function(e){var e=_?_+e:e,t=this._events[e];if(!t)return[];if(t.fn)return[t.fn];for(var n=0,o=t.length,i=new Array(o);n=this.cosOptions.expiredTime-120&&this._getAuthorizationKey()}},{key:\"getFileDNList\",value:function(){return this._fileDNList}},{key:\"_getAuthorization\",value:function(e,t){t({TmpSecretId:this.cosOptions.secretId,TmpSecretKey:this.cosOptions.secretKey,XCosSecurityToken:this.cosOptions.sessionToken,ExpiredTime:this.cosOptions.expiredTime})}},{key:\"upload\",value:function(e){if(!0===e._relayFlag)return Promise.resolve();var t=this.get(26);switch(e.type){case A.MSG_IMAGE:return t.addTotalCount(Wn),this._uploadImage(e);case A.MSG_FILE:return t.addTotalCount(Wn),this._uploadFile(e);case A.MSG_AUDIO:return t.addTotalCount(Wn),this._uploadAudio(e);case A.MSG_VIDEO:return t.addTotalCount(Wn),this._uploadVideo(e);default:return Promise.resolve()}}},{key:\"_uploadImage\",value:function(v){var I=this,e=this.get(2),M=v.getElements()[0],t=e.getMessageOption(v.clientSequence);return this.doUploadImage({file:t.payload.file,to:t.to,message:v,onProgress:function(e){if(M.updatePercent(e),lt(t.onProgress))try{t.onProgress(e)}catch(e){return D({code:L.MSG_ONPROGRESS_ERR})}}}).then(function(e){var t=e.location,n=e.fileType,o=e.fileSize,i=e.width,a=e.height,s=e.smallImageUrl,r=e.smallImageWidth,c=e.smallImageHeight,u=e.largeImageUrl,l=e.largeImageWidth,d=e.largeImageHeight,p=e.imageInfoArray,e=I.isPrivateNetWork()?t:It(t);M.updateImageFormat(n);var _,h,g={size:o,url:e,width:i,height:a};if(p&&0this.UPLOAD_SIZE_LIMIT.F?this._checkSizeError(\"F\"):0===e.file.files[0].size?D({code:L.MSG_F_IS_EMPTY}):(this._setUploadFileType(255),this.uploadByCOS(e))}},{key:\"doUploadVideo\",value:function(e){return e.file.videoFile.size>this.UPLOAD_SIZE_LIMIT.V?this._checkSizeError(\"V\"):0===e.file.videoFile.size?D({code:L.MSG_F_IS_EMPTY}):-1===$o.indexOf(e.file.videoFile.type)?D({code:L.MSG_V_TYPES_LIMIT}):(this._setUploadFileType(2),v||ye?this.handleVideoUpload(y(y({},e),{},{file:e.file.videoFile})):Ce?this.handleVideoUpload(e):void 0)}},{key:\"handleVideoUpload\",value:function(n){var o=this;return new Promise(function(t,e){o.uploadByCOS(n).then(function(e){t(e)}).catch(function(){o.uploadByCOS(n).then(function(e){t(e)}).catch(function(){e(new E({code:L.MSG_V_UPLOAD_FAIL}))})})})}},{key:\"doUploadAudio\",value:function(e){return e.file?e.file.size>this.UPLOAD_SIZE_LIMIT.A?this._checkSizeError(\"A\"):0===e.file.size?D({code:L.MSG_F_IS_EMPTY}):(this._setUploadFileType(3),this.uploadByCOS(e)):D({code:L.MSG_A_UPLOAD_FAIL})}},{key:\"uploadByCOS\",value:function(t){var c,u,l,d,p=this;return lt(this._cosUploadMethod)?this.timUploadPlugin?this._uploadWithPreSigUrl(t):(c=new G(\"upload\"),u=\"\".concat(this._n,\".uploadByCOS\"),l=Date.now(),d=this._getFile(t),new Promise(function(a,s){var e=v?p._createCosOptionsWXMiniApp(t):p._createCosOptionsWeb(t),r=p;p._cosUploadMethod(e,function(e,t){var n,o,i=Object.create(null);t?e||O(t.files)&&t.files[0].error?(n=new E({code:L.MSG_F_UPLOAD_FAIL}),c.setError(n).end(),M.l(\"\".concat(u,\" failed. error:\"),t.files[0].error),403===t.files[0].error.statusCode&&p._getAuthorizationKey(),s(n)):(i.fileName=d.name,i.fileSize=d.size,i.fileType=d.type.slice(d.type.indexOf(\"/\")+1).toLowerCase(),i.location=(v?t:t.files[0].data).Location,n=Date.now()-l,t=r._formatFileSize(d.size),o=r._formatSpeed(1e3*d.size/n),t=\"size:\".concat(t,\" time:\").concat(n,\"ms speed:\").concat(o),M.l(\"\".concat(u,\" success. name:\").concat(d.name,\" \").concat(t)),a(i),(o=p.get(26)).addCost(Wn,n),o.addFileSize(Wn,d.size),c.setMessage(t).end()):(i=new E({code:L.MSG_F_UPLOAD_FAIL}),c.setError(i).end(),M.w(\"\".concat(u,\" failed. error:\"),e),403===e.statusCode&&p._getAuthorizationKey(),s(i))})})):(this.warn(\"PluginUndetected\"),D({code:L.COS_UNDETECTED}))}},{key:\"_uploadWithPreSigUrl\",value:function(e){var p=this,_=\"\".concat(this._n,\"._uploadWithPreSigUrl\"),h=this._getFile(e);return this._createCosOptionsPreSigUrl(e).then(function(d){return new Promise(function(a,s){var r=new G(\"upload\"),e=d.requestSnapshotUrl,c=void 0===e?void 0:e,u=K(d,ya),l=Date.now();p._cosUploadMethod(u,function(e,t){if(e||403===t.statusCode)r.setError(new E(e)).end(),o={HttpStatusCode:9999,CostTime:nn(l,!1),error:e,url:d.url},t.data&&t.data.uploadIP&&(o.uploadIP=t.data.uploadIP),p._uploadSSOLog(o),M.l(\"\".concat(_,\" failed, error:\"),e),s(new E({code:L.MSG_F_UPLOAD_FAIL}));else{var n=Object.create(null),o=t.data.location||\"\",e=(p.isPrivateNetWork()||0!==o.indexOf(\"https://\")&&0!==o.indexOf(\"http://\")||(o=o.split(\"//\")[1]),n.fileName=h.name,n.fileSize=h.size,n.fileType=h.type.slice(h.type.indexOf(\"/\")+1).toLowerCase(),n.location=o,nn(l,!1)),o=p._formatFileSize(h.size),i=p._formatSpeed(1e3*h.size/e),o=\"size:\".concat(o,\" time:\").concat(e,\"ms speed:\").concat(i,\" res:\").concat(JSON.stringify(t.data)),i=(M.l(\"\".concat(_,\" ok. name:\").concat(h.name,\" \").concat(o)),r.setMessage(o).end(),{HttpStatusCode:t.statusCode,FileSize:h.size,CostTime:e,url:d.url}),o=(t.data&&t.data.uploadIP&&(i.uploadIP=t.data.uploadIP),p._uploadSSOLog(i),p.get(26)),i=(o.addCost(Wn,e),o.addFileSize(Wn,h.size),[]);if(u.thumbUrl&&u.largeUrl&&i.push.apply(i,[p._getSmallImageInfoByUrl(u.thumbUrl,n),p._getLargeImageInfoByUrl(u.largeUrl,n)]),1===p.uploadFileType&&p.isSimpleCos&&!p.isPrivateNetWork()&&(i.push(p._getImageInfoArray(u.downloadUrl,n)),t.data.uploadIP)&&i.push(p._getDownloadIP(u.downloadUrl.split(\"//\")[1].split(\"/\")[0],n)),c&&i.push(p._getSnapshotInfoByUrl(c,n)),0>>18,128|t>>>12&63,128|t>>>6&63,128|63&t)}else t=65533}else t<=57343&&(t=65533);return t<=2047?es(192|t>>>6,128|63&t):es(224|t>>>12,128|t>>>6&63,128|63&t)},ns=function(e){for(var t=void 0===e?\"\":(\"\"+e).replace(/[\\x80-\\uD7ff\\uDC00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]?/g,ts),n=0|t.length,o=new Uint8Array(n),i=0;i=i&&(M.l(\"\".concat(a._n,\"._checkPromiseMap request timeout, delete requestID:\").concat(t)),a._promiseMap.delete(t),n(new E({code:L.NETWORK_TIMEOUT,data:{headSeq:e}})),a._chM.onRequestTimeout())})}},{key:\"_checkNativeAppWS\",value:function(){Ie&&!this.isConnected()&&this._reConnect()}},{key:\"onOpen\",value:function(e){var t,n;this._readyState!==cs&&(this._onOpenTs=Date.now(),n=e.id,e=e.res,this._socketID=n,t=nn(this._startTs,!1),n=\"socketID:\".concat(n,\" res:\").concat(e),M.l(\"\".concat(this._n,\"._onOpen cost:\").concat(t,\" ms. \").concat(n)),new G(\"wsOnOpen\").setMessage(t).setCostTime(t).setMoreMessage(n).end(),this._readyState=ss,this._reConnectCount=0,this._resend(),!0===this._reConnectFlag&&(this._chM.onReconnected(),this._reConnectFlag=!1),this._chM.onOpen())}},{key:\"onClose\",value:function(e){var t=new G(\"wsOnClose\"),n=e.id,e=e.e,o=\"sourceSocketID:\".concat(n,\" currentSocketID:\").concat(this._socketID,\" code:\").concat(e.code,\" reason:\").concat(e.reason),i=0;0!==this._onOpenTs&&(i=Date.now()-this._onOpenTs),t.setMessage(i).setCostTime(i).setMoreMessage(o).setCode(e.code).end(!0),M.l(\"\".concat(this._n,\"._onClose \").concat(o,\" onlineTime:\").concat(i)),n===this._socketID&&(this._readyState=cs,i<1e3?this._chM.onReconnectFailed():this._chM.onClose())}},{key:\"onError\",value:function(e){var t=e.id,e=e.e,n=\"sourceSocketID:\".concat(t,\" currentSocketID:\").concat(this._socketID);new G(\"wsOnError\").setMessage(e.errMsg||JSON.stringify(e,[\"message\",\"code\"])).setMoreMessage(n).setLevel(\"error\").end(!0),M.w(\"\".concat(this._n,\"._onError\"),e,n),t===this._socketID&&(this._readyState=cs,this._chM.onError())}},{key:\"onMessage\",value:function(t){var e,n,o,i,a,s;try{e=JSON.parse(t.data)}catch(e){new G(\"jsonParseError\").setMessage(t.data).end()}e&&e.head&&(t=this._getRequestIDFromHead(e.head),n=e.body,this._chM.get(30).isTRTCCommand(t)||(s=Kt(e.head),n=function t(e,n){var o,i,a;return O(e)?e.map(function(e){return ut(e)?t(e,n):e}):ut(e)?(o=e,i=function(e,t){return N(n[t])?Xa(t):n[t]},a={},Object.keys(o).forEach(function(e){a[i(o[e],e)]=o[e]}),wt(a,function(e){return O(e)||ut(e)?t(e,n):e})):void 0}(e.body,this._getResKeyMap(s))),M.d(\"\".concat(this._n,\".onMessage ret:\").concat(JSON.stringify(n),\" requestID:\").concat(t,\" has:\").concat(this._promiseMap.has(t))),this._setNextPingTs(),this._promiseMap.has(t)?(o=(s=this._promiseMap.get(t)).resolve,i=s.reject,a=s.timestamp,s=s.headSeq,this._promiseMap.delete(t),this._calcRTT(a),n.errorCode&&0!==n.errorCode?(this._chM.onErrorCodeNotZero(n),i(new E({code:n.errorCode,message:n.errorInfo||\"\",data:t.includes(k.MODIFY_C2C_MSG)||t.includes(k.MODIFY_GRP_MSG)?{elements:n.elements,messageVersion:n.messageVersion,cloudCustomData:n.cloudCustomData,headSeq:s}:{headSeq:s}}))):o(C(n))):this._chM.onMessage({head:e.head,body:n}))}},{key:\"_calcRTT\",value:function(e){e=Date.now()-e;this._chM.get(26).addRTT(e)}},{key:\"_connect\",value:function(){this._readyState!==rs&&this._readyState!==ss&&(this._startTs=Date.now(),this._onOpenTs=0,this._readyState=rs,this._socket=new os(this),this._socketID=this._socket.getID(),M.l(\"\".concat(this._n,\"._connect isWorkerEnabled:\").concat(this.getIsWorkerEnabled(),\" socketID:\").concat(this._socketID,\" url:\").concat(this.getURL())),new G(\"wsConnect\").setMessage(\"socketID:\".concat(this._socketID,\" url:\").concat(this.getURL())).end())}},{key:\"getURL\",value:function(){this._chM.isDevMode()&&(this._canIUseBinaryFrame=!1);var e=xt(),t=((ve||_e&&\"windows\"===e||Ie)&&(this._canIUseBinaryFrame=!1),-1),n=(\"ios\"===e?t=Le||-1:\"android\"===e&&(t=ke||-1),this._chM.get(12)),o=this._chM.getPlatform(),i=n.getSDKAppID(),n=n.getInstanceID(),i=\"sdkappid=\".concat(i,\"&instanceid=\").concat(n,\"&random=\").concat(this._getRandom(),\"&platform=\").concat(o,\"&host=\").concat(e)+\"&version=\".concat(t,\"&sdkversion=\").concat(\"3.4.7\");return he&&(i+=\"&isminigame=1\"),this._chM.canIUseInflate()&&(i+=\"&compress=gzip\"),(this._canIUseBinaryFrame?\"\".concat(this._url,\"/binfo?\"):\"\".concat(this._url,\"/info?\")).concat(i)}},{key:\"_closeConnection\",value:function(e){M.l(\"\".concat(this._n,\"._closeConnection socketID:\").concat(this._socketID)),this._socket&&(this._socket.close(e),this._socketID=-1,this._socket=null,this._readyState=cs)}},{key:\"_resend\",value:function(){var i=this;if(M.l(\"\".concat(this._n,\"._resend reConnectFlag:\").concat(this._reConnectFlag),\"promiseMap.size:\".concat(this._promiseMap.size,\" simpleRequestMap.size:\").concat(this._simpleRequestMap.size)),0=this._socketHandler.getNextPingTs()&&this._ping()}},{key:\"dealloc\",value:function(){this._socketHandler&&(this._socketHandler.close(),this._socketHandler=null),-1>>30-e)}function As(e,t){for(var n=e.toString(16),o=t-n.length,i=\"0\";0>>=1,i+=i)1&o&&(n=i+n);return n}t(Wr,u),xs=n(Wr),e(Wr,[{key:\"_init\",value:function(){this._updateCmdFreqLimitMap(ms)}},{key:\"_onCloudConfig\",value:function(){var e=this.getCloudConfig(\"cmd_frequency_limit\");N(e)||(e=JSON.parse(e),this._updateCmdFreqLimitMap(e))}},{key:\"_updateCmdFreqLimitMap\",value:function(e){var t=this;e.forEach(function(e){t._cmdFreqLimitMap.set(e.cmd,{interval:e.interval,count:e.count})})}},{key:\"updateProtocolConfig\",value:function(){this._pHandler.update()}},{key:\"req\",value:function(e){M.d(\"\".concat(this._n,\".req options:\"),e);var t,n,o=e.P;return this._pHandler.has(o)?(t=(e=this.getProtocolData(e)).head.servcmd,this._isFreqOverLimit(t)?D({code:n=L.OVER_FREQUENCY_LIMIT,message:this.getErrMsg(n,this._getCmd(t))}):this._isServerOverload(t)?D({code:n=L.OPEN_SERVICE_OVERLOAD_ERROR,message:this.getErrMsg(n,this._getCmd(t))}):(n=this.get(21),gs.includes(o)?n.simplySend(e):n.send(e))):(M.w(\"\".concat(this._n,\".req unknown P:\").concat(o)),D({code:L.NO_PROTOCOL}))}},{key:\"getKeyMap\",value:function(e){return this._pHandler.getKeyMap(e)}},{key:\"genCommonHead\",value:function(){var e=this.get(12);return{ver:\"v4\",platform:this._platform,websdkappid:ae,websdkversion:oe,a2:e.getA2Key()||void 0,tinyid:e.getTinyID()||void 0,status_instid:e.getStatusInstanceID(),sdkappid:e.getSDKAppID(),contenttype:e.getContentType(),reqtime:0,identifier:e.getA2Key()?void 0:e.getUserID(),usersig:e.getA2Key()?void 0:e.getUserSig(),sdkability:12775283,sdkability_ext:Ss(\"\"),cappid:e.getApplicationID()}}},{key:\"genCosSpecifiedHead\",value:function(){var e=this.get(12);return{ver:\"v4\",platform:this._platform,websdkappid:ae,websdkversion:oe,sdkappid:e.getSDKAppID(),contenttype:e.getContentType(),reqtime:0,identifier:e.getUserID(),usersig:e.getUserSig(),status_instid:e.getStatusInstanceID(),sdkability:12775283,sdkability_ext:Ss(\"\"),cappid:e.getApplicationID()}}},{key:\"genSSOReportHead\",value:function(){var e=this.get(12);return{ver:\"v4\",platform:this._platform,websdkappid:ae,websdkversion:oe,sdkappid:e.getSDKAppID(),contenttype:\"\",reqtime:0,identifier:\"\",usersig:\"\",status_instid:e.getStatusInstanceID(),sdkability:12775283,sdkability_ext:Ss(\"\"),cappid:e.getApplicationID()}}},{key:\"getProtocolData\",value:function(e){return this._pHandler.getProtocolData(e)}},{key:\"trans\",value:function(e){var t=e.servcmd,e=e.data,t={head:y(y({},this.genCommonHead()),{},{servcmd:t}),body:e};return this.get(21).send(t)}},{key:\"sendComboMessage\",value:function(e){var t=e.servcmd,e=e.data,t={head:y(y({},this.genCommonHead()),{},{servcmd:t}),body:e};return this.get(21).send(t)}},{key:\"onErrorCodeNotZero\",value:function(e){var t,n=e.errorCode;n===L.HELLO_ANSWER_KICKED_OUT&&(t=e.kickType,e=void 0===(e=e.newInstanceInfo)?{}:e,1===t?this.onMultipleAccountKickedOut(e):2===t?this.onMultipleDeviceKickedOut(e):3===t&&this.onRestApiKickedOut(e)),n!==L.MSG_A2KEY_EXPIRED&&n!==L.ACCOUNT_A2KEY_EXPIRED||(this._onUserSigExpired(),this.get(21).reConnect())}},{key:\"onMessage\",value:function(e){var t=e.body,n=t.needAck,t=t.sessionData;1===(void 0===n?0:n)&&this._sendACK(t),this._msgDispatcher.onMessage(e)}},{key:\"onReconnected\",value:function(e){this._incrementalPullContactFlag=e<=300,this._reLoginOnReconnected()}},{key:\"reLoginOnKickOther\",value:function(){M.l(\"\".concat(this._n,\".reLoginOnKickOther\")),this._reLogin()}},{key:\"_reLoginOnReconnected\",value:function(){M.l(\"\".concat(this._n,\"._reLoginOnReconnected\")),this._reLogin()}},{key:\"_reLogin\",value:function(){var e,t,s,r=this,c=\"\".concat(this._n,\"._reLogin\");this.isLoggedIn()&&(e=0,(t=this.get(1).getPushModule())&&(e=t.getUniAppPlatform()),s=new G(\"reLogin\"),this.req({P:k.LOGIN,data:{isWebUniapp:e,customInfo:this.get(12).getCustomLoginInfo()}}).then(function(e){var e=e.data,t=e.instanceID,e=e.customStatus,n=r.get(12),o=Wo(e),i=(n.setStatusInstanceID(t),r.get(21)),a=i.getSocketID(),a=\"socketID:\".concat(a,\" instanceID:\").concat(t,\" customStatus:\").concat(o),t=(s.setMessage(a).end(!0),M.l(\"\".concat(c,\" ok. \").concat(a)),n.getCustomStatus()!==o&&r.get(4).onUserStatusUpdated({dataList:[{to:r.getMyUserID(),statusType:A.USER_STATUS_ONLINE,customStatus:e}]}),i.diagnose(),r.get(11).syncConvList(r._incrementalPullContactFlag).then(function(){M.l(\"\".concat(c,\", sync conv list ok.\")),r.get(25).start()}),r.get(7)),a=(t&&t.updateLocalMainSequenceOnReconnected(),r.get(10)),n=(a.resetGetTopicTime(),a.getTopicListOnReconnected(),r.get(35));n&&n.clearCacheOnReconnected()}))}},{key:\"onMultipleAccountKickedOut\",value:function(e){this.get(1).onMultipleAccountKickedOut(e)}},{key:\"onMultipleDeviceKickedOut\",value:function(e){this.get(1).onMultipleDeviceKickedOut(e)}},{key:\"_onUserSigExpired\",value:function(){this.get(1).onUserSigExpired()}},{key:\"onRestApiKickedOut\",value:function(e){this.get(1).onRestApiKickedOut(e)}},{key:\"_sendACK\",value:function(e){this.req({P:k.MSG_PUSH_ACK,data:{sessionData:e}})}},{key:\"_isFreqOverLimit\",value:function(e){var t,n,o,i,e=e.split(\".\")[1];return!!this._cmdFreqLimitMap.has(e)&&(!this._cmdReqInfoMap.has(e)||(t=(n=this._cmdFreqLimitMap.get(e)).count,n=n.interval,o=(i=this._cmdReqInfoMap.get(e)).startTime,i=i.requestCount,Date.now()-o>1e3*n)?(this._cmdReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1):(this._cmdReqInfoMap.set(e,{startTime:o,requestCount:i+=1}),t=this._expiredTime}},{key:\"fetchConfig\",value:function(){var o,i=this,a=\"\".concat(this._n,\".fetchConfig\"),e=this._canFetch();M.l(\"\".concat(a,\" canFetch:\").concat(e)),e&&(o=new G(\"fetchCloudCtrlConfig\"),e=this.get(12).getSDKAppID(),this._isFetching=!0,this.req({P:k.FETCH_CLOUD_CTRL_CONFIG,data:{SDKAppID:e,version:this._version}}).then(function(e){i._isFetching=!1;var t=e.data,n=t.version,t=t.cloudControlConfig;o.setMessage(\"version:\".concat(i._version,\" newVersion:\").concat(n,\" config:\").concat(t)).end(),M.l(\"\".concat(a,\" ok\")),i._parse(e.data)}).catch(function(e){i._isFetching=!1,o.setError(e).end(),M.l(\"\".concat(a,\" failed. error:\"),e),i._setExpiredTime(12e4)}))}},{key:\"onPushedConfig\",value:function(e){M.l(\"\".concat(this._n,\".onPushedConfig config:\"),e),new G(\"pushedCloudCtrlConfig\").setMessage(\"newVersion:\".concat(e.version,\" config:\").concat(e.cloudControlConfig)).end(),this._parse(e)}},{key:\"onCheckTimer\",value:function(e){this._canFetch()&&this.fetchConfig()}},{key:\"_parse\",value:function(e){var t=this,n=\"\".concat(this._n,\"._parse\"),o=e.errorCode,i=e.errorMessage,a=e.cloudControlConfig,s=e.version,r=e.expiredTime;if(0===o){if(this._version!==s){var c=null;try{c=JSON.parse(a)}catch(e){this.isPrivateNetWork()||M.e(\"\".concat(n,\" failed. config:\"),a)}c&&(this._cloudConfig.clear(),Object.keys(c).forEach(function(e){t._cloudConfig.set(e,c[e])}),this._version=s,this.emitIEvt(P.CLOUD_CONFIG))}this._setExpiredTime(1e3*r)}else N(o)?(M.l(\"\".concat(n,\" failed. Invalid message format:\"),e),this._setExpiredTime(36e5)):(M.e(\"\".concat(n,\" errorCode:\").concat(o,\" errorMessage:\").concat(i)),this._setExpiredTime(12e4))}},{key:\"_setExpiredTime\",value:function(e){this._expiredTime=Date.now()+e}},{key:\"reset\",value:function(){M.l(\"\".concat(this._n,\".reset\")),this._cloudConfig.clear(),this._expiredTime=0,this._version=0,this._isFetching=!1}}]),Yr),Bs=(t(Kr,u),Fs=n(Kr),e(Kr,[{key:\"start\",value:function(){this._recoverGroupChat(),this._recoverC2CChat()}},{key:\"_recoverGroupChat\",value:function(){var n,o,i,a,s=this,e=this._getLocalConvList().filter(function(e){return e.type===A.CONV_GROUP&&e.groupProfile.type!==A.GRP_AVCHATROOM}),r=this.get(11),c=[];e.forEach(function(e){var t=e.conversationID,e=e.lastMessage;n=t.replace(A.CONV_GROUP,\"\"),o=r.getLocalLastMessage(t),e&&0!==e.lastSequence&&o&&(i=e.lastSequence,o=o.sequence,a=i-o,0n[0])&&a\",e[i].tag)}this.timestamp=Date.now(),o.length=0}},{key:\"updateProfile\",value:function(e){this.profile=JSON.parse(JSON.stringify(e)),this.timestamp=Date.now()}},{key:\"addToGroupList\",value:function(e){-1===this.groupList.indexOf(e)&&(this.groupList.push(e),this.count=this.groupList.length)}},{key:\"removeFromGroupList\",value:function(e){e=this.groupList.indexOf(e);-1 0) { clearInterval(interval); } interval = setInterval(() => { postMessage(\"\"); }, 1000); postMessage(interval); } else if (event.data === \"stop\") { clearInterval(interval); interval = -1; }};'],{type:\"application/javascript; charset=utf-8\"})),this._workerTimer=new Worker(e),(t=this)._workerTimer.onmessage=function(e){e.data?(t._timerID=e.data,M.l(\"\".concat(t._n,\"._init seed:\").concat(t._timerID))):t._m.onCheckTimer()})}},{key:\"_onCloudConfig\",value:function(){var e=this.getCloudConfig(\"enable_worker\");M.l(\"\".concat(this._n,\"._onCloudConfig enableWorker:\").concat(e)),N(e)||\"1\"===e?!this._isWorkerEnabled&&Ge&&(this._isWorkerEnabled=!0,this.startWorkerTimer(),this._m.onWorkerTimerEnabled()):this._isWorkerEnabled&&Ge&&(this._isWorkerEnabled=!1,this.stopWorkerTimer(),this._m.onWorkerTimerDisabled())}},{key:\"terminate\",value:function(){M.l(\"\".concat(this._n,\".terminate\")),this._workerTimer&&(this._workerTimer.terminate(),this._workerTimer=null,this._timerID=-1)}},{key:\"getTimerID\",value:function(){return this._timerID}},{key:\"reset\",value:function(){M.l(\"\".concat(this._n,\".reset\"))}}]),Nr),or=(e(Or,[{key:\"isValidPurchaseBits\",value:function(e){return e&&\"string\"==typeof e&&1<=e.length&&e.length<=64&&/[01]{1,64}/.test(e)}},{key:\"parsePurchaseBits\",value:function(e){if(this.isValidPurchaseBits(e)){this._featureMap.clear();for(var t,n=e.length-1,o=0;0<=n;n--,o++)t=(o<32?new ee(0,Math.pow(2,o)):new ee(Math.pow(2,o-32),0)).toString(),\"1\"===e[n]?this._featureMap.set(t,!0):this._featureMap.set(t,!1)}else M.w(\"\".concat(this._n,\".parsePurchaseBits invalid purchasebits:\").concat(e))}},{key:\"hasPurchasedFeature\",value:function(e){return!!this._featureMap.get(e)}},{key:\"isFeatureEnabled\",value:function(e){for(var t=parseInt(e).toString(2),n=void 0,o=!0,i=t.length-1,a=0;0<=i;i--,a++)if(\"1\"===t.charAt(i)&&(n=(a<32?new ee(0,Math.pow(2,a)):new ee(Math.pow(2,a-32),0)).toString(),!this._featureMap.get(n))){o=!1;break}return M.l(\"\".concat(this._n,\".isFeatureEnabled decimalNumber:\").concat(e,\" key:\").concat(n,\" ret:\").concat(o)),T({enabled:o})}},{key:\"isFeatureEnabledForStat\",value:function(e){for(var t=parseInt(e).toString(2),n=t.length-1,o=0;0<=n;n--,o++)if(\"1\"===t.charAt(n)){if(i=(o<32?new ee(0,Math.pow(2,o)):new ee(Math.pow(2,o-32),0)).toString(),!this._featureMap.get(i))break;var i,a=\"\",s=0;i===_.PLUGIN_TRANSLATE?(a=\"plugin_translate\",s=16):i===_.PLUGIN_VOICE_TO_TEXT?(a=\"plugin_voice_to_text\",s=17):i===_.PLUGIN_CS?(a=\"plugin_cs\",s=14):i===_.PLUGIN_PUSH?(a=\"plugin_push\",s=13):i===_.PLUGIN_BOT?(a=\"plugin_bot\",s=15):i===_.MSG_REACTION&&(a=\"plugin_emoji_reaction\",s=18),\"\"!==a&&(i=this._commercialConfigM.get(12).getUIPlatform(),new G(a).setCode(s).setUIPlatform(i).end(),M.l(\"\".concat(this._n,\".isFeatureEnabledForStat \").concat(a,\" code:\").concat(s,\" uiPlatform:\").concat(i)))}}},{key:\"isSearchCloudMessagesEnabled\",value:function(){var e;this._isSCMReported||(e=this._commercialConfigM.get(12).getUIPlatform(),new G(\"plugin_search\").setCode(6).setUIPlatform(e).end(),this._isSCMReported=!0)}},{key:\"clear\",value:function(){this._featureMap.clear(),this._isSCMReported=!1}}]),Or),ir=(e(Rr,[{key:\"_canFetch\",value:function(){return this.get(12).isLoggedIn()?!this._isFetching&&Date.now()>=this._expiredTime:(this._expiredTime=Date.now()+2e3,!1)}},{key:\"onCheckTimer\",value:function(e){this._canFetch()&&this.fetchConfig()}},{key:\"fetchConfig\",value:function(){var t,e,n=this,o=this._canFetch(),i=\"\".concat(this._n,\".fetchConfig\");M.l(\"\".concat(i,\" canFetch:\").concat(o)),o&&(t=new G(\"fetchCommercialConfig\"),o=this.get(12).getSDKAppID(),e=this.get(20),this._isFetching=!0,e.req({P:k.FETCH_COMMERCIAL_CONFIG,data:{SDKAppID:o}}).then(function(e){t.setMessage(\"purchaseBits:\".concat(e.data.purchaseBits)).end(),M.l(\"\".concat(i,\" ok.\")),n._parseConfig(e.data),n._isFetching=!1}).catch(function(e){t.setError(e).end(),n._isFetching=!1}))}},{key:\"onPushedConfig\",value:function(e){var t=\"\".concat(this._n,\".onPushedConfig data:\").concat(JSON.stringify(e));M.l(\"\".concat(t)),new G(\"pushedCommercialConfig\").setMessage(\"purchaseBits:\".concat(e.purchaseBits)).end(),this._parseConfig(e)}},{key:\"_parseConfig\",value:function(e){var t=\"\".concat(this._n,\"._parseConfig\"),n=e.errorCode,o=e.errorMessage,i=e.purchaseBits,a=e.expiredTime;0===n?(this._purchasedFeatureHandler.parsePurchaseBits(i),this._expiredTime=Date.now()+1e3*a):N(n)?(M.l(\"\".concat(t,\" failed. Invalid message format:\"),e),this._setExpiredTimeOnResponseError(36e5)):(M.e(\"\".concat(t,\" errorCode:\").concat(n,\" errorMessage:\").concat(o)),this._setExpiredTimeOnResponseError(12e4))}},{key:\"_setExpiredTimeOnResponseError\",value:function(e){this._expiredTime=Date.now()+e}},{key:\"canIUse\",value:function(e){return this._purchasedFeatureHandler.hasPurchasedFeature(e)}},{key:\"isFeatureEnabled\",value:function(e){return this._purchasedFeatureHandler.isFeatureEnabled(e)}},{key:\"isFeatureEnabledForStat\",value:function(e){this._purchasedFeatureHandler.isFeatureEnabledForStat(e)}},{key:\"isSearchCloudMessagesEnabled\",value:function(){this._purchasedFeatureHandler.isSearchCloudMessagesEnabled()}},{key:\"get\",value:function(e){return this._m.get(e)}},{key:\"reset\",value:function(){M.l(\"\".concat(this._n,\".reset\")),this._expiredTime=0,this._isFetching=!1,this._purchasedFeatureHandler.clear()}}]),Rr),ar=(t(Ar,u),Ps=n(Ar),e(Ar,[{key:\"registerPlugin\",value:function(e){var t,n,o,i,a,s,r,c,u,l,d,p,_;Ie?(this._offlinePushPlugin=e[\"tim-offline-push-plugin\"],t=(_=e.offlinePushConfig||{}).huaweiBusinessID,n=_.xiaomiBusinessID,o=_.xiaomiAppID,i=_.xiaomiAppKey,a=_.meizuBusinessID,s=_.meizuAppID,r=_.meizuAppKey,c=_.vivoBusinessID,u=_.oppoBusinessID,l=_.oppoAppKey,d=_.oppoAppSecret,p=_.honorBusinessID,_=_.iosBusinessID,this._androidPushConfig.huaweiPushBussinessId=t,this._androidPushConfig.xiaomiPushBussinessId=n,this._androidPushConfig.xiaomiPushAppId=o,this._androidPushConfig.xiaomiPushAppKey=i,this._androidPushConfig.meizuPushBussinessId=a,this._androidPushConfig.meizuPushAppId=s,this._androidPushConfig.meizuPushAppKey=r,this._androidPushConfig.vivoPushBussinessId=c,this._androidPushConfig.oppoPushBussinessId=u,this._androidPushConfig.oppoPushAppKey=l,this._androidPushConfig.oppoPushAppSecret=d,this._androidPushConfig.honorPushBussinessId=p,new G(\"registerPlugin\").setMessage(\"tim-offline-push-plugin\").setMoreMessage(\"isExist:\".concat(!N(this._offlinePushPlugin))).end(!0),M.l(\"\".concat(this._n,\".\").concat(\"registerPlugin\",\" ok. offlinePushConfig:\").concat(JSON.stringify(e.offlinePushConfig))),this._iosBusinessID=_,this._setAppShowListener()):this.warn(\"OfflinePushInUniapp\")}},{key:\"init\",value:function(){this._isWebUniapp=this.getUniAppPlatform(),this._getDeviceToken()}},{key:\"_getDeviceToken\",value:function(){var c,u=this,l=\"\".concat(this._n,\".\").concat(\"_getDeviceToken\");lt(this._offlinePushPlugin.getDeviceToken)?(c=\"androidPushConfig:\".concat(JSON.stringify(this._androidPushConfig),\", iosBusinessID:\").concat(this._iosBusinessID),M.l(\"\".concat(l,\" start. \").concat(c)),new G(\"_getDeviceToken\").setMessage(\"\".concat(c)).end(!0),this._offlinePushPlugin.getDeviceToken(this._androidPushConfig,function(e){var t,n,o,i,a=new G(\"getDeviceTokenRes\"),s=e.code,r=e.msg;0===s?(t=(i=e.data).deviceToken,n=i.deviceBrand,o=i.deviceType,i=i.bussinessId,u._deviceToken=t,u._businessID=i||u._iosBusinessID,c=\"deviceToken:\".concat(t,\", deviceBrand:\").concat(n||o,\", businessID:\").concat(u._businessID),M.l(\"\".concat(l,\" ok. \").concat(c)),a.setMessage(c).end(!0),u._setToken()):(a.setMessage(\"code:\".concat(s,\", msg:\").concat(r)).end(!0),M.e(\"\".concat(l,\" failed. error:\"),e))})):M.e(\"\".concat(l,\" getDeviceToken is not a function\"))}},{key:\"canIUseOfflinePush\",value:function(){return Ie&&!N(this._offlinePushPlugin)}},{key:\"_setAppShowListener\",value:function(){var t=this,n=\"\".concat(this._n,\".\").concat(\"_setAppShowListener\");N(this._offlinePushPlugin)?M.e(\"\".concat(n,\" offlinePushPlugin is undefined\")):lt(this._offlinePushPlugin.setAppShowListener)?(new G(\"_setAppShowListener\").end(!0),M.l(\"\".concat(n,\" start\")),this._offlinePushPlugin.setAppShowListener(function(e){e=(e||{}).appShow;new G(\"setAppShowListenerRes\").setMessage(\"appShow:\".concat(e)).end(!0),M.l(\"\".concat(n,\" ok. appShow:\").concat(e)),t._m.isReady()&&(0===e?(t._getConvUnreadCount(),t._onBackground()):1===e&&t._onForeground())})):M.e(\"\".concat(n,\" setAppShowListener is not a function\"))}},{key:\"getDeviceBrand\",value:function(){var e;if(!N(this._offlinePushPlugin)&<(this._offlinePushPlugin.getDeviceType))return e=(this._offlinePushPlugin.getDeviceType()||{}).deviceType,M.l(\"\".concat(this._n,\".getDeviceBrand ok. deviceType:\").concat(e)),e}},{key:\"_setToken\",value:function(){var t=\"\".concat(this._n,\"._setToken\"),e=this.get(12),n=1,o=\"\",i=\"\",a=(S(this._deviceToken)&&(n=0),this.getUniAppPlatform()),s=this.getDeviceBrand(),r=(a===ne.IOS||a===ne.IPAD||a===ne.MAC?i=this._deviceToken:a===ne.ANDROID&&(o=this._deviceToken),new G(\"offlinePushSetToken\")),a=\"deviceToken:\".concat(i||o,\", businessID:\").concat(this._businessID,\", \")+\"deviceBrand:\".concat(s,\", isWebUniapp:\").concat(this._isWebUniapp,\", pushMsg:\").concat(n,\", platform:\").concat(a);return r.setMessage(\"\".concat(a)),M.l(\"\".concat(t,\" \").concat(a)),this.req({P:k.SET_TOKEN,data:{tokenID:o,pushMsg:n,sdkAppID:e.getSDKAppID(),businessID:parseInt(this._businessID),deviceBrand:s,deviceToken:i,isWebUniapp:this._isWebUniapp}}).then(function(e){return r.end(),M.l(\"\".concat(t,\" ok\")),e}).catch(function(e){return r.setError(e).end(),M.e(\"\".concat(t,\" failed. error:\"),e),D(e)})}},{key:\"_getConvUnreadCount\",value:function(){var t=this;this._c2cUnreadCount=0,this._groupUnreadCount=0,this.get(11).getLocalConvList().forEach(function(e){e.type===A.CONV_C2C&&(t._c2cUnreadCount+=e.unreadCount),e.type===A.CONV_GROUP&&(t._groupUnreadCount+=e.unreadCount)})}},{key:\"_onBackground\",value:function(){var t=this,n=\"\".concat(this._n,\".\").concat(\"_onBackground\"),o=new G(\"_onBackground\");this.req({P:k.STAT_BACKGROUND,data:{c2cUnreadCount:this._c2cUnreadCount,groupUnreadCount:this._groupUnreadCount,isWebUniapp:this._isWebUniapp}}).then(function(e){return o.setMessage(\"c2cUnreadCount: \".concat(t._c2cUnreadCount,\", groupUnreadCount: \").concat(t._groupUnreadCount)).end(),M.l(\"\".concat(n,\" ok\")),e}).catch(function(e){o.setError(e).end(),M.e(\"\".concat(n,\" failed. error:\"),e)})}},{key:\"_onForeground\",value:function(){var t=\"\".concat(this._n,\".\").concat(\"_onForeground\"),n=new G(\"_onForeground\");this.req({P:k.STAT_FOREGROUND,data:{isWebUniapp:this._isWebUniapp}}).then(function(e){return n.end(),M.l(\"\".concat(t,\" ok\")),e}).catch(function(e){n.setError(e).end(),M.e(\"\".concat(t,\" failed. error:\"),e)})}},{key:\"getUniAppPlatform\",value:function(){var e=uni.getSystemInfoSync().platform,t=this.getDeviceBrand();return\"ios\"===e?ne.IOS:\"android\"===e?ne.ANDROID:1002===t?ne.IPAD:1001===t?ne.MAC:void 0}},{key:\"reset\",value:function(){this._deviceToken=\"\",this._businessID=0,this._c2cUnreadCount=0,this._groupUnreadCount=0,this._isWebUniapp=0,M.l(\"\".concat(this._n,\".reset\"))}}]),Ar),sr=(t(kr,u),Gs=n(kr),e(kr,[{key:\"registerPlugin\",value:function(e){var t,n,o;Ie?(t=\"\".concat(this._n,\".\").concat(\"registerPlugin\"),this._pushPlugin=e[\"tim-push\"],this._getDeviceInfo(),n=(o=e.pushConfig||{}).androidConfig,o=o.iOSConfig,ut(n)&&(this._androidPushConfig=n[this._deviceInfo.packageName]),n=(o||{}).iOSBusinessID,this._iOSBusinessID=n,o=!N(this._pushPlugin),new G(\"registerPlugin\").setMessage(this._pluginName).setMoreMessage(\"isExisted:\".concat(o)).end(!0),M.l(\"\".concat(t,\" ok. pushConfig:\").concat(JSON.stringify(e.pushConfig))),o?(this._setAppShowListener(),this._setPushEventReportListener()):M.e(\"\".concat(t,\" \").concat(this._pluginName,\" is undefined\"))):this.warn(\"TIMPushInUniapp\")}},{key:\"init\",value:function(){this._isWebUniapp=this.getUniAppPlatform(),this._reportEventCacheList(),this._getDeviceToken(),this.get(27).isFeatureEnabledForStat(Math.pow(2,41))}},{key:\"_reportEventCacheList\",value:function(){var a=this,s=\"\".concat(this._n,\".\").concat(\"_reportEventCacheList\");lt(this._pushPlugin.getPushEventCacheList)?(new G(\"_reportEventCacheList\").end(!0),this._pushPlugin.getPushEventCacheList(function(e){var t=e.code,n=e.data.eventList,o=new G(\"getPushEventCacheListRes\");if(o.setCode(t),0!==t)o.setMessage(\"res:\".concat(JSON.stringify(e))).end(!0),M.e(\"\".concat(s,\" failed. error:\").concat(JSON.stringify(e)));else{t=n.length<10?\"eventList:\".concat(JSON.stringify(n)):\"eventList.length:\".concat(n.length);M.l(\"\".concat(s,\" ok. \").concat(t)),o.setMessage(t).end(!0);for(var i=y(y({},e.data),{},{eventList:[]});0=this._expiredTime&&this._getLexicon()}},{key:\"filterMessage\",value:function(e,t){var n=!0;if(this._plugin&&this._canIUseLexicon&&(!t||!t.messageControlInfo||!0!==t.messageControlInfo.excludedFromContentModeration)){var t=e.type,o=e.conversationType;if(t===A.MSG_TEXT||t===A.MSG_CUSTOM){var i,a=\"\".concat(this._n,\".filterMessage\");if(M.l(\"\".concat(a)),t===A.MSG_TEXT){if(o===A.CONV_C2C?i=\"c2c_text_message\":o===A.CONV_GROUP&&(i=\"group_text_message\"),!this._isConfigOn(i))return n;var s=this._plugin.filter(e.payload.text),r=s.type,s=s.modifiedText;1===r?n=!1:2===r&&(e.payload.text=s)}else if(t===A.MSG_CUSTOM){if(o===A.CONV_C2C?i=\"c2c_custom_message\":o===A.CONV_GROUP&&(i=\"group_custom_message\"),!this._isConfigOn(i))return n;r=this._plugin.filter(e.payload.data),s=this._plugin.filter(e.payload.description),t=this._plugin.filter(e.payload.extension);1===r.type||1===s.type||1===t.type?n=!1:(2===r.type&&(e.payload.data=r.modifiedText),2===s.type&&(e.payload.description=s.modifiedText),2===t.type&&(e.payload.extension=t.modifiedText))}M.l(\"\".concat(a,\" done. isAllowedToSend:\").concat(n))}}return n}},{key:\"filterText\",value:function(e,t){var n=\"\".concat(this._n,\".filterText\"),o={isAllowedToSend:!0,modifiedText:e};return this._plugin&&this._canIUseLexicon&&this._isConfigOn(t)&&(M.l(\"\".concat(n)),e=(t=this._plugin.filter(e)).type,t=t.modifiedText,1===e?o.isAllowedToSend=!1:2===e&&(o.modifiedText=t),M.l(\"\".concat(n,\" done. ret:\"),o)),o}},{key:\"_getLexicon\",value:function(){var l=this,d=new G(\"profanityFilter\"),p=\"\".concat(this._n,\"._getLexicon\");this._isFetching=!0,this.req({P:k.GET_PROFANITY_LIST,data:{startIndex:this._startIndex,version:this._version}}).then(function(e){var e=e.data,t=e.errorInfo,n=e.filterConfig,o=e.lexicon,i=e.strToken,a=e.completeFlag,s=e.nextStartIndex,r=e.version,e=e.expiredTime,c=t.errorCode,u=t.errorMessage;return 0!==c?(l._isFetching=!1,M.w(\"\".concat(p,\" failed. error:\"),t),void d.setCode(c).setMessage(u).end()):(l._onFilterConfig(n),l._getToken(i),1===a?(M.l(\"\".concat(p,\" done. version:\").concat(r,\" expiredTime:\").concat(e)),l._version=r,l._canIUseLexicon=!0,l._isFetching=!1,l._expiredTime=Date.now()+1e3*e,void l._plugin.onLexiconCompleted(o)):(l._startIndex=s,l._plugin.onLexiconSliced(o),void l._getLexicon()))}).catch(function(e){d.setError(e).end(),l._isFetching=!1,M.l(\"\".concat(p,\" failed. error:\"),e)})}},{key:\"_onFilterConfig\",value:function(t){var n=this;S(t)||(this._filterConfigMap.clear(),Object.keys(t).forEach(function(e){n._filterConfigMap.set(e,t[e])}),M.l(\"\".concat(this._n,\"._onFilterConfig. keys:\").concat(Array.from(this._filterConfigMap.keys()),\" values:\").concat(Array.from(this._filterConfigMap.values()))))}},{key:\"_isConfigOn\",value:function(e){return 1===this._filterConfigMap.get(e)}},{key:\"_getToken\",value:function(e){if(m(e)){var t=e.length,n=\"\";if(t%2==0)for(var o=0;o<=t-1;o+=2)n=(n+=e[o+1])+e[o];else{for(var i=0;i=this.STORAGE_EXPIRES_TIME,e=!e||\"3.4.7\"!==e;return M.l(\"\".concat(this._n,\"._needToUpdate isTimeout:\").concat(t,\" isDifferentVersion:\").concat(e)),t||e}},{key:\"_fetch\",value:function(){var e,t,n,o,i,a;this._m.get(12).isPrivateNetWork()||(e=\"https://web.sdk.qcloud.com/im/download/error-message/v3/0.0.6/tim-error-message.txt\",t=\"application/x-www-form-urlencoded;charset=UTF-8\",n=\"\".concat(this._n,\"._fetch ok in\"),o=this,v?I.request({url:e,method:\"GET\",timeout:3e3,header:{\"content-type\":t},dataType:\"text\",success:function(e){o._fillAndSave(e.data),M.l(\"\".concat(n,\" mini program\"))},fail:function(){}}):(i=new XMLHttpRequest,a=setTimeout(function(){i.abort()},3e3),i.onreadystatechange=function(){4===i.readyState&&(clearTimeout(a),200!==i.status&&304!==i.status||(M.l(\"\".concat(n,\" browser\")),o._fillAndSave(i.responseText)))},i.open(\"GET\",e,!0),i.setRequestHeader(\"Content-type\",t),i.send()))}},{key:\"_fillAndSave\",value:function(e){this._fillMap(e),this._getStorageModule().setItem(this.TIM_ERROR_ASSISTANCE,JSON.stringify({message:e,localSavedTime:(new Date).getTime(),localSavedVersion:\"3.4.7\"}),!0,!1)}},{key:\"_getStorageModule\",value:function(){return this._m.get(13)}},{key:\"_fillMap\",value:function(e){this._map.clear();for(var t,n,o=e.split(\";\\n\"),i=o.length,a=new RegExp(/'/g),s=0;sBe()-this.EXPIRED_TIME}},{key:\"_createPromiseList\",value:function(e){for(var t=[],n=0;nthis.MAX_COUNT?this.MAX_COUNT:e,this._clearFollowList())}},{key:\"clearCacheOnReconnected\",value:function(){this._clearFollowList(),this._followType.clear()}},{key:\"onFollowNotify\",value:function(e){var i=this,e=e.dataList||[];M.l(\"\".concat(this._n,\".onFollowNotify followChangeList:\").concat(e.length)),e.forEach(function(e){var t=e.followDiffList,t=void 0===t?[]:t,o=K(e,mr);t.forEach(function(e){var t=e.isAdd,e=e.followType,e=void 0===e?[]:e,n=i._initFollowInfo();n[e].userInfoList.push(o),n[e].isAdd=1===t,i._emitEvent(n)})})}},{key:\"_initFollowInfo\",value:function(){var t={};return Object.values(vr).forEach(function(e){e!==vr.NONE&&(t[e]={userInfoList:[],isAdd:!1})}),t}},{key:\"_emitEvent\",value:function(n){var o=this;Object.keys(n).forEach(function(e){var e=Number(e),t=n[e];0\",t[s].tag)}this.profile=new ei(y(y({},n),{},{profileCustomField:o}))}function Fr(e){d(this,Fr),this._snsM=e,this._n=\"FriendApplicationHandler\",this._startTime=0,this._maxLimited=100,this._currentSeq=0,this._map=new Map,this._unreadCount=0}function qr(e){d(this,qr),(e=ws.call(this,e))._n=\"QualityStatModule\",e.TAG=\"im-ssolog-quality-stat\",e.reportIndex=0,e.wholePeriod=!1,e._qualityItems=[xn,Vn,Hn,Bn,Kn,Yn,Wn,jn,Jn,zn],e._messageSentItems=[Hn,Bn,Kn,Yn,Wn],e._messageReceivedItems=[jn,Jn,zn],e.REPORT_INTERVAL=120,e.REPORT_SDKAPPID_BLACKLIST=[],e.REPORT_TINYID_WHITELIST=[],e._statInfoArr=[],e._avgRTT=new Ys,e._avgE2EDelay=new Ks,e._rateMessageSent=new Ws,e._rateMessageReceived=new js;var t=e.getIEmitInst();return t.on(P.A2KEY_AND_TINYID_UPDATED,e._onLoginSuccess,i(e)),t.on(P.CLOUD_CONFIG,e._onCloudConfig,i(e)),e}function xr(){d(this,xr),this._lastMap=new Map,this._currentMap=new Map}function Vr(){d(this,Vr),this._map=new Map}function Hr(){d(this,Hr),this._n=\"AvgRTT\",this._requestCount=0,this._rttArray=[]}function Br(){d(this,Br),this._n=\"AvgE2EDelay\",this._e2eDelayArray=[]}function Kr(e){return d(this,Kr),(e=Fs.call(this,e))._n=\"RecoverMsgModule\",e.PULL_LIMIT_COUNT=15,e}function Yr(e){return d(this,Yr),(e=qs.call(this,e))._n=\"CloudControlModule\",e._cloudConfig=new Map,e._expiredTime=0,e._version=0,e._isFetching=!1,e}function Wr(e){return d(this,Wr),(e=xs.call(this,e))._n=\"SessionModule\",e._platform=e.getPlatform(),e._pHandler=new hs(i(e)),e._msgDispatcher=new fs(i(e)),e._cmdFreqLimitMap=new Map,e._cmdReqInfoMap=new Map,e._serverOverloadInfoMap=new Map,e._incrementalPullContactFlag=!0,e._init(),e.getIEmitInst().on(P.CLOUD_CONFIG,e._onCloudConfig,i(e)),e}ie.assign,ie.shrinkBuf,ie.setTyped,ie.Buf8,ie.Buf16,ie.Buf32;function jr(e,t,n,o){for(var i=65535&e|0,a=e>>>16&65535|0,s=0;0!==n;){for(n-=s=2e3>>8^i[255&(e^t[s])];return-1^e}function zr(e,t,n,o,i,a,s,r){for(var c,u,l,d,p,_,h,g,f,m=r.bits,v=0,I=0,M=0,y=0,C=0,T=0,D=0,E=0,L=0,S=0,k=null,A=0,R=new ie.Buf16(16),O=new ie.Buf16(16),N=null,G=0,v=0;v<=15;v++)R[v]=0;for(I=0;I_?(g=N[G+s[I]],k[A+s[I]]):(g=96,0),c=1<<(h=v-D),M=u=1<>D)+(u-=c)]=h<<24|g<<16|f|0,0!==u;);for(c=1<>=1;if(0!==c?S=(S&c-1)+c:S=0,I++,0==--R[v]){if(v===y)break;v=t[n+s[I]]}if(C>>1:n>>>1;e[t]=n}return e}(),Zr=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],Qr=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],$r=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],ec=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function tc(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function nc(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new ie.Buf16(320),this.work=new ie.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function oc(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new ie.Buf32(852),t.distcode=t.distdyn=new ie.Buf32(592),t.sane=1,t.back=-1,0):-2}function ic(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,oc(e)):-2}function ac(e,t){var n,o;return!e||!e.state||(o=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=e.wsize?(ie.arraySet(e.window,t,n-e.wsize,e.wsize,0),e.wnext=0,e.whave=e.wsize):((i=e.wsize-e.wnext)>o&&(i=o),ie.arraySet(e.window,t,n-o,i,e.wnext),(o-=i)?(ie.arraySet(e.window,t,n-o,o,0),e.wnext=o,e.whave=e.wsize):(e.wnext+=i,e.wnext===e.wsize&&(e.wnext=0),e.whave>>8&255,t.check=Jr(t.check,M,2,0),c=r=0,t.mode=2;else if(t.flags=0,t.head&&(t.head.done=!1),!(1&t.wrap)||(((255&r)<<8)+(r>>8))%31)e.msg=\"incorrect header check\",t.mode=30;else if(8!=(15&r))e.msg=\"unknown compression method\",t.mode=30;else{if(c-=4,g=8+(15&(r>>>=4)),0===t.wbits)t.wbits=g;else if(g>t.wbits){e.msg=\"invalid window size\",t.mode=30;break}t.dmax=1<>8&1),512&t.flags&&(M[0]=255&r,M[1]=r>>>8&255,t.check=Jr(t.check,M,2,0)),c=r=0,t.mode=3;case 3:for(;c<32;){if(0===a)break e;a--,r+=n[o++]<>>8&255,M[2]=r>>>16&255,M[3]=r>>>24&255,t.check=Jr(t.check,M,4,0)),c=r=0,t.mode=4;case 4:for(;c<16;){if(0===a)break e;a--,r+=n[o++]<>8),512&t.flags&&(M[0]=255&r,M[1]=r>>>8&255,t.check=Jr(t.check,M,2,0)),c=r=0,t.mode=5;case 5:if(1024&t.flags){for(;c<16;){if(0===a)break e;a--,r+=n[o++]<>>8&255,t.check=Jr(t.check,M,2,0)),c=r=0}else t.head&&(t.head.extra=null);t.mode=6;case 6:if(1024&t.flags&&((l=(l=t.length)>a?a:l)&&(t.head&&(g=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Array(t.head.extra_len)),ie.arraySet(t.head.extra,n,o,l,g)),512&t.flags&&(t.check=Jr(t.check,n,l,o)),a-=l,o+=l,t.length-=l),t.length))break e;t.length=0,t.mode=7;case 7:if(2048&t.flags){if(0===a)break e;for(l=0;g=n[o+l++],t.head&&g&&t.length<65536&&(t.head.name+=String.fromCharCode(g)),g&&l>9&1,t.head.done=!0),e.adler=t.check=0,t.mode=12;break;case 10:for(;c<32;){if(0===a)break e;a--,r+=n[o++]<>>=7&c,c-=7&c,t.mode=27;else{for(;c<3;){if(0===a)break e;a--,r+=n[o++]<>>=1)){case 0:t.mode=14;break;case 1:y=C=void 0;var y,C=t;if(uc){for(rc=new ie.Buf32(512),cc=new ie.Buf32(32),y=0;y<144;)C.lens[y++]=8;for(;y<256;)C.lens[y++]=9;for(;y<280;)C.lens[y++]=7;for(;y<288;)C.lens[y++]=8;for(zr(1,C.lens,0,288,rc,0,C.work,{bits:9}),y=0;y<32;)C.lens[y++]=5;zr(2,C.lens,0,32,cc,0,C.work,{bits:5}),uc=!1}if(C.lencode=rc,C.lenbits=9,C.distcode=cc,C.distbits=5,t.mode=20,6!==b)break;r>>>=2,c-=2;break e;case 2:t.mode=17;break;case 3:e.msg=\"invalid block type\",t.mode=30}r>>>=2,c-=2}break;case 14:for(r>>>=7&c,c-=7&c;c<32;){if(0===a)break e;a--,r+=n[o++]<>>16^65535)){e.msg=\"invalid stored block lengths\",t.mode=30;break}if(t.length=65535&r,c=r=0,t.mode=15,6===b)break e;case 15:t.mode=16;case 16:if(l=t.length){if(0===(l=s<(l=a>>=5,c-=5,t.ndist=1+(31&r),r>>>=5,c-=5,t.ncode=4+(15&r),r>>>=4,c-=4,286>>=3,c-=3}for(;t.have<19;)t.lens[B[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,m={bits:t.lenbits},f=zr(0,t.lens,0,19,t.lencode,0,t.work,m),t.lenbits=m.bits,f){e.msg=\"invalid code lengths set\",t.mode=30;break}t.have=0,t.mode=19;case 19:for(;t.have>>16&255,_=65535&I,!((d=I>>>24)<=c);){if(0===a)break e;a--,r+=n[o++]<>>=d,c-=d,t.lens[t.have++]=_;else{if(16===_){for(v=d+2;c>>=d,c-=d,0===t.have){e.msg=\"invalid bit length repeat\",t.mode=30;break}g=t.lens[t.have-1],l=3+(3&r),r>>>=2,c-=2}else if(17===_){for(v=d+3;c>>=d)),r>>>=3,c=c-d-3}else{for(v=d+7;c>>=d)),r>>>=7,c=c-d-7}if(t.have+l>t.nlen+t.ndist){e.msg=\"invalid bit length repeat\",t.mode=30;break}for(;l--;)t.lens[t.have++]=g}}if(30===t.mode)break;if(0===t.lens[256]){e.msg=\"invalid code -- missing end-of-block\",t.mode=30;break}if(t.lenbits=9,m={bits:t.lenbits},f=zr(1,t.lens,0,t.nlen,t.lencode,0,t.work,m),t.lenbits=m.bits,f){e.msg=\"invalid literal/lengths set\",t.mode=30;break}if(t.distbits=6,t.distcode=t.distdyn,m={bits:t.distbits},f=zr(2,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,m),t.distbits=m.bits,f){e.msg=\"invalid distances set\",t.mode=30;break}if(t.mode=20,6===b)break e;case 20:t.mode=21;case 21:if(6<=a&&258<=s){e.next_out=i,e.avail_out=s,e.next_in=o,e.avail_in=a,t.hold=r,t.bits=c,G=Y=k=S=L=E=D=T=oe=ne=te=ee=U=P=$=Q=Z=X=z=J=j=N=W=O=R=void 0;var T,D,E,L,S,k,A=e,K=u,R=A.state,O=A.next_in,Y=A.input,W=O+(A.avail_in-5),N=A.next_out,G=A.output,j=N-(K-A.avail_out),J=N+(A.avail_out-257),z=R.dmax,X=R.wsize,Z=R.whave,Q=R.wnext,$=R.window,P=R.hold,U=R.bits,ee=R.lencode,te=R.distcode,ne=(1<>>=D=T>>>24,U-=D,0==(D=T>>>16&255))G[N++]=65535&T;else{if(!(16&D)){if(0==(64&D)){T=ee[(65535&T)+(P&(1<>>=D,U-=D),U<15&&(P+=Y[O++]<>>=D=T>>>24,U-=D,!(16&(D=T>>>16&255))){if(0==(64&D)){T=te[(65535&T)+(P&(1<z){A.msg=\"invalid distance too far back\",R.mode=30;break t}if(P>>>=D,U-=D,L>(D=N-j)){if((D=L-D)>Z&&R.sane){A.msg=\"invalid distance too far back\",R.mode=30;break t}if(k=$,(S=0)===Q){if(S+=X-D,D>3,P&=(1<<(U-=E<<3))-1,A.next_in=O,A.next_out=N,A.avail_in=O>>16&255,_=65535&I,!((d=I>>>24)<=c);){if(0===a)break e;a--,r+=n[o++]<>h)])>>>16&255,_=65535&I,!(h+(d=I>>>24)<=c);){if(0===a)break e;a--,r+=n[o++]<>>=h,c-=h,t.back+=h}if(r>>>=d,c-=d,t.back+=d,t.length=_,0===p){t.mode=26;break}if(32&p){t.back=-1,t.mode=12;break}if(64&p){e.msg=\"invalid literal/length code\",t.mode=30;break}t.extra=15&p,t.mode=22;case 22:if(t.extra){for(v=t.extra;c>>=t.extra,c-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=23;case 23:for(;p=(I=t.distcode[r&(1<>>16&255,_=65535&I,!((d=I>>>24)<=c);){if(0===a)break e;a--,r+=n[o++]<>h)])>>>16&255,_=65535&I,!(h+(d=I>>>24)<=c);){if(0===a)break e;a--,r+=n[o++]<>>=h,c-=h,t.back+=h}if(r>>>=d,c-=d,t.back+=d,64&p){e.msg=\"invalid distance code\",t.mode=30;break}t.offset=_,t.extra=15&p,t.mode=24;case 24:if(t.extra){for(v=t.extra;c>>=t.extra,c-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){e.msg=\"invalid distance too far back\",t.mode=30;break}t.mode=25;case 25:if(0===s)break e;if(t.offset>(l=u-s)){if((l=t.offset-l)>t.whave&&t.sane){e.msg=\"invalid distance too far back\",t.mode=30;break}q=l>t.wnext?(l-=t.wnext,t.wsize-l):t.wnext-l,l>t.length&&(l=t.length),x=t.window}else x=w,q=i-t.offset,l=t.length;for(s-=l=s>10&1023,a[s++]=56320|1023&n)}var c=a,u=s;if(u<65534&&(c.subarray&&_c||!c.subarray&&pc))return String.fromCharCode.apply(null,ie.shrinkBuf(c,u));for(var l=\"\",d=0;d>>6:(n<65536?t[i++]=224|n>>>12:(t[i++]=240|n>>>18,t[i++]=128|n>>>12&63),t[i++]=128|n>>>6&63),t[i++]=128|63&n);return t}(t.dictionary):\"[object ArrayBuffer]\"===yc.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw)&&(e=dc.inflateSetDictionary(this.strm,t.dictionary))!==Ic.Z_OK)throw new Error(Mc[e])}function Tc(e,t){t=new Cc(t);if(t.push(e,!0),t.err)throw t.msg||Mc[t.err];return t.result}Cc.prototype.push=function(e,t){var n,o,i,a,s,r=this.strm,c=this.options.chunkSize,u=this.options.dictionary,l=!1;if(this.ended)return!1;o=t===~~t?t:!0===t?Ic.Z_FINISH:Ic.Z_NO_FLUSH,\"string\"==typeof e?r.input=function(e){for(var t=new ie.Buf8(e.length),n=0,o=t.length;ne.length?e.length:t)-1;0<=n&&128==(192&e[n]);)n--;return!(n<0||0===n)&&n+hc[e[n]]>t?n:t}(r.output,r.next_out),a=r.next_out-i,s=fc(r.output,i),r.next_out=a,r.avail_out=c-a,a&&ie.arraySet(r.output,r.output,i,a,0),this.onData(s)):this.onData(ie.shrinkBuf(r.output,r.next_out))),0===r.avail_in&&0===r.avail_out&&(l=!0)}while((0\",\" %c\"),\"background:#ff9d00; padding:1px; border-radius:3px; color: #fff\",\"background:transparent\",t):console.log(\"IM SDK API ->\",t)),(t=this.getErrMsg(\"DOCS_GUIDE\"))&&console.log(t),t=this.getErrMsg(\"IOS_WEBVIEW_WARNING\"),be)&&t&&console.warn(t),M.setLevel(e)}},{key:\"createTextMessage\",value:function(e){return this._get(2).createTextMessage(e)}},{key:\"createTextAtMessage\",value:function(e){return this._get(2).createTextMessage(e)}},{key:\"createImageMessage\",value:function(e){return this._get(2).createImageMessage(e)}},{key:\"createAudioMessage\",value:function(e){return this._get(2).createAudioMessage(e)}},{key:\"createVideoMessage\",value:function(e){return this._get(2).createVideoMessage(e)}},{key:\"createCustomMessage\",value:function(e){return this._get(2).createCustomMessage(e)}},{key:\"createFaceMessage\",value:function(e){return this._get(2).createFaceMessage(e)}},{key:\"createFileMessage\",value:function(e){return this._get(2).createFileMessage(e)}},{key:\"createLocationMessage\",value:function(e){return this._get(2).createLocationMessage(e)}},{key:\"createMergerMessage\",value:function(e){return this._get(2).createMergerMessage(e)}},{key:\"downloadMergerMessage\",value:function(e){return e.type!==A.MSG_MERGER?D({code:L.MSG_MERGER_TYPE_INVALID}):S(e.payload.downloadKey)?D({code:L.MSG_MERGER_KEY_INVALID}):this._get(2).downloadMergerMessage(e).catch(function(e){return D({code:L.MSG_MERGER_DOWNLOAD_FAIL})})}},{key:\"createForwardMessage\",value:function(e){return this._get(2).createForwardMessage(e)}},{key:\"sendMessage\",value:function(e,t){return e instanceof Do?this._get(2).sendMessageInstance(e,t):D({code:L.MSG_INSTANCE_REQUIRED})}},{key:\"searchCloudMessages\",value:function(e){return this._get(2).searchCloudMessages(e)}},{key:\"callExperimentalAPI\",value:function(e,t){return\"sendComboMessage\"===e?this._get(31).sendMessage(t):\"handleGroupInvitation\"===e?this._get(7).handleGroupInvitation(t):\"isCommercialAbilityEnabled\"===e?this._get(27).isFeatureEnabled(t):\"isFeatureEnabledForStat\"===e?this._get(27).isFeatureEnabledForStat(t):\"isIntl\"===e?this.isIntl():\"sendTRTCCustomData\"===e||\"sendRoomCustomData\"===e?this._get(30).sendTRTCCustomData(t):\"getTimerID\"===e?this._m.getTimerID():\"getPollingTimerID\"===e?this._m.getPollingTimerID(t):\"setApplicationID\"===e?(this._get(12).setApplicationID(t),void this._get(20).updateProtocolConfig()):\"getServerConfig\"===e?this._get(23).getServerConfig(t):\"canIUseModule\"===e?this._m.canIUseModule(t):\"startMessageLongPolling\"===e?this._get(7).startMessageLongPolling(t):\"stopMessageLongPolling\"===e?this._get(7).stopMessageLongPolling(t):\"disableMessagePullOnInvite\"===e?this._get(11).disableMsgPullOnInvite(t):\"clearLocalMessage\"===e?this._get(11).clearMemMsg(t,!1):\"setCustomLoginInfo\"===e?this._get(12).setCustomLoginInfo(t):D({code:L.INVALID_OPERATION})}},{key:\"revokeMessage\",value:function(e){return this._get(2).revokeMessage(e)}},{key:\"resendMessage\",value:function(e,t){return e instanceof Do?this._get(2).resendMessage(e,t):D({code:L.MSG_INSTANCE_REQUIRED})}},{key:\"deleteMessage\",value:function(e){return this._get(2).deleteMessage(e)}},{key:\"translateText\",value:function(e){return this._get(2).translateText(e)}},{key:\"convertVoiceToText\",value:function(e){return this._get(2).convertVoiceToText(e)}},{key:\"setMessageExtensions\",value:function(e,t){return this._get(3).setMessageExtensions(e,t)}},{key:\"getMessageExtensions\",value:function(e){return this._get(3).getMessageExtensions(e)}},{key:\"deleteMessageExtensions\",value:function(e,t){return this._get(3).deleteMessageExtensions(e,t)}},{key:\"addMessageReaction\",value:function(e,t){return this._get(34).addMessageReaction(e,t)}},{key:\"removeMessageReaction\",value:function(e,t){return this._get(34).removeMessageReaction(e,t)}},{key:\"getMessageReactions\",value:function(e){return this._get(34).getMessageReactions(e)}},{key:\"getAllUserListOfMessageReaction\",value:function(e){return this._get(34).getAllUserListOfMessageReaction(e)}},{key:\"modifyMessage\",value:function(e){return this._get(2).modifyRemoteMessage(e)}},{key:\"getMessageList\",value:function(e){return this._get(11).getMessageList(e)}},{key:\"getMessageListHopping\",value:function(e){return this._get(11).getMessageListHopping(e)}},{key:\"sendMessageReadReceipt\",value:function(e){return this._get(11).sendReadReceipt(e)}},{key:\"getMessageReadReceiptList\",value:function(e){return this._get(11).getReadReceiptList(e)}},{key:\"getGroupMessageReadMemberList\",value:function(e){var t=this._get(7);return t?t.getReadReceiptDetail(e):D({code:L.NO_MODULE})}},{key:\"findMessage\",value:function(e){return this._get(11).findMessage(e)}},{key:\"setMessageRead\",value:function(e){return this._get(11).setMessageRead(e)}},{key:\"getConversationList\",value:function(e){return this._get(11).getConvList(e)}},{key:\"getConversationProfile\",value:function(e){return this._get(11).getConversationProfile(e)}},{key:\"deleteConversation\",value:function(e){return this._get(11).deleteConversation(e)}},{key:\"setConversationDraft\",value:function(e){return this._get(11).setConvDraft(e)}},{key:\"clearHistoryMessage\",value:function(e){return this._get(11).clearHistoryMessage(e)}},{key:\"pinConversation\",value:function(e){return this._get(11).pinConversation(e)}},{key:\"setAllMessageRead\",value:function(e){return this._get(11).setAllMessageRead(e)}},{key:\"setMessageRemindType\",value:function(e){return this._get(11).setMessageRemindType(e)}},{key:\"setAllReceiveMessageOpt\",value:function(e){return this._get(11).setAllRcvMsgOpt(e)}},{key:\"getAllReceiveMessageOpt\",value:function(){return this._get(11).getAllRcvMsgOpt()}},{key:\"getTotalUnreadMessageCount\",value:function(){return this._get(11).getTotalUnreadCount()}},{key:\"setConversationCustomData\",value:function(e){return this._get(11).setConvCustomData(e)}},{key:\"markConversation\",value:function(e){return this._get(11).markConv(e)}},{key:\"getConversationGroupList\",value:function(){return this._get(11).getConvGroupList()}},{key:\"createConversationGroup\",value:function(e){return this._get(11).createConvGroup(e)}},{key:\"deleteConversationGroup\",value:function(e){return this._get(11).deleteConvGroup(e)}},{key:\"renameConversationGroup\",value:function(e){return this._get(11).renameConvGroup(e)}},{key:\"addConversationsToGroup\",value:function(e){return this._get(11).addConvsToGroup(e)}},{key:\"deleteConversationsFromGroup\",value:function(e){return this._get(11).deleteConvsFromGroup(e)}},{key:\"getMyProfile\",value:function(){return this._get(4).getMyProfile()}},{key:\"getUserProfile\",value:function(e){return this._get(4).getUserProfile(e)}},{key:\"updateMyProfile\",value:function(e){return this._get(4).updateMyProfile(e)}},{key:\"getBlacklist\",value:function(){return this._get(4).getLocalBlacklist()}},{key:\"addToBlacklist\",value:function(e){return this._get(4).addBlacklist(e)}},{key:\"removeFromBlacklist\",value:function(e){return this._get(4).deleteBlacklist(e)}},{key:\"setSelfStatus\",value:function(e){return this._get(4).setSelfStatus(e)}},{key:\"getUserStatus\",value:function(e){return this._get(4).getUserStatus(e)}},{key:\"subscribeUserStatus\",value:function(e){return this._get(4).subscribeUserStatus(e)}},{key:\"unsubscribeUserStatus\",value:function(e){return this._get(4).unsubscribeUserStatus(e)}},{key:\"getFriendList\",value:function(){var e=this._get(8);return e?e.getLocalFriendList():D({code:L.NO_MODULE})}},{key:\"addFriend\",value:function(e){var t=this._get(8);return t?t.addFriend(e):D({code:L.NO_MODULE})}},{key:\"deleteFriend\",value:function(e){var t=this._get(8);return t?t.deleteFriend(e):D({code:L.NO_MODULE})}},{key:\"checkFriend\",value:function(e){var t=this._get(8);return t?t.checkFriend(e):D({code:L.NO_MODULE})}},{key:\"getFriendProfile\",value:function(e){var t=this._get(8);return t?t.getFriendProfile(e):D({code:L.NO_MODULE})}},{key:\"updateFriend\",value:function(e){var t=this._get(8);return t?t.updateFriend(e):D({code:L.NO_MODULE})}},{key:\"getFriendApplicationList\",value:function(){var e=this._get(8);return e?e.getLocalFriendApplicationList():D({code:L.NO_MODULE})}},{key:\"acceptFriendApplication\",value:function(e){var t=this._get(8);return t?t.acceptFriendApplication(e):D({code:L.NO_MODULE})}},{key:\"refuseFriendApplication\",value:function(e){var t=this._get(8);return t?t.refuseFriendApplication(e):D({code:L.NO_MODULE})}},{key:\"deleteFriendApplication\",value:function(e){var t=this._get(8);return t?t.deleteFriendApplication(e):D({code:L.NO_MODULE})}},{key:\"setFriendApplicationRead\",value:function(){var e=this._get(8);return e?e.setFriendApplicationRead():D({code:L.NO_MODULE})}},{key:\"getFriendGroupList\",value:function(){var e=this._get(8);return e?e.getLocalFriendGroupList():D({code:L.NO_MODULE})}},{key:\"createFriendGroup\",value:function(e){var t=this._get(8);return t?t.createFriendGroup(e):D({code:L.NO_MODULE})}},{key:\"deleteFriendGroup\",value:function(e){var t=this._get(8);return t?t.deleteFriendGroup(e):D({code:L.NO_MODULE})}},{key:\"addToFriendGroup\",value:function(e){var t=this._get(8);return t?t.addToFriendGroup(e):D({code:L.NO_MODULE})}},{key:\"removeFromFriendGroup\",value:function(e){var t=this._get(8);return t?t.removeFromFriendGroup(e):D({code:L.NO_MODULE})}},{key:\"renameFriendGroup\",value:function(e){var t=this._get(8);return t?t.renameFriendGroup(e):D({code:L.NO_MODULE})}},{key:\"followUser\",value:function(e){var t=this._get(35);return t?t.followUser(e):D({code:L.NO_MODULE})}},{key:\"unfollowUser\",value:function(e){var t=this._get(35);return t?t.unfollowUser(e):D({code:L.NO_MODULE})}},{key:\"getMyFollowersList\",value:function(e){var t=this._get(35);return t?t.getMyFollowersList(e):D({code:L.NO_MODULE})}},{key:\"getMyFollowingList\",value:function(e){var t=this._get(35);return t?t.getMyFollowingList(e):D({code:L.NO_MODULE})}},{key:\"getMutualFollowersList\",value:function(e){var t=this._get(35);return t?t.getMutualFollowersList(e):D({code:L.NO_MODULE})}},{key:\"getUserFollowInfo\",value:function(e){var t=this._get(35);return t?t.getUserFollowInfo(e):D({code:L.NO_MODULE})}},{key:\"checkFollowType\",value:function(e){var t=this._get(35);return t?t.checkFollowType(e):D({code:L.NO_MODULE})}},{key:\"getGroupList\",value:function(){var e=this._get(7);return e?e.getGroupList():D({code:L.NO_MODULE})}},{key:\"getGroupProfile\",value:function(e){var t=this._get(7);return t?t.getGroupProfile(e):D({code:L.NO_MODULE})}},{key:\"createGroup\",value:function(e){var t=this._get(7);return t?t.createGroup(e):D({code:L.NO_MODULE})}},{key:\"dismissGroup\",value:function(e){var t=this._get(7);return t?t.dismissGroup(e):D({code:L.NO_MODULE})}},{key:\"updateGroupProfile\",value:function(e){var t=this._get(7);return t?t.updateGroupProfile(e):D({code:L.NO_MODULE})}},{key:\"joinGroup\",value:function(e){var t=this._get(7);return t?t.joinGroup(e):D({code:L.NO_MODULE})}},{key:\"quitGroup\",value:function(e){var t=this._get(7);return t?t.quitGroup(e):D({code:L.NO_MODULE})}},{key:\"searchGroupByID\",value:function(e){var t=this._get(7);return t?t.searchGroupByID(e):D({code:L.NO_MODULE})}},{key:\"getGroupOnlineMemberCount\",value:function(e){var t=this._get(7);return t?t.getGroupOnlineMemberCount(e):D({code:L.NO_MODULE})}},{key:\"changeGroupOwner\",value:function(e){var t=this._get(7);return t?t.changeGroupOwner(e):D({code:L.NO_MODULE})}},{key:\"getGroupApplicationList\",value:function(){var e=this._get(7);return e?e.getGroupApplicationList():D({code:L.NO_MODULE})}},{key:\"handleGroupApplication\",value:function(e){var t=this._get(7);return t?t.handleGroupApplication(e):D({code:L.NO_MODULE})}},{key:\"initGroupAttributes\",value:function(e){var t=this._get(7);return t?t.initGroupAttributes(e):D({code:L.NO_MODULE})}},{key:\"setGroupAttributes\",value:function(e){var t=this._get(7);return t?t.setGroupAttributes(e):D({code:L.NO_MODULE})}},{key:\"deleteGroupAttributes\",value:function(e){var t=this._get(7);return t?t.deleteGroupAttributes(e):D({code:L.NO_MODULE})}},{key:\"getGroupAttributes\",value:function(e){var t=this._get(7);return t?t.getGroupAttributes(e):D({code:L.NO_MODULE})}},{key:\"setGroupCounters\",value:function(e){var t=this._get(7);return t?t.setGroupCounters(e):D({code:L.NO_MODULE})}},{key:\"increaseGroupCounter\",value:function(e){var t=this._get(7);return t?t.increaseGroupCounter(e):D({code:L.NO_MODULE})}},{key:\"decreaseGroupCounter\",value:function(e){var t=this._get(7);return t?t.decreaseGroupCounter(e):D({code:L.NO_MODULE})}},{key:\"getGroupCounters\",value:function(e){var t=this._get(7);return t?t.getGroupCounters(e):D({code:L.NO_MODULE})}},{key:\"getGroupMemberList\",value:function(e){var t=this._get(7);return t?t.getGroupMemberList(e):D({code:L.NO_MODULE})}},{key:\"getGroupMemberProfile\",value:function(e){var t=this._get(7);return t?t.getGroupMemberProfile(e):D({code:L.NO_MODULE})}},{key:\"addGroupMember\",value:function(e){var t=this._get(7);return t?t.addGroupMember(e):D({code:L.NO_MODULE})}},{key:\"deleteGroupMember\",value:function(e){var t=this._get(7);return t?t.deleteGroupMember(e):D({code:L.NO_MODULE})}},{key:\"setGroupMemberMuteTime\",value:function(e){var t=this._get(7);return t?t.setGroupMemberMuteTime(e):D({code:L.NO_MODULE})}},{key:\"setGroupMemberRole\",value:function(e){var t=this._get(7);return t?t.setGroupMemberRole(e):D({code:L.NO_MODULE})}},{key:\"setGroupMemberNameCard\",value:function(e){var t=this._get(7);return t?t.setGroupMemberNameCard(e):D({code:L.NO_MODULE})}},{key:\"setGroupMemberCustomField\",value:function(e){var t=this._get(7);return t?t.setGroupMemberCustomField(e):D({code:L.NO_MODULE})}},{key:\"markGroupMemberList\",value:function(e){var t=this._get(7);return t?t.markGroupMemberList(e):D({code:L.NO_MODULE})}},{key:\"getJoinedCommunityList\",value:function(){return this._get(10).getJoinedCommunityList()}},{key:\"createTopicInCommunity\",value:function(e){return this._get(10).createTopicInCommunity(e)}},{key:\"deleteTopicFromCommunity\",value:function(e){return this._get(10).deleteTopicFromCommunity(e)}},{key:\"updateTopicProfile\",value:function(e){return this._get(10).updateTopicProfile(e)}},{key:\"getTopicList\",value:function(e){return this._get(10).getTopicList(e)}},{key:\"addSignalingListener\",value:function(e,t,n){var o=this._get(33);o&&o.addSignalingListener(e,this._safetyCallbackFactory.defense(e,t,n),n)}},{key:\"removeSignalingListener\",value:function(e,t,n){var o,i=this._safetyCallbackFactory.find(e,t);null!==i&&(o=this._get(33))&&(o.removeSignalingListener(e,i,n),this._safetyCallbackFactory.delete(e,t))}},{key:\"invite\",value:function(e){var t=this._get(33);return t?t.invite(e):D({code:L.NO_MODULE})}},{key:\"inviteSync\",value:function(e,t,n){var o=this._get(33);return o?o.inviteSync(e,t,n):\"\"}},{key:\"inviteInGroup\",value:function(e){var t=this._get(33);return t?t.invite(e):D({code:L.NO_MODULE})}},{key:\"inviteInGroupSync\",value:function(e,t,n){var o=this._get(33);return o?o.inviteSync(e,t,n):\"\"}},{key:\"cancel\",value:function(e){var t=this._get(33);return t?t.cancel(e):D({code:L.NO_MODULE})}},{key:\"accept\",value:function(e){var t=this._get(33);return t?t.accept(e):D({code:L.NO_MODULE})}},{key:\"reject\",value:function(e){var t=this._get(33);return t?t.reject(e):D({code:L.NO_MODULE})}},{key:\"getSignalingInfo\",value:function(e){var t=this._get(33);return t?t.getSignalingInfo(e):null}},{key:\"modifyInvitation\",value:function(e){var t=this._get(33);return t?t.modifyInvitation(e):D({code:L.NO_MODULE})}}]),Rc),Ac={login:1,logout:1,getLoginUser:1,destroy:1,on:1,off:1,ready:1,setLogLevel:1,joinGroup:1,quitGroup:1,registerPlugin:1,getGroupOnlineMemberCount:1,isReady:1,addSignalingListener:1,removeSignalingListener:1,callExperimentalAPI:1};function Rc(e){d(this,Rc);e={SDKAppID:e.SDKAppID,unlimitedAVChatRoom:e.unlimitedAVChatRoom||!1,scene:e.scene||\"\",oversea:e.oversea||!1,instanceID:qt(),devMode:e.devMode||!1,testEnv:e.testEnv||!1,proxyServer:e.proxyServer||void 0,fileUploadProxy:e.fileUploadProxy||void 0,fileDownloadProxy:e.fileDownloadProxy||e.fileUploadProxy||void 0,eventThrottling:!1!==e.eventThrottling,partialUpdatedConversations:!0===e.partialUpdatedConversations,modules:e.modules||void 0};this._m=new Lc(e),this._safetyCallbackFactory=new Sc(this._m)}function Oc(e){d(this,Oc),this._funcMap=new Map,this._m=e,this._n=\"SafetyCallback\",this._reportCount=0}function Nc(t){var n=this;d(this,Nc);var o,e=new G(\"sdkConstruct\"),i=(this._n=\"ModuleManager\",this._isReady=!1,this._reason=L.USER_NOT_LOGGED_IN,this._startLoginTs=0,this._map=new Map,this._optionalModuleMap=new Map,this._iEmitter=null,this._oEmitter=null,this._checkCount=0,this._checkTimer=-1,this._map.set(12,new Ri(this,t)),this._map.set(37,new Ec(this)),this._map.set(15,new pa(this)),this._map.set(27,new ir(this)),this._map.set(23,new Hs(this)),this._map.set(24,new nr(this)),this._map.set(26,new Js(this)),this._map.set(21,new ds(this)),this._map.set(20,new Vs(this)),this._map.set(1,new Ni(this)),this._map.set(2,new wa(this)),this._map.set(3,new Fa(this)),this._map.set(34,new qa(this)),this._map.set(31,new xa(this)),this._map.set(4,new Ai(this)),this._map.set(6,new qo(this)),this._map.set(11,new ci(this)),this._map.set(7,new yi(this)),this._map.set(10,new Di(this)),this._map.set(13,new ra(this)),this._map.set(32,new ur(this)),this._map.set(14,new ua(this)),this._map.set(17,new Ca(this)),this._map.set(18,new Va(this)),this._map.set(19,new Ha(this)),this._map.set(25,new Bs(this)),this._map.set(8,new tr(this)),this._map.set(28,new ar(this)),this._map.set(36,new sr(this)),this._map.set(29,new rr(this)),this._map.set(30,new cr(this)),this._map.set(33,new fr(this)),this._map.set(35,new Ir(this)),this._eventThrottleMap=new Map,this._eventThrottling=t.eventThrottling,this._map.get(12).isPartialUpdatedConvs()&&(this._eventThrottling=!1),f(t.modules)?(Object.keys(t.modules).forEach(function(e){o=t.modules[e],\"group-module\"===e?n._map.set(7,new o(n)):\"relationship-module\"===e?n._map.set(8,new o(n)):\"signaling-module\"===e?n._map.set(33,new o(n)):\"follow-module\"===e&&n._map.set(35,new o(n)),n._optionalModuleMap.set(e,1)}),this._map.get(12).setUsingChatCore(!0)):this._map.has(7)||this._map.get(12).setUsingChatCore(!0),t.instanceID),a=t.SDKAppID,s=this._map.get(12).isIntl(),r=this._map.get(12).isUsingChatCore(),i=\"instanceID:\".concat(i,\" SDKAppID:\").concat(a,\" isIntl:\").concat(s,\" isUsingChatCore:\").concat(r,\" host:\").concat(xt())+\" isIOSWebView:\".concat(be,\" platform:\").concat(De,\" canIUseInflate:\").concat(this.canIUseInflate())+\" workerAvailable:\".concat(Ge,\" eventThrottling:\").concat(this._eventThrottling,\" UserAgent:\").concat(Te);G.bindEventStatModule(this._map.get(14)),G.bindNetMonitorModule(this._map.get(15)),e.setMessage(\"\".concat(i,\" \").concat(function(){var t=\"\";if(v)try{var e=I.getSystemInfoSync(),n=e.model,o=e.version,i=e.system,a=e.platform,s=e.SDKVersion,t=\"model:\".concat(n,\" version:\").concat(o,\" system:\").concat(i,\" platform:\").concat(a,\" SDKVersion:\").concat(s)}catch(e){t=\"\"}return t}())).end(),M.i(\"SDK \".concat(i)),E.prototype._getErrMsg=this.getErrMsg.bind(this),this._readyList=void 0,this._ssoLogForReady=null,this._initReadyList()}function Gc(e){d(this,Gc),this._m=e,this._n=\"InflateModule\",this._bLogForInflateOK=!1,this._bLogForInflateError=!1}var Pc={},o={};return o.create=function(e){var t=\"TencentCloudChat.create\",n=0,o=e.SDKAppID;if(R(o))n=o;else if(n=parseInt(o),isNaN(o))return M.e(\"\".concat(t,\" failed. Failed to parse the SDKAppID, please check the arguments\")),null;if(n&&Pc[n])return Pc[n];M.l(\"\".concat(t));var s,i,o=new kc(y(y({},e),{},{SDKAppID:n})),e=(o.on(h.SDK_DESTROY,function(e){Pc[e.data.SDKAppID]=null,delete Pc[e.data.SDKAppID]}),s=o,i=Object.create(null),Object.keys(Fn).forEach(function(a){var t;s[a]&&(t=new $,i[a]=function(){var e=Array.from(arguments);return t.use(function(e,t){i=a;var n,o,i=!(!(n=s).isReady()&&1!==Ac[i])||(o={code:o=n.getNotReadyReason(),message:\"\".concat(n.getErrMsg(o),\" | \").concat(i,\" | \").concat(n.getErrMsg(L.SDK_IS_NOT_READY))},n.onError(o),o);return!0===i?t():D(i)}).use(function(e,t){if(!0===function(n,o,i){if(void 0===o)return!0;var a=!0;if(f(o))Object.keys(o).forEach(function(e){var t=1===n.length?n[0][e]:void 0;a=!!an(t,o[e],i,e)&&a});else if(O(o))for(var e=0;e typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
+}) : x)(function(x) {
+ if (typeof require !== "undefined")
+ return require.apply(this, arguments);
+ throw Error('Dynamic require of "' + x + '" is not supported');
+});
+var __commonJS = (cb, mod) => function __require2() {
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+};
+
+export {
+ __require,
+ __commonJS
+};
+//# sourceMappingURL=chunk-TDUMLE5V.js.map
diff --git a/jiuyi2/unpackage/dist/cache/.vite/deps/chunk-TDUMLE5V.js.map b/jiuyi2/unpackage/dist/cache/.vite/deps/chunk-TDUMLE5V.js.map
new file mode 100644
index 00000000..98652118
--- /dev/null
+++ b/jiuyi2/unpackage/dist/cache/.vite/deps/chunk-TDUMLE5V.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": [],
+ "sourcesContent": [],
+ "mappings": "",
+ "names": []
+}
diff --git a/jiuyi2/unpackage/dist/cache/.vite/deps/js-pinyin.js b/jiuyi2/unpackage/dist/cache/.vite/deps/js-pinyin.js
new file mode 100644
index 00000000..7cc50d2b
--- /dev/null
+++ b/jiuyi2/unpackage/dist/cache/.vite/deps/js-pinyin.js
@@ -0,0 +1,947 @@
+import {
+ __commonJS
+} from "./chunk-TDUMLE5V.js";
+
+// ../../../../../桌面/jiuyiUniapp/jiuyi2/node_modules/js-pinyin/dist/pinyin.js
+var require_pinyin = __commonJS({
+ "../../../../../桌面/jiuyiUniapp/jiuyi2/node_modules/js-pinyin/dist/pinyin.js"(exports, module) {
+ "use strict";
+ var _createClass = /* @__PURE__ */ function() {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor)
+ descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function(Constructor, protoProps, staticProps) {
+ if (protoProps)
+ defineProperties(Constructor.prototype, protoProps);
+ if (staticProps)
+ defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+ var Pinyin = function() {
+ function Pinyin2(options) {
+ _classCallCheck(this, Pinyin2);
+ this.setOptions(options);
+ this.initialize();
+ }
+ _createClass(Pinyin2, [{
+ key: "setOptions",
+ value: function setOptions(options) {
+ options = options || {};
+ this.options = Object.assign({ checkPolyphone: false, charCase: 0 }, options);
+ }
+ /**
+ * 初始化数据
+ */
+ }, {
+ key: "initialize",
+ value: function initialize() {
+ this.char_dict = "YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYFZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY";
+ this.full_dict = {
+ "a": "啊阿锕",
+ "ai": "埃挨哎唉哀皑癌蔼矮艾碍爱隘诶捱嗳嗌嫒瑷暧砹锿霭",
+ "an": "鞍氨安俺按暗岸胺案谙埯揞犴庵桉铵鹌顸黯",
+ "ang": "肮昂盎",
+ "ao": "凹敖熬翱袄傲奥懊澳坳拗嗷噢岙廒遨媪骜聱螯鏊鳌鏖",
+ "ba": "芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸茇菝萆捭岜灞杷钯粑鲅魃",
+ "bai": "白柏百摆佰败拜稗薜掰鞴",
+ "ban": "斑班搬扳般颁板版扮拌伴瓣半办绊阪坂豳钣瘢癍舨",
+ "bang": "邦帮梆榜膀绑棒磅蚌镑傍谤蒡螃",
+ "bao": "苞胞包褒雹保堡饱宝抱报暴豹鲍爆勹葆宀孢煲鸨褓趵龅",
+ "bo": "剥薄玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳亳蕃啵饽檗擘礴钹鹁簸跛",
+ "bei": "杯碑悲卑北辈背贝钡倍狈备惫焙被孛陂邶埤蓓呗怫悖碚鹎褙鐾",
+ "ben": "奔苯本笨畚坌锛",
+ "beng": "崩绷甭泵蹦迸唪嘣甏",
+ "bi": "逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛匕仳俾芘荜荸吡哔狴庳愎滗濞弼妣婢嬖璧贲畀铋秕裨筚箅篦舭襞跸髀",
+ "bian": "鞭边编贬扁便变卞辨辩辫遍匾弁苄忭汴缏煸砭碥稹窆蝙笾鳊",
+ "biao": "标彪膘表婊骠飑飙飚灬镖镳瘭裱鳔",
+ "bie": "鳖憋别瘪蹩鳘",
+ "bin": "彬斌濒滨宾摈傧浜缤玢殡膑镔髌鬓",
+ "bing": "兵冰柄丙秉饼炳病并禀邴摒绠枋槟燹",
+ "bu": "捕卜哺补埠不布步簿部怖拊卟逋瓿晡钚醭",
+ "ca": "擦嚓礤",
+ "cai": "猜裁材才财睬踩采彩菜蔡",
+ "can": "餐参蚕残惭惨灿骖璨粲黪",
+ "cang": "苍舱仓沧藏伧",
+ "cao": "操糙槽曹草艹嘈漕螬艚",
+ "ce": "厕策侧册测刂帻恻",
+ "ceng": "层蹭噌",
+ "cha": "插叉茬茶查碴搽察岔差诧猹馇汊姹杈楂槎檫钗锸镲衩",
+ "chai": "拆柴豺侪茈瘥虿龇",
+ "chan": "搀掺蝉馋谗缠铲产阐颤冁谄谶蒇廛忏潺澶孱羼婵嬗骣觇禅镡裣蟾躔",
+ "chang": "昌猖场尝常长偿肠厂敞畅唱倡伥鬯苌菖徜怅惝阊娼嫦昶氅鲳",
+ "chao": "超抄钞朝嘲潮巢吵炒怊绉晁耖",
+ "che": "车扯撤掣彻澈坼屮砗",
+ "chen": "郴臣辰尘晨忱沉陈趁衬称谌抻嗔宸琛榇肜胂碜龀",
+ "cheng": "撑城橙成呈乘程惩澄诚承逞骋秤埕嵊徵浈枨柽樘晟塍瞠铖裎蛏酲",
+ "chi": "吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽傺墀芪茌搋叱哧啻嗤彳饬沲媸敕胝眙眵鸱瘛褫蚩螭笞篪豉踅踟魑",
+ "chong": "充冲虫崇宠茺忡憧铳艟",
+ "chou": "抽酬畴踌稠愁筹仇绸瞅丑俦圳帱惆溴妯瘳雠鲋",
+ "chu": "臭初出橱厨躇锄雏滁除楚础储矗搐触处亍刍憷绌杵楮樗蜍蹰黜",
+ "chuan": "揣川穿椽传船喘串掾舛惴遄巛氚钏镩舡",
+ "chuang": "疮窗幢床闯创怆",
+ "chui": "吹炊捶锤垂陲棰槌",
+ "chun": "春椿醇唇淳纯蠢促莼沌肫朐鹑蝽",
+ "chuo": "戳绰蔟辶辍镞踔龊",
+ "ci": "疵茨磁雌辞慈瓷词此刺赐次荠呲嵯鹚螅糍趑",
+ "cong": "聪葱囱匆从丛偬苁淙骢琮璁枞",
+ "cou": "薮楱辏腠",
+ "cu": "凑粗醋簇猝殂蹙",
+ "cuan": "蹿篡窜汆撺爨",
+ "cui": "摧崔催脆瘁粹淬翠萃悴璀榱隹",
+ "cun": "村存寸磋忖皴",
+ "cuo": "撮搓措挫错厝脞锉矬痤鹾蹉躜",
+ "chuai": "嘬膪踹",
+ "cen": "岑涔",
+ "da": "搭达答瘩打大耷哒嗒怛妲疸褡笪靼鞑",
+ "dai": "呆歹傣戴带殆代贷袋待逮怠埭甙呔岱迨逯骀绐玳黛",
+ "dan": "耽担丹单郸掸胆旦氮但惮淡诞弹蛋亻儋卩萏啖澹檐殚赕眈瘅聃箪",
+ "dang": "当挡党荡档谠凼菪宕砀铛裆",
+ "dao": "刀捣蹈倒岛祷导到稻悼道盗叨啁忉洮氘焘忑纛",
+ "de": "德得的锝",
+ "deng": "蹬灯登等瞪凳邓噔嶝戥磴镫簦",
+ "di": "堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔氐籴诋谛邸坻莜荻嘀娣柢棣觌砥碲睇镝羝骶",
+ "dia": "嗲",
+ "dian": "颠掂滇碘点典靛垫电佃甸店惦奠淀殿丶阽坫埝巅玷癜癫簟踮",
+ "diao": "碉叼雕凋刁掉吊钓调轺铞蜩粜貂",
+ "die": "跌爹碟蝶迭谍叠佚垤堞揲喋渫轶牒瓞褶耋蹀鲽鳎",
+ "ding": "丁盯叮钉顶鼎锭定订丢仃啶玎腚碇町铤疔耵酊",
+ "dong": "东冬董懂动栋侗恫冻洞垌咚岽峒夂氡胨胴硐鸫",
+ "dou": "兜抖斗陡豆逗痘蔸钭窦窬蚪篼酡",
+ "du": "都督毒犊独读堵睹赌杜镀肚度渡妒芏嘟渎椟橐牍蠹笃髑黩",
+ "duan": "端短锻段断缎彖椴煅簖",
+ "dui": "堆兑队对怼憝碓",
+ "dun": "墩吨蹲敦顿囤钝盾遁炖砘礅盹镦趸",
+ "duo": "掇哆多夺垛躲朵跺舵剁惰堕咄哚缍柁铎裰踱",
+ "e": "蛾峨鹅俄额讹娥恶厄扼遏鄂饿噩谔垩垭苊莪萼呃愕屙婀轭曷腭硪锇锷鹗颚鳄",
+ "en": "恩蒽摁唔嗯",
+ "er": "而儿耳尔饵洱二贰迩珥铒鸸鲕",
+ "fa": "发罚筏伐乏阀法珐垡砝",
+ "fan": "藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛蘩幡犭梵攵燔畈蹯",
+ "fang": "坊芳方肪房防妨仿访纺放匚邡彷钫舫鲂",
+ "fei": "菲非啡飞肥匪诽吠肺废沸费芾狒悱淝妃绋绯榧腓斐扉祓砩镄痱蜚篚翡霏鲱",
+ "fen": "芬酚吩氛分纷坟焚汾粉奋份忿愤粪偾瀵棼愍鲼鼢",
+ "feng": "丰封枫蜂峰锋风疯烽逢冯缝讽奉凤俸酆葑沣砜",
+ "fo": "佛仏坲梻仸",
+ "fou": "缶",
+ "fu": "佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐匐凫郛芙苻茯莩菔呋幞滏艴孚驸绂桴赙黻黼罘稃馥虍蚨蜉蝠蝮麸趺跗鳆",
+ "ga": "噶嘎蛤尬呷尕尜旮钆",
+ "gai": "该改概钙盖溉丐陔垓戤赅胲",
+ "gan": "干甘杆柑竿肝赶感秆敢赣坩苷尴擀泔淦澉绀橄旰矸疳酐",
+ "gang": "冈刚钢缸肛纲岗港戆罡颃筻",
+ "gong": "杠工攻功恭龚供躬公宫弓巩汞拱贡共蕻廾咣珙肱蚣蛩觥",
+ "gao": "篙皋高膏羔糕搞镐稿告睾诰郜蒿藁缟槔槁杲锆",
+ "ge": "哥歌搁戈鸽胳疙割革葛格阁隔铬个各鬲仡哿塥嗝纥搿膈硌铪镉袼颌虼舸骼髂",
+ "gei": "给",
+ "gen": "根跟亘茛哏艮",
+ "geng": "耕更庚羹埂耿梗哽赓鲠",
+ "gou": "钩勾沟苟狗垢构购够佝诟岣遘媾缑觏彀鸲笱篝鞲",
+ "gu": "辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇嘏诂菰哌崮汩梏轱牯牿胍臌毂瞽罟钴锢瓠鸪鹄痼蛄酤觚鲴骰鹘",
+ "gua": "刮瓜剐寡挂褂卦诖呱栝鸹",
+ "guai": "乖拐怪哙",
+ "guan": "棺关官冠观管馆罐惯灌贯倌莞掼涫盥鹳鳏",
+ "guang": "光广逛犷桄胱疒",
+ "gui": "瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽匦刿庋宄妫桧炅晷皈簋鲑鳜",
+ "gun": "辊滚棍丨衮绲磙鲧",
+ "guo": "锅郭国果裹过馘蠃埚掴呙囗帼崞猓椁虢锞聒蜮蜾蝈",
+ "ha": "哈",
+ "hai": "骸孩海氦亥害骇咴嗨颏醢",
+ "han": "酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉邗菡撖阚瀚晗焓颔蚶鼾",
+ "hen": "夯痕很狠恨",
+ "hang": "杭航沆绗珩桁",
+ "hao": "壕嚎豪毫郝好耗号浩薅嗥嚆濠灏昊皓颢蚝",
+ "he": "呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺诃劾壑藿嗑嗬阖盍蚵翮",
+ "hei": "嘿黑",
+ "heng": "哼亨横衡恒訇蘅",
+ "hong": "轰哄烘虹鸿洪宏弘红黉讧荭薨闳泓",
+ "hou": "喉侯猴吼厚候后堠後逅瘊篌糇鲎骺",
+ "hu": "呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户冱唿囫岵猢怙惚浒滹琥槲轷觳烀煳戽扈祜鹕鹱笏醐斛",
+ "hua": "花哗华猾滑画划化话劐浍骅桦铧稞",
+ "huai": "槐徊怀淮坏还踝",
+ "huan": "欢环桓缓换患唤痪豢焕涣宦幻郇奂垸擐圜洹浣漶寰逭缳锾鲩鬟",
+ "huang": "荒慌黄磺蝗簧皇凰惶煌晃幌恍谎隍徨湟潢遑璜肓癀蟥篁鳇",
+ "hui": "灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘诙茴荟蕙哕喙隳洄彗缋珲晖恚虺蟪麾",
+ "hun": "荤昏婚魂浑混诨馄阍溷缗",
+ "huo": "豁活伙火获或惑霍货祸攉嚯夥钬锪镬耠蠖",
+ "ji": "击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪居丌乩剞佶佴脔墼芨芰萁蒺蕺掎叽咭哜唧岌嵴洎彐屐骥畿玑楫殛戟戢赍觊犄齑矶羁嵇稷瘠瘵虮笈笄暨跻跽霁鲚鲫髻麂",
+ "jia": "嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁伽郏拮岬浃迦珈戛胛恝铗镓痂蛱笳袈跏",
+ "jian": "歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僭谏谫菅蒹搛囝湔蹇謇缣枧柙楗戋戬牮犍毽腱睑锏鹣裥笕箴翦趼踺鲣鞯",
+ "jiang": "僵姜将浆江疆蒋桨奖讲匠酱降茳洚绛缰犟礓耩糨豇",
+ "jiao": "蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫佼僬茭挢噍峤徼姣纟敫皎鹪蛟醮跤鲛",
+ "jie": "窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届偈讦诘喈嗟獬婕孑桀獒碣锴疖袷颉蚧羯鲒骱髫",
+ "jin": "巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽卺荩堇噤馑廑妗缙瑾槿赆觐钅锓衿矜",
+ "jing": "劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净刭儆阱菁獍憬泾迳弪婧肼胫腈旌",
+ "jiong": "炯窘冂迥扃",
+ "jiu": "揪究纠玖韭久灸九酒厩救旧臼舅咎就疚僦啾阄柩桕鹫赳鬏",
+ "ju": "鞠拘狙疽驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧倨讵苣苴莒掬遽屦琚枸椐榘榉橘犋飓钜锔窭裾趄醵踽龃雎鞫",
+ "juan": "捐鹃娟倦眷卷绢鄄狷涓桊蠲锩镌隽",
+ "jue": "撅攫抉掘倔爵觉决诀绝厥劂谲矍蕨噘崛獗孓珏桷橛爝镢蹶觖",
+ "jun": "均菌钧军君峻俊竣浚郡骏捃狻皲筠麇",
+ "ka": "喀咖卡佧咔胩",
+ "ke": "咯坷苛柯棵磕颗科壳咳可渴克刻客课岢恪溘骒缂珂轲氪瞌钶疴窠蝌髁",
+ "kai": "开揩楷凯慨剀垲蒈忾恺铠锎",
+ "kan": "刊堪勘坎砍看侃凵莰莶戡龛瞰",
+ "kang": "康慷糠扛抗亢炕坑伉闶钪",
+ "kao": "考拷烤靠尻栲犒铐",
+ "ken": "肯啃垦恳垠裉颀",
+ "keng": "吭忐铿",
+ "kong": "空恐孔控倥崆箜",
+ "kou": "抠口扣寇芤蔻叩眍筘",
+ "ku": "枯哭窟苦酷库裤刳堀喾绔骷",
+ "kua": "夸垮挎跨胯侉",
+ "kuai": "块筷侩快蒯郐蒉狯脍",
+ "kuan": "宽款髋",
+ "kuang": "匡筐狂框矿眶旷况诓诳邝圹夼哐纩贶",
+ "kui": "亏盔岿窥葵奎魁傀馈愧溃馗匮夔隗揆喹喟悝愦阕逵暌睽聩蝰篑臾跬",
+ "kun": "坤昆捆困悃阃琨锟醌鲲髡",
+ "kuo": "括扩廓阔蛞",
+ "la": "垃拉喇蜡腊辣啦剌摺邋旯砬瘌",
+ "lai": "莱来赖崃徕涞濑赉睐铼癞籁",
+ "lan": "蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥啉岚懔漤榄斓罱镧褴",
+ "lang": "琅榔狼廊郎朗浪莨蒗啷阆锒稂螂",
+ "lao": "捞劳牢老佬姥酪烙涝唠崂栳铑铹痨醪",
+ "le": "勒乐肋仂叻嘞泐鳓",
+ "lei": "雷镭蕾磊累儡垒擂类泪羸诔荽咧漯嫘缧檑耒酹",
+ "ling": "棱冷拎玲菱零龄铃伶羚凌灵陵岭领另令酃塄苓呤囹泠绫柃棂瓴聆蛉翎鲮",
+ "leng": "楞愣",
+ "li": "厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐痢立粒沥隶力璃哩俪俚郦坜苈莅蓠藜捩呖唳喱猁溧澧逦娌嫠骊缡珞枥栎轹戾砺詈罹锂鹂疠疬蛎蜊蠡笠篥粝醴跞雳鲡鳢黧",
+ "lian": "俩联莲连镰廉怜涟帘敛脸链恋炼练挛蔹奁潋濂娈琏楝殓臁膦裢蠊鲢",
+ "liang": "粮凉梁粱良两辆量晾亮谅墚椋踉靓魉",
+ "liao": "撩聊僚疗燎寥辽潦了撂镣廖料蓼尥嘹獠寮缭钌鹩耢",
+ "lie": "列裂烈劣猎冽埒洌趔躐鬣",
+ "lin": "琳林磷霖临邻鳞淋凛赁吝蔺嶙廪遴檩辚瞵粼躏麟",
+ "liu": "溜琉榴硫馏留刘瘤流柳六抡偻蒌泖浏遛骝绺旒熘锍镏鹨鎏",
+ "long": "龙聋咙笼窿隆垄拢陇弄垅茏泷珑栊胧砻癃",
+ "lou": "楼娄搂篓漏陋喽嵝镂瘘耧蝼髅",
+ "lu": "芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮垆摅撸噜泸渌漉璐栌橹轳辂辘氇胪镥鸬鹭簏舻鲈",
+ "lv": "驴吕铝侣旅履屡缕虑氯律率滤绿捋闾榈膂稆褛",
+ "luan": "峦孪滦卵乱栾鸾銮",
+ "lue": "掠略锊",
+ "lun": "轮伦仑沦纶论囵",
+ "luo": "萝螺罗逻锣箩骡裸落洛骆络倮荦摞猡泺椤脶镙瘰雒",
+ "ma": "妈麻玛码蚂马骂嘛吗唛犸嬷杩麽",
+ "mai": "埋买麦卖迈脉劢荬咪霾",
+ "man": "瞒馒蛮满蔓曼慢漫谩墁幔缦熳镘颟螨鳗鞔",
+ "mang": "芒茫盲忙莽邙漭朦硭蟒",
+ "meng": "氓萌蒙檬盟锰猛梦孟勐甍瞢懵礞虻蜢蠓艋艨黾",
+ "miao": "猫苗描瞄藐秒渺庙妙喵邈缈缪杪淼眇鹋蜱",
+ "mao": "茅锚毛矛铆卯茂冒帽貌贸侔袤勖茆峁瑁昴牦耄旄懋瞀蛑蝥蟊髦",
+ "me": "么",
+ "mei": "玫枚梅酶霉煤没眉媒镁每美昧寐妹媚坶莓嵋猸浼湄楣镅鹛袂魅",
+ "men": "门闷们扪玟焖懑钔",
+ "mi": "眯醚靡糜迷谜弥米秘觅泌蜜密幂芈冖谧蘼嘧猕獯汨宓弭脒敉糸縻麋",
+ "mian": "棉眠绵冕免勉娩缅面沔湎腼眄",
+ "mie": "蔑灭咩蠛篾",
+ "min": "民抿皿敏悯闽苠岷闵泯珉",
+ "ming": "明螟鸣铭名命冥茗溟暝瞑酩",
+ "miu": "谬",
+ "mo": "摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谟茉蓦馍嫫镆秣瘼耱蟆貊貘",
+ "mou": "谋牟某厶哞婺眸鍪",
+ "mu": "拇牡亩姆母墓暮幕募慕木目睦牧穆仫苜呒沐毪钼",
+ "na": "拿哪呐钠那娜纳内捺肭镎衲箬",
+ "nai": "氖乃奶耐奈鼐艿萘柰",
+ "nan": "南男难囊喃囡楠腩蝻赧",
+ "nang": "攮哝囔馕曩",
+ "nao": "挠脑恼闹孬垴猱瑙硇铙蛲",
+ "ne": "淖呢讷",
+ "nei": "馁",
+ "nen": "嫩能枘恁",
+ "ni": "妮霓倪泥尼拟你匿腻逆溺伲坭猊怩滠昵旎祢慝睨铌鲵",
+ "nian": "蔫拈年碾撵捻念廿辇黏鲇鲶",
+ "niang": "娘酿",
+ "niao": "鸟尿茑嬲脲袅",
+ "nie": "捏聂孽啮镊镍涅乜陧蘖嗫肀颞臬蹑",
+ "nin": "您柠",
+ "ning": "狞凝宁拧泞佞蓥咛甯聍",
+ "niu": "牛扭钮纽狃忸妞蚴",
+ "nong": "脓浓农侬",
+ "nu": "奴努怒呶帑弩胬孥驽",
+ "nv": "女恧钕衄",
+ "nuan": "暖",
+ "nuenue": "虐",
+ "nue": "疟谑",
+ "nuo": "挪懦糯诺傩搦喏锘",
+ "o": "喔",
+ "ou": "哦欧鸥殴藕呕偶沤怄瓯耦",
+ "pa": "啪趴爬帕怕琶葩筢",
+ "pai": "拍排牌徘湃派俳蒎",
+ "pan": "攀潘盘磐盼畔判叛爿泮袢襻蟠蹒",
+ "pang": "乓庞旁耪胖滂逄",
+ "pao": "抛咆刨炮袍跑泡匏狍庖脬疱",
+ "pei": "呸胚培裴赔陪配佩沛掊辔帔淠旆锫醅霈",
+ "pen": "喷盆湓",
+ "peng": "砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯堋嘭怦蟛",
+ "pi": "砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬丕陴邳郫圮鼙擗噼庀媲纰枇甓睥罴铍痦癖疋蚍貔",
+ "pian": "篇偏片骗谝骈犏胼褊翩蹁",
+ "piao": "飘漂瓢票剽嘌嫖缥殍瞟螵",
+ "pie": "撇瞥丿苤氕",
+ "pin": "拼频贫品聘拚姘嫔榀牝颦",
+ "ping": "乒坪苹萍平凭瓶评屏俜娉枰鲆",
+ "po": "坡泼颇婆破魄迫粕叵鄱溥珀钋钷皤笸",
+ "pou": "剖裒踣",
+ "pu": "扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑匍噗濮璞氆镤镨蹼",
+ "qi": "期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫亟亓圻芑萋葺嘁屺岐汔淇骐绮琪琦杞桤槭欹祺憩碛蛴蜞綦綮趿蹊鳍麒",
+ "qia": "掐恰洽葜",
+ "qian": "牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉佥阡芊芡荨掮岍悭慊骞搴褰缱椠肷愆钤虔箝",
+ "qiang": "枪呛腔羌墙蔷强抢嫱樯戗炝锖锵镪襁蜣羟跫跄",
+ "qiao": "橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍劁诮谯荞愀憔缲樵毳硗跷鞒",
+ "qie": "切茄且怯窃郄唼惬妾挈锲箧",
+ "qin": "钦侵亲秦琴勤芹擒禽寝沁芩蓁蕲揿吣嗪噙溱檎螓衾",
+ "qing": "青轻氢倾卿清擎晴氰情顷请庆倩苘圊檠磬蜻罄箐謦鲭黥",
+ "qiong": "琼穷邛茕穹筇銎",
+ "qiu": "秋丘邱球求囚酋泅俅氽巯艽犰湫逑遒楸赇鸠虬蚯蝤裘糗鳅鼽",
+ "qu": "趋区蛆曲躯屈驱渠取娶龋趣去诎劬蕖蘧岖衢阒璩觑氍祛磲癯蛐蠼麴瞿黢",
+ "quan": "圈颧权醛泉全痊拳犬券劝诠荃獾悛绻辁畎铨蜷筌鬈",
+ "que": "缺炔瘸却鹊榷确雀阙悫",
+ "qun": "裙群逡",
+ "ran": "然燃冉染苒髯",
+ "rang": "瓤壤攘嚷让禳穰",
+ "rao": "饶扰绕荛娆桡",
+ "ruo": "惹若弱",
+ "re": "热偌",
+ "ren": "壬仁人忍韧任认刃妊纫仞荏葚饪轫稔衽",
+ "reng": "扔仍",
+ "ri": "日",
+ "rong": "戎茸蓉荣融熔溶容绒冗嵘狨缛榕蝾",
+ "rou": "揉柔肉糅蹂鞣",
+ "ru": "茹蠕儒孺如辱乳汝入褥蓐薷嚅洳溽濡铷襦颥",
+ "ruan": "软阮朊",
+ "rui": "蕊瑞锐芮蕤睿蚋",
+ "run": "闰润",
+ "sa": "撒洒萨卅仨挲飒",
+ "sai": "腮鳃塞赛噻",
+ "san": "三叁伞散彡馓氵毵糁霰",
+ "sang": "桑嗓丧搡磉颡",
+ "sao": "搔骚扫嫂埽臊瘙鳋",
+ "se": "瑟色涩啬铩铯穑",
+ "sen": "森",
+ "seng": "僧",
+ "sha": "莎砂杀刹沙纱傻啥煞脎歃痧裟霎鲨",
+ "shai": "筛晒酾",
+ "shan": "珊苫杉山删煽衫闪陕擅赡膳善汕扇缮剡讪鄯埏芟潸姗骟膻钐疝蟮舢跚鳝",
+ "shang": "墒伤商赏晌上尚裳垧绱殇熵觞",
+ "shao": "梢捎稍烧芍勺韶少哨邵绍劭苕潲蛸笤筲艄",
+ "she": "奢赊蛇舌舍赦摄射慑涉社设厍佘猞畲麝",
+ "shen": "砷申呻伸身深娠绅神沈审婶甚肾慎渗诜谂吲哂渖椹矧蜃",
+ "sheng": "声生甥牲升绳省盛剩胜圣丞渑媵眚笙",
+ "shi": "师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试谥埘莳蓍弑唑饣轼耆贳炻礻铈铊螫舐筮豕鲥鲺",
+ "shou": "收手首守寿授售受瘦兽扌狩绶艏",
+ "shu": "蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕倏塾菽忄沭涑澍姝纾毹腧殳镯秫鹬",
+ "shua": "刷耍唰涮",
+ "shuai": "摔衰甩帅蟀",
+ "shuan": "栓拴闩",
+ "shuang": "霜双爽孀",
+ "shui": "谁水睡税",
+ "shun": "吮瞬顺舜恂",
+ "shuo": "说硕朔烁蒴搠嗍濯妁槊铄",
+ "si": "斯撕嘶思私司丝死肆寺嗣四伺似饲巳厮俟兕菥咝汜泗澌姒驷缌祀祠锶鸶耜蛳笥",
+ "song": "松耸怂颂送宋讼诵凇菘崧嵩忪悚淞竦",
+ "sou": "搜艘擞嗽叟嗖嗾馊溲飕瞍锼螋",
+ "su": "苏酥俗素速粟僳塑溯宿诉肃夙谡蔌嗉愫簌觫稣",
+ "suan": "酸蒜算",
+ "sui": "虽隋随绥髓碎岁穗遂隧祟蓑冫谇濉邃燧眭睢",
+ "sun": "孙损笋荪狲飧榫跣隼",
+ "suo": "梭唆缩琐索锁所唢嗦娑桫睃羧",
+ "ta": "塌他它她塔獭挞蹋踏闼溻遢榻沓",
+ "tai": "胎苔抬台泰酞太态汰邰薹肽炱钛跆鲐",
+ "tan": "坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭郯蕈昙钽锬覃",
+ "tang": "汤塘搪堂棠膛唐糖傥饧溏瑭铴镗耥螗螳羰醣",
+ "thang": "倘躺淌",
+ "theng": "趟烫",
+ "tao": "掏涛滔绦萄桃逃淘陶讨套挑鼗啕韬饕",
+ "te": "特",
+ "teng": "藤腾疼誊滕",
+ "ti": "梯剔踢锑提题蹄啼体替嚏惕涕剃屉荑悌逖绨缇鹈裼醍",
+ "tian": "天添填田甜恬舔腆掭忝阗殄畋钿蚺",
+ "tiao": "条迢眺跳佻祧铫窕龆鲦",
+ "tie": "贴铁帖萜餮",
+ "ting": "厅听烃汀廷停亭庭挺艇莛葶婷梃蜓霆",
+ "tong": "通桐酮瞳同铜彤童桶捅筒统痛佟僮仝茼嗵恸潼砼",
+ "tou": "偷投头透亠",
+ "tu": "凸秃突图徒途涂屠土吐兔堍荼菟钍酴凃",
+ "tuan": "湍团疃",
+ "tui": "推颓腿蜕褪退忒煺",
+ "tun": "吞屯臀饨暾豚窀",
+ "tuo": "拖托脱鸵陀驮驼椭妥拓唾乇佗坨庹沱柝砣箨舄跎鼍",
+ "wa": "挖哇蛙洼娃瓦袜佤娲腽",
+ "wai": "歪外",
+ "wan": "豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕剜芄苋菀纨绾琬脘畹蜿箢",
+ "wang": "汪王亡枉网往旺望忘妄罔尢惘辋魍",
+ "wei": "威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫倭偎诿隈葳薇帏帷崴嵬猥猬闱沩洧涠逶娓玮韪軎炜煨熨痿艉鲔",
+ "wen": "瘟温蚊文闻纹吻稳紊问刎愠阌汶璺韫殁雯",
+ "weng": "嗡翁瓮蓊蕹",
+ "wo": "挝蜗涡窝我斡卧握沃莴幄渥杌肟龌",
+ "wu": "巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误兀仵阢邬圬芴庑怃忤浯寤迕妩骛牾焐鹉鹜蜈鋈鼯",
+ "xi": "昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细僖兮隰郗茜葸蓰奚唏徙饩阋浠淅屣嬉玺樨曦觋欷熹禊禧钸皙穸蜥蟋舾羲粞翕醯鼷",
+ "xia": "瞎虾匣霞辖暇峡侠狭下厦夏吓掀葭嗄狎遐瑕硖瘕罅黠",
+ "xian": "锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线冼藓岘猃暹娴氙祆鹇痫蚬筅籼酰跹",
+ "xiang": "相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象芗葙饷庠骧缃蟓鲞飨",
+ "xiao": "萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效哓咻崤潇逍骁绡枭枵筱箫魈",
+ "xie": "楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑偕亵勰燮薤撷廨瀣邂绁缬榭榍歙躞",
+ "xin": "薪芯锌欣辛新忻心信衅囟馨莘歆铽鑫昕",
+ "xing": "星腥猩惺兴刑型形邢行醒幸杏性姓陉荇荥擤悻硎",
+ "xiong": "兄凶胸匈汹雄熊芎",
+ "xiu": "休修羞朽嗅锈秀袖绣莠岫馐庥鸺貅髹",
+ "xu": "墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续讴诩圩蓿怵洫溆顼栩煦砉盱胥糈醑",
+ "xuan": "轩喧宣悬旋玄选癣眩绚儇谖萱揎馔泫洵渲漩璇楦暄炫煊碹铉镟痃",
+ "xue": "靴薛学穴雪血噱泶鳕",
+ "xun": "勋熏循旬询寻驯巡殉汛训讯逊迅巽埙荀薰峋徇浔曛窨醺鲟",
+ "ya": "压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶伢揠吖岈迓娅琊桠氩砑睚痖",
+ "yan": "焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验厣靥赝俨偃兖讠谳郾鄢芫菸崦恹闫阏洇湮滟妍嫣琰晏胭腌焱罨筵酽魇餍鼹",
+ "yang": "殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾徉怏泱炀烊恙蛘鞅",
+ "yao": "邀腰妖瑶摇尧遥窑谣姚咬舀药要耀夭爻吆崾徭瀹幺珧杳曜肴鹞窈繇鳐",
+ "ye": "椰噎耶爷野冶也页掖业叶曳腋夜液谒邺揶馀晔烨铘",
+ "yi": "一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎刈劓佾诒圪圯埸懿苡薏弈奕挹弋呓咦咿噫峄嶷猗饴怿怡悒漪迤驿缢殪贻旖熠钇镒镱痍瘗癔翊衤蜴舣羿翳酏黟",
+ "yin": "茵荫因殷音阴姻吟银淫寅饮尹引隐印胤鄞堙茚喑狺夤氤铟瘾蚓霪龈",
+ "ying": "英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映嬴郢茔莺萦撄嘤膺滢潆瀛瑛璎楹鹦瘿颍罂",
+ "yo": "哟唷",
+ "yong": "拥佣臃痈庸雍踊蛹咏泳涌永恿勇用俑壅墉慵邕镛甬鳙饔",
+ "you": "幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼卣攸侑莸呦囿宥柚猷牖铕疣蝣鱿黝鼬",
+ "yu": "迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭禺毓伛俣谀谕萸蓣揄喁圄圉嵛狳饫庾阈妪妤纡瑜昱觎腴欤於煜燠聿钰鹆瘐瘀窳蝓竽舁雩龉",
+ "yuan": "鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院塬沅媛瑗橼爰眢鸢螈鼋",
+ "yue": "曰约越跃钥岳粤月悦阅龠樾刖钺",
+ "yun": "耘云郧匀陨允运蕴酝晕韵孕郓芸狁恽纭殒昀氲",
+ "za": "匝砸杂拶咂",
+ "zai": "栽哉灾宰载再在咱崽甾",
+ "zan": "攒暂赞瓒昝簪糌趱錾",
+ "zang": "赃脏葬奘戕臧",
+ "zao": "遭糟凿藻枣早澡蚤躁噪造皂灶燥唣缫",
+ "ze": "责择则泽仄赜啧迮昃笮箦舴",
+ "zei": "贼",
+ "zen": "怎谮",
+ "zeng": "增憎曾赠缯甑罾锃",
+ "zha": "扎喳渣札轧铡闸眨栅榨咋乍炸诈揸吒咤哳怍砟痄蚱齄",
+ "zhai": "摘斋宅窄债寨砦",
+ "zhan": "瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽谵搌旃",
+ "zhang": "樟章彰漳张掌涨杖丈帐账仗胀瘴障仉鄣幛嶂獐嫜璋蟑",
+ "zhao": "招昭找沼赵照罩兆肇召爪诏棹钊笊",
+ "zhe": "遮折哲蛰辙者锗蔗这浙谪陬柘辄磔鹧褚蜇赭",
+ "zhen": "珍斟真甄砧臻贞针侦枕疹诊震振镇阵缜桢榛轸赈胗朕祯畛鸩",
+ "zheng": "蒸挣睁征狰争怔整拯正政帧症郑证诤峥钲铮筝",
+ "zhi": "芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒卮陟郅埴芷摭帙忮彘咫骘栉枳栀桎轵轾攴贽膣祉祗黹雉鸷痣蛭絷酯跖踬踯豸觯",
+ "zhong": "中盅忠钟衷终种肿重仲众冢锺螽舂舯踵",
+ "zhou": "舟周州洲诌粥轴肘帚咒皱宙昼骤啄着倜诹荮鬻纣胄碡籀舳酎鲷",
+ "zhu": "珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻伫侏邾苎茱洙渚潴驺杼槠橥炷铢疰瘃蚰竺箸翥躅麈",
+ "zhua": "抓",
+ "zhuai": "拽",
+ "zhuan": "专砖转撰赚篆抟啭颛",
+ "zhuang": "桩庄装妆撞壮状丬",
+ "zhui": "椎锥追赘坠缀萑骓缒",
+ "zhun": "谆准",
+ "zhuo": "捉拙卓桌琢茁酌灼浊倬诼廴蕞擢啜浞涿杓焯禚斫",
+ "zi": "兹咨资姿滋淄孜紫仔籽滓子自渍字谘嵫姊孳缁梓辎赀恣眦锱秭耔笫粢觜訾鲻髭",
+ "zong": "鬃棕踪宗综总纵腙粽",
+ "zou": "邹走奏揍鄹鲰",
+ "zu": "租足卒族祖诅阻组俎菹啐徂驵蹴",
+ "zuan": "钻纂攥缵",
+ "zui": "嘴醉最罪",
+ "zun": "尊遵撙樽鳟",
+ "zuo": "昨左佐柞做作坐座阝阼胙祚酢",
+ "diu": "铥",
+ "nou": "耨",
+ "bia": "髟"
+ };
+ this.polyphone = {
+ "19969": "DZ",
+ "19975": "WM",
+ "19988": "QJ",
+ "20048": "YL",
+ "20056": "SC",
+ "20060": "NM",
+ "20094": "QG",
+ "20127": "QJ",
+ "20167": "QC",
+ "20193": "YG",
+ "20250": "KH",
+ "20256": "ZC",
+ "20282": "SC",
+ "20285": "QJG",
+ "20291": "TD",
+ "20314": "YD",
+ "20340": "NE",
+ "20375": "TD",
+ "20389": "YJ",
+ "20391": "CZ",
+ "20415": "PB",
+ "20446": "YS",
+ "20447": "SQ",
+ "20504": "TC",
+ "20608": "KG",
+ "20854": "QJ",
+ "20857": "ZC",
+ "20911": "PF",
+ "20985": "AW",
+ "21032": "PB",
+ "21048": "XQ",
+ "21049": "SC",
+ "21089": "YS",
+ "21119": "JC",
+ "21242": "SB",
+ "21273": "SC",
+ "21305": "YP",
+ "21306": "QO",
+ "21330": "ZC",
+ "21333": "SDC",
+ "21345": "QK",
+ "21378": "CA",
+ "21397": "SC",
+ "21414": "XS",
+ "21442": "SC",
+ "21477": "JG",
+ "21480": "TD",
+ "21484": "ZS",
+ "21494": "YX",
+ "21505": "YX",
+ "21512": "HG",
+ "21523": "XH",
+ "21537": "PB",
+ "21542": "PF",
+ "21549": "KH",
+ "21571": "E",
+ "21574": "DA",
+ "21588": "TD",
+ "21589": "O",
+ "21618": "ZC",
+ "21621": "KHA",
+ "21632": "ZJ",
+ "21654": "KG",
+ "21679": "LKG",
+ "21683": "KH",
+ "21710": "A",
+ "21719": "YH",
+ "21734": "WOE",
+ "21769": "A",
+ "21780": "WN",
+ "21804": "XH",
+ "21834": "A",
+ "21899": "ZD",
+ "21903": "RN",
+ "21908": "WO",
+ "21939": "ZC",
+ "21956": "SA",
+ "21964": "YA",
+ "21970": "TD",
+ "22003": "A",
+ "22031": "JG",
+ "22040": "XS",
+ "22060": "ZC",
+ "22066": "ZC",
+ "22079": "MH",
+ "22129": "XJ",
+ "22179": "XA",
+ "22237": "NJ",
+ "22244": "TD",
+ "22280": "JQ",
+ "22300": "YH",
+ "22313": "XW",
+ "22331": "YQ",
+ "22343": "YJ",
+ "22351": "PH",
+ "22395": "DC",
+ "22412": "TD",
+ "22484": "PB",
+ "22500": "PB",
+ "22534": "ZD",
+ "22549": "DH",
+ "22561": "PB",
+ "22612": "TD",
+ "22771": "KQ",
+ "22831": "HB",
+ "22841": "JG",
+ "22855": "QJ",
+ "22865": "XQ",
+ "23013": "ML",
+ "23081": "WM",
+ "23487": "SX",
+ "23558": "QJ",
+ "23561": "YW",
+ "23586": "YW",
+ "23614": "YW",
+ "23615": "SN",
+ "23631": "PB",
+ "23646": "ZS",
+ "23663": "ZT",
+ "23673": "YG",
+ "23762": "TD",
+ "23769": "ZS",
+ "23780": "QJ",
+ "23884": "QK",
+ "24055": "XH",
+ "24113": "DC",
+ "24162": "ZC",
+ "24191": "GA",
+ "24273": "QJ",
+ "24324": "NL",
+ "24377": "TD",
+ "24378": "QJ",
+ "24439": "PF",
+ "24554": "ZS",
+ "24683": "TD",
+ "24694": "WE",
+ "24733": "LK",
+ "24925": "TN",
+ "25094": "ZG",
+ "25100": "XQ",
+ "25103": "XH",
+ "25153": "PB",
+ "25170": "PB",
+ "25179": "KG",
+ "25203": "PB",
+ "25240": "ZS",
+ "25282": "FB",
+ "25303": "NA",
+ "25324": "KG",
+ "25341": "ZY",
+ "25373": "WZ",
+ "25375": "XJ",
+ "25384": "A",
+ "25457": "A",
+ "25528": "SD",
+ "25530": "SC",
+ "25552": "TD",
+ "25774": "ZC",
+ "25874": "ZC",
+ "26044": "YW",
+ "26080": "WM",
+ "26292": "PB",
+ "26333": "PB",
+ "26355": "ZY",
+ "26366": "CZ",
+ "26397": "ZC",
+ "26399": "QJ",
+ "26415": "ZS",
+ "26451": "SB",
+ "26526": "ZC",
+ "26552": "JG",
+ "26561": "TD",
+ "26588": "JG",
+ "26597": "CZ",
+ "26629": "ZS",
+ "26638": "YL",
+ "26646": "XQ",
+ "26653": "KG",
+ "26657": "XJ",
+ "26727": "HG",
+ "26894": "ZC",
+ "26937": "ZS",
+ "26946": "ZC",
+ "26999": "KJ",
+ "27099": "KJ",
+ "27449": "YQ",
+ "27481": "XS",
+ "27542": "ZS",
+ "27663": "ZS",
+ "27748": "TS",
+ "27784": "SC",
+ "27788": "ZD",
+ "27795": "TD",
+ "27812": "O",
+ "27850": "PB",
+ "27852": "MB",
+ "27895": "SL",
+ "27898": "PL",
+ "27973": "QJ",
+ "27981": "KH",
+ "27986": "HX",
+ "27994": "XJ",
+ "28044": "YC",
+ "28065": "WG",
+ "28177": "SM",
+ "28267": "QJ",
+ "28291": "KH",
+ "28337": "ZQ",
+ "28463": "TL",
+ "28548": "DC",
+ "28601": "TD",
+ "28689": "PB",
+ "28805": "JG",
+ "28820": "QG",
+ "28846": "PB",
+ "28952": "TD",
+ "28975": "ZC",
+ "29100": "A",
+ "29325": "QJ",
+ "29575": "SL",
+ "29602": "FB",
+ "30010": "TD",
+ "30044": "CX",
+ "30058": "PF",
+ "30091": "YSP",
+ "30111": "YN",
+ "30229": "XJ",
+ "30427": "SC",
+ "30465": "SX",
+ "30631": "YQ",
+ "30655": "QJ",
+ "30684": "QJG",
+ "30707": "SD",
+ "30729": "XH",
+ "30796": "LG",
+ "30917": "PB",
+ "31074": "NM",
+ "31085": "JZ",
+ "31109": "SC",
+ "31181": "ZC",
+ "31192": "MLB",
+ "31293": "JQ",
+ "31400": "YX",
+ "31584": "YJ",
+ "31896": "ZN",
+ "31909": "ZY",
+ "31995": "XJ",
+ "32321": "PF",
+ "32327": "ZY",
+ "32418": "HG",
+ "32420": "XQ",
+ "32421": "HG",
+ "32438": "LG",
+ "32473": "GJ",
+ "32488": "TD",
+ "32521": "QJ",
+ "32527": "PB",
+ "32562": "ZSQ",
+ "32564": "JZ",
+ "32735": "ZD",
+ "32793": "PB",
+ "33071": "PF",
+ "33098": "XL",
+ "33100": "YA",
+ "33152": "PB",
+ "33261": "CX",
+ "33324": "BP",
+ "33333": "TD",
+ "33406": "YA",
+ "33426": "WM",
+ "33432": "PB",
+ "33445": "JG",
+ "33486": "ZN",
+ "33493": "TS",
+ "33507": "QJ",
+ "33540": "QJ",
+ "33544": "ZC",
+ "33564": "XQ",
+ "33617": "YT",
+ "33632": "QJ",
+ "33636": "XH",
+ "33637": "YX",
+ "33694": "WG",
+ "33705": "PF",
+ "33728": "YW",
+ "33882": "SR",
+ "34067": "WM",
+ "34074": "YW",
+ "34121": "QJ",
+ "34255": "ZC",
+ "34259": "XL",
+ "34425": "JH",
+ "34430": "XH",
+ "34485": "KH",
+ "34503": "YS",
+ "34532": "HG",
+ "34552": "XS",
+ "34558": "YE",
+ "34593": "ZL",
+ "34660": "YQ",
+ "34892": "XH",
+ "34928": "SC",
+ "34999": "QJ",
+ "35048": "PB",
+ "35059": "SC",
+ "35098": "ZC",
+ "35203": "TQ",
+ "35265": "JX",
+ "35299": "JX",
+ "35782": "SZ",
+ "35828": "YS",
+ "35830": "E",
+ "35843": "TD",
+ "35895": "YG",
+ "35977": "MH",
+ "36158": "JG",
+ "36228": "QJ",
+ "36426": "XQ",
+ "36466": "DC",
+ "36710": "JC",
+ "36711": "ZYG",
+ "36767": "PB",
+ "36866": "SK",
+ "36951": "YW",
+ "37034": "YX",
+ "37063": "XH",
+ "37218": "ZC",
+ "37325": "ZC",
+ "38063": "PB",
+ "38079": "TD",
+ "38085": "QY",
+ "38107": "DC",
+ "38116": "TD",
+ "38123": "YD",
+ "38224": "HG",
+ "38241": "XTC",
+ "38271": "ZC",
+ "38415": "YE",
+ "38426": "KH",
+ "38461": "YD",
+ "38463": "AE",
+ "38466": "PB",
+ "38477": "XJ",
+ "38518": "YT",
+ "38551": "WK",
+ "38585": "ZC",
+ "38704": "XS",
+ "38739": "LJ",
+ "38761": "GJ",
+ "38808": "SQ",
+ "39048": "JG",
+ "39049": "XJ",
+ "39052": "HG",
+ "39076": "CZ",
+ "39271": "XT",
+ "39534": "TD",
+ "39552": "TD",
+ "39584": "PB",
+ "39647": "SB",
+ "39730": "LG",
+ "39748": "TPB",
+ "40109": "ZQ",
+ "40479": "ND",
+ "40516": "HG",
+ "40536": "HG",
+ "40583": "QJ",
+ "40765": "YQ",
+ "40784": "QJ",
+ "40840": "YK",
+ "40863": "QJG"
+ };
+ }
+ /**
+ * 获取拼音首字母
+ * @param {String} str 输入的中文字符串
+ */
+ }, {
+ key: "getCamelChars",
+ value: function getCamelChars(str) {
+ if (typeof str != "string")
+ throw new Error(-1, "函数getCamelChars需要字符串类型参数!");
+ var chars = new Array();
+ for (var i = 0, len = str.length; i < len; i++) {
+ var ch = str.charAt(i);
+ chars.push(this._getChar(ch));
+ }
+ var result = this._getResult(chars);
+ this.options.charCase === 1 ? result = result.toLowerCase() : this.options.charCase === 2 ? result = result.toUpperCase() : {};
+ return result;
+ }
+ /**
+ * 获取拼音
+ * @param {String} str 输入的中文字符串
+ */
+ }, {
+ key: "getFullChars",
+ value: function getFullChars(str) {
+ var len = str.length;
+ var result = "";
+ var reg = new RegExp("[a-zA-Z0-9- ]");
+ for (var i = 0; i < len; i++) {
+ var ch = str.substr(i, 1);
+ var unicode = ch.charCodeAt(0);
+ if (unicode > 40869 || unicode < 19968) {
+ result += ch;
+ } else {
+ var name = this._getFullChar(ch);
+ if (name !== false) {
+ result += name;
+ }
+ }
+ }
+ this.options.charCase === 1 ? result = result.toLowerCase() : this.options.charCase === 2 ? result = result.toUpperCase() : {};
+ return result;
+ }
+ }, {
+ key: "_getFullChar",
+ value: function _getFullChar(ch) {
+ for (var key in this.full_dict) {
+ if (this.full_dict[key].indexOf(ch) != -1) {
+ return this._capitalize(key);
+ break;
+ }
+ }
+ return false;
+ }
+ /**
+ * 首字母大写
+ */
+ }, {
+ key: "_capitalize",
+ value: function _capitalize(str) {
+ if (str.length > 0) {
+ var first = str.substr(0, 1).toUpperCase();
+ var spare = str.substr(1, str.length);
+ return first + spare;
+ }
+ }
+ }, {
+ key: "_getChar",
+ value: function _getChar(ch) {
+ var unicode = ch.charCodeAt(0);
+ if (unicode > 40869 || unicode < 19968)
+ return ch;
+ if (!this.options.checkPolyphone)
+ return this.char_dict.charAt(unicode - 19968);
+ return this.polyphone[unicode] ? this.polyphone[unicode] : this.char_dict.charAt(unicode - 19968);
+ }
+ }, {
+ key: "_getResult",
+ value: function _getResult(chars) {
+ if (!this.options.checkPolyphone)
+ return chars.join("");
+ var result = [""];
+ for (var i = 0, len = chars.length; i < len; i++) {
+ var str = chars[i];
+ var strLen = str.length;
+ if (strLen == 1) {
+ for (var j = 0; j < result.length; j++) {
+ result[j] += str;
+ }
+ } else {
+ var swap1 = result.slice(0);
+ result = [];
+ for (var _j = 0; _j < strLen; _j++) {
+ var swap2 = swap1.slice(0);
+ for (var k = 0; k < swap2.length; k++) {
+ swap2[k] += str.charAt(_j);
+ }
+ result = result.concat(swap2);
+ }
+ }
+ }
+ return result;
+ }
+ }]);
+ return Pinyin2;
+ }();
+ module.exports = Pinyin;
+ }
+});
+
+// ../../../../../桌面/jiuyiUniapp/jiuyi2/node_modules/js-pinyin/index.js
+var require_js_pinyin = __commonJS({
+ "../../../../../桌面/jiuyiUniapp/jiuyi2/node_modules/js-pinyin/index.js"(exports, module) {
+ var pinyin = new (require_pinyin())({ charCase: 0 });
+ module.exports = pinyin;
+ }
+});
+export default require_js_pinyin();
+//# sourceMappingURL=js-pinyin.js.map
diff --git a/jiuyi2/unpackage/dist/cache/.vite/deps/js-pinyin.js.map b/jiuyi2/unpackage/dist/cache/.vite/deps/js-pinyin.js.map
new file mode 100644
index 00000000..83645d54
--- /dev/null
+++ b/jiuyi2/unpackage/dist/cache/.vite/deps/js-pinyin.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../../../../node_modules/js-pinyin/dist/pinyin.js", "../../../../../node_modules/js-pinyin/index.js"],
+ "sourcesContent": ["/**\r\n * @fileOverview 汉字拼音转换主题功能\r\n * @author waterchestnut 2017/3/13\r\n * @module\r\n */\r\n'use strict';\r\n\r\n/**\r\n * @typedef Option\r\n * @type Object\r\n * @property {Boolean} [checkPolyphone=false] 是否检查多音字\r\n * @property {Number} [charCase=0] 输出拼音的大小写模式,0-首字母大写;1-全小写;2-全大写\r\n */\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar Pinyin = function () {\r\n /**\r\n * 构造函数,设置参数并初始化数据\r\n * @param {Option} [options] 参数对象\r\n */\r\n function Pinyin(options) {\r\n _classCallCheck(this, Pinyin);\r\n\r\n this.setOptions(options);\r\n this.initialize();\r\n }\r\n\r\n /**\r\n * 设置参数\r\n * @param {Option} [options] 参数对象\r\n */\r\n\r\n\r\n _createClass(Pinyin, [{\r\n key: \"setOptions\",\r\n value: function setOptions(options) {\r\n options = options || {};\r\n this.options = Object.assign({ checkPolyphone: false, charCase: 0 }, options);\r\n }\r\n\r\n /**\r\n * 初始化数据\r\n */\r\n\r\n }, {\r\n key: \"initialize\",\r\n value: function initialize() {\r\n this.char_dict = \"YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYFZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY\";\r\n this.full_dict = {\r\n \"a\": \"\\u554A\\u963F\\u9515\",\r\n \"ai\": \"\\u57C3\\u6328\\u54CE\\u5509\\u54C0\\u7691\\u764C\\u853C\\u77EE\\u827E\\u788D\\u7231\\u9698\\u8BF6\\u6371\\u55F3\\u55CC\\u5AD2\\u7477\\u66A7\\u7839\\u953F\\u972D\",\r\n \"an\": \"\\u978D\\u6C28\\u5B89\\u4FFA\\u6309\\u6697\\u5CB8\\u80FA\\u6848\\u8C19\\u57EF\\u63DE\\u72B4\\u5EB5\\u6849\\u94F5\\u9E4C\\u9878\\u9EEF\",\r\n \"ang\": \"\\u80AE\\u6602\\u76CE\",\r\n \"ao\": \"\\u51F9\\u6556\\u71AC\\u7FF1\\u8884\\u50B2\\u5965\\u61CA\\u6FB3\\u5773\\u62D7\\u55F7\\u5662\\u5C99\\u5ED2\\u9068\\u5AAA\\u9A9C\\u8071\\u87AF\\u93CA\\u9CCC\\u93D6\",\r\n \"ba\": \"\\u82AD\\u634C\\u6252\\u53ED\\u5427\\u7B06\\u516B\\u75A4\\u5DF4\\u62D4\\u8DCB\\u9776\\u628A\\u8019\\u575D\\u9738\\u7F62\\u7238\\u8307\\u83DD\\u8406\\u636D\\u5C9C\\u705E\\u6777\\u94AF\\u7C91\\u9C85\\u9B43\",\r\n \"bai\": \"\\u767D\\u67CF\\u767E\\u6446\\u4F70\\u8D25\\u62DC\\u7A17\\u859C\\u63B0\\u97B4\",\r\n \"ban\": \"\\u6591\\u73ED\\u642C\\u6273\\u822C\\u9881\\u677F\\u7248\\u626E\\u62CC\\u4F34\\u74E3\\u534A\\u529E\\u7ECA\\u962A\\u5742\\u8C73\\u94A3\\u7622\\u764D\\u8228\",\r\n \"bang\": \"\\u90A6\\u5E2E\\u6886\\u699C\\u8180\\u7ED1\\u68D2\\u78C5\\u868C\\u9551\\u508D\\u8C24\\u84A1\\u8783\",\r\n \"bao\": \"\\u82DE\\u80DE\\u5305\\u8912\\u96F9\\u4FDD\\u5821\\u9971\\u5B9D\\u62B1\\u62A5\\u66B4\\u8C79\\u9C8D\\u7206\\u52F9\\u8446\\u5B80\\u5B62\\u7172\\u9E28\\u8913\\u8DB5\\u9F85\",\r\n \"bo\": \"\\u5265\\u8584\\u73BB\\u83E0\\u64AD\\u62E8\\u94B5\\u6CE2\\u535A\\u52C3\\u640F\\u94C2\\u7B94\\u4F2F\\u5E1B\\u8236\\u8116\\u818A\\u6E24\\u6CCA\\u9A73\\u4EB3\\u8543\\u5575\\u997D\\u6A97\\u64D8\\u7934\\u94B9\\u9E41\\u7C38\\u8DDB\",\r\n \"bei\": \"\\u676F\\u7891\\u60B2\\u5351\\u5317\\u8F88\\u80CC\\u8D1D\\u94A1\\u500D\\u72C8\\u5907\\u60EB\\u7119\\u88AB\\u5B5B\\u9642\\u90B6\\u57E4\\u84D3\\u5457\\u602B\\u6096\\u789A\\u9E4E\\u8919\\u943E\",\r\n \"ben\": \"\\u5954\\u82EF\\u672C\\u7B28\\u755A\\u574C\\u951B\",\r\n \"beng\": \"\\u5D29\\u7EF7\\u752D\\u6CF5\\u8E66\\u8FF8\\u552A\\u5623\\u750F\",\r\n \"bi\": \"\\u903C\\u9F3B\\u6BD4\\u9119\\u7B14\\u5F7C\\u78A7\\u84D6\\u853D\\u6BD5\\u6BD9\\u6BD6\\u5E01\\u5E87\\u75F9\\u95ED\\u655D\\u5F0A\\u5FC5\\u8F9F\\u58C1\\u81C2\\u907F\\u965B\\u5315\\u4EF3\\u4FFE\\u8298\\u835C\\u8378\\u5421\\u54D4\\u72F4\\u5EB3\\u610E\\u6ED7\\u6FDE\\u5F3C\\u59A3\\u5A62\\u5B16\\u74A7\\u8D32\\u7540\\u94CB\\u79D5\\u88E8\\u7B5A\\u7B85\\u7BE6\\u822D\\u895E\\u8DF8\\u9AC0\",\r\n \"bian\": \"\\u97AD\\u8FB9\\u7F16\\u8D2C\\u6241\\u4FBF\\u53D8\\u535E\\u8FA8\\u8FA9\\u8FAB\\u904D\\u533E\\u5F01\\u82C4\\u5FED\\u6C74\\u7F0F\\u7178\\u782D\\u78A5\\u7A39\\u7A86\\u8759\\u7B3E\\u9CCA\",\r\n \"biao\": \"\\u6807\\u5F6A\\u8198\\u8868\\u5A4A\\u9AA0\\u98D1\\u98D9\\u98DA\\u706C\\u9556\\u9573\\u762D\\u88F1\\u9CD4\",\r\n \"bie\": \"\\u9CD6\\u618B\\u522B\\u762A\\u8E69\\u9CD8\",\r\n \"bin\": \"\\u5F6C\\u658C\\u6FD2\\u6EE8\\u5BBE\\u6448\\u50A7\\u6D5C\\u7F24\\u73A2\\u6BA1\\u8191\\u9554\\u9ACC\\u9B13\",\r\n \"bing\": \"\\u5175\\u51B0\\u67C4\\u4E19\\u79C9\\u997C\\u70B3\\u75C5\\u5E76\\u7980\\u90B4\\u6452\\u7EE0\\u678B\\u69DF\\u71F9\",\r\n \"bu\": \"\\u6355\\u535C\\u54FA\\u8865\\u57E0\\u4E0D\\u5E03\\u6B65\\u7C3F\\u90E8\\u6016\\u62CA\\u535F\\u900B\\u74FF\\u6661\\u949A\\u91AD\",\r\n \"ca\": \"\\u64E6\\u5693\\u7924\",\r\n \"cai\": \"\\u731C\\u88C1\\u6750\\u624D\\u8D22\\u776C\\u8E29\\u91C7\\u5F69\\u83DC\\u8521\",\r\n \"can\": \"\\u9910\\u53C2\\u8695\\u6B8B\\u60ED\\u60E8\\u707F\\u9A96\\u74A8\\u7CB2\\u9EEA\",\r\n \"cang\": \"\\u82CD\\u8231\\u4ED3\\u6CA7\\u85CF\\u4F27\",\r\n \"cao\": \"\\u64CD\\u7CD9\\u69FD\\u66F9\\u8349\\u8279\\u5608\\u6F15\\u87AC\\u825A\",\r\n \"ce\": \"\\u5395\\u7B56\\u4FA7\\u518C\\u6D4B\\u5202\\u5E3B\\u607B\",\r\n \"ceng\": \"\\u5C42\\u8E6D\\u564C\",\r\n \"cha\": \"\\u63D2\\u53C9\\u832C\\u8336\\u67E5\\u78B4\\u643D\\u5BDF\\u5C94\\u5DEE\\u8BE7\\u7339\\u9987\\u6C4A\\u59F9\\u6748\\u6942\\u69CE\\u6AAB\\u9497\\u9538\\u9572\\u8869\",\r\n \"chai\": \"\\u62C6\\u67F4\\u8C7A\\u4FAA\\u8308\\u7625\\u867F\\u9F87\",\r\n \"chan\": \"\\u6400\\u63BA\\u8749\\u998B\\u8C17\\u7F20\\u94F2\\u4EA7\\u9610\\u98A4\\u5181\\u8C04\\u8C36\\u8487\\u5EDB\\u5FCF\\u6F7A\\u6FB6\\u5B71\\u7FBC\\u5A75\\u5B17\\u9AA3\\u89C7\\u7985\\u9561\\u88E3\\u87FE\\u8E94\",\r\n \"chang\": \"\\u660C\\u7316\\u573A\\u5C1D\\u5E38\\u957F\\u507F\\u80A0\\u5382\\u655E\\u7545\\u5531\\u5021\\u4F25\\u9B2F\\u82CC\\u83D6\\u5F9C\\u6005\\u60DD\\u960A\\u5A3C\\u5AE6\\u6636\\u6C05\\u9CB3\",\r\n \"chao\": \"\\u8D85\\u6284\\u949E\\u671D\\u5632\\u6F6E\\u5DE2\\u5435\\u7092\\u600A\\u7EC9\\u6641\\u8016\",\r\n \"che\": \"\\u8F66\\u626F\\u64A4\\u63A3\\u5F7B\\u6F88\\u577C\\u5C6E\\u7817\",\r\n \"chen\": \"\\u90F4\\u81E3\\u8FB0\\u5C18\\u6668\\u5FF1\\u6C89\\u9648\\u8D81\\u886C\\u79F0\\u8C0C\\u62BB\\u55D4\\u5BB8\\u741B\\u6987\\u809C\\u80C2\\u789C\\u9F80\",\r\n \"cheng\": \"\\u6491\\u57CE\\u6A59\\u6210\\u5448\\u4E58\\u7A0B\\u60E9\\u6F84\\u8BDA\\u627F\\u901E\\u9A8B\\u79E4\\u57D5\\u5D4A\\u5FB5\\u6D48\\u67A8\\u67FD\\u6A18\\u665F\\u584D\\u77A0\\u94D6\\u88CE\\u86CF\\u9172\",\r\n \"chi\": \"\\u5403\\u75F4\\u6301\\u5319\\u6C60\\u8FDF\\u5F1B\\u9A70\\u803B\\u9F7F\\u4F88\\u5C3A\\u8D64\\u7FC5\\u65A5\\u70BD\\u50BA\\u5880\\u82AA\\u830C\\u640B\\u53F1\\u54E7\\u557B\\u55E4\\u5F73\\u996C\\u6CB2\\u5AB8\\u6555\\u80DD\\u7719\\u7735\\u9E31\\u761B\\u892B\\u86A9\\u87AD\\u7B1E\\u7BEA\\u8C49\\u8E05\\u8E1F\\u9B51\",\r\n \"chong\": \"\\u5145\\u51B2\\u866B\\u5D07\\u5BA0\\u833A\\u5FE1\\u61A7\\u94F3\\u825F\",\r\n \"chou\": \"\\u62BD\\u916C\\u7574\\u8E0C\\u7A20\\u6101\\u7B79\\u4EC7\\u7EF8\\u7785\\u4E11\\u4FE6\\u5733\\u5E31\\u60C6\\u6EB4\\u59AF\\u7633\\u96E0\\u9C8B\",\r\n \"chu\": \"\\u81ED\\u521D\\u51FA\\u6A71\\u53A8\\u8E87\\u9504\\u96CF\\u6EC1\\u9664\\u695A\\u7840\\u50A8\\u77D7\\u6410\\u89E6\\u5904\\u4E8D\\u520D\\u61B7\\u7ECC\\u6775\\u696E\\u6A17\\u870D\\u8E70\\u9EDC\",\r\n \"chuan\": \"\\u63E3\\u5DDD\\u7A7F\\u693D\\u4F20\\u8239\\u5598\\u4E32\\u63BE\\u821B\\u60F4\\u9044\\u5DDB\\u6C1A\\u948F\\u9569\\u8221\",\r\n \"chuang\": \"\\u75AE\\u7A97\\u5E62\\u5E8A\\u95EF\\u521B\\u6006\",\r\n \"chui\": \"\\u5439\\u708A\\u6376\\u9524\\u5782\\u9672\\u68F0\\u69CC\",\r\n \"chun\": \"\\u6625\\u693F\\u9187\\u5507\\u6DF3\\u7EAF\\u8822\\u4FC3\\u83BC\\u6C8C\\u80AB\\u6710\\u9E51\\u877D\",\r\n \"chuo\": \"\\u6233\\u7EF0\\u851F\\u8FB6\\u8F8D\\u955E\\u8E14\\u9F8A\",\r\n \"ci\": \"\\u75B5\\u8328\\u78C1\\u96CC\\u8F9E\\u6148\\u74F7\\u8BCD\\u6B64\\u523A\\u8D50\\u6B21\\u8360\\u5472\\u5D6F\\u9E5A\\u8785\\u7CCD\\u8D91\",\r\n \"cong\": \"\\u806A\\u8471\\u56F1\\u5306\\u4ECE\\u4E1B\\u506C\\u82C1\\u6DD9\\u9AA2\\u742E\\u7481\\u679E\",\r\n \"cou\": \"\\u85AE\\u6971\\u8F8F\\u8160\",\r\n \"cu\": \"\\u51D1\\u7C97\\u918B\\u7C07\\u731D\\u6B82\\u8E59\",\r\n \"cuan\": \"\\u8E7F\\u7BE1\\u7A9C\\u6C46\\u64BA\\u7228\",\r\n \"cui\": \"\\u6467\\u5D14\\u50AC\\u8106\\u7601\\u7CB9\\u6DEC\\u7FE0\\u8403\\u60B4\\u7480\\u69B1\\u96B9\",\r\n \"cun\": \"\\u6751\\u5B58\\u5BF8\\u78CB\\u5FD6\\u76B4\",\r\n \"cuo\": \"\\u64AE\\u6413\\u63AA\\u632B\\u9519\\u539D\\u811E\\u9509\\u77EC\\u75E4\\u9E7E\\u8E49\\u8E9C\",\r\n \"chuai\": \"\\u562C\\u81AA\\u8E39\",\r\n \"cen\": \"\\u5C91\\u6D94\",\r\n \"da\": \"\\u642D\\u8FBE\\u7B54\\u7629\\u6253\\u5927\\u8037\\u54D2\\u55D2\\u601B\\u59B2\\u75B8\\u8921\\u7B2A\\u977C\\u9791\",\r\n \"dai\": \"\\u5446\\u6B79\\u50A3\\u6234\\u5E26\\u6B86\\u4EE3\\u8D37\\u888B\\u5F85\\u902E\\u6020\\u57ED\\u7519\\u5454\\u5CB1\\u8FE8\\u902F\\u9A80\\u7ED0\\u73B3\\u9EDB\",\r\n \"dan\": \"\\u803D\\u62C5\\u4E39\\u5355\\u90F8\\u63B8\\u80C6\\u65E6\\u6C2E\\u4F46\\u60EE\\u6DE1\\u8BDE\\u5F39\\u86CB\\u4EBB\\u510B\\u5369\\u840F\\u5556\\u6FB9\\u6A90\\u6B9A\\u8D55\\u7708\\u7605\\u8043\\u7BAA\",\r\n \"dang\": \"\\u5F53\\u6321\\u515A\\u8361\\u6863\\u8C20\\u51FC\\u83EA\\u5B95\\u7800\\u94DB\\u88C6\",\r\n \"dao\": \"\\u5200\\u6363\\u8E48\\u5012\\u5C9B\\u7977\\u5BFC\\u5230\\u7A3B\\u60BC\\u9053\\u76D7\\u53E8\\u5541\\u5FC9\\u6D2E\\u6C18\\u7118\\u5FD1\\u7E9B\",\r\n \"de\": \"\\u5FB7\\u5F97\\u7684\\u951D\",\r\n \"deng\": \"\\u8E6C\\u706F\\u767B\\u7B49\\u77AA\\u51F3\\u9093\\u5654\\u5D9D\\u6225\\u78F4\\u956B\\u7C26\",\r\n \"di\": \"\\u5824\\u4F4E\\u6EF4\\u8FEA\\u654C\\u7B1B\\u72C4\\u6DA4\\u7FDF\\u5AE1\\u62B5\\u5E95\\u5730\\u8482\\u7B2C\\u5E1D\\u5F1F\\u9012\\u7F14\\u6C10\\u7C74\\u8BCB\\u8C1B\\u90B8\\u577B\\u839C\\u837B\\u5600\\u5A23\\u67E2\\u68E3\\u89CC\\u7825\\u78B2\\u7747\\u955D\\u7F9D\\u9AB6\",\r\n \"dia\": \"\\u55F2\",\r\n \"dian\": \"\\u98A0\\u6382\\u6EC7\\u7898\\u70B9\\u5178\\u975B\\u57AB\\u7535\\u4F43\\u7538\\u5E97\\u60E6\\u5960\\u6DC0\\u6BBF\\u4E36\\u963D\\u576B\\u57DD\\u5DC5\\u73B7\\u765C\\u766B\\u7C1F\\u8E2E\",\r\n \"diao\": \"\\u7889\\u53FC\\u96D5\\u51CB\\u5201\\u6389\\u540A\\u9493\\u8C03\\u8F7A\\u94DE\\u8729\\u7C9C\\u8C82\",\r\n \"die\": \"\\u8DCC\\u7239\\u789F\\u8776\\u8FED\\u8C0D\\u53E0\\u4F5A\\u57A4\\u581E\\u63F2\\u558B\\u6E2B\\u8F76\\u7252\\u74DE\\u8936\\u800B\\u8E40\\u9CBD\\u9CCE\",\r\n \"ding\": \"\\u4E01\\u76EF\\u53EE\\u9489\\u9876\\u9F0E\\u952D\\u5B9A\\u8BA2\\u4E22\\u4EC3\\u5576\\u738E\\u815A\\u7887\\u753A\\u94E4\\u7594\\u8035\\u914A\",\r\n \"dong\": \"\\u4E1C\\u51AC\\u8463\\u61C2\\u52A8\\u680B\\u4F97\\u606B\\u51BB\\u6D1E\\u578C\\u549A\\u5CBD\\u5CD2\\u5902\\u6C21\\u80E8\\u80F4\\u7850\\u9E2B\",\r\n \"dou\": \"\\u515C\\u6296\\u6597\\u9661\\u8C46\\u9017\\u75D8\\u8538\\u94AD\\u7AA6\\u7AAC\\u86AA\\u7BFC\\u9161\",\r\n \"du\": \"\\u90FD\\u7763\\u6BD2\\u728A\\u72EC\\u8BFB\\u5835\\u7779\\u8D4C\\u675C\\u9540\\u809A\\u5EA6\\u6E21\\u5992\\u828F\\u561F\\u6E0E\\u691F\\u6A50\\u724D\\u8839\\u7B03\\u9AD1\\u9EE9\",\r\n \"duan\": \"\\u7AEF\\u77ED\\u953B\\u6BB5\\u65AD\\u7F0E\\u5F56\\u6934\\u7145\\u7C16\",\r\n \"dui\": \"\\u5806\\u5151\\u961F\\u5BF9\\u603C\\u619D\\u7893\",\r\n \"dun\": \"\\u58A9\\u5428\\u8E72\\u6566\\u987F\\u56E4\\u949D\\u76FE\\u9041\\u7096\\u7818\\u7905\\u76F9\\u9566\\u8DB8\",\r\n \"duo\": \"\\u6387\\u54C6\\u591A\\u593A\\u579B\\u8EB2\\u6735\\u8DFA\\u8235\\u5241\\u60F0\\u5815\\u5484\\u54DA\\u7F0D\\u67C1\\u94CE\\u88F0\\u8E31\",\r\n \"e\": \"\\u86FE\\u5CE8\\u9E45\\u4FC4\\u989D\\u8BB9\\u5A25\\u6076\\u5384\\u627C\\u904F\\u9102\\u997F\\u5669\\u8C14\\u57A9\\u57AD\\u82CA\\u83AA\\u843C\\u5443\\u6115\\u5C59\\u5A40\\u8F6D\\u66F7\\u816D\\u786A\\u9507\\u9537\\u9E57\\u989A\\u9CC4\",\r\n \"en\": \"\\u6069\\u84BD\\u6441\\u5514\\u55EF\",\r\n \"er\": \"\\u800C\\u513F\\u8033\\u5C14\\u9975\\u6D31\\u4E8C\\u8D30\\u8FE9\\u73E5\\u94D2\\u9E38\\u9C95\",\r\n \"fa\": \"\\u53D1\\u7F5A\\u7B4F\\u4F10\\u4E4F\\u9600\\u6CD5\\u73D0\\u57A1\\u781D\",\r\n \"fan\": \"\\u85E9\\u5E06\\u756A\\u7FFB\\u6A0A\\u77FE\\u9492\\u7E41\\u51E1\\u70E6\\u53CD\\u8FD4\\u8303\\u8D29\\u72AF\\u996D\\u6CDB\\u8629\\u5E61\\u72AD\\u68B5\\u6535\\u71D4\\u7548\\u8E6F\",\r\n \"fang\": \"\\u574A\\u82B3\\u65B9\\u80AA\\u623F\\u9632\\u59A8\\u4EFF\\u8BBF\\u7EBA\\u653E\\u531A\\u90A1\\u5F77\\u94AB\\u822B\\u9C82\",\r\n \"fei\": \"\\u83F2\\u975E\\u5561\\u98DE\\u80A5\\u532A\\u8BFD\\u5420\\u80BA\\u5E9F\\u6CB8\\u8D39\\u82BE\\u72D2\\u60B1\\u6DDD\\u5983\\u7ECB\\u7EEF\\u69A7\\u8153\\u6590\\u6249\\u7953\\u7829\\u9544\\u75F1\\u871A\\u7BDA\\u7FE1\\u970F\\u9CB1\",\r\n \"fen\": \"\\u82AC\\u915A\\u5429\\u6C1B\\u5206\\u7EB7\\u575F\\u711A\\u6C7E\\u7C89\\u594B\\u4EFD\\u5FFF\\u6124\\u7CAA\\u507E\\u7035\\u68FC\\u610D\\u9CBC\\u9F22\",\r\n \"feng\": \"\\u4E30\\u5C01\\u67AB\\u8702\\u5CF0\\u950B\\u98CE\\u75AF\\u70FD\\u9022\\u51AF\\u7F1D\\u8BBD\\u5949\\u51E4\\u4FF8\\u9146\\u8451\\u6CA3\\u781C\",\r\n \"fo\": \"\\u4F5B\\u4ECF\\u5772\\u68BB\\u4EF8\",\r\n \"fou\": \"\\u7F36\",\r\n \"fu\": \"\\u4F5B\\u5426\\u592B\\u6577\\u80A4\\u5B75\\u6276\\u62C2\\u8F90\\u5E45\\u6C1F\\u7B26\\u4F0F\\u4FD8\\u670D\\u6D6E\\u6DAA\\u798F\\u88B1\\u5F17\\u752B\\u629A\\u8F85\\u4FEF\\u91DC\\u65A7\\u812F\\u8151\\u5E9C\\u8150\\u8D74\\u526F\\u8986\\u8D4B\\u590D\\u5085\\u4ED8\\u961C\\u7236\\u8179\\u8D1F\\u5BCC\\u8BA3\\u9644\\u5987\\u7F1A\\u5490\\u5310\\u51EB\\u90DB\\u8299\\u82FB\\u832F\\u83A9\\u83D4\\u544B\\u5E5E\\u6ECF\\u8274\\u5B5A\\u9A78\\u7EC2\\u6874\\u8D59\\u9EFB\\u9EFC\\u7F58\\u7A03\\u99A5\\u864D\\u86A8\\u8709\\u8760\\u876E\\u9EB8\\u8DBA\\u8DD7\\u9CC6\",\r\n \"ga\": \"\\u5676\\u560E\\u86E4\\u5C2C\\u5477\\u5C15\\u5C1C\\u65EE\\u9486\",\r\n \"gai\": \"\\u8BE5\\u6539\\u6982\\u9499\\u76D6\\u6E89\\u4E10\\u9654\\u5793\\u6224\\u8D45\\u80F2\",\r\n \"gan\": \"\\u5E72\\u7518\\u6746\\u67D1\\u7AFF\\u809D\\u8D76\\u611F\\u79C6\\u6562\\u8D63\\u5769\\u82F7\\u5C34\\u64C0\\u6CD4\\u6DE6\\u6F89\\u7EC0\\u6A44\\u65F0\\u77F8\\u75B3\\u9150\",\r\n \"gang\": \"\\u5188\\u521A\\u94A2\\u7F38\\u809B\\u7EB2\\u5C97\\u6E2F\\u6206\\u7F61\\u9883\\u7B7B\",\r\n \"gong\": \"\\u6760\\u5DE5\\u653B\\u529F\\u606D\\u9F9A\\u4F9B\\u8EAC\\u516C\\u5BAB\\u5F13\\u5DE9\\u6C5E\\u62F1\\u8D21\\u5171\\u857B\\u5EFE\\u54A3\\u73D9\\u80B1\\u86A3\\u86E9\\u89E5\",\r\n \"gao\": \"\\u7BD9\\u768B\\u9AD8\\u818F\\u7F94\\u7CD5\\u641E\\u9550\\u7A3F\\u544A\\u777E\\u8BF0\\u90DC\\u84BF\\u85C1\\u7F1F\\u69D4\\u69C1\\u6772\\u9506\",\r\n \"ge\": \"\\u54E5\\u6B4C\\u6401\\u6208\\u9E3D\\u80F3\\u7599\\u5272\\u9769\\u845B\\u683C\\u9601\\u9694\\u94EC\\u4E2A\\u5404\\u9B32\\u4EE1\\u54FF\\u5865\\u55DD\\u7EA5\\u643F\\u8188\\u784C\\u94EA\\u9549\\u88BC\\u988C\\u867C\\u8238\\u9ABC\\u9AC2\",\r\n \"gei\": \"\\u7ED9\",\r\n \"gen\": \"\\u6839\\u8DDF\\u4E98\\u831B\\u54CF\\u826E\",\r\n \"geng\": \"\\u8015\\u66F4\\u5E9A\\u7FB9\\u57C2\\u803F\\u6897\\u54FD\\u8D53\\u9CA0\",\r\n \"gou\": \"\\u94A9\\u52FE\\u6C9F\\u82DF\\u72D7\\u57A2\\u6784\\u8D2D\\u591F\\u4F5D\\u8BDF\\u5CA3\\u9058\\u5ABE\\u7F11\\u89CF\\u5F40\\u9E32\\u7B31\\u7BDD\\u97B2\",\r\n \"gu\": \"\\u8F9C\\u83C7\\u5495\\u7B8D\\u4F30\\u6CBD\\u5B64\\u59D1\\u9F13\\u53E4\\u86CA\\u9AA8\\u8C37\\u80A1\\u6545\\u987E\\u56FA\\u96C7\\u560F\\u8BC2\\u83F0\\u54CC\\u5D2E\\u6C69\\u688F\\u8F71\\u726F\\u727F\\u80CD\\u81CC\\u6BC2\\u77BD\\u7F5F\\u94B4\\u9522\\u74E0\\u9E2A\\u9E44\\u75FC\\u86C4\\u9164\\u89DA\\u9CB4\\u9AB0\\u9E58\",\r\n \"gua\": \"\\u522E\\u74DC\\u5250\\u5BE1\\u6302\\u8902\\u5366\\u8BD6\\u5471\\u681D\\u9E39\",\r\n \"guai\": \"\\u4E56\\u62D0\\u602A\\u54D9\",\r\n \"guan\": \"\\u68FA\\u5173\\u5B98\\u51A0\\u89C2\\u7BA1\\u9986\\u7F50\\u60EF\\u704C\\u8D2F\\u500C\\u839E\\u63BC\\u6DAB\\u76E5\\u9E73\\u9CCF\",\r\n \"guang\": \"\\u5149\\u5E7F\\u901B\\u72B7\\u6844\\u80F1\\u7592\",\r\n \"gui\": \"\\u7470\\u89C4\\u572D\\u7845\\u5F52\\u9F9F\\u95FA\\u8F68\\u9B3C\\u8BE1\\u7678\\u6842\\u67DC\\u8DEA\\u8D35\\u523D\\u5326\\u523F\\u5E8B\\u5B84\\u59AB\\u6867\\u7085\\u6677\\u7688\\u7C0B\\u9C91\\u9CDC\",\r\n \"gun\": \"\\u8F8A\\u6EDA\\u68CD\\u4E28\\u886E\\u7EF2\\u78D9\\u9CA7\",\r\n \"guo\": \"\\u9505\\u90ED\\u56FD\\u679C\\u88F9\\u8FC7\\u9998\\u8803\\u57DA\\u63B4\\u5459\\u56D7\\u5E3C\\u5D1E\\u7313\\u6901\\u8662\\u951E\\u8052\\u872E\\u873E\\u8748\",\r\n \"ha\": \"\\u54C8\",\r\n \"hai\": \"\\u9AB8\\u5B69\\u6D77\\u6C26\\u4EA5\\u5BB3\\u9A87\\u54B4\\u55E8\\u988F\\u91A2\",\r\n \"han\": \"\\u9163\\u61A8\\u90AF\\u97E9\\u542B\\u6DB5\\u5BD2\\u51FD\\u558A\\u7F55\\u7FF0\\u64BC\\u634D\\u65F1\\u61BE\\u608D\\u710A\\u6C57\\u6C49\\u9097\\u83E1\\u6496\\u961A\\u701A\\u6657\\u7113\\u9894\\u86B6\\u9F3E\",\r\n \"hen\": \"\\u592F\\u75D5\\u5F88\\u72E0\\u6068\",\r\n \"hang\": \"\\u676D\\u822A\\u6C86\\u7ED7\\u73E9\\u6841\",\r\n \"hao\": \"\\u58D5\\u568E\\u8C6A\\u6BEB\\u90DD\\u597D\\u8017\\u53F7\\u6D69\\u8585\\u55E5\\u5686\\u6FE0\\u704F\\u660A\\u7693\\u98A2\\u869D\",\r\n \"he\": \"\\u5475\\u559D\\u8377\\u83CF\\u6838\\u79BE\\u548C\\u4F55\\u5408\\u76D2\\u8C89\\u9602\\u6CB3\\u6DB8\\u8D6B\\u8910\\u9E64\\u8D3A\\u8BC3\\u52BE\\u58D1\\u85FF\\u55D1\\u55EC\\u9616\\u76CD\\u86B5\\u7FEE\",\r\n \"hei\": \"\\u563F\\u9ED1\",\r\n \"heng\": \"\\u54FC\\u4EA8\\u6A2A\\u8861\\u6052\\u8A07\\u8605\",\r\n \"hong\": \"\\u8F70\\u54C4\\u70D8\\u8679\\u9E3F\\u6D2A\\u5B8F\\u5F18\\u7EA2\\u9EC9\\u8BA7\\u836D\\u85A8\\u95F3\\u6CD3\",\r\n \"hou\": \"\\u5589\\u4FAF\\u7334\\u543C\\u539A\\u5019\\u540E\\u5820\\u5F8C\\u9005\\u760A\\u7BCC\\u7CC7\\u9C8E\\u9ABA\",\r\n \"hu\": \"\\u547C\\u4E4E\\u5FFD\\u745A\\u58F6\\u846B\\u80E1\\u8774\\u72D0\\u7CCA\\u6E56\\u5F27\\u864E\\u552C\\u62A4\\u4E92\\u6CAA\\u6237\\u51B1\\u553F\\u56EB\\u5CB5\\u7322\\u6019\\u60DA\\u6D52\\u6EF9\\u7425\\u69F2\\u8F77\\u89F3\\u70C0\\u7173\\u623D\\u6248\\u795C\\u9E55\\u9E71\\u7B0F\\u9190\\u659B\",\r\n \"hua\": \"\\u82B1\\u54D7\\u534E\\u733E\\u6ED1\\u753B\\u5212\\u5316\\u8BDD\\u5290\\u6D4D\\u9A85\\u6866\\u94E7\\u7A1E\",\r\n \"huai\": \"\\u69D0\\u5F8A\\u6000\\u6DEE\\u574F\\u8FD8\\u8E1D\",\r\n \"huan\": \"\\u6B22\\u73AF\\u6853\\u7F13\\u6362\\u60A3\\u5524\\u75EA\\u8C62\\u7115\\u6DA3\\u5BA6\\u5E7B\\u90C7\\u5942\\u57B8\\u64D0\\u571C\\u6D39\\u6D63\\u6F36\\u5BF0\\u902D\\u7F33\\u953E\\u9CA9\\u9B1F\",\r\n \"huang\": \"\\u8352\\u614C\\u9EC4\\u78FA\\u8757\\u7C27\\u7687\\u51F0\\u60F6\\u714C\\u6643\\u5E4C\\u604D\\u8C0E\\u968D\\u5FA8\\u6E5F\\u6F62\\u9051\\u749C\\u8093\\u7640\\u87E5\\u7BC1\\u9CC7\",\r\n \"hui\": \"\\u7070\\u6325\\u8F89\\u5FBD\\u6062\\u86D4\\u56DE\\u6BC1\\u6094\\u6167\\u5349\\u60E0\\u6666\\u8D3F\\u79FD\\u4F1A\\u70E9\\u6C47\\u8BB3\\u8BF2\\u7ED8\\u8BD9\\u8334\\u835F\\u8559\\u54D5\\u5599\\u96B3\\u6D04\\u5F57\\u7F0B\\u73F2\\u6656\\u605A\\u867A\\u87EA\\u9EBE\",\r\n \"hun\": \"\\u8364\\u660F\\u5A5A\\u9B42\\u6D51\\u6DF7\\u8BE8\\u9984\\u960D\\u6EB7\\u7F17\",\r\n \"huo\": \"\\u8C41\\u6D3B\\u4F19\\u706B\\u83B7\\u6216\\u60D1\\u970D\\u8D27\\u7978\\u6509\\u56AF\\u5925\\u94AC\\u952A\\u956C\\u8020\\u8816\",\r\n \"ji\": \"\\u51FB\\u573E\\u57FA\\u673A\\u7578\\u7A3D\\u79EF\\u7B95\\u808C\\u9965\\u8FF9\\u6FC0\\u8BA5\\u9E21\\u59EC\\u7EE9\\u7F09\\u5409\\u6781\\u68D8\\u8F91\\u7C4D\\u96C6\\u53CA\\u6025\\u75BE\\u6C72\\u5373\\u5AC9\\u7EA7\\u6324\\u51E0\\u810A\\u5DF1\\u84DF\\u6280\\u5180\\u5B63\\u4F0E\\u796D\\u5242\\u60B8\\u6D4E\\u5BC4\\u5BC2\\u8BA1\\u8BB0\\u65E2\\u5FCC\\u9645\\u5993\\u7EE7\\u7EAA\\u5C45\\u4E0C\\u4E69\\u525E\\u4F76\\u4F74\\u8114\\u58BC\\u82A8\\u82B0\\u8401\\u84BA\\u857A\\u638E\\u53FD\\u54AD\\u54DC\\u5527\\u5C8C\\u5D74\\u6D0E\\u5F50\\u5C50\\u9AA5\\u757F\\u7391\\u696B\\u6B9B\\u621F\\u6222\\u8D4D\\u89CA\\u7284\\u9F51\\u77F6\\u7F81\\u5D47\\u7A37\\u7620\\u7635\\u866E\\u7B08\\u7B04\\u66A8\\u8DFB\\u8DFD\\u9701\\u9C9A\\u9CAB\\u9AFB\\u9E82\",\r\n \"jia\": \"\\u5609\\u67B7\\u5939\\u4F73\\u5BB6\\u52A0\\u835A\\u988A\\u8D3E\\u7532\\u94BE\\u5047\\u7A3C\\u4EF7\\u67B6\\u9A7E\\u5AC1\\u4F3D\\u90CF\\u62EE\\u5CAC\\u6D43\\u8FE6\\u73C8\\u621B\\u80DB\\u605D\\u94D7\\u9553\\u75C2\\u86F1\\u7B33\\u8888\\u8DCF\",\r\n \"jian\": \"\\u6B7C\\u76D1\\u575A\\u5C16\\u7B3A\\u95F4\\u714E\\u517C\\u80A9\\u8270\\u5978\\u7F04\\u8327\\u68C0\\u67EC\\u78B1\\u7877\\u62E3\\u6361\\u7B80\\u4FED\\u526A\\u51CF\\u8350\\u69DB\\u9274\\u8DF5\\u8D31\\u89C1\\u952E\\u7BAD\\u4EF6\\u5065\\u8230\\u5251\\u996F\\u6E10\\u6E85\\u6DA7\\u5EFA\\u50ED\\u8C0F\\u8C2B\\u83C5\\u84B9\\u641B\\u56DD\\u6E54\\u8E47\\u8B07\\u7F23\\u67A7\\u67D9\\u6957\\u620B\\u622C\\u726E\\u728D\\u6BFD\\u8171\\u7751\\u950F\\u9E63\\u88E5\\u7B15\\u7BB4\\u7FE6\\u8DBC\\u8E3A\\u9CA3\\u97AF\",\r\n \"jiang\": \"\\u50F5\\u59DC\\u5C06\\u6D46\\u6C5F\\u7586\\u848B\\u6868\\u5956\\u8BB2\\u5320\\u9171\\u964D\\u8333\\u6D1A\\u7EDB\\u7F30\\u729F\\u7913\\u8029\\u7CE8\\u8C47\",\r\n \"jiao\": \"\\u8549\\u6912\\u7901\\u7126\\u80F6\\u4EA4\\u90CA\\u6D47\\u9A84\\u5A07\\u56BC\\u6405\\u94F0\\u77EB\\u4FA5\\u811A\\u72E1\\u89D2\\u997A\\u7F34\\u7EDE\\u527F\\u6559\\u9175\\u8F7F\\u8F83\\u53EB\\u4F7C\\u50EC\\u832D\\u6322\\u564D\\u5CE4\\u5FBC\\u59E3\\u7E9F\\u656B\\u768E\\u9E6A\\u86DF\\u91AE\\u8DE4\\u9C9B\",\r\n \"jie\": \"\\u7A96\\u63ED\\u63A5\\u7686\\u79F8\\u8857\\u9636\\u622A\\u52AB\\u8282\\u6854\\u6770\\u6377\\u776B\\u7AED\\u6D01\\u7ED3\\u89E3\\u59D0\\u6212\\u85C9\\u82A5\\u754C\\u501F\\u4ECB\\u75A5\\u8BEB\\u5C4A\\u5048\\u8BA6\\u8BD8\\u5588\\u55DF\\u736C\\u5A55\\u5B51\\u6840\\u7352\\u78A3\\u9534\\u7596\\u88B7\\u9889\\u86A7\\u7FAF\\u9C92\\u9AB1\\u9AEB\",\r\n \"jin\": \"\\u5DFE\\u7B4B\\u65A4\\u91D1\\u4ECA\\u6D25\\u895F\\u7D27\\u9526\\u4EC5\\u8C28\\u8FDB\\u9773\\u664B\\u7981\\u8FD1\\u70EC\\u6D78\\u5C3D\\u537A\\u8369\\u5807\\u5664\\u9991\\u5ED1\\u5997\\u7F19\\u747E\\u69FF\\u8D46\\u89D0\\u9485\\u9513\\u887F\\u77DC\",\r\n \"jing\": \"\\u52B2\\u8346\\u5162\\u830E\\u775B\\u6676\\u9CB8\\u4EAC\\u60CA\\u7CBE\\u7CB3\\u7ECF\\u4E95\\u8B66\\u666F\\u9888\\u9759\\u5883\\u656C\\u955C\\u5F84\\u75C9\\u9756\\u7ADF\\u7ADE\\u51C0\\u522D\\u5106\\u9631\\u83C1\\u734D\\u61AC\\u6CFE\\u8FF3\\u5F2A\\u5A67\\u80BC\\u80EB\\u8148\\u65CC\",\r\n \"jiong\": \"\\u70AF\\u7A98\\u5182\\u8FE5\\u6243\",\r\n \"jiu\": \"\\u63EA\\u7A76\\u7EA0\\u7396\\u97ED\\u4E45\\u7078\\u4E5D\\u9152\\u53A9\\u6551\\u65E7\\u81FC\\u8205\\u548E\\u5C31\\u759A\\u50E6\\u557E\\u9604\\u67E9\\u6855\\u9E6B\\u8D73\\u9B0F\",\r\n \"ju\": \"\\u97A0\\u62D8\\u72D9\\u75BD\\u9A79\\u83CA\\u5C40\\u5480\\u77E9\\u4E3E\\u6CAE\\u805A\\u62D2\\u636E\\u5DE8\\u5177\\u8DDD\\u8E1E\\u952F\\u4FF1\\u53E5\\u60E7\\u70AC\\u5267\\u5028\\u8BB5\\u82E3\\u82F4\\u8392\\u63AC\\u907D\\u5C66\\u741A\\u67B8\\u6910\\u6998\\u6989\\u6A58\\u728B\\u98D3\\u949C\\u9514\\u7AAD\\u88FE\\u8D84\\u91B5\\u8E3D\\u9F83\\u96CE\\u97AB\",\r\n \"juan\": \"\\u6350\\u9E43\\u5A1F\\u5026\\u7737\\u5377\\u7EE2\\u9104\\u72F7\\u6D93\\u684A\\u8832\\u9529\\u954C\\u96BD\",\r\n \"jue\": \"\\u6485\\u652B\\u6289\\u6398\\u5014\\u7235\\u89C9\\u51B3\\u8BC0\\u7EDD\\u53A5\\u5282\\u8C32\\u77CD\\u8568\\u5658\\u5D1B\\u7357\\u5B53\\u73CF\\u6877\\u6A5B\\u721D\\u9562\\u8E76\\u89D6\",\r\n \"jun\": \"\\u5747\\u83CC\\u94A7\\u519B\\u541B\\u5CFB\\u4FCA\\u7AE3\\u6D5A\\u90E1\\u9A8F\\u6343\\u72FB\\u76B2\\u7B60\\u9E87\",\r\n \"ka\": \"\\u5580\\u5496\\u5361\\u4F67\\u5494\\u80E9\",\r\n \"ke\": \"\\u54AF\\u5777\\u82DB\\u67EF\\u68F5\\u78D5\\u9897\\u79D1\\u58F3\\u54B3\\u53EF\\u6E34\\u514B\\u523B\\u5BA2\\u8BFE\\u5CA2\\u606A\\u6E98\\u9A92\\u7F02\\u73C2\\u8F72\\u6C2A\\u778C\\u94B6\\u75B4\\u7AA0\\u874C\\u9AC1\",\r\n \"kai\": \"\\u5F00\\u63E9\\u6977\\u51EF\\u6168\\u5240\\u57B2\\u8488\\u5FFE\\u607A\\u94E0\\u950E\",\r\n \"kan\": \"\\u520A\\u582A\\u52D8\\u574E\\u780D\\u770B\\u4F83\\u51F5\\u83B0\\u83B6\\u6221\\u9F9B\\u77B0\",\r\n \"kang\": \"\\u5EB7\\u6177\\u7CE0\\u625B\\u6297\\u4EA2\\u7095\\u5751\\u4F09\\u95F6\\u94AA\",\r\n \"kao\": \"\\u8003\\u62F7\\u70E4\\u9760\\u5C3B\\u6832\\u7292\\u94D0\",\r\n \"ken\": \"\\u80AF\\u5543\\u57A6\\u6073\\u57A0\\u88C9\\u9880\",\r\n \"keng\": \"\\u542D\\u5FD0\\u94FF\",\r\n \"kong\": \"\\u7A7A\\u6050\\u5B54\\u63A7\\u5025\\u5D06\\u7B9C\",\r\n \"kou\": \"\\u62A0\\u53E3\\u6263\\u5BC7\\u82A4\\u853B\\u53E9\\u770D\\u7B58\",\r\n \"ku\": \"\\u67AF\\u54ED\\u7A9F\\u82E6\\u9177\\u5E93\\u88E4\\u5233\\u5800\\u55BE\\u7ED4\\u9AB7\",\r\n \"kua\": \"\\u5938\\u57AE\\u630E\\u8DE8\\u80EF\\u4F89\",\r\n \"kuai\": \"\\u5757\\u7B77\\u4FA9\\u5FEB\\u84AF\\u90D0\\u8489\\u72EF\\u810D\",\r\n \"kuan\": \"\\u5BBD\\u6B3E\\u9ACB\",\r\n \"kuang\": \"\\u5321\\u7B50\\u72C2\\u6846\\u77FF\\u7736\\u65F7\\u51B5\\u8BD3\\u8BF3\\u909D\\u5739\\u593C\\u54D0\\u7EA9\\u8D36\",\r\n \"kui\": \"\\u4E8F\\u76D4\\u5CBF\\u7AA5\\u8475\\u594E\\u9B41\\u5080\\u9988\\u6127\\u6E83\\u9997\\u532E\\u5914\\u9697\\u63C6\\u55B9\\u559F\\u609D\\u6126\\u9615\\u9035\\u668C\\u777D\\u8069\\u8770\\u7BD1\\u81FE\\u8DEC\",\r\n \"kun\": \"\\u5764\\u6606\\u6346\\u56F0\\u6083\\u9603\\u7428\\u951F\\u918C\\u9CB2\\u9AE1\",\r\n \"kuo\": \"\\u62EC\\u6269\\u5ED3\\u9614\\u86DE\",\r\n \"la\": \"\\u5783\\u62C9\\u5587\\u8721\\u814A\\u8FA3\\u5566\\u524C\\u647A\\u908B\\u65EF\\u782C\\u760C\",\r\n \"lai\": \"\\u83B1\\u6765\\u8D56\\u5D03\\u5F95\\u6D9E\\u6FD1\\u8D49\\u7750\\u94FC\\u765E\\u7C41\",\r\n \"lan\": \"\\u84DD\\u5A6A\\u680F\\u62E6\\u7BEE\\u9611\\u5170\\u6F9C\\u8C30\\u63FD\\u89C8\\u61D2\\u7F06\\u70C2\\u6EE5\\u5549\\u5C9A\\u61D4\\u6F24\\u6984\\u6593\\u7F71\\u9567\\u8934\",\r\n \"lang\": \"\\u7405\\u6994\\u72FC\\u5ECA\\u90CE\\u6717\\u6D6A\\u83A8\\u8497\\u5577\\u9606\\u9512\\u7A02\\u8782\",\r\n \"lao\": \"\\u635E\\u52B3\\u7262\\u8001\\u4F6C\\u59E5\\u916A\\u70D9\\u6D9D\\u5520\\u5D02\\u6833\\u94D1\\u94F9\\u75E8\\u91AA\",\r\n \"le\": \"\\u52D2\\u4E50\\u808B\\u4EC2\\u53FB\\u561E\\u6CD0\\u9CD3\",\r\n \"lei\": \"\\u96F7\\u956D\\u857E\\u78CA\\u7D2F\\u5121\\u5792\\u64C2\\u7C7B\\u6CEA\\u7FB8\\u8BD4\\u837D\\u54A7\\u6F2F\\u5AD8\\u7F27\\u6A91\\u8012\\u9179\",\r\n \"ling\": \"\\u68F1\\u51B7\\u62CE\\u73B2\\u83F1\\u96F6\\u9F84\\u94C3\\u4F36\\u7F9A\\u51CC\\u7075\\u9675\\u5CAD\\u9886\\u53E6\\u4EE4\\u9143\\u5844\\u82D3\\u5464\\u56F9\\u6CE0\\u7EEB\\u67C3\\u68C2\\u74F4\\u8046\\u86C9\\u7FCE\\u9CAE\",\r\n \"leng\": \"\\u695E\\u6123\",\r\n \"li\": \"\\u5398\\u68A8\\u7281\\u9ECE\\u7BF1\\u72F8\\u79BB\\u6F13\\u7406\\u674E\\u91CC\\u9CA4\\u793C\\u8389\\u8354\\u540F\\u6817\\u4E3D\\u5389\\u52B1\\u783E\\u5386\\u5229\\u5088\\u4F8B\\u4FD0\\u75E2\\u7ACB\\u7C92\\u6CA5\\u96B6\\u529B\\u7483\\u54E9\\u4FEA\\u4FDA\\u90E6\\u575C\\u82C8\\u8385\\u84E0\\u85DC\\u6369\\u5456\\u5533\\u55B1\\u7301\\u6EA7\\u6FA7\\u9026\\u5A0C\\u5AE0\\u9A8A\\u7F21\\u73DE\\u67A5\\u680E\\u8F79\\u623E\\u783A\\u8A48\\u7F79\\u9502\\u9E42\\u75A0\\u75AC\\u86CE\\u870A\\u8821\\u7B20\\u7BE5\\u7C9D\\u91B4\\u8DDE\\u96F3\\u9CA1\\u9CE2\\u9EE7\",\r\n \"lian\": \"\\u4FE9\\u8054\\u83B2\\u8FDE\\u9570\\u5EC9\\u601C\\u6D9F\\u5E18\\u655B\\u8138\\u94FE\\u604B\\u70BC\\u7EC3\\u631B\\u8539\\u5941\\u6F4B\\u6FC2\\u5A08\\u740F\\u695D\\u6B93\\u81C1\\u81A6\\u88E2\\u880A\\u9CA2\",\r\n \"liang\": \"\\u7CAE\\u51C9\\u6881\\u7CB1\\u826F\\u4E24\\u8F86\\u91CF\\u667E\\u4EAE\\u8C05\\u589A\\u690B\\u8E09\\u9753\\u9B49\",\r\n \"liao\": \"\\u64A9\\u804A\\u50DA\\u7597\\u71CE\\u5BE5\\u8FBD\\u6F66\\u4E86\\u6482\\u9563\\u5ED6\\u6599\\u84FC\\u5C25\\u5639\\u7360\\u5BEE\\u7F2D\\u948C\\u9E69\\u8022\",\r\n \"lie\": \"\\u5217\\u88C2\\u70C8\\u52A3\\u730E\\u51BD\\u57D2\\u6D0C\\u8D94\\u8E90\\u9B23\",\r\n \"lin\": \"\\u7433\\u6797\\u78F7\\u9716\\u4E34\\u90BB\\u9CDE\\u6DCB\\u51DB\\u8D41\\u541D\\u853A\\u5D99\\u5EEA\\u9074\\u6AA9\\u8F9A\\u77B5\\u7CBC\\u8E8F\\u9E9F\",\r\n \"liu\": \"\\u6E9C\\u7409\\u69B4\\u786B\\u998F\\u7559\\u5218\\u7624\\u6D41\\u67F3\\u516D\\u62A1\\u507B\\u848C\\u6CD6\\u6D4F\\u905B\\u9A9D\\u7EFA\\u65D2\\u7198\\u950D\\u954F\\u9E68\\u938F\",\r\n \"long\": \"\\u9F99\\u804B\\u5499\\u7B3C\\u7ABF\\u9686\\u5784\\u62E2\\u9647\\u5F04\\u5785\\u830F\\u6CF7\\u73D1\\u680A\\u80E7\\u783B\\u7643\",\r\n \"lou\": \"\\u697C\\u5A04\\u6402\\u7BD3\\u6F0F\\u964B\\u55BD\\u5D5D\\u9542\\u7618\\u8027\\u877C\\u9AC5\",\r\n \"lu\": \"\\u82A6\\u5362\\u9885\\u5E90\\u7089\\u63B3\\u5364\\u864F\\u9C81\\u9E93\\u788C\\u9732\\u8DEF\\u8D42\\u9E7F\\u6F5E\\u7984\\u5F55\\u9646\\u622E\\u5786\\u6445\\u64B8\\u565C\\u6CF8\\u6E0C\\u6F09\\u7490\\u680C\\u6A79\\u8F73\\u8F82\\u8F98\\u6C07\\u80EA\\u9565\\u9E2C\\u9E6D\\u7C0F\\u823B\\u9C88\",\r\n \"lv\": \"\\u9A74\\u5415\\u94DD\\u4FA3\\u65C5\\u5C65\\u5C61\\u7F15\\u8651\\u6C2F\\u5F8B\\u7387\\u6EE4\\u7EFF\\u634B\\u95FE\\u6988\\u8182\\u7A06\\u891B\",\r\n \"luan\": \"\\u5CE6\\u5B6A\\u6EE6\\u5375\\u4E71\\u683E\\u9E3E\\u92AE\",\r\n \"lue\": \"\\u63A0\\u7565\\u950A\",\r\n \"lun\": \"\\u8F6E\\u4F26\\u4ED1\\u6CA6\\u7EB6\\u8BBA\\u56F5\",\r\n \"luo\": \"\\u841D\\u87BA\\u7F57\\u903B\\u9523\\u7BA9\\u9AA1\\u88F8\\u843D\\u6D1B\\u9A86\\u7EDC\\u502E\\u8366\\u645E\\u7321\\u6CFA\\u6924\\u8136\\u9559\\u7630\\u96D2\",\r\n \"ma\": \"\\u5988\\u9EBB\\u739B\\u7801\\u8682\\u9A6C\\u9A82\\u561B\\u5417\\u551B\\u72B8\\u5B37\\u6769\\u9EBD\",\r\n \"mai\": \"\\u57CB\\u4E70\\u9EA6\\u5356\\u8FC8\\u8109\\u52A2\\u836C\\u54AA\\u973E\",\r\n \"man\": \"\\u7792\\u9992\\u86EE\\u6EE1\\u8513\\u66FC\\u6162\\u6F2B\\u8C29\\u5881\\u5E54\\u7F26\\u71B3\\u9558\\u989F\\u87A8\\u9CD7\\u9794\",\r\n \"mang\": \"\\u8292\\u832B\\u76F2\\u5FD9\\u83BD\\u9099\\u6F2D\\u6726\\u786D\\u87D2\",\r\n \"meng\": \"\\u6C13\\u840C\\u8499\\u6AAC\\u76DF\\u9530\\u731B\\u68A6\\u5B5F\\u52D0\\u750D\\u77A2\\u61F5\\u791E\\u867B\\u8722\\u8813\\u824B\\u8268\\u9EFE\",\r\n \"miao\": \"\\u732B\\u82D7\\u63CF\\u7784\\u85D0\\u79D2\\u6E3A\\u5E99\\u5999\\u55B5\\u9088\\u7F08\\u7F2A\\u676A\\u6DFC\\u7707\\u9E4B\\u8731\",\r\n \"mao\": \"\\u8305\\u951A\\u6BDB\\u77DB\\u94C6\\u536F\\u8302\\u5192\\u5E3D\\u8C8C\\u8D38\\u4F94\\u88A4\\u52D6\\u8306\\u5CC1\\u7441\\u6634\\u7266\\u8004\\u65C4\\u61CB\\u7780\\u86D1\\u8765\\u87CA\\u9AE6\",\r\n \"me\": \"\\u4E48\",\r\n \"mei\": \"\\u73AB\\u679A\\u6885\\u9176\\u9709\\u7164\\u6CA1\\u7709\\u5A92\\u9541\\u6BCF\\u7F8E\\u6627\\u5BD0\\u59B9\\u5A9A\\u5776\\u8393\\u5D4B\\u7338\\u6D7C\\u6E44\\u6963\\u9545\\u9E5B\\u8882\\u9B45\",\r\n \"men\": \"\\u95E8\\u95F7\\u4EEC\\u626A\\u739F\\u7116\\u61D1\\u9494\",\r\n \"mi\": \"\\u772F\\u919A\\u9761\\u7CDC\\u8FF7\\u8C1C\\u5F25\\u7C73\\u79D8\\u89C5\\u6CCC\\u871C\\u5BC6\\u5E42\\u8288\\u5196\\u8C27\\u863C\\u5627\\u7315\\u736F\\u6C68\\u5B93\\u5F2D\\u8112\\u6549\\u7CF8\\u7E3B\\u9E8B\",\r\n \"mian\": \"\\u68C9\\u7720\\u7EF5\\u5195\\u514D\\u52C9\\u5A29\\u7F05\\u9762\\u6C94\\u6E4E\\u817C\\u7704\",\r\n \"mie\": \"\\u8511\\u706D\\u54A9\\u881B\\u7BFE\",\r\n \"min\": \"\\u6C11\\u62BF\\u76BF\\u654F\\u60AF\\u95FD\\u82E0\\u5CB7\\u95F5\\u6CEF\\u73C9\",\r\n \"ming\": \"\\u660E\\u879F\\u9E23\\u94ED\\u540D\\u547D\\u51A5\\u8317\\u6E9F\\u669D\\u7791\\u9169\",\r\n \"miu\": \"\\u8C2C\",\r\n \"mo\": \"\\u6478\\u6479\\u8611\\u6A21\\u819C\\u78E8\\u6469\\u9B54\\u62B9\\u672B\\u83AB\\u58A8\\u9ED8\\u6CAB\\u6F20\\u5BDE\\u964C\\u8C1F\\u8309\\u84E6\\u998D\\u5AEB\\u9546\\u79E3\\u763C\\u8031\\u87C6\\u8C8A\\u8C98\",\r\n \"mou\": \"\\u8C0B\\u725F\\u67D0\\u53B6\\u54DE\\u5A7A\\u7738\\u936A\",\r\n \"mu\": \"\\u62C7\\u7261\\u4EA9\\u59C6\\u6BCD\\u5893\\u66AE\\u5E55\\u52DF\\u6155\\u6728\\u76EE\\u7766\\u7267\\u7A46\\u4EEB\\u82DC\\u5452\\u6C90\\u6BEA\\u94BC\",\r\n \"na\": \"\\u62FF\\u54EA\\u5450\\u94A0\\u90A3\\u5A1C\\u7EB3\\u5185\\u637A\\u80AD\\u954E\\u8872\\u7BAC\",\r\n \"nai\": \"\\u6C16\\u4E43\\u5976\\u8010\\u5948\\u9F10\\u827F\\u8418\\u67F0\",\r\n \"nan\": \"\\u5357\\u7537\\u96BE\\u56CA\\u5583\\u56E1\\u6960\\u8169\\u877B\\u8D67\",\r\n \"nang\": \"\\u652E\\u54DD\\u56D4\\u9995\\u66E9\",\r\n \"nao\": \"\\u6320\\u8111\\u607C\\u95F9\\u5B6C\\u57B4\\u7331\\u7459\\u7847\\u94D9\\u86F2\",\r\n \"ne\": \"\\u6DD6\\u5462\\u8BB7\",\r\n \"nei\": \"\\u9981\",\r\n \"nen\": \"\\u5AE9\\u80FD\\u6798\\u6041\",\r\n \"ni\": \"\\u59AE\\u9713\\u502A\\u6CE5\\u5C3C\\u62DF\\u4F60\\u533F\\u817B\\u9006\\u6EBA\\u4F32\\u576D\\u730A\\u6029\\u6EE0\\u6635\\u65CE\\u7962\\u615D\\u7768\\u94CC\\u9CB5\",\r\n \"nian\": \"\\u852B\\u62C8\\u5E74\\u78BE\\u64B5\\u637B\\u5FF5\\u5EFF\\u8F87\\u9ECF\\u9C87\\u9CB6\",\r\n \"niang\": \"\\u5A18\\u917F\",\r\n \"niao\": \"\\u9E1F\\u5C3F\\u8311\\u5B32\\u8132\\u8885\",\r\n \"nie\": \"\\u634F\\u8042\\u5B7D\\u556E\\u954A\\u954D\\u6D85\\u4E5C\\u9667\\u8616\\u55EB\\u8080\\u989E\\u81EC\\u8E51\",\r\n \"nin\": \"\\u60A8\\u67E0\",\r\n \"ning\": \"\\u72DE\\u51DD\\u5B81\\u62E7\\u6CDE\\u4F5E\\u84E5\\u549B\\u752F\\u804D\",\r\n \"niu\": \"\\u725B\\u626D\\u94AE\\u7EBD\\u72C3\\u5FF8\\u599E\\u86B4\",\r\n \"nong\": \"\\u8113\\u6D53\\u519C\\u4FAC\",\r\n \"nu\": \"\\u5974\\u52AA\\u6012\\u5476\\u5E11\\u5F29\\u80EC\\u5B65\\u9A7D\",\r\n \"nv\": \"\\u5973\\u6067\\u9495\\u8844\",\r\n \"nuan\": \"\\u6696\",\r\n \"nuenue\": \"\\u8650\",\r\n \"nue\": \"\\u759F\\u8C11\",\r\n \"nuo\": \"\\u632A\\u61E6\\u7CEF\\u8BFA\\u50A9\\u6426\\u558F\\u9518\",\r\n \"o\": \"\\u5594\",\r\n \"ou\": \"\\u54E6\\u6B27\\u9E25\\u6BB4\\u85D5\\u5455\\u5076\\u6CA4\\u6004\\u74EF\\u8026\",\r\n \"pa\": \"\\u556A\\u8DB4\\u722C\\u5E15\\u6015\\u7436\\u8469\\u7B62\",\r\n \"pai\": \"\\u62CD\\u6392\\u724C\\u5F98\\u6E43\\u6D3E\\u4FF3\\u848E\",\r\n \"pan\": \"\\u6500\\u6F58\\u76D8\\u78D0\\u76FC\\u7554\\u5224\\u53DB\\u723F\\u6CEE\\u88A2\\u897B\\u87E0\\u8E52\",\r\n \"pang\": \"\\u4E53\\u5E9E\\u65C1\\u802A\\u80D6\\u6EC2\\u9004\",\r\n \"pao\": \"\\u629B\\u5486\\u5228\\u70AE\\u888D\\u8DD1\\u6CE1\\u530F\\u72CD\\u5E96\\u812C\\u75B1\",\r\n \"pei\": \"\\u5478\\u80DA\\u57F9\\u88F4\\u8D54\\u966A\\u914D\\u4F69\\u6C9B\\u638A\\u8F94\\u5E14\\u6DE0\\u65C6\\u952B\\u9185\\u9708\",\r\n \"pen\": \"\\u55B7\\u76C6\\u6E53\",\r\n \"peng\": \"\\u7830\\u62A8\\u70F9\\u6F8E\\u5F6D\\u84EC\\u68DA\\u787C\\u7BF7\\u81A8\\u670B\\u9E4F\\u6367\\u78B0\\u576F\\u580B\\u562D\\u6026\\u87DB\",\r\n \"pi\": \"\\u7812\\u9739\\u6279\\u62AB\\u5288\\u7435\\u6BD7\\u5564\\u813E\\u75B2\\u76AE\\u5339\\u75DE\\u50FB\\u5C41\\u8B6C\\u4E15\\u9674\\u90B3\\u90EB\\u572E\\u9F19\\u64D7\\u567C\\u5E80\\u5AB2\\u7EB0\\u6787\\u7513\\u7765\\u7F74\\u94CD\\u75E6\\u7656\\u758B\\u868D\\u8C94\",\r\n \"pian\": \"\\u7BC7\\u504F\\u7247\\u9A97\\u8C1D\\u9A88\\u728F\\u80FC\\u890A\\u7FE9\\u8E41\",\r\n \"piao\": \"\\u98D8\\u6F02\\u74E2\\u7968\\u527D\\u560C\\u5AD6\\u7F25\\u6B8D\\u779F\\u87B5\",\r\n \"pie\": \"\\u6487\\u77A5\\u4E3F\\u82E4\\u6C15\",\r\n \"pin\": \"\\u62FC\\u9891\\u8D2B\\u54C1\\u8058\\u62DA\\u59D8\\u5AD4\\u6980\\u725D\\u98A6\",\r\n \"ping\": \"\\u4E52\\u576A\\u82F9\\u840D\\u5E73\\u51ED\\u74F6\\u8BC4\\u5C4F\\u4FDC\\u5A09\\u67B0\\u9C86\",\r\n \"po\": \"\\u5761\\u6CFC\\u9887\\u5A46\\u7834\\u9B44\\u8FEB\\u7C95\\u53F5\\u9131\\u6EA5\\u73C0\\u948B\\u94B7\\u76A4\\u7B38\",\r\n \"pou\": \"\\u5256\\u88D2\\u8E23\",\r\n \"pu\": \"\\u6251\\u94FA\\u4EC6\\u8386\\u8461\\u83E9\\u84B2\\u57D4\\u6734\\u5703\\u666E\\u6D66\\u8C31\\u66DD\\u7011\\u530D\\u5657\\u6FEE\\u749E\\u6C06\\u9564\\u9568\\u8E7C\",\r\n \"qi\": \"\\u671F\\u6B3A\\u6816\\u621A\\u59BB\\u4E03\\u51C4\\u6F06\\u67D2\\u6C8F\\u5176\\u68CB\\u5947\\u6B67\\u7566\\u5D0E\\u8110\\u9F50\\u65D7\\u7948\\u7941\\u9A91\\u8D77\\u5C82\\u4E5E\\u4F01\\u542F\\u5951\\u780C\\u5668\\u6C14\\u8FC4\\u5F03\\u6C7D\\u6CE3\\u8BAB\\u4E9F\\u4E93\\u573B\\u8291\\u840B\\u847A\\u5601\\u5C7A\\u5C90\\u6C54\\u6DC7\\u9A90\\u7EEE\\u742A\\u7426\\u675E\\u6864\\u69ED\\u6B39\\u797A\\u61A9\\u789B\\u86F4\\u871E\\u7DA6\\u7DAE\\u8DBF\\u8E4A\\u9CCD\\u9E92\",\r\n \"qia\": \"\\u6390\\u6070\\u6D3D\\u845C\",\r\n \"qian\": \"\\u7275\\u6266\\u948E\\u94C5\\u5343\\u8FC1\\u7B7E\\u4EDF\\u8C26\\u4E7E\\u9ED4\\u94B1\\u94B3\\u524D\\u6F5C\\u9063\\u6D45\\u8C34\\u5811\\u5D4C\\u6B20\\u6B49\\u4F65\\u9621\\u828A\\u82A1\\u8368\\u63AE\\u5C8D\\u60AD\\u614A\\u9A9E\\u6434\\u8930\\u7F31\\u6920\\u80B7\\u6106\\u94A4\\u8654\\u7B9D\",\r\n \"qiang\": \"\\u67AA\\u545B\\u8154\\u7F8C\\u5899\\u8537\\u5F3A\\u62A2\\u5AF1\\u6A2F\\u6217\\u709D\\u9516\\u9535\\u956A\\u8941\\u8723\\u7F9F\\u8DEB\\u8DC4\",\r\n \"qiao\": \"\\u6A47\\u9539\\u6572\\u6084\\u6865\\u77A7\\u4E54\\u4FA8\\u5DE7\\u9798\\u64AC\\u7FD8\\u5CED\\u4FCF\\u7A8D\\u5281\\u8BEE\\u8C2F\\u835E\\u6100\\u6194\\u7F32\\u6A35\\u6BF3\\u7857\\u8DF7\\u9792\",\r\n \"qie\": \"\\u5207\\u8304\\u4E14\\u602F\\u7A83\\u90C4\\u553C\\u60EC\\u59BE\\u6308\\u9532\\u7BA7\",\r\n \"qin\": \"\\u94A6\\u4FB5\\u4EB2\\u79E6\\u7434\\u52E4\\u82B9\\u64D2\\u79BD\\u5BDD\\u6C81\\u82A9\\u84C1\\u8572\\u63FF\\u5423\\u55EA\\u5659\\u6EB1\\u6A8E\\u8793\\u887E\",\r\n \"qing\": \"\\u9752\\u8F7B\\u6C22\\u503E\\u537F\\u6E05\\u64CE\\u6674\\u6C30\\u60C5\\u9877\\u8BF7\\u5E86\\u5029\\u82D8\\u570A\\u6AA0\\u78EC\\u873B\\u7F44\\u7B90\\u8B26\\u9CAD\\u9EE5\",\r\n \"qiong\": \"\\u743C\\u7A77\\u909B\\u8315\\u7A79\\u7B47\\u928E\",\r\n \"qiu\": \"\\u79CB\\u4E18\\u90B1\\u7403\\u6C42\\u56DA\\u914B\\u6CC5\\u4FC5\\u6C3D\\u5DEF\\u827D\\u72B0\\u6E6B\\u9011\\u9052\\u6978\\u8D47\\u9E20\\u866C\\u86AF\\u8764\\u88D8\\u7CD7\\u9CC5\\u9F3D\",\r\n \"qu\": \"\\u8D8B\\u533A\\u86C6\\u66F2\\u8EAF\\u5C48\\u9A71\\u6E20\\u53D6\\u5A36\\u9F8B\\u8DA3\\u53BB\\u8BCE\\u52AC\\u8556\\u8627\\u5C96\\u8862\\u9612\\u74A9\\u89D1\\u6C0D\\u795B\\u78F2\\u766F\\u86D0\\u883C\\u9EB4\\u77BF\\u9EE2\",\r\n \"quan\": \"\\u5708\\u98A7\\u6743\\u919B\\u6CC9\\u5168\\u75CA\\u62F3\\u72AC\\u5238\\u529D\\u8BE0\\u8343\\u737E\\u609B\\u7EFB\\u8F81\\u754E\\u94E8\\u8737\\u7B4C\\u9B08\",\r\n \"que\": \"\\u7F3A\\u7094\\u7638\\u5374\\u9E4A\\u69B7\\u786E\\u96C0\\u9619\\u60AB\",\r\n \"qun\": \"\\u88D9\\u7FA4\\u9021\",\r\n \"ran\": \"\\u7136\\u71C3\\u5189\\u67D3\\u82D2\\u9AEF\",\r\n \"rang\": \"\\u74E4\\u58E4\\u6518\\u56B7\\u8BA9\\u79B3\\u7A70\",\r\n \"rao\": \"\\u9976\\u6270\\u7ED5\\u835B\\u5A06\\u6861\",\r\n \"ruo\": \"\\u60F9\\u82E5\\u5F31\",\r\n \"re\": \"\\u70ED\\u504C\",\r\n \"ren\": \"\\u58EC\\u4EC1\\u4EBA\\u5FCD\\u97E7\\u4EFB\\u8BA4\\u5203\\u598A\\u7EAB\\u4EDE\\u834F\\u845A\\u996A\\u8F6B\\u7A14\\u887D\",\r\n \"reng\": \"\\u6254\\u4ECD\",\r\n \"ri\": \"\\u65E5\",\r\n \"rong\": \"\\u620E\\u8338\\u84C9\\u8363\\u878D\\u7194\\u6EB6\\u5BB9\\u7ED2\\u5197\\u5D58\\u72E8\\u7F1B\\u6995\\u877E\",\r\n \"rou\": \"\\u63C9\\u67D4\\u8089\\u7CC5\\u8E42\\u97A3\",\r\n \"ru\": \"\\u8339\\u8815\\u5112\\u5B7A\\u5982\\u8FB1\\u4E73\\u6C5D\\u5165\\u8925\\u84D0\\u85B7\\u5685\\u6D33\\u6EBD\\u6FE1\\u94F7\\u8966\\u98A5\",\r\n \"ruan\": \"\\u8F6F\\u962E\\u670A\",\r\n \"rui\": \"\\u854A\\u745E\\u9510\\u82AE\\u8564\\u777F\\u868B\",\r\n \"run\": \"\\u95F0\\u6DA6\",\r\n \"sa\": \"\\u6492\\u6D12\\u8428\\u5345\\u4EE8\\u6332\\u98D2\",\r\n \"sai\": \"\\u816E\\u9CC3\\u585E\\u8D5B\\u567B\",\r\n \"san\": \"\\u4E09\\u53C1\\u4F1E\\u6563\\u5F61\\u9993\\u6C35\\u6BF5\\u7CC1\\u9730\",\r\n \"sang\": \"\\u6851\\u55D3\\u4E27\\u6421\\u78C9\\u98A1\",\r\n \"sao\": \"\\u6414\\u9A9A\\u626B\\u5AC2\\u57FD\\u81CA\\u7619\\u9CCB\",\r\n \"se\": \"\\u745F\\u8272\\u6DA9\\u556C\\u94E9\\u94EF\\u7A51\",\r\n \"sen\": \"\\u68EE\",\r\n \"seng\": \"\\u50E7\",\r\n \"sha\": \"\\u838E\\u7802\\u6740\\u5239\\u6C99\\u7EB1\\u50BB\\u5565\\u715E\\u810E\\u6B43\\u75E7\\u88DF\\u970E\\u9CA8\",\r\n \"shai\": \"\\u7B5B\\u6652\\u917E\",\r\n \"shan\": \"\\u73CA\\u82EB\\u6749\\u5C71\\u5220\\u717D\\u886B\\u95EA\\u9655\\u64C5\\u8D61\\u81B3\\u5584\\u6C55\\u6247\\u7F2E\\u5261\\u8BAA\\u912F\\u57CF\\u829F\\u6F78\\u59D7\\u9A9F\\u81BB\\u9490\\u759D\\u87EE\\u8222\\u8DDA\\u9CDD\",\r\n \"shang\": \"\\u5892\\u4F24\\u5546\\u8D4F\\u664C\\u4E0A\\u5C1A\\u88F3\\u57A7\\u7EF1\\u6B87\\u71B5\\u89DE\",\r\n \"shao\": \"\\u68A2\\u634E\\u7A0D\\u70E7\\u828D\\u52FA\\u97F6\\u5C11\\u54E8\\u90B5\\u7ECD\\u52AD\\u82D5\\u6F72\\u86F8\\u7B24\\u7B72\\u8244\",\r\n \"she\": \"\\u5962\\u8D4A\\u86C7\\u820C\\u820D\\u8D66\\u6444\\u5C04\\u6151\\u6D89\\u793E\\u8BBE\\u538D\\u4F58\\u731E\\u7572\\u9E9D\",\r\n \"shen\": \"\\u7837\\u7533\\u547B\\u4F38\\u8EAB\\u6DF1\\u5A20\\u7EC5\\u795E\\u6C88\\u5BA1\\u5A76\\u751A\\u80BE\\u614E\\u6E17\\u8BDC\\u8C02\\u5432\\u54C2\\u6E16\\u6939\\u77E7\\u8703\",\r\n \"sheng\": \"\\u58F0\\u751F\\u7525\\u7272\\u5347\\u7EF3\\u7701\\u76DB\\u5269\\u80DC\\u5723\\u4E1E\\u6E11\\u5AB5\\u771A\\u7B19\",\r\n \"shi\": \"\\u5E08\\u5931\\u72EE\\u65BD\\u6E7F\\u8BD7\\u5C38\\u8671\\u5341\\u77F3\\u62FE\\u65F6\\u4EC0\\u98DF\\u8680\\u5B9E\\u8BC6\\u53F2\\u77E2\\u4F7F\\u5C4E\\u9A76\\u59CB\\u5F0F\\u793A\\u58EB\\u4E16\\u67FF\\u4E8B\\u62ED\\u8A93\\u901D\\u52BF\\u662F\\u55DC\\u566C\\u9002\\u4ED5\\u4F8D\\u91CA\\u9970\\u6C0F\\u5E02\\u6043\\u5BA4\\u89C6\\u8BD5\\u8C25\\u57D8\\u83B3\\u84CD\\u5F11\\u5511\\u9963\\u8F7C\\u8006\\u8D33\\u70BB\\u793B\\u94C8\\u94CA\\u87AB\\u8210\\u7B6E\\u8C55\\u9CA5\\u9CBA\",\r\n \"shou\": \"\\u6536\\u624B\\u9996\\u5B88\\u5BFF\\u6388\\u552E\\u53D7\\u7626\\u517D\\u624C\\u72E9\\u7EF6\\u824F\",\r\n \"shu\": \"\\u852C\\u67A2\\u68B3\\u6B8A\\u6292\\u8F93\\u53D4\\u8212\\u6DD1\\u758F\\u4E66\\u8D4E\\u5B70\\u719F\\u85AF\\u6691\\u66D9\\u7F72\\u8700\\u9ECD\\u9F20\\u5C5E\\u672F\\u8FF0\\u6811\\u675F\\u620D\\u7AD6\\u5885\\u5EB6\\u6570\\u6F31\\u6055\\u500F\\u587E\\u83FD\\u5FC4\\u6CAD\\u6D91\\u6F8D\\u59DD\\u7EBE\\u6BF9\\u8167\\u6BB3\\u956F\\u79EB\\u9E6C\",\r\n \"shua\": \"\\u5237\\u800D\\u5530\\u6DAE\",\r\n \"shuai\": \"\\u6454\\u8870\\u7529\\u5E05\\u87C0\",\r\n \"shuan\": \"\\u6813\\u62F4\\u95E9\",\r\n \"shuang\": \"\\u971C\\u53CC\\u723D\\u5B40\",\r\n \"shui\": \"\\u8C01\\u6C34\\u7761\\u7A0E\",\r\n \"shun\": \"\\u542E\\u77AC\\u987A\\u821C\\u6042\",\r\n \"shuo\": \"\\u8BF4\\u7855\\u6714\\u70C1\\u84B4\\u6420\\u55CD\\u6FEF\\u5981\\u69CA\\u94C4\",\r\n \"si\": \"\\u65AF\\u6495\\u5636\\u601D\\u79C1\\u53F8\\u4E1D\\u6B7B\\u8086\\u5BFA\\u55E3\\u56DB\\u4F3A\\u4F3C\\u9972\\u5DF3\\u53AE\\u4FDF\\u5155\\u83E5\\u549D\\u6C5C\\u6CD7\\u6F8C\\u59D2\\u9A77\\u7F0C\\u7940\\u7960\\u9536\\u9E36\\u801C\\u86F3\\u7B25\",\r\n \"song\": \"\\u677E\\u8038\\u6002\\u9882\\u9001\\u5B8B\\u8BBC\\u8BF5\\u51C7\\u83D8\\u5D27\\u5D69\\u5FEA\\u609A\\u6DDE\\u7AE6\",\r\n \"sou\": \"\\u641C\\u8258\\u64DE\\u55FD\\u53DF\\u55D6\\u55FE\\u998A\\u6EB2\\u98D5\\u778D\\u953C\\u878B\",\r\n \"su\": \"\\u82CF\\u9165\\u4FD7\\u7D20\\u901F\\u7C9F\\u50F3\\u5851\\u6EAF\\u5BBF\\u8BC9\\u8083\\u5919\\u8C21\\u850C\\u55C9\\u612B\\u7C0C\\u89EB\\u7A23\",\r\n \"suan\": \"\\u9178\\u849C\\u7B97\",\r\n \"sui\": \"\\u867D\\u968B\\u968F\\u7EE5\\u9AD3\\u788E\\u5C81\\u7A57\\u9042\\u96A7\\u795F\\u84D1\\u51AB\\u8C07\\u6FC9\\u9083\\u71E7\\u772D\\u7762\",\r\n \"sun\": \"\\u5B59\\u635F\\u7B0B\\u836A\\u72F2\\u98E7\\u69AB\\u8DE3\\u96BC\",\r\n \"suo\": \"\\u68AD\\u5506\\u7F29\\u7410\\u7D22\\u9501\\u6240\\u5522\\u55E6\\u5A11\\u686B\\u7743\\u7FA7\",\r\n \"ta\": \"\\u584C\\u4ED6\\u5B83\\u5979\\u5854\\u736D\\u631E\\u8E4B\\u8E0F\\u95FC\\u6EBB\\u9062\\u69BB\\u6C93\",\r\n \"tai\": \"\\u80CE\\u82D4\\u62AC\\u53F0\\u6CF0\\u915E\\u592A\\u6001\\u6C70\\u90B0\\u85B9\\u80BD\\u70B1\\u949B\\u8DC6\\u9C90\",\r\n \"tan\": \"\\u574D\\u644A\\u8D2A\\u762B\\u6EE9\\u575B\\u6A80\\u75F0\\u6F6D\\u8C2D\\u8C08\\u5766\\u6BEF\\u8892\\u78B3\\u63A2\\u53F9\\u70AD\\u90EF\\u8548\\u6619\\u94BD\\u952C\\u8983\",\r\n \"tang\": \"\\u6C64\\u5858\\u642A\\u5802\\u68E0\\u819B\\u5510\\u7CD6\\u50A5\\u9967\\u6E8F\\u746D\\u94F4\\u9557\\u8025\\u8797\\u87B3\\u7FB0\\u91A3\",\r\n \"thang\": \"\\u5018\\u8EBA\\u6DCC\",\r\n \"theng\": \"\\u8D9F\\u70EB\",\r\n \"tao\": \"\\u638F\\u6D9B\\u6ED4\\u7EE6\\u8404\\u6843\\u9003\\u6DD8\\u9676\\u8BA8\\u5957\\u6311\\u9F17\\u5555\\u97EC\\u9955\",\r\n \"te\": \"\\u7279\",\r\n \"teng\": \"\\u85E4\\u817E\\u75BC\\u8A8A\\u6ED5\",\r\n \"ti\": \"\\u68AF\\u5254\\u8E22\\u9511\\u63D0\\u9898\\u8E44\\u557C\\u4F53\\u66FF\\u568F\\u60D5\\u6D95\\u5243\\u5C49\\u8351\\u608C\\u9016\\u7EE8\\u7F07\\u9E48\\u88FC\\u918D\",\r\n \"tian\": \"\\u5929\\u6DFB\\u586B\\u7530\\u751C\\u606C\\u8214\\u8146\\u63AD\\u5FDD\\u9617\\u6B84\\u754B\\u94BF\\u86BA\",\r\n \"tiao\": \"\\u6761\\u8FE2\\u773A\\u8DF3\\u4F7B\\u7967\\u94EB\\u7A95\\u9F86\\u9CA6\",\r\n \"tie\": \"\\u8D34\\u94C1\\u5E16\\u841C\\u992E\",\r\n \"ting\": \"\\u5385\\u542C\\u70C3\\u6C40\\u5EF7\\u505C\\u4EAD\\u5EAD\\u633A\\u8247\\u839B\\u8476\\u5A77\\u6883\\u8713\\u9706\",\r\n \"tong\": \"\\u901A\\u6850\\u916E\\u77B3\\u540C\\u94DC\\u5F64\\u7AE5\\u6876\\u6345\\u7B52\\u7EDF\\u75DB\\u4F5F\\u50EE\\u4EDD\\u833C\\u55F5\\u6078\\u6F7C\\u783C\",\r\n \"tou\": \"\\u5077\\u6295\\u5934\\u900F\\u4EA0\",\r\n \"tu\": \"\\u51F8\\u79C3\\u7A81\\u56FE\\u5F92\\u9014\\u6D82\\u5C60\\u571F\\u5410\\u5154\\u580D\\u837C\\u83DF\\u948D\\u9174\\u51C3\",\r\n \"tuan\": \"\\u6E4D\\u56E2\\u7583\",\r\n \"tui\": \"\\u63A8\\u9893\\u817F\\u8715\\u892A\\u9000\\u5FD2\\u717A\",\r\n \"tun\": \"\\u541E\\u5C6F\\u81C0\\u9968\\u66BE\\u8C5A\\u7A80\",\r\n \"tuo\": \"\\u62D6\\u6258\\u8131\\u9E35\\u9640\\u9A6E\\u9A7C\\u692D\\u59A5\\u62D3\\u553E\\u4E47\\u4F57\\u5768\\u5EB9\\u6CB1\\u67DD\\u7823\\u7BA8\\u8204\\u8DCE\\u9F0D\",\r\n \"wa\": \"\\u6316\\u54C7\\u86D9\\u6D3C\\u5A03\\u74E6\\u889C\\u4F64\\u5A32\\u817D\",\r\n \"wai\": \"\\u6B6A\\u5916\",\r\n \"wan\": \"\\u8C4C\\u5F2F\\u6E7E\\u73A9\\u987D\\u4E38\\u70F7\\u5B8C\\u7897\\u633D\\u665A\\u7696\\u60CB\\u5B9B\\u5A49\\u4E07\\u8155\\u525C\\u8284\\u82CB\\u83C0\\u7EA8\\u7EFE\\u742C\\u8118\\u7579\\u873F\\u7BA2\",\r\n \"wang\": \"\\u6C6A\\u738B\\u4EA1\\u6789\\u7F51\\u5F80\\u65FA\\u671B\\u5FD8\\u5984\\u7F54\\u5C22\\u60D8\\u8F8B\\u9B4D\",\r\n \"wei\": \"\\u5A01\\u5DCD\\u5FAE\\u5371\\u97E6\\u8FDD\\u6845\\u56F4\\u552F\\u60DF\\u4E3A\\u6F4D\\u7EF4\\u82C7\\u840E\\u59D4\\u4F1F\\u4F2A\\u5C3E\\u7EAC\\u672A\\u851A\\u5473\\u754F\\u80C3\\u5582\\u9B4F\\u4F4D\\u6E2D\\u8C13\\u5C09\\u6170\\u536B\\u502D\\u504E\\u8BFF\\u9688\\u8473\\u8587\\u5E0F\\u5E37\\u5D34\\u5D6C\\u7325\\u732C\\u95F1\\u6CA9\\u6D27\\u6DA0\\u9036\\u5A13\\u73AE\\u97EA\\u8ECE\\u709C\\u7168\\u71A8\\u75FF\\u8249\\u9C94\",\r\n \"wen\": \"\\u761F\\u6E29\\u868A\\u6587\\u95FB\\u7EB9\\u543B\\u7A33\\u7D0A\\u95EE\\u520E\\u6120\\u960C\\u6C76\\u74BA\\u97EB\\u6B81\\u96EF\",\r\n \"weng\": \"\\u55E1\\u7FC1\\u74EE\\u84CA\\u8579\",\r\n \"wo\": \"\\u631D\\u8717\\u6DA1\\u7A9D\\u6211\\u65A1\\u5367\\u63E1\\u6C83\\u83B4\\u5E44\\u6E25\\u674C\\u809F\\u9F8C\",\r\n \"wu\": \"\\u5DEB\\u545C\\u94A8\\u4E4C\\u6C61\\u8BEC\\u5C4B\\u65E0\\u829C\\u68A7\\u543E\\u5434\\u6BCB\\u6B66\\u4E94\\u6342\\u5348\\u821E\\u4F0D\\u4FAE\\u575E\\u620A\\u96FE\\u6664\\u7269\\u52FF\\u52A1\\u609F\\u8BEF\\u5140\\u4EF5\\u9622\\u90AC\\u572C\\u82B4\\u5E91\\u6003\\u5FE4\\u6D6F\\u5BE4\\u8FD5\\u59A9\\u9A9B\\u727E\\u7110\\u9E49\\u9E5C\\u8708\\u92C8\\u9F2F\",\r\n \"xi\": \"\\u6614\\u7199\\u6790\\u897F\\u7852\\u77FD\\u6670\\u563B\\u5438\\u9521\\u727A\\u7A00\\u606F\\u5E0C\\u6089\\u819D\\u5915\\u60DC\\u7184\\u70EF\\u6EAA\\u6C50\\u7280\\u6A84\\u88AD\\u5E2D\\u4E60\\u5AB3\\u559C\\u94E3\\u6D17\\u7CFB\\u9699\\u620F\\u7EC6\\u50D6\\u516E\\u96B0\\u90D7\\u831C\\u8478\\u84F0\\u595A\\u550F\\u5F99\\u9969\\u960B\\u6D60\\u6DC5\\u5C63\\u5B09\\u73BA\\u6A28\\u66E6\\u89CB\\u6B37\\u71B9\\u798A\\u79A7\\u94B8\\u7699\\u7A78\\u8725\\u87CB\\u823E\\u7FB2\\u7C9E\\u7FD5\\u91AF\\u9F37\",\r\n \"xia\": \"\\u778E\\u867E\\u5323\\u971E\\u8F96\\u6687\\u5CE1\\u4FA0\\u72ED\\u4E0B\\u53A6\\u590F\\u5413\\u6380\\u846D\\u55C4\\u72CE\\u9050\\u7455\\u7856\\u7615\\u7F45\\u9EE0\",\r\n \"xian\": \"\\u9528\\u5148\\u4ED9\\u9C9C\\u7EA4\\u54B8\\u8D24\\u8854\\u8237\\u95F2\\u6D8E\\u5F26\\u5ACC\\u663E\\u9669\\u73B0\\u732E\\u53BF\\u817A\\u9985\\u7FA1\\u5BAA\\u9677\\u9650\\u7EBF\\u51BC\\u85D3\\u5C98\\u7303\\u66B9\\u5A34\\u6C19\\u7946\\u9E47\\u75EB\\u86AC\\u7B45\\u7C7C\\u9170\\u8DF9\",\r\n \"xiang\": \"\\u76F8\\u53A2\\u9576\\u9999\\u7BB1\\u8944\\u6E58\\u4E61\\u7FD4\\u7965\\u8BE6\\u60F3\\u54CD\\u4EAB\\u9879\\u5DF7\\u6A61\\u50CF\\u5411\\u8C61\\u8297\\u8459\\u9977\\u5EA0\\u9AA7\\u7F03\\u87D3\\u9C9E\\u98E8\",\r\n \"xiao\": \"\\u8427\\u785D\\u9704\\u524A\\u54EE\\u56A3\\u9500\\u6D88\\u5BB5\\u6DC6\\u6653\\u5C0F\\u5B5D\\u6821\\u8096\\u5578\\u7B11\\u6548\\u54D3\\u54BB\\u5D24\\u6F47\\u900D\\u9A81\\u7EE1\\u67AD\\u67B5\\u7B71\\u7BAB\\u9B48\",\r\n \"xie\": \"\\u6954\\u4E9B\\u6B47\\u874E\\u978B\\u534F\\u631F\\u643A\\u90AA\\u659C\\u80C1\\u8C10\\u5199\\u68B0\\u5378\\u87F9\\u61C8\\u6CC4\\u6CFB\\u8C22\\u5C51\\u5055\\u4EB5\\u52F0\\u71EE\\u85A4\\u64B7\\u5EE8\\u7023\\u9082\\u7EC1\\u7F2C\\u69AD\\u698D\\u6B59\\u8E9E\",\r\n \"xin\": \"\\u85AA\\u82AF\\u950C\\u6B23\\u8F9B\\u65B0\\u5FFB\\u5FC3\\u4FE1\\u8845\\u56DF\\u99A8\\u8398\\u6B46\\u94FD\\u946B\\u6615\",\r\n \"xing\": \"\\u661F\\u8165\\u7329\\u60FA\\u5174\\u5211\\u578B\\u5F62\\u90A2\\u884C\\u9192\\u5E78\\u674F\\u6027\\u59D3\\u9649\\u8347\\u8365\\u64E4\\u60BB\\u784E\",\r\n \"xiong\": \"\\u5144\\u51F6\\u80F8\\u5308\\u6C79\\u96C4\\u718A\\u828E\",\r\n \"xiu\": \"\\u4F11\\u4FEE\\u7F9E\\u673D\\u55C5\\u9508\\u79C0\\u8896\\u7EE3\\u83A0\\u5CAB\\u9990\\u5EA5\\u9E3A\\u8C85\\u9AF9\",\r\n \"xu\": \"\\u589F\\u620C\\u9700\\u865A\\u5618\\u987B\\u5F90\\u8BB8\\u84C4\\u9157\\u53D9\\u65ED\\u5E8F\\u755C\\u6064\\u7D6E\\u5A7F\\u7EEA\\u7EED\\u8BB4\\u8BE9\\u5729\\u84FF\\u6035\\u6D2B\\u6E86\\u987C\\u6829\\u7166\\u7809\\u76F1\\u80E5\\u7CC8\\u9191\",\r\n \"xuan\": \"\\u8F69\\u55A7\\u5BA3\\u60AC\\u65CB\\u7384\\u9009\\u7663\\u7729\\u7EDA\\u5107\\u8C16\\u8431\\u63CE\\u9994\\u6CEB\\u6D35\\u6E32\\u6F29\\u7487\\u6966\\u6684\\u70AB\\u714A\\u78B9\\u94C9\\u955F\\u75C3\",\r\n \"xue\": \"\\u9774\\u859B\\u5B66\\u7A74\\u96EA\\u8840\\u5671\\u6CF6\\u9CD5\",\r\n \"xun\": \"\\u52CB\\u718F\\u5FAA\\u65EC\\u8BE2\\u5BFB\\u9A6F\\u5DE1\\u6B89\\u6C5B\\u8BAD\\u8BAF\\u900A\\u8FC5\\u5DFD\\u57D9\\u8340\\u85B0\\u5CCB\\u5F87\\u6D54\\u66DB\\u7AA8\\u91BA\\u9C9F\",\r\n \"ya\": \"\\u538B\\u62BC\\u9E26\\u9E2D\\u5440\\u4E2B\\u82BD\\u7259\\u869C\\u5D16\\u8859\\u6DAF\\u96C5\\u54D1\\u4E9A\\u8BB6\\u4F22\\u63E0\\u5416\\u5C88\\u8FD3\\u5A05\\u740A\\u6860\\u6C29\\u7811\\u775A\\u75D6\",\r\n \"yan\": \"\\u7109\\u54BD\\u9609\\u70DF\\u6DF9\\u76D0\\u4E25\\u7814\\u8712\\u5CA9\\u5EF6\\u8A00\\u989C\\u960E\\u708E\\u6CBF\\u5944\\u63A9\\u773C\\u884D\\u6F14\\u8273\\u5830\\u71D5\\u538C\\u781A\\u96C1\\u5501\\u5F66\\u7130\\u5BB4\\u8C1A\\u9A8C\\u53A3\\u9765\\u8D5D\\u4FE8\\u5043\\u5156\\u8BA0\\u8C33\\u90FE\\u9122\\u82AB\\u83F8\\u5D26\\u6079\\u95EB\\u960F\\u6D07\\u6E6E\\u6EDF\\u598D\\u5AE3\\u7430\\u664F\\u80ED\\u814C\\u7131\\u7F68\\u7B75\\u917D\\u9B47\\u990D\\u9F39\",\r\n \"yang\": \"\\u6B83\\u592E\\u9E2F\\u79E7\\u6768\\u626C\\u4F6F\\u75A1\\u7F8A\\u6D0B\\u9633\\u6C27\\u4EF0\\u75D2\\u517B\\u6837\\u6F3E\\u5F89\\u600F\\u6CF1\\u7080\\u70CA\\u6059\\u86D8\\u9785\",\r\n \"yao\": \"\\u9080\\u8170\\u5996\\u7476\\u6447\\u5C27\\u9065\\u7A91\\u8C23\\u59DA\\u54AC\\u8200\\u836F\\u8981\\u8000\\u592D\\u723B\\u5406\\u5D3E\\u5FAD\\u7039\\u5E7A\\u73E7\\u6773\\u66DC\\u80B4\\u9E5E\\u7A88\\u7E47\\u9CD0\",\r\n \"ye\": \"\\u6930\\u564E\\u8036\\u7237\\u91CE\\u51B6\\u4E5F\\u9875\\u6396\\u4E1A\\u53F6\\u66F3\\u814B\\u591C\\u6DB2\\u8C12\\u90BA\\u63F6\\u9980\\u6654\\u70E8\\u94D8\",\r\n \"yi\": \"\\u4E00\\u58F9\\u533B\\u63D6\\u94F1\\u4F9D\\u4F0A\\u8863\\u9890\\u5937\\u9057\\u79FB\\u4EEA\\u80F0\\u7591\\u6C82\\u5B9C\\u59E8\\u5F5D\\u6905\\u8681\\u501A\\u5DF2\\u4E59\\u77E3\\u4EE5\\u827A\\u6291\\u6613\\u9091\\u5C79\\u4EBF\\u5F79\\u81C6\\u9038\\u8084\\u75AB\\u4EA6\\u88D4\\u610F\\u6BC5\\u5FC6\\u4E49\\u76CA\\u6EA2\\u8BE3\\u8BAE\\u8C0A\\u8BD1\\u5F02\\u7FFC\\u7FCC\\u7ECE\\u5208\\u5293\\u4F7E\\u8BD2\\u572A\\u572F\\u57F8\\u61FF\\u82E1\\u858F\\u5F08\\u5955\\u6339\\u5F0B\\u5453\\u54A6\\u54BF\\u566B\\u5CC4\\u5DB7\\u7317\\u9974\\u603F\\u6021\\u6092\\u6F2A\\u8FE4\\u9A7F\\u7F22\\u6BAA\\u8D3B\\u65D6\\u71A0\\u9487\\u9552\\u9571\\u75CD\\u7617\\u7654\\u7FCA\\u8864\\u8734\\u8223\\u7FBF\\u7FF3\\u914F\\u9EDF\",\r\n \"yin\": \"\\u8335\\u836B\\u56E0\\u6BB7\\u97F3\\u9634\\u59FB\\u541F\\u94F6\\u6DEB\\u5BC5\\u996E\\u5C39\\u5F15\\u9690\\u5370\\u80E4\\u911E\\u5819\\u831A\\u5591\\u72FA\\u5924\\u6C24\\u94DF\\u763E\\u8693\\u972A\\u9F88\",\r\n \"ying\": \"\\u82F1\\u6A31\\u5A74\\u9E70\\u5E94\\u7F28\\u83B9\\u8424\\u8425\\u8367\\u8747\\u8FCE\\u8D62\\u76C8\\u5F71\\u9896\\u786C\\u6620\\u5B34\\u90E2\\u8314\\u83BA\\u8426\\u6484\\u5624\\u81BA\\u6EE2\\u6F46\\u701B\\u745B\\u748E\\u6979\\u9E66\\u763F\\u988D\\u7F42\",\r\n \"yo\": \"\\u54DF\\u5537\",\r\n \"yong\": \"\\u62E5\\u4F63\\u81C3\\u75C8\\u5EB8\\u96CD\\u8E0A\\u86F9\\u548F\\u6CF3\\u6D8C\\u6C38\\u607F\\u52C7\\u7528\\u4FD1\\u58C5\\u5889\\u6175\\u9095\\u955B\\u752C\\u9CD9\\u9954\",\r\n \"you\": \"\\u5E7D\\u4F18\\u60A0\\u5FE7\\u5C24\\u7531\\u90AE\\u94C0\\u72B9\\u6CB9\\u6E38\\u9149\\u6709\\u53CB\\u53F3\\u4F51\\u91C9\\u8BF1\\u53C8\\u5E7C\\u5363\\u6538\\u4F91\\u83B8\\u5466\\u56FF\\u5BA5\\u67DA\\u7337\\u7256\\u94D5\\u75A3\\u8763\\u9C7F\\u9EDD\\u9F2C\",\r\n \"yu\": \"\\u8FC2\\u6DE4\\u4E8E\\u76C2\\u6986\\u865E\\u611A\\u8206\\u4F59\\u4FDE\\u903E\\u9C7C\\u6109\\u6E1D\\u6E14\\u9685\\u4E88\\u5A31\\u96E8\\u4E0E\\u5C7F\\u79B9\\u5B87\\u8BED\\u7FBD\\u7389\\u57DF\\u828B\\u90C1\\u5401\\u9047\\u55BB\\u5CEA\\u5FA1\\u6108\\u6B32\\u72F1\\u80B2\\u8A89\\u6D74\\u5BD3\\u88D5\\u9884\\u8C6B\\u9A6D\\u79BA\\u6BD3\\u4F1B\\u4FE3\\u8C00\\u8C15\\u8438\\u84E3\\u63C4\\u5581\\u5704\\u5709\\u5D5B\\u72F3\\u996B\\u5EBE\\u9608\\u59AA\\u59A4\\u7EA1\\u745C\\u6631\\u89CE\\u8174\\u6B24\\u65BC\\u715C\\u71E0\\u807F\\u94B0\\u9E46\\u7610\\u7600\\u7AB3\\u8753\\u7AFD\\u8201\\u96E9\\u9F89\",\r\n \"yuan\": \"\\u9E33\\u6E0A\\u51A4\\u5143\\u57A3\\u8881\\u539F\\u63F4\\u8F95\\u56ED\\u5458\\u5706\\u733F\\u6E90\\u7F18\\u8FDC\\u82D1\\u613F\\u6028\\u9662\\u586C\\u6C85\\u5A9B\\u7457\\u6A7C\\u7230\\u7722\\u9E22\\u8788\\u9F0B\",\r\n \"yue\": \"\\u66F0\\u7EA6\\u8D8A\\u8DC3\\u94A5\\u5CB3\\u7CA4\\u6708\\u60A6\\u9605\\u9FA0\\u6A3E\\u5216\\u94BA\",\r\n \"yun\": \"\\u8018\\u4E91\\u90E7\\u5300\\u9668\\u5141\\u8FD0\\u8574\\u915D\\u6655\\u97F5\\u5B55\\u90D3\\u82B8\\u72C1\\u607D\\u7EAD\\u6B92\\u6600\\u6C32\",\r\n \"za\": \"\\u531D\\u7838\\u6742\\u62F6\\u5482\",\r\n \"zai\": \"\\u683D\\u54C9\\u707E\\u5BB0\\u8F7D\\u518D\\u5728\\u54B1\\u5D3D\\u753E\",\r\n \"zan\": \"\\u6512\\u6682\\u8D5E\\u74D2\\u661D\\u7C2A\\u7CCC\\u8DB1\\u933E\",\r\n \"zang\": \"\\u8D43\\u810F\\u846C\\u5958\\u6215\\u81E7\",\r\n \"zao\": \"\\u906D\\u7CDF\\u51FF\\u85FB\\u67A3\\u65E9\\u6FA1\\u86A4\\u8E81\\u566A\\u9020\\u7682\\u7076\\u71E5\\u5523\\u7F2B\",\r\n \"ze\": \"\\u8D23\\u62E9\\u5219\\u6CFD\\u4EC4\\u8D5C\\u5567\\u8FEE\\u6603\\u7B2E\\u7BA6\\u8234\",\r\n \"zei\": \"\\u8D3C\",\r\n \"zen\": \"\\u600E\\u8C2E\",\r\n \"zeng\": \"\\u589E\\u618E\\u66FE\\u8D60\\u7F2F\\u7511\\u7F7E\\u9503\",\r\n \"zha\": \"\\u624E\\u55B3\\u6E23\\u672D\\u8F67\\u94E1\\u95F8\\u7728\\u6805\\u69A8\\u548B\\u4E4D\\u70B8\\u8BC8\\u63F8\\u5412\\u54A4\\u54F3\\u600D\\u781F\\u75C4\\u86B1\\u9F44\",\r\n \"zhai\": \"\\u6458\\u658B\\u5B85\\u7A84\\u503A\\u5BE8\\u7826\",\r\n \"zhan\": \"\\u77BB\\u6BE1\\u8A79\\u7C98\\u6CBE\\u76CF\\u65A9\\u8F97\\u5D2D\\u5C55\\u8638\\u6808\\u5360\\u6218\\u7AD9\\u6E5B\\u7EFD\\u8C35\\u640C\\u65C3\",\r\n \"zhang\": \"\\u6A1F\\u7AE0\\u5F70\\u6F33\\u5F20\\u638C\\u6DA8\\u6756\\u4E08\\u5E10\\u8D26\\u4ED7\\u80C0\\u7634\\u969C\\u4EC9\\u9123\\u5E5B\\u5D82\\u7350\\u5ADC\\u748B\\u87D1\",\r\n \"zhao\": \"\\u62DB\\u662D\\u627E\\u6CBC\\u8D75\\u7167\\u7F69\\u5146\\u8087\\u53EC\\u722A\\u8BCF\\u68F9\\u948A\\u7B0A\",\r\n \"zhe\": \"\\u906E\\u6298\\u54F2\\u86F0\\u8F99\\u8005\\u9517\\u8517\\u8FD9\\u6D59\\u8C2A\\u966C\\u67D8\\u8F84\\u78D4\\u9E67\\u891A\\u8707\\u8D6D\",\r\n \"zhen\": \"\\u73CD\\u659F\\u771F\\u7504\\u7827\\u81FB\\u8D1E\\u9488\\u4FA6\\u6795\\u75B9\\u8BCA\\u9707\\u632F\\u9547\\u9635\\u7F1C\\u6862\\u699B\\u8F78\\u8D48\\u80D7\\u6715\\u796F\\u755B\\u9E29\",\r\n \"zheng\": \"\\u84B8\\u6323\\u7741\\u5F81\\u72F0\\u4E89\\u6014\\u6574\\u62EF\\u6B63\\u653F\\u5E27\\u75C7\\u90D1\\u8BC1\\u8BE4\\u5CE5\\u94B2\\u94EE\\u7B5D\",\r\n \"zhi\": \"\\u829D\\u679D\\u652F\\u5431\\u8718\\u77E5\\u80A2\\u8102\\u6C41\\u4E4B\\u7EC7\\u804C\\u76F4\\u690D\\u6B96\\u6267\\u503C\\u4F84\\u5740\\u6307\\u6B62\\u8DBE\\u53EA\\u65E8\\u7EB8\\u5FD7\\u631A\\u63B7\\u81F3\\u81F4\\u7F6E\\u5E1C\\u5CD9\\u5236\\u667A\\u79E9\\u7A1A\\u8D28\\u7099\\u75D4\\u6EDE\\u6CBB\\u7A92\\u536E\\u965F\\u90C5\\u57F4\\u82B7\\u646D\\u5E19\\u5FEE\\u5F58\\u54AB\\u9A98\\u6809\\u67B3\\u6800\\u684E\\u8F75\\u8F7E\\u6534\\u8D3D\\u81A3\\u7949\\u7957\\u9EF9\\u96C9\\u9E37\\u75E3\\u86ED\\u7D77\\u916F\\u8DD6\\u8E2C\\u8E2F\\u8C78\\u89EF\",\r\n \"zhong\": \"\\u4E2D\\u76C5\\u5FE0\\u949F\\u8877\\u7EC8\\u79CD\\u80BF\\u91CD\\u4EF2\\u4F17\\u51A2\\u953A\\u87BD\\u8202\\u822F\\u8E35\",\r\n \"zhou\": \"\\u821F\\u5468\\u5DDE\\u6D32\\u8BCC\\u7CA5\\u8F74\\u8098\\u5E1A\\u5492\\u76B1\\u5B99\\u663C\\u9AA4\\u5544\\u7740\\u501C\\u8BF9\\u836E\\u9B3B\\u7EA3\\u80C4\\u78A1\\u7C40\\u8233\\u914E\\u9CB7\",\r\n \"zhu\": \"\\u73E0\\u682A\\u86DB\\u6731\\u732A\\u8BF8\\u8BDB\\u9010\\u7AF9\\u70DB\\u716E\\u62C4\\u77A9\\u5631\\u4E3B\\u8457\\u67F1\\u52A9\\u86C0\\u8D2E\\u94F8\\u7B51\\u4F4F\\u6CE8\\u795D\\u9A7B\\u4F2B\\u4F8F\\u90BE\\u82CE\\u8331\\u6D19\\u6E1A\\u6F74\\u9A7A\\u677C\\u69E0\\u6A65\\u70B7\\u94E2\\u75B0\\u7603\\u86B0\\u7AFA\\u7BB8\\u7FE5\\u8E85\\u9E88\",\r\n \"zhua\": \"\\u6293\",\r\n \"zhuai\": \"\\u62FD\",\r\n \"zhuan\": \"\\u4E13\\u7816\\u8F6C\\u64B0\\u8D5A\\u7BC6\\u629F\\u556D\\u989B\",\r\n \"zhuang\": \"\\u6869\\u5E84\\u88C5\\u5986\\u649E\\u58EE\\u72B6\\u4E2C\",\r\n \"zhui\": \"\\u690E\\u9525\\u8FFD\\u8D58\\u5760\\u7F00\\u8411\\u9A93\\u7F12\",\r\n \"zhun\": \"\\u8C06\\u51C6\",\r\n \"zhuo\": \"\\u6349\\u62D9\\u5353\\u684C\\u7422\\u8301\\u914C\\u707C\\u6D4A\\u502C\\u8BFC\\u5EF4\\u855E\\u64E2\\u555C\\u6D5E\\u6DBF\\u6753\\u712F\\u799A\\u65AB\",\r\n \"zi\": \"\\u5179\\u54A8\\u8D44\\u59FF\\u6ECB\\u6DC4\\u5B5C\\u7D2B\\u4ED4\\u7C7D\\u6ED3\\u5B50\\u81EA\\u6E0D\\u5B57\\u8C18\\u5D6B\\u59CA\\u5B73\\u7F01\\u6893\\u8F8E\\u8D40\\u6063\\u7726\\u9531\\u79ED\\u8014\\u7B2B\\u7CA2\\u89DC\\u8A3E\\u9CBB\\u9AED\",\r\n \"zong\": \"\\u9B03\\u68D5\\u8E2A\\u5B97\\u7EFC\\u603B\\u7EB5\\u8159\\u7CBD\",\r\n \"zou\": \"\\u90B9\\u8D70\\u594F\\u63CD\\u9139\\u9CB0\",\r\n \"zu\": \"\\u79DF\\u8DB3\\u5352\\u65CF\\u7956\\u8BC5\\u963B\\u7EC4\\u4FCE\\u83F9\\u5550\\u5F82\\u9A75\\u8E74\",\r\n \"zuan\": \"\\u94BB\\u7E82\\u6525\\u7F35\",\r\n \"zui\": \"\\u5634\\u9189\\u6700\\u7F6A\",\r\n \"zun\": \"\\u5C0A\\u9075\\u6499\\u6A3D\\u9CDF\",\r\n \"zuo\": \"\\u6628\\u5DE6\\u4F50\\u67DE\\u505A\\u4F5C\\u5750\\u5EA7\\u961D\\u963C\\u80D9\\u795A\\u9162\",\r\n \"diu\": \"\\u94E5\",\r\n \"nou\": \"\\u8028\",\r\n \"bia\": \"\\u9ADF\"\r\n };\r\n this.polyphone = {\r\n \"19969\": \"DZ\",\r\n \"19975\": \"WM\",\r\n \"19988\": \"QJ\",\r\n \"20048\": \"YL\",\r\n \"20056\": \"SC\",\r\n \"20060\": \"NM\",\r\n \"20094\": \"QG\",\r\n \"20127\": \"QJ\",\r\n \"20167\": \"QC\",\r\n \"20193\": \"YG\",\r\n \"20250\": \"KH\",\r\n \"20256\": \"ZC\",\r\n \"20282\": \"SC\",\r\n \"20285\": \"QJG\",\r\n \"20291\": \"TD\",\r\n \"20314\": \"YD\",\r\n \"20340\": \"NE\",\r\n \"20375\": \"TD\",\r\n \"20389\": \"YJ\",\r\n \"20391\": \"CZ\",\r\n \"20415\": \"PB\",\r\n \"20446\": \"YS\",\r\n \"20447\": \"SQ\",\r\n \"20504\": \"TC\",\r\n \"20608\": \"KG\",\r\n \"20854\": \"QJ\",\r\n \"20857\": \"ZC\",\r\n \"20911\": \"PF\",\r\n \"20985\": \"AW\",\r\n \"21032\": \"PB\",\r\n \"21048\": \"XQ\",\r\n \"21049\": \"SC\",\r\n \"21089\": \"YS\",\r\n \"21119\": \"JC\",\r\n \"21242\": \"SB\",\r\n \"21273\": \"SC\",\r\n \"21305\": \"YP\",\r\n \"21306\": \"QO\",\r\n \"21330\": \"ZC\",\r\n \"21333\": \"SDC\",\r\n \"21345\": \"QK\",\r\n \"21378\": \"CA\",\r\n \"21397\": \"SC\",\r\n \"21414\": \"XS\",\r\n \"21442\": \"SC\",\r\n \"21477\": \"JG\",\r\n \"21480\": \"TD\",\r\n \"21484\": \"ZS\",\r\n \"21494\": \"YX\",\r\n \"21505\": \"YX\",\r\n \"21512\": \"HG\",\r\n \"21523\": \"XH\",\r\n \"21537\": \"PB\",\r\n \"21542\": \"PF\",\r\n \"21549\": \"KH\",\r\n \"21571\": \"E\",\r\n \"21574\": \"DA\",\r\n \"21588\": \"TD\",\r\n \"21589\": \"O\",\r\n \"21618\": \"ZC\",\r\n \"21621\": \"KHA\",\r\n \"21632\": \"ZJ\",\r\n \"21654\": \"KG\",\r\n \"21679\": \"LKG\",\r\n \"21683\": \"KH\",\r\n \"21710\": \"A\",\r\n \"21719\": \"YH\",\r\n \"21734\": \"WOE\",\r\n \"21769\": \"A\",\r\n \"21780\": \"WN\",\r\n \"21804\": \"XH\",\r\n \"21834\": \"A\",\r\n \"21899\": \"ZD\",\r\n \"21903\": \"RN\",\r\n \"21908\": \"WO\",\r\n \"21939\": \"ZC\",\r\n \"21956\": \"SA\",\r\n \"21964\": \"YA\",\r\n \"21970\": \"TD\",\r\n \"22003\": \"A\",\r\n \"22031\": \"JG\",\r\n \"22040\": \"XS\",\r\n \"22060\": \"ZC\",\r\n \"22066\": \"ZC\",\r\n \"22079\": \"MH\",\r\n \"22129\": \"XJ\",\r\n \"22179\": \"XA\",\r\n \"22237\": \"NJ\",\r\n \"22244\": \"TD\",\r\n \"22280\": \"JQ\",\r\n \"22300\": \"YH\",\r\n \"22313\": \"XW\",\r\n \"22331\": \"YQ\",\r\n \"22343\": \"YJ\",\r\n \"22351\": \"PH\",\r\n \"22395\": \"DC\",\r\n \"22412\": \"TD\",\r\n \"22484\": \"PB\",\r\n \"22500\": \"PB\",\r\n \"22534\": \"ZD\",\r\n \"22549\": \"DH\",\r\n \"22561\": \"PB\",\r\n \"22612\": \"TD\",\r\n \"22771\": \"KQ\",\r\n \"22831\": \"HB\",\r\n \"22841\": \"JG\",\r\n \"22855\": \"QJ\",\r\n \"22865\": \"XQ\",\r\n \"23013\": \"ML\",\r\n \"23081\": \"WM\",\r\n \"23487\": \"SX\",\r\n \"23558\": \"QJ\",\r\n \"23561\": \"YW\",\r\n \"23586\": \"YW\",\r\n \"23614\": \"YW\",\r\n \"23615\": \"SN\",\r\n \"23631\": \"PB\",\r\n \"23646\": \"ZS\",\r\n \"23663\": \"ZT\",\r\n \"23673\": \"YG\",\r\n \"23762\": \"TD\",\r\n \"23769\": \"ZS\",\r\n \"23780\": \"QJ\",\r\n \"23884\": \"QK\",\r\n \"24055\": \"XH\",\r\n \"24113\": \"DC\",\r\n \"24162\": \"ZC\",\r\n \"24191\": \"GA\",\r\n \"24273\": \"QJ\",\r\n \"24324\": \"NL\",\r\n \"24377\": \"TD\",\r\n \"24378\": \"QJ\",\r\n \"24439\": \"PF\",\r\n \"24554\": \"ZS\",\r\n \"24683\": \"TD\",\r\n \"24694\": \"WE\",\r\n \"24733\": \"LK\",\r\n \"24925\": \"TN\",\r\n \"25094\": \"ZG\",\r\n \"25100\": \"XQ\",\r\n \"25103\": \"XH\",\r\n \"25153\": \"PB\",\r\n \"25170\": \"PB\",\r\n \"25179\": \"KG\",\r\n \"25203\": \"PB\",\r\n \"25240\": \"ZS\",\r\n \"25282\": \"FB\",\r\n \"25303\": \"NA\",\r\n \"25324\": \"KG\",\r\n \"25341\": \"ZY\",\r\n \"25373\": \"WZ\",\r\n \"25375\": \"XJ\",\r\n \"25384\": \"A\",\r\n \"25457\": \"A\",\r\n \"25528\": \"SD\",\r\n \"25530\": \"SC\",\r\n \"25552\": \"TD\",\r\n \"25774\": \"ZC\",\r\n \"25874\": \"ZC\",\r\n \"26044\": \"YW\",\r\n \"26080\": \"WM\",\r\n \"26292\": \"PB\",\r\n \"26333\": \"PB\",\r\n \"26355\": \"ZY\",\r\n \"26366\": \"CZ\",\r\n \"26397\": \"ZC\",\r\n \"26399\": \"QJ\",\r\n \"26415\": \"ZS\",\r\n \"26451\": \"SB\",\r\n \"26526\": \"ZC\",\r\n \"26552\": \"JG\",\r\n \"26561\": \"TD\",\r\n \"26588\": \"JG\",\r\n \"26597\": \"CZ\",\r\n \"26629\": \"ZS\",\r\n \"26638\": \"YL\",\r\n \"26646\": \"XQ\",\r\n \"26653\": \"KG\",\r\n \"26657\": \"XJ\",\r\n \"26727\": \"HG\",\r\n \"26894\": \"ZC\",\r\n \"26937\": \"ZS\",\r\n \"26946\": \"ZC\",\r\n \"26999\": \"KJ\",\r\n \"27099\": \"KJ\",\r\n \"27449\": \"YQ\",\r\n \"27481\": \"XS\",\r\n \"27542\": \"ZS\",\r\n \"27663\": \"ZS\",\r\n \"27748\": \"TS\",\r\n \"27784\": \"SC\",\r\n \"27788\": \"ZD\",\r\n \"27795\": \"TD\",\r\n \"27812\": \"O\",\r\n \"27850\": \"PB\",\r\n \"27852\": \"MB\",\r\n \"27895\": \"SL\",\r\n \"27898\": \"PL\",\r\n \"27973\": \"QJ\",\r\n \"27981\": \"KH\",\r\n \"27986\": \"HX\",\r\n \"27994\": \"XJ\",\r\n \"28044\": \"YC\",\r\n \"28065\": \"WG\",\r\n \"28177\": \"SM\",\r\n \"28267\": \"QJ\",\r\n \"28291\": \"KH\",\r\n \"28337\": \"ZQ\",\r\n \"28463\": \"TL\",\r\n \"28548\": \"DC\",\r\n \"28601\": \"TD\",\r\n \"28689\": \"PB\",\r\n \"28805\": \"JG\",\r\n \"28820\": \"QG\",\r\n \"28846\": \"PB\",\r\n \"28952\": \"TD\",\r\n \"28975\": \"ZC\",\r\n \"29100\": \"A\",\r\n \"29325\": \"QJ\",\r\n \"29575\": \"SL\",\r\n \"29602\": \"FB\",\r\n \"30010\": \"TD\",\r\n \"30044\": \"CX\",\r\n \"30058\": \"PF\",\r\n \"30091\": \"YSP\",\r\n \"30111\": \"YN\",\r\n \"30229\": \"XJ\",\r\n \"30427\": \"SC\",\r\n \"30465\": \"SX\",\r\n \"30631\": \"YQ\",\r\n \"30655\": \"QJ\",\r\n \"30684\": \"QJG\",\r\n \"30707\": \"SD\",\r\n \"30729\": \"XH\",\r\n \"30796\": \"LG\",\r\n \"30917\": \"PB\",\r\n \"31074\": \"NM\",\r\n \"31085\": \"JZ\",\r\n \"31109\": \"SC\",\r\n \"31181\": \"ZC\",\r\n \"31192\": \"MLB\",\r\n \"31293\": \"JQ\",\r\n \"31400\": \"YX\",\r\n \"31584\": \"YJ\",\r\n \"31896\": \"ZN\",\r\n \"31909\": \"ZY\",\r\n \"31995\": \"XJ\",\r\n \"32321\": \"PF\",\r\n \"32327\": \"ZY\",\r\n \"32418\": \"HG\",\r\n \"32420\": \"XQ\",\r\n \"32421\": \"HG\",\r\n \"32438\": \"LG\",\r\n \"32473\": \"GJ\",\r\n \"32488\": \"TD\",\r\n \"32521\": \"QJ\",\r\n \"32527\": \"PB\",\r\n \"32562\": \"ZSQ\",\r\n \"32564\": \"JZ\",\r\n \"32735\": \"ZD\",\r\n \"32793\": \"PB\",\r\n \"33071\": \"PF\",\r\n \"33098\": \"XL\",\r\n \"33100\": \"YA\",\r\n \"33152\": \"PB\",\r\n \"33261\": \"CX\",\r\n \"33324\": \"BP\",\r\n \"33333\": \"TD\",\r\n \"33406\": \"YA\",\r\n \"33426\": \"WM\",\r\n \"33432\": \"PB\",\r\n \"33445\": \"JG\",\r\n \"33486\": \"ZN\",\r\n \"33493\": \"TS\",\r\n \"33507\": \"QJ\",\r\n \"33540\": \"QJ\",\r\n \"33544\": \"ZC\",\r\n \"33564\": \"XQ\",\r\n \"33617\": \"YT\",\r\n \"33632\": \"QJ\",\r\n \"33636\": \"XH\",\r\n \"33637\": \"YX\",\r\n \"33694\": \"WG\",\r\n \"33705\": \"PF\",\r\n \"33728\": \"YW\",\r\n \"33882\": \"SR\",\r\n \"34067\": \"WM\",\r\n \"34074\": \"YW\",\r\n \"34121\": \"QJ\",\r\n \"34255\": \"ZC\",\r\n \"34259\": \"XL\",\r\n \"34425\": \"JH\",\r\n \"34430\": \"XH\",\r\n \"34485\": \"KH\",\r\n \"34503\": \"YS\",\r\n \"34532\": \"HG\",\r\n \"34552\": \"XS\",\r\n \"34558\": \"YE\",\r\n \"34593\": \"ZL\",\r\n \"34660\": \"YQ\",\r\n \"34892\": \"XH\",\r\n \"34928\": \"SC\",\r\n \"34999\": \"QJ\",\r\n \"35048\": \"PB\",\r\n \"35059\": \"SC\",\r\n \"35098\": \"ZC\",\r\n \"35203\": \"TQ\",\r\n \"35265\": \"JX\",\r\n \"35299\": \"JX\",\r\n \"35782\": \"SZ\",\r\n \"35828\": \"YS\",\r\n \"35830\": \"E\",\r\n \"35843\": \"TD\",\r\n \"35895\": \"YG\",\r\n \"35977\": \"MH\",\r\n \"36158\": \"JG\",\r\n \"36228\": \"QJ\",\r\n \"36426\": \"XQ\",\r\n \"36466\": \"DC\",\r\n \"36710\": \"JC\",\r\n \"36711\": \"ZYG\",\r\n \"36767\": \"PB\",\r\n \"36866\": \"SK\",\r\n \"36951\": \"YW\",\r\n \"37034\": \"YX\",\r\n \"37063\": \"XH\",\r\n \"37218\": \"ZC\",\r\n \"37325\": \"ZC\",\r\n \"38063\": \"PB\",\r\n \"38079\": \"TD\",\r\n \"38085\": \"QY\",\r\n \"38107\": \"DC\",\r\n \"38116\": \"TD\",\r\n \"38123\": \"YD\",\r\n \"38224\": \"HG\",\r\n \"38241\": \"XTC\",\r\n \"38271\": \"ZC\",\r\n \"38415\": \"YE\",\r\n \"38426\": \"KH\",\r\n \"38461\": \"YD\",\r\n \"38463\": \"AE\",\r\n \"38466\": \"PB\",\r\n \"38477\": \"XJ\",\r\n \"38518\": \"YT\",\r\n \"38551\": \"WK\",\r\n \"38585\": \"ZC\",\r\n \"38704\": \"XS\",\r\n \"38739\": \"LJ\",\r\n \"38761\": \"GJ\",\r\n \"38808\": \"SQ\",\r\n \"39048\": \"JG\",\r\n \"39049\": \"XJ\",\r\n \"39052\": \"HG\",\r\n \"39076\": \"CZ\",\r\n \"39271\": \"XT\",\r\n \"39534\": \"TD\",\r\n \"39552\": \"TD\",\r\n \"39584\": \"PB\",\r\n \"39647\": \"SB\",\r\n \"39730\": \"LG\",\r\n \"39748\": \"TPB\",\r\n \"40109\": \"ZQ\",\r\n \"40479\": \"ND\",\r\n \"40516\": \"HG\",\r\n \"40536\": \"HG\",\r\n \"40583\": \"QJ\",\r\n \"40765\": \"YQ\",\r\n \"40784\": \"QJ\",\r\n \"40840\": \"YK\",\r\n \"40863\": \"QJG\"\r\n };\r\n }\r\n\r\n /**\r\n * 获取拼音首字母\r\n * @param {String} str 输入的中文字符串\r\n */\r\n\r\n }, {\r\n key: \"getCamelChars\",\r\n value: function getCamelChars(str) {\r\n if (typeof str != \"string\") throw new Error(-1, \"函数getCamelChars需要字符串类型参数!\");\r\n var chars = new Array(); //保存中间结果的数组\r\n for (var i = 0, len = str.length; i < len; i++) {\r\n //获得unicode码\r\n var ch = str.charAt(i);\r\n //检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理\r\n chars.push(this._getChar(ch));\r\n }\r\n //处理arrResult,返回所有可能的拼音首字母串数组\r\n var result = this._getResult(chars);\r\n\r\n this.options.charCase === 1 ? result = result.toLowerCase() : this.options.charCase === 2 ? result = result.toUpperCase() : {};\r\n return result;\r\n }\r\n\r\n /**\r\n * 获取拼音\r\n * @param {String} str 输入的中文字符串\r\n */\r\n\r\n }, {\r\n key: \"getFullChars\",\r\n value: function getFullChars(str) {\r\n var len = str.length;\r\n var result = \"\";\r\n var reg = new RegExp('[a-zA-Z0-9\\- ]');\r\n for (var i = 0; i < len; i++) {\r\n var ch = str.substr(i, 1);\r\n var unicode = ch.charCodeAt(0);\r\n //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数\r\n if (unicode > 40869 || unicode < 19968) {\r\n result += ch;\r\n } else {\r\n var name = this._getFullChar(ch);\r\n if (name !== false) {\r\n result += name;\r\n }\r\n }\r\n }\r\n\r\n this.options.charCase === 1 ? result = result.toLowerCase() : this.options.charCase === 2 ? result = result.toUpperCase() : {};\r\n return result;\r\n }\r\n }, {\r\n key: \"_getFullChar\",\r\n value: function _getFullChar(ch) {\r\n for (var key in this.full_dict) {\r\n if (this.full_dict[key].indexOf(ch) != -1) {\r\n return this._capitalize(key);\r\n break;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * 首字母大写\r\n */\r\n\r\n }, {\r\n key: \"_capitalize\",\r\n value: function _capitalize(str) {\r\n if (str.length > 0) {\r\n var first = str.substr(0, 1).toUpperCase();\r\n var spare = str.substr(1, str.length);\r\n return first + spare;\r\n }\r\n }\r\n }, {\r\n key: \"_getChar\",\r\n value: function _getChar(ch) {\r\n var unicode = ch.charCodeAt(0);\r\n //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数\r\n if (unicode > 40869 || unicode < 19968) return ch; //dealWithOthers(ch);\r\n //检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母\r\n if (!this.options.checkPolyphone) return this.char_dict.charAt(unicode - 19968);\r\n return this.polyphone[unicode] ? this.polyphone[unicode] : this.char_dict.charAt(unicode - 19968);\r\n }\r\n }, {\r\n key: \"_getResult\",\r\n value: function _getResult(chars) {\r\n if (!this.options.checkPolyphone) return chars.join('');\r\n var result = [''];\r\n for (var i = 0, len = chars.length; i < len; i++) {\r\n var str = chars[i];\r\n var strLen = str.length;\r\n if (strLen == 1) {\r\n for (var j = 0; j < result.length; j++) {\r\n result[j] += str;\r\n }\r\n } else {\r\n var swap1 = result.slice(0);\r\n result = [];\r\n for (var _j = 0; _j < strLen; _j++) {\r\n //复制一个相同的arrResult\r\n var swap2 = swap1.slice(0);\r\n //把当前字符str[k]添加到每个元素末尾\r\n for (var k = 0; k < swap2.length; k++) {\r\n swap2[k] += str.charAt(_j);\r\n }\r\n //把复制并修改后的数组连接到arrResult上\r\n result = result.concat(swap2);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n }]);\r\n\r\n return Pinyin;\r\n}();\r\n\r\nmodule.exports = Pinyin;", "/**\r\n * @fileOverview 导出默认的实例\r\n * @author waterchestnut 2017/3/13\r\n * @module\r\n */\r\n'use strict';\r\n\r\nlet pinyin = new (require('./dist/pinyin'))({charCase:0});\r\n/*pinyin.setOptions({checkPolyphone: true, charCase: 0});\r\nconsole.log(pinyin.getFullChars('管理员'))\r\nconsole.log(pinyin.getCamelChars('管理员'))\r\nconsole.log(pinyin.getCamelChars('1234'))\r\nconsole.log(pinyin.getCamelChars('english'))\r\nconsole.log(pinyin.getCamelChars('昕'))\r\nconsole.log(pinyin.getCamelChars('佛'))\r\nconsole.log(pinyin.getFullChars('佛'))\r\nconsole.log(pinyin.getFullChars('凃一二'))\r\nconsole.log(pinyin.getCamelChars('凃一二'))*/\r\nmodule.exports = pinyin;"],
+ "mappings": "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,YACR,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,MAAM;AAAA,YACN,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,MAAM;AAAA,YACN,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,MAAM;AAAA,YACN,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,MAAM;AAAA,YACN,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,OAAO;AAAA,YACP,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,OAAO;AAAA,YACP,MAAM;AAAA,YACN,MAAM;AAAA,YACN,OAAO;AAAA,YACP,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,MAAM;AAAA,YACN,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,MAAM;AAAA,YACN,OAAO;AAAA,YACP,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,MAAM;AAAA,YACN,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,MAAM;AAAA,YACN,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA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,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT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",
+ "names": ["Pinyin"]
+}
diff --git a/jiuyi2/unpackage/dist/cache/.vite/deps/lodash.js b/jiuyi2/unpackage/dist/cache/.vite/deps/lodash.js
new file mode 100644
index 00000000..d8bceff2
--- /dev/null
+++ b/jiuyi2/unpackage/dist/cache/.vite/deps/lodash.js
@@ -0,0 +1,5497 @@
+import {
+ __commonJS
+} from "./chunk-TDUMLE5V.js";
+
+// ../../../../../桌面/jiuyiUniapp/jiuyi2/node_modules/lodash/lodash.js
+var require_lodash = __commonJS({
+ "../../../../../桌面/jiuyiUniapp/jiuyi2/node_modules/lodash/lodash.js"(exports, module) {
+ (function() {
+ var undefined;
+ var VERSION = "4.17.21";
+ var LARGE_ARRAY_SIZE = 200;
+ var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`";
+ var HASH_UNDEFINED = "__lodash_hash_undefined__";
+ var MAX_MEMOIZE_SIZE = 500;
+ var PLACEHOLDER = "__lodash_placeholder__";
+ var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
+ var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
+ var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512;
+ var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "...";
+ var HOT_COUNT = 800, HOT_SPAN = 16;
+ var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3;
+ var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0;
+ var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
+ var wrapFlags = [
+ ["ary", WRAP_ARY_FLAG],
+ ["bind", WRAP_BIND_FLAG],
+ ["bindKey", WRAP_BIND_KEY_FLAG],
+ ["curry", WRAP_CURRY_FLAG],
+ ["curryRight", WRAP_CURRY_RIGHT_FLAG],
+ ["flip", WRAP_FLIP_FLAG],
+ ["partial", WRAP_PARTIAL_FLAG],
+ ["partialRight", WRAP_PARTIAL_RIGHT_FLAG],
+ ["rearg", WRAP_REARG_FLAG]
+ ];
+ var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]";
+ var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
+ var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
+ var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
+ var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g;
+ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source);
+ var reTrimStart = /^\s+/;
+ var reWhitespace = /\s/;
+ var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /;
+ var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
+ var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
+ var reEscapeChar = /\\(\\)?/g;
+ var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
+ var reFlags = /\w*$/;
+ var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
+ var reIsBinary = /^0b[01]+$/i;
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
+ var reIsOctal = /^0o[0-7]+$/i;
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
+ var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
+ var reNoMatch = /($^)/;
+ var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
+ var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
+ var rsApos = "['’]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d";
+ var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")";
+ var reApos = RegExp(rsApos, "g");
+ var reComboMark = RegExp(rsCombo, "g");
+ var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
+ var reUnicodeWord = RegExp([
+ rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")",
+ rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")",
+ rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower,
+ rsUpper + "+" + rsOptContrUpper,
+ rsOrdUpper,
+ rsOrdLower,
+ rsDigits,
+ rsEmoji
+ ].join("|"), "g");
+ var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]");
+ var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
+ var contextProps = [
+ "Array",
+ "Buffer",
+ "DataView",
+ "Date",
+ "Error",
+ "Float32Array",
+ "Float64Array",
+ "Function",
+ "Int8Array",
+ "Int16Array",
+ "Int32Array",
+ "Map",
+ "Math",
+ "Object",
+ "Promise",
+ "RegExp",
+ "Set",
+ "String",
+ "Symbol",
+ "TypeError",
+ "Uint8Array",
+ "Uint8ClampedArray",
+ "Uint16Array",
+ "Uint32Array",
+ "WeakMap",
+ "_",
+ "clearTimeout",
+ "isFinite",
+ "parseInt",
+ "setTimeout"
+ ];
+ var templateCounter = -1;
+ var typedArrayTags = {};
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
+ typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
+ var cloneableTags = {};
+ cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
+ cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
+ var deburredLetters = {
+ // Latin-1 Supplement block.
+ "À": "A",
+ "Á": "A",
+ "Â": "A",
+ "Ã": "A",
+ "Ä": "A",
+ "Å": "A",
+ "à": "a",
+ "á": "a",
+ "â": "a",
+ "ã": "a",
+ "ä": "a",
+ "å": "a",
+ "Ç": "C",
+ "ç": "c",
+ "Ð": "D",
+ "ð": "d",
+ "È": "E",
+ "É": "E",
+ "Ê": "E",
+ "Ë": "E",
+ "è": "e",
+ "é": "e",
+ "ê": "e",
+ "ë": "e",
+ "Ì": "I",
+ "Í": "I",
+ "Î": "I",
+ "Ï": "I",
+ "ì": "i",
+ "í": "i",
+ "î": "i",
+ "ï": "i",
+ "Ñ": "N",
+ "ñ": "n",
+ "Ò": "O",
+ "Ó": "O",
+ "Ô": "O",
+ "Õ": "O",
+ "Ö": "O",
+ "Ø": "O",
+ "ò": "o",
+ "ó": "o",
+ "ô": "o",
+ "õ": "o",
+ "ö": "o",
+ "ø": "o",
+ "Ù": "U",
+ "Ú": "U",
+ "Û": "U",
+ "Ü": "U",
+ "ù": "u",
+ "ú": "u",
+ "û": "u",
+ "ü": "u",
+ "Ý": "Y",
+ "ý": "y",
+ "ÿ": "y",
+ "Æ": "Ae",
+ "æ": "ae",
+ "Þ": "Th",
+ "þ": "th",
+ "ß": "ss",
+ // Latin Extended-A block.
+ "Ā": "A",
+ "Ă": "A",
+ "Ą": "A",
+ "ā": "a",
+ "ă": "a",
+ "ą": "a",
+ "Ć": "C",
+ "Ĉ": "C",
+ "Ċ": "C",
+ "Č": "C",
+ "ć": "c",
+ "ĉ": "c",
+ "ċ": "c",
+ "č": "c",
+ "Ď": "D",
+ "Đ": "D",
+ "ď": "d",
+ "đ": "d",
+ "Ē": "E",
+ "Ĕ": "E",
+ "Ė": "E",
+ "Ę": "E",
+ "Ě": "E",
+ "ē": "e",
+ "ĕ": "e",
+ "ė": "e",
+ "ę": "e",
+ "ě": "e",
+ "Ĝ": "G",
+ "Ğ": "G",
+ "Ġ": "G",
+ "Ģ": "G",
+ "ĝ": "g",
+ "ğ": "g",
+ "ġ": "g",
+ "ģ": "g",
+ "Ĥ": "H",
+ "Ħ": "H",
+ "ĥ": "h",
+ "ħ": "h",
+ "Ĩ": "I",
+ "Ī": "I",
+ "Ĭ": "I",
+ "Į": "I",
+ "İ": "I",
+ "ĩ": "i",
+ "ī": "i",
+ "ĭ": "i",
+ "į": "i",
+ "ı": "i",
+ "Ĵ": "J",
+ "ĵ": "j",
+ "Ķ": "K",
+ "ķ": "k",
+ "ĸ": "k",
+ "Ĺ": "L",
+ "Ļ": "L",
+ "Ľ": "L",
+ "Ŀ": "L",
+ "Ł": "L",
+ "ĺ": "l",
+ "ļ": "l",
+ "ľ": "l",
+ "ŀ": "l",
+ "ł": "l",
+ "Ń": "N",
+ "Ņ": "N",
+ "Ň": "N",
+ "Ŋ": "N",
+ "ń": "n",
+ "ņ": "n",
+ "ň": "n",
+ "ŋ": "n",
+ "Ō": "O",
+ "Ŏ": "O",
+ "Ő": "O",
+ "ō": "o",
+ "ŏ": "o",
+ "ő": "o",
+ "Ŕ": "R",
+ "Ŗ": "R",
+ "Ř": "R",
+ "ŕ": "r",
+ "ŗ": "r",
+ "ř": "r",
+ "Ś": "S",
+ "Ŝ": "S",
+ "Ş": "S",
+ "Š": "S",
+ "ś": "s",
+ "ŝ": "s",
+ "ş": "s",
+ "š": "s",
+ "Ţ": "T",
+ "Ť": "T",
+ "Ŧ": "T",
+ "ţ": "t",
+ "ť": "t",
+ "ŧ": "t",
+ "Ũ": "U",
+ "Ū": "U",
+ "Ŭ": "U",
+ "Ů": "U",
+ "Ű": "U",
+ "Ų": "U",
+ "ũ": "u",
+ "ū": "u",
+ "ŭ": "u",
+ "ů": "u",
+ "ű": "u",
+ "ų": "u",
+ "Ŵ": "W",
+ "ŵ": "w",
+ "Ŷ": "Y",
+ "ŷ": "y",
+ "Ÿ": "Y",
+ "Ź": "Z",
+ "Ż": "Z",
+ "Ž": "Z",
+ "ź": "z",
+ "ż": "z",
+ "ž": "z",
+ "IJ": "IJ",
+ "ij": "ij",
+ "Œ": "Oe",
+ "œ": "oe",
+ "ʼn": "'n",
+ "ſ": "s"
+ };
+ var htmlEscapes = {
+ "&": "&",
+ "<": "<",
+ ">": ">",
+ '"': """,
+ "'": "'"
+ };
+ var htmlUnescapes = {
+ "&": "&",
+ "<": "<",
+ ">": ">",
+ """: '"',
+ "'": "'"
+ };
+ var stringEscapes = {
+ "\\": "\\",
+ "'": "'",
+ "\n": "n",
+ "\r": "r",
+ "\u2028": "u2028",
+ "\u2029": "u2029"
+ };
+ var freeParseFloat = parseFloat, freeParseInt = parseInt;
+ var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
+ var freeSelf = typeof self == "object" && self && self.Object === Object && self;
+ var root = freeGlobal || freeSelf || Function("return this")();
+ var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
+ var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
+ var moduleExports = freeModule && freeModule.exports === freeExports;
+ var freeProcess = moduleExports && freeGlobal.process;
+ var nodeUtil = function() {
+ try {
+ var types = freeModule && freeModule.require && freeModule.require("util").types;
+ if (types) {
+ return types;
+ }
+ return freeProcess && freeProcess.binding && freeProcess.binding("util");
+ } catch (e) {
+ }
+ }();
+ var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
+ function apply(func, thisArg, args) {
+ switch (args.length) {
+ case 0:
+ return func.call(thisArg);
+ case 1:
+ return func.call(thisArg, args[0]);
+ case 2:
+ return func.call(thisArg, args[0], args[1]);
+ case 3:
+ return func.call(thisArg, args[0], args[1], args[2]);
+ }
+ return func.apply(thisArg, args);
+ }
+ function arrayAggregator(array, setter, iteratee, accumulator) {
+ var index = -1, length = array == null ? 0 : array.length;
+ while (++index < length) {
+ var value = array[index];
+ setter(accumulator, value, iteratee(value), array);
+ }
+ return accumulator;
+ }
+ function arrayEach(array, iteratee) {
+ var index = -1, length = array == null ? 0 : array.length;
+ while (++index < length) {
+ if (iteratee(array[index], index, array) === false) {
+ break;
+ }
+ }
+ return array;
+ }
+ function arrayEachRight(array, iteratee) {
+ var length = array == null ? 0 : array.length;
+ while (length--) {
+ if (iteratee(array[length], length, array) === false) {
+ break;
+ }
+ }
+ return array;
+ }
+ function arrayEvery(array, predicate) {
+ var index = -1, length = array == null ? 0 : array.length;
+ while (++index < length) {
+ if (!predicate(array[index], index, array)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ function arrayFilter(array, predicate) {
+ var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];
+ while (++index < length) {
+ var value = array[index];
+ if (predicate(value, index, array)) {
+ result[resIndex++] = value;
+ }
+ }
+ return result;
+ }
+ function arrayIncludes(array, value) {
+ var length = array == null ? 0 : array.length;
+ return !!length && baseIndexOf(array, value, 0) > -1;
+ }
+ function arrayIncludesWith(array, value, comparator) {
+ var index = -1, length = array == null ? 0 : array.length;
+ while (++index < length) {
+ if (comparator(value, array[index])) {
+ return true;
+ }
+ }
+ return false;
+ }
+ function arrayMap(array, iteratee) {
+ var index = -1, length = array == null ? 0 : array.length, result = Array(length);
+ while (++index < length) {
+ result[index] = iteratee(array[index], index, array);
+ }
+ return result;
+ }
+ function arrayPush(array, values) {
+ var index = -1, length = values.length, offset = array.length;
+ while (++index < length) {
+ array[offset + index] = values[index];
+ }
+ return array;
+ }
+ function arrayReduce(array, iteratee, accumulator, initAccum) {
+ var index = -1, length = array == null ? 0 : array.length;
+ if (initAccum && length) {
+ accumulator = array[++index];
+ }
+ while (++index < length) {
+ accumulator = iteratee(accumulator, array[index], index, array);
+ }
+ return accumulator;
+ }
+ function arrayReduceRight(array, iteratee, accumulator, initAccum) {
+ var length = array == null ? 0 : array.length;
+ if (initAccum && length) {
+ accumulator = array[--length];
+ }
+ while (length--) {
+ accumulator = iteratee(accumulator, array[length], length, array);
+ }
+ return accumulator;
+ }
+ function arraySome(array, predicate) {
+ var index = -1, length = array == null ? 0 : array.length;
+ while (++index < length) {
+ if (predicate(array[index], index, array)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ var asciiSize = baseProperty("length");
+ function asciiToArray(string) {
+ return string.split("");
+ }
+ function asciiWords(string) {
+ return string.match(reAsciiWord) || [];
+ }
+ function baseFindKey(collection, predicate, eachFunc) {
+ var result;
+ eachFunc(collection, function(value, key, collection2) {
+ if (predicate(value, key, collection2)) {
+ result = key;
+ return false;
+ }
+ });
+ return result;
+ }
+ function baseFindIndex(array, predicate, fromIndex, fromRight) {
+ var length = array.length, index = fromIndex + (fromRight ? 1 : -1);
+ while (fromRight ? index-- : ++index < length) {
+ if (predicate(array[index], index, array)) {
+ return index;
+ }
+ }
+ return -1;
+ }
+ function baseIndexOf(array, value, fromIndex) {
+ return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);
+ }
+ function baseIndexOfWith(array, value, fromIndex, comparator) {
+ var index = fromIndex - 1, length = array.length;
+ while (++index < length) {
+ if (comparator(array[index], value)) {
+ return index;
+ }
+ }
+ return -1;
+ }
+ function baseIsNaN(value) {
+ return value !== value;
+ }
+ function baseMean(array, iteratee) {
+ var length = array == null ? 0 : array.length;
+ return length ? baseSum(array, iteratee) / length : NAN;
+ }
+ function baseProperty(key) {
+ return function(object) {
+ return object == null ? undefined : object[key];
+ };
+ }
+ function basePropertyOf(object) {
+ return function(key) {
+ return object == null ? undefined : object[key];
+ };
+ }
+ function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
+ eachFunc(collection, function(value, index, collection2) {
+ accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection2);
+ });
+ return accumulator;
+ }
+ function baseSortBy(array, comparer) {
+ var length = array.length;
+ array.sort(comparer);
+ while (length--) {
+ array[length] = array[length].value;
+ }
+ return array;
+ }
+ function baseSum(array, iteratee) {
+ var result, index = -1, length = array.length;
+ while (++index < length) {
+ var current = iteratee(array[index]);
+ if (current !== undefined) {
+ result = result === undefined ? current : result + current;
+ }
+ }
+ return result;
+ }
+ function baseTimes(n, iteratee) {
+ var index = -1, result = Array(n);
+ while (++index < n) {
+ result[index] = iteratee(index);
+ }
+ return result;
+ }
+ function baseToPairs(object, props) {
+ return arrayMap(props, function(key) {
+ return [key, object[key]];
+ });
+ }
+ function baseTrim(string) {
+ return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string;
+ }
+ function baseUnary(func) {
+ return function(value) {
+ return func(value);
+ };
+ }
+ function baseValues(object, props) {
+ return arrayMap(props, function(key) {
+ return object[key];
+ });
+ }
+ function cacheHas(cache, key) {
+ return cache.has(key);
+ }
+ function charsStartIndex(strSymbols, chrSymbols) {
+ var index = -1, length = strSymbols.length;
+ while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {
+ }
+ return index;
+ }
+ function charsEndIndex(strSymbols, chrSymbols) {
+ var index = strSymbols.length;
+ while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {
+ }
+ return index;
+ }
+ function countHolders(array, placeholder) {
+ var length = array.length, result = 0;
+ while (length--) {
+ if (array[length] === placeholder) {
+ ++result;
+ }
+ }
+ return result;
+ }
+ var deburrLetter = basePropertyOf(deburredLetters);
+ var escapeHtmlChar = basePropertyOf(htmlEscapes);
+ function escapeStringChar(chr) {
+ return "\\" + stringEscapes[chr];
+ }
+ function getValue(object, key) {
+ return object == null ? undefined : object[key];
+ }
+ function hasUnicode(string) {
+ return reHasUnicode.test(string);
+ }
+ function hasUnicodeWord(string) {
+ return reHasUnicodeWord.test(string);
+ }
+ function iteratorToArray(iterator) {
+ var data, result = [];
+ while (!(data = iterator.next()).done) {
+ result.push(data.value);
+ }
+ return result;
+ }
+ function mapToArray(map) {
+ var index = -1, result = Array(map.size);
+ map.forEach(function(value, key) {
+ result[++index] = [key, value];
+ });
+ return result;
+ }
+ function overArg(func, transform) {
+ return function(arg) {
+ return func(transform(arg));
+ };
+ }
+ function replaceHolders(array, placeholder) {
+ var index = -1, length = array.length, resIndex = 0, result = [];
+ while (++index < length) {
+ var value = array[index];
+ if (value === placeholder || value === PLACEHOLDER) {
+ array[index] = PLACEHOLDER;
+ result[resIndex++] = index;
+ }
+ }
+ return result;
+ }
+ function setToArray(set) {
+ var index = -1, result = Array(set.size);
+ set.forEach(function(value) {
+ result[++index] = value;
+ });
+ return result;
+ }
+ function setToPairs(set) {
+ var index = -1, result = Array(set.size);
+ set.forEach(function(value) {
+ result[++index] = [value, value];
+ });
+ return result;
+ }
+ function strictIndexOf(array, value, fromIndex) {
+ var index = fromIndex - 1, length = array.length;
+ while (++index < length) {
+ if (array[index] === value) {
+ return index;
+ }
+ }
+ return -1;
+ }
+ function strictLastIndexOf(array, value, fromIndex) {
+ var index = fromIndex + 1;
+ while (index--) {
+ if (array[index] === value) {
+ return index;
+ }
+ }
+ return index;
+ }
+ function stringSize(string) {
+ return hasUnicode(string) ? unicodeSize(string) : asciiSize(string);
+ }
+ function stringToArray(string) {
+ return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);
+ }
+ function trimmedEndIndex(string) {
+ var index = string.length;
+ while (index-- && reWhitespace.test(string.charAt(index))) {
+ }
+ return index;
+ }
+ var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
+ function unicodeSize(string) {
+ var result = reUnicode.lastIndex = 0;
+ while (reUnicode.test(string)) {
+ ++result;
+ }
+ return result;
+ }
+ function unicodeToArray(string) {
+ return string.match(reUnicode) || [];
+ }
+ function unicodeWords(string) {
+ return string.match(reUnicodeWord) || [];
+ }
+ var runInContext = function runInContext2(context) {
+ context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
+ var Array2 = context.Array, Date = context.Date, Error = context.Error, Function2 = context.Function, Math = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String = context.String, TypeError = context.TypeError;
+ var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype;
+ var coreJsData = context["__core-js_shared__"];
+ var funcToString = funcProto.toString;
+ var hasOwnProperty = objectProto.hasOwnProperty;
+ var idCounter = 0;
+ var maskSrcKey = function() {
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
+ return uid ? "Symbol(src)_1." + uid : "";
+ }();
+ var nativeObjectToString = objectProto.toString;
+ var objectCtorString = funcToString.call(Object2);
+ var oldDash = root._;
+ var reIsNative = RegExp2(
+ "^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
+ );
+ var Buffer = moduleExports ? context.Buffer : undefined, Symbol = context.Symbol, Uint8Array = context.Uint8Array, allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, symIterator = Symbol ? Symbol.iterator : undefined, symToStringTag = Symbol ? Symbol.toStringTag : undefined;
+ var defineProperty = function() {
+ try {
+ var func = getNative(Object2, "defineProperty");
+ func({}, "", {});
+ return func;
+ } catch (e) {
+ }
+ }();
+ var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date && Date.now !== root.Date.now && Date.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
+ var nativeCeil = Math.ceil, nativeFloor = Math.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math.max, nativeMin = Math.min, nativeNow = Date.now, nativeParseInt = context.parseInt, nativeRandom = Math.random, nativeReverse = arrayProto.reverse;
+ var DataView = getNative(context, "DataView"), Map = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set = getNative(context, "Set"), WeakMap = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create");
+ var metaMap = WeakMap && new WeakMap();
+ var realNames = {};
+ var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set), weakMapCtorString = toSource(WeakMap);
+ var symbolProto = Symbol ? Symbol.prototype : undefined, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, symbolToString = symbolProto ? symbolProto.toString : undefined;
+ function lodash(value) {
+ if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
+ if (value instanceof LodashWrapper) {
+ return value;
+ }
+ if (hasOwnProperty.call(value, "__wrapped__")) {
+ return wrapperClone(value);
+ }
+ }
+ return new LodashWrapper(value);
+ }
+ var baseCreate = /* @__PURE__ */ function() {
+ function object() {
+ }
+ return function(proto) {
+ if (!isObject(proto)) {
+ return {};
+ }
+ if (objectCreate) {
+ return objectCreate(proto);
+ }
+ object.prototype = proto;
+ var result2 = new object();
+ object.prototype = undefined;
+ return result2;
+ };
+ }();
+ function baseLodash() {
+ }
+ function LodashWrapper(value, chainAll) {
+ this.__wrapped__ = value;
+ this.__actions__ = [];
+ this.__chain__ = !!chainAll;
+ this.__index__ = 0;
+ this.__values__ = undefined;
+ }
+ lodash.templateSettings = {
+ /**
+ * Used to detect `data` property values to be HTML-escaped.
+ *
+ * @memberOf _.templateSettings
+ * @type {RegExp}
+ */
+ "escape": reEscape,
+ /**
+ * Used to detect code to be evaluated.
+ *
+ * @memberOf _.templateSettings
+ * @type {RegExp}
+ */
+ "evaluate": reEvaluate,
+ /**
+ * Used to detect `data` property values to inject.
+ *
+ * @memberOf _.templateSettings
+ * @type {RegExp}
+ */
+ "interpolate": reInterpolate,
+ /**
+ * Used to reference the data object in the template text.
+ *
+ * @memberOf _.templateSettings
+ * @type {string}
+ */
+ "variable": "",
+ /**
+ * Used to import variables into the compiled template.
+ *
+ * @memberOf _.templateSettings
+ * @type {Object}
+ */
+ "imports": {
+ /**
+ * A reference to the `lodash` function.
+ *
+ * @memberOf _.templateSettings.imports
+ * @type {Function}
+ */
+ "_": lodash
+ }
+ };
+ lodash.prototype = baseLodash.prototype;
+ lodash.prototype.constructor = lodash;
+ LodashWrapper.prototype = baseCreate(baseLodash.prototype);
+ LodashWrapper.prototype.constructor = LodashWrapper;
+ function LazyWrapper(value) {
+ this.__wrapped__ = value;
+ this.__actions__ = [];
+ this.__dir__ = 1;
+ this.__filtered__ = false;
+ this.__iteratees__ = [];
+ this.__takeCount__ = MAX_ARRAY_LENGTH;
+ this.__views__ = [];
+ }
+ function lazyClone() {
+ var result2 = new LazyWrapper(this.__wrapped__);
+ result2.__actions__ = copyArray(this.__actions__);
+ result2.__dir__ = this.__dir__;
+ result2.__filtered__ = this.__filtered__;
+ result2.__iteratees__ = copyArray(this.__iteratees__);
+ result2.__takeCount__ = this.__takeCount__;
+ result2.__views__ = copyArray(this.__views__);
+ return result2;
+ }
+ function lazyReverse() {
+ if (this.__filtered__) {
+ var result2 = new LazyWrapper(this);
+ result2.__dir__ = -1;
+ result2.__filtered__ = true;
+ } else {
+ result2 = this.clone();
+ result2.__dir__ *= -1;
+ }
+ return result2;
+ }
+ function lazyValue() {
+ var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start = view.start, end = view.end, length = end - start, index = isRight ? end : start - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__);
+ if (!isArr || !isRight && arrLength == length && takeCount == length) {
+ return baseWrapperValue(array, this.__actions__);
+ }
+ var result2 = [];
+ outer:
+ while (length-- && resIndex < takeCount) {
+ index += dir;
+ var iterIndex = -1, value = array[index];
+ while (++iterIndex < iterLength) {
+ var data = iteratees[iterIndex], iteratee2 = data.iteratee, type = data.type, computed = iteratee2(value);
+ if (type == LAZY_MAP_FLAG) {
+ value = computed;
+ } else if (!computed) {
+ if (type == LAZY_FILTER_FLAG) {
+ continue outer;
+ } else {
+ break outer;
+ }
+ }
+ }
+ result2[resIndex++] = value;
+ }
+ return result2;
+ }
+ LazyWrapper.prototype = baseCreate(baseLodash.prototype);
+ LazyWrapper.prototype.constructor = LazyWrapper;
+ function Hash(entries) {
+ var index = -1, length = entries == null ? 0 : entries.length;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function hashClear() {
+ this.__data__ = nativeCreate ? nativeCreate(null) : {};
+ this.size = 0;
+ }
+ function hashDelete(key) {
+ var result2 = this.has(key) && delete this.__data__[key];
+ this.size -= result2 ? 1 : 0;
+ return result2;
+ }
+ function hashGet(key) {
+ var data = this.__data__;
+ if (nativeCreate) {
+ var result2 = data[key];
+ return result2 === HASH_UNDEFINED ? undefined : result2;
+ }
+ return hasOwnProperty.call(data, key) ? data[key] : undefined;
+ }
+ function hashHas(key) {
+ var data = this.__data__;
+ return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
+ }
+ function hashSet(key, value) {
+ var data = this.__data__;
+ this.size += this.has(key) ? 0 : 1;
+ data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;
+ return this;
+ }
+ Hash.prototype.clear = hashClear;
+ Hash.prototype["delete"] = hashDelete;
+ Hash.prototype.get = hashGet;
+ Hash.prototype.has = hashHas;
+ Hash.prototype.set = hashSet;
+ function ListCache(entries) {
+ var index = -1, length = entries == null ? 0 : entries.length;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function listCacheClear() {
+ this.__data__ = [];
+ this.size = 0;
+ }
+ function listCacheDelete(key) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ if (index < 0) {
+ return false;
+ }
+ var lastIndex = data.length - 1;
+ if (index == lastIndex) {
+ data.pop();
+ } else {
+ splice.call(data, index, 1);
+ }
+ --this.size;
+ return true;
+ }
+ function listCacheGet(key) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ return index < 0 ? undefined : data[index][1];
+ }
+ function listCacheHas(key) {
+ return assocIndexOf(this.__data__, key) > -1;
+ }
+ function listCacheSet(key, value) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ if (index < 0) {
+ ++this.size;
+ data.push([key, value]);
+ } else {
+ data[index][1] = value;
+ }
+ return this;
+ }
+ ListCache.prototype.clear = listCacheClear;
+ ListCache.prototype["delete"] = listCacheDelete;
+ ListCache.prototype.get = listCacheGet;
+ ListCache.prototype.has = listCacheHas;
+ ListCache.prototype.set = listCacheSet;
+ function MapCache(entries) {
+ var index = -1, length = entries == null ? 0 : entries.length;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function mapCacheClear() {
+ this.size = 0;
+ this.__data__ = {
+ "hash": new Hash(),
+ "map": new (Map || ListCache)(),
+ "string": new Hash()
+ };
+ }
+ function mapCacheDelete(key) {
+ var result2 = getMapData(this, key)["delete"](key);
+ this.size -= result2 ? 1 : 0;
+ return result2;
+ }
+ function mapCacheGet(key) {
+ return getMapData(this, key).get(key);
+ }
+ function mapCacheHas(key) {
+ return getMapData(this, key).has(key);
+ }
+ function mapCacheSet(key, value) {
+ var data = getMapData(this, key), size2 = data.size;
+ data.set(key, value);
+ this.size += data.size == size2 ? 0 : 1;
+ return this;
+ }
+ MapCache.prototype.clear = mapCacheClear;
+ MapCache.prototype["delete"] = mapCacheDelete;
+ MapCache.prototype.get = mapCacheGet;
+ MapCache.prototype.has = mapCacheHas;
+ MapCache.prototype.set = mapCacheSet;
+ function SetCache(values2) {
+ var index = -1, length = values2 == null ? 0 : values2.length;
+ this.__data__ = new MapCache();
+ while (++index < length) {
+ this.add(values2[index]);
+ }
+ }
+ function setCacheAdd(value) {
+ this.__data__.set(value, HASH_UNDEFINED);
+ return this;
+ }
+ function setCacheHas(value) {
+ return this.__data__.has(value);
+ }
+ SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
+ SetCache.prototype.has = setCacheHas;
+ function Stack(entries) {
+ var data = this.__data__ = new ListCache(entries);
+ this.size = data.size;
+ }
+ function stackClear() {
+ this.__data__ = new ListCache();
+ this.size = 0;
+ }
+ function stackDelete(key) {
+ var data = this.__data__, result2 = data["delete"](key);
+ this.size = data.size;
+ return result2;
+ }
+ function stackGet(key) {
+ return this.__data__.get(key);
+ }
+ function stackHas(key) {
+ return this.__data__.has(key);
+ }
+ function stackSet(key, value) {
+ var data = this.__data__;
+ if (data instanceof ListCache) {
+ var pairs = data.__data__;
+ if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {
+ pairs.push([key, value]);
+ this.size = ++data.size;
+ return this;
+ }
+ data = this.__data__ = new MapCache(pairs);
+ }
+ data.set(key, value);
+ this.size = data.size;
+ return this;
+ }
+ Stack.prototype.clear = stackClear;
+ Stack.prototype["delete"] = stackDelete;
+ Stack.prototype.get = stackGet;
+ Stack.prototype.has = stackHas;
+ Stack.prototype.set = stackSet;
+ function arrayLikeKeys(value, inherited) {
+ var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String) : [], length = result2.length;
+ for (var key in value) {
+ if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
+ (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
+ isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
+ isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
+ isIndex(key, length)))) {
+ result2.push(key);
+ }
+ }
+ return result2;
+ }
+ function arraySample(array) {
+ var length = array.length;
+ return length ? array[baseRandom(0, length - 1)] : undefined;
+ }
+ function arraySampleSize(array, n) {
+ return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
+ }
+ function arrayShuffle(array) {
+ return shuffleSelf(copyArray(array));
+ }
+ function assignMergeValue(object, key, value) {
+ if (value !== undefined && !eq(object[key], value) || value === undefined && !(key in object)) {
+ baseAssignValue(object, key, value);
+ }
+ }
+ function assignValue(object, key, value) {
+ var objValue = object[key];
+ if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {
+ baseAssignValue(object, key, value);
+ }
+ }
+ function assocIndexOf(array, key) {
+ var length = array.length;
+ while (length--) {
+ if (eq(array[length][0], key)) {
+ return length;
+ }
+ }
+ return -1;
+ }
+ function baseAggregator(collection, setter, iteratee2, accumulator) {
+ baseEach(collection, function(value, key, collection2) {
+ setter(accumulator, value, iteratee2(value), collection2);
+ });
+ return accumulator;
+ }
+ function baseAssign(object, source) {
+ return object && copyObject(source, keys(source), object);
+ }
+ function baseAssignIn(object, source) {
+ return object && copyObject(source, keysIn(source), object);
+ }
+ function baseAssignValue(object, key, value) {
+ if (key == "__proto__" && defineProperty) {
+ defineProperty(object, key, {
+ "configurable": true,
+ "enumerable": true,
+ "value": value,
+ "writable": true
+ });
+ } else {
+ object[key] = value;
+ }
+ }
+ function baseAt(object, paths) {
+ var index = -1, length = paths.length, result2 = Array2(length), skip = object == null;
+ while (++index < length) {
+ result2[index] = skip ? undefined : get(object, paths[index]);
+ }
+ return result2;
+ }
+ function baseClamp(number, lower, upper) {
+ if (number === number) {
+ if (upper !== undefined) {
+ number = number <= upper ? number : upper;
+ }
+ if (lower !== undefined) {
+ number = number >= lower ? number : lower;
+ }
+ }
+ return number;
+ }
+ function baseClone(value, bitmask, customizer, key, object, stack) {
+ var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG;
+ if (customizer) {
+ result2 = object ? customizer(value, key, object, stack) : customizer(value);
+ }
+ if (result2 !== undefined) {
+ return result2;
+ }
+ if (!isObject(value)) {
+ return value;
+ }
+ var isArr = isArray(value);
+ if (isArr) {
+ result2 = initCloneArray(value);
+ if (!isDeep) {
+ return copyArray(value, result2);
+ }
+ } else {
+ var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;
+ if (isBuffer(value)) {
+ return cloneBuffer(value, isDeep);
+ }
+ if (tag == objectTag || tag == argsTag || isFunc && !object) {
+ result2 = isFlat || isFunc ? {} : initCloneObject(value);
+ if (!isDeep) {
+ return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value));
+ }
+ } else {
+ if (!cloneableTags[tag]) {
+ return object ? value : {};
+ }
+ result2 = initCloneByTag(value, tag, isDeep);
+ }
+ }
+ stack || (stack = new Stack());
+ var stacked = stack.get(value);
+ if (stacked) {
+ return stacked;
+ }
+ stack.set(value, result2);
+ if (isSet(value)) {
+ value.forEach(function(subValue) {
+ result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
+ });
+ } else if (isMap(value)) {
+ value.forEach(function(subValue, key2) {
+ result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
+ });
+ }
+ var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
+ var props = isArr ? undefined : keysFunc(value);
+ arrayEach(props || value, function(subValue, key2) {
+ if (props) {
+ key2 = subValue;
+ subValue = value[key2];
+ }
+ assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
+ });
+ return result2;
+ }
+ function baseConforms(source) {
+ var props = keys(source);
+ return function(object) {
+ return baseConformsTo(object, source, props);
+ };
+ }
+ function baseConformsTo(object, source, props) {
+ var length = props.length;
+ if (object == null) {
+ return !length;
+ }
+ object = Object2(object);
+ while (length--) {
+ var key = props[length], predicate = source[key], value = object[key];
+ if (value === undefined && !(key in object) || !predicate(value)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ function baseDelay(func, wait, args) {
+ if (typeof func != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ return setTimeout(function() {
+ func.apply(undefined, args);
+ }, wait);
+ }
+ function baseDifference(array, values2, iteratee2, comparator) {
+ var index = -1, includes2 = arrayIncludes, isCommon = true, length = array.length, result2 = [], valuesLength = values2.length;
+ if (!length) {
+ return result2;
+ }
+ if (iteratee2) {
+ values2 = arrayMap(values2, baseUnary(iteratee2));
+ }
+ if (comparator) {
+ includes2 = arrayIncludesWith;
+ isCommon = false;
+ } else if (values2.length >= LARGE_ARRAY_SIZE) {
+ includes2 = cacheHas;
+ isCommon = false;
+ values2 = new SetCache(values2);
+ }
+ outer:
+ while (++index < length) {
+ var value = array[index], computed = iteratee2 == null ? value : iteratee2(value);
+ value = comparator || value !== 0 ? value : 0;
+ if (isCommon && computed === computed) {
+ var valuesIndex = valuesLength;
+ while (valuesIndex--) {
+ if (values2[valuesIndex] === computed) {
+ continue outer;
+ }
+ }
+ result2.push(value);
+ } else if (!includes2(values2, computed, comparator)) {
+ result2.push(value);
+ }
+ }
+ return result2;
+ }
+ var baseEach = createBaseEach(baseForOwn);
+ var baseEachRight = createBaseEach(baseForOwnRight, true);
+ function baseEvery(collection, predicate) {
+ var result2 = true;
+ baseEach(collection, function(value, index, collection2) {
+ result2 = !!predicate(value, index, collection2);
+ return result2;
+ });
+ return result2;
+ }
+ function baseExtremum(array, iteratee2, comparator) {
+ var index = -1, length = array.length;
+ while (++index < length) {
+ var value = array[index], current = iteratee2(value);
+ if (current != null && (computed === undefined ? current === current && !isSymbol(current) : comparator(current, computed))) {
+ var computed = current, result2 = value;
+ }
+ }
+ return result2;
+ }
+ function baseFill(array, value, start, end) {
+ var length = array.length;
+ start = toInteger(start);
+ if (start < 0) {
+ start = -start > length ? 0 : length + start;
+ }
+ end = end === undefined || end > length ? length : toInteger(end);
+ if (end < 0) {
+ end += length;
+ }
+ end = start > end ? 0 : toLength(end);
+ while (start < end) {
+ array[start++] = value;
+ }
+ return array;
+ }
+ function baseFilter(collection, predicate) {
+ var result2 = [];
+ baseEach(collection, function(value, index, collection2) {
+ if (predicate(value, index, collection2)) {
+ result2.push(value);
+ }
+ });
+ return result2;
+ }
+ function baseFlatten(array, depth, predicate, isStrict, result2) {
+ var index = -1, length = array.length;
+ predicate || (predicate = isFlattenable);
+ result2 || (result2 = []);
+ while (++index < length) {
+ var value = array[index];
+ if (depth > 0 && predicate(value)) {
+ if (depth > 1) {
+ baseFlatten(value, depth - 1, predicate, isStrict, result2);
+ } else {
+ arrayPush(result2, value);
+ }
+ } else if (!isStrict) {
+ result2[result2.length] = value;
+ }
+ }
+ return result2;
+ }
+ var baseFor = createBaseFor();
+ var baseForRight = createBaseFor(true);
+ function baseForOwn(object, iteratee2) {
+ return object && baseFor(object, iteratee2, keys);
+ }
+ function baseForOwnRight(object, iteratee2) {
+ return object && baseForRight(object, iteratee2, keys);
+ }
+ function baseFunctions(object, props) {
+ return arrayFilter(props, function(key) {
+ return isFunction(object[key]);
+ });
+ }
+ function baseGet(object, path) {
+ path = castPath(path, object);
+ var index = 0, length = path.length;
+ while (object != null && index < length) {
+ object = object[toKey(path[index++])];
+ }
+ return index && index == length ? object : undefined;
+ }
+ function baseGetAllKeys(object, keysFunc, symbolsFunc) {
+ var result2 = keysFunc(object);
+ return isArray(object) ? result2 : arrayPush(result2, symbolsFunc(object));
+ }
+ function baseGetTag(value) {
+ if (value == null) {
+ return value === undefined ? undefinedTag : nullTag;
+ }
+ return symToStringTag && symToStringTag in Object2(value) ? getRawTag(value) : objectToString(value);
+ }
+ function baseGt(value, other) {
+ return value > other;
+ }
+ function baseHas(object, key) {
+ return object != null && hasOwnProperty.call(object, key);
+ }
+ function baseHasIn(object, key) {
+ return object != null && key in Object2(object);
+ }
+ function baseInRange(number, start, end) {
+ return number >= nativeMin(start, end) && number < nativeMax(start, end);
+ }
+ function baseIntersection(arrays, iteratee2, comparator) {
+ var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = [];
+ while (othIndex--) {
+ var array = arrays[othIndex];
+ if (othIndex && iteratee2) {
+ array = arrayMap(array, baseUnary(iteratee2));
+ }
+ maxLength = nativeMin(array.length, maxLength);
+ caches[othIndex] = !comparator && (iteratee2 || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined;
+ }
+ array = arrays[0];
+ var index = -1, seen = caches[0];
+ outer:
+ while (++index < length && result2.length < maxLength) {
+ var value = array[index], computed = iteratee2 ? iteratee2(value) : value;
+ value = comparator || value !== 0 ? value : 0;
+ if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) {
+ othIndex = othLength;
+ while (--othIndex) {
+ var cache = caches[othIndex];
+ if (!(cache ? cacheHas(cache, computed) : includes2(arrays[othIndex], computed, comparator))) {
+ continue outer;
+ }
+ }
+ if (seen) {
+ seen.push(computed);
+ }
+ result2.push(value);
+ }
+ }
+ return result2;
+ }
+ function baseInverter(object, setter, iteratee2, accumulator) {
+ baseForOwn(object, function(value, key, object2) {
+ setter(accumulator, iteratee2(value), key, object2);
+ });
+ return accumulator;
+ }
+ function baseInvoke(object, path, args) {
+ path = castPath(path, object);
+ object = parent(object, path);
+ var func = object == null ? object : object[toKey(last(path))];
+ return func == null ? undefined : apply(func, object, args);
+ }
+ function baseIsArguments(value) {
+ return isObjectLike(value) && baseGetTag(value) == argsTag;
+ }
+ function baseIsArrayBuffer(value) {
+ return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
+ }
+ function baseIsDate(value) {
+ return isObjectLike(value) && baseGetTag(value) == dateTag;
+ }
+ function baseIsEqual(value, other, bitmask, customizer, stack) {
+ if (value === other) {
+ return true;
+ }
+ if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {
+ return value !== value && other !== other;
+ }
+ return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
+ }
+ function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
+ var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other);
+ objTag = objTag == argsTag ? objectTag : objTag;
+ othTag = othTag == argsTag ? objectTag : othTag;
+ var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
+ if (isSameTag && isBuffer(object)) {
+ if (!isBuffer(other)) {
+ return false;
+ }
+ objIsArr = true;
+ objIsObj = false;
+ }
+ if (isSameTag && !objIsObj) {
+ stack || (stack = new Stack());
+ return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
+ }
+ if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
+ var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
+ if (objIsWrapped || othIsWrapped) {
+ var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
+ stack || (stack = new Stack());
+ return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
+ }
+ }
+ if (!isSameTag) {
+ return false;
+ }
+ stack || (stack = new Stack());
+ return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
+ }
+ function baseIsMap(value) {
+ return isObjectLike(value) && getTag(value) == mapTag;
+ }
+ function baseIsMatch(object, source, matchData, customizer) {
+ var index = matchData.length, length = index, noCustomizer = !customizer;
+ if (object == null) {
+ return !length;
+ }
+ object = Object2(object);
+ while (index--) {
+ var data = matchData[index];
+ if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
+ return false;
+ }
+ }
+ while (++index < length) {
+ data = matchData[index];
+ var key = data[0], objValue = object[key], srcValue = data[1];
+ if (noCustomizer && data[2]) {
+ if (objValue === undefined && !(key in object)) {
+ return false;
+ }
+ } else {
+ var stack = new Stack();
+ if (customizer) {
+ var result2 = customizer(objValue, srcValue, key, object, source, stack);
+ }
+ if (!(result2 === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+ function baseIsNative(value) {
+ if (!isObject(value) || isMasked(value)) {
+ return false;
+ }
+ var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
+ return pattern.test(toSource(value));
+ }
+ function baseIsRegExp(value) {
+ return isObjectLike(value) && baseGetTag(value) == regexpTag;
+ }
+ function baseIsSet(value) {
+ return isObjectLike(value) && getTag(value) == setTag;
+ }
+ function baseIsTypedArray(value) {
+ return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
+ }
+ function baseIteratee(value) {
+ if (typeof value == "function") {
+ return value;
+ }
+ if (value == null) {
+ return identity;
+ }
+ if (typeof value == "object") {
+ return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
+ }
+ return property(value);
+ }
+ function baseKeys(object) {
+ if (!isPrototype(object)) {
+ return nativeKeys(object);
+ }
+ var result2 = [];
+ for (var key in Object2(object)) {
+ if (hasOwnProperty.call(object, key) && key != "constructor") {
+ result2.push(key);
+ }
+ }
+ return result2;
+ }
+ function baseKeysIn(object) {
+ if (!isObject(object)) {
+ return nativeKeysIn(object);
+ }
+ var isProto = isPrototype(object), result2 = [];
+ for (var key in object) {
+ if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) {
+ result2.push(key);
+ }
+ }
+ return result2;
+ }
+ function baseLt(value, other) {
+ return value < other;
+ }
+ function baseMap(collection, iteratee2) {
+ var index = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : [];
+ baseEach(collection, function(value, key, collection2) {
+ result2[++index] = iteratee2(value, key, collection2);
+ });
+ return result2;
+ }
+ function baseMatches(source) {
+ var matchData = getMatchData(source);
+ if (matchData.length == 1 && matchData[0][2]) {
+ return matchesStrictComparable(matchData[0][0], matchData[0][1]);
+ }
+ return function(object) {
+ return object === source || baseIsMatch(object, source, matchData);
+ };
+ }
+ function baseMatchesProperty(path, srcValue) {
+ if (isKey(path) && isStrictComparable(srcValue)) {
+ return matchesStrictComparable(toKey(path), srcValue);
+ }
+ return function(object) {
+ var objValue = get(object, path);
+ return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
+ };
+ }
+ function baseMerge(object, source, srcIndex, customizer, stack) {
+ if (object === source) {
+ return;
+ }
+ baseFor(source, function(srcValue, key) {
+ stack || (stack = new Stack());
+ if (isObject(srcValue)) {
+ baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
+ } else {
+ var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : undefined;
+ if (newValue === undefined) {
+ newValue = srcValue;
+ }
+ assignMergeValue(object, key, newValue);
+ }
+ }, keysIn);
+ }
+ function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
+ var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue);
+ if (stacked) {
+ assignMergeValue(object, key, stacked);
+ return;
+ }
+ var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined;
+ var isCommon = newValue === undefined;
+ if (isCommon) {
+ var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);
+ newValue = srcValue;
+ if (isArr || isBuff || isTyped) {
+ if (isArray(objValue)) {
+ newValue = objValue;
+ } else if (isArrayLikeObject(objValue)) {
+ newValue = copyArray(objValue);
+ } else if (isBuff) {
+ isCommon = false;
+ newValue = cloneBuffer(srcValue, true);
+ } else if (isTyped) {
+ isCommon = false;
+ newValue = cloneTypedArray(srcValue, true);
+ } else {
+ newValue = [];
+ }
+ } else if (isPlainObject(srcValue) || isArguments(srcValue)) {
+ newValue = objValue;
+ if (isArguments(objValue)) {
+ newValue = toPlainObject(objValue);
+ } else if (!isObject(objValue) || isFunction(objValue)) {
+ newValue = initCloneObject(srcValue);
+ }
+ } else {
+ isCommon = false;
+ }
+ }
+ if (isCommon) {
+ stack.set(srcValue, newValue);
+ mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
+ stack["delete"](srcValue);
+ }
+ assignMergeValue(object, key, newValue);
+ }
+ function baseNth(array, n) {
+ var length = array.length;
+ if (!length) {
+ return;
+ }
+ n += n < 0 ? length : 0;
+ return isIndex(n, length) ? array[n] : undefined;
+ }
+ function baseOrderBy(collection, iteratees, orders) {
+ if (iteratees.length) {
+ iteratees = arrayMap(iteratees, function(iteratee2) {
+ if (isArray(iteratee2)) {
+ return function(value) {
+ return baseGet(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2);
+ };
+ }
+ return iteratee2;
+ });
+ } else {
+ iteratees = [identity];
+ }
+ var index = -1;
+ iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
+ var result2 = baseMap(collection, function(value, key, collection2) {
+ var criteria = arrayMap(iteratees, function(iteratee2) {
+ return iteratee2(value);
+ });
+ return { "criteria": criteria, "index": ++index, "value": value };
+ });
+ return baseSortBy(result2, function(object, other) {
+ return compareMultiple(object, other, orders);
+ });
+ }
+ function basePick(object, paths) {
+ return basePickBy(object, paths, function(value, path) {
+ return hasIn(object, path);
+ });
+ }
+ function basePickBy(object, paths, predicate) {
+ var index = -1, length = paths.length, result2 = {};
+ while (++index < length) {
+ var path = paths[index], value = baseGet(object, path);
+ if (predicate(value, path)) {
+ baseSet(result2, castPath(path, object), value);
+ }
+ }
+ return result2;
+ }
+ function basePropertyDeep(path) {
+ return function(object) {
+ return baseGet(object, path);
+ };
+ }
+ function basePullAll(array, values2, iteratee2, comparator) {
+ var indexOf2 = comparator ? baseIndexOfWith : baseIndexOf, index = -1, length = values2.length, seen = array;
+ if (array === values2) {
+ values2 = copyArray(values2);
+ }
+ if (iteratee2) {
+ seen = arrayMap(array, baseUnary(iteratee2));
+ }
+ while (++index < length) {
+ var fromIndex = 0, value = values2[index], computed = iteratee2 ? iteratee2(value) : value;
+ while ((fromIndex = indexOf2(seen, computed, fromIndex, comparator)) > -1) {
+ if (seen !== array) {
+ splice.call(seen, fromIndex, 1);
+ }
+ splice.call(array, fromIndex, 1);
+ }
+ }
+ return array;
+ }
+ function basePullAt(array, indexes) {
+ var length = array ? indexes.length : 0, lastIndex = length - 1;
+ while (length--) {
+ var index = indexes[length];
+ if (length == lastIndex || index !== previous) {
+ var previous = index;
+ if (isIndex(index)) {
+ splice.call(array, index, 1);
+ } else {
+ baseUnset(array, index);
+ }
+ }
+ }
+ return array;
+ }
+ function baseRandom(lower, upper) {
+ return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
+ }
+ function baseRange(start, end, step, fromRight) {
+ var index = -1, length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), result2 = Array2(length);
+ while (length--) {
+ result2[fromRight ? length : ++index] = start;
+ start += step;
+ }
+ return result2;
+ }
+ function baseRepeat(string, n) {
+ var result2 = "";
+ if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
+ return result2;
+ }
+ do {
+ if (n % 2) {
+ result2 += string;
+ }
+ n = nativeFloor(n / 2);
+ if (n) {
+ string += string;
+ }
+ } while (n);
+ return result2;
+ }
+ function baseRest(func, start) {
+ return setToString(overRest(func, start, identity), func + "");
+ }
+ function baseSample(collection) {
+ return arraySample(values(collection));
+ }
+ function baseSampleSize(collection, n) {
+ var array = values(collection);
+ return shuffleSelf(array, baseClamp(n, 0, array.length));
+ }
+ function baseSet(object, path, value, customizer) {
+ if (!isObject(object)) {
+ return object;
+ }
+ path = castPath(path, object);
+ var index = -1, length = path.length, lastIndex = length - 1, nested = object;
+ while (nested != null && ++index < length) {
+ var key = toKey(path[index]), newValue = value;
+ if (key === "__proto__" || key === "constructor" || key === "prototype") {
+ return object;
+ }
+ if (index != lastIndex) {
+ var objValue = nested[key];
+ newValue = customizer ? customizer(objValue, key, nested) : undefined;
+ if (newValue === undefined) {
+ newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};
+ }
+ }
+ assignValue(nested, key, newValue);
+ nested = nested[key];
+ }
+ return object;
+ }
+ var baseSetData = !metaMap ? identity : function(func, data) {
+ metaMap.set(func, data);
+ return func;
+ };
+ var baseSetToString = !defineProperty ? identity : function(func, string) {
+ return defineProperty(func, "toString", {
+ "configurable": true,
+ "enumerable": false,
+ "value": constant(string),
+ "writable": true
+ });
+ };
+ function baseShuffle(collection) {
+ return shuffleSelf(values(collection));
+ }
+ function baseSlice(array, start, end) {
+ var index = -1, length = array.length;
+ if (start < 0) {
+ start = -start > length ? 0 : length + start;
+ }
+ end = end > length ? length : end;
+ if (end < 0) {
+ end += length;
+ }
+ length = start > end ? 0 : end - start >>> 0;
+ start >>>= 0;
+ var result2 = Array2(length);
+ while (++index < length) {
+ result2[index] = array[index + start];
+ }
+ return result2;
+ }
+ function baseSome(collection, predicate) {
+ var result2;
+ baseEach(collection, function(value, index, collection2) {
+ result2 = predicate(value, index, collection2);
+ return !result2;
+ });
+ return !!result2;
+ }
+ function baseSortedIndex(array, value, retHighest) {
+ var low = 0, high = array == null ? low : array.length;
+ if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
+ while (low < high) {
+ var mid = low + high >>> 1, computed = array[mid];
+ if (computed !== null && !isSymbol(computed) && (retHighest ? computed <= value : computed < value)) {
+ low = mid + 1;
+ } else {
+ high = mid;
+ }
+ }
+ return high;
+ }
+ return baseSortedIndexBy(array, value, identity, retHighest);
+ }
+ function baseSortedIndexBy(array, value, iteratee2, retHighest) {
+ var low = 0, high = array == null ? 0 : array.length;
+ if (high === 0) {
+ return 0;
+ }
+ value = iteratee2(value);
+ var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol(value), valIsUndefined = value === undefined;
+ while (low < high) {
+ var mid = nativeFloor((low + high) / 2), computed = iteratee2(array[mid]), othIsDefined = computed !== undefined, othIsNull = computed === null, othIsReflexive = computed === computed, othIsSymbol = isSymbol(computed);
+ if (valIsNaN) {
+ var setLow = retHighest || othIsReflexive;
+ } else if (valIsUndefined) {
+ setLow = othIsReflexive && (retHighest || othIsDefined);
+ } else if (valIsNull) {
+ setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
+ } else if (valIsSymbol) {
+ setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
+ } else if (othIsNull || othIsSymbol) {
+ setLow = false;
+ } else {
+ setLow = retHighest ? computed <= value : computed < value;
+ }
+ if (setLow) {
+ low = mid + 1;
+ } else {
+ high = mid;
+ }
+ }
+ return nativeMin(high, MAX_ARRAY_INDEX);
+ }
+ function baseSortedUniq(array, iteratee2) {
+ var index = -1, length = array.length, resIndex = 0, result2 = [];
+ while (++index < length) {
+ var value = array[index], computed = iteratee2 ? iteratee2(value) : value;
+ if (!index || !eq(computed, seen)) {
+ var seen = computed;
+ result2[resIndex++] = value === 0 ? 0 : value;
+ }
+ }
+ return result2;
+ }
+ function baseToNumber(value) {
+ if (typeof value == "number") {
+ return value;
+ }
+ if (isSymbol(value)) {
+ return NAN;
+ }
+ return +value;
+ }
+ function baseToString(value) {
+ if (typeof value == "string") {
+ return value;
+ }
+ if (isArray(value)) {
+ return arrayMap(value, baseToString) + "";
+ }
+ if (isSymbol(value)) {
+ return symbolToString ? symbolToString.call(value) : "";
+ }
+ var result2 = value + "";
+ return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2;
+ }
+ function baseUniq(array, iteratee2, comparator) {
+ var index = -1, includes2 = arrayIncludes, length = array.length, isCommon = true, result2 = [], seen = result2;
+ if (comparator) {
+ isCommon = false;
+ includes2 = arrayIncludesWith;
+ } else if (length >= LARGE_ARRAY_SIZE) {
+ var set2 = iteratee2 ? null : createSet(array);
+ if (set2) {
+ return setToArray(set2);
+ }
+ isCommon = false;
+ includes2 = cacheHas;
+ seen = new SetCache();
+ } else {
+ seen = iteratee2 ? [] : result2;
+ }
+ outer:
+ while (++index < length) {
+ var value = array[index], computed = iteratee2 ? iteratee2(value) : value;
+ value = comparator || value !== 0 ? value : 0;
+ if (isCommon && computed === computed) {
+ var seenIndex = seen.length;
+ while (seenIndex--) {
+ if (seen[seenIndex] === computed) {
+ continue outer;
+ }
+ }
+ if (iteratee2) {
+ seen.push(computed);
+ }
+ result2.push(value);
+ } else if (!includes2(seen, computed, comparator)) {
+ if (seen !== result2) {
+ seen.push(computed);
+ }
+ result2.push(value);
+ }
+ }
+ return result2;
+ }
+ function baseUnset(object, path) {
+ path = castPath(path, object);
+ object = parent(object, path);
+ return object == null || delete object[toKey(last(path))];
+ }
+ function baseUpdate(object, path, updater, customizer) {
+ return baseSet(object, path, updater(baseGet(object, path)), customizer);
+ }
+ function baseWhile(array, predicate, isDrop, fromRight) {
+ var length = array.length, index = fromRight ? length : -1;
+ while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {
+ }
+ return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index);
+ }
+ function baseWrapperValue(value, actions) {
+ var result2 = value;
+ if (result2 instanceof LazyWrapper) {
+ result2 = result2.value();
+ }
+ return arrayReduce(actions, function(result3, action) {
+ return action.func.apply(action.thisArg, arrayPush([result3], action.args));
+ }, result2);
+ }
+ function baseXor(arrays, iteratee2, comparator) {
+ var length = arrays.length;
+ if (length < 2) {
+ return length ? baseUniq(arrays[0]) : [];
+ }
+ var index = -1, result2 = Array2(length);
+ while (++index < length) {
+ var array = arrays[index], othIndex = -1;
+ while (++othIndex < length) {
+ if (othIndex != index) {
+ result2[index] = baseDifference(result2[index] || array, arrays[othIndex], iteratee2, comparator);
+ }
+ }
+ }
+ return baseUniq(baseFlatten(result2, 1), iteratee2, comparator);
+ }
+ function baseZipObject(props, values2, assignFunc) {
+ var index = -1, length = props.length, valsLength = values2.length, result2 = {};
+ while (++index < length) {
+ var value = index < valsLength ? values2[index] : undefined;
+ assignFunc(result2, props[index], value);
+ }
+ return result2;
+ }
+ function castArrayLikeObject(value) {
+ return isArrayLikeObject(value) ? value : [];
+ }
+ function castFunction(value) {
+ return typeof value == "function" ? value : identity;
+ }
+ function castPath(value, object) {
+ if (isArray(value)) {
+ return value;
+ }
+ return isKey(value, object) ? [value] : stringToPath(toString(value));
+ }
+ var castRest = baseRest;
+ function castSlice(array, start, end) {
+ var length = array.length;
+ end = end === undefined ? length : end;
+ return !start && end >= length ? array : baseSlice(array, start, end);
+ }
+ var clearTimeout = ctxClearTimeout || function(id) {
+ return root.clearTimeout(id);
+ };
+ function cloneBuffer(buffer, isDeep) {
+ if (isDeep) {
+ return buffer.slice();
+ }
+ var length = buffer.length, result2 = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
+ buffer.copy(result2);
+ return result2;
+ }
+ function cloneArrayBuffer(arrayBuffer) {
+ var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength);
+ new Uint8Array(result2).set(new Uint8Array(arrayBuffer));
+ return result2;
+ }
+ function cloneDataView(dataView, isDeep) {
+ var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
+ return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
+ }
+ function cloneRegExp(regexp) {
+ var result2 = new regexp.constructor(regexp.source, reFlags.exec(regexp));
+ result2.lastIndex = regexp.lastIndex;
+ return result2;
+ }
+ function cloneSymbol(symbol) {
+ return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {};
+ }
+ function cloneTypedArray(typedArray, isDeep) {
+ var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
+ return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
+ }
+ function compareAscending(value, other) {
+ if (value !== other) {
+ var valIsDefined = value !== undefined, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol(value);
+ var othIsDefined = other !== undefined, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol(other);
+ if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {
+ return 1;
+ }
+ if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {
+ return -1;
+ }
+ }
+ return 0;
+ }
+ function compareMultiple(object, other, orders) {
+ var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length;
+ while (++index < length) {
+ var result2 = compareAscending(objCriteria[index], othCriteria[index]);
+ if (result2) {
+ if (index >= ordersLength) {
+ return result2;
+ }
+ var order = orders[index];
+ return result2 * (order == "desc" ? -1 : 1);
+ }
+ }
+ return object.index - other.index;
+ }
+ function composeArgs(args, partials, holders, isCurried) {
+ var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried;
+ while (++leftIndex < leftLength) {
+ result2[leftIndex] = partials[leftIndex];
+ }
+ while (++argsIndex < holdersLength) {
+ if (isUncurried || argsIndex < argsLength) {
+ result2[holders[argsIndex]] = args[argsIndex];
+ }
+ }
+ while (rangeLength--) {
+ result2[leftIndex++] = args[argsIndex++];
+ }
+ return result2;
+ }
+ function composeArgsRight(args, partials, holders, isCurried) {
+ var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried;
+ while (++argsIndex < rangeLength) {
+ result2[argsIndex] = args[argsIndex];
+ }
+ var offset = argsIndex;
+ while (++rightIndex < rightLength) {
+ result2[offset + rightIndex] = partials[rightIndex];
+ }
+ while (++holdersIndex < holdersLength) {
+ if (isUncurried || argsIndex < argsLength) {
+ result2[offset + holders[holdersIndex]] = args[argsIndex++];
+ }
+ }
+ return result2;
+ }
+ function copyArray(source, array) {
+ var index = -1, length = source.length;
+ array || (array = Array2(length));
+ while (++index < length) {
+ array[index] = source[index];
+ }
+ return array;
+ }
+ function copyObject(source, props, object, customizer) {
+ var isNew = !object;
+ object || (object = {});
+ var index = -1, length = props.length;
+ while (++index < length) {
+ var key = props[index];
+ var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;
+ if (newValue === undefined) {
+ newValue = source[key];
+ }
+ if (isNew) {
+ baseAssignValue(object, key, newValue);
+ } else {
+ assignValue(object, key, newValue);
+ }
+ }
+ return object;
+ }
+ function copySymbols(source, object) {
+ return copyObject(source, getSymbols(source), object);
+ }
+ function copySymbolsIn(source, object) {
+ return copyObject(source, getSymbolsIn(source), object);
+ }
+ function createAggregator(setter, initializer) {
+ return function(collection, iteratee2) {
+ var func = isArray(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {};
+ return func(collection, setter, getIteratee(iteratee2, 2), accumulator);
+ };
+ }
+ function createAssigner(assigner) {
+ return baseRest(function(object, sources) {
+ var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : undefined, guard = length > 2 ? sources[2] : undefined;
+ customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : undefined;
+ if (guard && isIterateeCall(sources[0], sources[1], guard)) {
+ customizer = length < 3 ? undefined : customizer;
+ length = 1;
+ }
+ object = Object2(object);
+ while (++index < length) {
+ var source = sources[index];
+ if (source) {
+ assigner(object, source, index, customizer);
+ }
+ }
+ return object;
+ });
+ }
+ function createBaseEach(eachFunc, fromRight) {
+ return function(collection, iteratee2) {
+ if (collection == null) {
+ return collection;
+ }
+ if (!isArrayLike(collection)) {
+ return eachFunc(collection, iteratee2);
+ }
+ var length = collection.length, index = fromRight ? length : -1, iterable = Object2(collection);
+ while (fromRight ? index-- : ++index < length) {
+ if (iteratee2(iterable[index], index, iterable) === false) {
+ break;
+ }
+ }
+ return collection;
+ };
+ }
+ function createBaseFor(fromRight) {
+ return function(object, iteratee2, keysFunc) {
+ var index = -1, iterable = Object2(object), props = keysFunc(object), length = props.length;
+ while (length--) {
+ var key = props[fromRight ? length : ++index];
+ if (iteratee2(iterable[key], key, iterable) === false) {
+ break;
+ }
+ }
+ return object;
+ };
+ }
+ function createBind(func, bitmask, thisArg) {
+ var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
+ function wrapper() {
+ var fn = this && this !== root && this instanceof wrapper ? Ctor : func;
+ return fn.apply(isBind ? thisArg : this, arguments);
+ }
+ return wrapper;
+ }
+ function createCaseFirst(methodName) {
+ return function(string) {
+ string = toString(string);
+ var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined;
+ var chr = strSymbols ? strSymbols[0] : string.charAt(0);
+ var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1);
+ return chr[methodName]() + trailing;
+ };
+ }
+ function createCompounder(callback) {
+ return function(string) {
+ return arrayReduce(words(deburr(string).replace(reApos, "")), callback, "");
+ };
+ }
+ function createCtor(Ctor) {
+ return function() {
+ var args = arguments;
+ switch (args.length) {
+ case 0:
+ return new Ctor();
+ case 1:
+ return new Ctor(args[0]);
+ case 2:
+ return new Ctor(args[0], args[1]);
+ case 3:
+ return new Ctor(args[0], args[1], args[2]);
+ case 4:
+ return new Ctor(args[0], args[1], args[2], args[3]);
+ case 5:
+ return new Ctor(args[0], args[1], args[2], args[3], args[4]);
+ case 6:
+ return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
+ case 7:
+ return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
+ }
+ var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args);
+ return isObject(result2) ? result2 : thisBinding;
+ };
+ }
+ function createCurry(func, bitmask, arity) {
+ var Ctor = createCtor(func);
+ function wrapper() {
+ var length = arguments.length, args = Array2(length), index = length, placeholder = getHolder(wrapper);
+ while (index--) {
+ args[index] = arguments[index];
+ }
+ var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder);
+ length -= holders.length;
+ if (length < arity) {
+ return createRecurry(
+ func,
+ bitmask,
+ createHybrid,
+ wrapper.placeholder,
+ undefined,
+ args,
+ holders,
+ undefined,
+ undefined,
+ arity - length
+ );
+ }
+ var fn = this && this !== root && this instanceof wrapper ? Ctor : func;
+ return apply(fn, this, args);
+ }
+ return wrapper;
+ }
+ function createFind(findIndexFunc) {
+ return function(collection, predicate, fromIndex) {
+ var iterable = Object2(collection);
+ if (!isArrayLike(collection)) {
+ var iteratee2 = getIteratee(predicate, 3);
+ collection = keys(collection);
+ predicate = function(key) {
+ return iteratee2(iterable[key], key, iterable);
+ };
+ }
+ var index = findIndexFunc(collection, predicate, fromIndex);
+ return index > -1 ? iterable[iteratee2 ? collection[index] : index] : undefined;
+ };
+ }
+ function createFlow(fromRight) {
+ return flatRest(function(funcs) {
+ var length = funcs.length, index = length, prereq = LodashWrapper.prototype.thru;
+ if (fromRight) {
+ funcs.reverse();
+ }
+ while (index--) {
+ var func = funcs[index];
+ if (typeof func != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ if (prereq && !wrapper && getFuncName(func) == "wrapper") {
+ var wrapper = new LodashWrapper([], true);
+ }
+ }
+ index = wrapper ? index : length;
+ while (++index < length) {
+ func = funcs[index];
+ var funcName = getFuncName(func), data = funcName == "wrapper" ? getData(func) : undefined;
+ if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) {
+ wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
+ } else {
+ wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func);
+ }
+ }
+ return function() {
+ var args = arguments, value = args[0];
+ if (wrapper && args.length == 1 && isArray(value)) {
+ return wrapper.plant(value).value();
+ }
+ var index2 = 0, result2 = length ? funcs[index2].apply(this, args) : value;
+ while (++index2 < length) {
+ result2 = funcs[index2].call(this, result2);
+ }
+ return result2;
+ };
+ });
+ }
+ function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) {
+ var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined : createCtor(func);
+ function wrapper() {
+ var length = arguments.length, args = Array2(length), index = length;
+ while (index--) {
+ args[index] = arguments[index];
+ }
+ if (isCurried) {
+ var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder);
+ }
+ if (partials) {
+ args = composeArgs(args, partials, holders, isCurried);
+ }
+ if (partialsRight) {
+ args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
+ }
+ length -= holdersCount;
+ if (isCurried && length < arity) {
+ var newHolders = replaceHolders(args, placeholder);
+ return createRecurry(
+ func,
+ bitmask,
+ createHybrid,
+ wrapper.placeholder,
+ thisArg,
+ args,
+ newHolders,
+ argPos,
+ ary2,
+ arity - length
+ );
+ }
+ var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func;
+ length = args.length;
+ if (argPos) {
+ args = reorder(args, argPos);
+ } else if (isFlip && length > 1) {
+ args.reverse();
+ }
+ if (isAry && ary2 < length) {
+ args.length = ary2;
+ }
+ if (this && this !== root && this instanceof wrapper) {
+ fn = Ctor || createCtor(fn);
+ }
+ return fn.apply(thisBinding, args);
+ }
+ return wrapper;
+ }
+ function createInverter(setter, toIteratee) {
+ return function(object, iteratee2) {
+ return baseInverter(object, setter, toIteratee(iteratee2), {});
+ };
+ }
+ function createMathOperation(operator, defaultValue) {
+ return function(value, other) {
+ var result2;
+ if (value === undefined && other === undefined) {
+ return defaultValue;
+ }
+ if (value !== undefined) {
+ result2 = value;
+ }
+ if (other !== undefined) {
+ if (result2 === undefined) {
+ return other;
+ }
+ if (typeof value == "string" || typeof other == "string") {
+ value = baseToString(value);
+ other = baseToString(other);
+ } else {
+ value = baseToNumber(value);
+ other = baseToNumber(other);
+ }
+ result2 = operator(value, other);
+ }
+ return result2;
+ };
+ }
+ function createOver(arrayFunc) {
+ return flatRest(function(iteratees) {
+ iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
+ return baseRest(function(args) {
+ var thisArg = this;
+ return arrayFunc(iteratees, function(iteratee2) {
+ return apply(iteratee2, thisArg, args);
+ });
+ });
+ });
+ }
+ function createPadding(length, chars) {
+ chars = chars === undefined ? " " : baseToString(chars);
+ var charsLength = chars.length;
+ if (charsLength < 2) {
+ return charsLength ? baseRepeat(chars, length) : chars;
+ }
+ var result2 = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
+ return hasUnicode(chars) ? castSlice(stringToArray(result2), 0, length).join("") : result2.slice(0, length);
+ }
+ function createPartial(func, bitmask, thisArg, partials) {
+ var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
+ function wrapper() {
+ var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn = this && this !== root && this instanceof wrapper ? Ctor : func;
+ while (++leftIndex < leftLength) {
+ args[leftIndex] = partials[leftIndex];
+ }
+ while (argsLength--) {
+ args[leftIndex++] = arguments[++argsIndex];
+ }
+ return apply(fn, isBind ? thisArg : this, args);
+ }
+ return wrapper;
+ }
+ function createRange(fromRight) {
+ return function(start, end, step) {
+ if (step && typeof step != "number" && isIterateeCall(start, end, step)) {
+ end = step = undefined;
+ }
+ start = toFinite(start);
+ if (end === undefined) {
+ end = start;
+ start = 0;
+ } else {
+ end = toFinite(end);
+ }
+ step = step === undefined ? start < end ? 1 : -1 : toFinite(step);
+ return baseRange(start, end, step, fromRight);
+ };
+ }
+ function createRelationalOperation(operator) {
+ return function(value, other) {
+ if (!(typeof value == "string" && typeof other == "string")) {
+ value = toNumber(value);
+ other = toNumber(other);
+ }
+ return operator(value, other);
+ };
+ }
+ function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) {
+ var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined, newHoldersRight = isCurry ? undefined : holders, newPartials = isCurry ? partials : undefined, newPartialsRight = isCurry ? undefined : partials;
+ bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG;
+ bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
+ if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
+ bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
+ }
+ var newData = [
+ func,
+ bitmask,
+ thisArg,
+ newPartials,
+ newHolders,
+ newPartialsRight,
+ newHoldersRight,
+ argPos,
+ ary2,
+ arity
+ ];
+ var result2 = wrapFunc.apply(undefined, newData);
+ if (isLaziable(func)) {
+ setData(result2, newData);
+ }
+ result2.placeholder = placeholder;
+ return setWrapToString(result2, func, bitmask);
+ }
+ function createRound(methodName) {
+ var func = Math[methodName];
+ return function(number, precision) {
+ number = toNumber(number);
+ precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
+ if (precision && nativeIsFinite(number)) {
+ var pair = (toString(number) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision));
+ pair = (toString(value) + "e").split("e");
+ return +(pair[0] + "e" + (+pair[1] - precision));
+ }
+ return func(number);
+ };
+ }
+ var createSet = !(Set && 1 / setToArray(new Set([, -0]))[1] == INFINITY) ? noop : function(values2) {
+ return new Set(values2);
+ };
+ function createToPairs(keysFunc) {
+ return function(object) {
+ var tag = getTag(object);
+ if (tag == mapTag) {
+ return mapToArray(object);
+ }
+ if (tag == setTag) {
+ return setToPairs(object);
+ }
+ return baseToPairs(object, keysFunc(object));
+ };
+ }
+ function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) {
+ var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
+ if (!isBindKey && typeof func != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ var length = partials ? partials.length : 0;
+ if (!length) {
+ bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
+ partials = holders = undefined;
+ }
+ ary2 = ary2 === undefined ? ary2 : nativeMax(toInteger(ary2), 0);
+ arity = arity === undefined ? arity : toInteger(arity);
+ length -= holders ? holders.length : 0;
+ if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
+ var partialsRight = partials, holdersRight = holders;
+ partials = holders = undefined;
+ }
+ var data = isBindKey ? undefined : getData(func);
+ var newData = [
+ func,
+ bitmask,
+ thisArg,
+ partials,
+ holders,
+ partialsRight,
+ holdersRight,
+ argPos,
+ ary2,
+ arity
+ ];
+ if (data) {
+ mergeData(newData, data);
+ }
+ func = newData[0];
+ bitmask = newData[1];
+ thisArg = newData[2];
+ partials = newData[3];
+ holders = newData[4];
+ arity = newData[9] = newData[9] === undefined ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0);
+ if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
+ bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
+ }
+ if (!bitmask || bitmask == WRAP_BIND_FLAG) {
+ var result2 = createBind(func, bitmask, thisArg);
+ } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
+ result2 = createCurry(func, bitmask, arity);
+ } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
+ result2 = createPartial(func, bitmask, thisArg, partials);
+ } else {
+ result2 = createHybrid.apply(undefined, newData);
+ }
+ var setter = data ? baseSetData : setData;
+ return setWrapToString(setter(result2, newData), func, bitmask);
+ }
+ function customDefaultsAssignIn(objValue, srcValue, key, object) {
+ if (objValue === undefined || eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key)) {
+ return srcValue;
+ }
+ return objValue;
+ }
+ function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
+ if (isObject(objValue) && isObject(srcValue)) {
+ stack.set(srcValue, objValue);
+ baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
+ stack["delete"](srcValue);
+ }
+ return objValue;
+ }
+ function customOmitClone(value) {
+ return isPlainObject(value) ? undefined : value;
+ }
+ function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length;
+ if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
+ return false;
+ }
+ var arrStacked = stack.get(array);
+ var othStacked = stack.get(other);
+ if (arrStacked && othStacked) {
+ return arrStacked == other && othStacked == array;
+ }
+ var index = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;
+ stack.set(array, other);
+ stack.set(other, array);
+ while (++index < arrLength) {
+ var arrValue = array[index], othValue = other[index];
+ if (customizer) {
+ var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
+ }
+ if (compared !== undefined) {
+ if (compared) {
+ continue;
+ }
+ result2 = false;
+ break;
+ }
+ if (seen) {
+ if (!arraySome(other, function(othValue2, othIndex) {
+ if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
+ return seen.push(othIndex);
+ }
+ })) {
+ result2 = false;
+ break;
+ }
+ } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
+ result2 = false;
+ break;
+ }
+ }
+ stack["delete"](array);
+ stack["delete"](other);
+ return result2;
+ }
+ function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
+ switch (tag) {
+ case dataViewTag:
+ if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
+ return false;
+ }
+ object = object.buffer;
+ other = other.buffer;
+ case arrayBufferTag:
+ if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
+ return false;
+ }
+ return true;
+ case boolTag:
+ case dateTag:
+ case numberTag:
+ return eq(+object, +other);
+ case errorTag:
+ return object.name == other.name && object.message == other.message;
+ case regexpTag:
+ case stringTag:
+ return object == other + "";
+ case mapTag:
+ var convert = mapToArray;
+ case setTag:
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
+ convert || (convert = setToArray);
+ if (object.size != other.size && !isPartial) {
+ return false;
+ }
+ var stacked = stack.get(object);
+ if (stacked) {
+ return stacked == other;
+ }
+ bitmask |= COMPARE_UNORDERED_FLAG;
+ stack.set(object, other);
+ var result2 = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
+ stack["delete"](object);
+ return result2;
+ case symbolTag:
+ if (symbolValueOf) {
+ return symbolValueOf.call(object) == symbolValueOf.call(other);
+ }
+ }
+ return false;
+ }
+ function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;
+ if (objLength != othLength && !isPartial) {
+ return false;
+ }
+ var index = objLength;
+ while (index--) {
+ var key = objProps[index];
+ if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
+ return false;
+ }
+ }
+ var objStacked = stack.get(object);
+ var othStacked = stack.get(other);
+ if (objStacked && othStacked) {
+ return objStacked == other && othStacked == object;
+ }
+ var result2 = true;
+ stack.set(object, other);
+ stack.set(other, object);
+ var skipCtor = isPartial;
+ while (++index < objLength) {
+ key = objProps[index];
+ var objValue = object[key], othValue = other[key];
+ if (customizer) {
+ var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
+ }
+ if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
+ result2 = false;
+ break;
+ }
+ skipCtor || (skipCtor = key == "constructor");
+ }
+ if (result2 && !skipCtor) {
+ var objCtor = object.constructor, othCtor = other.constructor;
+ if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
+ result2 = false;
+ }
+ }
+ stack["delete"](object);
+ stack["delete"](other);
+ return result2;
+ }
+ function flatRest(func) {
+ return setToString(overRest(func, undefined, flatten), func + "");
+ }
+ function getAllKeys(object) {
+ return baseGetAllKeys(object, keys, getSymbols);
+ }
+ function getAllKeysIn(object) {
+ return baseGetAllKeys(object, keysIn, getSymbolsIn);
+ }
+ var getData = !metaMap ? noop : function(func) {
+ return metaMap.get(func);
+ };
+ function getFuncName(func) {
+ var result2 = func.name + "", array = realNames[result2], length = hasOwnProperty.call(realNames, result2) ? array.length : 0;
+ while (length--) {
+ var data = array[length], otherFunc = data.func;
+ if (otherFunc == null || otherFunc == func) {
+ return data.name;
+ }
+ }
+ return result2;
+ }
+ function getHolder(func) {
+ var object = hasOwnProperty.call(lodash, "placeholder") ? lodash : func;
+ return object.placeholder;
+ }
+ function getIteratee() {
+ var result2 = lodash.iteratee || iteratee;
+ result2 = result2 === iteratee ? baseIteratee : result2;
+ return arguments.length ? result2(arguments[0], arguments[1]) : result2;
+ }
+ function getMapData(map2, key) {
+ var data = map2.__data__;
+ return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
+ }
+ function getMatchData(object) {
+ var result2 = keys(object), length = result2.length;
+ while (length--) {
+ var key = result2[length], value = object[key];
+ result2[length] = [key, value, isStrictComparable(value)];
+ }
+ return result2;
+ }
+ function getNative(object, key) {
+ var value = getValue(object, key);
+ return baseIsNative(value) ? value : undefined;
+ }
+ function getRawTag(value) {
+ var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
+ try {
+ value[symToStringTag] = undefined;
+ var unmasked = true;
+ } catch (e) {
+ }
+ var result2 = nativeObjectToString.call(value);
+ if (unmasked) {
+ if (isOwn) {
+ value[symToStringTag] = tag;
+ } else {
+ delete value[symToStringTag];
+ }
+ }
+ return result2;
+ }
+ var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
+ if (object == null) {
+ return [];
+ }
+ object = Object2(object);
+ return arrayFilter(nativeGetSymbols(object), function(symbol) {
+ return propertyIsEnumerable.call(object, symbol);
+ });
+ };
+ var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
+ var result2 = [];
+ while (object) {
+ arrayPush(result2, getSymbols(object));
+ object = getPrototype(object);
+ }
+ return result2;
+ };
+ var getTag = baseGetTag;
+ if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {
+ getTag = function(value) {
+ var result2 = baseGetTag(value), Ctor = result2 == objectTag ? value.constructor : undefined, ctorString = Ctor ? toSource(Ctor) : "";
+ if (ctorString) {
+ switch (ctorString) {
+ case dataViewCtorString:
+ return dataViewTag;
+ case mapCtorString:
+ return mapTag;
+ case promiseCtorString:
+ return promiseTag;
+ case setCtorString:
+ return setTag;
+ case weakMapCtorString:
+ return weakMapTag;
+ }
+ }
+ return result2;
+ };
+ }
+ function getView(start, end, transforms) {
+ var index = -1, length = transforms.length;
+ while (++index < length) {
+ var data = transforms[index], size2 = data.size;
+ switch (data.type) {
+ case "drop":
+ start += size2;
+ break;
+ case "dropRight":
+ end -= size2;
+ break;
+ case "take":
+ end = nativeMin(end, start + size2);
+ break;
+ case "takeRight":
+ start = nativeMax(start, end - size2);
+ break;
+ }
+ }
+ return { "start": start, "end": end };
+ }
+ function getWrapDetails(source) {
+ var match = source.match(reWrapDetails);
+ return match ? match[1].split(reSplitDetails) : [];
+ }
+ function hasPath(object, path, hasFunc) {
+ path = castPath(path, object);
+ var index = -1, length = path.length, result2 = false;
+ while (++index < length) {
+ var key = toKey(path[index]);
+ if (!(result2 = object != null && hasFunc(object, key))) {
+ break;
+ }
+ object = object[key];
+ }
+ if (result2 || ++index != length) {
+ return result2;
+ }
+ length = object == null ? 0 : object.length;
+ return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));
+ }
+ function initCloneArray(array) {
+ var length = array.length, result2 = new array.constructor(length);
+ if (length && typeof array[0] == "string" && hasOwnProperty.call(array, "index")) {
+ result2.index = array.index;
+ result2.input = array.input;
+ }
+ return result2;
+ }
+ function initCloneObject(object) {
+ return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};
+ }
+ function initCloneByTag(object, tag, isDeep) {
+ var Ctor = object.constructor;
+ switch (tag) {
+ case arrayBufferTag:
+ return cloneArrayBuffer(object);
+ case boolTag:
+ case dateTag:
+ return new Ctor(+object);
+ case dataViewTag:
+ return cloneDataView(object, isDeep);
+ case float32Tag:
+ case float64Tag:
+ case int8Tag:
+ case int16Tag:
+ case int32Tag:
+ case uint8Tag:
+ case uint8ClampedTag:
+ case uint16Tag:
+ case uint32Tag:
+ return cloneTypedArray(object, isDeep);
+ case mapTag:
+ return new Ctor();
+ case numberTag:
+ case stringTag:
+ return new Ctor(object);
+ case regexpTag:
+ return cloneRegExp(object);
+ case setTag:
+ return new Ctor();
+ case symbolTag:
+ return cloneSymbol(object);
+ }
+ }
+ function insertWrapDetails(source, details) {
+ var length = details.length;
+ if (!length) {
+ return source;
+ }
+ var lastIndex = length - 1;
+ details[lastIndex] = (length > 1 ? "& " : "") + details[lastIndex];
+ details = details.join(length > 2 ? ", " : " ");
+ return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n");
+ }
+ function isFlattenable(value) {
+ return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
+ }
+ function isIndex(value, length) {
+ var type = typeof value;
+ length = length == null ? MAX_SAFE_INTEGER : length;
+ return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
+ }
+ function isIterateeCall(value, index, object) {
+ if (!isObject(object)) {
+ return false;
+ }
+ var type = typeof index;
+ if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) {
+ return eq(object[index], value);
+ }
+ return false;
+ }
+ function isKey(value, object) {
+ if (isArray(value)) {
+ return false;
+ }
+ var type = typeof value;
+ if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) {
+ return true;
+ }
+ return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object2(object);
+ }
+ function isKeyable(value) {
+ var type = typeof value;
+ return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
+ }
+ function isLaziable(func) {
+ var funcName = getFuncName(func), other = lodash[funcName];
+ if (typeof other != "function" || !(funcName in LazyWrapper.prototype)) {
+ return false;
+ }
+ if (func === other) {
+ return true;
+ }
+ var data = getData(other);
+ return !!data && func === data[0];
+ }
+ function isMasked(func) {
+ return !!maskSrcKey && maskSrcKey in func;
+ }
+ var isMaskable = coreJsData ? isFunction : stubFalse;
+ function isPrototype(value) {
+ var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
+ return value === proto;
+ }
+ function isStrictComparable(value) {
+ return value === value && !isObject(value);
+ }
+ function matchesStrictComparable(key, srcValue) {
+ return function(object) {
+ if (object == null) {
+ return false;
+ }
+ return object[key] === srcValue && (srcValue !== undefined || key in Object2(object));
+ };
+ }
+ function memoizeCapped(func) {
+ var result2 = memoize(func, function(key) {
+ if (cache.size === MAX_MEMOIZE_SIZE) {
+ cache.clear();
+ }
+ return key;
+ });
+ var cache = result2.cache;
+ return result2;
+ }
+ function mergeData(data, source) {
+ var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
+ var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG;
+ if (!(isCommon || isCombo)) {
+ return data;
+ }
+ if (srcBitmask & WRAP_BIND_FLAG) {
+ data[2] = source[2];
+ newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
+ }
+ var value = source[3];
+ if (value) {
+ var partials = data[3];
+ data[3] = partials ? composeArgs(partials, value, source[4]) : value;
+ data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
+ }
+ value = source[5];
+ if (value) {
+ partials = data[5];
+ data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
+ data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
+ }
+ value = source[7];
+ if (value) {
+ data[7] = value;
+ }
+ if (srcBitmask & WRAP_ARY_FLAG) {
+ data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
+ }
+ if (data[9] == null) {
+ data[9] = source[9];
+ }
+ data[0] = source[0];
+ data[1] = newBitmask;
+ return data;
+ }
+ function nativeKeysIn(object) {
+ var result2 = [];
+ if (object != null) {
+ for (var key in Object2(object)) {
+ result2.push(key);
+ }
+ }
+ return result2;
+ }
+ function objectToString(value) {
+ return nativeObjectToString.call(value);
+ }
+ function overRest(func, start, transform2) {
+ start = nativeMax(start === undefined ? func.length - 1 : start, 0);
+ return function() {
+ var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array2(length);
+ while (++index < length) {
+ array[index] = args[start + index];
+ }
+ index = -1;
+ var otherArgs = Array2(start + 1);
+ while (++index < start) {
+ otherArgs[index] = args[index];
+ }
+ otherArgs[start] = transform2(array);
+ return apply(func, this, otherArgs);
+ };
+ }
+ function parent(object, path) {
+ return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
+ }
+ function reorder(array, indexes) {
+ var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = copyArray(array);
+ while (length--) {
+ var index = indexes[length];
+ array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
+ }
+ return array;
+ }
+ function safeGet(object, key) {
+ if (key === "constructor" && typeof object[key] === "function") {
+ return;
+ }
+ if (key == "__proto__") {
+ return;
+ }
+ return object[key];
+ }
+ var setData = shortOut(baseSetData);
+ var setTimeout = ctxSetTimeout || function(func, wait) {
+ return root.setTimeout(func, wait);
+ };
+ var setToString = shortOut(baseSetToString);
+ function setWrapToString(wrapper, reference, bitmask) {
+ var source = reference + "";
+ return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
+ }
+ function shortOut(func) {
+ var count = 0, lastCalled = 0;
+ return function() {
+ var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
+ lastCalled = stamp;
+ if (remaining > 0) {
+ if (++count >= HOT_COUNT) {
+ return arguments[0];
+ }
+ } else {
+ count = 0;
+ }
+ return func.apply(undefined, arguments);
+ };
+ }
+ function shuffleSelf(array, size2) {
+ var index = -1, length = array.length, lastIndex = length - 1;
+ size2 = size2 === undefined ? length : size2;
+ while (++index < size2) {
+ var rand = baseRandom(index, lastIndex), value = array[rand];
+ array[rand] = array[index];
+ array[index] = value;
+ }
+ array.length = size2;
+ return array;
+ }
+ var stringToPath = memoizeCapped(function(string) {
+ var result2 = [];
+ if (string.charCodeAt(0) === 46) {
+ result2.push("");
+ }
+ string.replace(rePropName, function(match, number, quote, subString) {
+ result2.push(quote ? subString.replace(reEscapeChar, "$1") : number || match);
+ });
+ return result2;
+ });
+ function toKey(value) {
+ if (typeof value == "string" || isSymbol(value)) {
+ return value;
+ }
+ var result2 = value + "";
+ return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2;
+ }
+ function toSource(func) {
+ if (func != null) {
+ try {
+ return funcToString.call(func);
+ } catch (e) {
+ }
+ try {
+ return func + "";
+ } catch (e) {
+ }
+ }
+ return "";
+ }
+ function updateWrapDetails(details, bitmask) {
+ arrayEach(wrapFlags, function(pair) {
+ var value = "_." + pair[0];
+ if (bitmask & pair[1] && !arrayIncludes(details, value)) {
+ details.push(value);
+ }
+ });
+ return details.sort();
+ }
+ function wrapperClone(wrapper) {
+ if (wrapper instanceof LazyWrapper) {
+ return wrapper.clone();
+ }
+ var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
+ result2.__actions__ = copyArray(wrapper.__actions__);
+ result2.__index__ = wrapper.__index__;
+ result2.__values__ = wrapper.__values__;
+ return result2;
+ }
+ function chunk(array, size2, guard) {
+ if (guard ? isIterateeCall(array, size2, guard) : size2 === undefined) {
+ size2 = 1;
+ } else {
+ size2 = nativeMax(toInteger(size2), 0);
+ }
+ var length = array == null ? 0 : array.length;
+ if (!length || size2 < 1) {
+ return [];
+ }
+ var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size2));
+ while (index < length) {
+ result2[resIndex++] = baseSlice(array, index, index += size2);
+ }
+ return result2;
+ }
+ function compact(array) {
+ var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result2 = [];
+ while (++index < length) {
+ var value = array[index];
+ if (value) {
+ result2[resIndex++] = value;
+ }
+ }
+ return result2;
+ }
+ function concat() {
+ var length = arguments.length;
+ if (!length) {
+ return [];
+ }
+ var args = Array2(length - 1), array = arguments[0], index = length;
+ while (index--) {
+ args[index - 1] = arguments[index];
+ }
+ return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
+ }
+ var difference = baseRest(function(array, values2) {
+ return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true)) : [];
+ });
+ var differenceBy = baseRest(function(array, values2) {
+ var iteratee2 = last(values2);
+ if (isArrayLikeObject(iteratee2)) {
+ iteratee2 = undefined;
+ }
+ return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : [];
+ });
+ var differenceWith = baseRest(function(array, values2) {
+ var comparator = last(values2);
+ if (isArrayLikeObject(comparator)) {
+ comparator = undefined;
+ }
+ return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), undefined, comparator) : [];
+ });
+ function drop(array, n, guard) {
+ var length = array == null ? 0 : array.length;
+ if (!length) {
+ return [];
+ }
+ n = guard || n === undefined ? 1 : toInteger(n);
+ return baseSlice(array, n < 0 ? 0 : n, length);
+ }
+ function dropRight(array, n, guard) {
+ var length = array == null ? 0 : array.length;
+ if (!length) {
+ return [];
+ }
+ n = guard || n === undefined ? 1 : toInteger(n);
+ n = length - n;
+ return baseSlice(array, 0, n < 0 ? 0 : n);
+ }
+ function dropRightWhile(array, predicate) {
+ return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : [];
+ }
+ function dropWhile(array, predicate) {
+ return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : [];
+ }
+ function fill(array, value, start, end) {
+ var length = array == null ? 0 : array.length;
+ if (!length) {
+ return [];
+ }
+ if (start && typeof start != "number" && isIterateeCall(array, value, start)) {
+ start = 0;
+ end = length;
+ }
+ return baseFill(array, value, start, end);
+ }
+ function findIndex(array, predicate, fromIndex) {
+ var length = array == null ? 0 : array.length;
+ if (!length) {
+ return -1;
+ }
+ var index = fromIndex == null ? 0 : toInteger(fromIndex);
+ if (index < 0) {
+ index = nativeMax(length + index, 0);
+ }
+ return baseFindIndex(array, getIteratee(predicate, 3), index);
+ }
+ function findLastIndex(array, predicate, fromIndex) {
+ var length = array == null ? 0 : array.length;
+ if (!length) {
+ return -1;
+ }
+ var index = length - 1;
+ if (fromIndex !== undefined) {
+ index = toInteger(fromIndex);
+ index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
+ }
+ return baseFindIndex(array, getIteratee(predicate, 3), index, true);
+ }
+ function flatten(array) {
+ var length = array == null ? 0 : array.length;
+ return length ? baseFlatten(array, 1) : [];
+ }
+ function flattenDeep(array) {
+ var length = array == null ? 0 : array.length;
+ return length ? baseFlatten(array, INFINITY) : [];
+ }
+ function flattenDepth(array, depth) {
+ var length = array == null ? 0 : array.length;
+ if (!length) {
+ return [];
+ }
+ depth = depth === undefined ? 1 : toInteger(depth);
+ return baseFlatten(array, depth);
+ }
+ function fromPairs(pairs) {
+ var index = -1, length = pairs == null ? 0 : pairs.length, result2 = {};
+ while (++index < length) {
+ var pair = pairs[index];
+ result2[pair[0]] = pair[1];
+ }
+ return result2;
+ }
+ function head(array) {
+ return array && array.length ? array[0] : undefined;
+ }
+ function indexOf(array, value, fromIndex) {
+ var length = array == null ? 0 : array.length;
+ if (!length) {
+ return -1;
+ }
+ var index = fromIndex == null ? 0 : toInteger(fromIndex);
+ if (index < 0) {
+ index = nativeMax(length + index, 0);
+ }
+ return baseIndexOf(array, value, index);
+ }
+ function initial(array) {
+ var length = array == null ? 0 : array.length;
+ return length ? baseSlice(array, 0, -1) : [];
+ }
+ var intersection = baseRest(function(arrays) {
+ var mapped = arrayMap(arrays, castArrayLikeObject);
+ return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : [];
+ });
+ var intersectionBy = baseRest(function(arrays) {
+ var iteratee2 = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
+ if (iteratee2 === last(mapped)) {
+ iteratee2 = undefined;
+ } else {
+ mapped.pop();
+ }
+ return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : [];
+ });
+ var intersectionWith = baseRest(function(arrays) {
+ var comparator = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
+ comparator = typeof comparator == "function" ? comparator : undefined;
+ if (comparator) {
+ mapped.pop();
+ }
+ return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined, comparator) : [];
+ });
+ function join(array, separator) {
+ return array == null ? "" : nativeJoin.call(array, separator);
+ }
+ function last(array) {
+ var length = array == null ? 0 : array.length;
+ return length ? array[length - 1] : undefined;
+ }
+ function lastIndexOf(array, value, fromIndex) {
+ var length = array == null ? 0 : array.length;
+ if (!length) {
+ return -1;
+ }
+ var index = length;
+ if (fromIndex !== undefined) {
+ index = toInteger(fromIndex);
+ index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
+ }
+ return value === value ? strictLastIndexOf(array, value, index) : baseFindIndex(array, baseIsNaN, index, true);
+ }
+ function nth(array, n) {
+ return array && array.length ? baseNth(array, toInteger(n)) : undefined;
+ }
+ var pull = baseRest(pullAll);
+ function pullAll(array, values2) {
+ return array && array.length && values2 && values2.length ? basePullAll(array, values2) : array;
+ }
+ function pullAllBy(array, values2, iteratee2) {
+ return array && array.length && values2 && values2.length ? basePullAll(array, values2, getIteratee(iteratee2, 2)) : array;
+ }
+ function pullAllWith(array, values2, comparator) {
+ return array && array.length && values2 && values2.length ? basePullAll(array, values2, undefined, comparator) : array;
+ }
+ var pullAt = flatRest(function(array, indexes) {
+ var length = array == null ? 0 : array.length, result2 = baseAt(array, indexes);
+ basePullAt(array, arrayMap(indexes, function(index) {
+ return isIndex(index, length) ? +index : index;
+ }).sort(compareAscending));
+ return result2;
+ });
+ function remove(array, predicate) {
+ var result2 = [];
+ if (!(array && array.length)) {
+ return result2;
+ }
+ var index = -1, indexes = [], length = array.length;
+ predicate = getIteratee(predicate, 3);
+ while (++index < length) {
+ var value = array[index];
+ if (predicate(value, index, array)) {
+ result2.push(value);
+ indexes.push(index);
+ }
+ }
+ basePullAt(array, indexes);
+ return result2;
+ }
+ function reverse(array) {
+ return array == null ? array : nativeReverse.call(array);
+ }
+ function slice(array, start, end) {
+ var length = array == null ? 0 : array.length;
+ if (!length) {
+ return [];
+ }
+ if (end && typeof end != "number" && isIterateeCall(array, start, end)) {
+ start = 0;
+ end = length;
+ } else {
+ start = start == null ? 0 : toInteger(start);
+ end = end === undefined ? length : toInteger(end);
+ }
+ return baseSlice(array, start, end);
+ }
+ function sortedIndex(array, value) {
+ return baseSortedIndex(array, value);
+ }
+ function sortedIndexBy(array, value, iteratee2) {
+ return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2));
+ }
+ function sortedIndexOf(array, value) {
+ var length = array == null ? 0 : array.length;
+ if (length) {
+ var index = baseSortedIndex(array, value);
+ if (index < length && eq(array[index], value)) {
+ return index;
+ }
+ }
+ return -1;
+ }
+ function sortedLastIndex(array, value) {
+ return baseSortedIndex(array, value, true);
+ }
+ function sortedLastIndexBy(array, value, iteratee2) {
+ return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2), true);
+ }
+ function sortedLastIndexOf(array, value) {
+ var length = array == null ? 0 : array.length;
+ if (length) {
+ var index = baseSortedIndex(array, value, true) - 1;
+ if (eq(array[index], value)) {
+ return index;
+ }
+ }
+ return -1;
+ }
+ function sortedUniq(array) {
+ return array && array.length ? baseSortedUniq(array) : [];
+ }
+ function sortedUniqBy(array, iteratee2) {
+ return array && array.length ? baseSortedUniq(array, getIteratee(iteratee2, 2)) : [];
+ }
+ function tail(array) {
+ var length = array == null ? 0 : array.length;
+ return length ? baseSlice(array, 1, length) : [];
+ }
+ function take(array, n, guard) {
+ if (!(array && array.length)) {
+ return [];
+ }
+ n = guard || n === undefined ? 1 : toInteger(n);
+ return baseSlice(array, 0, n < 0 ? 0 : n);
+ }
+ function takeRight(array, n, guard) {
+ var length = array == null ? 0 : array.length;
+ if (!length) {
+ return [];
+ }
+ n = guard || n === undefined ? 1 : toInteger(n);
+ n = length - n;
+ return baseSlice(array, n < 0 ? 0 : n, length);
+ }
+ function takeRightWhile(array, predicate) {
+ return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : [];
+ }
+ function takeWhile(array, predicate) {
+ return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : [];
+ }
+ var union = baseRest(function(arrays) {
+ return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
+ });
+ var unionBy = baseRest(function(arrays) {
+ var iteratee2 = last(arrays);
+ if (isArrayLikeObject(iteratee2)) {
+ iteratee2 = undefined;
+ }
+ return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2));
+ });
+ var unionWith = baseRest(function(arrays) {
+ var comparator = last(arrays);
+ comparator = typeof comparator == "function" ? comparator : undefined;
+ return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
+ });
+ function uniq(array) {
+ return array && array.length ? baseUniq(array) : [];
+ }
+ function uniqBy(array, iteratee2) {
+ return array && array.length ? baseUniq(array, getIteratee(iteratee2, 2)) : [];
+ }
+ function uniqWith(array, comparator) {
+ comparator = typeof comparator == "function" ? comparator : undefined;
+ return array && array.length ? baseUniq(array, undefined, comparator) : [];
+ }
+ function unzip(array) {
+ if (!(array && array.length)) {
+ return [];
+ }
+ var length = 0;
+ array = arrayFilter(array, function(group) {
+ if (isArrayLikeObject(group)) {
+ length = nativeMax(group.length, length);
+ return true;
+ }
+ });
+ return baseTimes(length, function(index) {
+ return arrayMap(array, baseProperty(index));
+ });
+ }
+ function unzipWith(array, iteratee2) {
+ if (!(array && array.length)) {
+ return [];
+ }
+ var result2 = unzip(array);
+ if (iteratee2 == null) {
+ return result2;
+ }
+ return arrayMap(result2, function(group) {
+ return apply(iteratee2, undefined, group);
+ });
+ }
+ var without = baseRest(function(array, values2) {
+ return isArrayLikeObject(array) ? baseDifference(array, values2) : [];
+ });
+ var xor = baseRest(function(arrays) {
+ return baseXor(arrayFilter(arrays, isArrayLikeObject));
+ });
+ var xorBy = baseRest(function(arrays) {
+ var iteratee2 = last(arrays);
+ if (isArrayLikeObject(iteratee2)) {
+ iteratee2 = undefined;
+ }
+ return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2));
+ });
+ var xorWith = baseRest(function(arrays) {
+ var comparator = last(arrays);
+ comparator = typeof comparator == "function" ? comparator : undefined;
+ return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
+ });
+ var zip = baseRest(unzip);
+ function zipObject(props, values2) {
+ return baseZipObject(props || [], values2 || [], assignValue);
+ }
+ function zipObjectDeep(props, values2) {
+ return baseZipObject(props || [], values2 || [], baseSet);
+ }
+ var zipWith = baseRest(function(arrays) {
+ var length = arrays.length, iteratee2 = length > 1 ? arrays[length - 1] : undefined;
+ iteratee2 = typeof iteratee2 == "function" ? (arrays.pop(), iteratee2) : undefined;
+ return unzipWith(arrays, iteratee2);
+ });
+ function chain(value) {
+ var result2 = lodash(value);
+ result2.__chain__ = true;
+ return result2;
+ }
+ function tap(value, interceptor) {
+ interceptor(value);
+ return value;
+ }
+ function thru(value, interceptor) {
+ return interceptor(value);
+ }
+ var wrapperAt = flatRest(function(paths) {
+ var length = paths.length, start = length ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object) {
+ return baseAt(object, paths);
+ };
+ if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start)) {
+ return this.thru(interceptor);
+ }
+ value = value.slice(start, +start + (length ? 1 : 0));
+ value.__actions__.push({
+ "func": thru,
+ "args": [interceptor],
+ "thisArg": undefined
+ });
+ return new LodashWrapper(value, this.__chain__).thru(function(array) {
+ if (length && !array.length) {
+ array.push(undefined);
+ }
+ return array;
+ });
+ });
+ function wrapperChain() {
+ return chain(this);
+ }
+ function wrapperCommit() {
+ return new LodashWrapper(this.value(), this.__chain__);
+ }
+ function wrapperNext() {
+ if (this.__values__ === undefined) {
+ this.__values__ = toArray(this.value());
+ }
+ var done = this.__index__ >= this.__values__.length, value = done ? undefined : this.__values__[this.__index__++];
+ return { "done": done, "value": value };
+ }
+ function wrapperToIterator() {
+ return this;
+ }
+ function wrapperPlant(value) {
+ var result2, parent2 = this;
+ while (parent2 instanceof baseLodash) {
+ var clone2 = wrapperClone(parent2);
+ clone2.__index__ = 0;
+ clone2.__values__ = undefined;
+ if (result2) {
+ previous.__wrapped__ = clone2;
+ } else {
+ result2 = clone2;
+ }
+ var previous = clone2;
+ parent2 = parent2.__wrapped__;
+ }
+ previous.__wrapped__ = value;
+ return result2;
+ }
+ function wrapperReverse() {
+ var value = this.__wrapped__;
+ if (value instanceof LazyWrapper) {
+ var wrapped = value;
+ if (this.__actions__.length) {
+ wrapped = new LazyWrapper(this);
+ }
+ wrapped = wrapped.reverse();
+ wrapped.__actions__.push({
+ "func": thru,
+ "args": [reverse],
+ "thisArg": undefined
+ });
+ return new LodashWrapper(wrapped, this.__chain__);
+ }
+ return this.thru(reverse);
+ }
+ function wrapperValue() {
+ return baseWrapperValue(this.__wrapped__, this.__actions__);
+ }
+ var countBy = createAggregator(function(result2, value, key) {
+ if (hasOwnProperty.call(result2, key)) {
+ ++result2[key];
+ } else {
+ baseAssignValue(result2, key, 1);
+ }
+ });
+ function every(collection, predicate, guard) {
+ var func = isArray(collection) ? arrayEvery : baseEvery;
+ if (guard && isIterateeCall(collection, predicate, guard)) {
+ predicate = undefined;
+ }
+ return func(collection, getIteratee(predicate, 3));
+ }
+ function filter(collection, predicate) {
+ var func = isArray(collection) ? arrayFilter : baseFilter;
+ return func(collection, getIteratee(predicate, 3));
+ }
+ var find = createFind(findIndex);
+ var findLast = createFind(findLastIndex);
+ function flatMap(collection, iteratee2) {
+ return baseFlatten(map(collection, iteratee2), 1);
+ }
+ function flatMapDeep(collection, iteratee2) {
+ return baseFlatten(map(collection, iteratee2), INFINITY);
+ }
+ function flatMapDepth(collection, iteratee2, depth) {
+ depth = depth === undefined ? 1 : toInteger(depth);
+ return baseFlatten(map(collection, iteratee2), depth);
+ }
+ function forEach(collection, iteratee2) {
+ var func = isArray(collection) ? arrayEach : baseEach;
+ return func(collection, getIteratee(iteratee2, 3));
+ }
+ function forEachRight(collection, iteratee2) {
+ var func = isArray(collection) ? arrayEachRight : baseEachRight;
+ return func(collection, getIteratee(iteratee2, 3));
+ }
+ var groupBy = createAggregator(function(result2, value, key) {
+ if (hasOwnProperty.call(result2, key)) {
+ result2[key].push(value);
+ } else {
+ baseAssignValue(result2, key, [value]);
+ }
+ });
+ function includes(collection, value, fromIndex, guard) {
+ collection = isArrayLike(collection) ? collection : values(collection);
+ fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;
+ var length = collection.length;
+ if (fromIndex < 0) {
+ fromIndex = nativeMax(length + fromIndex, 0);
+ }
+ return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;
+ }
+ var invokeMap = baseRest(function(collection, path, args) {
+ var index = -1, isFunc = typeof path == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : [];
+ baseEach(collection, function(value) {
+ result2[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
+ });
+ return result2;
+ });
+ var keyBy = createAggregator(function(result2, value, key) {
+ baseAssignValue(result2, key, value);
+ });
+ function map(collection, iteratee2) {
+ var func = isArray(collection) ? arrayMap : baseMap;
+ return func(collection, getIteratee(iteratee2, 3));
+ }
+ function orderBy(collection, iteratees, orders, guard) {
+ if (collection == null) {
+ return [];
+ }
+ if (!isArray(iteratees)) {
+ iteratees = iteratees == null ? [] : [iteratees];
+ }
+ orders = guard ? undefined : orders;
+ if (!isArray(orders)) {
+ orders = orders == null ? [] : [orders];
+ }
+ return baseOrderBy(collection, iteratees, orders);
+ }
+ var partition = createAggregator(function(result2, value, key) {
+ result2[key ? 0 : 1].push(value);
+ }, function() {
+ return [[], []];
+ });
+ function reduce(collection, iteratee2, accumulator) {
+ var func = isArray(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3;
+ return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach);
+ }
+ function reduceRight(collection, iteratee2, accumulator) {
+ var func = isArray(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3;
+ return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight);
+ }
+ function reject(collection, predicate) {
+ var func = isArray(collection) ? arrayFilter : baseFilter;
+ return func(collection, negate(getIteratee(predicate, 3)));
+ }
+ function sample(collection) {
+ var func = isArray(collection) ? arraySample : baseSample;
+ return func(collection);
+ }
+ function sampleSize(collection, n, guard) {
+ if (guard ? isIterateeCall(collection, n, guard) : n === undefined) {
+ n = 1;
+ } else {
+ n = toInteger(n);
+ }
+ var func = isArray(collection) ? arraySampleSize : baseSampleSize;
+ return func(collection, n);
+ }
+ function shuffle(collection) {
+ var func = isArray(collection) ? arrayShuffle : baseShuffle;
+ return func(collection);
+ }
+ function size(collection) {
+ if (collection == null) {
+ return 0;
+ }
+ if (isArrayLike(collection)) {
+ return isString(collection) ? stringSize(collection) : collection.length;
+ }
+ var tag = getTag(collection);
+ if (tag == mapTag || tag == setTag) {
+ return collection.size;
+ }
+ return baseKeys(collection).length;
+ }
+ function some(collection, predicate, guard) {
+ var func = isArray(collection) ? arraySome : baseSome;
+ if (guard && isIterateeCall(collection, predicate, guard)) {
+ predicate = undefined;
+ }
+ return func(collection, getIteratee(predicate, 3));
+ }
+ var sortBy = baseRest(function(collection, iteratees) {
+ if (collection == null) {
+ return [];
+ }
+ var length = iteratees.length;
+ if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
+ iteratees = [];
+ } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
+ iteratees = [iteratees[0]];
+ }
+ return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
+ });
+ var now = ctxNow || function() {
+ return root.Date.now();
+ };
+ function after(n, func) {
+ if (typeof func != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ n = toInteger(n);
+ return function() {
+ if (--n < 1) {
+ return func.apply(this, arguments);
+ }
+ };
+ }
+ function ary(func, n, guard) {
+ n = guard ? undefined : n;
+ n = func && n == null ? func.length : n;
+ return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
+ }
+ function before(n, func) {
+ var result2;
+ if (typeof func != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ n = toInteger(n);
+ return function() {
+ if (--n > 0) {
+ result2 = func.apply(this, arguments);
+ }
+ if (n <= 1) {
+ func = undefined;
+ }
+ return result2;
+ };
+ }
+ var bind = baseRest(function(func, thisArg, partials) {
+ var bitmask = WRAP_BIND_FLAG;
+ if (partials.length) {
+ var holders = replaceHolders(partials, getHolder(bind));
+ bitmask |= WRAP_PARTIAL_FLAG;
+ }
+ return createWrap(func, bitmask, thisArg, partials, holders);
+ });
+ var bindKey = baseRest(function(object, key, partials) {
+ var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
+ if (partials.length) {
+ var holders = replaceHolders(partials, getHolder(bindKey));
+ bitmask |= WRAP_PARTIAL_FLAG;
+ }
+ return createWrap(key, bitmask, object, partials, holders);
+ });
+ function curry(func, arity, guard) {
+ arity = guard ? undefined : arity;
+ var result2 = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
+ result2.placeholder = curry.placeholder;
+ return result2;
+ }
+ function curryRight(func, arity, guard) {
+ arity = guard ? undefined : arity;
+ var result2 = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
+ result2.placeholder = curryRight.placeholder;
+ return result2;
+ }
+ function debounce(func, wait, options) {
+ var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
+ if (typeof func != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ wait = toNumber(wait) || 0;
+ if (isObject(options)) {
+ leading = !!options.leading;
+ maxing = "maxWait" in options;
+ maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
+ trailing = "trailing" in options ? !!options.trailing : trailing;
+ }
+ function invokeFunc(time) {
+ var args = lastArgs, thisArg = lastThis;
+ lastArgs = lastThis = undefined;
+ lastInvokeTime = time;
+ result2 = func.apply(thisArg, args);
+ return result2;
+ }
+ function leadingEdge(time) {
+ lastInvokeTime = time;
+ timerId = setTimeout(timerExpired, wait);
+ return leading ? invokeFunc(time) : result2;
+ }
+ function remainingWait(time) {
+ var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
+ return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
+ }
+ function shouldInvoke(time) {
+ var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
+ return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
+ }
+ function timerExpired() {
+ var time = now();
+ if (shouldInvoke(time)) {
+ return trailingEdge(time);
+ }
+ timerId = setTimeout(timerExpired, remainingWait(time));
+ }
+ function trailingEdge(time) {
+ timerId = undefined;
+ if (trailing && lastArgs) {
+ return invokeFunc(time);
+ }
+ lastArgs = lastThis = undefined;
+ return result2;
+ }
+ function cancel() {
+ if (timerId !== undefined) {
+ clearTimeout(timerId);
+ }
+ lastInvokeTime = 0;
+ lastArgs = lastCallTime = lastThis = timerId = undefined;
+ }
+ function flush() {
+ return timerId === undefined ? result2 : trailingEdge(now());
+ }
+ function debounced() {
+ var time = now(), isInvoking = shouldInvoke(time);
+ lastArgs = arguments;
+ lastThis = this;
+ lastCallTime = time;
+ if (isInvoking) {
+ if (timerId === undefined) {
+ return leadingEdge(lastCallTime);
+ }
+ if (maxing) {
+ clearTimeout(timerId);
+ timerId = setTimeout(timerExpired, wait);
+ return invokeFunc(lastCallTime);
+ }
+ }
+ if (timerId === undefined) {
+ timerId = setTimeout(timerExpired, wait);
+ }
+ return result2;
+ }
+ debounced.cancel = cancel;
+ debounced.flush = flush;
+ return debounced;
+ }
+ var defer = baseRest(function(func, args) {
+ return baseDelay(func, 1, args);
+ });
+ var delay = baseRest(function(func, wait, args) {
+ return baseDelay(func, toNumber(wait) || 0, args);
+ });
+ function flip(func) {
+ return createWrap(func, WRAP_FLIP_FLAG);
+ }
+ function memoize(func, resolver) {
+ if (typeof func != "function" || resolver != null && typeof resolver != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ var memoized = function() {
+ var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
+ if (cache.has(key)) {
+ return cache.get(key);
+ }
+ var result2 = func.apply(this, args);
+ memoized.cache = cache.set(key, result2) || cache;
+ return result2;
+ };
+ memoized.cache = new (memoize.Cache || MapCache)();
+ return memoized;
+ }
+ memoize.Cache = MapCache;
+ function negate(predicate) {
+ if (typeof predicate != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ return function() {
+ var args = arguments;
+ switch (args.length) {
+ case 0:
+ return !predicate.call(this);
+ case 1:
+ return !predicate.call(this, args[0]);
+ case 2:
+ return !predicate.call(this, args[0], args[1]);
+ case 3:
+ return !predicate.call(this, args[0], args[1], args[2]);
+ }
+ return !predicate.apply(this, args);
+ };
+ }
+ function once(func) {
+ return before(2, func);
+ }
+ var overArgs = castRest(function(func, transforms) {
+ transforms = transforms.length == 1 && isArray(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
+ var funcsLength = transforms.length;
+ return baseRest(function(args) {
+ var index = -1, length = nativeMin(args.length, funcsLength);
+ while (++index < length) {
+ args[index] = transforms[index].call(this, args[index]);
+ }
+ return apply(func, this, args);
+ });
+ });
+ var partial = baseRest(function(func, partials) {
+ var holders = replaceHolders(partials, getHolder(partial));
+ return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
+ });
+ var partialRight = baseRest(function(func, partials) {
+ var holders = replaceHolders(partials, getHolder(partialRight));
+ return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
+ });
+ var rearg = flatRest(function(func, indexes) {
+ return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
+ });
+ function rest(func, start) {
+ if (typeof func != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ start = start === undefined ? start : toInteger(start);
+ return baseRest(func, start);
+ }
+ function spread(func, start) {
+ if (typeof func != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ start = start == null ? 0 : nativeMax(toInteger(start), 0);
+ return baseRest(function(args) {
+ var array = args[start], otherArgs = castSlice(args, 0, start);
+ if (array) {
+ arrayPush(otherArgs, array);
+ }
+ return apply(func, this, otherArgs);
+ });
+ }
+ function throttle(func, wait, options) {
+ var leading = true, trailing = true;
+ if (typeof func != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ if (isObject(options)) {
+ leading = "leading" in options ? !!options.leading : leading;
+ trailing = "trailing" in options ? !!options.trailing : trailing;
+ }
+ return debounce(func, wait, {
+ "leading": leading,
+ "maxWait": wait,
+ "trailing": trailing
+ });
+ }
+ function unary(func) {
+ return ary(func, 1);
+ }
+ function wrap(value, wrapper) {
+ return partial(castFunction(wrapper), value);
+ }
+ function castArray() {
+ if (!arguments.length) {
+ return [];
+ }
+ var value = arguments[0];
+ return isArray(value) ? value : [value];
+ }
+ function clone(value) {
+ return baseClone(value, CLONE_SYMBOLS_FLAG);
+ }
+ function cloneWith(value, customizer) {
+ customizer = typeof customizer == "function" ? customizer : undefined;
+ return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
+ }
+ function cloneDeep(value) {
+ return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
+ }
+ function cloneDeepWith(value, customizer) {
+ customizer = typeof customizer == "function" ? customizer : undefined;
+ return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
+ }
+ function conformsTo(object, source) {
+ return source == null || baseConformsTo(object, source, keys(source));
+ }
+ function eq(value, other) {
+ return value === other || value !== value && other !== other;
+ }
+ var gt = createRelationalOperation(baseGt);
+ var gte = createRelationalOperation(function(value, other) {
+ return value >= other;
+ });
+ var isArguments = baseIsArguments(/* @__PURE__ */ function() {
+ return arguments;
+ }()) ? baseIsArguments : function(value) {
+ return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
+ };
+ var isArray = Array2.isArray;
+ var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
+ function isArrayLike(value) {
+ return value != null && isLength(value.length) && !isFunction(value);
+ }
+ function isArrayLikeObject(value) {
+ return isObjectLike(value) && isArrayLike(value);
+ }
+ function isBoolean(value) {
+ return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag;
+ }
+ var isBuffer = nativeIsBuffer || stubFalse;
+ var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
+ function isElement(value) {
+ return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
+ }
+ function isEmpty(value) {
+ if (value == null) {
+ return true;
+ }
+ if (isArrayLike(value) && (isArray(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray(value) || isArguments(value))) {
+ return !value.length;
+ }
+ var tag = getTag(value);
+ if (tag == mapTag || tag == setTag) {
+ return !value.size;
+ }
+ if (isPrototype(value)) {
+ return !baseKeys(value).length;
+ }
+ for (var key in value) {
+ if (hasOwnProperty.call(value, key)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ function isEqual(value, other) {
+ return baseIsEqual(value, other);
+ }
+ function isEqualWith(value, other, customizer) {
+ customizer = typeof customizer == "function" ? customizer : undefined;
+ var result2 = customizer ? customizer(value, other) : undefined;
+ return result2 === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result2;
+ }
+ function isError(value) {
+ if (!isObjectLike(value)) {
+ return false;
+ }
+ var tag = baseGetTag(value);
+ return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject(value);
+ }
+ function isFinite(value) {
+ return typeof value == "number" && nativeIsFinite(value);
+ }
+ function isFunction(value) {
+ if (!isObject(value)) {
+ return false;
+ }
+ var tag = baseGetTag(value);
+ return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
+ }
+ function isInteger(value) {
+ return typeof value == "number" && value == toInteger(value);
+ }
+ function isLength(value) {
+ return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+ }
+ function isObject(value) {
+ var type = typeof value;
+ return value != null && (type == "object" || type == "function");
+ }
+ function isObjectLike(value) {
+ return value != null && typeof value == "object";
+ }
+ var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
+ function isMatch(object, source) {
+ return object === source || baseIsMatch(object, source, getMatchData(source));
+ }
+ function isMatchWith(object, source, customizer) {
+ customizer = typeof customizer == "function" ? customizer : undefined;
+ return baseIsMatch(object, source, getMatchData(source), customizer);
+ }
+ function isNaN(value) {
+ return isNumber(value) && value != +value;
+ }
+ function isNative(value) {
+ if (isMaskable(value)) {
+ throw new Error(CORE_ERROR_TEXT);
+ }
+ return baseIsNative(value);
+ }
+ function isNull(value) {
+ return value === null;
+ }
+ function isNil(value) {
+ return value == null;
+ }
+ function isNumber(value) {
+ return typeof value == "number" || isObjectLike(value) && baseGetTag(value) == numberTag;
+ }
+ function isPlainObject(value) {
+ if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
+ return false;
+ }
+ var proto = getPrototype(value);
+ if (proto === null) {
+ return true;
+ }
+ var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor;
+ return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
+ }
+ var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
+ function isSafeInteger(value) {
+ return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
+ }
+ var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
+ function isString(value) {
+ return typeof value == "string" || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag;
+ }
+ function isSymbol(value) {
+ return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag;
+ }
+ var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
+ function isUndefined(value) {
+ return value === undefined;
+ }
+ function isWeakMap(value) {
+ return isObjectLike(value) && getTag(value) == weakMapTag;
+ }
+ function isWeakSet(value) {
+ return isObjectLike(value) && baseGetTag(value) == weakSetTag;
+ }
+ var lt = createRelationalOperation(baseLt);
+ var lte = createRelationalOperation(function(value, other) {
+ return value <= other;
+ });
+ function toArray(value) {
+ if (!value) {
+ return [];
+ }
+ if (isArrayLike(value)) {
+ return isString(value) ? stringToArray(value) : copyArray(value);
+ }
+ if (symIterator && value[symIterator]) {
+ return iteratorToArray(value[symIterator]());
+ }
+ var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;
+ return func(value);
+ }
+ function toFinite(value) {
+ if (!value) {
+ return value === 0 ? value : 0;
+ }
+ value = toNumber(value);
+ if (value === INFINITY || value === -INFINITY) {
+ var sign = value < 0 ? -1 : 1;
+ return sign * MAX_INTEGER;
+ }
+ return value === value ? value : 0;
+ }
+ function toInteger(value) {
+ var result2 = toFinite(value), remainder = result2 % 1;
+ return result2 === result2 ? remainder ? result2 - remainder : result2 : 0;
+ }
+ function toLength(value) {
+ return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
+ }
+ function toNumber(value) {
+ if (typeof value == "number") {
+ return value;
+ }
+ if (isSymbol(value)) {
+ return NAN;
+ }
+ if (isObject(value)) {
+ var other = typeof value.valueOf == "function" ? value.valueOf() : value;
+ value = isObject(other) ? other + "" : other;
+ }
+ if (typeof value != "string") {
+ return value === 0 ? value : +value;
+ }
+ value = baseTrim(value);
+ var isBinary = reIsBinary.test(value);
+ return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
+ }
+ function toPlainObject(value) {
+ return copyObject(value, keysIn(value));
+ }
+ function toSafeInteger(value) {
+ return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0;
+ }
+ function toString(value) {
+ return value == null ? "" : baseToString(value);
+ }
+ var assign = createAssigner(function(object, source) {
+ if (isPrototype(source) || isArrayLike(source)) {
+ copyObject(source, keys(source), object);
+ return;
+ }
+ for (var key in source) {
+ if (hasOwnProperty.call(source, key)) {
+ assignValue(object, key, source[key]);
+ }
+ }
+ });
+ var assignIn = createAssigner(function(object, source) {
+ copyObject(source, keysIn(source), object);
+ });
+ var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
+ copyObject(source, keysIn(source), object, customizer);
+ });
+ var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
+ copyObject(source, keys(source), object, customizer);
+ });
+ var at = flatRest(baseAt);
+ function create(prototype, properties) {
+ var result2 = baseCreate(prototype);
+ return properties == null ? result2 : baseAssign(result2, properties);
+ }
+ var defaults = baseRest(function(object, sources) {
+ object = Object2(object);
+ var index = -1;
+ var length = sources.length;
+ var guard = length > 2 ? sources[2] : undefined;
+ if (guard && isIterateeCall(sources[0], sources[1], guard)) {
+ length = 1;
+ }
+ while (++index < length) {
+ var source = sources[index];
+ var props = keysIn(source);
+ var propsIndex = -1;
+ var propsLength = props.length;
+ while (++propsIndex < propsLength) {
+ var key = props[propsIndex];
+ var value = object[key];
+ if (value === undefined || eq(value, objectProto[key]) && !hasOwnProperty.call(object, key)) {
+ object[key] = source[key];
+ }
+ }
+ }
+ return object;
+ });
+ var defaultsDeep = baseRest(function(args) {
+ args.push(undefined, customDefaultsMerge);
+ return apply(mergeWith, undefined, args);
+ });
+ function findKey(object, predicate) {
+ return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
+ }
+ function findLastKey(object, predicate) {
+ return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
+ }
+ function forIn(object, iteratee2) {
+ return object == null ? object : baseFor(object, getIteratee(iteratee2, 3), keysIn);
+ }
+ function forInRight(object, iteratee2) {
+ return object == null ? object : baseForRight(object, getIteratee(iteratee2, 3), keysIn);
+ }
+ function forOwn(object, iteratee2) {
+ return object && baseForOwn(object, getIteratee(iteratee2, 3));
+ }
+ function forOwnRight(object, iteratee2) {
+ return object && baseForOwnRight(object, getIteratee(iteratee2, 3));
+ }
+ function functions(object) {
+ return object == null ? [] : baseFunctions(object, keys(object));
+ }
+ function functionsIn(object) {
+ return object == null ? [] : baseFunctions(object, keysIn(object));
+ }
+ function get(object, path, defaultValue) {
+ var result2 = object == null ? undefined : baseGet(object, path);
+ return result2 === undefined ? defaultValue : result2;
+ }
+ function has(object, path) {
+ return object != null && hasPath(object, path, baseHas);
+ }
+ function hasIn(object, path) {
+ return object != null && hasPath(object, path, baseHasIn);
+ }
+ var invert = createInverter(function(result2, value, key) {
+ if (value != null && typeof value.toString != "function") {
+ value = nativeObjectToString.call(value);
+ }
+ result2[value] = key;
+ }, constant(identity));
+ var invertBy = createInverter(function(result2, value, key) {
+ if (value != null && typeof value.toString != "function") {
+ value = nativeObjectToString.call(value);
+ }
+ if (hasOwnProperty.call(result2, value)) {
+ result2[value].push(key);
+ } else {
+ result2[value] = [key];
+ }
+ }, getIteratee);
+ var invoke = baseRest(baseInvoke);
+ function keys(object) {
+ return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
+ }
+ function keysIn(object) {
+ return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
+ }
+ function mapKeys(object, iteratee2) {
+ var result2 = {};
+ iteratee2 = getIteratee(iteratee2, 3);
+ baseForOwn(object, function(value, key, object2) {
+ baseAssignValue(result2, iteratee2(value, key, object2), value);
+ });
+ return result2;
+ }
+ function mapValues(object, iteratee2) {
+ var result2 = {};
+ iteratee2 = getIteratee(iteratee2, 3);
+ baseForOwn(object, function(value, key, object2) {
+ baseAssignValue(result2, key, iteratee2(value, key, object2));
+ });
+ return result2;
+ }
+ var merge = createAssigner(function(object, source, srcIndex) {
+ baseMerge(object, source, srcIndex);
+ });
+ var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
+ baseMerge(object, source, srcIndex, customizer);
+ });
+ var omit = flatRest(function(object, paths) {
+ var result2 = {};
+ if (object == null) {
+ return result2;
+ }
+ var isDeep = false;
+ paths = arrayMap(paths, function(path) {
+ path = castPath(path, object);
+ isDeep || (isDeep = path.length > 1);
+ return path;
+ });
+ copyObject(object, getAllKeysIn(object), result2);
+ if (isDeep) {
+ result2 = baseClone(result2, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
+ }
+ var length = paths.length;
+ while (length--) {
+ baseUnset(result2, paths[length]);
+ }
+ return result2;
+ });
+ function omitBy(object, predicate) {
+ return pickBy(object, negate(getIteratee(predicate)));
+ }
+ var pick = flatRest(function(object, paths) {
+ return object == null ? {} : basePick(object, paths);
+ });
+ function pickBy(object, predicate) {
+ if (object == null) {
+ return {};
+ }
+ var props = arrayMap(getAllKeysIn(object), function(prop) {
+ return [prop];
+ });
+ predicate = getIteratee(predicate);
+ return basePickBy(object, props, function(value, path) {
+ return predicate(value, path[0]);
+ });
+ }
+ function result(object, path, defaultValue) {
+ path = castPath(path, object);
+ var index = -1, length = path.length;
+ if (!length) {
+ length = 1;
+ object = undefined;
+ }
+ while (++index < length) {
+ var value = object == null ? undefined : object[toKey(path[index])];
+ if (value === undefined) {
+ index = length;
+ value = defaultValue;
+ }
+ object = isFunction(value) ? value.call(object) : value;
+ }
+ return object;
+ }
+ function set(object, path, value) {
+ return object == null ? object : baseSet(object, path, value);
+ }
+ function setWith(object, path, value, customizer) {
+ customizer = typeof customizer == "function" ? customizer : undefined;
+ return object == null ? object : baseSet(object, path, value, customizer);
+ }
+ var toPairs = createToPairs(keys);
+ var toPairsIn = createToPairs(keysIn);
+ function transform(object, iteratee2, accumulator) {
+ var isArr = isArray(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object);
+ iteratee2 = getIteratee(iteratee2, 4);
+ if (accumulator == null) {
+ var Ctor = object && object.constructor;
+ if (isArrLike) {
+ accumulator = isArr ? new Ctor() : [];
+ } else if (isObject(object)) {
+ accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
+ } else {
+ accumulator = {};
+ }
+ }
+ (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object2) {
+ return iteratee2(accumulator, value, index, object2);
+ });
+ return accumulator;
+ }
+ function unset(object, path) {
+ return object == null ? true : baseUnset(object, path);
+ }
+ function update(object, path, updater) {
+ return object == null ? object : baseUpdate(object, path, castFunction(updater));
+ }
+ function updateWith(object, path, updater, customizer) {
+ customizer = typeof customizer == "function" ? customizer : undefined;
+ return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
+ }
+ function values(object) {
+ return object == null ? [] : baseValues(object, keys(object));
+ }
+ function valuesIn(object) {
+ return object == null ? [] : baseValues(object, keysIn(object));
+ }
+ function clamp(number, lower, upper) {
+ if (upper === undefined) {
+ upper = lower;
+ lower = undefined;
+ }
+ if (upper !== undefined) {
+ upper = toNumber(upper);
+ upper = upper === upper ? upper : 0;
+ }
+ if (lower !== undefined) {
+ lower = toNumber(lower);
+ lower = lower === lower ? lower : 0;
+ }
+ return baseClamp(toNumber(number), lower, upper);
+ }
+ function inRange(number, start, end) {
+ start = toFinite(start);
+ if (end === undefined) {
+ end = start;
+ start = 0;
+ } else {
+ end = toFinite(end);
+ }
+ number = toNumber(number);
+ return baseInRange(number, start, end);
+ }
+ function random(lower, upper, floating) {
+ if (floating && typeof floating != "boolean" && isIterateeCall(lower, upper, floating)) {
+ upper = floating = undefined;
+ }
+ if (floating === undefined) {
+ if (typeof upper == "boolean") {
+ floating = upper;
+ upper = undefined;
+ } else if (typeof lower == "boolean") {
+ floating = lower;
+ lower = undefined;
+ }
+ }
+ if (lower === undefined && upper === undefined) {
+ lower = 0;
+ upper = 1;
+ } else {
+ lower = toFinite(lower);
+ if (upper === undefined) {
+ upper = lower;
+ lower = 0;
+ } else {
+ upper = toFinite(upper);
+ }
+ }
+ if (lower > upper) {
+ var temp = lower;
+ lower = upper;
+ upper = temp;
+ }
+ if (floating || lower % 1 || upper % 1) {
+ var rand = nativeRandom();
+ return nativeMin(lower + rand * (upper - lower + freeParseFloat("1e-" + ((rand + "").length - 1))), upper);
+ }
+ return baseRandom(lower, upper);
+ }
+ var camelCase = createCompounder(function(result2, word, index) {
+ word = word.toLowerCase();
+ return result2 + (index ? capitalize(word) : word);
+ });
+ function capitalize(string) {
+ return upperFirst(toString(string).toLowerCase());
+ }
+ function deburr(string) {
+ string = toString(string);
+ return string && string.replace(reLatin, deburrLetter).replace(reComboMark, "");
+ }
+ function endsWith(string, target, position) {
+ string = toString(string);
+ target = baseToString(target);
+ var length = string.length;
+ position = position === undefined ? length : baseClamp(toInteger(position), 0, length);
+ var end = position;
+ position -= target.length;
+ return position >= 0 && string.slice(position, end) == target;
+ }
+ function escape(string) {
+ string = toString(string);
+ return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string;
+ }
+ function escapeRegExp(string) {
+ string = toString(string);
+ return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string;
+ }
+ var kebabCase = createCompounder(function(result2, word, index) {
+ return result2 + (index ? "-" : "") + word.toLowerCase();
+ });
+ var lowerCase = createCompounder(function(result2, word, index) {
+ return result2 + (index ? " " : "") + word.toLowerCase();
+ });
+ var lowerFirst = createCaseFirst("toLowerCase");
+ function pad(string, length, chars) {
+ string = toString(string);
+ length = toInteger(length);
+ var strLength = length ? stringSize(string) : 0;
+ if (!length || strLength >= length) {
+ return string;
+ }
+ var mid = (length - strLength) / 2;
+ return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars);
+ }
+ function padEnd(string, length, chars) {
+ string = toString(string);
+ length = toInteger(length);
+ var strLength = length ? stringSize(string) : 0;
+ return length && strLength < length ? string + createPadding(length - strLength, chars) : string;
+ }
+ function padStart(string, length, chars) {
+ string = toString(string);
+ length = toInteger(length);
+ var strLength = length ? stringSize(string) : 0;
+ return length && strLength < length ? createPadding(length - strLength, chars) + string : string;
+ }
+ function parseInt2(string, radix, guard) {
+ if (guard || radix == null) {
+ radix = 0;
+ } else if (radix) {
+ radix = +radix;
+ }
+ return nativeParseInt(toString(string).replace(reTrimStart, ""), radix || 0);
+ }
+ function repeat(string, n, guard) {
+ if (guard ? isIterateeCall(string, n, guard) : n === undefined) {
+ n = 1;
+ } else {
+ n = toInteger(n);
+ }
+ return baseRepeat(toString(string), n);
+ }
+ function replace() {
+ var args = arguments, string = toString(args[0]);
+ return args.length < 3 ? string : string.replace(args[1], args[2]);
+ }
+ var snakeCase = createCompounder(function(result2, word, index) {
+ return result2 + (index ? "_" : "") + word.toLowerCase();
+ });
+ function split(string, separator, limit) {
+ if (limit && typeof limit != "number" && isIterateeCall(string, separator, limit)) {
+ separator = limit = undefined;
+ }
+ limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
+ if (!limit) {
+ return [];
+ }
+ string = toString(string);
+ if (string && (typeof separator == "string" || separator != null && !isRegExp(separator))) {
+ separator = baseToString(separator);
+ if (!separator && hasUnicode(string)) {
+ return castSlice(stringToArray(string), 0, limit);
+ }
+ }
+ return string.split(separator, limit);
+ }
+ var startCase = createCompounder(function(result2, word, index) {
+ return result2 + (index ? " " : "") + upperFirst(word);
+ });
+ function startsWith(string, target, position) {
+ string = toString(string);
+ position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length);
+ target = baseToString(target);
+ return string.slice(position, position + target.length) == target;
+ }
+ function template(string, options, guard) {
+ var settings = lodash.templateSettings;
+ if (guard && isIterateeCall(string, options, guard)) {
+ options = undefined;
+ }
+ string = toString(string);
+ options = assignInWith({}, options, settings, customDefaultsAssignIn);
+ var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys);
+ var isEscaping, isEvaluating, index = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '";
+ var reDelimiters = RegExp2(
+ (options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$",
+ "g"
+ );
+ var sourceURL = "//# sourceURL=" + (hasOwnProperty.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n";
+ string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
+ interpolateValue || (interpolateValue = esTemplateValue);
+ source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
+ if (escapeValue) {
+ isEscaping = true;
+ source += "' +\n__e(" + escapeValue + ") +\n'";
+ }
+ if (evaluateValue) {
+ isEvaluating = true;
+ source += "';\n" + evaluateValue + ";\n__p += '";
+ }
+ if (interpolateValue) {
+ source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
+ }
+ index = offset + match.length;
+ return match;
+ });
+ source += "';\n";
+ var variable = hasOwnProperty.call(options, "variable") && options.variable;
+ if (!variable) {
+ source = "with (obj) {\n" + source + "\n}\n";
+ } else if (reForbiddenIdentifierChars.test(variable)) {
+ throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);
+ }
+ source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;");
+ source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}";
+ var result2 = attempt(function() {
+ return Function2(importsKeys, sourceURL + "return " + source).apply(undefined, importsValues);
+ });
+ result2.source = source;
+ if (isError(result2)) {
+ throw result2;
+ }
+ return result2;
+ }
+ function toLower(value) {
+ return toString(value).toLowerCase();
+ }
+ function toUpper(value) {
+ return toString(value).toUpperCase();
+ }
+ function trim(string, chars, guard) {
+ string = toString(string);
+ if (string && (guard || chars === undefined)) {
+ return baseTrim(string);
+ }
+ if (!string || !(chars = baseToString(chars))) {
+ return string;
+ }
+ var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start = charsStartIndex(strSymbols, chrSymbols), end = charsEndIndex(strSymbols, chrSymbols) + 1;
+ return castSlice(strSymbols, start, end).join("");
+ }
+ function trimEnd(string, chars, guard) {
+ string = toString(string);
+ if (string && (guard || chars === undefined)) {
+ return string.slice(0, trimmedEndIndex(string) + 1);
+ }
+ if (!string || !(chars = baseToString(chars))) {
+ return string;
+ }
+ var strSymbols = stringToArray(string), end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
+ return castSlice(strSymbols, 0, end).join("");
+ }
+ function trimStart(string, chars, guard) {
+ string = toString(string);
+ if (string && (guard || chars === undefined)) {
+ return string.replace(reTrimStart, "");
+ }
+ if (!string || !(chars = baseToString(chars))) {
+ return string;
+ }
+ var strSymbols = stringToArray(string), start = charsStartIndex(strSymbols, stringToArray(chars));
+ return castSlice(strSymbols, start).join("");
+ }
+ function truncate(string, options) {
+ var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION;
+ if (isObject(options)) {
+ var separator = "separator" in options ? options.separator : separator;
+ length = "length" in options ? toInteger(options.length) : length;
+ omission = "omission" in options ? baseToString(options.omission) : omission;
+ }
+ string = toString(string);
+ var strLength = string.length;
+ if (hasUnicode(string)) {
+ var strSymbols = stringToArray(string);
+ strLength = strSymbols.length;
+ }
+ if (length >= strLength) {
+ return string;
+ }
+ var end = length - stringSize(omission);
+ if (end < 1) {
+ return omission;
+ }
+ var result2 = strSymbols ? castSlice(strSymbols, 0, end).join("") : string.slice(0, end);
+ if (separator === undefined) {
+ return result2 + omission;
+ }
+ if (strSymbols) {
+ end += result2.length - end;
+ }
+ if (isRegExp(separator)) {
+ if (string.slice(end).search(separator)) {
+ var match, substring = result2;
+ if (!separator.global) {
+ separator = RegExp2(separator.source, toString(reFlags.exec(separator)) + "g");
+ }
+ separator.lastIndex = 0;
+ while (match = separator.exec(substring)) {
+ var newEnd = match.index;
+ }
+ result2 = result2.slice(0, newEnd === undefined ? end : newEnd);
+ }
+ } else if (string.indexOf(baseToString(separator), end) != end) {
+ var index = result2.lastIndexOf(separator);
+ if (index > -1) {
+ result2 = result2.slice(0, index);
+ }
+ }
+ return result2 + omission;
+ }
+ function unescape(string) {
+ string = toString(string);
+ return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string;
+ }
+ var upperCase = createCompounder(function(result2, word, index) {
+ return result2 + (index ? " " : "") + word.toUpperCase();
+ });
+ var upperFirst = createCaseFirst("toUpperCase");
+ function words(string, pattern, guard) {
+ string = toString(string);
+ pattern = guard ? undefined : pattern;
+ if (pattern === undefined) {
+ return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
+ }
+ return string.match(pattern) || [];
+ }
+ var attempt = baseRest(function(func, args) {
+ try {
+ return apply(func, undefined, args);
+ } catch (e) {
+ return isError(e) ? e : new Error(e);
+ }
+ });
+ var bindAll = flatRest(function(object, methodNames) {
+ arrayEach(methodNames, function(key) {
+ key = toKey(key);
+ baseAssignValue(object, key, bind(object[key], object));
+ });
+ return object;
+ });
+ function cond(pairs) {
+ var length = pairs == null ? 0 : pairs.length, toIteratee = getIteratee();
+ pairs = !length ? [] : arrayMap(pairs, function(pair) {
+ if (typeof pair[1] != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ return [toIteratee(pair[0]), pair[1]];
+ });
+ return baseRest(function(args) {
+ var index = -1;
+ while (++index < length) {
+ var pair = pairs[index];
+ if (apply(pair[0], this, args)) {
+ return apply(pair[1], this, args);
+ }
+ }
+ });
+ }
+ function conforms(source) {
+ return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
+ }
+ function constant(value) {
+ return function() {
+ return value;
+ };
+ }
+ function defaultTo(value, defaultValue) {
+ return value == null || value !== value ? defaultValue : value;
+ }
+ var flow = createFlow();
+ var flowRight = createFlow(true);
+ function identity(value) {
+ return value;
+ }
+ function iteratee(func) {
+ return baseIteratee(typeof func == "function" ? func : baseClone(func, CLONE_DEEP_FLAG));
+ }
+ function matches(source) {
+ return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
+ }
+ function matchesProperty(path, srcValue) {
+ return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
+ }
+ var method = baseRest(function(path, args) {
+ return function(object) {
+ return baseInvoke(object, path, args);
+ };
+ });
+ var methodOf = baseRest(function(object, args) {
+ return function(path) {
+ return baseInvoke(object, path, args);
+ };
+ });
+ function mixin(object, source, options) {
+ var props = keys(source), methodNames = baseFunctions(source, props);
+ if (options == null && !(isObject(source) && (methodNames.length || !props.length))) {
+ options = source;
+ source = object;
+ object = this;
+ methodNames = baseFunctions(source, keys(source));
+ }
+ var chain2 = !(isObject(options) && "chain" in options) || !!options.chain, isFunc = isFunction(object);
+ arrayEach(methodNames, function(methodName) {
+ var func = source[methodName];
+ object[methodName] = func;
+ if (isFunc) {
+ object.prototype[methodName] = function() {
+ var chainAll = this.__chain__;
+ if (chain2 || chainAll) {
+ var result2 = object(this.__wrapped__), actions = result2.__actions__ = copyArray(this.__actions__);
+ actions.push({ "func": func, "args": arguments, "thisArg": object });
+ result2.__chain__ = chainAll;
+ return result2;
+ }
+ return func.apply(object, arrayPush([this.value()], arguments));
+ };
+ }
+ });
+ return object;
+ }
+ function noConflict() {
+ if (root._ === this) {
+ root._ = oldDash;
+ }
+ return this;
+ }
+ function noop() {
+ }
+ function nthArg(n) {
+ n = toInteger(n);
+ return baseRest(function(args) {
+ return baseNth(args, n);
+ });
+ }
+ var over = createOver(arrayMap);
+ var overEvery = createOver(arrayEvery);
+ var overSome = createOver(arraySome);
+ function property(path) {
+ return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
+ }
+ function propertyOf(object) {
+ return function(path) {
+ return object == null ? undefined : baseGet(object, path);
+ };
+ }
+ var range = createRange();
+ var rangeRight = createRange(true);
+ function stubArray() {
+ return [];
+ }
+ function stubFalse() {
+ return false;
+ }
+ function stubObject() {
+ return {};
+ }
+ function stubString() {
+ return "";
+ }
+ function stubTrue() {
+ return true;
+ }
+ function times(n, iteratee2) {
+ n = toInteger(n);
+ if (n < 1 || n > MAX_SAFE_INTEGER) {
+ return [];
+ }
+ var index = MAX_ARRAY_LENGTH, length = nativeMin(n, MAX_ARRAY_LENGTH);
+ iteratee2 = getIteratee(iteratee2);
+ n -= MAX_ARRAY_LENGTH;
+ var result2 = baseTimes(length, iteratee2);
+ while (++index < n) {
+ iteratee2(index);
+ }
+ return result2;
+ }
+ function toPath(value) {
+ if (isArray(value)) {
+ return arrayMap(value, toKey);
+ }
+ return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
+ }
+ function uniqueId(prefix) {
+ var id = ++idCounter;
+ return toString(prefix) + id;
+ }
+ var add = createMathOperation(function(augend, addend) {
+ return augend + addend;
+ }, 0);
+ var ceil = createRound("ceil");
+ var divide = createMathOperation(function(dividend, divisor) {
+ return dividend / divisor;
+ }, 1);
+ var floor = createRound("floor");
+ function max(array) {
+ return array && array.length ? baseExtremum(array, identity, baseGt) : undefined;
+ }
+ function maxBy(array, iteratee2) {
+ return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined;
+ }
+ function mean(array) {
+ return baseMean(array, identity);
+ }
+ function meanBy(array, iteratee2) {
+ return baseMean(array, getIteratee(iteratee2, 2));
+ }
+ function min(array) {
+ return array && array.length ? baseExtremum(array, identity, baseLt) : undefined;
+ }
+ function minBy(array, iteratee2) {
+ return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseLt) : undefined;
+ }
+ var multiply = createMathOperation(function(multiplier, multiplicand) {
+ return multiplier * multiplicand;
+ }, 1);
+ var round = createRound("round");
+ var subtract = createMathOperation(function(minuend, subtrahend) {
+ return minuend - subtrahend;
+ }, 0);
+ function sum(array) {
+ return array && array.length ? baseSum(array, identity) : 0;
+ }
+ function sumBy(array, iteratee2) {
+ return array && array.length ? baseSum(array, getIteratee(iteratee2, 2)) : 0;
+ }
+ lodash.after = after;
+ lodash.ary = ary;
+ lodash.assign = assign;
+ lodash.assignIn = assignIn;
+ lodash.assignInWith = assignInWith;
+ lodash.assignWith = assignWith;
+ lodash.at = at;
+ lodash.before = before;
+ lodash.bind = bind;
+ lodash.bindAll = bindAll;
+ lodash.bindKey = bindKey;
+ lodash.castArray = castArray;
+ lodash.chain = chain;
+ lodash.chunk = chunk;
+ lodash.compact = compact;
+ lodash.concat = concat;
+ lodash.cond = cond;
+ lodash.conforms = conforms;
+ lodash.constant = constant;
+ lodash.countBy = countBy;
+ lodash.create = create;
+ lodash.curry = curry;
+ lodash.curryRight = curryRight;
+ lodash.debounce = debounce;
+ lodash.defaults = defaults;
+ lodash.defaultsDeep = defaultsDeep;
+ lodash.defer = defer;
+ lodash.delay = delay;
+ lodash.difference = difference;
+ lodash.differenceBy = differenceBy;
+ lodash.differenceWith = differenceWith;
+ lodash.drop = drop;
+ lodash.dropRight = dropRight;
+ lodash.dropRightWhile = dropRightWhile;
+ lodash.dropWhile = dropWhile;
+ lodash.fill = fill;
+ lodash.filter = filter;
+ lodash.flatMap = flatMap;
+ lodash.flatMapDeep = flatMapDeep;
+ lodash.flatMapDepth = flatMapDepth;
+ lodash.flatten = flatten;
+ lodash.flattenDeep = flattenDeep;
+ lodash.flattenDepth = flattenDepth;
+ lodash.flip = flip;
+ lodash.flow = flow;
+ lodash.flowRight = flowRight;
+ lodash.fromPairs = fromPairs;
+ lodash.functions = functions;
+ lodash.functionsIn = functionsIn;
+ lodash.groupBy = groupBy;
+ lodash.initial = initial;
+ lodash.intersection = intersection;
+ lodash.intersectionBy = intersectionBy;
+ lodash.intersectionWith = intersectionWith;
+ lodash.invert = invert;
+ lodash.invertBy = invertBy;
+ lodash.invokeMap = invokeMap;
+ lodash.iteratee = iteratee;
+ lodash.keyBy = keyBy;
+ lodash.keys = keys;
+ lodash.keysIn = keysIn;
+ lodash.map = map;
+ lodash.mapKeys = mapKeys;
+ lodash.mapValues = mapValues;
+ lodash.matches = matches;
+ lodash.matchesProperty = matchesProperty;
+ lodash.memoize = memoize;
+ lodash.merge = merge;
+ lodash.mergeWith = mergeWith;
+ lodash.method = method;
+ lodash.methodOf = methodOf;
+ lodash.mixin = mixin;
+ lodash.negate = negate;
+ lodash.nthArg = nthArg;
+ lodash.omit = omit;
+ lodash.omitBy = omitBy;
+ lodash.once = once;
+ lodash.orderBy = orderBy;
+ lodash.over = over;
+ lodash.overArgs = overArgs;
+ lodash.overEvery = overEvery;
+ lodash.overSome = overSome;
+ lodash.partial = partial;
+ lodash.partialRight = partialRight;
+ lodash.partition = partition;
+ lodash.pick = pick;
+ lodash.pickBy = pickBy;
+ lodash.property = property;
+ lodash.propertyOf = propertyOf;
+ lodash.pull = pull;
+ lodash.pullAll = pullAll;
+ lodash.pullAllBy = pullAllBy;
+ lodash.pullAllWith = pullAllWith;
+ lodash.pullAt = pullAt;
+ lodash.range = range;
+ lodash.rangeRight = rangeRight;
+ lodash.rearg = rearg;
+ lodash.reject = reject;
+ lodash.remove = remove;
+ lodash.rest = rest;
+ lodash.reverse = reverse;
+ lodash.sampleSize = sampleSize;
+ lodash.set = set;
+ lodash.setWith = setWith;
+ lodash.shuffle = shuffle;
+ lodash.slice = slice;
+ lodash.sortBy = sortBy;
+ lodash.sortedUniq = sortedUniq;
+ lodash.sortedUniqBy = sortedUniqBy;
+ lodash.split = split;
+ lodash.spread = spread;
+ lodash.tail = tail;
+ lodash.take = take;
+ lodash.takeRight = takeRight;
+ lodash.takeRightWhile = takeRightWhile;
+ lodash.takeWhile = takeWhile;
+ lodash.tap = tap;
+ lodash.throttle = throttle;
+ lodash.thru = thru;
+ lodash.toArray = toArray;
+ lodash.toPairs = toPairs;
+ lodash.toPairsIn = toPairsIn;
+ lodash.toPath = toPath;
+ lodash.toPlainObject = toPlainObject;
+ lodash.transform = transform;
+ lodash.unary = unary;
+ lodash.union = union;
+ lodash.unionBy = unionBy;
+ lodash.unionWith = unionWith;
+ lodash.uniq = uniq;
+ lodash.uniqBy = uniqBy;
+ lodash.uniqWith = uniqWith;
+ lodash.unset = unset;
+ lodash.unzip = unzip;
+ lodash.unzipWith = unzipWith;
+ lodash.update = update;
+ lodash.updateWith = updateWith;
+ lodash.values = values;
+ lodash.valuesIn = valuesIn;
+ lodash.without = without;
+ lodash.words = words;
+ lodash.wrap = wrap;
+ lodash.xor = xor;
+ lodash.xorBy = xorBy;
+ lodash.xorWith = xorWith;
+ lodash.zip = zip;
+ lodash.zipObject = zipObject;
+ lodash.zipObjectDeep = zipObjectDeep;
+ lodash.zipWith = zipWith;
+ lodash.entries = toPairs;
+ lodash.entriesIn = toPairsIn;
+ lodash.extend = assignIn;
+ lodash.extendWith = assignInWith;
+ mixin(lodash, lodash);
+ lodash.add = add;
+ lodash.attempt = attempt;
+ lodash.camelCase = camelCase;
+ lodash.capitalize = capitalize;
+ lodash.ceil = ceil;
+ lodash.clamp = clamp;
+ lodash.clone = clone;
+ lodash.cloneDeep = cloneDeep;
+ lodash.cloneDeepWith = cloneDeepWith;
+ lodash.cloneWith = cloneWith;
+ lodash.conformsTo = conformsTo;
+ lodash.deburr = deburr;
+ lodash.defaultTo = defaultTo;
+ lodash.divide = divide;
+ lodash.endsWith = endsWith;
+ lodash.eq = eq;
+ lodash.escape = escape;
+ lodash.escapeRegExp = escapeRegExp;
+ lodash.every = every;
+ lodash.find = find;
+ lodash.findIndex = findIndex;
+ lodash.findKey = findKey;
+ lodash.findLast = findLast;
+ lodash.findLastIndex = findLastIndex;
+ lodash.findLastKey = findLastKey;
+ lodash.floor = floor;
+ lodash.forEach = forEach;
+ lodash.forEachRight = forEachRight;
+ lodash.forIn = forIn;
+ lodash.forInRight = forInRight;
+ lodash.forOwn = forOwn;
+ lodash.forOwnRight = forOwnRight;
+ lodash.get = get;
+ lodash.gt = gt;
+ lodash.gte = gte;
+ lodash.has = has;
+ lodash.hasIn = hasIn;
+ lodash.head = head;
+ lodash.identity = identity;
+ lodash.includes = includes;
+ lodash.indexOf = indexOf;
+ lodash.inRange = inRange;
+ lodash.invoke = invoke;
+ lodash.isArguments = isArguments;
+ lodash.isArray = isArray;
+ lodash.isArrayBuffer = isArrayBuffer;
+ lodash.isArrayLike = isArrayLike;
+ lodash.isArrayLikeObject = isArrayLikeObject;
+ lodash.isBoolean = isBoolean;
+ lodash.isBuffer = isBuffer;
+ lodash.isDate = isDate;
+ lodash.isElement = isElement;
+ lodash.isEmpty = isEmpty;
+ lodash.isEqual = isEqual;
+ lodash.isEqualWith = isEqualWith;
+ lodash.isError = isError;
+ lodash.isFinite = isFinite;
+ lodash.isFunction = isFunction;
+ lodash.isInteger = isInteger;
+ lodash.isLength = isLength;
+ lodash.isMap = isMap;
+ lodash.isMatch = isMatch;
+ lodash.isMatchWith = isMatchWith;
+ lodash.isNaN = isNaN;
+ lodash.isNative = isNative;
+ lodash.isNil = isNil;
+ lodash.isNull = isNull;
+ lodash.isNumber = isNumber;
+ lodash.isObject = isObject;
+ lodash.isObjectLike = isObjectLike;
+ lodash.isPlainObject = isPlainObject;
+ lodash.isRegExp = isRegExp;
+ lodash.isSafeInteger = isSafeInteger;
+ lodash.isSet = isSet;
+ lodash.isString = isString;
+ lodash.isSymbol = isSymbol;
+ lodash.isTypedArray = isTypedArray;
+ lodash.isUndefined = isUndefined;
+ lodash.isWeakMap = isWeakMap;
+ lodash.isWeakSet = isWeakSet;
+ lodash.join = join;
+ lodash.kebabCase = kebabCase;
+ lodash.last = last;
+ lodash.lastIndexOf = lastIndexOf;
+ lodash.lowerCase = lowerCase;
+ lodash.lowerFirst = lowerFirst;
+ lodash.lt = lt;
+ lodash.lte = lte;
+ lodash.max = max;
+ lodash.maxBy = maxBy;
+ lodash.mean = mean;
+ lodash.meanBy = meanBy;
+ lodash.min = min;
+ lodash.minBy = minBy;
+ lodash.stubArray = stubArray;
+ lodash.stubFalse = stubFalse;
+ lodash.stubObject = stubObject;
+ lodash.stubString = stubString;
+ lodash.stubTrue = stubTrue;
+ lodash.multiply = multiply;
+ lodash.nth = nth;
+ lodash.noConflict = noConflict;
+ lodash.noop = noop;
+ lodash.now = now;
+ lodash.pad = pad;
+ lodash.padEnd = padEnd;
+ lodash.padStart = padStart;
+ lodash.parseInt = parseInt2;
+ lodash.random = random;
+ lodash.reduce = reduce;
+ lodash.reduceRight = reduceRight;
+ lodash.repeat = repeat;
+ lodash.replace = replace;
+ lodash.result = result;
+ lodash.round = round;
+ lodash.runInContext = runInContext2;
+ lodash.sample = sample;
+ lodash.size = size;
+ lodash.snakeCase = snakeCase;
+ lodash.some = some;
+ lodash.sortedIndex = sortedIndex;
+ lodash.sortedIndexBy = sortedIndexBy;
+ lodash.sortedIndexOf = sortedIndexOf;
+ lodash.sortedLastIndex = sortedLastIndex;
+ lodash.sortedLastIndexBy = sortedLastIndexBy;
+ lodash.sortedLastIndexOf = sortedLastIndexOf;
+ lodash.startCase = startCase;
+ lodash.startsWith = startsWith;
+ lodash.subtract = subtract;
+ lodash.sum = sum;
+ lodash.sumBy = sumBy;
+ lodash.template = template;
+ lodash.times = times;
+ lodash.toFinite = toFinite;
+ lodash.toInteger = toInteger;
+ lodash.toLength = toLength;
+ lodash.toLower = toLower;
+ lodash.toNumber = toNumber;
+ lodash.toSafeInteger = toSafeInteger;
+ lodash.toString = toString;
+ lodash.toUpper = toUpper;
+ lodash.trim = trim;
+ lodash.trimEnd = trimEnd;
+ lodash.trimStart = trimStart;
+ lodash.truncate = truncate;
+ lodash.unescape = unescape;
+ lodash.uniqueId = uniqueId;
+ lodash.upperCase = upperCase;
+ lodash.upperFirst = upperFirst;
+ lodash.each = forEach;
+ lodash.eachRight = forEachRight;
+ lodash.first = head;
+ mixin(lodash, function() {
+ var source = {};
+ baseForOwn(lodash, function(func, methodName) {
+ if (!hasOwnProperty.call(lodash.prototype, methodName)) {
+ source[methodName] = func;
+ }
+ });
+ return source;
+ }(), { "chain": false });
+ lodash.VERSION = VERSION;
+ arrayEach(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) {
+ lodash[methodName].placeholder = lodash;
+ });
+ arrayEach(["drop", "take"], function(methodName, index) {
+ LazyWrapper.prototype[methodName] = function(n) {
+ n = n === undefined ? 1 : nativeMax(toInteger(n), 0);
+ var result2 = this.__filtered__ && !index ? new LazyWrapper(this) : this.clone();
+ if (result2.__filtered__) {
+ result2.__takeCount__ = nativeMin(n, result2.__takeCount__);
+ } else {
+ result2.__views__.push({
+ "size": nativeMin(n, MAX_ARRAY_LENGTH),
+ "type": methodName + (result2.__dir__ < 0 ? "Right" : "")
+ });
+ }
+ return result2;
+ };
+ LazyWrapper.prototype[methodName + "Right"] = function(n) {
+ return this.reverse()[methodName](n).reverse();
+ };
+ });
+ arrayEach(["filter", "map", "takeWhile"], function(methodName, index) {
+ var type = index + 1, isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
+ LazyWrapper.prototype[methodName] = function(iteratee2) {
+ var result2 = this.clone();
+ result2.__iteratees__.push({
+ "iteratee": getIteratee(iteratee2, 3),
+ "type": type
+ });
+ result2.__filtered__ = result2.__filtered__ || isFilter;
+ return result2;
+ };
+ });
+ arrayEach(["head", "last"], function(methodName, index) {
+ var takeName = "take" + (index ? "Right" : "");
+ LazyWrapper.prototype[methodName] = function() {
+ return this[takeName](1).value()[0];
+ };
+ });
+ arrayEach(["initial", "tail"], function(methodName, index) {
+ var dropName = "drop" + (index ? "" : "Right");
+ LazyWrapper.prototype[methodName] = function() {
+ return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
+ };
+ });
+ LazyWrapper.prototype.compact = function() {
+ return this.filter(identity);
+ };
+ LazyWrapper.prototype.find = function(predicate) {
+ return this.filter(predicate).head();
+ };
+ LazyWrapper.prototype.findLast = function(predicate) {
+ return this.reverse().find(predicate);
+ };
+ LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
+ if (typeof path == "function") {
+ return new LazyWrapper(this);
+ }
+ return this.map(function(value) {
+ return baseInvoke(value, path, args);
+ });
+ });
+ LazyWrapper.prototype.reject = function(predicate) {
+ return this.filter(negate(getIteratee(predicate)));
+ };
+ LazyWrapper.prototype.slice = function(start, end) {
+ start = toInteger(start);
+ var result2 = this;
+ if (result2.__filtered__ && (start > 0 || end < 0)) {
+ return new LazyWrapper(result2);
+ }
+ if (start < 0) {
+ result2 = result2.takeRight(-start);
+ } else if (start) {
+ result2 = result2.drop(start);
+ }
+ if (end !== undefined) {
+ end = toInteger(end);
+ result2 = end < 0 ? result2.dropRight(-end) : result2.take(end - start);
+ }
+ return result2;
+ };
+ LazyWrapper.prototype.takeRightWhile = function(predicate) {
+ return this.reverse().takeWhile(predicate).reverse();
+ };
+ LazyWrapper.prototype.toArray = function() {
+ return this.take(MAX_ARRAY_LENGTH);
+ };
+ baseForOwn(LazyWrapper.prototype, function(func, methodName) {
+ var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName);
+ if (!lodashFunc) {
+ return;
+ }
+ lodash.prototype[methodName] = function() {
+ var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray(value);
+ var interceptor = function(value2) {
+ var result3 = lodashFunc.apply(lodash, arrayPush([value2], args));
+ return isTaker && chainAll ? result3[0] : result3;
+ };
+ if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) {
+ isLazy = useLazy = false;
+ }
+ var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid;
+ if (!retUnwrapped && useLazy) {
+ value = onlyLazy ? value : new LazyWrapper(this);
+ var result2 = func.apply(value, args);
+ result2.__actions__.push({ "func": thru, "args": [interceptor], "thisArg": undefined });
+ return new LodashWrapper(result2, chainAll);
+ }
+ if (isUnwrapped && onlyLazy) {
+ return func.apply(this, args);
+ }
+ result2 = this.thru(interceptor);
+ return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2;
+ };
+ });
+ arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) {
+ var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName);
+ lodash.prototype[methodName] = function() {
+ var args = arguments;
+ if (retUnwrapped && !this.__chain__) {
+ var value = this.value();
+ return func.apply(isArray(value) ? value : [], args);
+ }
+ return this[chainName](function(value2) {
+ return func.apply(isArray(value2) ? value2 : [], args);
+ });
+ };
+ });
+ baseForOwn(LazyWrapper.prototype, function(func, methodName) {
+ var lodashFunc = lodash[methodName];
+ if (lodashFunc) {
+ var key = lodashFunc.name + "";
+ if (!hasOwnProperty.call(realNames, key)) {
+ realNames[key] = [];
+ }
+ realNames[key].push({ "name": methodName, "func": lodashFunc });
+ }
+ });
+ realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
+ "name": "wrapper",
+ "func": undefined
+ }];
+ LazyWrapper.prototype.clone = lazyClone;
+ LazyWrapper.prototype.reverse = lazyReverse;
+ LazyWrapper.prototype.value = lazyValue;
+ lodash.prototype.at = wrapperAt;
+ lodash.prototype.chain = wrapperChain;
+ lodash.prototype.commit = wrapperCommit;
+ lodash.prototype.next = wrapperNext;
+ lodash.prototype.plant = wrapperPlant;
+ lodash.prototype.reverse = wrapperReverse;
+ lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
+ lodash.prototype.first = lodash.prototype.head;
+ if (symIterator) {
+ lodash.prototype[symIterator] = wrapperToIterator;
+ }
+ return lodash;
+ };
+ var _ = runInContext();
+ if (typeof define == "function" && typeof define.amd == "object" && define.amd) {
+ root._ = _;
+ define(function() {
+ return _;
+ });
+ } else if (freeModule) {
+ (freeModule.exports = _)._ = _;
+ freeExports._ = _;
+ } else {
+ root._ = _;
+ }
+ }).call(exports);
+ }
+});
+export default require_lodash();
+/*! Bundled license information:
+
+lodash/lodash.js:
+ (**
+ * @license
+ * Lodash
+ * Copyright OpenJS Foundation and other contributors
+ * Released under MIT license
+ * Based on Underscore.js 1.8.3
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ *)
+*/
+//# sourceMappingURL=lodash.js.map
diff --git a/jiuyi2/unpackage/dist/cache/.vite/deps/lodash.js.map b/jiuyi2/unpackage/dist/cache/.vite/deps/lodash.js.map
new file mode 100644
index 00000000..49fcafae
--- /dev/null
+++ b/jiuyi2/unpackage/dist/cache/.vite/deps/lodash.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../../../../node_modules/lodash/lodash.js"],
+ "sourcesContent": ["/**\r\n * @license\r\n * Lodash \r\n * Copyright OpenJS Foundation and other contributors \r\n * Released under MIT license \r\n * Based on Underscore.js 1.8.3 \r\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\r\n */\r\n;(function() {\r\n\r\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\r\n var undefined;\r\n\r\n /** Used as the semantic version number. */\r\n var VERSION = '4.17.21';\r\n\r\n /** Used as the size to enable large array optimizations. */\r\n var LARGE_ARRAY_SIZE = 200;\r\n\r\n /** Error message constants. */\r\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\r\n FUNC_ERROR_TEXT = 'Expected a function',\r\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\r\n\r\n /** Used to stand-in for `undefined` hash values. */\r\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\r\n\r\n /** Used as the maximum memoize cache size. */\r\n var MAX_MEMOIZE_SIZE = 500;\r\n\r\n /** Used as the internal argument placeholder. */\r\n var PLACEHOLDER = '__lodash_placeholder__';\r\n\r\n /** Used to compose bitmasks for cloning. */\r\n var CLONE_DEEP_FLAG = 1,\r\n CLONE_FLAT_FLAG = 2,\r\n CLONE_SYMBOLS_FLAG = 4;\r\n\r\n /** Used to compose bitmasks for value comparisons. */\r\n var COMPARE_PARTIAL_FLAG = 1,\r\n COMPARE_UNORDERED_FLAG = 2;\r\n\r\n /** Used to compose bitmasks for function metadata. */\r\n var WRAP_BIND_FLAG = 1,\r\n WRAP_BIND_KEY_FLAG = 2,\r\n WRAP_CURRY_BOUND_FLAG = 4,\r\n WRAP_CURRY_FLAG = 8,\r\n WRAP_CURRY_RIGHT_FLAG = 16,\r\n WRAP_PARTIAL_FLAG = 32,\r\n WRAP_PARTIAL_RIGHT_FLAG = 64,\r\n WRAP_ARY_FLAG = 128,\r\n WRAP_REARG_FLAG = 256,\r\n WRAP_FLIP_FLAG = 512;\r\n\r\n /** Used as default options for `_.truncate`. */\r\n var DEFAULT_TRUNC_LENGTH = 30,\r\n DEFAULT_TRUNC_OMISSION = '...';\r\n\r\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\r\n var HOT_COUNT = 800,\r\n HOT_SPAN = 16;\r\n\r\n /** Used to indicate the type of lazy iteratees. */\r\n var LAZY_FILTER_FLAG = 1,\r\n LAZY_MAP_FLAG = 2,\r\n LAZY_WHILE_FLAG = 3;\r\n\r\n /** Used as references for various `Number` constants. */\r\n var INFINITY = 1 / 0,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n MAX_INTEGER = 1.7976931348623157e+308,\r\n NAN = 0 / 0;\r\n\r\n /** Used as references for the maximum length and index of an array. */\r\n var MAX_ARRAY_LENGTH = 4294967295,\r\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\r\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\r\n\r\n /** Used to associate wrap methods with their bit flags. */\r\n var wrapFlags = [\r\n ['ary', WRAP_ARY_FLAG],\r\n ['bind', WRAP_BIND_FLAG],\r\n ['bindKey', WRAP_BIND_KEY_FLAG],\r\n ['curry', WRAP_CURRY_FLAG],\r\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\r\n ['flip', WRAP_FLIP_FLAG],\r\n ['partial', WRAP_PARTIAL_FLAG],\r\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\r\n ['rearg', WRAP_REARG_FLAG]\r\n ];\r\n\r\n /** `Object#toString` result references. */\r\n var argsTag = '[object Arguments]',\r\n arrayTag = '[object Array]',\r\n asyncTag = '[object AsyncFunction]',\r\n boolTag = '[object Boolean]',\r\n dateTag = '[object Date]',\r\n domExcTag = '[object DOMException]',\r\n errorTag = '[object Error]',\r\n funcTag = '[object Function]',\r\n genTag = '[object GeneratorFunction]',\r\n mapTag = '[object Map]',\r\n numberTag = '[object Number]',\r\n nullTag = '[object Null]',\r\n objectTag = '[object Object]',\r\n promiseTag = '[object Promise]',\r\n proxyTag = '[object Proxy]',\r\n regexpTag = '[object RegExp]',\r\n setTag = '[object Set]',\r\n stringTag = '[object String]',\r\n symbolTag = '[object Symbol]',\r\n undefinedTag = '[object Undefined]',\r\n weakMapTag = '[object WeakMap]',\r\n weakSetTag = '[object WeakSet]';\r\n\r\n var arrayBufferTag = '[object ArrayBuffer]',\r\n dataViewTag = '[object DataView]',\r\n float32Tag = '[object Float32Array]',\r\n float64Tag = '[object Float64Array]',\r\n int8Tag = '[object Int8Array]',\r\n int16Tag = '[object Int16Array]',\r\n int32Tag = '[object Int32Array]',\r\n uint8Tag = '[object Uint8Array]',\r\n uint8ClampedTag = '[object Uint8ClampedArray]',\r\n uint16Tag = '[object Uint16Array]',\r\n uint32Tag = '[object Uint32Array]';\r\n\r\n /** Used to match empty string literals in compiled template source. */\r\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\r\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\r\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\r\n\r\n /** Used to match HTML entities and HTML characters. */\r\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\r\n reUnescapedHtml = /[&<>\"']/g,\r\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\r\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\r\n\r\n /** Used to match template delimiters. */\r\n var reEscape = /<%-([\\s\\S]+?)%>/g,\r\n reEvaluate = /<%([\\s\\S]+?)%>/g,\r\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\r\n\r\n /** Used to match property names within property paths. */\r\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\r\n reIsPlainProp = /^\\w*$/,\r\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\r\n\r\n /**\r\n * Used to match `RegExp`\r\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\r\n */\r\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\r\n reHasRegExpChar = RegExp(reRegExpChar.source);\r\n\r\n /** Used to match leading whitespace. */\r\n var reTrimStart = /^\\s+/;\r\n\r\n /** Used to match a single whitespace character. */\r\n var reWhitespace = /\\s/;\r\n\r\n /** Used to match wrap detail comments. */\r\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\r\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\r\n reSplitDetails = /,? & /;\r\n\r\n /** Used to match words composed of alphanumeric characters. */\r\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\r\n\r\n /**\r\n * Used to validate the `validate` option in `_.template` variable.\r\n *\r\n * Forbids characters which could potentially change the meaning of the function argument definition:\r\n * - \"(),\" (modification of function parameters)\r\n * - \"=\" (default value)\r\n * - \"[]{}\" (destructuring of function parameters)\r\n * - \"/\" (beginning of a comment)\r\n * - whitespace\r\n */\r\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\r\n\r\n /** Used to match backslashes in property paths. */\r\n var reEscapeChar = /\\\\(\\\\)?/g;\r\n\r\n /**\r\n * Used to match\r\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\r\n */\r\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\r\n\r\n /** Used to match `RegExp` flags from their coerced string values. */\r\n var reFlags = /\\w*$/;\r\n\r\n /** Used to detect bad signed hexadecimal string values. */\r\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\r\n\r\n /** Used to detect binary string values. */\r\n var reIsBinary = /^0b[01]+$/i;\r\n\r\n /** Used to detect host constructors (Safari). */\r\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\r\n\r\n /** Used to detect octal string values. */\r\n var reIsOctal = /^0o[0-7]+$/i;\r\n\r\n /** Used to detect unsigned integer values. */\r\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\r\n\r\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\r\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\r\n\r\n /** Used to ensure capturing order of template delimiters. */\r\n var reNoMatch = /($^)/;\r\n\r\n /** Used to match unescaped characters in compiled string literals. */\r\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\r\n\r\n /** Used to compose unicode character classes. */\r\n var rsAstralRange = '\\\\ud800-\\\\udfff',\r\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\r\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\r\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\r\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\r\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\r\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\r\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\r\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\r\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\r\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\r\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\r\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\r\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\r\n\r\n /** Used to compose unicode capture groups. */\r\n var rsApos = \"['\\u2019]\",\r\n rsAstral = '[' + rsAstralRange + ']',\r\n rsBreak = '[' + rsBreakRange + ']',\r\n rsCombo = '[' + rsComboRange + ']',\r\n rsDigits = '\\\\d+',\r\n rsDingbat = '[' + rsDingbatRange + ']',\r\n rsLower = '[' + rsLowerRange + ']',\r\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\r\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\r\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\r\n rsNonAstral = '[^' + rsAstralRange + ']',\r\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\r\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\r\n rsUpper = '[' + rsUpperRange + ']',\r\n rsZWJ = '\\\\u200d';\r\n\r\n /** Used to compose unicode regexes. */\r\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\r\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\r\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\r\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\r\n reOptMod = rsModifier + '?',\r\n rsOptVar = '[' + rsVarRange + ']?',\r\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\r\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\r\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\r\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\r\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\r\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\r\n\r\n /** Used to match apostrophes. */\r\n var reApos = RegExp(rsApos, 'g');\r\n\r\n /**\r\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\r\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\r\n */\r\n var reComboMark = RegExp(rsCombo, 'g');\r\n\r\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\r\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\r\n\r\n /** Used to match complex or compound words. */\r\n var reUnicodeWord = RegExp([\r\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\r\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\r\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\r\n rsUpper + '+' + rsOptContrUpper,\r\n rsOrdUpper,\r\n rsOrdLower,\r\n rsDigits,\r\n rsEmoji\r\n ].join('|'), 'g');\r\n\r\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\r\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\r\n\r\n /** Used to detect strings that need a more robust regexp to match words. */\r\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\r\n\r\n /** Used to assign default `context` object properties. */\r\n var contextProps = [\r\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\r\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\r\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\r\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\r\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\r\n ];\r\n\r\n /** Used to make template sourceURLs easier to identify. */\r\n var templateCounter = -1;\r\n\r\n /** Used to identify `toStringTag` values of typed arrays. */\r\n var typedArrayTags = {};\r\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\r\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\r\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\r\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\r\n typedArrayTags[uint32Tag] = true;\r\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\r\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\r\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\r\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\r\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\r\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\r\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\r\n typedArrayTags[weakMapTag] = false;\r\n\r\n /** Used to identify `toStringTag` values supported by `_.clone`. */\r\n var cloneableTags = {};\r\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\r\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\r\n cloneableTags[boolTag] = cloneableTags[dateTag] =\r\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\r\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\r\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\r\n cloneableTags[numberTag] = cloneableTags[objectTag] =\r\n cloneableTags[regexpTag] = cloneableTags[setTag] =\r\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\r\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\r\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\r\n cloneableTags[errorTag] = cloneableTags[funcTag] =\r\n cloneableTags[weakMapTag] = false;\r\n\r\n /** Used to map Latin Unicode letters to basic Latin letters. */\r\n var deburredLetters = {\r\n // Latin-1 Supplement block.\r\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\r\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\r\n '\\xc7': 'C', '\\xe7': 'c',\r\n '\\xd0': 'D', '\\xf0': 'd',\r\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\r\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\r\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\r\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\r\n '\\xd1': 'N', '\\xf1': 'n',\r\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\r\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\r\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\r\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\r\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\r\n '\\xc6': 'Ae', '\\xe6': 'ae',\r\n '\\xde': 'Th', '\\xfe': 'th',\r\n '\\xdf': 'ss',\r\n // Latin Extended-A block.\r\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\r\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\r\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\r\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\r\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\r\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\r\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\r\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\r\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\r\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\r\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\r\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\r\n '\\u0134': 'J', '\\u0135': 'j',\r\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\r\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\r\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\r\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\r\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\r\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\r\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\r\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\r\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\r\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\r\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\r\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\r\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\r\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\r\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\r\n '\\u0174': 'W', '\\u0175': 'w',\r\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\r\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\r\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\r\n '\\u0132': 'IJ', '\\u0133': 'ij',\r\n '\\u0152': 'Oe', '\\u0153': 'oe',\r\n '\\u0149': \"'n\", '\\u017f': 's'\r\n };\r\n\r\n /** Used to map characters to HTML entities. */\r\n var htmlEscapes = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n \"'\": '''\r\n };\r\n\r\n /** Used to map HTML entities to characters. */\r\n var htmlUnescapes = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '"': '\"',\r\n ''': \"'\"\r\n };\r\n\r\n /** Used to escape characters for inclusion in compiled string literals. */\r\n var stringEscapes = {\r\n '\\\\': '\\\\',\r\n \"'\": \"'\",\r\n '\\n': 'n',\r\n '\\r': 'r',\r\n '\\u2028': 'u2028',\r\n '\\u2029': 'u2029'\r\n };\r\n\r\n /** Built-in method references without a dependency on `root`. */\r\n var freeParseFloat = parseFloat,\r\n freeParseInt = parseInt;\r\n\r\n /** Detect free variable `global` from Node.js. */\r\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\r\n\r\n /** Detect free variable `self`. */\r\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\r\n\r\n /** Used as a reference to the global object. */\r\n var root = freeGlobal || freeSelf || Function('return this')();\r\n\r\n /** Detect free variable `exports`. */\r\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\r\n\r\n /** Detect free variable `module`. */\r\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\r\n\r\n /** Detect the popular CommonJS extension `module.exports`. */\r\n var moduleExports = freeModule && freeModule.exports === freeExports;\r\n\r\n /** Detect free variable `process` from Node.js. */\r\n var freeProcess = moduleExports && freeGlobal.process;\r\n\r\n /** Used to access faster Node.js helpers. */\r\n var nodeUtil = (function() {\r\n try {\r\n // Use `util.types` for Node.js 10+.\r\n var types = freeModule && freeModule.require && freeModule.require('util').types;\r\n\r\n if (types) {\r\n return types;\r\n }\r\n\r\n // Legacy `process.binding('util')` for Node.js < 10.\r\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\r\n } catch (e) {}\r\n }());\r\n\r\n /* Node.js helper references. */\r\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\r\n nodeIsDate = nodeUtil && nodeUtil.isDate,\r\n nodeIsMap = nodeUtil && nodeUtil.isMap,\r\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\r\n nodeIsSet = nodeUtil && nodeUtil.isSet,\r\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n /**\r\n * A faster alternative to `Function#apply`, this function invokes `func`\r\n * with the `this` binding of `thisArg` and the arguments of `args`.\r\n *\r\n * @private\r\n * @param {Function} func The function to invoke.\r\n * @param {*} thisArg The `this` binding of `func`.\r\n * @param {Array} args The arguments to invoke `func` with.\r\n * @returns {*} Returns the result of `func`.\r\n */\r\n function apply(func, thisArg, args) {\r\n switch (args.length) {\r\n case 0: return func.call(thisArg);\r\n case 1: return func.call(thisArg, args[0]);\r\n case 2: return func.call(thisArg, args[0], args[1]);\r\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\r\n }\r\n return func.apply(thisArg, args);\r\n }\r\n\r\n /**\r\n * A specialized version of `baseAggregator` for arrays.\r\n *\r\n * @private\r\n * @param {Array} [array] The array to iterate over.\r\n * @param {Function} setter The function to set `accumulator` values.\r\n * @param {Function} iteratee The iteratee to transform keys.\r\n * @param {Object} accumulator The initial aggregated object.\r\n * @returns {Function} Returns `accumulator`.\r\n */\r\n function arrayAggregator(array, setter, iteratee, accumulator) {\r\n var index = -1,\r\n length = array == null ? 0 : array.length;\r\n\r\n while (++index < length) {\r\n var value = array[index];\r\n setter(accumulator, value, iteratee(value), array);\r\n }\r\n return accumulator;\r\n }\r\n\r\n /**\r\n * A specialized version of `_.forEach` for arrays without support for\r\n * iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array} [array] The array to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @returns {Array} Returns `array`.\r\n */\r\n function arrayEach(array, iteratee) {\r\n var index = -1,\r\n length = array == null ? 0 : array.length;\r\n\r\n while (++index < length) {\r\n if (iteratee(array[index], index, array) === false) {\r\n break;\r\n }\r\n }\r\n return array;\r\n }\r\n\r\n /**\r\n * A specialized version of `_.forEachRight` for arrays without support for\r\n * iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array} [array] The array to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @returns {Array} Returns `array`.\r\n */\r\n function arrayEachRight(array, iteratee) {\r\n var length = array == null ? 0 : array.length;\r\n\r\n while (length--) {\r\n if (iteratee(array[length], length, array) === false) {\r\n break;\r\n }\r\n }\r\n return array;\r\n }\r\n\r\n /**\r\n * A specialized version of `_.every` for arrays without support for\r\n * iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array} [array] The array to iterate over.\r\n * @param {Function} predicate The function invoked per iteration.\r\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\r\n * else `false`.\r\n */\r\n function arrayEvery(array, predicate) {\r\n var index = -1,\r\n length = array == null ? 0 : array.length;\r\n\r\n while (++index < length) {\r\n if (!predicate(array[index], index, array)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * A specialized version of `_.filter` for arrays without support for\r\n * iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array} [array] The array to iterate over.\r\n * @param {Function} predicate The function invoked per iteration.\r\n * @returns {Array} Returns the new filtered array.\r\n */\r\n function arrayFilter(array, predicate) {\r\n var index = -1,\r\n length = array == null ? 0 : array.length,\r\n resIndex = 0,\r\n result = [];\r\n\r\n while (++index < length) {\r\n var value = array[index];\r\n if (predicate(value, index, array)) {\r\n result[resIndex++] = value;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * A specialized version of `_.includes` for arrays without support for\r\n * specifying an index to search from.\r\n *\r\n * @private\r\n * @param {Array} [array] The array to inspect.\r\n * @param {*} target The value to search for.\r\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\r\n */\r\n function arrayIncludes(array, value) {\r\n var length = array == null ? 0 : array.length;\r\n return !!length && baseIndexOf(array, value, 0) > -1;\r\n }\r\n\r\n /**\r\n * This function is like `arrayIncludes` except that it accepts a comparator.\r\n *\r\n * @private\r\n * @param {Array} [array] The array to inspect.\r\n * @param {*} target The value to search for.\r\n * @param {Function} comparator The comparator invoked per element.\r\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\r\n */\r\n function arrayIncludesWith(array, value, comparator) {\r\n var index = -1,\r\n length = array == null ? 0 : array.length;\r\n\r\n while (++index < length) {\r\n if (comparator(value, array[index])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * A specialized version of `_.map` for arrays without support for iteratee\r\n * shorthands.\r\n *\r\n * @private\r\n * @param {Array} [array] The array to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @returns {Array} Returns the new mapped array.\r\n */\r\n function arrayMap(array, iteratee) {\r\n var index = -1,\r\n length = array == null ? 0 : array.length,\r\n result = Array(length);\r\n\r\n while (++index < length) {\r\n result[index] = iteratee(array[index], index, array);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Appends the elements of `values` to `array`.\r\n *\r\n * @private\r\n * @param {Array} array The array to modify.\r\n * @param {Array} values The values to append.\r\n * @returns {Array} Returns `array`.\r\n */\r\n function arrayPush(array, values) {\r\n var index = -1,\r\n length = values.length,\r\n offset = array.length;\r\n\r\n while (++index < length) {\r\n array[offset + index] = values[index];\r\n }\r\n return array;\r\n }\r\n\r\n /**\r\n * A specialized version of `_.reduce` for arrays without support for\r\n * iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array} [array] The array to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @param {*} [accumulator] The initial value.\r\n * @param {boolean} [initAccum] Specify using the first element of `array` as\r\n * the initial value.\r\n * @returns {*} Returns the accumulated value.\r\n */\r\n function arrayReduce(array, iteratee, accumulator, initAccum) {\r\n var index = -1,\r\n length = array == null ? 0 : array.length;\r\n\r\n if (initAccum && length) {\r\n accumulator = array[++index];\r\n }\r\n while (++index < length) {\r\n accumulator = iteratee(accumulator, array[index], index, array);\r\n }\r\n return accumulator;\r\n }\r\n\r\n /**\r\n * A specialized version of `_.reduceRight` for arrays without support for\r\n * iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array} [array] The array to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @param {*} [accumulator] The initial value.\r\n * @param {boolean} [initAccum] Specify using the last element of `array` as\r\n * the initial value.\r\n * @returns {*} Returns the accumulated value.\r\n */\r\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\r\n var length = array == null ? 0 : array.length;\r\n if (initAccum && length) {\r\n accumulator = array[--length];\r\n }\r\n while (length--) {\r\n accumulator = iteratee(accumulator, array[length], length, array);\r\n }\r\n return accumulator;\r\n }\r\n\r\n /**\r\n * A specialized version of `_.some` for arrays without support for iteratee\r\n * shorthands.\r\n *\r\n * @private\r\n * @param {Array} [array] The array to iterate over.\r\n * @param {Function} predicate The function invoked per iteration.\r\n * @returns {boolean} Returns `true` if any element passes the predicate check,\r\n * else `false`.\r\n */\r\n function arraySome(array, predicate) {\r\n var index = -1,\r\n length = array == null ? 0 : array.length;\r\n\r\n while (++index < length) {\r\n if (predicate(array[index], index, array)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets the size of an ASCII `string`.\r\n *\r\n * @private\r\n * @param {string} string The string inspect.\r\n * @returns {number} Returns the string size.\r\n */\r\n var asciiSize = baseProperty('length');\r\n\r\n /**\r\n * Converts an ASCII `string` to an array.\r\n *\r\n * @private\r\n * @param {string} string The string to convert.\r\n * @returns {Array} Returns the converted array.\r\n */\r\n function asciiToArray(string) {\r\n return string.split('');\r\n }\r\n\r\n /**\r\n * Splits an ASCII `string` into an array of its words.\r\n *\r\n * @private\r\n * @param {string} The string to inspect.\r\n * @returns {Array} Returns the words of `string`.\r\n */\r\n function asciiWords(string) {\r\n return string.match(reAsciiWord) || [];\r\n }\r\n\r\n /**\r\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\r\n * without support for iteratee shorthands, which iterates over `collection`\r\n * using `eachFunc`.\r\n *\r\n * @private\r\n * @param {Array|Object} collection The collection to inspect.\r\n * @param {Function} predicate The function invoked per iteration.\r\n * @param {Function} eachFunc The function to iterate over `collection`.\r\n * @returns {*} Returns the found element or its key, else `undefined`.\r\n */\r\n function baseFindKey(collection, predicate, eachFunc) {\r\n var result;\r\n eachFunc(collection, function(value, key, collection) {\r\n if (predicate(value, key, collection)) {\r\n result = key;\r\n return false;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\r\n * support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array} array The array to inspect.\r\n * @param {Function} predicate The function invoked per iteration.\r\n * @param {number} fromIndex The index to search from.\r\n * @param {boolean} [fromRight] Specify iterating from right to left.\r\n * @returns {number} Returns the index of the matched value, else `-1`.\r\n */\r\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\r\n var length = array.length,\r\n index = fromIndex + (fromRight ? 1 : -1);\r\n\r\n while ((fromRight ? index-- : ++index < length)) {\r\n if (predicate(array[index], index, array)) {\r\n return index;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\r\n *\r\n * @private\r\n * @param {Array} array The array to inspect.\r\n * @param {*} value The value to search for.\r\n * @param {number} fromIndex The index to search from.\r\n * @returns {number} Returns the index of the matched value, else `-1`.\r\n */\r\n function baseIndexOf(array, value, fromIndex) {\r\n return value === value\r\n ? strictIndexOf(array, value, fromIndex)\r\n : baseFindIndex(array, baseIsNaN, fromIndex);\r\n }\r\n\r\n /**\r\n * This function is like `baseIndexOf` except that it accepts a comparator.\r\n *\r\n * @private\r\n * @param {Array} array The array to inspect.\r\n * @param {*} value The value to search for.\r\n * @param {number} fromIndex The index to search from.\r\n * @param {Function} comparator The comparator invoked per element.\r\n * @returns {number} Returns the index of the matched value, else `-1`.\r\n */\r\n function baseIndexOfWith(array, value, fromIndex, comparator) {\r\n var index = fromIndex - 1,\r\n length = array.length;\r\n\r\n while (++index < length) {\r\n if (comparator(array[index], value)) {\r\n return index;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.isNaN` without support for number objects.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\r\n */\r\n function baseIsNaN(value) {\r\n return value !== value;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.mean` and `_.meanBy` without support for\r\n * iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array} array The array to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @returns {number} Returns the mean.\r\n */\r\n function baseMean(array, iteratee) {\r\n var length = array == null ? 0 : array.length;\r\n return length ? (baseSum(array, iteratee) / length) : NAN;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.property` without support for deep paths.\r\n *\r\n * @private\r\n * @param {string} key The key of the property to get.\r\n * @returns {Function} Returns the new accessor function.\r\n */\r\n function baseProperty(key) {\r\n return function(object) {\r\n return object == null ? undefined : object[key];\r\n };\r\n }\r\n\r\n /**\r\n * The base implementation of `_.propertyOf` without support for deep paths.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @returns {Function} Returns the new accessor function.\r\n */\r\n function basePropertyOf(object) {\r\n return function(key) {\r\n return object == null ? undefined : object[key];\r\n };\r\n }\r\n\r\n /**\r\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\r\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\r\n *\r\n * @private\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @param {*} accumulator The initial value.\r\n * @param {boolean} initAccum Specify using the first or last element of\r\n * `collection` as the initial value.\r\n * @param {Function} eachFunc The function to iterate over `collection`.\r\n * @returns {*} Returns the accumulated value.\r\n */\r\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\r\n eachFunc(collection, function(value, index, collection) {\r\n accumulator = initAccum\r\n ? (initAccum = false, value)\r\n : iteratee(accumulator, value, index, collection);\r\n });\r\n return accumulator;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.sortBy` which uses `comparer` to define the\r\n * sort order of `array` and replaces criteria objects with their corresponding\r\n * values.\r\n *\r\n * @private\r\n * @param {Array} array The array to sort.\r\n * @param {Function} comparer The function to define sort order.\r\n * @returns {Array} Returns `array`.\r\n */\r\n function baseSortBy(array, comparer) {\r\n var length = array.length;\r\n\r\n array.sort(comparer);\r\n while (length--) {\r\n array[length] = array[length].value;\r\n }\r\n return array;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.sum` and `_.sumBy` without support for\r\n * iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array} array The array to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @returns {number} Returns the sum.\r\n */\r\n function baseSum(array, iteratee) {\r\n var result,\r\n index = -1,\r\n length = array.length;\r\n\r\n while (++index < length) {\r\n var current = iteratee(array[index]);\r\n if (current !== undefined) {\r\n result = result === undefined ? current : (result + current);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.times` without support for iteratee shorthands\r\n * or max array length checks.\r\n *\r\n * @private\r\n * @param {number} n The number of times to invoke `iteratee`.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @returns {Array} Returns the array of results.\r\n */\r\n function baseTimes(n, iteratee) {\r\n var index = -1,\r\n result = Array(n);\r\n\r\n while (++index < n) {\r\n result[index] = iteratee(index);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\r\n * of key-value pairs for `object` corresponding to the property names of `props`.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @param {Array} props The property names to get values for.\r\n * @returns {Object} Returns the key-value pairs.\r\n */\r\n function baseToPairs(object, props) {\r\n return arrayMap(props, function(key) {\r\n return [key, object[key]];\r\n });\r\n }\r\n\r\n /**\r\n * The base implementation of `_.trim`.\r\n *\r\n * @private\r\n * @param {string} string The string to trim.\r\n * @returns {string} Returns the trimmed string.\r\n */\r\n function baseTrim(string) {\r\n return string\r\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\r\n : string;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.unary` without support for storing metadata.\r\n *\r\n * @private\r\n * @param {Function} func The function to cap arguments for.\r\n * @returns {Function} Returns the new capped function.\r\n */\r\n function baseUnary(func) {\r\n return function(value) {\r\n return func(value);\r\n };\r\n }\r\n\r\n /**\r\n * The base implementation of `_.values` and `_.valuesIn` which creates an\r\n * array of `object` property values corresponding to the property names\r\n * of `props`.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @param {Array} props The property names to get values for.\r\n * @returns {Object} Returns the array of property values.\r\n */\r\n function baseValues(object, props) {\r\n return arrayMap(props, function(key) {\r\n return object[key];\r\n });\r\n }\r\n\r\n /**\r\n * Checks if a `cache` value for `key` exists.\r\n *\r\n * @private\r\n * @param {Object} cache The cache to query.\r\n * @param {string} key The key of the entry to check.\r\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\r\n */\r\n function cacheHas(cache, key) {\r\n return cache.has(key);\r\n }\r\n\r\n /**\r\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\r\n * that is not found in the character symbols.\r\n *\r\n * @private\r\n * @param {Array} strSymbols The string symbols to inspect.\r\n * @param {Array} chrSymbols The character symbols to find.\r\n * @returns {number} Returns the index of the first unmatched string symbol.\r\n */\r\n function charsStartIndex(strSymbols, chrSymbols) {\r\n var index = -1,\r\n length = strSymbols.length;\r\n\r\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\r\n return index;\r\n }\r\n\r\n /**\r\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\r\n * that is not found in the character symbols.\r\n *\r\n * @private\r\n * @param {Array} strSymbols The string symbols to inspect.\r\n * @param {Array} chrSymbols The character symbols to find.\r\n * @returns {number} Returns the index of the last unmatched string symbol.\r\n */\r\n function charsEndIndex(strSymbols, chrSymbols) {\r\n var index = strSymbols.length;\r\n\r\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\r\n return index;\r\n }\r\n\r\n /**\r\n * Gets the number of `placeholder` occurrences in `array`.\r\n *\r\n * @private\r\n * @param {Array} array The array to inspect.\r\n * @param {*} placeholder The placeholder to search for.\r\n * @returns {number} Returns the placeholder count.\r\n */\r\n function countHolders(array, placeholder) {\r\n var length = array.length,\r\n result = 0;\r\n\r\n while (length--) {\r\n if (array[length] === placeholder) {\r\n ++result;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\r\n * letters to basic Latin letters.\r\n *\r\n * @private\r\n * @param {string} letter The matched letter to deburr.\r\n * @returns {string} Returns the deburred letter.\r\n */\r\n var deburrLetter = basePropertyOf(deburredLetters);\r\n\r\n /**\r\n * Used by `_.escape` to convert characters to HTML entities.\r\n *\r\n * @private\r\n * @param {string} chr The matched character to escape.\r\n * @returns {string} Returns the escaped character.\r\n */\r\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\r\n\r\n /**\r\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\r\n *\r\n * @private\r\n * @param {string} chr The matched character to escape.\r\n * @returns {string} Returns the escaped character.\r\n */\r\n function escapeStringChar(chr) {\r\n return '\\\\' + stringEscapes[chr];\r\n }\r\n\r\n /**\r\n * Gets the value at `key` of `object`.\r\n *\r\n * @private\r\n * @param {Object} [object] The object to query.\r\n * @param {string} key The key of the property to get.\r\n * @returns {*} Returns the property value.\r\n */\r\n function getValue(object, key) {\r\n return object == null ? undefined : object[key];\r\n }\r\n\r\n /**\r\n * Checks if `string` contains Unicode symbols.\r\n *\r\n * @private\r\n * @param {string} string The string to inspect.\r\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\r\n */\r\n function hasUnicode(string) {\r\n return reHasUnicode.test(string);\r\n }\r\n\r\n /**\r\n * Checks if `string` contains a word composed of Unicode symbols.\r\n *\r\n * @private\r\n * @param {string} string The string to inspect.\r\n * @returns {boolean} Returns `true` if a word is found, else `false`.\r\n */\r\n function hasUnicodeWord(string) {\r\n return reHasUnicodeWord.test(string);\r\n }\r\n\r\n /**\r\n * Converts `iterator` to an array.\r\n *\r\n * @private\r\n * @param {Object} iterator The iterator to convert.\r\n * @returns {Array} Returns the converted array.\r\n */\r\n function iteratorToArray(iterator) {\r\n var data,\r\n result = [];\r\n\r\n while (!(data = iterator.next()).done) {\r\n result.push(data.value);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Converts `map` to its key-value pairs.\r\n *\r\n * @private\r\n * @param {Object} map The map to convert.\r\n * @returns {Array} Returns the key-value pairs.\r\n */\r\n function mapToArray(map) {\r\n var index = -1,\r\n result = Array(map.size);\r\n\r\n map.forEach(function(value, key) {\r\n result[++index] = [key, value];\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a unary function that invokes `func` with its argument transformed.\r\n *\r\n * @private\r\n * @param {Function} func The function to wrap.\r\n * @param {Function} transform The argument transform.\r\n * @returns {Function} Returns the new function.\r\n */\r\n function overArg(func, transform) {\r\n return function(arg) {\r\n return func(transform(arg));\r\n };\r\n }\r\n\r\n /**\r\n * Replaces all `placeholder` elements in `array` with an internal placeholder\r\n * and returns an array of their indexes.\r\n *\r\n * @private\r\n * @param {Array} array The array to modify.\r\n * @param {*} placeholder The placeholder to replace.\r\n * @returns {Array} Returns the new array of placeholder indexes.\r\n */\r\n function replaceHolders(array, placeholder) {\r\n var index = -1,\r\n length = array.length,\r\n resIndex = 0,\r\n result = [];\r\n\r\n while (++index < length) {\r\n var value = array[index];\r\n if (value === placeholder || value === PLACEHOLDER) {\r\n array[index] = PLACEHOLDER;\r\n result[resIndex++] = index;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Converts `set` to an array of its values.\r\n *\r\n * @private\r\n * @param {Object} set The set to convert.\r\n * @returns {Array} Returns the values.\r\n */\r\n function setToArray(set) {\r\n var index = -1,\r\n result = Array(set.size);\r\n\r\n set.forEach(function(value) {\r\n result[++index] = value;\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * Converts `set` to its value-value pairs.\r\n *\r\n * @private\r\n * @param {Object} set The set to convert.\r\n * @returns {Array} Returns the value-value pairs.\r\n */\r\n function setToPairs(set) {\r\n var index = -1,\r\n result = Array(set.size);\r\n\r\n set.forEach(function(value) {\r\n result[++index] = [value, value];\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * A specialized version of `_.indexOf` which performs strict equality\r\n * comparisons of values, i.e. `===`.\r\n *\r\n * @private\r\n * @param {Array} array The array to inspect.\r\n * @param {*} value The value to search for.\r\n * @param {number} fromIndex The index to search from.\r\n * @returns {number} Returns the index of the matched value, else `-1`.\r\n */\r\n function strictIndexOf(array, value, fromIndex) {\r\n var index = fromIndex - 1,\r\n length = array.length;\r\n\r\n while (++index < length) {\r\n if (array[index] === value) {\r\n return index;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * A specialized version of `_.lastIndexOf` which performs strict equality\r\n * comparisons of values, i.e. `===`.\r\n *\r\n * @private\r\n * @param {Array} array The array to inspect.\r\n * @param {*} value The value to search for.\r\n * @param {number} fromIndex The index to search from.\r\n * @returns {number} Returns the index of the matched value, else `-1`.\r\n */\r\n function strictLastIndexOf(array, value, fromIndex) {\r\n var index = fromIndex + 1;\r\n while (index--) {\r\n if (array[index] === value) {\r\n return index;\r\n }\r\n }\r\n return index;\r\n }\r\n\r\n /**\r\n * Gets the number of symbols in `string`.\r\n *\r\n * @private\r\n * @param {string} string The string to inspect.\r\n * @returns {number} Returns the string size.\r\n */\r\n function stringSize(string) {\r\n return hasUnicode(string)\r\n ? unicodeSize(string)\r\n : asciiSize(string);\r\n }\r\n\r\n /**\r\n * Converts `string` to an array.\r\n *\r\n * @private\r\n * @param {string} string The string to convert.\r\n * @returns {Array} Returns the converted array.\r\n */\r\n function stringToArray(string) {\r\n return hasUnicode(string)\r\n ? unicodeToArray(string)\r\n : asciiToArray(string);\r\n }\r\n\r\n /**\r\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\r\n * character of `string`.\r\n *\r\n * @private\r\n * @param {string} string The string to inspect.\r\n * @returns {number} Returns the index of the last non-whitespace character.\r\n */\r\n function trimmedEndIndex(string) {\r\n var index = string.length;\r\n\r\n while (index-- && reWhitespace.test(string.charAt(index))) {}\r\n return index;\r\n }\r\n\r\n /**\r\n * Used by `_.unescape` to convert HTML entities to characters.\r\n *\r\n * @private\r\n * @param {string} chr The matched character to unescape.\r\n * @returns {string} Returns the unescaped character.\r\n */\r\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\r\n\r\n /**\r\n * Gets the size of a Unicode `string`.\r\n *\r\n * @private\r\n * @param {string} string The string inspect.\r\n * @returns {number} Returns the string size.\r\n */\r\n function unicodeSize(string) {\r\n var result = reUnicode.lastIndex = 0;\r\n while (reUnicode.test(string)) {\r\n ++result;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Converts a Unicode `string` to an array.\r\n *\r\n * @private\r\n * @param {string} string The string to convert.\r\n * @returns {Array} Returns the converted array.\r\n */\r\n function unicodeToArray(string) {\r\n return string.match(reUnicode) || [];\r\n }\r\n\r\n /**\r\n * Splits a Unicode `string` into an array of its words.\r\n *\r\n * @private\r\n * @param {string} The string to inspect.\r\n * @returns {Array} Returns the words of `string`.\r\n */\r\n function unicodeWords(string) {\r\n return string.match(reUnicodeWord) || [];\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Create a new pristine `lodash` function using the `context` object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 1.1.0\r\n * @category Util\r\n * @param {Object} [context=root] The context object.\r\n * @returns {Function} Returns a new `lodash` function.\r\n * @example\r\n *\r\n * _.mixin({ 'foo': _.constant('foo') });\r\n *\r\n * var lodash = _.runInContext();\r\n * lodash.mixin({ 'bar': lodash.constant('bar') });\r\n *\r\n * _.isFunction(_.foo);\r\n * // => true\r\n * _.isFunction(_.bar);\r\n * // => false\r\n *\r\n * lodash.isFunction(lodash.foo);\r\n * // => false\r\n * lodash.isFunction(lodash.bar);\r\n * // => true\r\n *\r\n * // Create a suped-up `defer` in Node.js.\r\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\r\n */\r\n var runInContext = (function runInContext(context) {\r\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\r\n\r\n /** Built-in constructor references. */\r\n var Array = context.Array,\r\n Date = context.Date,\r\n Error = context.Error,\r\n Function = context.Function,\r\n Math = context.Math,\r\n Object = context.Object,\r\n RegExp = context.RegExp,\r\n String = context.String,\r\n TypeError = context.TypeError;\r\n\r\n /** Used for built-in method references. */\r\n var arrayProto = Array.prototype,\r\n funcProto = Function.prototype,\r\n objectProto = Object.prototype;\r\n\r\n /** Used to detect overreaching core-js shims. */\r\n var coreJsData = context['__core-js_shared__'];\r\n\r\n /** Used to resolve the decompiled source of functions. */\r\n var funcToString = funcProto.toString;\r\n\r\n /** Used to check objects for own properties. */\r\n var hasOwnProperty = objectProto.hasOwnProperty;\r\n\r\n /** Used to generate unique IDs. */\r\n var idCounter = 0;\r\n\r\n /** Used to detect methods masquerading as native. */\r\n var maskSrcKey = (function() {\r\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\r\n return uid ? ('Symbol(src)_1.' + uid) : '';\r\n }());\r\n\r\n /**\r\n * Used to resolve the\r\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\r\n * of values.\r\n */\r\n var nativeObjectToString = objectProto.toString;\r\n\r\n /** Used to infer the `Object` constructor. */\r\n var objectCtorString = funcToString.call(Object);\r\n\r\n /** Used to restore the original `_` reference in `_.noConflict`. */\r\n var oldDash = root._;\r\n\r\n /** Used to detect if a method is native. */\r\n var reIsNative = RegExp('^' +\r\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\r\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\r\n );\r\n\r\n /** Built-in value references. */\r\n var Buffer = moduleExports ? context.Buffer : undefined,\r\n Symbol = context.Symbol,\r\n Uint8Array = context.Uint8Array,\r\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\r\n getPrototype = overArg(Object.getPrototypeOf, Object),\r\n objectCreate = Object.create,\r\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\r\n splice = arrayProto.splice,\r\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\r\n symIterator = Symbol ? Symbol.iterator : undefined,\r\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\r\n\r\n var defineProperty = (function() {\r\n try {\r\n var func = getNative(Object, 'defineProperty');\r\n func({}, '', {});\r\n return func;\r\n } catch (e) {}\r\n }());\r\n\r\n /** Mocked built-ins. */\r\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\r\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\r\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\r\n\r\n /* Built-in method references for those with the same name as other `lodash` methods. */\r\n var nativeCeil = Math.ceil,\r\n nativeFloor = Math.floor,\r\n nativeGetSymbols = Object.getOwnPropertySymbols,\r\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\r\n nativeIsFinite = context.isFinite,\r\n nativeJoin = arrayProto.join,\r\n nativeKeys = overArg(Object.keys, Object),\r\n nativeMax = Math.max,\r\n nativeMin = Math.min,\r\n nativeNow = Date.now,\r\n nativeParseInt = context.parseInt,\r\n nativeRandom = Math.random,\r\n nativeReverse = arrayProto.reverse;\r\n\r\n /* Built-in method references that are verified to be native. */\r\n var DataView = getNative(context, 'DataView'),\r\n Map = getNative(context, 'Map'),\r\n Promise = getNative(context, 'Promise'),\r\n Set = getNative(context, 'Set'),\r\n WeakMap = getNative(context, 'WeakMap'),\r\n nativeCreate = getNative(Object, 'create');\r\n\r\n /** Used to store function metadata. */\r\n var metaMap = WeakMap && new WeakMap;\r\n\r\n /** Used to lookup unminified function names. */\r\n var realNames = {};\r\n\r\n /** Used to detect maps, sets, and weakmaps. */\r\n var dataViewCtorString = toSource(DataView),\r\n mapCtorString = toSource(Map),\r\n promiseCtorString = toSource(Promise),\r\n setCtorString = toSource(Set),\r\n weakMapCtorString = toSource(WeakMap);\r\n\r\n /** Used to convert symbols to primitives and strings. */\r\n var symbolProto = Symbol ? Symbol.prototype : undefined,\r\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\r\n symbolToString = symbolProto ? symbolProto.toString : undefined;\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Creates a `lodash` object which wraps `value` to enable implicit method\r\n * chain sequences. Methods that operate on and return arrays, collections,\r\n * and functions can be chained together. Methods that retrieve a single value\r\n * or may return a primitive value will automatically end the chain sequence\r\n * and return the unwrapped value. Otherwise, the value must be unwrapped\r\n * with `_#value`.\r\n *\r\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\r\n * enabled using `_.chain`.\r\n *\r\n * The execution of chained methods is lazy, that is, it's deferred until\r\n * `_#value` is implicitly or explicitly called.\r\n *\r\n * Lazy evaluation allows several methods to support shortcut fusion.\r\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\r\n * the creation of intermediate arrays and can greatly reduce the number of\r\n * iteratee executions. Sections of a chain sequence qualify for shortcut\r\n * fusion if the section is applied to an array and iteratees accept only\r\n * one argument. The heuristic for whether a section qualifies for shortcut\r\n * fusion is subject to change.\r\n *\r\n * Chaining is supported in custom builds as long as the `_#value` method is\r\n * directly or indirectly included in the build.\r\n *\r\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\r\n *\r\n * The wrapper `Array` methods are:\r\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\r\n *\r\n * The wrapper `String` methods are:\r\n * `replace` and `split`\r\n *\r\n * The wrapper methods that support shortcut fusion are:\r\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\r\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\r\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\r\n *\r\n * The chainable wrapper methods are:\r\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\r\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\r\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\r\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\r\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\r\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\r\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\r\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\r\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\r\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\r\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\r\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\r\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\r\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\r\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\r\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\r\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\r\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\r\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\r\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\r\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\r\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\r\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\r\n * `zipObject`, `zipObjectDeep`, and `zipWith`\r\n *\r\n * The wrapper methods that are **not** chainable by default are:\r\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\r\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\r\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\r\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\r\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\r\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\r\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\r\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\r\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\r\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\r\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\r\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\r\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\r\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\r\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\r\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\r\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\r\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\r\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\r\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\r\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\r\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\r\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\r\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\r\n * `upperFirst`, `value`, and `words`\r\n *\r\n * @name _\r\n * @constructor\r\n * @category Seq\r\n * @param {*} value The value to wrap in a `lodash` instance.\r\n * @returns {Object} Returns the new `lodash` wrapper instance.\r\n * @example\r\n *\r\n * function square(n) {\r\n * return n * n;\r\n * }\r\n *\r\n * var wrapped = _([1, 2, 3]);\r\n *\r\n * // Returns an unwrapped value.\r\n * wrapped.reduce(_.add);\r\n * // => 6\r\n *\r\n * // Returns a wrapped value.\r\n * var squares = wrapped.map(square);\r\n *\r\n * _.isArray(squares);\r\n * // => false\r\n *\r\n * _.isArray(squares.value());\r\n * // => true\r\n */\r\n function lodash(value) {\r\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\r\n if (value instanceof LodashWrapper) {\r\n return value;\r\n }\r\n if (hasOwnProperty.call(value, '__wrapped__')) {\r\n return wrapperClone(value);\r\n }\r\n }\r\n return new LodashWrapper(value);\r\n }\r\n\r\n /**\r\n * The base implementation of `_.create` without support for assigning\r\n * properties to the created object.\r\n *\r\n * @private\r\n * @param {Object} proto The object to inherit from.\r\n * @returns {Object} Returns the new object.\r\n */\r\n var baseCreate = (function() {\r\n function object() {}\r\n return function(proto) {\r\n if (!isObject(proto)) {\r\n return {};\r\n }\r\n if (objectCreate) {\r\n return objectCreate(proto);\r\n }\r\n object.prototype = proto;\r\n var result = new object;\r\n object.prototype = undefined;\r\n return result;\r\n };\r\n }());\r\n\r\n /**\r\n * The function whose prototype chain sequence wrappers inherit from.\r\n *\r\n * @private\r\n */\r\n function baseLodash() {\r\n // No operation performed.\r\n }\r\n\r\n /**\r\n * The base constructor for creating `lodash` wrapper objects.\r\n *\r\n * @private\r\n * @param {*} value The value to wrap.\r\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\r\n */\r\n function LodashWrapper(value, chainAll) {\r\n this.__wrapped__ = value;\r\n this.__actions__ = [];\r\n this.__chain__ = !!chainAll;\r\n this.__index__ = 0;\r\n this.__values__ = undefined;\r\n }\r\n\r\n /**\r\n * By default, the template delimiters used by lodash are like those in\r\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\r\n * following template settings to use alternative delimiters.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @type {Object}\r\n */\r\n lodash.templateSettings = {\r\n\r\n /**\r\n * Used to detect `data` property values to be HTML-escaped.\r\n *\r\n * @memberOf _.templateSettings\r\n * @type {RegExp}\r\n */\r\n 'escape': reEscape,\r\n\r\n /**\r\n * Used to detect code to be evaluated.\r\n *\r\n * @memberOf _.templateSettings\r\n * @type {RegExp}\r\n */\r\n 'evaluate': reEvaluate,\r\n\r\n /**\r\n * Used to detect `data` property values to inject.\r\n *\r\n * @memberOf _.templateSettings\r\n * @type {RegExp}\r\n */\r\n 'interpolate': reInterpolate,\r\n\r\n /**\r\n * Used to reference the data object in the template text.\r\n *\r\n * @memberOf _.templateSettings\r\n * @type {string}\r\n */\r\n 'variable': '',\r\n\r\n /**\r\n * Used to import variables into the compiled template.\r\n *\r\n * @memberOf _.templateSettings\r\n * @type {Object}\r\n */\r\n 'imports': {\r\n\r\n /**\r\n * A reference to the `lodash` function.\r\n *\r\n * @memberOf _.templateSettings.imports\r\n * @type {Function}\r\n */\r\n '_': lodash\r\n }\r\n };\r\n\r\n // Ensure wrappers are instances of `baseLodash`.\r\n lodash.prototype = baseLodash.prototype;\r\n lodash.prototype.constructor = lodash;\r\n\r\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\r\n LodashWrapper.prototype.constructor = LodashWrapper;\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\r\n *\r\n * @private\r\n * @constructor\r\n * @param {*} value The value to wrap.\r\n */\r\n function LazyWrapper(value) {\r\n this.__wrapped__ = value;\r\n this.__actions__ = [];\r\n this.__dir__ = 1;\r\n this.__filtered__ = false;\r\n this.__iteratees__ = [];\r\n this.__takeCount__ = MAX_ARRAY_LENGTH;\r\n this.__views__ = [];\r\n }\r\n\r\n /**\r\n * Creates a clone of the lazy wrapper object.\r\n *\r\n * @private\r\n * @name clone\r\n * @memberOf LazyWrapper\r\n * @returns {Object} Returns the cloned `LazyWrapper` object.\r\n */\r\n function lazyClone() {\r\n var result = new LazyWrapper(this.__wrapped__);\r\n result.__actions__ = copyArray(this.__actions__);\r\n result.__dir__ = this.__dir__;\r\n result.__filtered__ = this.__filtered__;\r\n result.__iteratees__ = copyArray(this.__iteratees__);\r\n result.__takeCount__ = this.__takeCount__;\r\n result.__views__ = copyArray(this.__views__);\r\n return result;\r\n }\r\n\r\n /**\r\n * Reverses the direction of lazy iteration.\r\n *\r\n * @private\r\n * @name reverse\r\n * @memberOf LazyWrapper\r\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\r\n */\r\n function lazyReverse() {\r\n if (this.__filtered__) {\r\n var result = new LazyWrapper(this);\r\n result.__dir__ = -1;\r\n result.__filtered__ = true;\r\n } else {\r\n result = this.clone();\r\n result.__dir__ *= -1;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Extracts the unwrapped value from its lazy wrapper.\r\n *\r\n * @private\r\n * @name value\r\n * @memberOf LazyWrapper\r\n * @returns {*} Returns the unwrapped value.\r\n */\r\n function lazyValue() {\r\n var array = this.__wrapped__.value(),\r\n dir = this.__dir__,\r\n isArr = isArray(array),\r\n isRight = dir < 0,\r\n arrLength = isArr ? array.length : 0,\r\n view = getView(0, arrLength, this.__views__),\r\n start = view.start,\r\n end = view.end,\r\n length = end - start,\r\n index = isRight ? end : (start - 1),\r\n iteratees = this.__iteratees__,\r\n iterLength = iteratees.length,\r\n resIndex = 0,\r\n takeCount = nativeMin(length, this.__takeCount__);\r\n\r\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\r\n return baseWrapperValue(array, this.__actions__);\r\n }\r\n var result = [];\r\n\r\n outer:\r\n while (length-- && resIndex < takeCount) {\r\n index += dir;\r\n\r\n var iterIndex = -1,\r\n value = array[index];\r\n\r\n while (++iterIndex < iterLength) {\r\n var data = iteratees[iterIndex],\r\n iteratee = data.iteratee,\r\n type = data.type,\r\n computed = iteratee(value);\r\n\r\n if (type == LAZY_MAP_FLAG) {\r\n value = computed;\r\n } else if (!computed) {\r\n if (type == LAZY_FILTER_FLAG) {\r\n continue outer;\r\n } else {\r\n break outer;\r\n }\r\n }\r\n }\r\n result[resIndex++] = value;\r\n }\r\n return result;\r\n }\r\n\r\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\r\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\r\n LazyWrapper.prototype.constructor = LazyWrapper;\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Creates a hash object.\r\n *\r\n * @private\r\n * @constructor\r\n * @param {Array} [entries] The key-value pairs to cache.\r\n */\r\n function Hash(entries) {\r\n var index = -1,\r\n length = entries == null ? 0 : entries.length;\r\n\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n }\r\n\r\n /**\r\n * Removes all key-value entries from the hash.\r\n *\r\n * @private\r\n * @name clear\r\n * @memberOf Hash\r\n */\r\n function hashClear() {\r\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\r\n this.size = 0;\r\n }\r\n\r\n /**\r\n * Removes `key` and its value from the hash.\r\n *\r\n * @private\r\n * @name delete\r\n * @memberOf Hash\r\n * @param {Object} hash The hash to modify.\r\n * @param {string} key The key of the value to remove.\r\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\r\n */\r\n function hashDelete(key) {\r\n var result = this.has(key) && delete this.__data__[key];\r\n this.size -= result ? 1 : 0;\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets the hash value for `key`.\r\n *\r\n * @private\r\n * @name get\r\n * @memberOf Hash\r\n * @param {string} key The key of the value to get.\r\n * @returns {*} Returns the entry value.\r\n */\r\n function hashGet(key) {\r\n var data = this.__data__;\r\n if (nativeCreate) {\r\n var result = data[key];\r\n return result === HASH_UNDEFINED ? undefined : result;\r\n }\r\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\r\n }\r\n\r\n /**\r\n * Checks if a hash value for `key` exists.\r\n *\r\n * @private\r\n * @name has\r\n * @memberOf Hash\r\n * @param {string} key The key of the entry to check.\r\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\r\n */\r\n function hashHas(key) {\r\n var data = this.__data__;\r\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\r\n }\r\n\r\n /**\r\n * Sets the hash `key` to `value`.\r\n *\r\n * @private\r\n * @name set\r\n * @memberOf Hash\r\n * @param {string} key The key of the value to set.\r\n * @param {*} value The value to set.\r\n * @returns {Object} Returns the hash instance.\r\n */\r\n function hashSet(key, value) {\r\n var data = this.__data__;\r\n this.size += this.has(key) ? 0 : 1;\r\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\r\n return this;\r\n }\r\n\r\n // Add methods to `Hash`.\r\n Hash.prototype.clear = hashClear;\r\n Hash.prototype['delete'] = hashDelete;\r\n Hash.prototype.get = hashGet;\r\n Hash.prototype.has = hashHas;\r\n Hash.prototype.set = hashSet;\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Creates an list cache object.\r\n *\r\n * @private\r\n * @constructor\r\n * @param {Array} [entries] The key-value pairs to cache.\r\n */\r\n function ListCache(entries) {\r\n var index = -1,\r\n length = entries == null ? 0 : entries.length;\r\n\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n }\r\n\r\n /**\r\n * Removes all key-value entries from the list cache.\r\n *\r\n * @private\r\n * @name clear\r\n * @memberOf ListCache\r\n */\r\n function listCacheClear() {\r\n this.__data__ = [];\r\n this.size = 0;\r\n }\r\n\r\n /**\r\n * Removes `key` and its value from the list cache.\r\n *\r\n * @private\r\n * @name delete\r\n * @memberOf ListCache\r\n * @param {string} key The key of the value to remove.\r\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\r\n */\r\n function listCacheDelete(key) {\r\n var data = this.__data__,\r\n index = assocIndexOf(data, key);\r\n\r\n if (index < 0) {\r\n return false;\r\n }\r\n var lastIndex = data.length - 1;\r\n if (index == lastIndex) {\r\n data.pop();\r\n } else {\r\n splice.call(data, index, 1);\r\n }\r\n --this.size;\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets the list cache value for `key`.\r\n *\r\n * @private\r\n * @name get\r\n * @memberOf ListCache\r\n * @param {string} key The key of the value to get.\r\n * @returns {*} Returns the entry value.\r\n */\r\n function listCacheGet(key) {\r\n var data = this.__data__,\r\n index = assocIndexOf(data, key);\r\n\r\n return index < 0 ? undefined : data[index][1];\r\n }\r\n\r\n /**\r\n * Checks if a list cache value for `key` exists.\r\n *\r\n * @private\r\n * @name has\r\n * @memberOf ListCache\r\n * @param {string} key The key of the entry to check.\r\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\r\n */\r\n function listCacheHas(key) {\r\n return assocIndexOf(this.__data__, key) > -1;\r\n }\r\n\r\n /**\r\n * Sets the list cache `key` to `value`.\r\n *\r\n * @private\r\n * @name set\r\n * @memberOf ListCache\r\n * @param {string} key The key of the value to set.\r\n * @param {*} value The value to set.\r\n * @returns {Object} Returns the list cache instance.\r\n */\r\n function listCacheSet(key, value) {\r\n var data = this.__data__,\r\n index = assocIndexOf(data, key);\r\n\r\n if (index < 0) {\r\n ++this.size;\r\n data.push([key, value]);\r\n } else {\r\n data[index][1] = value;\r\n }\r\n return this;\r\n }\r\n\r\n // Add methods to `ListCache`.\r\n ListCache.prototype.clear = listCacheClear;\r\n ListCache.prototype['delete'] = listCacheDelete;\r\n ListCache.prototype.get = listCacheGet;\r\n ListCache.prototype.has = listCacheHas;\r\n ListCache.prototype.set = listCacheSet;\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Creates a map cache object to store key-value pairs.\r\n *\r\n * @private\r\n * @constructor\r\n * @param {Array} [entries] The key-value pairs to cache.\r\n */\r\n function MapCache(entries) {\r\n var index = -1,\r\n length = entries == null ? 0 : entries.length;\r\n\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n }\r\n\r\n /**\r\n * Removes all key-value entries from the map.\r\n *\r\n * @private\r\n * @name clear\r\n * @memberOf MapCache\r\n */\r\n function mapCacheClear() {\r\n this.size = 0;\r\n this.__data__ = {\r\n 'hash': new Hash,\r\n 'map': new (Map || ListCache),\r\n 'string': new Hash\r\n };\r\n }\r\n\r\n /**\r\n * Removes `key` and its value from the map.\r\n *\r\n * @private\r\n * @name delete\r\n * @memberOf MapCache\r\n * @param {string} key The key of the value to remove.\r\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\r\n */\r\n function mapCacheDelete(key) {\r\n var result = getMapData(this, key)['delete'](key);\r\n this.size -= result ? 1 : 0;\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets the map value for `key`.\r\n *\r\n * @private\r\n * @name get\r\n * @memberOf MapCache\r\n * @param {string} key The key of the value to get.\r\n * @returns {*} Returns the entry value.\r\n */\r\n function mapCacheGet(key) {\r\n return getMapData(this, key).get(key);\r\n }\r\n\r\n /**\r\n * Checks if a map value for `key` exists.\r\n *\r\n * @private\r\n * @name has\r\n * @memberOf MapCache\r\n * @param {string} key The key of the entry to check.\r\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\r\n */\r\n function mapCacheHas(key) {\r\n return getMapData(this, key).has(key);\r\n }\r\n\r\n /**\r\n * Sets the map `key` to `value`.\r\n *\r\n * @private\r\n * @name set\r\n * @memberOf MapCache\r\n * @param {string} key The key of the value to set.\r\n * @param {*} value The value to set.\r\n * @returns {Object} Returns the map cache instance.\r\n */\r\n function mapCacheSet(key, value) {\r\n var data = getMapData(this, key),\r\n size = data.size;\r\n\r\n data.set(key, value);\r\n this.size += data.size == size ? 0 : 1;\r\n return this;\r\n }\r\n\r\n // Add methods to `MapCache`.\r\n MapCache.prototype.clear = mapCacheClear;\r\n MapCache.prototype['delete'] = mapCacheDelete;\r\n MapCache.prototype.get = mapCacheGet;\r\n MapCache.prototype.has = mapCacheHas;\r\n MapCache.prototype.set = mapCacheSet;\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n *\r\n * Creates an array cache object to store unique values.\r\n *\r\n * @private\r\n * @constructor\r\n * @param {Array} [values] The values to cache.\r\n */\r\n function SetCache(values) {\r\n var index = -1,\r\n length = values == null ? 0 : values.length;\r\n\r\n this.__data__ = new MapCache;\r\n while (++index < length) {\r\n this.add(values[index]);\r\n }\r\n }\r\n\r\n /**\r\n * Adds `value` to the array cache.\r\n *\r\n * @private\r\n * @name add\r\n * @memberOf SetCache\r\n * @alias push\r\n * @param {*} value The value to cache.\r\n * @returns {Object} Returns the cache instance.\r\n */\r\n function setCacheAdd(value) {\r\n this.__data__.set(value, HASH_UNDEFINED);\r\n return this;\r\n }\r\n\r\n /**\r\n * Checks if `value` is in the array cache.\r\n *\r\n * @private\r\n * @name has\r\n * @memberOf SetCache\r\n * @param {*} value The value to search for.\r\n * @returns {number} Returns `true` if `value` is found, else `false`.\r\n */\r\n function setCacheHas(value) {\r\n return this.__data__.has(value);\r\n }\r\n\r\n // Add methods to `SetCache`.\r\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\r\n SetCache.prototype.has = setCacheHas;\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Creates a stack cache object to store key-value pairs.\r\n *\r\n * @private\r\n * @constructor\r\n * @param {Array} [entries] The key-value pairs to cache.\r\n */\r\n function Stack(entries) {\r\n var data = this.__data__ = new ListCache(entries);\r\n this.size = data.size;\r\n }\r\n\r\n /**\r\n * Removes all key-value entries from the stack.\r\n *\r\n * @private\r\n * @name clear\r\n * @memberOf Stack\r\n */\r\n function stackClear() {\r\n this.__data__ = new ListCache;\r\n this.size = 0;\r\n }\r\n\r\n /**\r\n * Removes `key` and its value from the stack.\r\n *\r\n * @private\r\n * @name delete\r\n * @memberOf Stack\r\n * @param {string} key The key of the value to remove.\r\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\r\n */\r\n function stackDelete(key) {\r\n var data = this.__data__,\r\n result = data['delete'](key);\r\n\r\n this.size = data.size;\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets the stack value for `key`.\r\n *\r\n * @private\r\n * @name get\r\n * @memberOf Stack\r\n * @param {string} key The key of the value to get.\r\n * @returns {*} Returns the entry value.\r\n */\r\n function stackGet(key) {\r\n return this.__data__.get(key);\r\n }\r\n\r\n /**\r\n * Checks if a stack value for `key` exists.\r\n *\r\n * @private\r\n * @name has\r\n * @memberOf Stack\r\n * @param {string} key The key of the entry to check.\r\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\r\n */\r\n function stackHas(key) {\r\n return this.__data__.has(key);\r\n }\r\n\r\n /**\r\n * Sets the stack `key` to `value`.\r\n *\r\n * @private\r\n * @name set\r\n * @memberOf Stack\r\n * @param {string} key The key of the value to set.\r\n * @param {*} value The value to set.\r\n * @returns {Object} Returns the stack cache instance.\r\n */\r\n function stackSet(key, value) {\r\n var data = this.__data__;\r\n if (data instanceof ListCache) {\r\n var pairs = data.__data__;\r\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\r\n pairs.push([key, value]);\r\n this.size = ++data.size;\r\n return this;\r\n }\r\n data = this.__data__ = new MapCache(pairs);\r\n }\r\n data.set(key, value);\r\n this.size = data.size;\r\n return this;\r\n }\r\n\r\n // Add methods to `Stack`.\r\n Stack.prototype.clear = stackClear;\r\n Stack.prototype['delete'] = stackDelete;\r\n Stack.prototype.get = stackGet;\r\n Stack.prototype.has = stackHas;\r\n Stack.prototype.set = stackSet;\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Creates an array of the enumerable property names of the array-like `value`.\r\n *\r\n * @private\r\n * @param {*} value The value to query.\r\n * @param {boolean} inherited Specify returning inherited property names.\r\n * @returns {Array} Returns the array of property names.\r\n */\r\n function arrayLikeKeys(value, inherited) {\r\n var isArr = isArray(value),\r\n isArg = !isArr && isArguments(value),\r\n isBuff = !isArr && !isArg && isBuffer(value),\r\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\r\n skipIndexes = isArr || isArg || isBuff || isType,\r\n result = skipIndexes ? baseTimes(value.length, String) : [],\r\n length = result.length;\r\n\r\n for (var key in value) {\r\n if ((inherited || hasOwnProperty.call(value, key)) &&\r\n !(skipIndexes && (\r\n // Safari 9 has enumerable `arguments.length` in strict mode.\r\n key == 'length' ||\r\n // Node.js 0.10 has enumerable non-index properties on buffers.\r\n (isBuff && (key == 'offset' || key == 'parent')) ||\r\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\r\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\r\n // Skip index properties.\r\n isIndex(key, length)\r\n ))) {\r\n result.push(key);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * A specialized version of `_.sample` for arrays.\r\n *\r\n * @private\r\n * @param {Array} array The array to sample.\r\n * @returns {*} Returns the random element.\r\n */\r\n function arraySample(array) {\r\n var length = array.length;\r\n return length ? array[baseRandom(0, length - 1)] : undefined;\r\n }\r\n\r\n /**\r\n * A specialized version of `_.sampleSize` for arrays.\r\n *\r\n * @private\r\n * @param {Array} array The array to sample.\r\n * @param {number} n The number of elements to sample.\r\n * @returns {Array} Returns the random elements.\r\n */\r\n function arraySampleSize(array, n) {\r\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\r\n }\r\n\r\n /**\r\n * A specialized version of `_.shuffle` for arrays.\r\n *\r\n * @private\r\n * @param {Array} array The array to shuffle.\r\n * @returns {Array} Returns the new shuffled array.\r\n */\r\n function arrayShuffle(array) {\r\n return shuffleSelf(copyArray(array));\r\n }\r\n\r\n /**\r\n * This function is like `assignValue` except that it doesn't assign\r\n * `undefined` values.\r\n *\r\n * @private\r\n * @param {Object} object The object to modify.\r\n * @param {string} key The key of the property to assign.\r\n * @param {*} value The value to assign.\r\n */\r\n function assignMergeValue(object, key, value) {\r\n if ((value !== undefined && !eq(object[key], value)) ||\r\n (value === undefined && !(key in object))) {\r\n baseAssignValue(object, key, value);\r\n }\r\n }\r\n\r\n /**\r\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\r\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\r\n * for equality comparisons.\r\n *\r\n * @private\r\n * @param {Object} object The object to modify.\r\n * @param {string} key The key of the property to assign.\r\n * @param {*} value The value to assign.\r\n */\r\n function assignValue(object, key, value) {\r\n var objValue = object[key];\r\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\r\n (value === undefined && !(key in object))) {\r\n baseAssignValue(object, key, value);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the index at which the `key` is found in `array` of key-value pairs.\r\n *\r\n * @private\r\n * @param {Array} array The array to inspect.\r\n * @param {*} key The key to search for.\r\n * @returns {number} Returns the index of the matched value, else `-1`.\r\n */\r\n function assocIndexOf(array, key) {\r\n var length = array.length;\r\n while (length--) {\r\n if (eq(array[length][0], key)) {\r\n return length;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * Aggregates elements of `collection` on `accumulator` with keys transformed\r\n * by `iteratee` and values set by `setter`.\r\n *\r\n * @private\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} setter The function to set `accumulator` values.\r\n * @param {Function} iteratee The iteratee to transform keys.\r\n * @param {Object} accumulator The initial aggregated object.\r\n * @returns {Function} Returns `accumulator`.\r\n */\r\n function baseAggregator(collection, setter, iteratee, accumulator) {\r\n baseEach(collection, function(value, key, collection) {\r\n setter(accumulator, value, iteratee(value), collection);\r\n });\r\n return accumulator;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.assign` without support for multiple sources\r\n * or `customizer` functions.\r\n *\r\n * @private\r\n * @param {Object} object The destination object.\r\n * @param {Object} source The source object.\r\n * @returns {Object} Returns `object`.\r\n */\r\n function baseAssign(object, source) {\r\n return object && copyObject(source, keys(source), object);\r\n }\r\n\r\n /**\r\n * The base implementation of `_.assignIn` without support for multiple sources\r\n * or `customizer` functions.\r\n *\r\n * @private\r\n * @param {Object} object The destination object.\r\n * @param {Object} source The source object.\r\n * @returns {Object} Returns `object`.\r\n */\r\n function baseAssignIn(object, source) {\r\n return object && copyObject(source, keysIn(source), object);\r\n }\r\n\r\n /**\r\n * The base implementation of `assignValue` and `assignMergeValue` without\r\n * value checks.\r\n *\r\n * @private\r\n * @param {Object} object The object to modify.\r\n * @param {string} key The key of the property to assign.\r\n * @param {*} value The value to assign.\r\n */\r\n function baseAssignValue(object, key, value) {\r\n if (key == '__proto__' && defineProperty) {\r\n defineProperty(object, key, {\r\n 'configurable': true,\r\n 'enumerable': true,\r\n 'value': value,\r\n 'writable': true\r\n });\r\n } else {\r\n object[key] = value;\r\n }\r\n }\r\n\r\n /**\r\n * The base implementation of `_.at` without support for individual paths.\r\n *\r\n * @private\r\n * @param {Object} object The object to iterate over.\r\n * @param {string[]} paths The property paths to pick.\r\n * @returns {Array} Returns the picked elements.\r\n */\r\n function baseAt(object, paths) {\r\n var index = -1,\r\n length = paths.length,\r\n result = Array(length),\r\n skip = object == null;\r\n\r\n while (++index < length) {\r\n result[index] = skip ? undefined : get(object, paths[index]);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.clamp` which doesn't coerce arguments.\r\n *\r\n * @private\r\n * @param {number} number The number to clamp.\r\n * @param {number} [lower] The lower bound.\r\n * @param {number} upper The upper bound.\r\n * @returns {number} Returns the clamped number.\r\n */\r\n function baseClamp(number, lower, upper) {\r\n if (number === number) {\r\n if (upper !== undefined) {\r\n number = number <= upper ? number : upper;\r\n }\r\n if (lower !== undefined) {\r\n number = number >= lower ? number : lower;\r\n }\r\n }\r\n return number;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\r\n * traversed objects.\r\n *\r\n * @private\r\n * @param {*} value The value to clone.\r\n * @param {boolean} bitmask The bitmask flags.\r\n * 1 - Deep clone\r\n * 2 - Flatten inherited properties\r\n * 4 - Clone symbols\r\n * @param {Function} [customizer] The function to customize cloning.\r\n * @param {string} [key] The key of `value`.\r\n * @param {Object} [object] The parent object of `value`.\r\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\r\n * @returns {*} Returns the cloned value.\r\n */\r\n function baseClone(value, bitmask, customizer, key, object, stack) {\r\n var result,\r\n isDeep = bitmask & CLONE_DEEP_FLAG,\r\n isFlat = bitmask & CLONE_FLAT_FLAG,\r\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\r\n\r\n if (customizer) {\r\n result = object ? customizer(value, key, object, stack) : customizer(value);\r\n }\r\n if (result !== undefined) {\r\n return result;\r\n }\r\n if (!isObject(value)) {\r\n return value;\r\n }\r\n var isArr = isArray(value);\r\n if (isArr) {\r\n result = initCloneArray(value);\r\n if (!isDeep) {\r\n return copyArray(value, result);\r\n }\r\n } else {\r\n var tag = getTag(value),\r\n isFunc = tag == funcTag || tag == genTag;\r\n\r\n if (isBuffer(value)) {\r\n return cloneBuffer(value, isDeep);\r\n }\r\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\r\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\r\n if (!isDeep) {\r\n return isFlat\r\n ? copySymbolsIn(value, baseAssignIn(result, value))\r\n : copySymbols(value, baseAssign(result, value));\r\n }\r\n } else {\r\n if (!cloneableTags[tag]) {\r\n return object ? value : {};\r\n }\r\n result = initCloneByTag(value, tag, isDeep);\r\n }\r\n }\r\n // Check for circular references and return its corresponding clone.\r\n stack || (stack = new Stack);\r\n var stacked = stack.get(value);\r\n if (stacked) {\r\n return stacked;\r\n }\r\n stack.set(value, result);\r\n\r\n if (isSet(value)) {\r\n value.forEach(function(subValue) {\r\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\r\n });\r\n } else if (isMap(value)) {\r\n value.forEach(function(subValue, key) {\r\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\r\n });\r\n }\r\n\r\n var keysFunc = isFull\r\n ? (isFlat ? getAllKeysIn : getAllKeys)\r\n : (isFlat ? keysIn : keys);\r\n\r\n var props = isArr ? undefined : keysFunc(value);\r\n arrayEach(props || value, function(subValue, key) {\r\n if (props) {\r\n key = subValue;\r\n subValue = value[key];\r\n }\r\n // Recursively populate clone (susceptible to call stack limits).\r\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.conforms` which doesn't clone `source`.\r\n *\r\n * @private\r\n * @param {Object} source The object of property predicates to conform to.\r\n * @returns {Function} Returns the new spec function.\r\n */\r\n function baseConforms(source) {\r\n var props = keys(source);\r\n return function(object) {\r\n return baseConformsTo(object, source, props);\r\n };\r\n }\r\n\r\n /**\r\n * The base implementation of `_.conformsTo` which accepts `props` to check.\r\n *\r\n * @private\r\n * @param {Object} object The object to inspect.\r\n * @param {Object} source The object of property predicates to conform to.\r\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\r\n */\r\n function baseConformsTo(object, source, props) {\r\n var length = props.length;\r\n if (object == null) {\r\n return !length;\r\n }\r\n object = Object(object);\r\n while (length--) {\r\n var key = props[length],\r\n predicate = source[key],\r\n value = object[key];\r\n\r\n if ((value === undefined && !(key in object)) || !predicate(value)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\r\n * to provide to `func`.\r\n *\r\n * @private\r\n * @param {Function} func The function to delay.\r\n * @param {number} wait The number of milliseconds to delay invocation.\r\n * @param {Array} args The arguments to provide to `func`.\r\n * @returns {number|Object} Returns the timer id or timeout object.\r\n */\r\n function baseDelay(func, wait, args) {\r\n if (typeof func != 'function') {\r\n throw new TypeError(FUNC_ERROR_TEXT);\r\n }\r\n return setTimeout(function() { func.apply(undefined, args); }, wait);\r\n }\r\n\r\n /**\r\n * The base implementation of methods like `_.difference` without support\r\n * for excluding multiple arrays or iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array} array The array to inspect.\r\n * @param {Array} values The values to exclude.\r\n * @param {Function} [iteratee] The iteratee invoked per element.\r\n * @param {Function} [comparator] The comparator invoked per element.\r\n * @returns {Array} Returns the new array of filtered values.\r\n */\r\n function baseDifference(array, values, iteratee, comparator) {\r\n var index = -1,\r\n includes = arrayIncludes,\r\n isCommon = true,\r\n length = array.length,\r\n result = [],\r\n valuesLength = values.length;\r\n\r\n if (!length) {\r\n return result;\r\n }\r\n if (iteratee) {\r\n values = arrayMap(values, baseUnary(iteratee));\r\n }\r\n if (comparator) {\r\n includes = arrayIncludesWith;\r\n isCommon = false;\r\n }\r\n else if (values.length >= LARGE_ARRAY_SIZE) {\r\n includes = cacheHas;\r\n isCommon = false;\r\n values = new SetCache(values);\r\n }\r\n outer:\r\n while (++index < length) {\r\n var value = array[index],\r\n computed = iteratee == null ? value : iteratee(value);\r\n\r\n value = (comparator || value !== 0) ? value : 0;\r\n if (isCommon && computed === computed) {\r\n var valuesIndex = valuesLength;\r\n while (valuesIndex--) {\r\n if (values[valuesIndex] === computed) {\r\n continue outer;\r\n }\r\n }\r\n result.push(value);\r\n }\r\n else if (!includes(values, computed, comparator)) {\r\n result.push(value);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.forEach` without support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @returns {Array|Object} Returns `collection`.\r\n */\r\n var baseEach = createBaseEach(baseForOwn);\r\n\r\n /**\r\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @returns {Array|Object} Returns `collection`.\r\n */\r\n var baseEachRight = createBaseEach(baseForOwnRight, true);\r\n\r\n /**\r\n * The base implementation of `_.every` without support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} predicate The function invoked per iteration.\r\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\r\n * else `false`\r\n */\r\n function baseEvery(collection, predicate) {\r\n var result = true;\r\n baseEach(collection, function(value, index, collection) {\r\n result = !!predicate(value, index, collection);\r\n return result;\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of methods like `_.max` and `_.min` which accepts a\r\n * `comparator` to determine the extremum value.\r\n *\r\n * @private\r\n * @param {Array} array The array to iterate over.\r\n * @param {Function} iteratee The iteratee invoked per iteration.\r\n * @param {Function} comparator The comparator used to compare values.\r\n * @returns {*} Returns the extremum value.\r\n */\r\n function baseExtremum(array, iteratee, comparator) {\r\n var index = -1,\r\n length = array.length;\r\n\r\n while (++index < length) {\r\n var value = array[index],\r\n current = iteratee(value);\r\n\r\n if (current != null && (computed === undefined\r\n ? (current === current && !isSymbol(current))\r\n : comparator(current, computed)\r\n )) {\r\n var computed = current,\r\n result = value;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.fill` without an iteratee call guard.\r\n *\r\n * @private\r\n * @param {Array} array The array to fill.\r\n * @param {*} value The value to fill `array` with.\r\n * @param {number} [start=0] The start position.\r\n * @param {number} [end=array.length] The end position.\r\n * @returns {Array} Returns `array`.\r\n */\r\n function baseFill(array, value, start, end) {\r\n var length = array.length;\r\n\r\n start = toInteger(start);\r\n if (start < 0) {\r\n start = -start > length ? 0 : (length + start);\r\n }\r\n end = (end === undefined || end > length) ? length : toInteger(end);\r\n if (end < 0) {\r\n end += length;\r\n }\r\n end = start > end ? 0 : toLength(end);\r\n while (start < end) {\r\n array[start++] = value;\r\n }\r\n return array;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.filter` without support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} predicate The function invoked per iteration.\r\n * @returns {Array} Returns the new filtered array.\r\n */\r\n function baseFilter(collection, predicate) {\r\n var result = [];\r\n baseEach(collection, function(value, index, collection) {\r\n if (predicate(value, index, collection)) {\r\n result.push(value);\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.flatten` with support for restricting flattening.\r\n *\r\n * @private\r\n * @param {Array} array The array to flatten.\r\n * @param {number} depth The maximum recursion depth.\r\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\r\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\r\n * @param {Array} [result=[]] The initial result value.\r\n * @returns {Array} Returns the new flattened array.\r\n */\r\n function baseFlatten(array, depth, predicate, isStrict, result) {\r\n var index = -1,\r\n length = array.length;\r\n\r\n predicate || (predicate = isFlattenable);\r\n result || (result = []);\r\n\r\n while (++index < length) {\r\n var value = array[index];\r\n if (depth > 0 && predicate(value)) {\r\n if (depth > 1) {\r\n // Recursively flatten arrays (susceptible to call stack limits).\r\n baseFlatten(value, depth - 1, predicate, isStrict, result);\r\n } else {\r\n arrayPush(result, value);\r\n }\r\n } else if (!isStrict) {\r\n result[result.length] = value;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `baseForOwn` which iterates over `object`\r\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\r\n * Iteratee functions may exit iteration early by explicitly returning `false`.\r\n *\r\n * @private\r\n * @param {Object} object The object to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @param {Function} keysFunc The function to get the keys of `object`.\r\n * @returns {Object} Returns `object`.\r\n */\r\n var baseFor = createBaseFor();\r\n\r\n /**\r\n * This function is like `baseFor` except that it iterates over properties\r\n * in the opposite order.\r\n *\r\n * @private\r\n * @param {Object} object The object to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @param {Function} keysFunc The function to get the keys of `object`.\r\n * @returns {Object} Returns `object`.\r\n */\r\n var baseForRight = createBaseFor(true);\r\n\r\n /**\r\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Object} object The object to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @returns {Object} Returns `object`.\r\n */\r\n function baseForOwn(object, iteratee) {\r\n return object && baseFor(object, iteratee, keys);\r\n }\r\n\r\n /**\r\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Object} object The object to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @returns {Object} Returns `object`.\r\n */\r\n function baseForOwnRight(object, iteratee) {\r\n return object && baseForRight(object, iteratee, keys);\r\n }\r\n\r\n /**\r\n * The base implementation of `_.functions` which creates an array of\r\n * `object` function property names filtered from `props`.\r\n *\r\n * @private\r\n * @param {Object} object The object to inspect.\r\n * @param {Array} props The property names to filter.\r\n * @returns {Array} Returns the function names.\r\n */\r\n function baseFunctions(object, props) {\r\n return arrayFilter(props, function(key) {\r\n return isFunction(object[key]);\r\n });\r\n }\r\n\r\n /**\r\n * The base implementation of `_.get` without support for default values.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @param {Array|string} path The path of the property to get.\r\n * @returns {*} Returns the resolved value.\r\n */\r\n function baseGet(object, path) {\r\n path = castPath(path, object);\r\n\r\n var index = 0,\r\n length = path.length;\r\n\r\n while (object != null && index < length) {\r\n object = object[toKey(path[index++])];\r\n }\r\n return (index && index == length) ? object : undefined;\r\n }\r\n\r\n /**\r\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\r\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\r\n * symbols of `object`.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @param {Function} keysFunc The function to get the keys of `object`.\r\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\r\n * @returns {Array} Returns the array of property names and symbols.\r\n */\r\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\r\n var result = keysFunc(object);\r\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\r\n }\r\n\r\n /**\r\n * The base implementation of `getTag` without fallbacks for buggy environments.\r\n *\r\n * @private\r\n * @param {*} value The value to query.\r\n * @returns {string} Returns the `toStringTag`.\r\n */\r\n function baseGetTag(value) {\r\n if (value == null) {\r\n return value === undefined ? undefinedTag : nullTag;\r\n }\r\n return (symToStringTag && symToStringTag in Object(value))\r\n ? getRawTag(value)\r\n : objectToString(value);\r\n }\r\n\r\n /**\r\n * The base implementation of `_.gt` which doesn't coerce arguments.\r\n *\r\n * @private\r\n * @param {*} value The value to compare.\r\n * @param {*} other The other value to compare.\r\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\r\n * else `false`.\r\n */\r\n function baseGt(value, other) {\r\n return value > other;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.has` without support for deep paths.\r\n *\r\n * @private\r\n * @param {Object} [object] The object to query.\r\n * @param {Array|string} key The key to check.\r\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\r\n */\r\n function baseHas(object, key) {\r\n return object != null && hasOwnProperty.call(object, key);\r\n }\r\n\r\n /**\r\n * The base implementation of `_.hasIn` without support for deep paths.\r\n *\r\n * @private\r\n * @param {Object} [object] The object to query.\r\n * @param {Array|string} key The key to check.\r\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\r\n */\r\n function baseHasIn(object, key) {\r\n return object != null && key in Object(object);\r\n }\r\n\r\n /**\r\n * The base implementation of `_.inRange` which doesn't coerce arguments.\r\n *\r\n * @private\r\n * @param {number} number The number to check.\r\n * @param {number} start The start of the range.\r\n * @param {number} end The end of the range.\r\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\r\n */\r\n function baseInRange(number, start, end) {\r\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\r\n }\r\n\r\n /**\r\n * The base implementation of methods like `_.intersection`, without support\r\n * for iteratee shorthands, that accepts an array of arrays to inspect.\r\n *\r\n * @private\r\n * @param {Array} arrays The arrays to inspect.\r\n * @param {Function} [iteratee] The iteratee invoked per element.\r\n * @param {Function} [comparator] The comparator invoked per element.\r\n * @returns {Array} Returns the new array of shared values.\r\n */\r\n function baseIntersection(arrays, iteratee, comparator) {\r\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\r\n length = arrays[0].length,\r\n othLength = arrays.length,\r\n othIndex = othLength,\r\n caches = Array(othLength),\r\n maxLength = Infinity,\r\n result = [];\r\n\r\n while (othIndex--) {\r\n var array = arrays[othIndex];\r\n if (othIndex && iteratee) {\r\n array = arrayMap(array, baseUnary(iteratee));\r\n }\r\n maxLength = nativeMin(array.length, maxLength);\r\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\r\n ? new SetCache(othIndex && array)\r\n : undefined;\r\n }\r\n array = arrays[0];\r\n\r\n var index = -1,\r\n seen = caches[0];\r\n\r\n outer:\r\n while (++index < length && result.length < maxLength) {\r\n var value = array[index],\r\n computed = iteratee ? iteratee(value) : value;\r\n\r\n value = (comparator || value !== 0) ? value : 0;\r\n if (!(seen\r\n ? cacheHas(seen, computed)\r\n : includes(result, computed, comparator)\r\n )) {\r\n othIndex = othLength;\r\n while (--othIndex) {\r\n var cache = caches[othIndex];\r\n if (!(cache\r\n ? cacheHas(cache, computed)\r\n : includes(arrays[othIndex], computed, comparator))\r\n ) {\r\n continue outer;\r\n }\r\n }\r\n if (seen) {\r\n seen.push(computed);\r\n }\r\n result.push(value);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.invert` and `_.invertBy` which inverts\r\n * `object` with values transformed by `iteratee` and set by `setter`.\r\n *\r\n * @private\r\n * @param {Object} object The object to iterate over.\r\n * @param {Function} setter The function to set `accumulator` values.\r\n * @param {Function} iteratee The iteratee to transform values.\r\n * @param {Object} accumulator The initial inverted object.\r\n * @returns {Function} Returns `accumulator`.\r\n */\r\n function baseInverter(object, setter, iteratee, accumulator) {\r\n baseForOwn(object, function(value, key, object) {\r\n setter(accumulator, iteratee(value), key, object);\r\n });\r\n return accumulator;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.invoke` without support for individual\r\n * method arguments.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @param {Array|string} path The path of the method to invoke.\r\n * @param {Array} args The arguments to invoke the method with.\r\n * @returns {*} Returns the result of the invoked method.\r\n */\r\n function baseInvoke(object, path, args) {\r\n path = castPath(path, object);\r\n object = parent(object, path);\r\n var func = object == null ? object : object[toKey(last(path))];\r\n return func == null ? undefined : apply(func, object, args);\r\n }\r\n\r\n /**\r\n * The base implementation of `_.isArguments`.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\r\n */\r\n function baseIsArguments(value) {\r\n return isObjectLike(value) && baseGetTag(value) == argsTag;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\r\n */\r\n function baseIsArrayBuffer(value) {\r\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.isDate` without Node.js optimizations.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\r\n */\r\n function baseIsDate(value) {\r\n return isObjectLike(value) && baseGetTag(value) == dateTag;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.isEqual` which supports partial comparisons\r\n * and tracks traversed objects.\r\n *\r\n * @private\r\n * @param {*} value The value to compare.\r\n * @param {*} other The other value to compare.\r\n * @param {boolean} bitmask The bitmask flags.\r\n * 1 - Unordered comparison\r\n * 2 - Partial comparison\r\n * @param {Function} [customizer] The function to customize comparisons.\r\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\r\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\r\n */\r\n function baseIsEqual(value, other, bitmask, customizer, stack) {\r\n if (value === other) {\r\n return true;\r\n }\r\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\r\n return value !== value && other !== other;\r\n }\r\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\r\n }\r\n\r\n /**\r\n * A specialized version of `baseIsEqual` for arrays and objects which performs\r\n * deep comparisons and tracks traversed objects enabling objects with circular\r\n * references to be compared.\r\n *\r\n * @private\r\n * @param {Object} object The object to compare.\r\n * @param {Object} other The other object to compare.\r\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\r\n * @param {Function} customizer The function to customize comparisons.\r\n * @param {Function} equalFunc The function to determine equivalents of values.\r\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\r\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\r\n */\r\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\r\n var objIsArr = isArray(object),\r\n othIsArr = isArray(other),\r\n objTag = objIsArr ? arrayTag : getTag(object),\r\n othTag = othIsArr ? arrayTag : getTag(other);\r\n\r\n objTag = objTag == argsTag ? objectTag : objTag;\r\n othTag = othTag == argsTag ? objectTag : othTag;\r\n\r\n var objIsObj = objTag == objectTag,\r\n othIsObj = othTag == objectTag,\r\n isSameTag = objTag == othTag;\r\n\r\n if (isSameTag && isBuffer(object)) {\r\n if (!isBuffer(other)) {\r\n return false;\r\n }\r\n objIsArr = true;\r\n objIsObj = false;\r\n }\r\n if (isSameTag && !objIsObj) {\r\n stack || (stack = new Stack);\r\n return (objIsArr || isTypedArray(object))\r\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\r\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\r\n }\r\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\r\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\r\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\r\n\r\n if (objIsWrapped || othIsWrapped) {\r\n var objUnwrapped = objIsWrapped ? object.value() : object,\r\n othUnwrapped = othIsWrapped ? other.value() : other;\r\n\r\n stack || (stack = new Stack);\r\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\r\n }\r\n }\r\n if (!isSameTag) {\r\n return false;\r\n }\r\n stack || (stack = new Stack);\r\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\r\n }\r\n\r\n /**\r\n * The base implementation of `_.isMap` without Node.js optimizations.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\r\n */\r\n function baseIsMap(value) {\r\n return isObjectLike(value) && getTag(value) == mapTag;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Object} object The object to inspect.\r\n * @param {Object} source The object of property values to match.\r\n * @param {Array} matchData The property names, values, and compare flags to match.\r\n * @param {Function} [customizer] The function to customize comparisons.\r\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\r\n */\r\n function baseIsMatch(object, source, matchData, customizer) {\r\n var index = matchData.length,\r\n length = index,\r\n noCustomizer = !customizer;\r\n\r\n if (object == null) {\r\n return !length;\r\n }\r\n object = Object(object);\r\n while (index--) {\r\n var data = matchData[index];\r\n if ((noCustomizer && data[2])\r\n ? data[1] !== object[data[0]]\r\n : !(data[0] in object)\r\n ) {\r\n return false;\r\n }\r\n }\r\n while (++index < length) {\r\n data = matchData[index];\r\n var key = data[0],\r\n objValue = object[key],\r\n srcValue = data[1];\r\n\r\n if (noCustomizer && data[2]) {\r\n if (objValue === undefined && !(key in object)) {\r\n return false;\r\n }\r\n } else {\r\n var stack = new Stack;\r\n if (customizer) {\r\n var result = customizer(objValue, srcValue, key, object, source, stack);\r\n }\r\n if (!(result === undefined\r\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\r\n : result\r\n )) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.isNative` without bad shim checks.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a native function,\r\n * else `false`.\r\n */\r\n function baseIsNative(value) {\r\n if (!isObject(value) || isMasked(value)) {\r\n return false;\r\n }\r\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\r\n return pattern.test(toSource(value));\r\n }\r\n\r\n /**\r\n * The base implementation of `_.isRegExp` without Node.js optimizations.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\r\n */\r\n function baseIsRegExp(value) {\r\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.isSet` without Node.js optimizations.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\r\n */\r\n function baseIsSet(value) {\r\n return isObjectLike(value) && getTag(value) == setTag;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\r\n */\r\n function baseIsTypedArray(value) {\r\n return isObjectLike(value) &&\r\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\r\n }\r\n\r\n /**\r\n * The base implementation of `_.iteratee`.\r\n *\r\n * @private\r\n * @param {*} [value=_.identity] The value to convert to an iteratee.\r\n * @returns {Function} Returns the iteratee.\r\n */\r\n function baseIteratee(value) {\r\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\r\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\r\n if (typeof value == 'function') {\r\n return value;\r\n }\r\n if (value == null) {\r\n return identity;\r\n }\r\n if (typeof value == 'object') {\r\n return isArray(value)\r\n ? baseMatchesProperty(value[0], value[1])\r\n : baseMatches(value);\r\n }\r\n return property(value);\r\n }\r\n\r\n /**\r\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @returns {Array} Returns the array of property names.\r\n */\r\n function baseKeys(object) {\r\n if (!isPrototype(object)) {\r\n return nativeKeys(object);\r\n }\r\n var result = [];\r\n for (var key in Object(object)) {\r\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\r\n result.push(key);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @returns {Array} Returns the array of property names.\r\n */\r\n function baseKeysIn(object) {\r\n if (!isObject(object)) {\r\n return nativeKeysIn(object);\r\n }\r\n var isProto = isPrototype(object),\r\n result = [];\r\n\r\n for (var key in object) {\r\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\r\n result.push(key);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.lt` which doesn't coerce arguments.\r\n *\r\n * @private\r\n * @param {*} value The value to compare.\r\n * @param {*} other The other value to compare.\r\n * @returns {boolean} Returns `true` if `value` is less than `other`,\r\n * else `false`.\r\n */\r\n function baseLt(value, other) {\r\n return value < other;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.map` without support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @returns {Array} Returns the new mapped array.\r\n */\r\n function baseMap(collection, iteratee) {\r\n var index = -1,\r\n result = isArrayLike(collection) ? Array(collection.length) : [];\r\n\r\n baseEach(collection, function(value, key, collection) {\r\n result[++index] = iteratee(value, key, collection);\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.matches` which doesn't clone `source`.\r\n *\r\n * @private\r\n * @param {Object} source The object of property values to match.\r\n * @returns {Function} Returns the new spec function.\r\n */\r\n function baseMatches(source) {\r\n var matchData = getMatchData(source);\r\n if (matchData.length == 1 && matchData[0][2]) {\r\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\r\n }\r\n return function(object) {\r\n return object === source || baseIsMatch(object, source, matchData);\r\n };\r\n }\r\n\r\n /**\r\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\r\n *\r\n * @private\r\n * @param {string} path The path of the property to get.\r\n * @param {*} srcValue The value to match.\r\n * @returns {Function} Returns the new spec function.\r\n */\r\n function baseMatchesProperty(path, srcValue) {\r\n if (isKey(path) && isStrictComparable(srcValue)) {\r\n return matchesStrictComparable(toKey(path), srcValue);\r\n }\r\n return function(object) {\r\n var objValue = get(object, path);\r\n return (objValue === undefined && objValue === srcValue)\r\n ? hasIn(object, path)\r\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\r\n };\r\n }\r\n\r\n /**\r\n * The base implementation of `_.merge` without support for multiple sources.\r\n *\r\n * @private\r\n * @param {Object} object The destination object.\r\n * @param {Object} source The source object.\r\n * @param {number} srcIndex The index of `source`.\r\n * @param {Function} [customizer] The function to customize merged values.\r\n * @param {Object} [stack] Tracks traversed source values and their merged\r\n * counterparts.\r\n */\r\n function baseMerge(object, source, srcIndex, customizer, stack) {\r\n if (object === source) {\r\n return;\r\n }\r\n baseFor(source, function(srcValue, key) {\r\n stack || (stack = new Stack);\r\n if (isObject(srcValue)) {\r\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\r\n }\r\n else {\r\n var newValue = customizer\r\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\r\n : undefined;\r\n\r\n if (newValue === undefined) {\r\n newValue = srcValue;\r\n }\r\n assignMergeValue(object, key, newValue);\r\n }\r\n }, keysIn);\r\n }\r\n\r\n /**\r\n * A specialized version of `baseMerge` for arrays and objects which performs\r\n * deep merges and tracks traversed objects enabling objects with circular\r\n * references to be merged.\r\n *\r\n * @private\r\n * @param {Object} object The destination object.\r\n * @param {Object} source The source object.\r\n * @param {string} key The key of the value to merge.\r\n * @param {number} srcIndex The index of `source`.\r\n * @param {Function} mergeFunc The function to merge values.\r\n * @param {Function} [customizer] The function to customize assigned values.\r\n * @param {Object} [stack] Tracks traversed source values and their merged\r\n * counterparts.\r\n */\r\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\r\n var objValue = safeGet(object, key),\r\n srcValue = safeGet(source, key),\r\n stacked = stack.get(srcValue);\r\n\r\n if (stacked) {\r\n assignMergeValue(object, key, stacked);\r\n return;\r\n }\r\n var newValue = customizer\r\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\r\n : undefined;\r\n\r\n var isCommon = newValue === undefined;\r\n\r\n if (isCommon) {\r\n var isArr = isArray(srcValue),\r\n isBuff = !isArr && isBuffer(srcValue),\r\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\r\n\r\n newValue = srcValue;\r\n if (isArr || isBuff || isTyped) {\r\n if (isArray(objValue)) {\r\n newValue = objValue;\r\n }\r\n else if (isArrayLikeObject(objValue)) {\r\n newValue = copyArray(objValue);\r\n }\r\n else if (isBuff) {\r\n isCommon = false;\r\n newValue = cloneBuffer(srcValue, true);\r\n }\r\n else if (isTyped) {\r\n isCommon = false;\r\n newValue = cloneTypedArray(srcValue, true);\r\n }\r\n else {\r\n newValue = [];\r\n }\r\n }\r\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\r\n newValue = objValue;\r\n if (isArguments(objValue)) {\r\n newValue = toPlainObject(objValue);\r\n }\r\n else if (!isObject(objValue) || isFunction(objValue)) {\r\n newValue = initCloneObject(srcValue);\r\n }\r\n }\r\n else {\r\n isCommon = false;\r\n }\r\n }\r\n if (isCommon) {\r\n // Recursively merge objects and arrays (susceptible to call stack limits).\r\n stack.set(srcValue, newValue);\r\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\r\n stack['delete'](srcValue);\r\n }\r\n assignMergeValue(object, key, newValue);\r\n }\r\n\r\n /**\r\n * The base implementation of `_.nth` which doesn't coerce arguments.\r\n *\r\n * @private\r\n * @param {Array} array The array to query.\r\n * @param {number} n The index of the element to return.\r\n * @returns {*} Returns the nth element of `array`.\r\n */\r\n function baseNth(array, n) {\r\n var length = array.length;\r\n if (!length) {\r\n return;\r\n }\r\n n += n < 0 ? length : 0;\r\n return isIndex(n, length) ? array[n] : undefined;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.orderBy` without param guards.\r\n *\r\n * @private\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\r\n * @param {string[]} orders The sort orders of `iteratees`.\r\n * @returns {Array} Returns the new sorted array.\r\n */\r\n function baseOrderBy(collection, iteratees, orders) {\r\n if (iteratees.length) {\r\n iteratees = arrayMap(iteratees, function(iteratee) {\r\n if (isArray(iteratee)) {\r\n return function(value) {\r\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\r\n }\r\n }\r\n return iteratee;\r\n });\r\n } else {\r\n iteratees = [identity];\r\n }\r\n\r\n var index = -1;\r\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\r\n\r\n var result = baseMap(collection, function(value, key, collection) {\r\n var criteria = arrayMap(iteratees, function(iteratee) {\r\n return iteratee(value);\r\n });\r\n return { 'criteria': criteria, 'index': ++index, 'value': value };\r\n });\r\n\r\n return baseSortBy(result, function(object, other) {\r\n return compareMultiple(object, other, orders);\r\n });\r\n }\r\n\r\n /**\r\n * The base implementation of `_.pick` without support for individual\r\n * property identifiers.\r\n *\r\n * @private\r\n * @param {Object} object The source object.\r\n * @param {string[]} paths The property paths to pick.\r\n * @returns {Object} Returns the new object.\r\n */\r\n function basePick(object, paths) {\r\n return basePickBy(object, paths, function(value, path) {\r\n return hasIn(object, path);\r\n });\r\n }\r\n\r\n /**\r\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Object} object The source object.\r\n * @param {string[]} paths The property paths to pick.\r\n * @param {Function} predicate The function invoked per property.\r\n * @returns {Object} Returns the new object.\r\n */\r\n function basePickBy(object, paths, predicate) {\r\n var index = -1,\r\n length = paths.length,\r\n result = {};\r\n\r\n while (++index < length) {\r\n var path = paths[index],\r\n value = baseGet(object, path);\r\n\r\n if (predicate(value, path)) {\r\n baseSet(result, castPath(path, object), value);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * A specialized version of `baseProperty` which supports deep paths.\r\n *\r\n * @private\r\n * @param {Array|string} path The path of the property to get.\r\n * @returns {Function} Returns the new accessor function.\r\n */\r\n function basePropertyDeep(path) {\r\n return function(object) {\r\n return baseGet(object, path);\r\n };\r\n }\r\n\r\n /**\r\n * The base implementation of `_.pullAllBy` without support for iteratee\r\n * shorthands.\r\n *\r\n * @private\r\n * @param {Array} array The array to modify.\r\n * @param {Array} values The values to remove.\r\n * @param {Function} [iteratee] The iteratee invoked per element.\r\n * @param {Function} [comparator] The comparator invoked per element.\r\n * @returns {Array} Returns `array`.\r\n */\r\n function basePullAll(array, values, iteratee, comparator) {\r\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\r\n index = -1,\r\n length = values.length,\r\n seen = array;\r\n\r\n if (array === values) {\r\n values = copyArray(values);\r\n }\r\n if (iteratee) {\r\n seen = arrayMap(array, baseUnary(iteratee));\r\n }\r\n while (++index < length) {\r\n var fromIndex = 0,\r\n value = values[index],\r\n computed = iteratee ? iteratee(value) : value;\r\n\r\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\r\n if (seen !== array) {\r\n splice.call(seen, fromIndex, 1);\r\n }\r\n splice.call(array, fromIndex, 1);\r\n }\r\n }\r\n return array;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.pullAt` without support for individual\r\n * indexes or capturing the removed elements.\r\n *\r\n * @private\r\n * @param {Array} array The array to modify.\r\n * @param {number[]} indexes The indexes of elements to remove.\r\n * @returns {Array} Returns `array`.\r\n */\r\n function basePullAt(array, indexes) {\r\n var length = array ? indexes.length : 0,\r\n lastIndex = length - 1;\r\n\r\n while (length--) {\r\n var index = indexes[length];\r\n if (length == lastIndex || index !== previous) {\r\n var previous = index;\r\n if (isIndex(index)) {\r\n splice.call(array, index, 1);\r\n } else {\r\n baseUnset(array, index);\r\n }\r\n }\r\n }\r\n return array;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.random` without support for returning\r\n * floating-point numbers.\r\n *\r\n * @private\r\n * @param {number} lower The lower bound.\r\n * @param {number} upper The upper bound.\r\n * @returns {number} Returns the random number.\r\n */\r\n function baseRandom(lower, upper) {\r\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\r\n }\r\n\r\n /**\r\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\r\n * coerce arguments.\r\n *\r\n * @private\r\n * @param {number} start The start of the range.\r\n * @param {number} end The end of the range.\r\n * @param {number} step The value to increment or decrement by.\r\n * @param {boolean} [fromRight] Specify iterating from right to left.\r\n * @returns {Array} Returns the range of numbers.\r\n */\r\n function baseRange(start, end, step, fromRight) {\r\n var index = -1,\r\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\r\n result = Array(length);\r\n\r\n while (length--) {\r\n result[fromRight ? length : ++index] = start;\r\n start += step;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.repeat` which doesn't coerce arguments.\r\n *\r\n * @private\r\n * @param {string} string The string to repeat.\r\n * @param {number} n The number of times to repeat the string.\r\n * @returns {string} Returns the repeated string.\r\n */\r\n function baseRepeat(string, n) {\r\n var result = '';\r\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\r\n return result;\r\n }\r\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\r\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\r\n do {\r\n if (n % 2) {\r\n result += string;\r\n }\r\n n = nativeFloor(n / 2);\r\n if (n) {\r\n string += string;\r\n }\r\n } while (n);\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\r\n *\r\n * @private\r\n * @param {Function} func The function to apply a rest parameter to.\r\n * @param {number} [start=func.length-1] The start position of the rest parameter.\r\n * @returns {Function} Returns the new function.\r\n */\r\n function baseRest(func, start) {\r\n return setToString(overRest(func, start, identity), func + '');\r\n }\r\n\r\n /**\r\n * The base implementation of `_.sample`.\r\n *\r\n * @private\r\n * @param {Array|Object} collection The collection to sample.\r\n * @returns {*} Returns the random element.\r\n */\r\n function baseSample(collection) {\r\n return arraySample(values(collection));\r\n }\r\n\r\n /**\r\n * The base implementation of `_.sampleSize` without param guards.\r\n *\r\n * @private\r\n * @param {Array|Object} collection The collection to sample.\r\n * @param {number} n The number of elements to sample.\r\n * @returns {Array} Returns the random elements.\r\n */\r\n function baseSampleSize(collection, n) {\r\n var array = values(collection);\r\n return shuffleSelf(array, baseClamp(n, 0, array.length));\r\n }\r\n\r\n /**\r\n * The base implementation of `_.set`.\r\n *\r\n * @private\r\n * @param {Object} object The object to modify.\r\n * @param {Array|string} path The path of the property to set.\r\n * @param {*} value The value to set.\r\n * @param {Function} [customizer] The function to customize path creation.\r\n * @returns {Object} Returns `object`.\r\n */\r\n function baseSet(object, path, value, customizer) {\r\n if (!isObject(object)) {\r\n return object;\r\n }\r\n path = castPath(path, object);\r\n\r\n var index = -1,\r\n length = path.length,\r\n lastIndex = length - 1,\r\n nested = object;\r\n\r\n while (nested != null && ++index < length) {\r\n var key = toKey(path[index]),\r\n newValue = value;\r\n\r\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\r\n return object;\r\n }\r\n\r\n if (index != lastIndex) {\r\n var objValue = nested[key];\r\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\r\n if (newValue === undefined) {\r\n newValue = isObject(objValue)\r\n ? objValue\r\n : (isIndex(path[index + 1]) ? [] : {});\r\n }\r\n }\r\n assignValue(nested, key, newValue);\r\n nested = nested[key];\r\n }\r\n return object;\r\n }\r\n\r\n /**\r\n * The base implementation of `setData` without support for hot loop shorting.\r\n *\r\n * @private\r\n * @param {Function} func The function to associate metadata with.\r\n * @param {*} data The metadata.\r\n * @returns {Function} Returns `func`.\r\n */\r\n var baseSetData = !metaMap ? identity : function(func, data) {\r\n metaMap.set(func, data);\r\n return func;\r\n };\r\n\r\n /**\r\n * The base implementation of `setToString` without support for hot loop shorting.\r\n *\r\n * @private\r\n * @param {Function} func The function to modify.\r\n * @param {Function} string The `toString` result.\r\n * @returns {Function} Returns `func`.\r\n */\r\n var baseSetToString = !defineProperty ? identity : function(func, string) {\r\n return defineProperty(func, 'toString', {\r\n 'configurable': true,\r\n 'enumerable': false,\r\n 'value': constant(string),\r\n 'writable': true\r\n });\r\n };\r\n\r\n /**\r\n * The base implementation of `_.shuffle`.\r\n *\r\n * @private\r\n * @param {Array|Object} collection The collection to shuffle.\r\n * @returns {Array} Returns the new shuffled array.\r\n */\r\n function baseShuffle(collection) {\r\n return shuffleSelf(values(collection));\r\n }\r\n\r\n /**\r\n * The base implementation of `_.slice` without an iteratee call guard.\r\n *\r\n * @private\r\n * @param {Array} array The array to slice.\r\n * @param {number} [start=0] The start position.\r\n * @param {number} [end=array.length] The end position.\r\n * @returns {Array} Returns the slice of `array`.\r\n */\r\n function baseSlice(array, start, end) {\r\n var index = -1,\r\n length = array.length;\r\n\r\n if (start < 0) {\r\n start = -start > length ? 0 : (length + start);\r\n }\r\n end = end > length ? length : end;\r\n if (end < 0) {\r\n end += length;\r\n }\r\n length = start > end ? 0 : ((end - start) >>> 0);\r\n start >>>= 0;\r\n\r\n var result = Array(length);\r\n while (++index < length) {\r\n result[index] = array[index + start];\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.some` without support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} predicate The function invoked per iteration.\r\n * @returns {boolean} Returns `true` if any element passes the predicate check,\r\n * else `false`.\r\n */\r\n function baseSome(collection, predicate) {\r\n var result;\r\n\r\n baseEach(collection, function(value, index, collection) {\r\n result = predicate(value, index, collection);\r\n return !result;\r\n });\r\n return !!result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\r\n * performs a binary search of `array` to determine the index at which `value`\r\n * should be inserted into `array` in order to maintain its sort order.\r\n *\r\n * @private\r\n * @param {Array} array The sorted array to inspect.\r\n * @param {*} value The value to evaluate.\r\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\r\n * @returns {number} Returns the index at which `value` should be inserted\r\n * into `array`.\r\n */\r\n function baseSortedIndex(array, value, retHighest) {\r\n var low = 0,\r\n high = array == null ? low : array.length;\r\n\r\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\r\n while (low < high) {\r\n var mid = (low + high) >>> 1,\r\n computed = array[mid];\r\n\r\n if (computed !== null && !isSymbol(computed) &&\r\n (retHighest ? (computed <= value) : (computed < value))) {\r\n low = mid + 1;\r\n } else {\r\n high = mid;\r\n }\r\n }\r\n return high;\r\n }\r\n return baseSortedIndexBy(array, value, identity, retHighest);\r\n }\r\n\r\n /**\r\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\r\n * which invokes `iteratee` for `value` and each element of `array` to compute\r\n * their sort ranking. The iteratee is invoked with one argument; (value).\r\n *\r\n * @private\r\n * @param {Array} array The sorted array to inspect.\r\n * @param {*} value The value to evaluate.\r\n * @param {Function} iteratee The iteratee invoked per element.\r\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\r\n * @returns {number} Returns the index at which `value` should be inserted\r\n * into `array`.\r\n */\r\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\r\n var low = 0,\r\n high = array == null ? 0 : array.length;\r\n if (high === 0) {\r\n return 0;\r\n }\r\n\r\n value = iteratee(value);\r\n var valIsNaN = value !== value,\r\n valIsNull = value === null,\r\n valIsSymbol = isSymbol(value),\r\n valIsUndefined = value === undefined;\r\n\r\n while (low < high) {\r\n var mid = nativeFloor((low + high) / 2),\r\n computed = iteratee(array[mid]),\r\n othIsDefined = computed !== undefined,\r\n othIsNull = computed === null,\r\n othIsReflexive = computed === computed,\r\n othIsSymbol = isSymbol(computed);\r\n\r\n if (valIsNaN) {\r\n var setLow = retHighest || othIsReflexive;\r\n } else if (valIsUndefined) {\r\n setLow = othIsReflexive && (retHighest || othIsDefined);\r\n } else if (valIsNull) {\r\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\r\n } else if (valIsSymbol) {\r\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\r\n } else if (othIsNull || othIsSymbol) {\r\n setLow = false;\r\n } else {\r\n setLow = retHighest ? (computed <= value) : (computed < value);\r\n }\r\n if (setLow) {\r\n low = mid + 1;\r\n } else {\r\n high = mid;\r\n }\r\n }\r\n return nativeMin(high, MAX_ARRAY_INDEX);\r\n }\r\n\r\n /**\r\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\r\n * support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array} array The array to inspect.\r\n * @param {Function} [iteratee] The iteratee invoked per element.\r\n * @returns {Array} Returns the new duplicate free array.\r\n */\r\n function baseSortedUniq(array, iteratee) {\r\n var index = -1,\r\n length = array.length,\r\n resIndex = 0,\r\n result = [];\r\n\r\n while (++index < length) {\r\n var value = array[index],\r\n computed = iteratee ? iteratee(value) : value;\r\n\r\n if (!index || !eq(computed, seen)) {\r\n var seen = computed;\r\n result[resIndex++] = value === 0 ? 0 : value;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.toNumber` which doesn't ensure correct\r\n * conversions of binary, hexadecimal, or octal string values.\r\n *\r\n * @private\r\n * @param {*} value The value to process.\r\n * @returns {number} Returns the number.\r\n */\r\n function baseToNumber(value) {\r\n if (typeof value == 'number') {\r\n return value;\r\n }\r\n if (isSymbol(value)) {\r\n return NAN;\r\n }\r\n return +value;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.toString` which doesn't convert nullish\r\n * values to empty strings.\r\n *\r\n * @private\r\n * @param {*} value The value to process.\r\n * @returns {string} Returns the string.\r\n */\r\n function baseToString(value) {\r\n // Exit early for strings to avoid a performance hit in some environments.\r\n if (typeof value == 'string') {\r\n return value;\r\n }\r\n if (isArray(value)) {\r\n // Recursively convert values (susceptible to call stack limits).\r\n return arrayMap(value, baseToString) + '';\r\n }\r\n if (isSymbol(value)) {\r\n return symbolToString ? symbolToString.call(value) : '';\r\n }\r\n var result = (value + '');\r\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array} array The array to inspect.\r\n * @param {Function} [iteratee] The iteratee invoked per element.\r\n * @param {Function} [comparator] The comparator invoked per element.\r\n * @returns {Array} Returns the new duplicate free array.\r\n */\r\n function baseUniq(array, iteratee, comparator) {\r\n var index = -1,\r\n includes = arrayIncludes,\r\n length = array.length,\r\n isCommon = true,\r\n result = [],\r\n seen = result;\r\n\r\n if (comparator) {\r\n isCommon = false;\r\n includes = arrayIncludesWith;\r\n }\r\n else if (length >= LARGE_ARRAY_SIZE) {\r\n var set = iteratee ? null : createSet(array);\r\n if (set) {\r\n return setToArray(set);\r\n }\r\n isCommon = false;\r\n includes = cacheHas;\r\n seen = new SetCache;\r\n }\r\n else {\r\n seen = iteratee ? [] : result;\r\n }\r\n outer:\r\n while (++index < length) {\r\n var value = array[index],\r\n computed = iteratee ? iteratee(value) : value;\r\n\r\n value = (comparator || value !== 0) ? value : 0;\r\n if (isCommon && computed === computed) {\r\n var seenIndex = seen.length;\r\n while (seenIndex--) {\r\n if (seen[seenIndex] === computed) {\r\n continue outer;\r\n }\r\n }\r\n if (iteratee) {\r\n seen.push(computed);\r\n }\r\n result.push(value);\r\n }\r\n else if (!includes(seen, computed, comparator)) {\r\n if (seen !== result) {\r\n seen.push(computed);\r\n }\r\n result.push(value);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * The base implementation of `_.unset`.\r\n *\r\n * @private\r\n * @param {Object} object The object to modify.\r\n * @param {Array|string} path The property path to unset.\r\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\r\n */\r\n function baseUnset(object, path) {\r\n path = castPath(path, object);\r\n object = parent(object, path);\r\n return object == null || delete object[toKey(last(path))];\r\n }\r\n\r\n /**\r\n * The base implementation of `_.update`.\r\n *\r\n * @private\r\n * @param {Object} object The object to modify.\r\n * @param {Array|string} path The path of the property to update.\r\n * @param {Function} updater The function to produce the updated value.\r\n * @param {Function} [customizer] The function to customize path creation.\r\n * @returns {Object} Returns `object`.\r\n */\r\n function baseUpdate(object, path, updater, customizer) {\r\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\r\n }\r\n\r\n /**\r\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\r\n * without support for iteratee shorthands.\r\n *\r\n * @private\r\n * @param {Array} array The array to query.\r\n * @param {Function} predicate The function invoked per iteration.\r\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\r\n * @param {boolean} [fromRight] Specify iterating from right to left.\r\n * @returns {Array} Returns the slice of `array`.\r\n */\r\n function baseWhile(array, predicate, isDrop, fromRight) {\r\n var length = array.length,\r\n index = fromRight ? length : -1;\r\n\r\n while ((fromRight ? index-- : ++index < length) &&\r\n predicate(array[index], index, array)) {}\r\n\r\n return isDrop\r\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\r\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\r\n }\r\n\r\n /**\r\n * The base implementation of `wrapperValue` which returns the result of\r\n * performing a sequence of actions on the unwrapped `value`, where each\r\n * successive action is supplied the return value of the previous.\r\n *\r\n * @private\r\n * @param {*} value The unwrapped value.\r\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\r\n * @returns {*} Returns the resolved value.\r\n */\r\n function baseWrapperValue(value, actions) {\r\n var result = value;\r\n if (result instanceof LazyWrapper) {\r\n result = result.value();\r\n }\r\n return arrayReduce(actions, function(result, action) {\r\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\r\n }, result);\r\n }\r\n\r\n /**\r\n * The base implementation of methods like `_.xor`, without support for\r\n * iteratee shorthands, that accepts an array of arrays to inspect.\r\n *\r\n * @private\r\n * @param {Array} arrays The arrays to inspect.\r\n * @param {Function} [iteratee] The iteratee invoked per element.\r\n * @param {Function} [comparator] The comparator invoked per element.\r\n * @returns {Array} Returns the new array of values.\r\n */\r\n function baseXor(arrays, iteratee, comparator) {\r\n var length = arrays.length;\r\n if (length < 2) {\r\n return length ? baseUniq(arrays[0]) : [];\r\n }\r\n var index = -1,\r\n result = Array(length);\r\n\r\n while (++index < length) {\r\n var array = arrays[index],\r\n othIndex = -1;\r\n\r\n while (++othIndex < length) {\r\n if (othIndex != index) {\r\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\r\n }\r\n }\r\n }\r\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\r\n }\r\n\r\n /**\r\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\r\n *\r\n * @private\r\n * @param {Array} props The property identifiers.\r\n * @param {Array} values The property values.\r\n * @param {Function} assignFunc The function to assign values.\r\n * @returns {Object} Returns the new object.\r\n */\r\n function baseZipObject(props, values, assignFunc) {\r\n var index = -1,\r\n length = props.length,\r\n valsLength = values.length,\r\n result = {};\r\n\r\n while (++index < length) {\r\n var value = index < valsLength ? values[index] : undefined;\r\n assignFunc(result, props[index], value);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Casts `value` to an empty array if it's not an array like object.\r\n *\r\n * @private\r\n * @param {*} value The value to inspect.\r\n * @returns {Array|Object} Returns the cast array-like object.\r\n */\r\n function castArrayLikeObject(value) {\r\n return isArrayLikeObject(value) ? value : [];\r\n }\r\n\r\n /**\r\n * Casts `value` to `identity` if it's not a function.\r\n *\r\n * @private\r\n * @param {*} value The value to inspect.\r\n * @returns {Function} Returns cast function.\r\n */\r\n function castFunction(value) {\r\n return typeof value == 'function' ? value : identity;\r\n }\r\n\r\n /**\r\n * Casts `value` to a path array if it's not one.\r\n *\r\n * @private\r\n * @param {*} value The value to inspect.\r\n * @param {Object} [object] The object to query keys on.\r\n * @returns {Array} Returns the cast property path array.\r\n */\r\n function castPath(value, object) {\r\n if (isArray(value)) {\r\n return value;\r\n }\r\n return isKey(value, object) ? [value] : stringToPath(toString(value));\r\n }\r\n\r\n /**\r\n * A `baseRest` alias which can be replaced with `identity` by module\r\n * replacement plugins.\r\n *\r\n * @private\r\n * @type {Function}\r\n * @param {Function} func The function to apply a rest parameter to.\r\n * @returns {Function} Returns the new function.\r\n */\r\n var castRest = baseRest;\r\n\r\n /**\r\n * Casts `array` to a slice if it's needed.\r\n *\r\n * @private\r\n * @param {Array} array The array to inspect.\r\n * @param {number} start The start position.\r\n * @param {number} [end=array.length] The end position.\r\n * @returns {Array} Returns the cast slice.\r\n */\r\n function castSlice(array, start, end) {\r\n var length = array.length;\r\n end = end === undefined ? length : end;\r\n return (!start && end >= length) ? array : baseSlice(array, start, end);\r\n }\r\n\r\n /**\r\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\r\n *\r\n * @private\r\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\r\n */\r\n var clearTimeout = ctxClearTimeout || function(id) {\r\n return root.clearTimeout(id);\r\n };\r\n\r\n /**\r\n * Creates a clone of `buffer`.\r\n *\r\n * @private\r\n * @param {Buffer} buffer The buffer to clone.\r\n * @param {boolean} [isDeep] Specify a deep clone.\r\n * @returns {Buffer} Returns the cloned buffer.\r\n */\r\n function cloneBuffer(buffer, isDeep) {\r\n if (isDeep) {\r\n return buffer.slice();\r\n }\r\n var length = buffer.length,\r\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\r\n\r\n buffer.copy(result);\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a clone of `arrayBuffer`.\r\n *\r\n * @private\r\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\r\n * @returns {ArrayBuffer} Returns the cloned array buffer.\r\n */\r\n function cloneArrayBuffer(arrayBuffer) {\r\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\r\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a clone of `dataView`.\r\n *\r\n * @private\r\n * @param {Object} dataView The data view to clone.\r\n * @param {boolean} [isDeep] Specify a deep clone.\r\n * @returns {Object} Returns the cloned data view.\r\n */\r\n function cloneDataView(dataView, isDeep) {\r\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\r\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\r\n }\r\n\r\n /**\r\n * Creates a clone of `regexp`.\r\n *\r\n * @private\r\n * @param {Object} regexp The regexp to clone.\r\n * @returns {Object} Returns the cloned regexp.\r\n */\r\n function cloneRegExp(regexp) {\r\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\r\n result.lastIndex = regexp.lastIndex;\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a clone of the `symbol` object.\r\n *\r\n * @private\r\n * @param {Object} symbol The symbol object to clone.\r\n * @returns {Object} Returns the cloned symbol object.\r\n */\r\n function cloneSymbol(symbol) {\r\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\r\n }\r\n\r\n /**\r\n * Creates a clone of `typedArray`.\r\n *\r\n * @private\r\n * @param {Object} typedArray The typed array to clone.\r\n * @param {boolean} [isDeep] Specify a deep clone.\r\n * @returns {Object} Returns the cloned typed array.\r\n */\r\n function cloneTypedArray(typedArray, isDeep) {\r\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\r\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\r\n }\r\n\r\n /**\r\n * Compares values to sort them in ascending order.\r\n *\r\n * @private\r\n * @param {*} value The value to compare.\r\n * @param {*} other The other value to compare.\r\n * @returns {number} Returns the sort order indicator for `value`.\r\n */\r\n function compareAscending(value, other) {\r\n if (value !== other) {\r\n var valIsDefined = value !== undefined,\r\n valIsNull = value === null,\r\n valIsReflexive = value === value,\r\n valIsSymbol = isSymbol(value);\r\n\r\n var othIsDefined = other !== undefined,\r\n othIsNull = other === null,\r\n othIsReflexive = other === other,\r\n othIsSymbol = isSymbol(other);\r\n\r\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\r\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\r\n (valIsNull && othIsDefined && othIsReflexive) ||\r\n (!valIsDefined && othIsReflexive) ||\r\n !valIsReflexive) {\r\n return 1;\r\n }\r\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\r\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\r\n (othIsNull && valIsDefined && valIsReflexive) ||\r\n (!othIsDefined && valIsReflexive) ||\r\n !othIsReflexive) {\r\n return -1;\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Used by `_.orderBy` to compare multiple properties of a value to another\r\n * and stable sort them.\r\n *\r\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\r\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\r\n * of corresponding values.\r\n *\r\n * @private\r\n * @param {Object} object The object to compare.\r\n * @param {Object} other The other object to compare.\r\n * @param {boolean[]|string[]} orders The order to sort by for each property.\r\n * @returns {number} Returns the sort order indicator for `object`.\r\n */\r\n function compareMultiple(object, other, orders) {\r\n var index = -1,\r\n objCriteria = object.criteria,\r\n othCriteria = other.criteria,\r\n length = objCriteria.length,\r\n ordersLength = orders.length;\r\n\r\n while (++index < length) {\r\n var result = compareAscending(objCriteria[index], othCriteria[index]);\r\n if (result) {\r\n if (index >= ordersLength) {\r\n return result;\r\n }\r\n var order = orders[index];\r\n return result * (order == 'desc' ? -1 : 1);\r\n }\r\n }\r\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\r\n // that causes it, under certain circumstances, to provide the same value for\r\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\r\n // for more details.\r\n //\r\n // This also ensures a stable sort in V8 and other engines.\r\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\r\n return object.index - other.index;\r\n }\r\n\r\n /**\r\n * Creates an array that is the composition of partially applied arguments,\r\n * placeholders, and provided arguments into a single array of arguments.\r\n *\r\n * @private\r\n * @param {Array} args The provided arguments.\r\n * @param {Array} partials The arguments to prepend to those provided.\r\n * @param {Array} holders The `partials` placeholder indexes.\r\n * @params {boolean} [isCurried] Specify composing for a curried function.\r\n * @returns {Array} Returns the new array of composed arguments.\r\n */\r\n function composeArgs(args, partials, holders, isCurried) {\r\n var argsIndex = -1,\r\n argsLength = args.length,\r\n holdersLength = holders.length,\r\n leftIndex = -1,\r\n leftLength = partials.length,\r\n rangeLength = nativeMax(argsLength - holdersLength, 0),\r\n result = Array(leftLength + rangeLength),\r\n isUncurried = !isCurried;\r\n\r\n while (++leftIndex < leftLength) {\r\n result[leftIndex] = partials[leftIndex];\r\n }\r\n while (++argsIndex < holdersLength) {\r\n if (isUncurried || argsIndex < argsLength) {\r\n result[holders[argsIndex]] = args[argsIndex];\r\n }\r\n }\r\n while (rangeLength--) {\r\n result[leftIndex++] = args[argsIndex++];\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * This function is like `composeArgs` except that the arguments composition\r\n * is tailored for `_.partialRight`.\r\n *\r\n * @private\r\n * @param {Array} args The provided arguments.\r\n * @param {Array} partials The arguments to append to those provided.\r\n * @param {Array} holders The `partials` placeholder indexes.\r\n * @params {boolean} [isCurried] Specify composing for a curried function.\r\n * @returns {Array} Returns the new array of composed arguments.\r\n */\r\n function composeArgsRight(args, partials, holders, isCurried) {\r\n var argsIndex = -1,\r\n argsLength = args.length,\r\n holdersIndex = -1,\r\n holdersLength = holders.length,\r\n rightIndex = -1,\r\n rightLength = partials.length,\r\n rangeLength = nativeMax(argsLength - holdersLength, 0),\r\n result = Array(rangeLength + rightLength),\r\n isUncurried = !isCurried;\r\n\r\n while (++argsIndex < rangeLength) {\r\n result[argsIndex] = args[argsIndex];\r\n }\r\n var offset = argsIndex;\r\n while (++rightIndex < rightLength) {\r\n result[offset + rightIndex] = partials[rightIndex];\r\n }\r\n while (++holdersIndex < holdersLength) {\r\n if (isUncurried || argsIndex < argsLength) {\r\n result[offset + holders[holdersIndex]] = args[argsIndex++];\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Copies the values of `source` to `array`.\r\n *\r\n * @private\r\n * @param {Array} source The array to copy values from.\r\n * @param {Array} [array=[]] The array to copy values to.\r\n * @returns {Array} Returns `array`.\r\n */\r\n function copyArray(source, array) {\r\n var index = -1,\r\n length = source.length;\r\n\r\n array || (array = Array(length));\r\n while (++index < length) {\r\n array[index] = source[index];\r\n }\r\n return array;\r\n }\r\n\r\n /**\r\n * Copies properties of `source` to `object`.\r\n *\r\n * @private\r\n * @param {Object} source The object to copy properties from.\r\n * @param {Array} props The property identifiers to copy.\r\n * @param {Object} [object={}] The object to copy properties to.\r\n * @param {Function} [customizer] The function to customize copied values.\r\n * @returns {Object} Returns `object`.\r\n */\r\n function copyObject(source, props, object, customizer) {\r\n var isNew = !object;\r\n object || (object = {});\r\n\r\n var index = -1,\r\n length = props.length;\r\n\r\n while (++index < length) {\r\n var key = props[index];\r\n\r\n var newValue = customizer\r\n ? customizer(object[key], source[key], key, object, source)\r\n : undefined;\r\n\r\n if (newValue === undefined) {\r\n newValue = source[key];\r\n }\r\n if (isNew) {\r\n baseAssignValue(object, key, newValue);\r\n } else {\r\n assignValue(object, key, newValue);\r\n }\r\n }\r\n return object;\r\n }\r\n\r\n /**\r\n * Copies own symbols of `source` to `object`.\r\n *\r\n * @private\r\n * @param {Object} source The object to copy symbols from.\r\n * @param {Object} [object={}] The object to copy symbols to.\r\n * @returns {Object} Returns `object`.\r\n */\r\n function copySymbols(source, object) {\r\n return copyObject(source, getSymbols(source), object);\r\n }\r\n\r\n /**\r\n * Copies own and inherited symbols of `source` to `object`.\r\n *\r\n * @private\r\n * @param {Object} source The object to copy symbols from.\r\n * @param {Object} [object={}] The object to copy symbols to.\r\n * @returns {Object} Returns `object`.\r\n */\r\n function copySymbolsIn(source, object) {\r\n return copyObject(source, getSymbolsIn(source), object);\r\n }\r\n\r\n /**\r\n * Creates a function like `_.groupBy`.\r\n *\r\n * @private\r\n * @param {Function} setter The function to set accumulator values.\r\n * @param {Function} [initializer] The accumulator object initializer.\r\n * @returns {Function} Returns the new aggregator function.\r\n */\r\n function createAggregator(setter, initializer) {\r\n return function(collection, iteratee) {\r\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\r\n accumulator = initializer ? initializer() : {};\r\n\r\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\r\n };\r\n }\r\n\r\n /**\r\n * Creates a function like `_.assign`.\r\n *\r\n * @private\r\n * @param {Function} assigner The function to assign values.\r\n * @returns {Function} Returns the new assigner function.\r\n */\r\n function createAssigner(assigner) {\r\n return baseRest(function(object, sources) {\r\n var index = -1,\r\n length = sources.length,\r\n customizer = length > 1 ? sources[length - 1] : undefined,\r\n guard = length > 2 ? sources[2] : undefined;\r\n\r\n customizer = (assigner.length > 3 && typeof customizer == 'function')\r\n ? (length--, customizer)\r\n : undefined;\r\n\r\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\r\n customizer = length < 3 ? undefined : customizer;\r\n length = 1;\r\n }\r\n object = Object(object);\r\n while (++index < length) {\r\n var source = sources[index];\r\n if (source) {\r\n assigner(object, source, index, customizer);\r\n }\r\n }\r\n return object;\r\n });\r\n }\r\n\r\n /**\r\n * Creates a `baseEach` or `baseEachRight` function.\r\n *\r\n * @private\r\n * @param {Function} eachFunc The function to iterate over a collection.\r\n * @param {boolean} [fromRight] Specify iterating from right to left.\r\n * @returns {Function} Returns the new base function.\r\n */\r\n function createBaseEach(eachFunc, fromRight) {\r\n return function(collection, iteratee) {\r\n if (collection == null) {\r\n return collection;\r\n }\r\n if (!isArrayLike(collection)) {\r\n return eachFunc(collection, iteratee);\r\n }\r\n var length = collection.length,\r\n index = fromRight ? length : -1,\r\n iterable = Object(collection);\r\n\r\n while ((fromRight ? index-- : ++index < length)) {\r\n if (iteratee(iterable[index], index, iterable) === false) {\r\n break;\r\n }\r\n }\r\n return collection;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\r\n *\r\n * @private\r\n * @param {boolean} [fromRight] Specify iterating from right to left.\r\n * @returns {Function} Returns the new base function.\r\n */\r\n function createBaseFor(fromRight) {\r\n return function(object, iteratee, keysFunc) {\r\n var index = -1,\r\n iterable = Object(object),\r\n props = keysFunc(object),\r\n length = props.length;\r\n\r\n while (length--) {\r\n var key = props[fromRight ? length : ++index];\r\n if (iteratee(iterable[key], key, iterable) === false) {\r\n break;\r\n }\r\n }\r\n return object;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a function that wraps `func` to invoke it with the optional `this`\r\n * binding of `thisArg`.\r\n *\r\n * @private\r\n * @param {Function} func The function to wrap.\r\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\r\n * @param {*} [thisArg] The `this` binding of `func`.\r\n * @returns {Function} Returns the new wrapped function.\r\n */\r\n function createBind(func, bitmask, thisArg) {\r\n var isBind = bitmask & WRAP_BIND_FLAG,\r\n Ctor = createCtor(func);\r\n\r\n function wrapper() {\r\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\r\n return fn.apply(isBind ? thisArg : this, arguments);\r\n }\r\n return wrapper;\r\n }\r\n\r\n /**\r\n * Creates a function like `_.lowerFirst`.\r\n *\r\n * @private\r\n * @param {string} methodName The name of the `String` case method to use.\r\n * @returns {Function} Returns the new case function.\r\n */\r\n function createCaseFirst(methodName) {\r\n return function(string) {\r\n string = toString(string);\r\n\r\n var strSymbols = hasUnicode(string)\r\n ? stringToArray(string)\r\n : undefined;\r\n\r\n var chr = strSymbols\r\n ? strSymbols[0]\r\n : string.charAt(0);\r\n\r\n var trailing = strSymbols\r\n ? castSlice(strSymbols, 1).join('')\r\n : string.slice(1);\r\n\r\n return chr[methodName]() + trailing;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a function like `_.camelCase`.\r\n *\r\n * @private\r\n * @param {Function} callback The function to combine each word.\r\n * @returns {Function} Returns the new compounder function.\r\n */\r\n function createCompounder(callback) {\r\n return function(string) {\r\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\r\n };\r\n }\r\n\r\n /**\r\n * Creates a function that produces an instance of `Ctor` regardless of\r\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\r\n *\r\n * @private\r\n * @param {Function} Ctor The constructor to wrap.\r\n * @returns {Function} Returns the new wrapped function.\r\n */\r\n function createCtor(Ctor) {\r\n return function() {\r\n // Use a `switch` statement to work with class constructors. See\r\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\r\n // for more details.\r\n var args = arguments;\r\n switch (args.length) {\r\n case 0: return new Ctor;\r\n case 1: return new Ctor(args[0]);\r\n case 2: return new Ctor(args[0], args[1]);\r\n case 3: return new Ctor(args[0], args[1], args[2]);\r\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\r\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\r\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\r\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\r\n }\r\n var thisBinding = baseCreate(Ctor.prototype),\r\n result = Ctor.apply(thisBinding, args);\r\n\r\n // Mimic the constructor's `return` behavior.\r\n // See https://es5.github.io/#x13.2.2 for more details.\r\n return isObject(result) ? result : thisBinding;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a function that wraps `func` to enable currying.\r\n *\r\n * @private\r\n * @param {Function} func The function to wrap.\r\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\r\n * @param {number} arity The arity of `func`.\r\n * @returns {Function} Returns the new wrapped function.\r\n */\r\n function createCurry(func, bitmask, arity) {\r\n var Ctor = createCtor(func);\r\n\r\n function wrapper() {\r\n var length = arguments.length,\r\n args = Array(length),\r\n index = length,\r\n placeholder = getHolder(wrapper);\r\n\r\n while (index--) {\r\n args[index] = arguments[index];\r\n }\r\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\r\n ? []\r\n : replaceHolders(args, placeholder);\r\n\r\n length -= holders.length;\r\n if (length < arity) {\r\n return createRecurry(\r\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\r\n args, holders, undefined, undefined, arity - length);\r\n }\r\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\r\n return apply(fn, this, args);\r\n }\r\n return wrapper;\r\n }\r\n\r\n /**\r\n * Creates a `_.find` or `_.findLast` function.\r\n *\r\n * @private\r\n * @param {Function} findIndexFunc The function to find the collection index.\r\n * @returns {Function} Returns the new find function.\r\n */\r\n function createFind(findIndexFunc) {\r\n return function(collection, predicate, fromIndex) {\r\n var iterable = Object(collection);\r\n if (!isArrayLike(collection)) {\r\n var iteratee = getIteratee(predicate, 3);\r\n collection = keys(collection);\r\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\r\n }\r\n var index = findIndexFunc(collection, predicate, fromIndex);\r\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a `_.flow` or `_.flowRight` function.\r\n *\r\n * @private\r\n * @param {boolean} [fromRight] Specify iterating from right to left.\r\n * @returns {Function} Returns the new flow function.\r\n */\r\n function createFlow(fromRight) {\r\n return flatRest(function(funcs) {\r\n var length = funcs.length,\r\n index = length,\r\n prereq = LodashWrapper.prototype.thru;\r\n\r\n if (fromRight) {\r\n funcs.reverse();\r\n }\r\n while (index--) {\r\n var func = funcs[index];\r\n if (typeof func != 'function') {\r\n throw new TypeError(FUNC_ERROR_TEXT);\r\n }\r\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\r\n var wrapper = new LodashWrapper([], true);\r\n }\r\n }\r\n index = wrapper ? index : length;\r\n while (++index < length) {\r\n func = funcs[index];\r\n\r\n var funcName = getFuncName(func),\r\n data = funcName == 'wrapper' ? getData(func) : undefined;\r\n\r\n if (data && isLaziable(data[0]) &&\r\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\r\n !data[4].length && data[9] == 1\r\n ) {\r\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\r\n } else {\r\n wrapper = (func.length == 1 && isLaziable(func))\r\n ? wrapper[funcName]()\r\n : wrapper.thru(func);\r\n }\r\n }\r\n return function() {\r\n var args = arguments,\r\n value = args[0];\r\n\r\n if (wrapper && args.length == 1 && isArray(value)) {\r\n return wrapper.plant(value).value();\r\n }\r\n var index = 0,\r\n result = length ? funcs[index].apply(this, args) : value;\r\n\r\n while (++index < length) {\r\n result = funcs[index].call(this, result);\r\n }\r\n return result;\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * Creates a function that wraps `func` to invoke it with optional `this`\r\n * binding of `thisArg`, partial application, and currying.\r\n *\r\n * @private\r\n * @param {Function|string} func The function or method name to wrap.\r\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\r\n * @param {*} [thisArg] The `this` binding of `func`.\r\n * @param {Array} [partials] The arguments to prepend to those provided to\r\n * the new function.\r\n * @param {Array} [holders] The `partials` placeholder indexes.\r\n * @param {Array} [partialsRight] The arguments to append to those provided\r\n * to the new function.\r\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\r\n * @param {Array} [argPos] The argument positions of the new function.\r\n * @param {number} [ary] The arity cap of `func`.\r\n * @param {number} [arity] The arity of `func`.\r\n * @returns {Function} Returns the new wrapped function.\r\n */\r\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\r\n var isAry = bitmask & WRAP_ARY_FLAG,\r\n isBind = bitmask & WRAP_BIND_FLAG,\r\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\r\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\r\n isFlip = bitmask & WRAP_FLIP_FLAG,\r\n Ctor = isBindKey ? undefined : createCtor(func);\r\n\r\n function wrapper() {\r\n var length = arguments.length,\r\n args = Array(length),\r\n index = length;\r\n\r\n while (index--) {\r\n args[index] = arguments[index];\r\n }\r\n if (isCurried) {\r\n var placeholder = getHolder(wrapper),\r\n holdersCount = countHolders(args, placeholder);\r\n }\r\n if (partials) {\r\n args = composeArgs(args, partials, holders, isCurried);\r\n }\r\n if (partialsRight) {\r\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\r\n }\r\n length -= holdersCount;\r\n if (isCurried && length < arity) {\r\n var newHolders = replaceHolders(args, placeholder);\r\n return createRecurry(\r\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\r\n args, newHolders, argPos, ary, arity - length\r\n );\r\n }\r\n var thisBinding = isBind ? thisArg : this,\r\n fn = isBindKey ? thisBinding[func] : func;\r\n\r\n length = args.length;\r\n if (argPos) {\r\n args = reorder(args, argPos);\r\n } else if (isFlip && length > 1) {\r\n args.reverse();\r\n }\r\n if (isAry && ary < length) {\r\n args.length = ary;\r\n }\r\n if (this && this !== root && this instanceof wrapper) {\r\n fn = Ctor || createCtor(fn);\r\n }\r\n return fn.apply(thisBinding, args);\r\n }\r\n return wrapper;\r\n }\r\n\r\n /**\r\n * Creates a function like `_.invertBy`.\r\n *\r\n * @private\r\n * @param {Function} setter The function to set accumulator values.\r\n * @param {Function} toIteratee The function to resolve iteratees.\r\n * @returns {Function} Returns the new inverter function.\r\n */\r\n function createInverter(setter, toIteratee) {\r\n return function(object, iteratee) {\r\n return baseInverter(object, setter, toIteratee(iteratee), {});\r\n };\r\n }\r\n\r\n /**\r\n * Creates a function that performs a mathematical operation on two values.\r\n *\r\n * @private\r\n * @param {Function} operator The function to perform the operation.\r\n * @param {number} [defaultValue] The value used for `undefined` arguments.\r\n * @returns {Function} Returns the new mathematical operation function.\r\n */\r\n function createMathOperation(operator, defaultValue) {\r\n return function(value, other) {\r\n var result;\r\n if (value === undefined && other === undefined) {\r\n return defaultValue;\r\n }\r\n if (value !== undefined) {\r\n result = value;\r\n }\r\n if (other !== undefined) {\r\n if (result === undefined) {\r\n return other;\r\n }\r\n if (typeof value == 'string' || typeof other == 'string') {\r\n value = baseToString(value);\r\n other = baseToString(other);\r\n } else {\r\n value = baseToNumber(value);\r\n other = baseToNumber(other);\r\n }\r\n result = operator(value, other);\r\n }\r\n return result;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a function like `_.over`.\r\n *\r\n * @private\r\n * @param {Function} arrayFunc The function to iterate over iteratees.\r\n * @returns {Function} Returns the new over function.\r\n */\r\n function createOver(arrayFunc) {\r\n return flatRest(function(iteratees) {\r\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\r\n return baseRest(function(args) {\r\n var thisArg = this;\r\n return arrayFunc(iteratees, function(iteratee) {\r\n return apply(iteratee, thisArg, args);\r\n });\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Creates the padding for `string` based on `length`. The `chars` string\r\n * is truncated if the number of characters exceeds `length`.\r\n *\r\n * @private\r\n * @param {number} length The padding length.\r\n * @param {string} [chars=' '] The string used as padding.\r\n * @returns {string} Returns the padding for `string`.\r\n */\r\n function createPadding(length, chars) {\r\n chars = chars === undefined ? ' ' : baseToString(chars);\r\n\r\n var charsLength = chars.length;\r\n if (charsLength < 2) {\r\n return charsLength ? baseRepeat(chars, length) : chars;\r\n }\r\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\r\n return hasUnicode(chars)\r\n ? castSlice(stringToArray(result), 0, length).join('')\r\n : result.slice(0, length);\r\n }\r\n\r\n /**\r\n * Creates a function that wraps `func` to invoke it with the `this` binding\r\n * of `thisArg` and `partials` prepended to the arguments it receives.\r\n *\r\n * @private\r\n * @param {Function} func The function to wrap.\r\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\r\n * @param {*} thisArg The `this` binding of `func`.\r\n * @param {Array} partials The arguments to prepend to those provided to\r\n * the new function.\r\n * @returns {Function} Returns the new wrapped function.\r\n */\r\n function createPartial(func, bitmask, thisArg, partials) {\r\n var isBind = bitmask & WRAP_BIND_FLAG,\r\n Ctor = createCtor(func);\r\n\r\n function wrapper() {\r\n var argsIndex = -1,\r\n argsLength = arguments.length,\r\n leftIndex = -1,\r\n leftLength = partials.length,\r\n args = Array(leftLength + argsLength),\r\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\r\n\r\n while (++leftIndex < leftLength) {\r\n args[leftIndex] = partials[leftIndex];\r\n }\r\n while (argsLength--) {\r\n args[leftIndex++] = arguments[++argsIndex];\r\n }\r\n return apply(fn, isBind ? thisArg : this, args);\r\n }\r\n return wrapper;\r\n }\r\n\r\n /**\r\n * Creates a `_.range` or `_.rangeRight` function.\r\n *\r\n * @private\r\n * @param {boolean} [fromRight] Specify iterating from right to left.\r\n * @returns {Function} Returns the new range function.\r\n */\r\n function createRange(fromRight) {\r\n return function(start, end, step) {\r\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\r\n end = step = undefined;\r\n }\r\n // Ensure the sign of `-0` is preserved.\r\n start = toFinite(start);\r\n if (end === undefined) {\r\n end = start;\r\n start = 0;\r\n } else {\r\n end = toFinite(end);\r\n }\r\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\r\n return baseRange(start, end, step, fromRight);\r\n };\r\n }\r\n\r\n /**\r\n * Creates a function that performs a relational operation on two values.\r\n *\r\n * @private\r\n * @param {Function} operator The function to perform the operation.\r\n * @returns {Function} Returns the new relational operation function.\r\n */\r\n function createRelationalOperation(operator) {\r\n return function(value, other) {\r\n if (!(typeof value == 'string' && typeof other == 'string')) {\r\n value = toNumber(value);\r\n other = toNumber(other);\r\n }\r\n return operator(value, other);\r\n };\r\n }\r\n\r\n /**\r\n * Creates a function that wraps `func` to continue currying.\r\n *\r\n * @private\r\n * @param {Function} func The function to wrap.\r\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\r\n * @param {Function} wrapFunc The function to create the `func` wrapper.\r\n * @param {*} placeholder The placeholder value.\r\n * @param {*} [thisArg] The `this` binding of `func`.\r\n * @param {Array} [partials] The arguments to prepend to those provided to\r\n * the new function.\r\n * @param {Array} [holders] The `partials` placeholder indexes.\r\n * @param {Array} [argPos] The argument positions of the new function.\r\n * @param {number} [ary] The arity cap of `func`.\r\n * @param {number} [arity] The arity of `func`.\r\n * @returns {Function} Returns the new wrapped function.\r\n */\r\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\r\n var isCurry = bitmask & WRAP_CURRY_FLAG,\r\n newHolders = isCurry ? holders : undefined,\r\n newHoldersRight = isCurry ? undefined : holders,\r\n newPartials = isCurry ? partials : undefined,\r\n newPartialsRight = isCurry ? undefined : partials;\r\n\r\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\r\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\r\n\r\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\r\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\r\n }\r\n var newData = [\r\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\r\n newHoldersRight, argPos, ary, arity\r\n ];\r\n\r\n var result = wrapFunc.apply(undefined, newData);\r\n if (isLaziable(func)) {\r\n setData(result, newData);\r\n }\r\n result.placeholder = placeholder;\r\n return setWrapToString(result, func, bitmask);\r\n }\r\n\r\n /**\r\n * Creates a function like `_.round`.\r\n *\r\n * @private\r\n * @param {string} methodName The name of the `Math` method to use when rounding.\r\n * @returns {Function} Returns the new round function.\r\n */\r\n function createRound(methodName) {\r\n var func = Math[methodName];\r\n return function(number, precision) {\r\n number = toNumber(number);\r\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\r\n if (precision && nativeIsFinite(number)) {\r\n // Shift with exponential notation to avoid floating-point issues.\r\n // See [MDN](https://mdn.io/round#Examples) for more details.\r\n var pair = (toString(number) + 'e').split('e'),\r\n value = func(pair[0] + 'e' + (+pair[1] + precision));\r\n\r\n pair = (toString(value) + 'e').split('e');\r\n return +(pair[0] + 'e' + (+pair[1] - precision));\r\n }\r\n return func(number);\r\n };\r\n }\r\n\r\n /**\r\n * Creates a set object of `values`.\r\n *\r\n * @private\r\n * @param {Array} values The values to add to the set.\r\n * @returns {Object} Returns the new set.\r\n */\r\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\r\n return new Set(values);\r\n };\r\n\r\n /**\r\n * Creates a `_.toPairs` or `_.toPairsIn` function.\r\n *\r\n * @private\r\n * @param {Function} keysFunc The function to get the keys of a given object.\r\n * @returns {Function} Returns the new pairs function.\r\n */\r\n function createToPairs(keysFunc) {\r\n return function(object) {\r\n var tag = getTag(object);\r\n if (tag == mapTag) {\r\n return mapToArray(object);\r\n }\r\n if (tag == setTag) {\r\n return setToPairs(object);\r\n }\r\n return baseToPairs(object, keysFunc(object));\r\n };\r\n }\r\n\r\n /**\r\n * Creates a function that either curries or invokes `func` with optional\r\n * `this` binding and partially applied arguments.\r\n *\r\n * @private\r\n * @param {Function|string} func The function or method name to wrap.\r\n * @param {number} bitmask The bitmask flags.\r\n * 1 - `_.bind`\r\n * 2 - `_.bindKey`\r\n * 4 - `_.curry` or `_.curryRight` of a bound function\r\n * 8 - `_.curry`\r\n * 16 - `_.curryRight`\r\n * 32 - `_.partial`\r\n * 64 - `_.partialRight`\r\n * 128 - `_.rearg`\r\n * 256 - `_.ary`\r\n * 512 - `_.flip`\r\n * @param {*} [thisArg] The `this` binding of `func`.\r\n * @param {Array} [partials] The arguments to be partially applied.\r\n * @param {Array} [holders] The `partials` placeholder indexes.\r\n * @param {Array} [argPos] The argument positions of the new function.\r\n * @param {number} [ary] The arity cap of `func`.\r\n * @param {number} [arity] The arity of `func`.\r\n * @returns {Function} Returns the new wrapped function.\r\n */\r\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\r\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\r\n if (!isBindKey && typeof func != 'function') {\r\n throw new TypeError(FUNC_ERROR_TEXT);\r\n }\r\n var length = partials ? partials.length : 0;\r\n if (!length) {\r\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\r\n partials = holders = undefined;\r\n }\r\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\r\n arity = arity === undefined ? arity : toInteger(arity);\r\n length -= holders ? holders.length : 0;\r\n\r\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\r\n var partialsRight = partials,\r\n holdersRight = holders;\r\n\r\n partials = holders = undefined;\r\n }\r\n var data = isBindKey ? undefined : getData(func);\r\n\r\n var newData = [\r\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\r\n argPos, ary, arity\r\n ];\r\n\r\n if (data) {\r\n mergeData(newData, data);\r\n }\r\n func = newData[0];\r\n bitmask = newData[1];\r\n thisArg = newData[2];\r\n partials = newData[3];\r\n holders = newData[4];\r\n arity = newData[9] = newData[9] === undefined\r\n ? (isBindKey ? 0 : func.length)\r\n : nativeMax(newData[9] - length, 0);\r\n\r\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\r\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\r\n }\r\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\r\n var result = createBind(func, bitmask, thisArg);\r\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\r\n result = createCurry(func, bitmask, arity);\r\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\r\n result = createPartial(func, bitmask, thisArg, partials);\r\n } else {\r\n result = createHybrid.apply(undefined, newData);\r\n }\r\n var setter = data ? baseSetData : setData;\r\n return setWrapToString(setter(result, newData), func, bitmask);\r\n }\r\n\r\n /**\r\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\r\n * of source objects to the destination object for all destination properties\r\n * that resolve to `undefined`.\r\n *\r\n * @private\r\n * @param {*} objValue The destination value.\r\n * @param {*} srcValue The source value.\r\n * @param {string} key The key of the property to assign.\r\n * @param {Object} object The parent object of `objValue`.\r\n * @returns {*} Returns the value to assign.\r\n */\r\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\r\n if (objValue === undefined ||\r\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\r\n return srcValue;\r\n }\r\n return objValue;\r\n }\r\n\r\n /**\r\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\r\n * objects into destination objects that are passed thru.\r\n *\r\n * @private\r\n * @param {*} objValue The destination value.\r\n * @param {*} srcValue The source value.\r\n * @param {string} key The key of the property to merge.\r\n * @param {Object} object The parent object of `objValue`.\r\n * @param {Object} source The parent object of `srcValue`.\r\n * @param {Object} [stack] Tracks traversed source values and their merged\r\n * counterparts.\r\n * @returns {*} Returns the value to assign.\r\n */\r\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\r\n if (isObject(objValue) && isObject(srcValue)) {\r\n // Recursively merge objects and arrays (susceptible to call stack limits).\r\n stack.set(srcValue, objValue);\r\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\r\n stack['delete'](srcValue);\r\n }\r\n return objValue;\r\n }\r\n\r\n /**\r\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\r\n * objects.\r\n *\r\n * @private\r\n * @param {*} value The value to inspect.\r\n * @param {string} key The key of the property to inspect.\r\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\r\n */\r\n function customOmitClone(value) {\r\n return isPlainObject(value) ? undefined : value;\r\n }\r\n\r\n /**\r\n * A specialized version of `baseIsEqualDeep` for arrays with support for\r\n * partial deep comparisons.\r\n *\r\n * @private\r\n * @param {Array} array The array to compare.\r\n * @param {Array} other The other array to compare.\r\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\r\n * @param {Function} customizer The function to customize comparisons.\r\n * @param {Function} equalFunc The function to determine equivalents of values.\r\n * @param {Object} stack Tracks traversed `array` and `other` objects.\r\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\r\n */\r\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\r\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\r\n arrLength = array.length,\r\n othLength = other.length;\r\n\r\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\r\n return false;\r\n }\r\n // Check that cyclic values are equal.\r\n var arrStacked = stack.get(array);\r\n var othStacked = stack.get(other);\r\n if (arrStacked && othStacked) {\r\n return arrStacked == other && othStacked == array;\r\n }\r\n var index = -1,\r\n result = true,\r\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\r\n\r\n stack.set(array, other);\r\n stack.set(other, array);\r\n\r\n // Ignore non-index properties.\r\n while (++index < arrLength) {\r\n var arrValue = array[index],\r\n othValue = other[index];\r\n\r\n if (customizer) {\r\n var compared = isPartial\r\n ? customizer(othValue, arrValue, index, other, array, stack)\r\n : customizer(arrValue, othValue, index, array, other, stack);\r\n }\r\n if (compared !== undefined) {\r\n if (compared) {\r\n continue;\r\n }\r\n result = false;\r\n break;\r\n }\r\n // Recursively compare arrays (susceptible to call stack limits).\r\n if (seen) {\r\n if (!arraySome(other, function(othValue, othIndex) {\r\n if (!cacheHas(seen, othIndex) &&\r\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\r\n return seen.push(othIndex);\r\n }\r\n })) {\r\n result = false;\r\n break;\r\n }\r\n } else if (!(\r\n arrValue === othValue ||\r\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\r\n )) {\r\n result = false;\r\n break;\r\n }\r\n }\r\n stack['delete'](array);\r\n stack['delete'](other);\r\n return result;\r\n }\r\n\r\n /**\r\n * A specialized version of `baseIsEqualDeep` for comparing objects of\r\n * the same `toStringTag`.\r\n *\r\n * **Note:** This function only supports comparing values with tags of\r\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\r\n *\r\n * @private\r\n * @param {Object} object The object to compare.\r\n * @param {Object} other The other object to compare.\r\n * @param {string} tag The `toStringTag` of the objects to compare.\r\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\r\n * @param {Function} customizer The function to customize comparisons.\r\n * @param {Function} equalFunc The function to determine equivalents of values.\r\n * @param {Object} stack Tracks traversed `object` and `other` objects.\r\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\r\n */\r\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\r\n switch (tag) {\r\n case dataViewTag:\r\n if ((object.byteLength != other.byteLength) ||\r\n (object.byteOffset != other.byteOffset)) {\r\n return false;\r\n }\r\n object = object.buffer;\r\n other = other.buffer;\r\n\r\n case arrayBufferTag:\r\n if ((object.byteLength != other.byteLength) ||\r\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\r\n return false;\r\n }\r\n return true;\r\n\r\n case boolTag:\r\n case dateTag:\r\n case numberTag:\r\n // Coerce booleans to `1` or `0` and dates to milliseconds.\r\n // Invalid dates are coerced to `NaN`.\r\n return eq(+object, +other);\r\n\r\n case errorTag:\r\n return object.name == other.name && object.message == other.message;\r\n\r\n case regexpTag:\r\n case stringTag:\r\n // Coerce regexes to strings and treat strings, primitives and objects,\r\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\r\n // for more details.\r\n return object == (other + '');\r\n\r\n case mapTag:\r\n var convert = mapToArray;\r\n\r\n case setTag:\r\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\r\n convert || (convert = setToArray);\r\n\r\n if (object.size != other.size && !isPartial) {\r\n return false;\r\n }\r\n // Assume cyclic values are equal.\r\n var stacked = stack.get(object);\r\n if (stacked) {\r\n return stacked == other;\r\n }\r\n bitmask |= COMPARE_UNORDERED_FLAG;\r\n\r\n // Recursively compare objects (susceptible to call stack limits).\r\n stack.set(object, other);\r\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\r\n stack['delete'](object);\r\n return result;\r\n\r\n case symbolTag:\r\n if (symbolValueOf) {\r\n return symbolValueOf.call(object) == symbolValueOf.call(other);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * A specialized version of `baseIsEqualDeep` for objects with support for\r\n * partial deep comparisons.\r\n *\r\n * @private\r\n * @param {Object} object The object to compare.\r\n * @param {Object} other The other object to compare.\r\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\r\n * @param {Function} customizer The function to customize comparisons.\r\n * @param {Function} equalFunc The function to determine equivalents of values.\r\n * @param {Object} stack Tracks traversed `object` and `other` objects.\r\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\r\n */\r\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\r\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\r\n objProps = getAllKeys(object),\r\n objLength = objProps.length,\r\n othProps = getAllKeys(other),\r\n othLength = othProps.length;\r\n\r\n if (objLength != othLength && !isPartial) {\r\n return false;\r\n }\r\n var index = objLength;\r\n while (index--) {\r\n var key = objProps[index];\r\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\r\n return false;\r\n }\r\n }\r\n // Check that cyclic values are equal.\r\n var objStacked = stack.get(object);\r\n var othStacked = stack.get(other);\r\n if (objStacked && othStacked) {\r\n return objStacked == other && othStacked == object;\r\n }\r\n var result = true;\r\n stack.set(object, other);\r\n stack.set(other, object);\r\n\r\n var skipCtor = isPartial;\r\n while (++index < objLength) {\r\n key = objProps[index];\r\n var objValue = object[key],\r\n othValue = other[key];\r\n\r\n if (customizer) {\r\n var compared = isPartial\r\n ? customizer(othValue, objValue, key, other, object, stack)\r\n : customizer(objValue, othValue, key, object, other, stack);\r\n }\r\n // Recursively compare objects (susceptible to call stack limits).\r\n if (!(compared === undefined\r\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\r\n : compared\r\n )) {\r\n result = false;\r\n break;\r\n }\r\n skipCtor || (skipCtor = key == 'constructor');\r\n }\r\n if (result && !skipCtor) {\r\n var objCtor = object.constructor,\r\n othCtor = other.constructor;\r\n\r\n // Non `Object` object instances with different constructors are not equal.\r\n if (objCtor != othCtor &&\r\n ('constructor' in object && 'constructor' in other) &&\r\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\r\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\r\n result = false;\r\n }\r\n }\r\n stack['delete'](object);\r\n stack['delete'](other);\r\n return result;\r\n }\r\n\r\n /**\r\n * A specialized version of `baseRest` which flattens the rest array.\r\n *\r\n * @private\r\n * @param {Function} func The function to apply a rest parameter to.\r\n * @returns {Function} Returns the new function.\r\n */\r\n function flatRest(func) {\r\n return setToString(overRest(func, undefined, flatten), func + '');\r\n }\r\n\r\n /**\r\n * Creates an array of own enumerable property names and symbols of `object`.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @returns {Array} Returns the array of property names and symbols.\r\n */\r\n function getAllKeys(object) {\r\n return baseGetAllKeys(object, keys, getSymbols);\r\n }\r\n\r\n /**\r\n * Creates an array of own and inherited enumerable property names and\r\n * symbols of `object`.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @returns {Array} Returns the array of property names and symbols.\r\n */\r\n function getAllKeysIn(object) {\r\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\r\n }\r\n\r\n /**\r\n * Gets metadata for `func`.\r\n *\r\n * @private\r\n * @param {Function} func The function to query.\r\n * @returns {*} Returns the metadata for `func`.\r\n */\r\n var getData = !metaMap ? noop : function(func) {\r\n return metaMap.get(func);\r\n };\r\n\r\n /**\r\n * Gets the name of `func`.\r\n *\r\n * @private\r\n * @param {Function} func The function to query.\r\n * @returns {string} Returns the function name.\r\n */\r\n function getFuncName(func) {\r\n var result = (func.name + ''),\r\n array = realNames[result],\r\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\r\n\r\n while (length--) {\r\n var data = array[length],\r\n otherFunc = data.func;\r\n if (otherFunc == null || otherFunc == func) {\r\n return data.name;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets the argument placeholder value for `func`.\r\n *\r\n * @private\r\n * @param {Function} func The function to inspect.\r\n * @returns {*} Returns the placeholder value.\r\n */\r\n function getHolder(func) {\r\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\r\n return object.placeholder;\r\n }\r\n\r\n /**\r\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\r\n * this function returns the custom method, otherwise it returns `baseIteratee`.\r\n * If arguments are provided, the chosen function is invoked with them and\r\n * its result is returned.\r\n *\r\n * @private\r\n * @param {*} [value] The value to convert to an iteratee.\r\n * @param {number} [arity] The arity of the created iteratee.\r\n * @returns {Function} Returns the chosen function or its result.\r\n */\r\n function getIteratee() {\r\n var result = lodash.iteratee || iteratee;\r\n result = result === iteratee ? baseIteratee : result;\r\n return arguments.length ? result(arguments[0], arguments[1]) : result;\r\n }\r\n\r\n /**\r\n * Gets the data for `map`.\r\n *\r\n * @private\r\n * @param {Object} map The map to query.\r\n * @param {string} key The reference key.\r\n * @returns {*} Returns the map data.\r\n */\r\n function getMapData(map, key) {\r\n var data = map.__data__;\r\n return isKeyable(key)\r\n ? data[typeof key == 'string' ? 'string' : 'hash']\r\n : data.map;\r\n }\r\n\r\n /**\r\n * Gets the property names, values, and compare flags of `object`.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @returns {Array} Returns the match data of `object`.\r\n */\r\n function getMatchData(object) {\r\n var result = keys(object),\r\n length = result.length;\r\n\r\n while (length--) {\r\n var key = result[length],\r\n value = object[key];\r\n\r\n result[length] = [key, value, isStrictComparable(value)];\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets the native function at `key` of `object`.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @param {string} key The key of the method to get.\r\n * @returns {*} Returns the function if it's native, else `undefined`.\r\n */\r\n function getNative(object, key) {\r\n var value = getValue(object, key);\r\n return baseIsNative(value) ? value : undefined;\r\n }\r\n\r\n /**\r\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\r\n *\r\n * @private\r\n * @param {*} value The value to query.\r\n * @returns {string} Returns the raw `toStringTag`.\r\n */\r\n function getRawTag(value) {\r\n var isOwn = hasOwnProperty.call(value, symToStringTag),\r\n tag = value[symToStringTag];\r\n\r\n try {\r\n value[symToStringTag] = undefined;\r\n var unmasked = true;\r\n } catch (e) {}\r\n\r\n var result = nativeObjectToString.call(value);\r\n if (unmasked) {\r\n if (isOwn) {\r\n value[symToStringTag] = tag;\r\n } else {\r\n delete value[symToStringTag];\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates an array of the own enumerable symbols of `object`.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @returns {Array} Returns the array of symbols.\r\n */\r\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\r\n if (object == null) {\r\n return [];\r\n }\r\n object = Object(object);\r\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\r\n return propertyIsEnumerable.call(object, symbol);\r\n });\r\n };\r\n\r\n /**\r\n * Creates an array of the own and inherited enumerable symbols of `object`.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @returns {Array} Returns the array of symbols.\r\n */\r\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\r\n var result = [];\r\n while (object) {\r\n arrayPush(result, getSymbols(object));\r\n object = getPrototype(object);\r\n }\r\n return result;\r\n };\r\n\r\n /**\r\n * Gets the `toStringTag` of `value`.\r\n *\r\n * @private\r\n * @param {*} value The value to query.\r\n * @returns {string} Returns the `toStringTag`.\r\n */\r\n var getTag = baseGetTag;\r\n\r\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\r\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\r\n (Map && getTag(new Map) != mapTag) ||\r\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\r\n (Set && getTag(new Set) != setTag) ||\r\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\r\n getTag = function(value) {\r\n var result = baseGetTag(value),\r\n Ctor = result == objectTag ? value.constructor : undefined,\r\n ctorString = Ctor ? toSource(Ctor) : '';\r\n\r\n if (ctorString) {\r\n switch (ctorString) {\r\n case dataViewCtorString: return dataViewTag;\r\n case mapCtorString: return mapTag;\r\n case promiseCtorString: return promiseTag;\r\n case setCtorString: return setTag;\r\n case weakMapCtorString: return weakMapTag;\r\n }\r\n }\r\n return result;\r\n };\r\n }\r\n\r\n /**\r\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\r\n *\r\n * @private\r\n * @param {number} start The start of the view.\r\n * @param {number} end The end of the view.\r\n * @param {Array} transforms The transformations to apply to the view.\r\n * @returns {Object} Returns an object containing the `start` and `end`\r\n * positions of the view.\r\n */\r\n function getView(start, end, transforms) {\r\n var index = -1,\r\n length = transforms.length;\r\n\r\n while (++index < length) {\r\n var data = transforms[index],\r\n size = data.size;\r\n\r\n switch (data.type) {\r\n case 'drop': start += size; break;\r\n case 'dropRight': end -= size; break;\r\n case 'take': end = nativeMin(end, start + size); break;\r\n case 'takeRight': start = nativeMax(start, end - size); break;\r\n }\r\n }\r\n return { 'start': start, 'end': end };\r\n }\r\n\r\n /**\r\n * Extracts wrapper details from the `source` body comment.\r\n *\r\n * @private\r\n * @param {string} source The source to inspect.\r\n * @returns {Array} Returns the wrapper details.\r\n */\r\n function getWrapDetails(source) {\r\n var match = source.match(reWrapDetails);\r\n return match ? match[1].split(reSplitDetails) : [];\r\n }\r\n\r\n /**\r\n * Checks if `path` exists on `object`.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @param {Array|string} path The path to check.\r\n * @param {Function} hasFunc The function to check properties.\r\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\r\n */\r\n function hasPath(object, path, hasFunc) {\r\n path = castPath(path, object);\r\n\r\n var index = -1,\r\n length = path.length,\r\n result = false;\r\n\r\n while (++index < length) {\r\n var key = toKey(path[index]);\r\n if (!(result = object != null && hasFunc(object, key))) {\r\n break;\r\n }\r\n object = object[key];\r\n }\r\n if (result || ++index != length) {\r\n return result;\r\n }\r\n length = object == null ? 0 : object.length;\r\n return !!length && isLength(length) && isIndex(key, length) &&\r\n (isArray(object) || isArguments(object));\r\n }\r\n\r\n /**\r\n * Initializes an array clone.\r\n *\r\n * @private\r\n * @param {Array} array The array to clone.\r\n * @returns {Array} Returns the initialized clone.\r\n */\r\n function initCloneArray(array) {\r\n var length = array.length,\r\n result = new array.constructor(length);\r\n\r\n // Add properties assigned by `RegExp#exec`.\r\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\r\n result.index = array.index;\r\n result.input = array.input;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Initializes an object clone.\r\n *\r\n * @private\r\n * @param {Object} object The object to clone.\r\n * @returns {Object} Returns the initialized clone.\r\n */\r\n function initCloneObject(object) {\r\n return (typeof object.constructor == 'function' && !isPrototype(object))\r\n ? baseCreate(getPrototype(object))\r\n : {};\r\n }\r\n\r\n /**\r\n * Initializes an object clone based on its `toStringTag`.\r\n *\r\n * **Note:** This function only supports cloning values with tags of\r\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\r\n *\r\n * @private\r\n * @param {Object} object The object to clone.\r\n * @param {string} tag The `toStringTag` of the object to clone.\r\n * @param {boolean} [isDeep] Specify a deep clone.\r\n * @returns {Object} Returns the initialized clone.\r\n */\r\n function initCloneByTag(object, tag, isDeep) {\r\n var Ctor = object.constructor;\r\n switch (tag) {\r\n case arrayBufferTag:\r\n return cloneArrayBuffer(object);\r\n\r\n case boolTag:\r\n case dateTag:\r\n return new Ctor(+object);\r\n\r\n case dataViewTag:\r\n return cloneDataView(object, isDeep);\r\n\r\n case float32Tag: case float64Tag:\r\n case int8Tag: case int16Tag: case int32Tag:\r\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\r\n return cloneTypedArray(object, isDeep);\r\n\r\n case mapTag:\r\n return new Ctor;\r\n\r\n case numberTag:\r\n case stringTag:\r\n return new Ctor(object);\r\n\r\n case regexpTag:\r\n return cloneRegExp(object);\r\n\r\n case setTag:\r\n return new Ctor;\r\n\r\n case symbolTag:\r\n return cloneSymbol(object);\r\n }\r\n }\r\n\r\n /**\r\n * Inserts wrapper `details` in a comment at the top of the `source` body.\r\n *\r\n * @private\r\n * @param {string} source The source to modify.\r\n * @returns {Array} details The details to insert.\r\n * @returns {string} Returns the modified source.\r\n */\r\n function insertWrapDetails(source, details) {\r\n var length = details.length;\r\n if (!length) {\r\n return source;\r\n }\r\n var lastIndex = length - 1;\r\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\r\n details = details.join(length > 2 ? ', ' : ' ');\r\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\r\n }\r\n\r\n /**\r\n * Checks if `value` is a flattenable `arguments` object or array.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\r\n */\r\n function isFlattenable(value) {\r\n return isArray(value) || isArguments(value) ||\r\n !!(spreadableSymbol && value && value[spreadableSymbol]);\r\n }\r\n\r\n /**\r\n * Checks if `value` is a valid array-like index.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\r\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\r\n */\r\n function isIndex(value, length) {\r\n var type = typeof value;\r\n length = length == null ? MAX_SAFE_INTEGER : length;\r\n\r\n return !!length &&\r\n (type == 'number' ||\r\n (type != 'symbol' && reIsUint.test(value))) &&\r\n (value > -1 && value % 1 == 0 && value < length);\r\n }\r\n\r\n /**\r\n * Checks if the given arguments are from an iteratee call.\r\n *\r\n * @private\r\n * @param {*} value The potential iteratee value argument.\r\n * @param {*} index The potential iteratee index or key argument.\r\n * @param {*} object The potential iteratee object argument.\r\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\r\n * else `false`.\r\n */\r\n function isIterateeCall(value, index, object) {\r\n if (!isObject(object)) {\r\n return false;\r\n }\r\n var type = typeof index;\r\n if (type == 'number'\r\n ? (isArrayLike(object) && isIndex(index, object.length))\r\n : (type == 'string' && index in object)\r\n ) {\r\n return eq(object[index], value);\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Checks if `value` is a property name and not a property path.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @param {Object} [object] The object to query keys on.\r\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\r\n */\r\n function isKey(value, object) {\r\n if (isArray(value)) {\r\n return false;\r\n }\r\n var type = typeof value;\r\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\r\n value == null || isSymbol(value)) {\r\n return true;\r\n }\r\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\r\n (object != null && value in Object(object));\r\n }\r\n\r\n /**\r\n * Checks if `value` is suitable for use as unique object key.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\r\n */\r\n function isKeyable(value) {\r\n var type = typeof value;\r\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\r\n ? (value !== '__proto__')\r\n : (value === null);\r\n }\r\n\r\n /**\r\n * Checks if `func` has a lazy counterpart.\r\n *\r\n * @private\r\n * @param {Function} func The function to check.\r\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\r\n * else `false`.\r\n */\r\n function isLaziable(func) {\r\n var funcName = getFuncName(func),\r\n other = lodash[funcName];\r\n\r\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\r\n return false;\r\n }\r\n if (func === other) {\r\n return true;\r\n }\r\n var data = getData(other);\r\n return !!data && func === data[0];\r\n }\r\n\r\n /**\r\n * Checks if `func` has its source masked.\r\n *\r\n * @private\r\n * @param {Function} func The function to check.\r\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\r\n */\r\n function isMasked(func) {\r\n return !!maskSrcKey && (maskSrcKey in func);\r\n }\r\n\r\n /**\r\n * Checks if `func` is capable of being masked.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\r\n */\r\n var isMaskable = coreJsData ? isFunction : stubFalse;\r\n\r\n /**\r\n * Checks if `value` is likely a prototype object.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\r\n */\r\n function isPrototype(value) {\r\n var Ctor = value && value.constructor,\r\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\r\n\r\n return value === proto;\r\n }\r\n\r\n /**\r\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\r\n *\r\n * @private\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` if suitable for strict\r\n * equality comparisons, else `false`.\r\n */\r\n function isStrictComparable(value) {\r\n return value === value && !isObject(value);\r\n }\r\n\r\n /**\r\n * A specialized version of `matchesProperty` for source values suitable\r\n * for strict equality comparisons, i.e. `===`.\r\n *\r\n * @private\r\n * @param {string} key The key of the property to get.\r\n * @param {*} srcValue The value to match.\r\n * @returns {Function} Returns the new spec function.\r\n */\r\n function matchesStrictComparable(key, srcValue) {\r\n return function(object) {\r\n if (object == null) {\r\n return false;\r\n }\r\n return object[key] === srcValue &&\r\n (srcValue !== undefined || (key in Object(object)));\r\n };\r\n }\r\n\r\n /**\r\n * A specialized version of `_.memoize` which clears the memoized function's\r\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\r\n *\r\n * @private\r\n * @param {Function} func The function to have its output memoized.\r\n * @returns {Function} Returns the new memoized function.\r\n */\r\n function memoizeCapped(func) {\r\n var result = memoize(func, function(key) {\r\n if (cache.size === MAX_MEMOIZE_SIZE) {\r\n cache.clear();\r\n }\r\n return key;\r\n });\r\n\r\n var cache = result.cache;\r\n return result;\r\n }\r\n\r\n /**\r\n * Merges the function metadata of `source` into `data`.\r\n *\r\n * Merging metadata reduces the number of wrappers used to invoke a function.\r\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\r\n * may be applied regardless of execution order. Methods like `_.ary` and\r\n * `_.rearg` modify function arguments, making the order in which they are\r\n * executed important, preventing the merging of metadata. However, we make\r\n * an exception for a safe combined case where curried functions have `_.ary`\r\n * and or `_.rearg` applied.\r\n *\r\n * @private\r\n * @param {Array} data The destination metadata.\r\n * @param {Array} source The source metadata.\r\n * @returns {Array} Returns `data`.\r\n */\r\n function mergeData(data, source) {\r\n var bitmask = data[1],\r\n srcBitmask = source[1],\r\n newBitmask = bitmask | srcBitmask,\r\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\r\n\r\n var isCombo =\r\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\r\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\r\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\r\n\r\n // Exit early if metadata can't be merged.\r\n if (!(isCommon || isCombo)) {\r\n return data;\r\n }\r\n // Use source `thisArg` if available.\r\n if (srcBitmask & WRAP_BIND_FLAG) {\r\n data[2] = source[2];\r\n // Set when currying a bound function.\r\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\r\n }\r\n // Compose partial arguments.\r\n var value = source[3];\r\n if (value) {\r\n var partials = data[3];\r\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\r\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\r\n }\r\n // Compose partial right arguments.\r\n value = source[5];\r\n if (value) {\r\n partials = data[5];\r\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\r\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\r\n }\r\n // Use source `argPos` if available.\r\n value = source[7];\r\n if (value) {\r\n data[7] = value;\r\n }\r\n // Use source `ary` if it's smaller.\r\n if (srcBitmask & WRAP_ARY_FLAG) {\r\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\r\n }\r\n // Use source `arity` if one is not provided.\r\n if (data[9] == null) {\r\n data[9] = source[9];\r\n }\r\n // Use source `func` and merge bitmasks.\r\n data[0] = source[0];\r\n data[1] = newBitmask;\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * This function is like\r\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\r\n * except that it includes inherited enumerable properties.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @returns {Array} Returns the array of property names.\r\n */\r\n function nativeKeysIn(object) {\r\n var result = [];\r\n if (object != null) {\r\n for (var key in Object(object)) {\r\n result.push(key);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Converts `value` to a string using `Object.prototype.toString`.\r\n *\r\n * @private\r\n * @param {*} value The value to convert.\r\n * @returns {string} Returns the converted string.\r\n */\r\n function objectToString(value) {\r\n return nativeObjectToString.call(value);\r\n }\r\n\r\n /**\r\n * A specialized version of `baseRest` which transforms the rest array.\r\n *\r\n * @private\r\n * @param {Function} func The function to apply a rest parameter to.\r\n * @param {number} [start=func.length-1] The start position of the rest parameter.\r\n * @param {Function} transform The rest array transform.\r\n * @returns {Function} Returns the new function.\r\n */\r\n function overRest(func, start, transform) {\r\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\r\n return function() {\r\n var args = arguments,\r\n index = -1,\r\n length = nativeMax(args.length - start, 0),\r\n array = Array(length);\r\n\r\n while (++index < length) {\r\n array[index] = args[start + index];\r\n }\r\n index = -1;\r\n var otherArgs = Array(start + 1);\r\n while (++index < start) {\r\n otherArgs[index] = args[index];\r\n }\r\n otherArgs[start] = transform(array);\r\n return apply(func, this, otherArgs);\r\n };\r\n }\r\n\r\n /**\r\n * Gets the parent value at `path` of `object`.\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @param {Array} path The path to get the parent value of.\r\n * @returns {*} Returns the parent value.\r\n */\r\n function parent(object, path) {\r\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\r\n }\r\n\r\n /**\r\n * Reorder `array` according to the specified indexes where the element at\r\n * the first index is assigned as the first element, the element at\r\n * the second index is assigned as the second element, and so on.\r\n *\r\n * @private\r\n * @param {Array} array The array to reorder.\r\n * @param {Array} indexes The arranged array indexes.\r\n * @returns {Array} Returns `array`.\r\n */\r\n function reorder(array, indexes) {\r\n var arrLength = array.length,\r\n length = nativeMin(indexes.length, arrLength),\r\n oldArray = copyArray(array);\r\n\r\n while (length--) {\r\n var index = indexes[length];\r\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\r\n }\r\n return array;\r\n }\r\n\r\n /**\r\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\r\n *\r\n * @private\r\n * @param {Object} object The object to query.\r\n * @param {string} key The key of the property to get.\r\n * @returns {*} Returns the property value.\r\n */\r\n function safeGet(object, key) {\r\n if (key === 'constructor' && typeof object[key] === 'function') {\r\n return;\r\n }\r\n\r\n if (key == '__proto__') {\r\n return;\r\n }\r\n\r\n return object[key];\r\n }\r\n\r\n /**\r\n * Sets metadata for `func`.\r\n *\r\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\r\n * period of time, it will trip its breaker and transition to an identity\r\n * function to avoid garbage collection pauses in V8. See\r\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\r\n * for more details.\r\n *\r\n * @private\r\n * @param {Function} func The function to associate metadata with.\r\n * @param {*} data The metadata.\r\n * @returns {Function} Returns `func`.\r\n */\r\n var setData = shortOut(baseSetData);\r\n\r\n /**\r\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\r\n *\r\n * @private\r\n * @param {Function} func The function to delay.\r\n * @param {number} wait The number of milliseconds to delay invocation.\r\n * @returns {number|Object} Returns the timer id or timeout object.\r\n */\r\n var setTimeout = ctxSetTimeout || function(func, wait) {\r\n return root.setTimeout(func, wait);\r\n };\r\n\r\n /**\r\n * Sets the `toString` method of `func` to return `string`.\r\n *\r\n * @private\r\n * @param {Function} func The function to modify.\r\n * @param {Function} string The `toString` result.\r\n * @returns {Function} Returns `func`.\r\n */\r\n var setToString = shortOut(baseSetToString);\r\n\r\n /**\r\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\r\n * with wrapper details in a comment at the top of the source body.\r\n *\r\n * @private\r\n * @param {Function} wrapper The function to modify.\r\n * @param {Function} reference The reference function.\r\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\r\n * @returns {Function} Returns `wrapper`.\r\n */\r\n function setWrapToString(wrapper, reference, bitmask) {\r\n var source = (reference + '');\r\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\r\n }\r\n\r\n /**\r\n * Creates a function that'll short out and invoke `identity` instead\r\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\r\n * milliseconds.\r\n *\r\n * @private\r\n * @param {Function} func The function to restrict.\r\n * @returns {Function} Returns the new shortable function.\r\n */\r\n function shortOut(func) {\r\n var count = 0,\r\n lastCalled = 0;\r\n\r\n return function() {\r\n var stamp = nativeNow(),\r\n remaining = HOT_SPAN - (stamp - lastCalled);\r\n\r\n lastCalled = stamp;\r\n if (remaining > 0) {\r\n if (++count >= HOT_COUNT) {\r\n return arguments[0];\r\n }\r\n } else {\r\n count = 0;\r\n }\r\n return func.apply(undefined, arguments);\r\n };\r\n }\r\n\r\n /**\r\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\r\n *\r\n * @private\r\n * @param {Array} array The array to shuffle.\r\n * @param {number} [size=array.length] The size of `array`.\r\n * @returns {Array} Returns `array`.\r\n */\r\n function shuffleSelf(array, size) {\r\n var index = -1,\r\n length = array.length,\r\n lastIndex = length - 1;\r\n\r\n size = size === undefined ? length : size;\r\n while (++index < size) {\r\n var rand = baseRandom(index, lastIndex),\r\n value = array[rand];\r\n\r\n array[rand] = array[index];\r\n array[index] = value;\r\n }\r\n array.length = size;\r\n return array;\r\n }\r\n\r\n /**\r\n * Converts `string` to a property path array.\r\n *\r\n * @private\r\n * @param {string} string The string to convert.\r\n * @returns {Array} Returns the property path array.\r\n */\r\n var stringToPath = memoizeCapped(function(string) {\r\n var result = [];\r\n if (string.charCodeAt(0) === 46 /* . */) {\r\n result.push('');\r\n }\r\n string.replace(rePropName, function(match, number, quote, subString) {\r\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\r\n });\r\n return result;\r\n });\r\n\r\n /**\r\n * Converts `value` to a string key if it's not a string or symbol.\r\n *\r\n * @private\r\n * @param {*} value The value to inspect.\r\n * @returns {string|symbol} Returns the key.\r\n */\r\n function toKey(value) {\r\n if (typeof value == 'string' || isSymbol(value)) {\r\n return value;\r\n }\r\n var result = (value + '');\r\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\r\n }\r\n\r\n /**\r\n * Converts `func` to its source code.\r\n *\r\n * @private\r\n * @param {Function} func The function to convert.\r\n * @returns {string} Returns the source code.\r\n */\r\n function toSource(func) {\r\n if (func != null) {\r\n try {\r\n return funcToString.call(func);\r\n } catch (e) {}\r\n try {\r\n return (func + '');\r\n } catch (e) {}\r\n }\r\n return '';\r\n }\r\n\r\n /**\r\n * Updates wrapper `details` based on `bitmask` flags.\r\n *\r\n * @private\r\n * @returns {Array} details The details to modify.\r\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\r\n * @returns {Array} Returns `details`.\r\n */\r\n function updateWrapDetails(details, bitmask) {\r\n arrayEach(wrapFlags, function(pair) {\r\n var value = '_.' + pair[0];\r\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\r\n details.push(value);\r\n }\r\n });\r\n return details.sort();\r\n }\r\n\r\n /**\r\n * Creates a clone of `wrapper`.\r\n *\r\n * @private\r\n * @param {Object} wrapper The wrapper to clone.\r\n * @returns {Object} Returns the cloned wrapper.\r\n */\r\n function wrapperClone(wrapper) {\r\n if (wrapper instanceof LazyWrapper) {\r\n return wrapper.clone();\r\n }\r\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\r\n result.__actions__ = copyArray(wrapper.__actions__);\r\n result.__index__ = wrapper.__index__;\r\n result.__values__ = wrapper.__values__;\r\n return result;\r\n }\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Creates an array of elements split into groups the length of `size`.\r\n * If `array` can't be split evenly, the final chunk will be the remaining\r\n * elements.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Array\r\n * @param {Array} array The array to process.\r\n * @param {number} [size=1] The length of each chunk\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\r\n * @returns {Array} Returns the new array of chunks.\r\n * @example\r\n *\r\n * _.chunk(['a', 'b', 'c', 'd'], 2);\r\n * // => [['a', 'b'], ['c', 'd']]\r\n *\r\n * _.chunk(['a', 'b', 'c', 'd'], 3);\r\n * // => [['a', 'b', 'c'], ['d']]\r\n */\r\n function chunk(array, size, guard) {\r\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\r\n size = 1;\r\n } else {\r\n size = nativeMax(toInteger(size), 0);\r\n }\r\n var length = array == null ? 0 : array.length;\r\n if (!length || size < 1) {\r\n return [];\r\n }\r\n var index = 0,\r\n resIndex = 0,\r\n result = Array(nativeCeil(length / size));\r\n\r\n while (index < length) {\r\n result[resIndex++] = baseSlice(array, index, (index += size));\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates an array with all falsey values removed. The values `false`, `null`,\r\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Array\r\n * @param {Array} array The array to compact.\r\n * @returns {Array} Returns the new array of filtered values.\r\n * @example\r\n *\r\n * _.compact([0, 1, false, 2, '', 3]);\r\n * // => [1, 2, 3]\r\n */\r\n function compact(array) {\r\n var index = -1,\r\n length = array == null ? 0 : array.length,\r\n resIndex = 0,\r\n result = [];\r\n\r\n while (++index < length) {\r\n var value = array[index];\r\n if (value) {\r\n result[resIndex++] = value;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a new array concatenating `array` with any additional arrays\r\n * and/or values.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The array to concatenate.\r\n * @param {...*} [values] The values to concatenate.\r\n * @returns {Array} Returns the new concatenated array.\r\n * @example\r\n *\r\n * var array = [1];\r\n * var other = _.concat(array, 2, [3], [[4]]);\r\n *\r\n * console.log(other);\r\n * // => [1, 2, 3, [4]]\r\n *\r\n * console.log(array);\r\n * // => [1]\r\n */\r\n function concat() {\r\n var length = arguments.length;\r\n if (!length) {\r\n return [];\r\n }\r\n var args = Array(length - 1),\r\n array = arguments[0],\r\n index = length;\r\n\r\n while (index--) {\r\n args[index - 1] = arguments[index];\r\n }\r\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\r\n }\r\n\r\n /**\r\n * Creates an array of `array` values not included in the other given arrays\r\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\r\n * for equality comparisons. The order and references of result values are\r\n * determined by the first array.\r\n *\r\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @param {...Array} [values] The values to exclude.\r\n * @returns {Array} Returns the new array of filtered values.\r\n * @see _.without, _.xor\r\n * @example\r\n *\r\n * _.difference([2, 1], [2, 3]);\r\n * // => [1]\r\n */\r\n var difference = baseRest(function(array, values) {\r\n return isArrayLikeObject(array)\r\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\r\n : [];\r\n });\r\n\r\n /**\r\n * This method is like `_.difference` except that it accepts `iteratee` which\r\n * is invoked for each element of `array` and `values` to generate the criterion\r\n * by which they're compared. The order and references of result values are\r\n * determined by the first array. The iteratee is invoked with one argument:\r\n * (value).\r\n *\r\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @param {...Array} [values] The values to exclude.\r\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\r\n * @returns {Array} Returns the new array of filtered values.\r\n * @example\r\n *\r\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\r\n * // => [1.2]\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\r\n * // => [{ 'x': 2 }]\r\n */\r\n var differenceBy = baseRest(function(array, values) {\r\n var iteratee = last(values);\r\n if (isArrayLikeObject(iteratee)) {\r\n iteratee = undefined;\r\n }\r\n return isArrayLikeObject(array)\r\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\r\n : [];\r\n });\r\n\r\n /**\r\n * This method is like `_.difference` except that it accepts `comparator`\r\n * which is invoked to compare elements of `array` to `values`. The order and\r\n * references of result values are determined by the first array. The comparator\r\n * is invoked with two arguments: (arrVal, othVal).\r\n *\r\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @param {...Array} [values] The values to exclude.\r\n * @param {Function} [comparator] The comparator invoked per element.\r\n * @returns {Array} Returns the new array of filtered values.\r\n * @example\r\n *\r\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\r\n *\r\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\r\n * // => [{ 'x': 2, 'y': 1 }]\r\n */\r\n var differenceWith = baseRest(function(array, values) {\r\n var comparator = last(values);\r\n if (isArrayLikeObject(comparator)) {\r\n comparator = undefined;\r\n }\r\n return isArrayLikeObject(array)\r\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\r\n : [];\r\n });\r\n\r\n /**\r\n * Creates a slice of `array` with `n` elements dropped from the beginning.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.5.0\r\n * @category Array\r\n * @param {Array} array The array to query.\r\n * @param {number} [n=1] The number of elements to drop.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\r\n * @returns {Array} Returns the slice of `array`.\r\n * @example\r\n *\r\n * _.drop([1, 2, 3]);\r\n * // => [2, 3]\r\n *\r\n * _.drop([1, 2, 3], 2);\r\n * // => [3]\r\n *\r\n * _.drop([1, 2, 3], 5);\r\n * // => []\r\n *\r\n * _.drop([1, 2, 3], 0);\r\n * // => [1, 2, 3]\r\n */\r\n function drop(array, n, guard) {\r\n var length = array == null ? 0 : array.length;\r\n if (!length) {\r\n return [];\r\n }\r\n n = (guard || n === undefined) ? 1 : toInteger(n);\r\n return baseSlice(array, n < 0 ? 0 : n, length);\r\n }\r\n\r\n /**\r\n * Creates a slice of `array` with `n` elements dropped from the end.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Array\r\n * @param {Array} array The array to query.\r\n * @param {number} [n=1] The number of elements to drop.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\r\n * @returns {Array} Returns the slice of `array`.\r\n * @example\r\n *\r\n * _.dropRight([1, 2, 3]);\r\n * // => [1, 2]\r\n *\r\n * _.dropRight([1, 2, 3], 2);\r\n * // => [1]\r\n *\r\n * _.dropRight([1, 2, 3], 5);\r\n * // => []\r\n *\r\n * _.dropRight([1, 2, 3], 0);\r\n * // => [1, 2, 3]\r\n */\r\n function dropRight(array, n, guard) {\r\n var length = array == null ? 0 : array.length;\r\n if (!length) {\r\n return [];\r\n }\r\n n = (guard || n === undefined) ? 1 : toInteger(n);\r\n n = length - n;\r\n return baseSlice(array, 0, n < 0 ? 0 : n);\r\n }\r\n\r\n /**\r\n * Creates a slice of `array` excluding elements dropped from the end.\r\n * Elements are dropped until `predicate` returns falsey. The predicate is\r\n * invoked with three arguments: (value, index, array).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Array\r\n * @param {Array} array The array to query.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @returns {Array} Returns the slice of `array`.\r\n * @example\r\n *\r\n * var users = [\r\n * { 'user': 'barney', 'active': true },\r\n * { 'user': 'fred', 'active': false },\r\n * { 'user': 'pebbles', 'active': false }\r\n * ];\r\n *\r\n * _.dropRightWhile(users, function(o) { return !o.active; });\r\n * // => objects for ['barney']\r\n *\r\n * // The `_.matches` iteratee shorthand.\r\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\r\n * // => objects for ['barney', 'fred']\r\n *\r\n * // The `_.matchesProperty` iteratee shorthand.\r\n * _.dropRightWhile(users, ['active', false]);\r\n * // => objects for ['barney']\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.dropRightWhile(users, 'active');\r\n * // => objects for ['barney', 'fred', 'pebbles']\r\n */\r\n function dropRightWhile(array, predicate) {\r\n return (array && array.length)\r\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\r\n : [];\r\n }\r\n\r\n /**\r\n * Creates a slice of `array` excluding elements dropped from the beginning.\r\n * Elements are dropped until `predicate` returns falsey. The predicate is\r\n * invoked with three arguments: (value, index, array).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Array\r\n * @param {Array} array The array to query.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @returns {Array} Returns the slice of `array`.\r\n * @example\r\n *\r\n * var users = [\r\n * { 'user': 'barney', 'active': false },\r\n * { 'user': 'fred', 'active': false },\r\n * { 'user': 'pebbles', 'active': true }\r\n * ];\r\n *\r\n * _.dropWhile(users, function(o) { return !o.active; });\r\n * // => objects for ['pebbles']\r\n *\r\n * // The `_.matches` iteratee shorthand.\r\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\r\n * // => objects for ['fred', 'pebbles']\r\n *\r\n * // The `_.matchesProperty` iteratee shorthand.\r\n * _.dropWhile(users, ['active', false]);\r\n * // => objects for ['pebbles']\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.dropWhile(users, 'active');\r\n * // => objects for ['barney', 'fred', 'pebbles']\r\n */\r\n function dropWhile(array, predicate) {\r\n return (array && array.length)\r\n ? baseWhile(array, getIteratee(predicate, 3), true)\r\n : [];\r\n }\r\n\r\n /**\r\n * Fills elements of `array` with `value` from `start` up to, but not\r\n * including, `end`.\r\n *\r\n * **Note:** This method mutates `array`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.2.0\r\n * @category Array\r\n * @param {Array} array The array to fill.\r\n * @param {*} value The value to fill `array` with.\r\n * @param {number} [start=0] The start position.\r\n * @param {number} [end=array.length] The end position.\r\n * @returns {Array} Returns `array`.\r\n * @example\r\n *\r\n * var array = [1, 2, 3];\r\n *\r\n * _.fill(array, 'a');\r\n * console.log(array);\r\n * // => ['a', 'a', 'a']\r\n *\r\n * _.fill(Array(3), 2);\r\n * // => [2, 2, 2]\r\n *\r\n * _.fill([4, 6, 8, 10], '*', 1, 3);\r\n * // => [4, '*', '*', 10]\r\n */\r\n function fill(array, value, start, end) {\r\n var length = array == null ? 0 : array.length;\r\n if (!length) {\r\n return [];\r\n }\r\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\r\n start = 0;\r\n end = length;\r\n }\r\n return baseFill(array, value, start, end);\r\n }\r\n\r\n /**\r\n * This method is like `_.find` except that it returns the index of the first\r\n * element `predicate` returns truthy for instead of the element itself.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 1.1.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @param {number} [fromIndex=0] The index to search from.\r\n * @returns {number} Returns the index of the found element, else `-1`.\r\n * @example\r\n *\r\n * var users = [\r\n * { 'user': 'barney', 'active': false },\r\n * { 'user': 'fred', 'active': false },\r\n * { 'user': 'pebbles', 'active': true }\r\n * ];\r\n *\r\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\r\n * // => 0\r\n *\r\n * // The `_.matches` iteratee shorthand.\r\n * _.findIndex(users, { 'user': 'fred', 'active': false });\r\n * // => 1\r\n *\r\n * // The `_.matchesProperty` iteratee shorthand.\r\n * _.findIndex(users, ['active', false]);\r\n * // => 0\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.findIndex(users, 'active');\r\n * // => 2\r\n */\r\n function findIndex(array, predicate, fromIndex) {\r\n var length = array == null ? 0 : array.length;\r\n if (!length) {\r\n return -1;\r\n }\r\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\r\n if (index < 0) {\r\n index = nativeMax(length + index, 0);\r\n }\r\n return baseFindIndex(array, getIteratee(predicate, 3), index);\r\n }\r\n\r\n /**\r\n * This method is like `_.findIndex` except that it iterates over elements\r\n * of `collection` from right to left.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 2.0.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @param {number} [fromIndex=array.length-1] The index to search from.\r\n * @returns {number} Returns the index of the found element, else `-1`.\r\n * @example\r\n *\r\n * var users = [\r\n * { 'user': 'barney', 'active': true },\r\n * { 'user': 'fred', 'active': false },\r\n * { 'user': 'pebbles', 'active': false }\r\n * ];\r\n *\r\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\r\n * // => 2\r\n *\r\n * // The `_.matches` iteratee shorthand.\r\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\r\n * // => 0\r\n *\r\n * // The `_.matchesProperty` iteratee shorthand.\r\n * _.findLastIndex(users, ['active', false]);\r\n * // => 2\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.findLastIndex(users, 'active');\r\n * // => 0\r\n */\r\n function findLastIndex(array, predicate, fromIndex) {\r\n var length = array == null ? 0 : array.length;\r\n if (!length) {\r\n return -1;\r\n }\r\n var index = length - 1;\r\n if (fromIndex !== undefined) {\r\n index = toInteger(fromIndex);\r\n index = fromIndex < 0\r\n ? nativeMax(length + index, 0)\r\n : nativeMin(index, length - 1);\r\n }\r\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\r\n }\r\n\r\n /**\r\n * Flattens `array` a single level deep.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Array\r\n * @param {Array} array The array to flatten.\r\n * @returns {Array} Returns the new flattened array.\r\n * @example\r\n *\r\n * _.flatten([1, [2, [3, [4]], 5]]);\r\n * // => [1, 2, [3, [4]], 5]\r\n */\r\n function flatten(array) {\r\n var length = array == null ? 0 : array.length;\r\n return length ? baseFlatten(array, 1) : [];\r\n }\r\n\r\n /**\r\n * Recursively flattens `array`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Array\r\n * @param {Array} array The array to flatten.\r\n * @returns {Array} Returns the new flattened array.\r\n * @example\r\n *\r\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\r\n * // => [1, 2, 3, 4, 5]\r\n */\r\n function flattenDeep(array) {\r\n var length = array == null ? 0 : array.length;\r\n return length ? baseFlatten(array, INFINITY) : [];\r\n }\r\n\r\n /**\r\n * Recursively flatten `array` up to `depth` times.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.4.0\r\n * @category Array\r\n * @param {Array} array The array to flatten.\r\n * @param {number} [depth=1] The maximum recursion depth.\r\n * @returns {Array} Returns the new flattened array.\r\n * @example\r\n *\r\n * var array = [1, [2, [3, [4]], 5]];\r\n *\r\n * _.flattenDepth(array, 1);\r\n * // => [1, 2, [3, [4]], 5]\r\n *\r\n * _.flattenDepth(array, 2);\r\n * // => [1, 2, 3, [4], 5]\r\n */\r\n function flattenDepth(array, depth) {\r\n var length = array == null ? 0 : array.length;\r\n if (!length) {\r\n return [];\r\n }\r\n depth = depth === undefined ? 1 : toInteger(depth);\r\n return baseFlatten(array, depth);\r\n }\r\n\r\n /**\r\n * The inverse of `_.toPairs`; this method returns an object composed\r\n * from key-value `pairs`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} pairs The key-value pairs.\r\n * @returns {Object} Returns the new object.\r\n * @example\r\n *\r\n * _.fromPairs([['a', 1], ['b', 2]]);\r\n * // => { 'a': 1, 'b': 2 }\r\n */\r\n function fromPairs(pairs) {\r\n var index = -1,\r\n length = pairs == null ? 0 : pairs.length,\r\n result = {};\r\n\r\n while (++index < length) {\r\n var pair = pairs[index];\r\n result[pair[0]] = pair[1];\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets the first element of `array`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @alias first\r\n * @category Array\r\n * @param {Array} array The array to query.\r\n * @returns {*} Returns the first element of `array`.\r\n * @example\r\n *\r\n * _.head([1, 2, 3]);\r\n * // => 1\r\n *\r\n * _.head([]);\r\n * // => undefined\r\n */\r\n function head(array) {\r\n return (array && array.length) ? array[0] : undefined;\r\n }\r\n\r\n /**\r\n * Gets the index at which the first occurrence of `value` is found in `array`\r\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\r\n * for equality comparisons. If `fromIndex` is negative, it's used as the\r\n * offset from the end of `array`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @param {*} value The value to search for.\r\n * @param {number} [fromIndex=0] The index to search from.\r\n * @returns {number} Returns the index of the matched value, else `-1`.\r\n * @example\r\n *\r\n * _.indexOf([1, 2, 1, 2], 2);\r\n * // => 1\r\n *\r\n * // Search from the `fromIndex`.\r\n * _.indexOf([1, 2, 1, 2], 2, 2);\r\n * // => 3\r\n */\r\n function indexOf(array, value, fromIndex) {\r\n var length = array == null ? 0 : array.length;\r\n if (!length) {\r\n return -1;\r\n }\r\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\r\n if (index < 0) {\r\n index = nativeMax(length + index, 0);\r\n }\r\n return baseIndexOf(array, value, index);\r\n }\r\n\r\n /**\r\n * Gets all but the last element of `array`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Array\r\n * @param {Array} array The array to query.\r\n * @returns {Array} Returns the slice of `array`.\r\n * @example\r\n *\r\n * _.initial([1, 2, 3]);\r\n * // => [1, 2]\r\n */\r\n function initial(array) {\r\n var length = array == null ? 0 : array.length;\r\n return length ? baseSlice(array, 0, -1) : [];\r\n }\r\n\r\n /**\r\n * Creates an array of unique values that are included in all given arrays\r\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\r\n * for equality comparisons. The order and references of result values are\r\n * determined by the first array.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Array\r\n * @param {...Array} [arrays] The arrays to inspect.\r\n * @returns {Array} Returns the new array of intersecting values.\r\n * @example\r\n *\r\n * _.intersection([2, 1], [2, 3]);\r\n * // => [2]\r\n */\r\n var intersection = baseRest(function(arrays) {\r\n var mapped = arrayMap(arrays, castArrayLikeObject);\r\n return (mapped.length && mapped[0] === arrays[0])\r\n ? baseIntersection(mapped)\r\n : [];\r\n });\r\n\r\n /**\r\n * This method is like `_.intersection` except that it accepts `iteratee`\r\n * which is invoked for each element of each `arrays` to generate the criterion\r\n * by which they're compared. The order and references of result values are\r\n * determined by the first array. The iteratee is invoked with one argument:\r\n * (value).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {...Array} [arrays] The arrays to inspect.\r\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\r\n * @returns {Array} Returns the new array of intersecting values.\r\n * @example\r\n *\r\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\r\n * // => [2.1]\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\r\n * // => [{ 'x': 1 }]\r\n */\r\n var intersectionBy = baseRest(function(arrays) {\r\n var iteratee = last(arrays),\r\n mapped = arrayMap(arrays, castArrayLikeObject);\r\n\r\n if (iteratee === last(mapped)) {\r\n iteratee = undefined;\r\n } else {\r\n mapped.pop();\r\n }\r\n return (mapped.length && mapped[0] === arrays[0])\r\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\r\n : [];\r\n });\r\n\r\n /**\r\n * This method is like `_.intersection` except that it accepts `comparator`\r\n * which is invoked to compare elements of `arrays`. The order and references\r\n * of result values are determined by the first array. The comparator is\r\n * invoked with two arguments: (arrVal, othVal).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {...Array} [arrays] The arrays to inspect.\r\n * @param {Function} [comparator] The comparator invoked per element.\r\n * @returns {Array} Returns the new array of intersecting values.\r\n * @example\r\n *\r\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\r\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\r\n *\r\n * _.intersectionWith(objects, others, _.isEqual);\r\n * // => [{ 'x': 1, 'y': 2 }]\r\n */\r\n var intersectionWith = baseRest(function(arrays) {\r\n var comparator = last(arrays),\r\n mapped = arrayMap(arrays, castArrayLikeObject);\r\n\r\n comparator = typeof comparator == 'function' ? comparator : undefined;\r\n if (comparator) {\r\n mapped.pop();\r\n }\r\n return (mapped.length && mapped[0] === arrays[0])\r\n ? baseIntersection(mapped, undefined, comparator)\r\n : [];\r\n });\r\n\r\n /**\r\n * Converts all elements in `array` into a string separated by `separator`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The array to convert.\r\n * @param {string} [separator=','] The element separator.\r\n * @returns {string} Returns the joined string.\r\n * @example\r\n *\r\n * _.join(['a', 'b', 'c'], '~');\r\n * // => 'a~b~c'\r\n */\r\n function join(array, separator) {\r\n return array == null ? '' : nativeJoin.call(array, separator);\r\n }\r\n\r\n /**\r\n * Gets the last element of `array`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Array\r\n * @param {Array} array The array to query.\r\n * @returns {*} Returns the last element of `array`.\r\n * @example\r\n *\r\n * _.last([1, 2, 3]);\r\n * // => 3\r\n */\r\n function last(array) {\r\n var length = array == null ? 0 : array.length;\r\n return length ? array[length - 1] : undefined;\r\n }\r\n\r\n /**\r\n * This method is like `_.indexOf` except that it iterates over elements of\r\n * `array` from right to left.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @param {*} value The value to search for.\r\n * @param {number} [fromIndex=array.length-1] The index to search from.\r\n * @returns {number} Returns the index of the matched value, else `-1`.\r\n * @example\r\n *\r\n * _.lastIndexOf([1, 2, 1, 2], 2);\r\n * // => 3\r\n *\r\n * // Search from the `fromIndex`.\r\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\r\n * // => 1\r\n */\r\n function lastIndexOf(array, value, fromIndex) {\r\n var length = array == null ? 0 : array.length;\r\n if (!length) {\r\n return -1;\r\n }\r\n var index = length;\r\n if (fromIndex !== undefined) {\r\n index = toInteger(fromIndex);\r\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\r\n }\r\n return value === value\r\n ? strictLastIndexOf(array, value, index)\r\n : baseFindIndex(array, baseIsNaN, index, true);\r\n }\r\n\r\n /**\r\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\r\n * element from the end is returned.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.11.0\r\n * @category Array\r\n * @param {Array} array The array to query.\r\n * @param {number} [n=0] The index of the element to return.\r\n * @returns {*} Returns the nth element of `array`.\r\n * @example\r\n *\r\n * var array = ['a', 'b', 'c', 'd'];\r\n *\r\n * _.nth(array, 1);\r\n * // => 'b'\r\n *\r\n * _.nth(array, -2);\r\n * // => 'c';\r\n */\r\n function nth(array, n) {\r\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\r\n }\r\n\r\n /**\r\n * Removes all given values from `array` using\r\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\r\n * for equality comparisons.\r\n *\r\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\r\n * to remove elements from an array by predicate.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 2.0.0\r\n * @category Array\r\n * @param {Array} array The array to modify.\r\n * @param {...*} [values] The values to remove.\r\n * @returns {Array} Returns `array`.\r\n * @example\r\n *\r\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\r\n *\r\n * _.pull(array, 'a', 'c');\r\n * console.log(array);\r\n * // => ['b', 'b']\r\n */\r\n var pull = baseRest(pullAll);\r\n\r\n /**\r\n * This method is like `_.pull` except that it accepts an array of values to remove.\r\n *\r\n * **Note:** Unlike `_.difference`, this method mutates `array`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The array to modify.\r\n * @param {Array} values The values to remove.\r\n * @returns {Array} Returns `array`.\r\n * @example\r\n *\r\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\r\n *\r\n * _.pullAll(array, ['a', 'c']);\r\n * console.log(array);\r\n * // => ['b', 'b']\r\n */\r\n function pullAll(array, values) {\r\n return (array && array.length && values && values.length)\r\n ? basePullAll(array, values)\r\n : array;\r\n }\r\n\r\n /**\r\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\r\n * invoked for each element of `array` and `values` to generate the criterion\r\n * by which they're compared. The iteratee is invoked with one argument: (value).\r\n *\r\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The array to modify.\r\n * @param {Array} values The values to remove.\r\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\r\n * @returns {Array} Returns `array`.\r\n * @example\r\n *\r\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\r\n *\r\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\r\n * console.log(array);\r\n * // => [{ 'x': 2 }]\r\n */\r\n function pullAllBy(array, values, iteratee) {\r\n return (array && array.length && values && values.length)\r\n ? basePullAll(array, values, getIteratee(iteratee, 2))\r\n : array;\r\n }\r\n\r\n /**\r\n * This method is like `_.pullAll` except that it accepts `comparator` which\r\n * is invoked to compare elements of `array` to `values`. The comparator is\r\n * invoked with two arguments: (arrVal, othVal).\r\n *\r\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.6.0\r\n * @category Array\r\n * @param {Array} array The array to modify.\r\n * @param {Array} values The values to remove.\r\n * @param {Function} [comparator] The comparator invoked per element.\r\n * @returns {Array} Returns `array`.\r\n * @example\r\n *\r\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\r\n *\r\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\r\n * console.log(array);\r\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\r\n */\r\n function pullAllWith(array, values, comparator) {\r\n return (array && array.length && values && values.length)\r\n ? basePullAll(array, values, undefined, comparator)\r\n : array;\r\n }\r\n\r\n /**\r\n * Removes elements from `array` corresponding to `indexes` and returns an\r\n * array of removed elements.\r\n *\r\n * **Note:** Unlike `_.at`, this method mutates `array`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Array\r\n * @param {Array} array The array to modify.\r\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\r\n * @returns {Array} Returns the new array of removed elements.\r\n * @example\r\n *\r\n * var array = ['a', 'b', 'c', 'd'];\r\n * var pulled = _.pullAt(array, [1, 3]);\r\n *\r\n * console.log(array);\r\n * // => ['a', 'c']\r\n *\r\n * console.log(pulled);\r\n * // => ['b', 'd']\r\n */\r\n var pullAt = flatRest(function(array, indexes) {\r\n var length = array == null ? 0 : array.length,\r\n result = baseAt(array, indexes);\r\n\r\n basePullAt(array, arrayMap(indexes, function(index) {\r\n return isIndex(index, length) ? +index : index;\r\n }).sort(compareAscending));\r\n\r\n return result;\r\n });\r\n\r\n /**\r\n * Removes all elements from `array` that `predicate` returns truthy for\r\n * and returns an array of the removed elements. The predicate is invoked\r\n * with three arguments: (value, index, array).\r\n *\r\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\r\n * to pull elements from an array by value.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 2.0.0\r\n * @category Array\r\n * @param {Array} array The array to modify.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @returns {Array} Returns the new array of removed elements.\r\n * @example\r\n *\r\n * var array = [1, 2, 3, 4];\r\n * var evens = _.remove(array, function(n) {\r\n * return n % 2 == 0;\r\n * });\r\n *\r\n * console.log(array);\r\n * // => [1, 3]\r\n *\r\n * console.log(evens);\r\n * // => [2, 4]\r\n */\r\n function remove(array, predicate) {\r\n var result = [];\r\n if (!(array && array.length)) {\r\n return result;\r\n }\r\n var index = -1,\r\n indexes = [],\r\n length = array.length;\r\n\r\n predicate = getIteratee(predicate, 3);\r\n while (++index < length) {\r\n var value = array[index];\r\n if (predicate(value, index, array)) {\r\n result.push(value);\r\n indexes.push(index);\r\n }\r\n }\r\n basePullAt(array, indexes);\r\n return result;\r\n }\r\n\r\n /**\r\n * Reverses `array` so that the first element becomes the last, the second\r\n * element becomes the second to last, and so on.\r\n *\r\n * **Note:** This method mutates `array` and is based on\r\n * [`Array#reverse`](https://mdn.io/Array/reverse).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The array to modify.\r\n * @returns {Array} Returns `array`.\r\n * @example\r\n *\r\n * var array = [1, 2, 3];\r\n *\r\n * _.reverse(array);\r\n * // => [3, 2, 1]\r\n *\r\n * console.log(array);\r\n * // => [3, 2, 1]\r\n */\r\n function reverse(array) {\r\n return array == null ? array : nativeReverse.call(array);\r\n }\r\n\r\n /**\r\n * Creates a slice of `array` from `start` up to, but not including, `end`.\r\n *\r\n * **Note:** This method is used instead of\r\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\r\n * returned.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Array\r\n * @param {Array} array The array to slice.\r\n * @param {number} [start=0] The start position.\r\n * @param {number} [end=array.length] The end position.\r\n * @returns {Array} Returns the slice of `array`.\r\n */\r\n function slice(array, start, end) {\r\n var length = array == null ? 0 : array.length;\r\n if (!length) {\r\n return [];\r\n }\r\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\r\n start = 0;\r\n end = length;\r\n }\r\n else {\r\n start = start == null ? 0 : toInteger(start);\r\n end = end === undefined ? length : toInteger(end);\r\n }\r\n return baseSlice(array, start, end);\r\n }\r\n\r\n /**\r\n * Uses a binary search to determine the lowest index at which `value`\r\n * should be inserted into `array` in order to maintain its sort order.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Array\r\n * @param {Array} array The sorted array to inspect.\r\n * @param {*} value The value to evaluate.\r\n * @returns {number} Returns the index at which `value` should be inserted\r\n * into `array`.\r\n * @example\r\n *\r\n * _.sortedIndex([30, 50], 40);\r\n * // => 1\r\n */\r\n function sortedIndex(array, value) {\r\n return baseSortedIndex(array, value);\r\n }\r\n\r\n /**\r\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\r\n * which is invoked for `value` and each element of `array` to compute their\r\n * sort ranking. The iteratee is invoked with one argument: (value).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The sorted array to inspect.\r\n * @param {*} value The value to evaluate.\r\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\r\n * @returns {number} Returns the index at which `value` should be inserted\r\n * into `array`.\r\n * @example\r\n *\r\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\r\n *\r\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\r\n * // => 0\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\r\n * // => 0\r\n */\r\n function sortedIndexBy(array, value, iteratee) {\r\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\r\n }\r\n\r\n /**\r\n * This method is like `_.indexOf` except that it performs a binary\r\n * search on a sorted `array`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @param {*} value The value to search for.\r\n * @returns {number} Returns the index of the matched value, else `-1`.\r\n * @example\r\n *\r\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\r\n * // => 1\r\n */\r\n function sortedIndexOf(array, value) {\r\n var length = array == null ? 0 : array.length;\r\n if (length) {\r\n var index = baseSortedIndex(array, value);\r\n if (index < length && eq(array[index], value)) {\r\n return index;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * This method is like `_.sortedIndex` except that it returns the highest\r\n * index at which `value` should be inserted into `array` in order to\r\n * maintain its sort order.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Array\r\n * @param {Array} array The sorted array to inspect.\r\n * @param {*} value The value to evaluate.\r\n * @returns {number} Returns the index at which `value` should be inserted\r\n * into `array`.\r\n * @example\r\n *\r\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\r\n * // => 4\r\n */\r\n function sortedLastIndex(array, value) {\r\n return baseSortedIndex(array, value, true);\r\n }\r\n\r\n /**\r\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\r\n * which is invoked for `value` and each element of `array` to compute their\r\n * sort ranking. The iteratee is invoked with one argument: (value).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The sorted array to inspect.\r\n * @param {*} value The value to evaluate.\r\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\r\n * @returns {number} Returns the index at which `value` should be inserted\r\n * into `array`.\r\n * @example\r\n *\r\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\r\n *\r\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\r\n * // => 1\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\r\n * // => 1\r\n */\r\n function sortedLastIndexBy(array, value, iteratee) {\r\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\r\n }\r\n\r\n /**\r\n * This method is like `_.lastIndexOf` except that it performs a binary\r\n * search on a sorted `array`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @param {*} value The value to search for.\r\n * @returns {number} Returns the index of the matched value, else `-1`.\r\n * @example\r\n *\r\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\r\n * // => 3\r\n */\r\n function sortedLastIndexOf(array, value) {\r\n var length = array == null ? 0 : array.length;\r\n if (length) {\r\n var index = baseSortedIndex(array, value, true) - 1;\r\n if (eq(array[index], value)) {\r\n return index;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * This method is like `_.uniq` except that it's designed and optimized\r\n * for sorted arrays.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @returns {Array} Returns the new duplicate free array.\r\n * @example\r\n *\r\n * _.sortedUniq([1, 1, 2]);\r\n * // => [1, 2]\r\n */\r\n function sortedUniq(array) {\r\n return (array && array.length)\r\n ? baseSortedUniq(array)\r\n : [];\r\n }\r\n\r\n /**\r\n * This method is like `_.uniqBy` except that it's designed and optimized\r\n * for sorted arrays.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @param {Function} [iteratee] The iteratee invoked per element.\r\n * @returns {Array} Returns the new duplicate free array.\r\n * @example\r\n *\r\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\r\n * // => [1.1, 2.3]\r\n */\r\n function sortedUniqBy(array, iteratee) {\r\n return (array && array.length)\r\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\r\n : [];\r\n }\r\n\r\n /**\r\n * Gets all but the first element of `array`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The array to query.\r\n * @returns {Array} Returns the slice of `array`.\r\n * @example\r\n *\r\n * _.tail([1, 2, 3]);\r\n * // => [2, 3]\r\n */\r\n function tail(array) {\r\n var length = array == null ? 0 : array.length;\r\n return length ? baseSlice(array, 1, length) : [];\r\n }\r\n\r\n /**\r\n * Creates a slice of `array` with `n` elements taken from the beginning.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Array\r\n * @param {Array} array The array to query.\r\n * @param {number} [n=1] The number of elements to take.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\r\n * @returns {Array} Returns the slice of `array`.\r\n * @example\r\n *\r\n * _.take([1, 2, 3]);\r\n * // => [1]\r\n *\r\n * _.take([1, 2, 3], 2);\r\n * // => [1, 2]\r\n *\r\n * _.take([1, 2, 3], 5);\r\n * // => [1, 2, 3]\r\n *\r\n * _.take([1, 2, 3], 0);\r\n * // => []\r\n */\r\n function take(array, n, guard) {\r\n if (!(array && array.length)) {\r\n return [];\r\n }\r\n n = (guard || n === undefined) ? 1 : toInteger(n);\r\n return baseSlice(array, 0, n < 0 ? 0 : n);\r\n }\r\n\r\n /**\r\n * Creates a slice of `array` with `n` elements taken from the end.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Array\r\n * @param {Array} array The array to query.\r\n * @param {number} [n=1] The number of elements to take.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\r\n * @returns {Array} Returns the slice of `array`.\r\n * @example\r\n *\r\n * _.takeRight([1, 2, 3]);\r\n * // => [3]\r\n *\r\n * _.takeRight([1, 2, 3], 2);\r\n * // => [2, 3]\r\n *\r\n * _.takeRight([1, 2, 3], 5);\r\n * // => [1, 2, 3]\r\n *\r\n * _.takeRight([1, 2, 3], 0);\r\n * // => []\r\n */\r\n function takeRight(array, n, guard) {\r\n var length = array == null ? 0 : array.length;\r\n if (!length) {\r\n return [];\r\n }\r\n n = (guard || n === undefined) ? 1 : toInteger(n);\r\n n = length - n;\r\n return baseSlice(array, n < 0 ? 0 : n, length);\r\n }\r\n\r\n /**\r\n * Creates a slice of `array` with elements taken from the end. Elements are\r\n * taken until `predicate` returns falsey. The predicate is invoked with\r\n * three arguments: (value, index, array).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Array\r\n * @param {Array} array The array to query.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @returns {Array} Returns the slice of `array`.\r\n * @example\r\n *\r\n * var users = [\r\n * { 'user': 'barney', 'active': true },\r\n * { 'user': 'fred', 'active': false },\r\n * { 'user': 'pebbles', 'active': false }\r\n * ];\r\n *\r\n * _.takeRightWhile(users, function(o) { return !o.active; });\r\n * // => objects for ['fred', 'pebbles']\r\n *\r\n * // The `_.matches` iteratee shorthand.\r\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\r\n * // => objects for ['pebbles']\r\n *\r\n * // The `_.matchesProperty` iteratee shorthand.\r\n * _.takeRightWhile(users, ['active', false]);\r\n * // => objects for ['fred', 'pebbles']\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.takeRightWhile(users, 'active');\r\n * // => []\r\n */\r\n function takeRightWhile(array, predicate) {\r\n return (array && array.length)\r\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\r\n : [];\r\n }\r\n\r\n /**\r\n * Creates a slice of `array` with elements taken from the beginning. Elements\r\n * are taken until `predicate` returns falsey. The predicate is invoked with\r\n * three arguments: (value, index, array).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Array\r\n * @param {Array} array The array to query.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @returns {Array} Returns the slice of `array`.\r\n * @example\r\n *\r\n * var users = [\r\n * { 'user': 'barney', 'active': false },\r\n * { 'user': 'fred', 'active': false },\r\n * { 'user': 'pebbles', 'active': true }\r\n * ];\r\n *\r\n * _.takeWhile(users, function(o) { return !o.active; });\r\n * // => objects for ['barney', 'fred']\r\n *\r\n * // The `_.matches` iteratee shorthand.\r\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\r\n * // => objects for ['barney']\r\n *\r\n * // The `_.matchesProperty` iteratee shorthand.\r\n * _.takeWhile(users, ['active', false]);\r\n * // => objects for ['barney', 'fred']\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.takeWhile(users, 'active');\r\n * // => []\r\n */\r\n function takeWhile(array, predicate) {\r\n return (array && array.length)\r\n ? baseWhile(array, getIteratee(predicate, 3))\r\n : [];\r\n }\r\n\r\n /**\r\n * Creates an array of unique values, in order, from all given arrays using\r\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\r\n * for equality comparisons.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Array\r\n * @param {...Array} [arrays] The arrays to inspect.\r\n * @returns {Array} Returns the new array of combined values.\r\n * @example\r\n *\r\n * _.union([2], [1, 2]);\r\n * // => [2, 1]\r\n */\r\n var union = baseRest(function(arrays) {\r\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\r\n });\r\n\r\n /**\r\n * This method is like `_.union` except that it accepts `iteratee` which is\r\n * invoked for each element of each `arrays` to generate the criterion by\r\n * which uniqueness is computed. Result values are chosen from the first\r\n * array in which the value occurs. The iteratee is invoked with one argument:\r\n * (value).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {...Array} [arrays] The arrays to inspect.\r\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\r\n * @returns {Array} Returns the new array of combined values.\r\n * @example\r\n *\r\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\r\n * // => [2.1, 1.2]\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\r\n * // => [{ 'x': 1 }, { 'x': 2 }]\r\n */\r\n var unionBy = baseRest(function(arrays) {\r\n var iteratee = last(arrays);\r\n if (isArrayLikeObject(iteratee)) {\r\n iteratee = undefined;\r\n }\r\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\r\n });\r\n\r\n /**\r\n * This method is like `_.union` except that it accepts `comparator` which\r\n * is invoked to compare elements of `arrays`. Result values are chosen from\r\n * the first array in which the value occurs. The comparator is invoked\r\n * with two arguments: (arrVal, othVal).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {...Array} [arrays] The arrays to inspect.\r\n * @param {Function} [comparator] The comparator invoked per element.\r\n * @returns {Array} Returns the new array of combined values.\r\n * @example\r\n *\r\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\r\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\r\n *\r\n * _.unionWith(objects, others, _.isEqual);\r\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\r\n */\r\n var unionWith = baseRest(function(arrays) {\r\n var comparator = last(arrays);\r\n comparator = typeof comparator == 'function' ? comparator : undefined;\r\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\r\n });\r\n\r\n /**\r\n * Creates a duplicate-free version of an array, using\r\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\r\n * for equality comparisons, in which only the first occurrence of each element\r\n * is kept. The order of result values is determined by the order they occur\r\n * in the array.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @returns {Array} Returns the new duplicate free array.\r\n * @example\r\n *\r\n * _.uniq([2, 1, 2]);\r\n * // => [2, 1]\r\n */\r\n function uniq(array) {\r\n return (array && array.length) ? baseUniq(array) : [];\r\n }\r\n\r\n /**\r\n * This method is like `_.uniq` except that it accepts `iteratee` which is\r\n * invoked for each element in `array` to generate the criterion by which\r\n * uniqueness is computed. The order of result values is determined by the\r\n * order they occur in the array. The iteratee is invoked with one argument:\r\n * (value).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\r\n * @returns {Array} Returns the new duplicate free array.\r\n * @example\r\n *\r\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\r\n * // => [2.1, 1.2]\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\r\n * // => [{ 'x': 1 }, { 'x': 2 }]\r\n */\r\n function uniqBy(array, iteratee) {\r\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\r\n }\r\n\r\n /**\r\n * This method is like `_.uniq` except that it accepts `comparator` which\r\n * is invoked to compare elements of `array`. The order of result values is\r\n * determined by the order they occur in the array.The comparator is invoked\r\n * with two arguments: (arrVal, othVal).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @param {Function} [comparator] The comparator invoked per element.\r\n * @returns {Array} Returns the new duplicate free array.\r\n * @example\r\n *\r\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\r\n *\r\n * _.uniqWith(objects, _.isEqual);\r\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\r\n */\r\n function uniqWith(array, comparator) {\r\n comparator = typeof comparator == 'function' ? comparator : undefined;\r\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\r\n }\r\n\r\n /**\r\n * This method is like `_.zip` except that it accepts an array of grouped\r\n * elements and creates an array regrouping the elements to their pre-zip\r\n * configuration.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 1.2.0\r\n * @category Array\r\n * @param {Array} array The array of grouped elements to process.\r\n * @returns {Array} Returns the new array of regrouped elements.\r\n * @example\r\n *\r\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\r\n * // => [['a', 1, true], ['b', 2, false]]\r\n *\r\n * _.unzip(zipped);\r\n * // => [['a', 'b'], [1, 2], [true, false]]\r\n */\r\n function unzip(array) {\r\n if (!(array && array.length)) {\r\n return [];\r\n }\r\n var length = 0;\r\n array = arrayFilter(array, function(group) {\r\n if (isArrayLikeObject(group)) {\r\n length = nativeMax(group.length, length);\r\n return true;\r\n }\r\n });\r\n return baseTimes(length, function(index) {\r\n return arrayMap(array, baseProperty(index));\r\n });\r\n }\r\n\r\n /**\r\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\r\n * how regrouped values should be combined. The iteratee is invoked with the\r\n * elements of each group: (...group).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.8.0\r\n * @category Array\r\n * @param {Array} array The array of grouped elements to process.\r\n * @param {Function} [iteratee=_.identity] The function to combine\r\n * regrouped values.\r\n * @returns {Array} Returns the new array of regrouped elements.\r\n * @example\r\n *\r\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\r\n * // => [[1, 10, 100], [2, 20, 200]]\r\n *\r\n * _.unzipWith(zipped, _.add);\r\n * // => [3, 30, 300]\r\n */\r\n function unzipWith(array, iteratee) {\r\n if (!(array && array.length)) {\r\n return [];\r\n }\r\n var result = unzip(array);\r\n if (iteratee == null) {\r\n return result;\r\n }\r\n return arrayMap(result, function(group) {\r\n return apply(iteratee, undefined, group);\r\n });\r\n }\r\n\r\n /**\r\n * Creates an array excluding all given values using\r\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\r\n * for equality comparisons.\r\n *\r\n * **Note:** Unlike `_.pull`, this method returns a new array.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Array\r\n * @param {Array} array The array to inspect.\r\n * @param {...*} [values] The values to exclude.\r\n * @returns {Array} Returns the new array of filtered values.\r\n * @see _.difference, _.xor\r\n * @example\r\n *\r\n * _.without([2, 1, 2, 3], 1, 2);\r\n * // => [3]\r\n */\r\n var without = baseRest(function(array, values) {\r\n return isArrayLikeObject(array)\r\n ? baseDifference(array, values)\r\n : [];\r\n });\r\n\r\n /**\r\n * Creates an array of unique values that is the\r\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\r\n * of the given arrays. The order of result values is determined by the order\r\n * they occur in the arrays.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 2.4.0\r\n * @category Array\r\n * @param {...Array} [arrays] The arrays to inspect.\r\n * @returns {Array} Returns the new array of filtered values.\r\n * @see _.difference, _.without\r\n * @example\r\n *\r\n * _.xor([2, 1], [2, 3]);\r\n * // => [1, 3]\r\n */\r\n var xor = baseRest(function(arrays) {\r\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\r\n });\r\n\r\n /**\r\n * This method is like `_.xor` except that it accepts `iteratee` which is\r\n * invoked for each element of each `arrays` to generate the criterion by\r\n * which by which they're compared. The order of result values is determined\r\n * by the order they occur in the arrays. The iteratee is invoked with one\r\n * argument: (value).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {...Array} [arrays] The arrays to inspect.\r\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\r\n * @returns {Array} Returns the new array of filtered values.\r\n * @example\r\n *\r\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\r\n * // => [1.2, 3.4]\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\r\n * // => [{ 'x': 2 }]\r\n */\r\n var xorBy = baseRest(function(arrays) {\r\n var iteratee = last(arrays);\r\n if (isArrayLikeObject(iteratee)) {\r\n iteratee = undefined;\r\n }\r\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\r\n });\r\n\r\n /**\r\n * This method is like `_.xor` except that it accepts `comparator` which is\r\n * invoked to compare elements of `arrays`. The order of result values is\r\n * determined by the order they occur in the arrays. The comparator is invoked\r\n * with two arguments: (arrVal, othVal).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Array\r\n * @param {...Array} [arrays] The arrays to inspect.\r\n * @param {Function} [comparator] The comparator invoked per element.\r\n * @returns {Array} Returns the new array of filtered values.\r\n * @example\r\n *\r\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\r\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\r\n *\r\n * _.xorWith(objects, others, _.isEqual);\r\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\r\n */\r\n var xorWith = baseRest(function(arrays) {\r\n var comparator = last(arrays);\r\n comparator = typeof comparator == 'function' ? comparator : undefined;\r\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\r\n });\r\n\r\n /**\r\n * Creates an array of grouped elements, the first of which contains the\r\n * first elements of the given arrays, the second of which contains the\r\n * second elements of the given arrays, and so on.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Array\r\n * @param {...Array} [arrays] The arrays to process.\r\n * @returns {Array} Returns the new array of grouped elements.\r\n * @example\r\n *\r\n * _.zip(['a', 'b'], [1, 2], [true, false]);\r\n * // => [['a', 1, true], ['b', 2, false]]\r\n */\r\n var zip = baseRest(unzip);\r\n\r\n /**\r\n * This method is like `_.fromPairs` except that it accepts two arrays,\r\n * one of property identifiers and one of corresponding values.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.4.0\r\n * @category Array\r\n * @param {Array} [props=[]] The property identifiers.\r\n * @param {Array} [values=[]] The property values.\r\n * @returns {Object} Returns the new object.\r\n * @example\r\n *\r\n * _.zipObject(['a', 'b'], [1, 2]);\r\n * // => { 'a': 1, 'b': 2 }\r\n */\r\n function zipObject(props, values) {\r\n return baseZipObject(props || [], values || [], assignValue);\r\n }\r\n\r\n /**\r\n * This method is like `_.zipObject` except that it supports property paths.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.1.0\r\n * @category Array\r\n * @param {Array} [props=[]] The property identifiers.\r\n * @param {Array} [values=[]] The property values.\r\n * @returns {Object} Returns the new object.\r\n * @example\r\n *\r\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\r\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\r\n */\r\n function zipObjectDeep(props, values) {\r\n return baseZipObject(props || [], values || [], baseSet);\r\n }\r\n\r\n /**\r\n * This method is like `_.zip` except that it accepts `iteratee` to specify\r\n * how grouped values should be combined. The iteratee is invoked with the\r\n * elements of each group: (...group).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.8.0\r\n * @category Array\r\n * @param {...Array} [arrays] The arrays to process.\r\n * @param {Function} [iteratee=_.identity] The function to combine\r\n * grouped values.\r\n * @returns {Array} Returns the new array of grouped elements.\r\n * @example\r\n *\r\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\r\n * return a + b + c;\r\n * });\r\n * // => [111, 222]\r\n */\r\n var zipWith = baseRest(function(arrays) {\r\n var length = arrays.length,\r\n iteratee = length > 1 ? arrays[length - 1] : undefined;\r\n\r\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\r\n return unzipWith(arrays, iteratee);\r\n });\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\r\n * chain sequences enabled. The result of such sequences must be unwrapped\r\n * with `_#value`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 1.3.0\r\n * @category Seq\r\n * @param {*} value The value to wrap.\r\n * @returns {Object} Returns the new `lodash` wrapper instance.\r\n * @example\r\n *\r\n * var users = [\r\n * { 'user': 'barney', 'age': 36 },\r\n * { 'user': 'fred', 'age': 40 },\r\n * { 'user': 'pebbles', 'age': 1 }\r\n * ];\r\n *\r\n * var youngest = _\r\n * .chain(users)\r\n * .sortBy('age')\r\n * .map(function(o) {\r\n * return o.user + ' is ' + o.age;\r\n * })\r\n * .head()\r\n * .value();\r\n * // => 'pebbles is 1'\r\n */\r\n function chain(value) {\r\n var result = lodash(value);\r\n result.__chain__ = true;\r\n return result;\r\n }\r\n\r\n /**\r\n * This method invokes `interceptor` and returns `value`. The interceptor\r\n * is invoked with one argument; (value). The purpose of this method is to\r\n * \"tap into\" a method chain sequence in order to modify intermediate results.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Seq\r\n * @param {*} value The value to provide to `interceptor`.\r\n * @param {Function} interceptor The function to invoke.\r\n * @returns {*} Returns `value`.\r\n * @example\r\n *\r\n * _([1, 2, 3])\r\n * .tap(function(array) {\r\n * // Mutate input array.\r\n * array.pop();\r\n * })\r\n * .reverse()\r\n * .value();\r\n * // => [2, 1]\r\n */\r\n function tap(value, interceptor) {\r\n interceptor(value);\r\n return value;\r\n }\r\n\r\n /**\r\n * This method is like `_.tap` except that it returns the result of `interceptor`.\r\n * The purpose of this method is to \"pass thru\" values replacing intermediate\r\n * results in a method chain sequence.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Seq\r\n * @param {*} value The value to provide to `interceptor`.\r\n * @param {Function} interceptor The function to invoke.\r\n * @returns {*} Returns the result of `interceptor`.\r\n * @example\r\n *\r\n * _(' abc ')\r\n * .chain()\r\n * .trim()\r\n * .thru(function(value) {\r\n * return [value];\r\n * })\r\n * .value();\r\n * // => ['abc']\r\n */\r\n function thru(value, interceptor) {\r\n return interceptor(value);\r\n }\r\n\r\n /**\r\n * This method is the wrapper version of `_.at`.\r\n *\r\n * @name at\r\n * @memberOf _\r\n * @since 1.0.0\r\n * @category Seq\r\n * @param {...(string|string[])} [paths] The property paths to pick.\r\n * @returns {Object} Returns the new `lodash` wrapper instance.\r\n * @example\r\n *\r\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\r\n *\r\n * _(object).at(['a[0].b.c', 'a[1]']).value();\r\n * // => [3, 4]\r\n */\r\n var wrapperAt = flatRest(function(paths) {\r\n var length = paths.length,\r\n start = length ? paths[0] : 0,\r\n value = this.__wrapped__,\r\n interceptor = function(object) { return baseAt(object, paths); };\r\n\r\n if (length > 1 || this.__actions__.length ||\r\n !(value instanceof LazyWrapper) || !isIndex(start)) {\r\n return this.thru(interceptor);\r\n }\r\n value = value.slice(start, +start + (length ? 1 : 0));\r\n value.__actions__.push({\r\n 'func': thru,\r\n 'args': [interceptor],\r\n 'thisArg': undefined\r\n });\r\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\r\n if (length && !array.length) {\r\n array.push(undefined);\r\n }\r\n return array;\r\n });\r\n });\r\n\r\n /**\r\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\r\n *\r\n * @name chain\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Seq\r\n * @returns {Object} Returns the new `lodash` wrapper instance.\r\n * @example\r\n *\r\n * var users = [\r\n * { 'user': 'barney', 'age': 36 },\r\n * { 'user': 'fred', 'age': 40 }\r\n * ];\r\n *\r\n * // A sequence without explicit chaining.\r\n * _(users).head();\r\n * // => { 'user': 'barney', 'age': 36 }\r\n *\r\n * // A sequence with explicit chaining.\r\n * _(users)\r\n * .chain()\r\n * .head()\r\n * .pick('user')\r\n * .value();\r\n * // => { 'user': 'barney' }\r\n */\r\n function wrapperChain() {\r\n return chain(this);\r\n }\r\n\r\n /**\r\n * Executes the chain sequence and returns the wrapped result.\r\n *\r\n * @name commit\r\n * @memberOf _\r\n * @since 3.2.0\r\n * @category Seq\r\n * @returns {Object} Returns the new `lodash` wrapper instance.\r\n * @example\r\n *\r\n * var array = [1, 2];\r\n * var wrapped = _(array).push(3);\r\n *\r\n * console.log(array);\r\n * // => [1, 2]\r\n *\r\n * wrapped = wrapped.commit();\r\n * console.log(array);\r\n * // => [1, 2, 3]\r\n *\r\n * wrapped.last();\r\n * // => 3\r\n *\r\n * console.log(array);\r\n * // => [1, 2, 3]\r\n */\r\n function wrapperCommit() {\r\n return new LodashWrapper(this.value(), this.__chain__);\r\n }\r\n\r\n /**\r\n * Gets the next value on a wrapped object following the\r\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\r\n *\r\n * @name next\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Seq\r\n * @returns {Object} Returns the next iterator value.\r\n * @example\r\n *\r\n * var wrapped = _([1, 2]);\r\n *\r\n * wrapped.next();\r\n * // => { 'done': false, 'value': 1 }\r\n *\r\n * wrapped.next();\r\n * // => { 'done': false, 'value': 2 }\r\n *\r\n * wrapped.next();\r\n * // => { 'done': true, 'value': undefined }\r\n */\r\n function wrapperNext() {\r\n if (this.__values__ === undefined) {\r\n this.__values__ = toArray(this.value());\r\n }\r\n var done = this.__index__ >= this.__values__.length,\r\n value = done ? undefined : this.__values__[this.__index__++];\r\n\r\n return { 'done': done, 'value': value };\r\n }\r\n\r\n /**\r\n * Enables the wrapper to be iterable.\r\n *\r\n * @name Symbol.iterator\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Seq\r\n * @returns {Object} Returns the wrapper object.\r\n * @example\r\n *\r\n * var wrapped = _([1, 2]);\r\n *\r\n * wrapped[Symbol.iterator]() === wrapped;\r\n * // => true\r\n *\r\n * Array.from(wrapped);\r\n * // => [1, 2]\r\n */\r\n function wrapperToIterator() {\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\r\n *\r\n * @name plant\r\n * @memberOf _\r\n * @since 3.2.0\r\n * @category Seq\r\n * @param {*} value The value to plant.\r\n * @returns {Object} Returns the new `lodash` wrapper instance.\r\n * @example\r\n *\r\n * function square(n) {\r\n * return n * n;\r\n * }\r\n *\r\n * var wrapped = _([1, 2]).map(square);\r\n * var other = wrapped.plant([3, 4]);\r\n *\r\n * other.value();\r\n * // => [9, 16]\r\n *\r\n * wrapped.value();\r\n * // => [1, 4]\r\n */\r\n function wrapperPlant(value) {\r\n var result,\r\n parent = this;\r\n\r\n while (parent instanceof baseLodash) {\r\n var clone = wrapperClone(parent);\r\n clone.__index__ = 0;\r\n clone.__values__ = undefined;\r\n if (result) {\r\n previous.__wrapped__ = clone;\r\n } else {\r\n result = clone;\r\n }\r\n var previous = clone;\r\n parent = parent.__wrapped__;\r\n }\r\n previous.__wrapped__ = value;\r\n return result;\r\n }\r\n\r\n /**\r\n * This method is the wrapper version of `_.reverse`.\r\n *\r\n * **Note:** This method mutates the wrapped array.\r\n *\r\n * @name reverse\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Seq\r\n * @returns {Object} Returns the new `lodash` wrapper instance.\r\n * @example\r\n *\r\n * var array = [1, 2, 3];\r\n *\r\n * _(array).reverse().value()\r\n * // => [3, 2, 1]\r\n *\r\n * console.log(array);\r\n * // => [3, 2, 1]\r\n */\r\n function wrapperReverse() {\r\n var value = this.__wrapped__;\r\n if (value instanceof LazyWrapper) {\r\n var wrapped = value;\r\n if (this.__actions__.length) {\r\n wrapped = new LazyWrapper(this);\r\n }\r\n wrapped = wrapped.reverse();\r\n wrapped.__actions__.push({\r\n 'func': thru,\r\n 'args': [reverse],\r\n 'thisArg': undefined\r\n });\r\n return new LodashWrapper(wrapped, this.__chain__);\r\n }\r\n return this.thru(reverse);\r\n }\r\n\r\n /**\r\n * Executes the chain sequence to resolve the unwrapped value.\r\n *\r\n * @name value\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @alias toJSON, valueOf\r\n * @category Seq\r\n * @returns {*} Returns the resolved unwrapped value.\r\n * @example\r\n *\r\n * _([1, 2, 3]).value();\r\n * // => [1, 2, 3]\r\n */\r\n function wrapperValue() {\r\n return baseWrapperValue(this.__wrapped__, this.__actions__);\r\n }\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Creates an object composed of keys generated from the results of running\r\n * each element of `collection` thru `iteratee`. The corresponding value of\r\n * each key is the number of times the key was returned by `iteratee`. The\r\n * iteratee is invoked with one argument: (value).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.5.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\r\n * @returns {Object} Returns the composed aggregate object.\r\n * @example\r\n *\r\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\r\n * // => { '4': 1, '6': 2 }\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.countBy(['one', 'two', 'three'], 'length');\r\n * // => { '3': 2, '5': 1 }\r\n */\r\n var countBy = createAggregator(function(result, value, key) {\r\n if (hasOwnProperty.call(result, key)) {\r\n ++result[key];\r\n } else {\r\n baseAssignValue(result, key, 1);\r\n }\r\n });\r\n\r\n /**\r\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\r\n * Iteration is stopped once `predicate` returns falsey. The predicate is\r\n * invoked with three arguments: (value, index|key, collection).\r\n *\r\n * **Note:** This method returns `true` for\r\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\r\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\r\n * elements of empty collections.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\r\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\r\n * else `false`.\r\n * @example\r\n *\r\n * _.every([true, 1, null, 'yes'], Boolean);\r\n * // => false\r\n *\r\n * var users = [\r\n * { 'user': 'barney', 'age': 36, 'active': false },\r\n * { 'user': 'fred', 'age': 40, 'active': false }\r\n * ];\r\n *\r\n * // The `_.matches` iteratee shorthand.\r\n * _.every(users, { 'user': 'barney', 'active': false });\r\n * // => false\r\n *\r\n * // The `_.matchesProperty` iteratee shorthand.\r\n * _.every(users, ['active', false]);\r\n * // => true\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.every(users, 'active');\r\n * // => false\r\n */\r\n function every(collection, predicate, guard) {\r\n var func = isArray(collection) ? arrayEvery : baseEvery;\r\n if (guard && isIterateeCall(collection, predicate, guard)) {\r\n predicate = undefined;\r\n }\r\n return func(collection, getIteratee(predicate, 3));\r\n }\r\n\r\n /**\r\n * Iterates over elements of `collection`, returning an array of all elements\r\n * `predicate` returns truthy for. The predicate is invoked with three\r\n * arguments: (value, index|key, collection).\r\n *\r\n * **Note:** Unlike `_.remove`, this method returns a new array.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @returns {Array} Returns the new filtered array.\r\n * @see _.reject\r\n * @example\r\n *\r\n * var users = [\r\n * { 'user': 'barney', 'age': 36, 'active': true },\r\n * { 'user': 'fred', 'age': 40, 'active': false }\r\n * ];\r\n *\r\n * _.filter(users, function(o) { return !o.active; });\r\n * // => objects for ['fred']\r\n *\r\n * // The `_.matches` iteratee shorthand.\r\n * _.filter(users, { 'age': 36, 'active': true });\r\n * // => objects for ['barney']\r\n *\r\n * // The `_.matchesProperty` iteratee shorthand.\r\n * _.filter(users, ['active', false]);\r\n * // => objects for ['fred']\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.filter(users, 'active');\r\n * // => objects for ['barney']\r\n *\r\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\r\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\r\n * // => objects for ['fred', 'barney']\r\n */\r\n function filter(collection, predicate) {\r\n var func = isArray(collection) ? arrayFilter : baseFilter;\r\n return func(collection, getIteratee(predicate, 3));\r\n }\r\n\r\n /**\r\n * Iterates over elements of `collection`, returning the first element\r\n * `predicate` returns truthy for. The predicate is invoked with three\r\n * arguments: (value, index|key, collection).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to inspect.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @param {number} [fromIndex=0] The index to search from.\r\n * @returns {*} Returns the matched element, else `undefined`.\r\n * @example\r\n *\r\n * var users = [\r\n * { 'user': 'barney', 'age': 36, 'active': true },\r\n * { 'user': 'fred', 'age': 40, 'active': false },\r\n * { 'user': 'pebbles', 'age': 1, 'active': true }\r\n * ];\r\n *\r\n * _.find(users, function(o) { return o.age < 40; });\r\n * // => object for 'barney'\r\n *\r\n * // The `_.matches` iteratee shorthand.\r\n * _.find(users, { 'age': 1, 'active': true });\r\n * // => object for 'pebbles'\r\n *\r\n * // The `_.matchesProperty` iteratee shorthand.\r\n * _.find(users, ['active', false]);\r\n * // => object for 'fred'\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.find(users, 'active');\r\n * // => object for 'barney'\r\n */\r\n var find = createFind(findIndex);\r\n\r\n /**\r\n * This method is like `_.find` except that it iterates over elements of\r\n * `collection` from right to left.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 2.0.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to inspect.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @param {number} [fromIndex=collection.length-1] The index to search from.\r\n * @returns {*} Returns the matched element, else `undefined`.\r\n * @example\r\n *\r\n * _.findLast([1, 2, 3, 4], function(n) {\r\n * return n % 2 == 1;\r\n * });\r\n * // => 3\r\n */\r\n var findLast = createFind(findLastIndex);\r\n\r\n /**\r\n * Creates a flattened array of values by running each element in `collection`\r\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\r\n * with three arguments: (value, index|key, collection).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @returns {Array} Returns the new flattened array.\r\n * @example\r\n *\r\n * function duplicate(n) {\r\n * return [n, n];\r\n * }\r\n *\r\n * _.flatMap([1, 2], duplicate);\r\n * // => [1, 1, 2, 2]\r\n */\r\n function flatMap(collection, iteratee) {\r\n return baseFlatten(map(collection, iteratee), 1);\r\n }\r\n\r\n /**\r\n * This method is like `_.flatMap` except that it recursively flattens the\r\n * mapped results.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.7.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @returns {Array} Returns the new flattened array.\r\n * @example\r\n *\r\n * function duplicate(n) {\r\n * return [[[n, n]]];\r\n * }\r\n *\r\n * _.flatMapDeep([1, 2], duplicate);\r\n * // => [1, 1, 2, 2]\r\n */\r\n function flatMapDeep(collection, iteratee) {\r\n return baseFlatten(map(collection, iteratee), INFINITY);\r\n }\r\n\r\n /**\r\n * This method is like `_.flatMap` except that it recursively flattens the\r\n * mapped results up to `depth` times.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.7.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @param {number} [depth=1] The maximum recursion depth.\r\n * @returns {Array} Returns the new flattened array.\r\n * @example\r\n *\r\n * function duplicate(n) {\r\n * return [[[n, n]]];\r\n * }\r\n *\r\n * _.flatMapDepth([1, 2], duplicate, 2);\r\n * // => [[1, 1], [2, 2]]\r\n */\r\n function flatMapDepth(collection, iteratee, depth) {\r\n depth = depth === undefined ? 1 : toInteger(depth);\r\n return baseFlatten(map(collection, iteratee), depth);\r\n }\r\n\r\n /**\r\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\r\n * The iteratee is invoked with three arguments: (value, index|key, collection).\r\n * Iteratee functions may exit iteration early by explicitly returning `false`.\r\n *\r\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\r\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\r\n * or `_.forOwn` for object iteration.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @alias each\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @returns {Array|Object} Returns `collection`.\r\n * @see _.forEachRight\r\n * @example\r\n *\r\n * _.forEach([1, 2], function(value) {\r\n * console.log(value);\r\n * });\r\n * // => Logs `1` then `2`.\r\n *\r\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\r\n * console.log(key);\r\n * });\r\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\r\n */\r\n function forEach(collection, iteratee) {\r\n var func = isArray(collection) ? arrayEach : baseEach;\r\n return func(collection, getIteratee(iteratee, 3));\r\n }\r\n\r\n /**\r\n * This method is like `_.forEach` except that it iterates over elements of\r\n * `collection` from right to left.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 2.0.0\r\n * @alias eachRight\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @returns {Array|Object} Returns `collection`.\r\n * @see _.forEach\r\n * @example\r\n *\r\n * _.forEachRight([1, 2], function(value) {\r\n * console.log(value);\r\n * });\r\n * // => Logs `2` then `1`.\r\n */\r\n function forEachRight(collection, iteratee) {\r\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\r\n return func(collection, getIteratee(iteratee, 3));\r\n }\r\n\r\n /**\r\n * Creates an object composed of keys generated from the results of running\r\n * each element of `collection` thru `iteratee`. The order of grouped values\r\n * is determined by the order they occur in `collection`. The corresponding\r\n * value of each key is an array of elements responsible for generating the\r\n * key. The iteratee is invoked with one argument: (value).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\r\n * @returns {Object} Returns the composed aggregate object.\r\n * @example\r\n *\r\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\r\n * // => { '4': [4.2], '6': [6.1, 6.3] }\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.groupBy(['one', 'two', 'three'], 'length');\r\n * // => { '3': ['one', 'two'], '5': ['three'] }\r\n */\r\n var groupBy = createAggregator(function(result, value, key) {\r\n if (hasOwnProperty.call(result, key)) {\r\n result[key].push(value);\r\n } else {\r\n baseAssignValue(result, key, [value]);\r\n }\r\n });\r\n\r\n /**\r\n * Checks if `value` is in `collection`. If `collection` is a string, it's\r\n * checked for a substring of `value`, otherwise\r\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\r\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\r\n * the offset from the end of `collection`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Collection\r\n * @param {Array|Object|string} collection The collection to inspect.\r\n * @param {*} value The value to search for.\r\n * @param {number} [fromIndex=0] The index to search from.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\r\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\r\n * @example\r\n *\r\n * _.includes([1, 2, 3], 1);\r\n * // => true\r\n *\r\n * _.includes([1, 2, 3], 1, 2);\r\n * // => false\r\n *\r\n * _.includes({ 'a': 1, 'b': 2 }, 1);\r\n * // => true\r\n *\r\n * _.includes('abcd', 'bc');\r\n * // => true\r\n */\r\n function includes(collection, value, fromIndex, guard) {\r\n collection = isArrayLike(collection) ? collection : values(collection);\r\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\r\n\r\n var length = collection.length;\r\n if (fromIndex < 0) {\r\n fromIndex = nativeMax(length + fromIndex, 0);\r\n }\r\n return isString(collection)\r\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\r\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\r\n }\r\n\r\n /**\r\n * Invokes the method at `path` of each element in `collection`, returning\r\n * an array of the results of each invoked method. Any additional arguments\r\n * are provided to each invoked method. If `path` is a function, it's invoked\r\n * for, and `this` bound to, each element in `collection`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Array|Function|string} path The path of the method to invoke or\r\n * the function invoked per iteration.\r\n * @param {...*} [args] The arguments to invoke each method with.\r\n * @returns {Array} Returns the array of results.\r\n * @example\r\n *\r\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\r\n * // => [[1, 5, 7], [1, 2, 3]]\r\n *\r\n * _.invokeMap([123, 456], String.prototype.split, '');\r\n * // => [['1', '2', '3'], ['4', '5', '6']]\r\n */\r\n var invokeMap = baseRest(function(collection, path, args) {\r\n var index = -1,\r\n isFunc = typeof path == 'function',\r\n result = isArrayLike(collection) ? Array(collection.length) : [];\r\n\r\n baseEach(collection, function(value) {\r\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\r\n });\r\n return result;\r\n });\r\n\r\n /**\r\n * Creates an object composed of keys generated from the results of running\r\n * each element of `collection` thru `iteratee`. The corresponding value of\r\n * each key is the last element responsible for generating the key. The\r\n * iteratee is invoked with one argument: (value).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\r\n * @returns {Object} Returns the composed aggregate object.\r\n * @example\r\n *\r\n * var array = [\r\n * { 'dir': 'left', 'code': 97 },\r\n * { 'dir': 'right', 'code': 100 }\r\n * ];\r\n *\r\n * _.keyBy(array, function(o) {\r\n * return String.fromCharCode(o.code);\r\n * });\r\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\r\n *\r\n * _.keyBy(array, 'dir');\r\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\r\n */\r\n var keyBy = createAggregator(function(result, value, key) {\r\n baseAssignValue(result, key, value);\r\n });\r\n\r\n /**\r\n * Creates an array of values by running each element in `collection` thru\r\n * `iteratee`. The iteratee is invoked with three arguments:\r\n * (value, index|key, collection).\r\n *\r\n * Many lodash methods are guarded to work as iteratees for methods like\r\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\r\n *\r\n * The guarded methods are:\r\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\r\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\r\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\r\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @returns {Array} Returns the new mapped array.\r\n * @example\r\n *\r\n * function square(n) {\r\n * return n * n;\r\n * }\r\n *\r\n * _.map([4, 8], square);\r\n * // => [16, 64]\r\n *\r\n * _.map({ 'a': 4, 'b': 8 }, square);\r\n * // => [16, 64] (iteration order is not guaranteed)\r\n *\r\n * var users = [\r\n * { 'user': 'barney' },\r\n * { 'user': 'fred' }\r\n * ];\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.map(users, 'user');\r\n * // => ['barney', 'fred']\r\n */\r\n function map(collection, iteratee) {\r\n var func = isArray(collection) ? arrayMap : baseMap;\r\n return func(collection, getIteratee(iteratee, 3));\r\n }\r\n\r\n /**\r\n * This method is like `_.sortBy` except that it allows specifying the sort\r\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\r\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\r\n * descending or \"asc\" for ascending sort order of corresponding values.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\r\n * The iteratees to sort by.\r\n * @param {string[]} [orders] The sort orders of `iteratees`.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\r\n * @returns {Array} Returns the new sorted array.\r\n * @example\r\n *\r\n * var users = [\r\n * { 'user': 'fred', 'age': 48 },\r\n * { 'user': 'barney', 'age': 34 },\r\n * { 'user': 'fred', 'age': 40 },\r\n * { 'user': 'barney', 'age': 36 }\r\n * ];\r\n *\r\n * // Sort by `user` in ascending order and by `age` in descending order.\r\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\r\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\r\n */\r\n function orderBy(collection, iteratees, orders, guard) {\r\n if (collection == null) {\r\n return [];\r\n }\r\n if (!isArray(iteratees)) {\r\n iteratees = iteratees == null ? [] : [iteratees];\r\n }\r\n orders = guard ? undefined : orders;\r\n if (!isArray(orders)) {\r\n orders = orders == null ? [] : [orders];\r\n }\r\n return baseOrderBy(collection, iteratees, orders);\r\n }\r\n\r\n /**\r\n * Creates an array of elements split into two groups, the first of which\r\n * contains elements `predicate` returns truthy for, the second of which\r\n * contains elements `predicate` returns falsey for. The predicate is\r\n * invoked with one argument: (value).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @returns {Array} Returns the array of grouped elements.\r\n * @example\r\n *\r\n * var users = [\r\n * { 'user': 'barney', 'age': 36, 'active': false },\r\n * { 'user': 'fred', 'age': 40, 'active': true },\r\n * { 'user': 'pebbles', 'age': 1, 'active': false }\r\n * ];\r\n *\r\n * _.partition(users, function(o) { return o.active; });\r\n * // => objects for [['fred'], ['barney', 'pebbles']]\r\n *\r\n * // The `_.matches` iteratee shorthand.\r\n * _.partition(users, { 'age': 1, 'active': false });\r\n * // => objects for [['pebbles'], ['barney', 'fred']]\r\n *\r\n * // The `_.matchesProperty` iteratee shorthand.\r\n * _.partition(users, ['active', false]);\r\n * // => objects for [['barney', 'pebbles'], ['fred']]\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.partition(users, 'active');\r\n * // => objects for [['fred'], ['barney', 'pebbles']]\r\n */\r\n var partition = createAggregator(function(result, value, key) {\r\n result[key ? 0 : 1].push(value);\r\n }, function() { return [[], []]; });\r\n\r\n /**\r\n * Reduces `collection` to a value which is the accumulated result of running\r\n * each element in `collection` thru `iteratee`, where each successive\r\n * invocation is supplied the return value of the previous. If `accumulator`\r\n * is not given, the first element of `collection` is used as the initial\r\n * value. The iteratee is invoked with four arguments:\r\n * (accumulator, value, index|key, collection).\r\n *\r\n * Many lodash methods are guarded to work as iteratees for methods like\r\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\r\n *\r\n * The guarded methods are:\r\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\r\n * and `sortBy`\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @param {*} [accumulator] The initial value.\r\n * @returns {*} Returns the accumulated value.\r\n * @see _.reduceRight\r\n * @example\r\n *\r\n * _.reduce([1, 2], function(sum, n) {\r\n * return sum + n;\r\n * }, 0);\r\n * // => 3\r\n *\r\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\r\n * (result[value] || (result[value] = [])).push(key);\r\n * return result;\r\n * }, {});\r\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\r\n */\r\n function reduce(collection, iteratee, accumulator) {\r\n var func = isArray(collection) ? arrayReduce : baseReduce,\r\n initAccum = arguments.length < 3;\r\n\r\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\r\n }\r\n\r\n /**\r\n * This method is like `_.reduce` except that it iterates over elements of\r\n * `collection` from right to left.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @param {*} [accumulator] The initial value.\r\n * @returns {*} Returns the accumulated value.\r\n * @see _.reduce\r\n * @example\r\n *\r\n * var array = [[0, 1], [2, 3], [4, 5]];\r\n *\r\n * _.reduceRight(array, function(flattened, other) {\r\n * return flattened.concat(other);\r\n * }, []);\r\n * // => [4, 5, 2, 3, 0, 1]\r\n */\r\n function reduceRight(collection, iteratee, accumulator) {\r\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\r\n initAccum = arguments.length < 3;\r\n\r\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\r\n }\r\n\r\n /**\r\n * The opposite of `_.filter`; this method returns the elements of `collection`\r\n * that `predicate` does **not** return truthy for.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @returns {Array} Returns the new filtered array.\r\n * @see _.filter\r\n * @example\r\n *\r\n * var users = [\r\n * { 'user': 'barney', 'age': 36, 'active': false },\r\n * { 'user': 'fred', 'age': 40, 'active': true }\r\n * ];\r\n *\r\n * _.reject(users, function(o) { return !o.active; });\r\n * // => objects for ['fred']\r\n *\r\n * // The `_.matches` iteratee shorthand.\r\n * _.reject(users, { 'age': 40, 'active': true });\r\n * // => objects for ['barney']\r\n *\r\n * // The `_.matchesProperty` iteratee shorthand.\r\n * _.reject(users, ['active', false]);\r\n * // => objects for ['fred']\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.reject(users, 'active');\r\n * // => objects for ['barney']\r\n */\r\n function reject(collection, predicate) {\r\n var func = isArray(collection) ? arrayFilter : baseFilter;\r\n return func(collection, negate(getIteratee(predicate, 3)));\r\n }\r\n\r\n /**\r\n * Gets a random element from `collection`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 2.0.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to sample.\r\n * @returns {*} Returns the random element.\r\n * @example\r\n *\r\n * _.sample([1, 2, 3, 4]);\r\n * // => 2\r\n */\r\n function sample(collection) {\r\n var func = isArray(collection) ? arraySample : baseSample;\r\n return func(collection);\r\n }\r\n\r\n /**\r\n * Gets `n` random elements at unique keys from `collection` up to the\r\n * size of `collection`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to sample.\r\n * @param {number} [n=1] The number of elements to sample.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\r\n * @returns {Array} Returns the random elements.\r\n * @example\r\n *\r\n * _.sampleSize([1, 2, 3], 2);\r\n * // => [3, 1]\r\n *\r\n * _.sampleSize([1, 2, 3], 4);\r\n * // => [2, 3, 1]\r\n */\r\n function sampleSize(collection, n, guard) {\r\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\r\n n = 1;\r\n } else {\r\n n = toInteger(n);\r\n }\r\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\r\n return func(collection, n);\r\n }\r\n\r\n /**\r\n * Creates an array of shuffled values, using a version of the\r\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to shuffle.\r\n * @returns {Array} Returns the new shuffled array.\r\n * @example\r\n *\r\n * _.shuffle([1, 2, 3, 4]);\r\n * // => [4, 1, 3, 2]\r\n */\r\n function shuffle(collection) {\r\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\r\n return func(collection);\r\n }\r\n\r\n /**\r\n * Gets the size of `collection` by returning its length for array-like\r\n * values or the number of own enumerable string keyed properties for objects.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Collection\r\n * @param {Array|Object|string} collection The collection to inspect.\r\n * @returns {number} Returns the collection size.\r\n * @example\r\n *\r\n * _.size([1, 2, 3]);\r\n * // => 3\r\n *\r\n * _.size({ 'a': 1, 'b': 2 });\r\n * // => 2\r\n *\r\n * _.size('pebbles');\r\n * // => 7\r\n */\r\n function size(collection) {\r\n if (collection == null) {\r\n return 0;\r\n }\r\n if (isArrayLike(collection)) {\r\n return isString(collection) ? stringSize(collection) : collection.length;\r\n }\r\n var tag = getTag(collection);\r\n if (tag == mapTag || tag == setTag) {\r\n return collection.size;\r\n }\r\n return baseKeys(collection).length;\r\n }\r\n\r\n /**\r\n * Checks if `predicate` returns truthy for **any** element of `collection`.\r\n * Iteration is stopped once `predicate` returns truthy. The predicate is\r\n * invoked with three arguments: (value, index|key, collection).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\r\n * @returns {boolean} Returns `true` if any element passes the predicate check,\r\n * else `false`.\r\n * @example\r\n *\r\n * _.some([null, 0, 'yes', false], Boolean);\r\n * // => true\r\n *\r\n * var users = [\r\n * { 'user': 'barney', 'active': true },\r\n * { 'user': 'fred', 'active': false }\r\n * ];\r\n *\r\n * // The `_.matches` iteratee shorthand.\r\n * _.some(users, { 'user': 'barney', 'active': false });\r\n * // => false\r\n *\r\n * // The `_.matchesProperty` iteratee shorthand.\r\n * _.some(users, ['active', false]);\r\n * // => true\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.some(users, 'active');\r\n * // => true\r\n */\r\n function some(collection, predicate, guard) {\r\n var func = isArray(collection) ? arraySome : baseSome;\r\n if (guard && isIterateeCall(collection, predicate, guard)) {\r\n predicate = undefined;\r\n }\r\n return func(collection, getIteratee(predicate, 3));\r\n }\r\n\r\n /**\r\n * Creates an array of elements, sorted in ascending order by the results of\r\n * running each element in a collection thru each iteratee. This method\r\n * performs a stable sort, that is, it preserves the original sort order of\r\n * equal elements. The iteratees are invoked with one argument: (value).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\r\n * The iteratees to sort by.\r\n * @returns {Array} Returns the new sorted array.\r\n * @example\r\n *\r\n * var users = [\r\n * { 'user': 'fred', 'age': 48 },\r\n * { 'user': 'barney', 'age': 36 },\r\n * { 'user': 'fred', 'age': 30 },\r\n * { 'user': 'barney', 'age': 34 }\r\n * ];\r\n *\r\n * _.sortBy(users, [function(o) { return o.user; }]);\r\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\r\n *\r\n * _.sortBy(users, ['user', 'age']);\r\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\r\n */\r\n var sortBy = baseRest(function(collection, iteratees) {\r\n if (collection == null) {\r\n return [];\r\n }\r\n var length = iteratees.length;\r\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\r\n iteratees = [];\r\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\r\n iteratees = [iteratees[0]];\r\n }\r\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\r\n });\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Gets the timestamp of the number of milliseconds that have elapsed since\r\n * the Unix epoch (1 January 1970 00:00:00 UTC).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 2.4.0\r\n * @category Date\r\n * @returns {number} Returns the timestamp.\r\n * @example\r\n *\r\n * _.defer(function(stamp) {\r\n * console.log(_.now() - stamp);\r\n * }, _.now());\r\n * // => Logs the number of milliseconds it took for the deferred invocation.\r\n */\r\n var now = ctxNow || function() {\r\n return root.Date.now();\r\n };\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * The opposite of `_.before`; this method creates a function that invokes\r\n * `func` once it's called `n` or more times.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Function\r\n * @param {number} n The number of calls before `func` is invoked.\r\n * @param {Function} func The function to restrict.\r\n * @returns {Function} Returns the new restricted function.\r\n * @example\r\n *\r\n * var saves = ['profile', 'settings'];\r\n *\r\n * var done = _.after(saves.length, function() {\r\n * console.log('done saving!');\r\n * });\r\n *\r\n * _.forEach(saves, function(type) {\r\n * asyncSave({ 'type': type, 'complete': done });\r\n * });\r\n * // => Logs 'done saving!' after the two async saves have completed.\r\n */\r\n function after(n, func) {\r\n if (typeof func != 'function') {\r\n throw new TypeError(FUNC_ERROR_TEXT);\r\n }\r\n n = toInteger(n);\r\n return function() {\r\n if (--n < 1) {\r\n return func.apply(this, arguments);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Creates a function that invokes `func`, with up to `n` arguments,\r\n * ignoring any additional arguments.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Function\r\n * @param {Function} func The function to cap arguments for.\r\n * @param {number} [n=func.length] The arity cap.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\r\n * @returns {Function} Returns the new capped function.\r\n * @example\r\n *\r\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\r\n * // => [6, 8, 10]\r\n */\r\n function ary(func, n, guard) {\r\n n = guard ? undefined : n;\r\n n = (func && n == null) ? func.length : n;\r\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\r\n }\r\n\r\n /**\r\n * Creates a function that invokes `func`, with the `this` binding and arguments\r\n * of the created function, while it's called less than `n` times. Subsequent\r\n * calls to the created function return the result of the last `func` invocation.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Function\r\n * @param {number} n The number of calls at which `func` is no longer invoked.\r\n * @param {Function} func The function to restrict.\r\n * @returns {Function} Returns the new restricted function.\r\n * @example\r\n *\r\n * jQuery(element).on('click', _.before(5, addContactToList));\r\n * // => Allows adding up to 4 contacts to the list.\r\n */\r\n function before(n, func) {\r\n var result;\r\n if (typeof func != 'function') {\r\n throw new TypeError(FUNC_ERROR_TEXT);\r\n }\r\n n = toInteger(n);\r\n return function() {\r\n if (--n > 0) {\r\n result = func.apply(this, arguments);\r\n }\r\n if (n <= 1) {\r\n func = undefined;\r\n }\r\n return result;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\r\n * and `partials` prepended to the arguments it receives.\r\n *\r\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\r\n * may be used as a placeholder for partially applied arguments.\r\n *\r\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\r\n * property of bound functions.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Function\r\n * @param {Function} func The function to bind.\r\n * @param {*} thisArg The `this` binding of `func`.\r\n * @param {...*} [partials] The arguments to be partially applied.\r\n * @returns {Function} Returns the new bound function.\r\n * @example\r\n *\r\n * function greet(greeting, punctuation) {\r\n * return greeting + ' ' + this.user + punctuation;\r\n * }\r\n *\r\n * var object = { 'user': 'fred' };\r\n *\r\n * var bound = _.bind(greet, object, 'hi');\r\n * bound('!');\r\n * // => 'hi fred!'\r\n *\r\n * // Bound with placeholders.\r\n * var bound = _.bind(greet, object, _, '!');\r\n * bound('hi');\r\n * // => 'hi fred!'\r\n */\r\n var bind = baseRest(function(func, thisArg, partials) {\r\n var bitmask = WRAP_BIND_FLAG;\r\n if (partials.length) {\r\n var holders = replaceHolders(partials, getHolder(bind));\r\n bitmask |= WRAP_PARTIAL_FLAG;\r\n }\r\n return createWrap(func, bitmask, thisArg, partials, holders);\r\n });\r\n\r\n /**\r\n * Creates a function that invokes the method at `object[key]` with `partials`\r\n * prepended to the arguments it receives.\r\n *\r\n * This method differs from `_.bind` by allowing bound functions to reference\r\n * methods that may be redefined or don't yet exist. See\r\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\r\n * for more details.\r\n *\r\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\r\n * builds, may be used as a placeholder for partially applied arguments.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.10.0\r\n * @category Function\r\n * @param {Object} object The object to invoke the method on.\r\n * @param {string} key The key of the method.\r\n * @param {...*} [partials] The arguments to be partially applied.\r\n * @returns {Function} Returns the new bound function.\r\n * @example\r\n *\r\n * var object = {\r\n * 'user': 'fred',\r\n * 'greet': function(greeting, punctuation) {\r\n * return greeting + ' ' + this.user + punctuation;\r\n * }\r\n * };\r\n *\r\n * var bound = _.bindKey(object, 'greet', 'hi');\r\n * bound('!');\r\n * // => 'hi fred!'\r\n *\r\n * object.greet = function(greeting, punctuation) {\r\n * return greeting + 'ya ' + this.user + punctuation;\r\n * };\r\n *\r\n * bound('!');\r\n * // => 'hiya fred!'\r\n *\r\n * // Bound with placeholders.\r\n * var bound = _.bindKey(object, 'greet', _, '!');\r\n * bound('hi');\r\n * // => 'hiya fred!'\r\n */\r\n var bindKey = baseRest(function(object, key, partials) {\r\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\r\n if (partials.length) {\r\n var holders = replaceHolders(partials, getHolder(bindKey));\r\n bitmask |= WRAP_PARTIAL_FLAG;\r\n }\r\n return createWrap(key, bitmask, object, partials, holders);\r\n });\r\n\r\n /**\r\n * Creates a function that accepts arguments of `func` and either invokes\r\n * `func` returning its result, if at least `arity` number of arguments have\r\n * been provided, or returns a function that accepts the remaining `func`\r\n * arguments, and so on. The arity of `func` may be specified if `func.length`\r\n * is not sufficient.\r\n *\r\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\r\n * may be used as a placeholder for provided arguments.\r\n *\r\n * **Note:** This method doesn't set the \"length\" property of curried functions.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 2.0.0\r\n * @category Function\r\n * @param {Function} func The function to curry.\r\n * @param {number} [arity=func.length] The arity of `func`.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\r\n * @returns {Function} Returns the new curried function.\r\n * @example\r\n *\r\n * var abc = function(a, b, c) {\r\n * return [a, b, c];\r\n * };\r\n *\r\n * var curried = _.curry(abc);\r\n *\r\n * curried(1)(2)(3);\r\n * // => [1, 2, 3]\r\n *\r\n * curried(1, 2)(3);\r\n * // => [1, 2, 3]\r\n *\r\n * curried(1, 2, 3);\r\n * // => [1, 2, 3]\r\n *\r\n * // Curried with placeholders.\r\n * curried(1)(_, 3)(2);\r\n * // => [1, 2, 3]\r\n */\r\n function curry(func, arity, guard) {\r\n arity = guard ? undefined : arity;\r\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\r\n result.placeholder = curry.placeholder;\r\n return result;\r\n }\r\n\r\n /**\r\n * This method is like `_.curry` except that arguments are applied to `func`\r\n * in the manner of `_.partialRight` instead of `_.partial`.\r\n *\r\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\r\n * builds, may be used as a placeholder for provided arguments.\r\n *\r\n * **Note:** This method doesn't set the \"length\" property of curried functions.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Function\r\n * @param {Function} func The function to curry.\r\n * @param {number} [arity=func.length] The arity of `func`.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\r\n * @returns {Function} Returns the new curried function.\r\n * @example\r\n *\r\n * var abc = function(a, b, c) {\r\n * return [a, b, c];\r\n * };\r\n *\r\n * var curried = _.curryRight(abc);\r\n *\r\n * curried(3)(2)(1);\r\n * // => [1, 2, 3]\r\n *\r\n * curried(2, 3)(1);\r\n * // => [1, 2, 3]\r\n *\r\n * curried(1, 2, 3);\r\n * // => [1, 2, 3]\r\n *\r\n * // Curried with placeholders.\r\n * curried(3)(1, _)(2);\r\n * // => [1, 2, 3]\r\n */\r\n function curryRight(func, arity, guard) {\r\n arity = guard ? undefined : arity;\r\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\r\n result.placeholder = curryRight.placeholder;\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a debounced function that delays invoking `func` until after `wait`\r\n * milliseconds have elapsed since the last time the debounced function was\r\n * invoked. The debounced function comes with a `cancel` method to cancel\r\n * delayed `func` invocations and a `flush` method to immediately invoke them.\r\n * Provide `options` to indicate whether `func` should be invoked on the\r\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\r\n * with the last arguments provided to the debounced function. Subsequent\r\n * calls to the debounced function return the result of the last `func`\r\n * invocation.\r\n *\r\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\r\n * invoked on the trailing edge of the timeout only if the debounced function\r\n * is invoked more than once during the `wait` timeout.\r\n *\r\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\r\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\r\n *\r\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\r\n * for details over the differences between `_.debounce` and `_.throttle`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Function\r\n * @param {Function} func The function to debounce.\r\n * @param {number} [wait=0] The number of milliseconds to delay.\r\n * @param {Object} [options={}] The options object.\r\n * @param {boolean} [options.leading=false]\r\n * Specify invoking on the leading edge of the timeout.\r\n * @param {number} [options.maxWait]\r\n * The maximum time `func` is allowed to be delayed before it's invoked.\r\n * @param {boolean} [options.trailing=true]\r\n * Specify invoking on the trailing edge of the timeout.\r\n * @returns {Function} Returns the new debounced function.\r\n * @example\r\n *\r\n * // Avoid costly calculations while the window size is in flux.\r\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\r\n *\r\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\r\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\r\n * 'leading': true,\r\n * 'trailing': false\r\n * }));\r\n *\r\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\r\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\r\n * var source = new EventSource('/stream');\r\n * jQuery(source).on('message', debounced);\r\n *\r\n * // Cancel the trailing debounced invocation.\r\n * jQuery(window).on('popstate', debounced.cancel);\r\n */\r\n function debounce(func, wait, options) {\r\n var lastArgs,\r\n lastThis,\r\n maxWait,\r\n result,\r\n timerId,\r\n lastCallTime,\r\n lastInvokeTime = 0,\r\n leading = false,\r\n maxing = false,\r\n trailing = true;\r\n\r\n if (typeof func != 'function') {\r\n throw new TypeError(FUNC_ERROR_TEXT);\r\n }\r\n wait = toNumber(wait) || 0;\r\n if (isObject(options)) {\r\n leading = !!options.leading;\r\n maxing = 'maxWait' in options;\r\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\r\n trailing = 'trailing' in options ? !!options.trailing : trailing;\r\n }\r\n\r\n function invokeFunc(time) {\r\n var args = lastArgs,\r\n thisArg = lastThis;\r\n\r\n lastArgs = lastThis = undefined;\r\n lastInvokeTime = time;\r\n result = func.apply(thisArg, args);\r\n return result;\r\n }\r\n\r\n function leadingEdge(time) {\r\n // Reset any `maxWait` timer.\r\n lastInvokeTime = time;\r\n // Start the timer for the trailing edge.\r\n timerId = setTimeout(timerExpired, wait);\r\n // Invoke the leading edge.\r\n return leading ? invokeFunc(time) : result;\r\n }\r\n\r\n function remainingWait(time) {\r\n var timeSinceLastCall = time - lastCallTime,\r\n timeSinceLastInvoke = time - lastInvokeTime,\r\n timeWaiting = wait - timeSinceLastCall;\r\n\r\n return maxing\r\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\r\n : timeWaiting;\r\n }\r\n\r\n function shouldInvoke(time) {\r\n var timeSinceLastCall = time - lastCallTime,\r\n timeSinceLastInvoke = time - lastInvokeTime;\r\n\r\n // Either this is the first call, activity has stopped and we're at the\r\n // trailing edge, the system time has gone backwards and we're treating\r\n // it as the trailing edge, or we've hit the `maxWait` limit.\r\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\r\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\r\n }\r\n\r\n function timerExpired() {\r\n var time = now();\r\n if (shouldInvoke(time)) {\r\n return trailingEdge(time);\r\n }\r\n // Restart the timer.\r\n timerId = setTimeout(timerExpired, remainingWait(time));\r\n }\r\n\r\n function trailingEdge(time) {\r\n timerId = undefined;\r\n\r\n // Only invoke if we have `lastArgs` which means `func` has been\r\n // debounced at least once.\r\n if (trailing && lastArgs) {\r\n return invokeFunc(time);\r\n }\r\n lastArgs = lastThis = undefined;\r\n return result;\r\n }\r\n\r\n function cancel() {\r\n if (timerId !== undefined) {\r\n clearTimeout(timerId);\r\n }\r\n lastInvokeTime = 0;\r\n lastArgs = lastCallTime = lastThis = timerId = undefined;\r\n }\r\n\r\n function flush() {\r\n return timerId === undefined ? result : trailingEdge(now());\r\n }\r\n\r\n function debounced() {\r\n var time = now(),\r\n isInvoking = shouldInvoke(time);\r\n\r\n lastArgs = arguments;\r\n lastThis = this;\r\n lastCallTime = time;\r\n\r\n if (isInvoking) {\r\n if (timerId === undefined) {\r\n return leadingEdge(lastCallTime);\r\n }\r\n if (maxing) {\r\n // Handle invocations in a tight loop.\r\n clearTimeout(timerId);\r\n timerId = setTimeout(timerExpired, wait);\r\n return invokeFunc(lastCallTime);\r\n }\r\n }\r\n if (timerId === undefined) {\r\n timerId = setTimeout(timerExpired, wait);\r\n }\r\n return result;\r\n }\r\n debounced.cancel = cancel;\r\n debounced.flush = flush;\r\n return debounced;\r\n }\r\n\r\n /**\r\n * Defers invoking the `func` until the current call stack has cleared. Any\r\n * additional arguments are provided to `func` when it's invoked.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Function\r\n * @param {Function} func The function to defer.\r\n * @param {...*} [args] The arguments to invoke `func` with.\r\n * @returns {number} Returns the timer id.\r\n * @example\r\n *\r\n * _.defer(function(text) {\r\n * console.log(text);\r\n * }, 'deferred');\r\n * // => Logs 'deferred' after one millisecond.\r\n */\r\n var defer = baseRest(function(func, args) {\r\n return baseDelay(func, 1, args);\r\n });\r\n\r\n /**\r\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\r\n * provided to `func` when it's invoked.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Function\r\n * @param {Function} func The function to delay.\r\n * @param {number} wait The number of milliseconds to delay invocation.\r\n * @param {...*} [args] The arguments to invoke `func` with.\r\n * @returns {number} Returns the timer id.\r\n * @example\r\n *\r\n * _.delay(function(text) {\r\n * console.log(text);\r\n * }, 1000, 'later');\r\n * // => Logs 'later' after one second.\r\n */\r\n var delay = baseRest(function(func, wait, args) {\r\n return baseDelay(func, toNumber(wait) || 0, args);\r\n });\r\n\r\n /**\r\n * Creates a function that invokes `func` with arguments reversed.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Function\r\n * @param {Function} func The function to flip arguments for.\r\n * @returns {Function} Returns the new flipped function.\r\n * @example\r\n *\r\n * var flipped = _.flip(function() {\r\n * return _.toArray(arguments);\r\n * });\r\n *\r\n * flipped('a', 'b', 'c', 'd');\r\n * // => ['d', 'c', 'b', 'a']\r\n */\r\n function flip(func) {\r\n return createWrap(func, WRAP_FLIP_FLAG);\r\n }\r\n\r\n /**\r\n * Creates a function that memoizes the result of `func`. If `resolver` is\r\n * provided, it determines the cache key for storing the result based on the\r\n * arguments provided to the memoized function. By default, the first argument\r\n * provided to the memoized function is used as the map cache key. The `func`\r\n * is invoked with the `this` binding of the memoized function.\r\n *\r\n * **Note:** The cache is exposed as the `cache` property on the memoized\r\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\r\n * constructor with one whose instances implement the\r\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\r\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Function\r\n * @param {Function} func The function to have its output memoized.\r\n * @param {Function} [resolver] The function to resolve the cache key.\r\n * @returns {Function} Returns the new memoized function.\r\n * @example\r\n *\r\n * var object = { 'a': 1, 'b': 2 };\r\n * var other = { 'c': 3, 'd': 4 };\r\n *\r\n * var values = _.memoize(_.values);\r\n * values(object);\r\n * // => [1, 2]\r\n *\r\n * values(other);\r\n * // => [3, 4]\r\n *\r\n * object.a = 2;\r\n * values(object);\r\n * // => [1, 2]\r\n *\r\n * // Modify the result cache.\r\n * values.cache.set(object, ['a', 'b']);\r\n * values(object);\r\n * // => ['a', 'b']\r\n *\r\n * // Replace `_.memoize.Cache`.\r\n * _.memoize.Cache = WeakMap;\r\n */\r\n function memoize(func, resolver) {\r\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\r\n throw new TypeError(FUNC_ERROR_TEXT);\r\n }\r\n var memoized = function() {\r\n var args = arguments,\r\n key = resolver ? resolver.apply(this, args) : args[0],\r\n cache = memoized.cache;\r\n\r\n if (cache.has(key)) {\r\n return cache.get(key);\r\n }\r\n var result = func.apply(this, args);\r\n memoized.cache = cache.set(key, result) || cache;\r\n return result;\r\n };\r\n memoized.cache = new (memoize.Cache || MapCache);\r\n return memoized;\r\n }\r\n\r\n // Expose `MapCache`.\r\n memoize.Cache = MapCache;\r\n\r\n /**\r\n * Creates a function that negates the result of the predicate `func`. The\r\n * `func` predicate is invoked with the `this` binding and arguments of the\r\n * created function.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Function\r\n * @param {Function} predicate The predicate to negate.\r\n * @returns {Function} Returns the new negated function.\r\n * @example\r\n *\r\n * function isEven(n) {\r\n * return n % 2 == 0;\r\n * }\r\n *\r\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\r\n * // => [1, 3, 5]\r\n */\r\n function negate(predicate) {\r\n if (typeof predicate != 'function') {\r\n throw new TypeError(FUNC_ERROR_TEXT);\r\n }\r\n return function() {\r\n var args = arguments;\r\n switch (args.length) {\r\n case 0: return !predicate.call(this);\r\n case 1: return !predicate.call(this, args[0]);\r\n case 2: return !predicate.call(this, args[0], args[1]);\r\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\r\n }\r\n return !predicate.apply(this, args);\r\n };\r\n }\r\n\r\n /**\r\n * Creates a function that is restricted to invoking `func` once. Repeat calls\r\n * to the function return the value of the first invocation. The `func` is\r\n * invoked with the `this` binding and arguments of the created function.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Function\r\n * @param {Function} func The function to restrict.\r\n * @returns {Function} Returns the new restricted function.\r\n * @example\r\n *\r\n * var initialize = _.once(createApplication);\r\n * initialize();\r\n * initialize();\r\n * // => `createApplication` is invoked once\r\n */\r\n function once(func) {\r\n return before(2, func);\r\n }\r\n\r\n /**\r\n * Creates a function that invokes `func` with its arguments transformed.\r\n *\r\n * @static\r\n * @since 4.0.0\r\n * @memberOf _\r\n * @category Function\r\n * @param {Function} func The function to wrap.\r\n * @param {...(Function|Function[])} [transforms=[_.identity]]\r\n * The argument transforms.\r\n * @returns {Function} Returns the new function.\r\n * @example\r\n *\r\n * function doubled(n) {\r\n * return n * 2;\r\n * }\r\n *\r\n * function square(n) {\r\n * return n * n;\r\n * }\r\n *\r\n * var func = _.overArgs(function(x, y) {\r\n * return [x, y];\r\n * }, [square, doubled]);\r\n *\r\n * func(9, 3);\r\n * // => [81, 6]\r\n *\r\n * func(10, 5);\r\n * // => [100, 10]\r\n */\r\n var overArgs = castRest(function(func, transforms) {\r\n transforms = (transforms.length == 1 && isArray(transforms[0]))\r\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\r\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\r\n\r\n var funcsLength = transforms.length;\r\n return baseRest(function(args) {\r\n var index = -1,\r\n length = nativeMin(args.length, funcsLength);\r\n\r\n while (++index < length) {\r\n args[index] = transforms[index].call(this, args[index]);\r\n }\r\n return apply(func, this, args);\r\n });\r\n });\r\n\r\n /**\r\n * Creates a function that invokes `func` with `partials` prepended to the\r\n * arguments it receives. This method is like `_.bind` except it does **not**\r\n * alter the `this` binding.\r\n *\r\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\r\n * builds, may be used as a placeholder for partially applied arguments.\r\n *\r\n * **Note:** This method doesn't set the \"length\" property of partially\r\n * applied functions.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.2.0\r\n * @category Function\r\n * @param {Function} func The function to partially apply arguments to.\r\n * @param {...*} [partials] The arguments to be partially applied.\r\n * @returns {Function} Returns the new partially applied function.\r\n * @example\r\n *\r\n * function greet(greeting, name) {\r\n * return greeting + ' ' + name;\r\n * }\r\n *\r\n * var sayHelloTo = _.partial(greet, 'hello');\r\n * sayHelloTo('fred');\r\n * // => 'hello fred'\r\n *\r\n * // Partially applied with placeholders.\r\n * var greetFred = _.partial(greet, _, 'fred');\r\n * greetFred('hi');\r\n * // => 'hi fred'\r\n */\r\n var partial = baseRest(function(func, partials) {\r\n var holders = replaceHolders(partials, getHolder(partial));\r\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\r\n });\r\n\r\n /**\r\n * This method is like `_.partial` except that partially applied arguments\r\n * are appended to the arguments it receives.\r\n *\r\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\r\n * builds, may be used as a placeholder for partially applied arguments.\r\n *\r\n * **Note:** This method doesn't set the \"length\" property of partially\r\n * applied functions.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 1.0.0\r\n * @category Function\r\n * @param {Function} func The function to partially apply arguments to.\r\n * @param {...*} [partials] The arguments to be partially applied.\r\n * @returns {Function} Returns the new partially applied function.\r\n * @example\r\n *\r\n * function greet(greeting, name) {\r\n * return greeting + ' ' + name;\r\n * }\r\n *\r\n * var greetFred = _.partialRight(greet, 'fred');\r\n * greetFred('hi');\r\n * // => 'hi fred'\r\n *\r\n * // Partially applied with placeholders.\r\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\r\n * sayHelloTo('fred');\r\n * // => 'hello fred'\r\n */\r\n var partialRight = baseRest(function(func, partials) {\r\n var holders = replaceHolders(partials, getHolder(partialRight));\r\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\r\n });\r\n\r\n /**\r\n * Creates a function that invokes `func` with arguments arranged according\r\n * to the specified `indexes` where the argument value at the first index is\r\n * provided as the first argument, the argument value at the second index is\r\n * provided as the second argument, and so on.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Function\r\n * @param {Function} func The function to rearrange arguments for.\r\n * @param {...(number|number[])} indexes The arranged argument indexes.\r\n * @returns {Function} Returns the new function.\r\n * @example\r\n *\r\n * var rearged = _.rearg(function(a, b, c) {\r\n * return [a, b, c];\r\n * }, [2, 0, 1]);\r\n *\r\n * rearged('b', 'c', 'a')\r\n * // => ['a', 'b', 'c']\r\n */\r\n var rearg = flatRest(function(func, indexes) {\r\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\r\n });\r\n\r\n /**\r\n * Creates a function that invokes `func` with the `this` binding of the\r\n * created function and arguments from `start` and beyond provided as\r\n * an array.\r\n *\r\n * **Note:** This method is based on the\r\n * [rest parameter](https://mdn.io/rest_parameters).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Function\r\n * @param {Function} func The function to apply a rest parameter to.\r\n * @param {number} [start=func.length-1] The start position of the rest parameter.\r\n * @returns {Function} Returns the new function.\r\n * @example\r\n *\r\n * var say = _.rest(function(what, names) {\r\n * return what + ' ' + _.initial(names).join(', ') +\r\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\r\n * });\r\n *\r\n * say('hello', 'fred', 'barney', 'pebbles');\r\n * // => 'hello fred, barney, & pebbles'\r\n */\r\n function rest(func, start) {\r\n if (typeof func != 'function') {\r\n throw new TypeError(FUNC_ERROR_TEXT);\r\n }\r\n start = start === undefined ? start : toInteger(start);\r\n return baseRest(func, start);\r\n }\r\n\r\n /**\r\n * Creates a function that invokes `func` with the `this` binding of the\r\n * create function and an array of arguments much like\r\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\r\n *\r\n * **Note:** This method is based on the\r\n * [spread operator](https://mdn.io/spread_operator).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.2.0\r\n * @category Function\r\n * @param {Function} func The function to spread arguments over.\r\n * @param {number} [start=0] The start position of the spread.\r\n * @returns {Function} Returns the new function.\r\n * @example\r\n *\r\n * var say = _.spread(function(who, what) {\r\n * return who + ' says ' + what;\r\n * });\r\n *\r\n * say(['fred', 'hello']);\r\n * // => 'fred says hello'\r\n *\r\n * var numbers = Promise.all([\r\n * Promise.resolve(40),\r\n * Promise.resolve(36)\r\n * ]);\r\n *\r\n * numbers.then(_.spread(function(x, y) {\r\n * return x + y;\r\n * }));\r\n * // => a Promise of 76\r\n */\r\n function spread(func, start) {\r\n if (typeof func != 'function') {\r\n throw new TypeError(FUNC_ERROR_TEXT);\r\n }\r\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\r\n return baseRest(function(args) {\r\n var array = args[start],\r\n otherArgs = castSlice(args, 0, start);\r\n\r\n if (array) {\r\n arrayPush(otherArgs, array);\r\n }\r\n return apply(func, this, otherArgs);\r\n });\r\n }\r\n\r\n /**\r\n * Creates a throttled function that only invokes `func` at most once per\r\n * every `wait` milliseconds. The throttled function comes with a `cancel`\r\n * method to cancel delayed `func` invocations and a `flush` method to\r\n * immediately invoke them. Provide `options` to indicate whether `func`\r\n * should be invoked on the leading and/or trailing edge of the `wait`\r\n * timeout. The `func` is invoked with the last arguments provided to the\r\n * throttled function. Subsequent calls to the throttled function return the\r\n * result of the last `func` invocation.\r\n *\r\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\r\n * invoked on the trailing edge of the timeout only if the throttled function\r\n * is invoked more than once during the `wait` timeout.\r\n *\r\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\r\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\r\n *\r\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\r\n * for details over the differences between `_.throttle` and `_.debounce`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Function\r\n * @param {Function} func The function to throttle.\r\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\r\n * @param {Object} [options={}] The options object.\r\n * @param {boolean} [options.leading=true]\r\n * Specify invoking on the leading edge of the timeout.\r\n * @param {boolean} [options.trailing=true]\r\n * Specify invoking on the trailing edge of the timeout.\r\n * @returns {Function} Returns the new throttled function.\r\n * @example\r\n *\r\n * // Avoid excessively updating the position while scrolling.\r\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\r\n *\r\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\r\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\r\n * jQuery(element).on('click', throttled);\r\n *\r\n * // Cancel the trailing throttled invocation.\r\n * jQuery(window).on('popstate', throttled.cancel);\r\n */\r\n function throttle(func, wait, options) {\r\n var leading = true,\r\n trailing = true;\r\n\r\n if (typeof func != 'function') {\r\n throw new TypeError(FUNC_ERROR_TEXT);\r\n }\r\n if (isObject(options)) {\r\n leading = 'leading' in options ? !!options.leading : leading;\r\n trailing = 'trailing' in options ? !!options.trailing : trailing;\r\n }\r\n return debounce(func, wait, {\r\n 'leading': leading,\r\n 'maxWait': wait,\r\n 'trailing': trailing\r\n });\r\n }\r\n\r\n /**\r\n * Creates a function that accepts up to one argument, ignoring any\r\n * additional arguments.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Function\r\n * @param {Function} func The function to cap arguments for.\r\n * @returns {Function} Returns the new capped function.\r\n * @example\r\n *\r\n * _.map(['6', '8', '10'], _.unary(parseInt));\r\n * // => [6, 8, 10]\r\n */\r\n function unary(func) {\r\n return ary(func, 1);\r\n }\r\n\r\n /**\r\n * Creates a function that provides `value` to `wrapper` as its first\r\n * argument. Any additional arguments provided to the function are appended\r\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\r\n * binding of the created function.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Function\r\n * @param {*} value The value to wrap.\r\n * @param {Function} [wrapper=identity] The wrapper function.\r\n * @returns {Function} Returns the new function.\r\n * @example\r\n *\r\n * var p = _.wrap(_.escape, function(func, text) {\r\n * return '' + func(text) + '
';\r\n * });\r\n *\r\n * p('fred, barney, & pebbles');\r\n * // => 'fred, barney, & pebbles
'\r\n */\r\n function wrap(value, wrapper) {\r\n return partial(castFunction(wrapper), value);\r\n }\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Casts `value` as an array if it's not one.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.4.0\r\n * @category Lang\r\n * @param {*} value The value to inspect.\r\n * @returns {Array} Returns the cast array.\r\n * @example\r\n *\r\n * _.castArray(1);\r\n * // => [1]\r\n *\r\n * _.castArray({ 'a': 1 });\r\n * // => [{ 'a': 1 }]\r\n *\r\n * _.castArray('abc');\r\n * // => ['abc']\r\n *\r\n * _.castArray(null);\r\n * // => [null]\r\n *\r\n * _.castArray(undefined);\r\n * // => [undefined]\r\n *\r\n * _.castArray();\r\n * // => []\r\n *\r\n * var array = [1, 2, 3];\r\n * console.log(_.castArray(array) === array);\r\n * // => true\r\n */\r\n function castArray() {\r\n if (!arguments.length) {\r\n return [];\r\n }\r\n var value = arguments[0];\r\n return isArray(value) ? value : [value];\r\n }\r\n\r\n /**\r\n * Creates a shallow clone of `value`.\r\n *\r\n * **Note:** This method is loosely based on the\r\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\r\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\r\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\r\n * arrays. The own enumerable properties of `arguments` objects are cloned\r\n * as plain objects. An empty object is returned for uncloneable values such\r\n * as error objects, functions, DOM nodes, and WeakMaps.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to clone.\r\n * @returns {*} Returns the cloned value.\r\n * @see _.cloneDeep\r\n * @example\r\n *\r\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\r\n *\r\n * var shallow = _.clone(objects);\r\n * console.log(shallow[0] === objects[0]);\r\n * // => true\r\n */\r\n function clone(value) {\r\n return baseClone(value, CLONE_SYMBOLS_FLAG);\r\n }\r\n\r\n /**\r\n * This method is like `_.clone` except that it accepts `customizer` which\r\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\r\n * cloning is handled by the method instead. The `customizer` is invoked with\r\n * up to four arguments; (value [, index|key, object, stack]).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to clone.\r\n * @param {Function} [customizer] The function to customize cloning.\r\n * @returns {*} Returns the cloned value.\r\n * @see _.cloneDeepWith\r\n * @example\r\n *\r\n * function customizer(value) {\r\n * if (_.isElement(value)) {\r\n * return value.cloneNode(false);\r\n * }\r\n * }\r\n *\r\n * var el = _.cloneWith(document.body, customizer);\r\n *\r\n * console.log(el === document.body);\r\n * // => false\r\n * console.log(el.nodeName);\r\n * // => 'BODY'\r\n * console.log(el.childNodes.length);\r\n * // => 0\r\n */\r\n function cloneWith(value, customizer) {\r\n customizer = typeof customizer == 'function' ? customizer : undefined;\r\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\r\n }\r\n\r\n /**\r\n * This method is like `_.clone` except that it recursively clones `value`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 1.0.0\r\n * @category Lang\r\n * @param {*} value The value to recursively clone.\r\n * @returns {*} Returns the deep cloned value.\r\n * @see _.clone\r\n * @example\r\n *\r\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\r\n *\r\n * var deep = _.cloneDeep(objects);\r\n * console.log(deep[0] === objects[0]);\r\n * // => false\r\n */\r\n function cloneDeep(value) {\r\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\r\n }\r\n\r\n /**\r\n * This method is like `_.cloneWith` except that it recursively clones `value`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to recursively clone.\r\n * @param {Function} [customizer] The function to customize cloning.\r\n * @returns {*} Returns the deep cloned value.\r\n * @see _.cloneWith\r\n * @example\r\n *\r\n * function customizer(value) {\r\n * if (_.isElement(value)) {\r\n * return value.cloneNode(true);\r\n * }\r\n * }\r\n *\r\n * var el = _.cloneDeepWith(document.body, customizer);\r\n *\r\n * console.log(el === document.body);\r\n * // => false\r\n * console.log(el.nodeName);\r\n * // => 'BODY'\r\n * console.log(el.childNodes.length);\r\n * // => 20\r\n */\r\n function cloneDeepWith(value, customizer) {\r\n customizer = typeof customizer == 'function' ? customizer : undefined;\r\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\r\n }\r\n\r\n /**\r\n * Checks if `object` conforms to `source` by invoking the predicate\r\n * properties of `source` with the corresponding property values of `object`.\r\n *\r\n * **Note:** This method is equivalent to `_.conforms` when `source` is\r\n * partially applied.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.14.0\r\n * @category Lang\r\n * @param {Object} object The object to inspect.\r\n * @param {Object} source The object of property predicates to conform to.\r\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\r\n * @example\r\n *\r\n * var object = { 'a': 1, 'b': 2 };\r\n *\r\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\r\n * // => true\r\n *\r\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\r\n * // => false\r\n */\r\n function conformsTo(object, source) {\r\n return source == null || baseConformsTo(object, source, keys(source));\r\n }\r\n\r\n /**\r\n * Performs a\r\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\r\n * comparison between two values to determine if they are equivalent.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to compare.\r\n * @param {*} other The other value to compare.\r\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\r\n * @example\r\n *\r\n * var object = { 'a': 1 };\r\n * var other = { 'a': 1 };\r\n *\r\n * _.eq(object, object);\r\n * // => true\r\n *\r\n * _.eq(object, other);\r\n * // => false\r\n *\r\n * _.eq('a', 'a');\r\n * // => true\r\n *\r\n * _.eq('a', Object('a'));\r\n * // => false\r\n *\r\n * _.eq(NaN, NaN);\r\n * // => true\r\n */\r\n function eq(value, other) {\r\n return value === other || (value !== value && other !== other);\r\n }\r\n\r\n /**\r\n * Checks if `value` is greater than `other`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.9.0\r\n * @category Lang\r\n * @param {*} value The value to compare.\r\n * @param {*} other The other value to compare.\r\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\r\n * else `false`.\r\n * @see _.lt\r\n * @example\r\n *\r\n * _.gt(3, 1);\r\n * // => true\r\n *\r\n * _.gt(3, 3);\r\n * // => false\r\n *\r\n * _.gt(1, 3);\r\n * // => false\r\n */\r\n var gt = createRelationalOperation(baseGt);\r\n\r\n /**\r\n * Checks if `value` is greater than or equal to `other`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.9.0\r\n * @category Lang\r\n * @param {*} value The value to compare.\r\n * @param {*} other The other value to compare.\r\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\r\n * `other`, else `false`.\r\n * @see _.lte\r\n * @example\r\n *\r\n * _.gte(3, 1);\r\n * // => true\r\n *\r\n * _.gte(3, 3);\r\n * // => true\r\n *\r\n * _.gte(1, 3);\r\n * // => false\r\n */\r\n var gte = createRelationalOperation(function(value, other) {\r\n return value >= other;\r\n });\r\n\r\n /**\r\n * Checks if `value` is likely an `arguments` object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\r\n * else `false`.\r\n * @example\r\n *\r\n * _.isArguments(function() { return arguments; }());\r\n * // => true\r\n *\r\n * _.isArguments([1, 2, 3]);\r\n * // => false\r\n */\r\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\r\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\r\n !propertyIsEnumerable.call(value, 'callee');\r\n };\r\n\r\n /**\r\n * Checks if `value` is classified as an `Array` object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\r\n * @example\r\n *\r\n * _.isArray([1, 2, 3]);\r\n * // => true\r\n *\r\n * _.isArray(document.body.children);\r\n * // => false\r\n *\r\n * _.isArray('abc');\r\n * // => false\r\n *\r\n * _.isArray(_.noop);\r\n * // => false\r\n */\r\n var isArray = Array.isArray;\r\n\r\n /**\r\n * Checks if `value` is classified as an `ArrayBuffer` object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.3.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\r\n * @example\r\n *\r\n * _.isArrayBuffer(new ArrayBuffer(2));\r\n * // => true\r\n *\r\n * _.isArrayBuffer(new Array(2));\r\n * // => false\r\n */\r\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\r\n\r\n /**\r\n * Checks if `value` is array-like. A value is considered array-like if it's\r\n * not a function and has a `value.length` that's an integer greater than or\r\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\r\n * @example\r\n *\r\n * _.isArrayLike([1, 2, 3]);\r\n * // => true\r\n *\r\n * _.isArrayLike(document.body.children);\r\n * // => true\r\n *\r\n * _.isArrayLike('abc');\r\n * // => true\r\n *\r\n * _.isArrayLike(_.noop);\r\n * // => false\r\n */\r\n function isArrayLike(value) {\r\n return value != null && isLength(value.length) && !isFunction(value);\r\n }\r\n\r\n /**\r\n * This method is like `_.isArrayLike` except that it also checks if `value`\r\n * is an object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is an array-like object,\r\n * else `false`.\r\n * @example\r\n *\r\n * _.isArrayLikeObject([1, 2, 3]);\r\n * // => true\r\n *\r\n * _.isArrayLikeObject(document.body.children);\r\n * // => true\r\n *\r\n * _.isArrayLikeObject('abc');\r\n * // => false\r\n *\r\n * _.isArrayLikeObject(_.noop);\r\n * // => false\r\n */\r\n function isArrayLikeObject(value) {\r\n return isObjectLike(value) && isArrayLike(value);\r\n }\r\n\r\n /**\r\n * Checks if `value` is classified as a boolean primitive or object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\r\n * @example\r\n *\r\n * _.isBoolean(false);\r\n * // => true\r\n *\r\n * _.isBoolean(null);\r\n * // => false\r\n */\r\n function isBoolean(value) {\r\n return value === true || value === false ||\r\n (isObjectLike(value) && baseGetTag(value) == boolTag);\r\n }\r\n\r\n /**\r\n * Checks if `value` is a buffer.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.3.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\r\n * @example\r\n *\r\n * _.isBuffer(new Buffer(2));\r\n * // => true\r\n *\r\n * _.isBuffer(new Uint8Array(2));\r\n * // => false\r\n */\r\n var isBuffer = nativeIsBuffer || stubFalse;\r\n\r\n /**\r\n * Checks if `value` is classified as a `Date` object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\r\n * @example\r\n *\r\n * _.isDate(new Date);\r\n * // => true\r\n *\r\n * _.isDate('Mon April 23 2012');\r\n * // => false\r\n */\r\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\r\n\r\n /**\r\n * Checks if `value` is likely a DOM element.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\r\n * @example\r\n *\r\n * _.isElement(document.body);\r\n * // => true\r\n *\r\n * _.isElement('');\r\n * // => false\r\n */\r\n function isElement(value) {\r\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\r\n }\r\n\r\n /**\r\n * Checks if `value` is an empty object, collection, map, or set.\r\n *\r\n * Objects are considered empty if they have no own enumerable string keyed\r\n * properties.\r\n *\r\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\r\n * jQuery-like collections are considered empty if they have a `length` of `0`.\r\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\r\n * @example\r\n *\r\n * _.isEmpty(null);\r\n * // => true\r\n *\r\n * _.isEmpty(true);\r\n * // => true\r\n *\r\n * _.isEmpty(1);\r\n * // => true\r\n *\r\n * _.isEmpty([1, 2, 3]);\r\n * // => false\r\n *\r\n * _.isEmpty({ 'a': 1 });\r\n * // => false\r\n */\r\n function isEmpty(value) {\r\n if (value == null) {\r\n return true;\r\n }\r\n if (isArrayLike(value) &&\r\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\r\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\r\n return !value.length;\r\n }\r\n var tag = getTag(value);\r\n if (tag == mapTag || tag == setTag) {\r\n return !value.size;\r\n }\r\n if (isPrototype(value)) {\r\n return !baseKeys(value).length;\r\n }\r\n for (var key in value) {\r\n if (hasOwnProperty.call(value, key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Performs a deep comparison between two values to determine if they are\r\n * equivalent.\r\n *\r\n * **Note:** This method supports comparing arrays, array buffers, booleans,\r\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\r\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\r\n * by their own, not inherited, enumerable properties. Functions and DOM\r\n * nodes are compared by strict equality, i.e. `===`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to compare.\r\n * @param {*} other The other value to compare.\r\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\r\n * @example\r\n *\r\n * var object = { 'a': 1 };\r\n * var other = { 'a': 1 };\r\n *\r\n * _.isEqual(object, other);\r\n * // => true\r\n *\r\n * object === other;\r\n * // => false\r\n */\r\n function isEqual(value, other) {\r\n return baseIsEqual(value, other);\r\n }\r\n\r\n /**\r\n * This method is like `_.isEqual` except that it accepts `customizer` which\r\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\r\n * are handled by the method instead. The `customizer` is invoked with up to\r\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to compare.\r\n * @param {*} other The other value to compare.\r\n * @param {Function} [customizer] The function to customize comparisons.\r\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\r\n * @example\r\n *\r\n * function isGreeting(value) {\r\n * return /^h(?:i|ello)$/.test(value);\r\n * }\r\n *\r\n * function customizer(objValue, othValue) {\r\n * if (isGreeting(objValue) && isGreeting(othValue)) {\r\n * return true;\r\n * }\r\n * }\r\n *\r\n * var array = ['hello', 'goodbye'];\r\n * var other = ['hi', 'goodbye'];\r\n *\r\n * _.isEqualWith(array, other, customizer);\r\n * // => true\r\n */\r\n function isEqualWith(value, other, customizer) {\r\n customizer = typeof customizer == 'function' ? customizer : undefined;\r\n var result = customizer ? customizer(value, other) : undefined;\r\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\r\n }\r\n\r\n /**\r\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\r\n * `SyntaxError`, `TypeError`, or `URIError` object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\r\n * @example\r\n *\r\n * _.isError(new Error);\r\n * // => true\r\n *\r\n * _.isError(Error);\r\n * // => false\r\n */\r\n function isError(value) {\r\n if (!isObjectLike(value)) {\r\n return false;\r\n }\r\n var tag = baseGetTag(value);\r\n return tag == errorTag || tag == domExcTag ||\r\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\r\n }\r\n\r\n /**\r\n * Checks if `value` is a finite primitive number.\r\n *\r\n * **Note:** This method is based on\r\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\r\n * @example\r\n *\r\n * _.isFinite(3);\r\n * // => true\r\n *\r\n * _.isFinite(Number.MIN_VALUE);\r\n * // => true\r\n *\r\n * _.isFinite(Infinity);\r\n * // => false\r\n *\r\n * _.isFinite('3');\r\n * // => false\r\n */\r\n function isFinite(value) {\r\n return typeof value == 'number' && nativeIsFinite(value);\r\n }\r\n\r\n /**\r\n * Checks if `value` is classified as a `Function` object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\r\n * @example\r\n *\r\n * _.isFunction(_);\r\n * // => true\r\n *\r\n * _.isFunction(/abc/);\r\n * // => false\r\n */\r\n function isFunction(value) {\r\n if (!isObject(value)) {\r\n return false;\r\n }\r\n // The use of `Object#toString` avoids issues with the `typeof` operator\r\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\r\n var tag = baseGetTag(value);\r\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\r\n }\r\n\r\n /**\r\n * Checks if `value` is an integer.\r\n *\r\n * **Note:** This method is based on\r\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\r\n * @example\r\n *\r\n * _.isInteger(3);\r\n * // => true\r\n *\r\n * _.isInteger(Number.MIN_VALUE);\r\n * // => false\r\n *\r\n * _.isInteger(Infinity);\r\n * // => false\r\n *\r\n * _.isInteger('3');\r\n * // => false\r\n */\r\n function isInteger(value) {\r\n return typeof value == 'number' && value == toInteger(value);\r\n }\r\n\r\n /**\r\n * Checks if `value` is a valid array-like length.\r\n *\r\n * **Note:** This method is loosely based on\r\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\r\n * @example\r\n *\r\n * _.isLength(3);\r\n * // => true\r\n *\r\n * _.isLength(Number.MIN_VALUE);\r\n * // => false\r\n *\r\n * _.isLength(Infinity);\r\n * // => false\r\n *\r\n * _.isLength('3');\r\n * // => false\r\n */\r\n function isLength(value) {\r\n return typeof value == 'number' &&\r\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\r\n }\r\n\r\n /**\r\n * Checks if `value` is the\r\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\r\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\r\n * @example\r\n *\r\n * _.isObject({});\r\n * // => true\r\n *\r\n * _.isObject([1, 2, 3]);\r\n * // => true\r\n *\r\n * _.isObject(_.noop);\r\n * // => true\r\n *\r\n * _.isObject(null);\r\n * // => false\r\n */\r\n function isObject(value) {\r\n var type = typeof value;\r\n return value != null && (type == 'object' || type == 'function');\r\n }\r\n\r\n /**\r\n * Checks if `value` is object-like. A value is object-like if it's not `null`\r\n * and has a `typeof` result of \"object\".\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\r\n * @example\r\n *\r\n * _.isObjectLike({});\r\n * // => true\r\n *\r\n * _.isObjectLike([1, 2, 3]);\r\n * // => true\r\n *\r\n * _.isObjectLike(_.noop);\r\n * // => false\r\n *\r\n * _.isObjectLike(null);\r\n * // => false\r\n */\r\n function isObjectLike(value) {\r\n return value != null && typeof value == 'object';\r\n }\r\n\r\n /**\r\n * Checks if `value` is classified as a `Map` object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.3.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\r\n * @example\r\n *\r\n * _.isMap(new Map);\r\n * // => true\r\n *\r\n * _.isMap(new WeakMap);\r\n * // => false\r\n */\r\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\r\n\r\n /**\r\n * Performs a partial deep comparison between `object` and `source` to\r\n * determine if `object` contains equivalent property values.\r\n *\r\n * **Note:** This method is equivalent to `_.matches` when `source` is\r\n * partially applied.\r\n *\r\n * Partial comparisons will match empty array and empty object `source`\r\n * values against any array or object value, respectively. See `_.isEqual`\r\n * for a list of supported value comparisons.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Lang\r\n * @param {Object} object The object to inspect.\r\n * @param {Object} source The object of property values to match.\r\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\r\n * @example\r\n *\r\n * var object = { 'a': 1, 'b': 2 };\r\n *\r\n * _.isMatch(object, { 'b': 2 });\r\n * // => true\r\n *\r\n * _.isMatch(object, { 'b': 1 });\r\n * // => false\r\n */\r\n function isMatch(object, source) {\r\n return object === source || baseIsMatch(object, source, getMatchData(source));\r\n }\r\n\r\n /**\r\n * This method is like `_.isMatch` except that it accepts `customizer` which\r\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\r\n * are handled by the method instead. The `customizer` is invoked with five\r\n * arguments: (objValue, srcValue, index|key, object, source).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {Object} object The object to inspect.\r\n * @param {Object} source The object of property values to match.\r\n * @param {Function} [customizer] The function to customize comparisons.\r\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\r\n * @example\r\n *\r\n * function isGreeting(value) {\r\n * return /^h(?:i|ello)$/.test(value);\r\n * }\r\n *\r\n * function customizer(objValue, srcValue) {\r\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\r\n * return true;\r\n * }\r\n * }\r\n *\r\n * var object = { 'greeting': 'hello' };\r\n * var source = { 'greeting': 'hi' };\r\n *\r\n * _.isMatchWith(object, source, customizer);\r\n * // => true\r\n */\r\n function isMatchWith(object, source, customizer) {\r\n customizer = typeof customizer == 'function' ? customizer : undefined;\r\n return baseIsMatch(object, source, getMatchData(source), customizer);\r\n }\r\n\r\n /**\r\n * Checks if `value` is `NaN`.\r\n *\r\n * **Note:** This method is based on\r\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\r\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\r\n * `undefined` and other non-number values.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\r\n * @example\r\n *\r\n * _.isNaN(NaN);\r\n * // => true\r\n *\r\n * _.isNaN(new Number(NaN));\r\n * // => true\r\n *\r\n * isNaN(undefined);\r\n * // => true\r\n *\r\n * _.isNaN(undefined);\r\n * // => false\r\n */\r\n function isNaN(value) {\r\n // An `NaN` primitive is the only value that is not equal to itself.\r\n // Perform the `toStringTag` check first to avoid errors with some\r\n // ActiveX objects in IE.\r\n return isNumber(value) && value != +value;\r\n }\r\n\r\n /**\r\n * Checks if `value` is a pristine native function.\r\n *\r\n * **Note:** This method can't reliably detect native functions in the presence\r\n * of the core-js package because core-js circumvents this kind of detection.\r\n * Despite multiple requests, the core-js maintainer has made it clear: any\r\n * attempt to fix the detection will be obstructed. As a result, we're left\r\n * with little choice but to throw an error. Unfortunately, this also affects\r\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\r\n * which rely on core-js.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a native function,\r\n * else `false`.\r\n * @example\r\n *\r\n * _.isNative(Array.prototype.push);\r\n * // => true\r\n *\r\n * _.isNative(_);\r\n * // => false\r\n */\r\n function isNative(value) {\r\n if (isMaskable(value)) {\r\n throw new Error(CORE_ERROR_TEXT);\r\n }\r\n return baseIsNative(value);\r\n }\r\n\r\n /**\r\n * Checks if `value` is `null`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\r\n * @example\r\n *\r\n * _.isNull(null);\r\n * // => true\r\n *\r\n * _.isNull(void 0);\r\n * // => false\r\n */\r\n function isNull(value) {\r\n return value === null;\r\n }\r\n\r\n /**\r\n * Checks if `value` is `null` or `undefined`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\r\n * @example\r\n *\r\n * _.isNil(null);\r\n * // => true\r\n *\r\n * _.isNil(void 0);\r\n * // => true\r\n *\r\n * _.isNil(NaN);\r\n * // => false\r\n */\r\n function isNil(value) {\r\n return value == null;\r\n }\r\n\r\n /**\r\n * Checks if `value` is classified as a `Number` primitive or object.\r\n *\r\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\r\n * classified as numbers, use the `_.isFinite` method.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\r\n * @example\r\n *\r\n * _.isNumber(3);\r\n * // => true\r\n *\r\n * _.isNumber(Number.MIN_VALUE);\r\n * // => true\r\n *\r\n * _.isNumber(Infinity);\r\n * // => true\r\n *\r\n * _.isNumber('3');\r\n * // => false\r\n */\r\n function isNumber(value) {\r\n return typeof value == 'number' ||\r\n (isObjectLike(value) && baseGetTag(value) == numberTag);\r\n }\r\n\r\n /**\r\n * Checks if `value` is a plain object, that is, an object created by the\r\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.8.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = 1;\r\n * }\r\n *\r\n * _.isPlainObject(new Foo);\r\n * // => false\r\n *\r\n * _.isPlainObject([1, 2, 3]);\r\n * // => false\r\n *\r\n * _.isPlainObject({ 'x': 0, 'y': 0 });\r\n * // => true\r\n *\r\n * _.isPlainObject(Object.create(null));\r\n * // => true\r\n */\r\n function isPlainObject(value) {\r\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\r\n return false;\r\n }\r\n var proto = getPrototype(value);\r\n if (proto === null) {\r\n return true;\r\n }\r\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\r\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\r\n funcToString.call(Ctor) == objectCtorString;\r\n }\r\n\r\n /**\r\n * Checks if `value` is classified as a `RegExp` object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.1.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\r\n * @example\r\n *\r\n * _.isRegExp(/abc/);\r\n * // => true\r\n *\r\n * _.isRegExp('/abc/');\r\n * // => false\r\n */\r\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\r\n\r\n /**\r\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\r\n * double precision number which isn't the result of a rounded unsafe integer.\r\n *\r\n * **Note:** This method is based on\r\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\r\n * @example\r\n *\r\n * _.isSafeInteger(3);\r\n * // => true\r\n *\r\n * _.isSafeInteger(Number.MIN_VALUE);\r\n * // => false\r\n *\r\n * _.isSafeInteger(Infinity);\r\n * // => false\r\n *\r\n * _.isSafeInteger('3');\r\n * // => false\r\n */\r\n function isSafeInteger(value) {\r\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\r\n }\r\n\r\n /**\r\n * Checks if `value` is classified as a `Set` object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.3.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\r\n * @example\r\n *\r\n * _.isSet(new Set);\r\n * // => true\r\n *\r\n * _.isSet(new WeakSet);\r\n * // => false\r\n */\r\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\r\n\r\n /**\r\n * Checks if `value` is classified as a `String` primitive or object.\r\n *\r\n * @static\r\n * @since 0.1.0\r\n * @memberOf _\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\r\n * @example\r\n *\r\n * _.isString('abc');\r\n * // => true\r\n *\r\n * _.isString(1);\r\n * // => false\r\n */\r\n function isString(value) {\r\n return typeof value == 'string' ||\r\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\r\n }\r\n\r\n /**\r\n * Checks if `value` is classified as a `Symbol` primitive or object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\r\n * @example\r\n *\r\n * _.isSymbol(Symbol.iterator);\r\n * // => true\r\n *\r\n * _.isSymbol('abc');\r\n * // => false\r\n */\r\n function isSymbol(value) {\r\n return typeof value == 'symbol' ||\r\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\r\n }\r\n\r\n /**\r\n * Checks if `value` is classified as a typed array.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\r\n * @example\r\n *\r\n * _.isTypedArray(new Uint8Array);\r\n * // => true\r\n *\r\n * _.isTypedArray([]);\r\n * // => false\r\n */\r\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\r\n\r\n /**\r\n * Checks if `value` is `undefined`.\r\n *\r\n * @static\r\n * @since 0.1.0\r\n * @memberOf _\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\r\n * @example\r\n *\r\n * _.isUndefined(void 0);\r\n * // => true\r\n *\r\n * _.isUndefined(null);\r\n * // => false\r\n */\r\n function isUndefined(value) {\r\n return value === undefined;\r\n }\r\n\r\n /**\r\n * Checks if `value` is classified as a `WeakMap` object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.3.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\r\n * @example\r\n *\r\n * _.isWeakMap(new WeakMap);\r\n * // => true\r\n *\r\n * _.isWeakMap(new Map);\r\n * // => false\r\n */\r\n function isWeakMap(value) {\r\n return isObjectLike(value) && getTag(value) == weakMapTag;\r\n }\r\n\r\n /**\r\n * Checks if `value` is classified as a `WeakSet` object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.3.0\r\n * @category Lang\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\r\n * @example\r\n *\r\n * _.isWeakSet(new WeakSet);\r\n * // => true\r\n *\r\n * _.isWeakSet(new Set);\r\n * // => false\r\n */\r\n function isWeakSet(value) {\r\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\r\n }\r\n\r\n /**\r\n * Checks if `value` is less than `other`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.9.0\r\n * @category Lang\r\n * @param {*} value The value to compare.\r\n * @param {*} other The other value to compare.\r\n * @returns {boolean} Returns `true` if `value` is less than `other`,\r\n * else `false`.\r\n * @see _.gt\r\n * @example\r\n *\r\n * _.lt(1, 3);\r\n * // => true\r\n *\r\n * _.lt(3, 3);\r\n * // => false\r\n *\r\n * _.lt(3, 1);\r\n * // => false\r\n */\r\n var lt = createRelationalOperation(baseLt);\r\n\r\n /**\r\n * Checks if `value` is less than or equal to `other`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.9.0\r\n * @category Lang\r\n * @param {*} value The value to compare.\r\n * @param {*} other The other value to compare.\r\n * @returns {boolean} Returns `true` if `value` is less than or equal to\r\n * `other`, else `false`.\r\n * @see _.gte\r\n * @example\r\n *\r\n * _.lte(1, 3);\r\n * // => true\r\n *\r\n * _.lte(3, 3);\r\n * // => true\r\n *\r\n * _.lte(3, 1);\r\n * // => false\r\n */\r\n var lte = createRelationalOperation(function(value, other) {\r\n return value <= other;\r\n });\r\n\r\n /**\r\n * Converts `value` to an array.\r\n *\r\n * @static\r\n * @since 0.1.0\r\n * @memberOf _\r\n * @category Lang\r\n * @param {*} value The value to convert.\r\n * @returns {Array} Returns the converted array.\r\n * @example\r\n *\r\n * _.toArray({ 'a': 1, 'b': 2 });\r\n * // => [1, 2]\r\n *\r\n * _.toArray('abc');\r\n * // => ['a', 'b', 'c']\r\n *\r\n * _.toArray(1);\r\n * // => []\r\n *\r\n * _.toArray(null);\r\n * // => []\r\n */\r\n function toArray(value) {\r\n if (!value) {\r\n return [];\r\n }\r\n if (isArrayLike(value)) {\r\n return isString(value) ? stringToArray(value) : copyArray(value);\r\n }\r\n if (symIterator && value[symIterator]) {\r\n return iteratorToArray(value[symIterator]());\r\n }\r\n var tag = getTag(value),\r\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\r\n\r\n return func(value);\r\n }\r\n\r\n /**\r\n * Converts `value` to a finite number.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.12.0\r\n * @category Lang\r\n * @param {*} value The value to convert.\r\n * @returns {number} Returns the converted number.\r\n * @example\r\n *\r\n * _.toFinite(3.2);\r\n * // => 3.2\r\n *\r\n * _.toFinite(Number.MIN_VALUE);\r\n * // => 5e-324\r\n *\r\n * _.toFinite(Infinity);\r\n * // => 1.7976931348623157e+308\r\n *\r\n * _.toFinite('3.2');\r\n * // => 3.2\r\n */\r\n function toFinite(value) {\r\n if (!value) {\r\n return value === 0 ? value : 0;\r\n }\r\n value = toNumber(value);\r\n if (value === INFINITY || value === -INFINITY) {\r\n var sign = (value < 0 ? -1 : 1);\r\n return sign * MAX_INTEGER;\r\n }\r\n return value === value ? value : 0;\r\n }\r\n\r\n /**\r\n * Converts `value` to an integer.\r\n *\r\n * **Note:** This method is loosely based on\r\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to convert.\r\n * @returns {number} Returns the converted integer.\r\n * @example\r\n *\r\n * _.toInteger(3.2);\r\n * // => 3\r\n *\r\n * _.toInteger(Number.MIN_VALUE);\r\n * // => 0\r\n *\r\n * _.toInteger(Infinity);\r\n * // => 1.7976931348623157e+308\r\n *\r\n * _.toInteger('3.2');\r\n * // => 3\r\n */\r\n function toInteger(value) {\r\n var result = toFinite(value),\r\n remainder = result % 1;\r\n\r\n return result === result ? (remainder ? result - remainder : result) : 0;\r\n }\r\n\r\n /**\r\n * Converts `value` to an integer suitable for use as the length of an\r\n * array-like object.\r\n *\r\n * **Note:** This method is based on\r\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to convert.\r\n * @returns {number} Returns the converted integer.\r\n * @example\r\n *\r\n * _.toLength(3.2);\r\n * // => 3\r\n *\r\n * _.toLength(Number.MIN_VALUE);\r\n * // => 0\r\n *\r\n * _.toLength(Infinity);\r\n * // => 4294967295\r\n *\r\n * _.toLength('3.2');\r\n * // => 3\r\n */\r\n function toLength(value) {\r\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\r\n }\r\n\r\n /**\r\n * Converts `value` to a number.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to process.\r\n * @returns {number} Returns the number.\r\n * @example\r\n *\r\n * _.toNumber(3.2);\r\n * // => 3.2\r\n *\r\n * _.toNumber(Number.MIN_VALUE);\r\n * // => 5e-324\r\n *\r\n * _.toNumber(Infinity);\r\n * // => Infinity\r\n *\r\n * _.toNumber('3.2');\r\n * // => 3.2\r\n */\r\n function toNumber(value) {\r\n if (typeof value == 'number') {\r\n return value;\r\n }\r\n if (isSymbol(value)) {\r\n return NAN;\r\n }\r\n if (isObject(value)) {\r\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\r\n value = isObject(other) ? (other + '') : other;\r\n }\r\n if (typeof value != 'string') {\r\n return value === 0 ? value : +value;\r\n }\r\n value = baseTrim(value);\r\n var isBinary = reIsBinary.test(value);\r\n return (isBinary || reIsOctal.test(value))\r\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\r\n : (reIsBadHex.test(value) ? NAN : +value);\r\n }\r\n\r\n /**\r\n * Converts `value` to a plain object flattening inherited enumerable string\r\n * keyed properties of `value` to own properties of the plain object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Lang\r\n * @param {*} value The value to convert.\r\n * @returns {Object} Returns the converted plain object.\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.b = 2;\r\n * }\r\n *\r\n * Foo.prototype.c = 3;\r\n *\r\n * _.assign({ 'a': 1 }, new Foo);\r\n * // => { 'a': 1, 'b': 2 }\r\n *\r\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\r\n * // => { 'a': 1, 'b': 2, 'c': 3 }\r\n */\r\n function toPlainObject(value) {\r\n return copyObject(value, keysIn(value));\r\n }\r\n\r\n /**\r\n * Converts `value` to a safe integer. A safe integer can be compared and\r\n * represented correctly.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to convert.\r\n * @returns {number} Returns the converted integer.\r\n * @example\r\n *\r\n * _.toSafeInteger(3.2);\r\n * // => 3\r\n *\r\n * _.toSafeInteger(Number.MIN_VALUE);\r\n * // => 0\r\n *\r\n * _.toSafeInteger(Infinity);\r\n * // => 9007199254740991\r\n *\r\n * _.toSafeInteger('3.2');\r\n * // => 3\r\n */\r\n function toSafeInteger(value) {\r\n return value\r\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\r\n : (value === 0 ? value : 0);\r\n }\r\n\r\n /**\r\n * Converts `value` to a string. An empty string is returned for `null`\r\n * and `undefined` values. The sign of `-0` is preserved.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to convert.\r\n * @returns {string} Returns the converted string.\r\n * @example\r\n *\r\n * _.toString(null);\r\n * // => ''\r\n *\r\n * _.toString(-0);\r\n * // => '-0'\r\n *\r\n * _.toString([1, 2, 3]);\r\n * // => '1,2,3'\r\n */\r\n function toString(value) {\r\n return value == null ? '' : baseToString(value);\r\n }\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Assigns own enumerable string keyed properties of source objects to the\r\n * destination object. Source objects are applied from left to right.\r\n * Subsequent sources overwrite property assignments of previous sources.\r\n *\r\n * **Note:** This method mutates `object` and is loosely based on\r\n * [`Object.assign`](https://mdn.io/Object/assign).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.10.0\r\n * @category Object\r\n * @param {Object} object The destination object.\r\n * @param {...Object} [sources] The source objects.\r\n * @returns {Object} Returns `object`.\r\n * @see _.assignIn\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = 1;\r\n * }\r\n *\r\n * function Bar() {\r\n * this.c = 3;\r\n * }\r\n *\r\n * Foo.prototype.b = 2;\r\n * Bar.prototype.d = 4;\r\n *\r\n * _.assign({ 'a': 0 }, new Foo, new Bar);\r\n * // => { 'a': 1, 'c': 3 }\r\n */\r\n var assign = createAssigner(function(object, source) {\r\n if (isPrototype(source) || isArrayLike(source)) {\r\n copyObject(source, keys(source), object);\r\n return;\r\n }\r\n for (var key in source) {\r\n if (hasOwnProperty.call(source, key)) {\r\n assignValue(object, key, source[key]);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * This method is like `_.assign` except that it iterates over own and\r\n * inherited source properties.\r\n *\r\n * **Note:** This method mutates `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @alias extend\r\n * @category Object\r\n * @param {Object} object The destination object.\r\n * @param {...Object} [sources] The source objects.\r\n * @returns {Object} Returns `object`.\r\n * @see _.assign\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = 1;\r\n * }\r\n *\r\n * function Bar() {\r\n * this.c = 3;\r\n * }\r\n *\r\n * Foo.prototype.b = 2;\r\n * Bar.prototype.d = 4;\r\n *\r\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\r\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\r\n */\r\n var assignIn = createAssigner(function(object, source) {\r\n copyObject(source, keysIn(source), object);\r\n });\r\n\r\n /**\r\n * This method is like `_.assignIn` except that it accepts `customizer`\r\n * which is invoked to produce the assigned values. If `customizer` returns\r\n * `undefined`, assignment is handled by the method instead. The `customizer`\r\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\r\n *\r\n * **Note:** This method mutates `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @alias extendWith\r\n * @category Object\r\n * @param {Object} object The destination object.\r\n * @param {...Object} sources The source objects.\r\n * @param {Function} [customizer] The function to customize assigned values.\r\n * @returns {Object} Returns `object`.\r\n * @see _.assignWith\r\n * @example\r\n *\r\n * function customizer(objValue, srcValue) {\r\n * return _.isUndefined(objValue) ? srcValue : objValue;\r\n * }\r\n *\r\n * var defaults = _.partialRight(_.assignInWith, customizer);\r\n *\r\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\r\n * // => { 'a': 1, 'b': 2 }\r\n */\r\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\r\n copyObject(source, keysIn(source), object, customizer);\r\n });\r\n\r\n /**\r\n * This method is like `_.assign` except that it accepts `customizer`\r\n * which is invoked to produce the assigned values. If `customizer` returns\r\n * `undefined`, assignment is handled by the method instead. The `customizer`\r\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\r\n *\r\n * **Note:** This method mutates `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Object\r\n * @param {Object} object The destination object.\r\n * @param {...Object} sources The source objects.\r\n * @param {Function} [customizer] The function to customize assigned values.\r\n * @returns {Object} Returns `object`.\r\n * @see _.assignInWith\r\n * @example\r\n *\r\n * function customizer(objValue, srcValue) {\r\n * return _.isUndefined(objValue) ? srcValue : objValue;\r\n * }\r\n *\r\n * var defaults = _.partialRight(_.assignWith, customizer);\r\n *\r\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\r\n * // => { 'a': 1, 'b': 2 }\r\n */\r\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\r\n copyObject(source, keys(source), object, customizer);\r\n });\r\n\r\n /**\r\n * Creates an array of values corresponding to `paths` of `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 1.0.0\r\n * @category Object\r\n * @param {Object} object The object to iterate over.\r\n * @param {...(string|string[])} [paths] The property paths to pick.\r\n * @returns {Array} Returns the picked values.\r\n * @example\r\n *\r\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\r\n *\r\n * _.at(object, ['a[0].b.c', 'a[1]']);\r\n * // => [3, 4]\r\n */\r\n var at = flatRest(baseAt);\r\n\r\n /**\r\n * Creates an object that inherits from the `prototype` object. If a\r\n * `properties` object is given, its own enumerable string keyed properties\r\n * are assigned to the created object.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 2.3.0\r\n * @category Object\r\n * @param {Object} prototype The object to inherit from.\r\n * @param {Object} [properties] The properties to assign to the object.\r\n * @returns {Object} Returns the new object.\r\n * @example\r\n *\r\n * function Shape() {\r\n * this.x = 0;\r\n * this.y = 0;\r\n * }\r\n *\r\n * function Circle() {\r\n * Shape.call(this);\r\n * }\r\n *\r\n * Circle.prototype = _.create(Shape.prototype, {\r\n * 'constructor': Circle\r\n * });\r\n *\r\n * var circle = new Circle;\r\n * circle instanceof Circle;\r\n * // => true\r\n *\r\n * circle instanceof Shape;\r\n * // => true\r\n */\r\n function create(prototype, properties) {\r\n var result = baseCreate(prototype);\r\n return properties == null ? result : baseAssign(result, properties);\r\n }\r\n\r\n /**\r\n * Assigns own and inherited enumerable string keyed properties of source\r\n * objects to the destination object for all destination properties that\r\n * resolve to `undefined`. Source objects are applied from left to right.\r\n * Once a property is set, additional values of the same property are ignored.\r\n *\r\n * **Note:** This method mutates `object`.\r\n *\r\n * @static\r\n * @since 0.1.0\r\n * @memberOf _\r\n * @category Object\r\n * @param {Object} object The destination object.\r\n * @param {...Object} [sources] The source objects.\r\n * @returns {Object} Returns `object`.\r\n * @see _.defaultsDeep\r\n * @example\r\n *\r\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\r\n * // => { 'a': 1, 'b': 2 }\r\n */\r\n var defaults = baseRest(function(object, sources) {\r\n object = Object(object);\r\n\r\n var index = -1;\r\n var length = sources.length;\r\n var guard = length > 2 ? sources[2] : undefined;\r\n\r\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\r\n length = 1;\r\n }\r\n\r\n while (++index < length) {\r\n var source = sources[index];\r\n var props = keysIn(source);\r\n var propsIndex = -1;\r\n var propsLength = props.length;\r\n\r\n while (++propsIndex < propsLength) {\r\n var key = props[propsIndex];\r\n var value = object[key];\r\n\r\n if (value === undefined ||\r\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\r\n object[key] = source[key];\r\n }\r\n }\r\n }\r\n\r\n return object;\r\n });\r\n\r\n /**\r\n * This method is like `_.defaults` except that it recursively assigns\r\n * default properties.\r\n *\r\n * **Note:** This method mutates `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.10.0\r\n * @category Object\r\n * @param {Object} object The destination object.\r\n * @param {...Object} [sources] The source objects.\r\n * @returns {Object} Returns `object`.\r\n * @see _.defaults\r\n * @example\r\n *\r\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\r\n * // => { 'a': { 'b': 2, 'c': 3 } }\r\n */\r\n var defaultsDeep = baseRest(function(args) {\r\n args.push(undefined, customDefaultsMerge);\r\n return apply(mergeWith, undefined, args);\r\n });\r\n\r\n /**\r\n * This method is like `_.find` except that it returns the key of the first\r\n * element `predicate` returns truthy for instead of the element itself.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 1.1.0\r\n * @category Object\r\n * @param {Object} object The object to inspect.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @returns {string|undefined} Returns the key of the matched element,\r\n * else `undefined`.\r\n * @example\r\n *\r\n * var users = {\r\n * 'barney': { 'age': 36, 'active': true },\r\n * 'fred': { 'age': 40, 'active': false },\r\n * 'pebbles': { 'age': 1, 'active': true }\r\n * };\r\n *\r\n * _.findKey(users, function(o) { return o.age < 40; });\r\n * // => 'barney' (iteration order is not guaranteed)\r\n *\r\n * // The `_.matches` iteratee shorthand.\r\n * _.findKey(users, { 'age': 1, 'active': true });\r\n * // => 'pebbles'\r\n *\r\n * // The `_.matchesProperty` iteratee shorthand.\r\n * _.findKey(users, ['active', false]);\r\n * // => 'fred'\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.findKey(users, 'active');\r\n * // => 'barney'\r\n */\r\n function findKey(object, predicate) {\r\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\r\n }\r\n\r\n /**\r\n * This method is like `_.findKey` except that it iterates over elements of\r\n * a collection in the opposite order.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 2.0.0\r\n * @category Object\r\n * @param {Object} object The object to inspect.\r\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\r\n * @returns {string|undefined} Returns the key of the matched element,\r\n * else `undefined`.\r\n * @example\r\n *\r\n * var users = {\r\n * 'barney': { 'age': 36, 'active': true },\r\n * 'fred': { 'age': 40, 'active': false },\r\n * 'pebbles': { 'age': 1, 'active': true }\r\n * };\r\n *\r\n * _.findLastKey(users, function(o) { return o.age < 40; });\r\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\r\n *\r\n * // The `_.matches` iteratee shorthand.\r\n * _.findLastKey(users, { 'age': 36, 'active': true });\r\n * // => 'barney'\r\n *\r\n * // The `_.matchesProperty` iteratee shorthand.\r\n * _.findLastKey(users, ['active', false]);\r\n * // => 'fred'\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.findLastKey(users, 'active');\r\n * // => 'pebbles'\r\n */\r\n function findLastKey(object, predicate) {\r\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\r\n }\r\n\r\n /**\r\n * Iterates over own and inherited enumerable string keyed properties of an\r\n * object and invokes `iteratee` for each property. The iteratee is invoked\r\n * with three arguments: (value, key, object). Iteratee functions may exit\r\n * iteration early by explicitly returning `false`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.3.0\r\n * @category Object\r\n * @param {Object} object The object to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @returns {Object} Returns `object`.\r\n * @see _.forInRight\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = 1;\r\n * this.b = 2;\r\n * }\r\n *\r\n * Foo.prototype.c = 3;\r\n *\r\n * _.forIn(new Foo, function(value, key) {\r\n * console.log(key);\r\n * });\r\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\r\n */\r\n function forIn(object, iteratee) {\r\n return object == null\r\n ? object\r\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\r\n }\r\n\r\n /**\r\n * This method is like `_.forIn` except that it iterates over properties of\r\n * `object` in the opposite order.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 2.0.0\r\n * @category Object\r\n * @param {Object} object The object to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @returns {Object} Returns `object`.\r\n * @see _.forIn\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = 1;\r\n * this.b = 2;\r\n * }\r\n *\r\n * Foo.prototype.c = 3;\r\n *\r\n * _.forInRight(new Foo, function(value, key) {\r\n * console.log(key);\r\n * });\r\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\r\n */\r\n function forInRight(object, iteratee) {\r\n return object == null\r\n ? object\r\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\r\n }\r\n\r\n /**\r\n * Iterates over own enumerable string keyed properties of an object and\r\n * invokes `iteratee` for each property. The iteratee is invoked with three\r\n * arguments: (value, key, object). Iteratee functions may exit iteration\r\n * early by explicitly returning `false`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.3.0\r\n * @category Object\r\n * @param {Object} object The object to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @returns {Object} Returns `object`.\r\n * @see _.forOwnRight\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = 1;\r\n * this.b = 2;\r\n * }\r\n *\r\n * Foo.prototype.c = 3;\r\n *\r\n * _.forOwn(new Foo, function(value, key) {\r\n * console.log(key);\r\n * });\r\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\r\n */\r\n function forOwn(object, iteratee) {\r\n return object && baseForOwn(object, getIteratee(iteratee, 3));\r\n }\r\n\r\n /**\r\n * This method is like `_.forOwn` except that it iterates over properties of\r\n * `object` in the opposite order.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 2.0.0\r\n * @category Object\r\n * @param {Object} object The object to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @returns {Object} Returns `object`.\r\n * @see _.forOwn\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = 1;\r\n * this.b = 2;\r\n * }\r\n *\r\n * Foo.prototype.c = 3;\r\n *\r\n * _.forOwnRight(new Foo, function(value, key) {\r\n * console.log(key);\r\n * });\r\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\r\n */\r\n function forOwnRight(object, iteratee) {\r\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\r\n }\r\n\r\n /**\r\n * Creates an array of function property names from own enumerable properties\r\n * of `object`.\r\n *\r\n * @static\r\n * @since 0.1.0\r\n * @memberOf _\r\n * @category Object\r\n * @param {Object} object The object to inspect.\r\n * @returns {Array} Returns the function names.\r\n * @see _.functionsIn\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = _.constant('a');\r\n * this.b = _.constant('b');\r\n * }\r\n *\r\n * Foo.prototype.c = _.constant('c');\r\n *\r\n * _.functions(new Foo);\r\n * // => ['a', 'b']\r\n */\r\n function functions(object) {\r\n return object == null ? [] : baseFunctions(object, keys(object));\r\n }\r\n\r\n /**\r\n * Creates an array of function property names from own and inherited\r\n * enumerable properties of `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Object\r\n * @param {Object} object The object to inspect.\r\n * @returns {Array} Returns the function names.\r\n * @see _.functions\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = _.constant('a');\r\n * this.b = _.constant('b');\r\n * }\r\n *\r\n * Foo.prototype.c = _.constant('c');\r\n *\r\n * _.functionsIn(new Foo);\r\n * // => ['a', 'b', 'c']\r\n */\r\n function functionsIn(object) {\r\n return object == null ? [] : baseFunctions(object, keysIn(object));\r\n }\r\n\r\n /**\r\n * Gets the value at `path` of `object`. If the resolved value is\r\n * `undefined`, the `defaultValue` is returned in its place.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.7.0\r\n * @category Object\r\n * @param {Object} object The object to query.\r\n * @param {Array|string} path The path of the property to get.\r\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\r\n * @returns {*} Returns the resolved value.\r\n * @example\r\n *\r\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\r\n *\r\n * _.get(object, 'a[0].b.c');\r\n * // => 3\r\n *\r\n * _.get(object, ['a', '0', 'b', 'c']);\r\n * // => 3\r\n *\r\n * _.get(object, 'a.b.c', 'default');\r\n * // => 'default'\r\n */\r\n function get(object, path, defaultValue) {\r\n var result = object == null ? undefined : baseGet(object, path);\r\n return result === undefined ? defaultValue : result;\r\n }\r\n\r\n /**\r\n * Checks if `path` is a direct property of `object`.\r\n *\r\n * @static\r\n * @since 0.1.0\r\n * @memberOf _\r\n * @category Object\r\n * @param {Object} object The object to query.\r\n * @param {Array|string} path The path to check.\r\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\r\n * @example\r\n *\r\n * var object = { 'a': { 'b': 2 } };\r\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\r\n *\r\n * _.has(object, 'a');\r\n * // => true\r\n *\r\n * _.has(object, 'a.b');\r\n * // => true\r\n *\r\n * _.has(object, ['a', 'b']);\r\n * // => true\r\n *\r\n * _.has(other, 'a');\r\n * // => false\r\n */\r\n function has(object, path) {\r\n return object != null && hasPath(object, path, baseHas);\r\n }\r\n\r\n /**\r\n * Checks if `path` is a direct or inherited property of `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Object\r\n * @param {Object} object The object to query.\r\n * @param {Array|string} path The path to check.\r\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\r\n * @example\r\n *\r\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\r\n *\r\n * _.hasIn(object, 'a');\r\n * // => true\r\n *\r\n * _.hasIn(object, 'a.b');\r\n * // => true\r\n *\r\n * _.hasIn(object, ['a', 'b']);\r\n * // => true\r\n *\r\n * _.hasIn(object, 'b');\r\n * // => false\r\n */\r\n function hasIn(object, path) {\r\n return object != null && hasPath(object, path, baseHasIn);\r\n }\r\n\r\n /**\r\n * Creates an object composed of the inverted keys and values of `object`.\r\n * If `object` contains duplicate values, subsequent values overwrite\r\n * property assignments of previous values.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.7.0\r\n * @category Object\r\n * @param {Object} object The object to invert.\r\n * @returns {Object} Returns the new inverted object.\r\n * @example\r\n *\r\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\r\n *\r\n * _.invert(object);\r\n * // => { '1': 'c', '2': 'b' }\r\n */\r\n var invert = createInverter(function(result, value, key) {\r\n if (value != null &&\r\n typeof value.toString != 'function') {\r\n value = nativeObjectToString.call(value);\r\n }\r\n\r\n result[value] = key;\r\n }, constant(identity));\r\n\r\n /**\r\n * This method is like `_.invert` except that the inverted object is generated\r\n * from the results of running each element of `object` thru `iteratee`. The\r\n * corresponding inverted value of each inverted key is an array of keys\r\n * responsible for generating the inverted value. The iteratee is invoked\r\n * with one argument: (value).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.1.0\r\n * @category Object\r\n * @param {Object} object The object to invert.\r\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\r\n * @returns {Object} Returns the new inverted object.\r\n * @example\r\n *\r\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\r\n *\r\n * _.invertBy(object);\r\n * // => { '1': ['a', 'c'], '2': ['b'] }\r\n *\r\n * _.invertBy(object, function(value) {\r\n * return 'group' + value;\r\n * });\r\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\r\n */\r\n var invertBy = createInverter(function(result, value, key) {\r\n if (value != null &&\r\n typeof value.toString != 'function') {\r\n value = nativeObjectToString.call(value);\r\n }\r\n\r\n if (hasOwnProperty.call(result, value)) {\r\n result[value].push(key);\r\n } else {\r\n result[value] = [key];\r\n }\r\n }, getIteratee);\r\n\r\n /**\r\n * Invokes the method at `path` of `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Object\r\n * @param {Object} object The object to query.\r\n * @param {Array|string} path The path of the method to invoke.\r\n * @param {...*} [args] The arguments to invoke the method with.\r\n * @returns {*} Returns the result of the invoked method.\r\n * @example\r\n *\r\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\r\n *\r\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\r\n * // => [2, 3]\r\n */\r\n var invoke = baseRest(baseInvoke);\r\n\r\n /**\r\n * Creates an array of the own enumerable property names of `object`.\r\n *\r\n * **Note:** Non-object values are coerced to objects. See the\r\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\r\n * for more details.\r\n *\r\n * @static\r\n * @since 0.1.0\r\n * @memberOf _\r\n * @category Object\r\n * @param {Object} object The object to query.\r\n * @returns {Array} Returns the array of property names.\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = 1;\r\n * this.b = 2;\r\n * }\r\n *\r\n * Foo.prototype.c = 3;\r\n *\r\n * _.keys(new Foo);\r\n * // => ['a', 'b'] (iteration order is not guaranteed)\r\n *\r\n * _.keys('hi');\r\n * // => ['0', '1']\r\n */\r\n function keys(object) {\r\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\r\n }\r\n\r\n /**\r\n * Creates an array of the own and inherited enumerable property names of `object`.\r\n *\r\n * **Note:** Non-object values are coerced to objects.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Object\r\n * @param {Object} object The object to query.\r\n * @returns {Array} Returns the array of property names.\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = 1;\r\n * this.b = 2;\r\n * }\r\n *\r\n * Foo.prototype.c = 3;\r\n *\r\n * _.keysIn(new Foo);\r\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\r\n */\r\n function keysIn(object) {\r\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\r\n }\r\n\r\n /**\r\n * The opposite of `_.mapValues`; this method creates an object with the\r\n * same values as `object` and keys generated by running each own enumerable\r\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\r\n * with three arguments: (value, key, object).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.8.0\r\n * @category Object\r\n * @param {Object} object The object to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @returns {Object} Returns the new mapped object.\r\n * @see _.mapValues\r\n * @example\r\n *\r\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\r\n * return key + value;\r\n * });\r\n * // => { 'a1': 1, 'b2': 2 }\r\n */\r\n function mapKeys(object, iteratee) {\r\n var result = {};\r\n iteratee = getIteratee(iteratee, 3);\r\n\r\n baseForOwn(object, function(value, key, object) {\r\n baseAssignValue(result, iteratee(value, key, object), value);\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates an object with the same keys as `object` and values generated\r\n * by running each own enumerable string keyed property of `object` thru\r\n * `iteratee`. The iteratee is invoked with three arguments:\r\n * (value, key, object).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 2.4.0\r\n * @category Object\r\n * @param {Object} object The object to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @returns {Object} Returns the new mapped object.\r\n * @see _.mapKeys\r\n * @example\r\n *\r\n * var users = {\r\n * 'fred': { 'user': 'fred', 'age': 40 },\r\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\r\n * };\r\n *\r\n * _.mapValues(users, function(o) { return o.age; });\r\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\r\n *\r\n * // The `_.property` iteratee shorthand.\r\n * _.mapValues(users, 'age');\r\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\r\n */\r\n function mapValues(object, iteratee) {\r\n var result = {};\r\n iteratee = getIteratee(iteratee, 3);\r\n\r\n baseForOwn(object, function(value, key, object) {\r\n baseAssignValue(result, key, iteratee(value, key, object));\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * This method is like `_.assign` except that it recursively merges own and\r\n * inherited enumerable string keyed properties of source objects into the\r\n * destination object. Source properties that resolve to `undefined` are\r\n * skipped if a destination value exists. Array and plain object properties\r\n * are merged recursively. Other objects and value types are overridden by\r\n * assignment. Source objects are applied from left to right. Subsequent\r\n * sources overwrite property assignments of previous sources.\r\n *\r\n * **Note:** This method mutates `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.5.0\r\n * @category Object\r\n * @param {Object} object The destination object.\r\n * @param {...Object} [sources] The source objects.\r\n * @returns {Object} Returns `object`.\r\n * @example\r\n *\r\n * var object = {\r\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\r\n * };\r\n *\r\n * var other = {\r\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\r\n * };\r\n *\r\n * _.merge(object, other);\r\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\r\n */\r\n var merge = createAssigner(function(object, source, srcIndex) {\r\n baseMerge(object, source, srcIndex);\r\n });\r\n\r\n /**\r\n * This method is like `_.merge` except that it accepts `customizer` which\r\n * is invoked to produce the merged values of the destination and source\r\n * properties. If `customizer` returns `undefined`, merging is handled by the\r\n * method instead. The `customizer` is invoked with six arguments:\r\n * (objValue, srcValue, key, object, source, stack).\r\n *\r\n * **Note:** This method mutates `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Object\r\n * @param {Object} object The destination object.\r\n * @param {...Object} sources The source objects.\r\n * @param {Function} customizer The function to customize assigned values.\r\n * @returns {Object} Returns `object`.\r\n * @example\r\n *\r\n * function customizer(objValue, srcValue) {\r\n * if (_.isArray(objValue)) {\r\n * return objValue.concat(srcValue);\r\n * }\r\n * }\r\n *\r\n * var object = { 'a': [1], 'b': [2] };\r\n * var other = { 'a': [3], 'b': [4] };\r\n *\r\n * _.mergeWith(object, other, customizer);\r\n * // => { 'a': [1, 3], 'b': [2, 4] }\r\n */\r\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\r\n baseMerge(object, source, srcIndex, customizer);\r\n });\r\n\r\n /**\r\n * The opposite of `_.pick`; this method creates an object composed of the\r\n * own and inherited enumerable property paths of `object` that are not omitted.\r\n *\r\n * **Note:** This method is considerably slower than `_.pick`.\r\n *\r\n * @static\r\n * @since 0.1.0\r\n * @memberOf _\r\n * @category Object\r\n * @param {Object} object The source object.\r\n * @param {...(string|string[])} [paths] The property paths to omit.\r\n * @returns {Object} Returns the new object.\r\n * @example\r\n *\r\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\r\n *\r\n * _.omit(object, ['a', 'c']);\r\n * // => { 'b': '2' }\r\n */\r\n var omit = flatRest(function(object, paths) {\r\n var result = {};\r\n if (object == null) {\r\n return result;\r\n }\r\n var isDeep = false;\r\n paths = arrayMap(paths, function(path) {\r\n path = castPath(path, object);\r\n isDeep || (isDeep = path.length > 1);\r\n return path;\r\n });\r\n copyObject(object, getAllKeysIn(object), result);\r\n if (isDeep) {\r\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\r\n }\r\n var length = paths.length;\r\n while (length--) {\r\n baseUnset(result, paths[length]);\r\n }\r\n return result;\r\n });\r\n\r\n /**\r\n * The opposite of `_.pickBy`; this method creates an object composed of\r\n * the own and inherited enumerable string keyed properties of `object` that\r\n * `predicate` doesn't return truthy for. The predicate is invoked with two\r\n * arguments: (value, key).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Object\r\n * @param {Object} object The source object.\r\n * @param {Function} [predicate=_.identity] The function invoked per property.\r\n * @returns {Object} Returns the new object.\r\n * @example\r\n *\r\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\r\n *\r\n * _.omitBy(object, _.isNumber);\r\n * // => { 'b': '2' }\r\n */\r\n function omitBy(object, predicate) {\r\n return pickBy(object, negate(getIteratee(predicate)));\r\n }\r\n\r\n /**\r\n * Creates an object composed of the picked `object` properties.\r\n *\r\n * @static\r\n * @since 0.1.0\r\n * @memberOf _\r\n * @category Object\r\n * @param {Object} object The source object.\r\n * @param {...(string|string[])} [paths] The property paths to pick.\r\n * @returns {Object} Returns the new object.\r\n * @example\r\n *\r\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\r\n *\r\n * _.pick(object, ['a', 'c']);\r\n * // => { 'a': 1, 'c': 3 }\r\n */\r\n var pick = flatRest(function(object, paths) {\r\n return object == null ? {} : basePick(object, paths);\r\n });\r\n\r\n /**\r\n * Creates an object composed of the `object` properties `predicate` returns\r\n * truthy for. The predicate is invoked with two arguments: (value, key).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Object\r\n * @param {Object} object The source object.\r\n * @param {Function} [predicate=_.identity] The function invoked per property.\r\n * @returns {Object} Returns the new object.\r\n * @example\r\n *\r\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\r\n *\r\n * _.pickBy(object, _.isNumber);\r\n * // => { 'a': 1, 'c': 3 }\r\n */\r\n function pickBy(object, predicate) {\r\n if (object == null) {\r\n return {};\r\n }\r\n var props = arrayMap(getAllKeysIn(object), function(prop) {\r\n return [prop];\r\n });\r\n predicate = getIteratee(predicate);\r\n return basePickBy(object, props, function(value, path) {\r\n return predicate(value, path[0]);\r\n });\r\n }\r\n\r\n /**\r\n * This method is like `_.get` except that if the resolved value is a\r\n * function it's invoked with the `this` binding of its parent object and\r\n * its result is returned.\r\n *\r\n * @static\r\n * @since 0.1.0\r\n * @memberOf _\r\n * @category Object\r\n * @param {Object} object The object to query.\r\n * @param {Array|string} path The path of the property to resolve.\r\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\r\n * @returns {*} Returns the resolved value.\r\n * @example\r\n *\r\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\r\n *\r\n * _.result(object, 'a[0].b.c1');\r\n * // => 3\r\n *\r\n * _.result(object, 'a[0].b.c2');\r\n * // => 4\r\n *\r\n * _.result(object, 'a[0].b.c3', 'default');\r\n * // => 'default'\r\n *\r\n * _.result(object, 'a[0].b.c3', _.constant('default'));\r\n * // => 'default'\r\n */\r\n function result(object, path, defaultValue) {\r\n path = castPath(path, object);\r\n\r\n var index = -1,\r\n length = path.length;\r\n\r\n // Ensure the loop is entered when path is empty.\r\n if (!length) {\r\n length = 1;\r\n object = undefined;\r\n }\r\n while (++index < length) {\r\n var value = object == null ? undefined : object[toKey(path[index])];\r\n if (value === undefined) {\r\n index = length;\r\n value = defaultValue;\r\n }\r\n object = isFunction(value) ? value.call(object) : value;\r\n }\r\n return object;\r\n }\r\n\r\n /**\r\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\r\n * it's created. Arrays are created for missing index properties while objects\r\n * are created for all other missing properties. Use `_.setWith` to customize\r\n * `path` creation.\r\n *\r\n * **Note:** This method mutates `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.7.0\r\n * @category Object\r\n * @param {Object} object The object to modify.\r\n * @param {Array|string} path The path of the property to set.\r\n * @param {*} value The value to set.\r\n * @returns {Object} Returns `object`.\r\n * @example\r\n *\r\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\r\n *\r\n * _.set(object, 'a[0].b.c', 4);\r\n * console.log(object.a[0].b.c);\r\n * // => 4\r\n *\r\n * _.set(object, ['x', '0', 'y', 'z'], 5);\r\n * console.log(object.x[0].y.z);\r\n * // => 5\r\n */\r\n function set(object, path, value) {\r\n return object == null ? object : baseSet(object, path, value);\r\n }\r\n\r\n /**\r\n * This method is like `_.set` except that it accepts `customizer` which is\r\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\r\n * path creation is handled by the method instead. The `customizer` is invoked\r\n * with three arguments: (nsValue, key, nsObject).\r\n *\r\n * **Note:** This method mutates `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Object\r\n * @param {Object} object The object to modify.\r\n * @param {Array|string} path The path of the property to set.\r\n * @param {*} value The value to set.\r\n * @param {Function} [customizer] The function to customize assigned values.\r\n * @returns {Object} Returns `object`.\r\n * @example\r\n *\r\n * var object = {};\r\n *\r\n * _.setWith(object, '[0][1]', 'a', Object);\r\n * // => { '0': { '1': 'a' } }\r\n */\r\n function setWith(object, path, value, customizer) {\r\n customizer = typeof customizer == 'function' ? customizer : undefined;\r\n return object == null ? object : baseSet(object, path, value, customizer);\r\n }\r\n\r\n /**\r\n * Creates an array of own enumerable string keyed-value pairs for `object`\r\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\r\n * entries are returned.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @alias entries\r\n * @category Object\r\n * @param {Object} object The object to query.\r\n * @returns {Array} Returns the key-value pairs.\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = 1;\r\n * this.b = 2;\r\n * }\r\n *\r\n * Foo.prototype.c = 3;\r\n *\r\n * _.toPairs(new Foo);\r\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\r\n */\r\n var toPairs = createToPairs(keys);\r\n\r\n /**\r\n * Creates an array of own and inherited enumerable string keyed-value pairs\r\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\r\n * or set, its entries are returned.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @alias entriesIn\r\n * @category Object\r\n * @param {Object} object The object to query.\r\n * @returns {Array} Returns the key-value pairs.\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = 1;\r\n * this.b = 2;\r\n * }\r\n *\r\n * Foo.prototype.c = 3;\r\n *\r\n * _.toPairsIn(new Foo);\r\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\r\n */\r\n var toPairsIn = createToPairs(keysIn);\r\n\r\n /**\r\n * An alternative to `_.reduce`; this method transforms `object` to a new\r\n * `accumulator` object which is the result of running each of its own\r\n * enumerable string keyed properties thru `iteratee`, with each invocation\r\n * potentially mutating the `accumulator` object. If `accumulator` is not\r\n * provided, a new object with the same `[[Prototype]]` will be used. The\r\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\r\n * Iteratee functions may exit iteration early by explicitly returning `false`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 1.3.0\r\n * @category Object\r\n * @param {Object} object The object to iterate over.\r\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\r\n * @param {*} [accumulator] The custom accumulator value.\r\n * @returns {*} Returns the accumulated value.\r\n * @example\r\n *\r\n * _.transform([2, 3, 4], function(result, n) {\r\n * result.push(n *= n);\r\n * return n % 2 == 0;\r\n * }, []);\r\n * // => [4, 9]\r\n *\r\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\r\n * (result[value] || (result[value] = [])).push(key);\r\n * }, {});\r\n * // => { '1': ['a', 'c'], '2': ['b'] }\r\n */\r\n function transform(object, iteratee, accumulator) {\r\n var isArr = isArray(object),\r\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\r\n\r\n iteratee = getIteratee(iteratee, 4);\r\n if (accumulator == null) {\r\n var Ctor = object && object.constructor;\r\n if (isArrLike) {\r\n accumulator = isArr ? new Ctor : [];\r\n }\r\n else if (isObject(object)) {\r\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\r\n }\r\n else {\r\n accumulator = {};\r\n }\r\n }\r\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\r\n return iteratee(accumulator, value, index, object);\r\n });\r\n return accumulator;\r\n }\r\n\r\n /**\r\n * Removes the property at `path` of `object`.\r\n *\r\n * **Note:** This method mutates `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Object\r\n * @param {Object} object The object to modify.\r\n * @param {Array|string} path The path of the property to unset.\r\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\r\n * @example\r\n *\r\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\r\n * _.unset(object, 'a[0].b.c');\r\n * // => true\r\n *\r\n * console.log(object);\r\n * // => { 'a': [{ 'b': {} }] };\r\n *\r\n * _.unset(object, ['a', '0', 'b', 'c']);\r\n * // => true\r\n *\r\n * console.log(object);\r\n * // => { 'a': [{ 'b': {} }] };\r\n */\r\n function unset(object, path) {\r\n return object == null ? true : baseUnset(object, path);\r\n }\r\n\r\n /**\r\n * This method is like `_.set` except that accepts `updater` to produce the\r\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\r\n * is invoked with one argument: (value).\r\n *\r\n * **Note:** This method mutates `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.6.0\r\n * @category Object\r\n * @param {Object} object The object to modify.\r\n * @param {Array|string} path The path of the property to set.\r\n * @param {Function} updater The function to produce the updated value.\r\n * @returns {Object} Returns `object`.\r\n * @example\r\n *\r\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\r\n *\r\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\r\n * console.log(object.a[0].b.c);\r\n * // => 9\r\n *\r\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\r\n * console.log(object.x[0].y.z);\r\n * // => 0\r\n */\r\n function update(object, path, updater) {\r\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\r\n }\r\n\r\n /**\r\n * This method is like `_.update` except that it accepts `customizer` which is\r\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\r\n * path creation is handled by the method instead. The `customizer` is invoked\r\n * with three arguments: (nsValue, key, nsObject).\r\n *\r\n * **Note:** This method mutates `object`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.6.0\r\n * @category Object\r\n * @param {Object} object The object to modify.\r\n * @param {Array|string} path The path of the property to set.\r\n * @param {Function} updater The function to produce the updated value.\r\n * @param {Function} [customizer] The function to customize assigned values.\r\n * @returns {Object} Returns `object`.\r\n * @example\r\n *\r\n * var object = {};\r\n *\r\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\r\n * // => { '0': { '1': 'a' } }\r\n */\r\n function updateWith(object, path, updater, customizer) {\r\n customizer = typeof customizer == 'function' ? customizer : undefined;\r\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\r\n }\r\n\r\n /**\r\n * Creates an array of the own enumerable string keyed property values of `object`.\r\n *\r\n * **Note:** Non-object values are coerced to objects.\r\n *\r\n * @static\r\n * @since 0.1.0\r\n * @memberOf _\r\n * @category Object\r\n * @param {Object} object The object to query.\r\n * @returns {Array} Returns the array of property values.\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = 1;\r\n * this.b = 2;\r\n * }\r\n *\r\n * Foo.prototype.c = 3;\r\n *\r\n * _.values(new Foo);\r\n * // => [1, 2] (iteration order is not guaranteed)\r\n *\r\n * _.values('hi');\r\n * // => ['h', 'i']\r\n */\r\n function values(object) {\r\n return object == null ? [] : baseValues(object, keys(object));\r\n }\r\n\r\n /**\r\n * Creates an array of the own and inherited enumerable string keyed property\r\n * values of `object`.\r\n *\r\n * **Note:** Non-object values are coerced to objects.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category Object\r\n * @param {Object} object The object to query.\r\n * @returns {Array} Returns the array of property values.\r\n * @example\r\n *\r\n * function Foo() {\r\n * this.a = 1;\r\n * this.b = 2;\r\n * }\r\n *\r\n * Foo.prototype.c = 3;\r\n *\r\n * _.valuesIn(new Foo);\r\n * // => [1, 2, 3] (iteration order is not guaranteed)\r\n */\r\n function valuesIn(object) {\r\n return object == null ? [] : baseValues(object, keysIn(object));\r\n }\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category Number\r\n * @param {number} number The number to clamp.\r\n * @param {number} [lower] The lower bound.\r\n * @param {number} upper The upper bound.\r\n * @returns {number} Returns the clamped number.\r\n * @example\r\n *\r\n * _.clamp(-10, -5, 5);\r\n * // => -5\r\n *\r\n * _.clamp(10, -5, 5);\r\n * // => 5\r\n */\r\n function clamp(number, lower, upper) {\r\n if (upper === undefined) {\r\n upper = lower;\r\n lower = undefined;\r\n }\r\n if (upper !== undefined) {\r\n upper = toNumber(upper);\r\n upper = upper === upper ? upper : 0;\r\n }\r\n if (lower !== undefined) {\r\n lower = toNumber(lower);\r\n lower = lower === lower ? lower : 0;\r\n }\r\n return baseClamp(toNumber(number), lower, upper);\r\n }\r\n\r\n /**\r\n * Checks if `n` is between `start` and up to, but not including, `end`. If\r\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\r\n * If `start` is greater than `end` the params are swapped to support\r\n * negative ranges.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.3.0\r\n * @category Number\r\n * @param {number} number The number to check.\r\n * @param {number} [start=0] The start of the range.\r\n * @param {number} end The end of the range.\r\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\r\n * @see _.range, _.rangeRight\r\n * @example\r\n *\r\n * _.inRange(3, 2, 4);\r\n * // => true\r\n *\r\n * _.inRange(4, 8);\r\n * // => true\r\n *\r\n * _.inRange(4, 2);\r\n * // => false\r\n *\r\n * _.inRange(2, 2);\r\n * // => false\r\n *\r\n * _.inRange(1.2, 2);\r\n * // => true\r\n *\r\n * _.inRange(5.2, 4);\r\n * // => false\r\n *\r\n * _.inRange(-3, -2, -6);\r\n * // => true\r\n */\r\n function inRange(number, start, end) {\r\n start = toFinite(start);\r\n if (end === undefined) {\r\n end = start;\r\n start = 0;\r\n } else {\r\n end = toFinite(end);\r\n }\r\n number = toNumber(number);\r\n return baseInRange(number, start, end);\r\n }\r\n\r\n /**\r\n * Produces a random number between the inclusive `lower` and `upper` bounds.\r\n * If only one argument is provided a number between `0` and the given number\r\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\r\n * floats, a floating-point number is returned instead of an integer.\r\n *\r\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\r\n * floating-point values which can produce unexpected results.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 0.7.0\r\n * @category Number\r\n * @param {number} [lower=0] The lower bound.\r\n * @param {number} [upper=1] The upper bound.\r\n * @param {boolean} [floating] Specify returning a floating-point number.\r\n * @returns {number} Returns the random number.\r\n * @example\r\n *\r\n * _.random(0, 5);\r\n * // => an integer between 0 and 5\r\n *\r\n * _.random(5);\r\n * // => also an integer between 0 and 5\r\n *\r\n * _.random(5, true);\r\n * // => a floating-point number between 0 and 5\r\n *\r\n * _.random(1.2, 5.2);\r\n * // => a floating-point number between 1.2 and 5.2\r\n */\r\n function random(lower, upper, floating) {\r\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\r\n upper = floating = undefined;\r\n }\r\n if (floating === undefined) {\r\n if (typeof upper == 'boolean') {\r\n floating = upper;\r\n upper = undefined;\r\n }\r\n else if (typeof lower == 'boolean') {\r\n floating = lower;\r\n lower = undefined;\r\n }\r\n }\r\n if (lower === undefined && upper === undefined) {\r\n lower = 0;\r\n upper = 1;\r\n }\r\n else {\r\n lower = toFinite(lower);\r\n if (upper === undefined) {\r\n upper = lower;\r\n lower = 0;\r\n } else {\r\n upper = toFinite(upper);\r\n }\r\n }\r\n if (lower > upper) {\r\n var temp = lower;\r\n lower = upper;\r\n upper = temp;\r\n }\r\n if (floating || lower % 1 || upper % 1) {\r\n var rand = nativeRandom();\r\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\r\n }\r\n return baseRandom(lower, upper);\r\n }\r\n\r\n /*------------------------------------------------------------------------*/\r\n\r\n /**\r\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to convert.\r\n * @returns {string} Returns the camel cased string.\r\n * @example\r\n *\r\n * _.camelCase('Foo Bar');\r\n * // => 'fooBar'\r\n *\r\n * _.camelCase('--foo-bar--');\r\n * // => 'fooBar'\r\n *\r\n * _.camelCase('__FOO_BAR__');\r\n * // => 'fooBar'\r\n */\r\n var camelCase = createCompounder(function(result, word, index) {\r\n word = word.toLowerCase();\r\n return result + (index ? capitalize(word) : word);\r\n });\r\n\r\n /**\r\n * Converts the first character of `string` to upper case and the remaining\r\n * to lower case.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to capitalize.\r\n * @returns {string} Returns the capitalized string.\r\n * @example\r\n *\r\n * _.capitalize('FRED');\r\n * // => 'Fred'\r\n */\r\n function capitalize(string) {\r\n return upperFirst(toString(string).toLowerCase());\r\n }\r\n\r\n /**\r\n * Deburrs `string` by converting\r\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\r\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\r\n * letters to basic Latin letters and removing\r\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to deburr.\r\n * @returns {string} Returns the deburred string.\r\n * @example\r\n *\r\n * _.deburr('déjà vu');\r\n * // => 'deja vu'\r\n */\r\n function deburr(string) {\r\n string = toString(string);\r\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\r\n }\r\n\r\n /**\r\n * Checks if `string` ends with the given target string.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to inspect.\r\n * @param {string} [target] The string to search for.\r\n * @param {number} [position=string.length] The position to search up to.\r\n * @returns {boolean} Returns `true` if `string` ends with `target`,\r\n * else `false`.\r\n * @example\r\n *\r\n * _.endsWith('abc', 'c');\r\n * // => true\r\n *\r\n * _.endsWith('abc', 'b');\r\n * // => false\r\n *\r\n * _.endsWith('abc', 'b', 2);\r\n * // => true\r\n */\r\n function endsWith(string, target, position) {\r\n string = toString(string);\r\n target = baseToString(target);\r\n\r\n var length = string.length;\r\n position = position === undefined\r\n ? length\r\n : baseClamp(toInteger(position), 0, length);\r\n\r\n var end = position;\r\n position -= target.length;\r\n return position >= 0 && string.slice(position, end) == target;\r\n }\r\n\r\n /**\r\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\r\n * corresponding HTML entities.\r\n *\r\n * **Note:** No other characters are escaped. To escape additional\r\n * characters use a third-party library like [_he_](https://mths.be/he).\r\n *\r\n * Though the \">\" character is escaped for symmetry, characters like\r\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\r\n * unless they're part of a tag or unquoted attribute value. See\r\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\r\n * (under \"semi-related fun fact\") for more details.\r\n *\r\n * When working with HTML you should always\r\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\r\n * XSS vectors.\r\n *\r\n * @static\r\n * @since 0.1.0\r\n * @memberOf _\r\n * @category String\r\n * @param {string} [string=''] The string to escape.\r\n * @returns {string} Returns the escaped string.\r\n * @example\r\n *\r\n * _.escape('fred, barney, & pebbles');\r\n * // => 'fred, barney, & pebbles'\r\n */\r\n function escape(string) {\r\n string = toString(string);\r\n return (string && reHasUnescapedHtml.test(string))\r\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\r\n : string;\r\n }\r\n\r\n /**\r\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\r\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to escape.\r\n * @returns {string} Returns the escaped string.\r\n * @example\r\n *\r\n * _.escapeRegExp('[lodash](https://lodash.com/)');\r\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\r\n */\r\n function escapeRegExp(string) {\r\n string = toString(string);\r\n return (string && reHasRegExpChar.test(string))\r\n ? string.replace(reRegExpChar, '\\\\$&')\r\n : string;\r\n }\r\n\r\n /**\r\n * Converts `string` to\r\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to convert.\r\n * @returns {string} Returns the kebab cased string.\r\n * @example\r\n *\r\n * _.kebabCase('Foo Bar');\r\n * // => 'foo-bar'\r\n *\r\n * _.kebabCase('fooBar');\r\n * // => 'foo-bar'\r\n *\r\n * _.kebabCase('__FOO_BAR__');\r\n * // => 'foo-bar'\r\n */\r\n var kebabCase = createCompounder(function(result, word, index) {\r\n return result + (index ? '-' : '') + word.toLowerCase();\r\n });\r\n\r\n /**\r\n * Converts `string`, as space separated words, to lower case.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to convert.\r\n * @returns {string} Returns the lower cased string.\r\n * @example\r\n *\r\n * _.lowerCase('--Foo-Bar--');\r\n * // => 'foo bar'\r\n *\r\n * _.lowerCase('fooBar');\r\n * // => 'foo bar'\r\n *\r\n * _.lowerCase('__FOO_BAR__');\r\n * // => 'foo bar'\r\n */\r\n var lowerCase = createCompounder(function(result, word, index) {\r\n return result + (index ? ' ' : '') + word.toLowerCase();\r\n });\r\n\r\n /**\r\n * Converts the first character of `string` to lower case.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to convert.\r\n * @returns {string} Returns the converted string.\r\n * @example\r\n *\r\n * _.lowerFirst('Fred');\r\n * // => 'fred'\r\n *\r\n * _.lowerFirst('FRED');\r\n * // => 'fRED'\r\n */\r\n var lowerFirst = createCaseFirst('toLowerCase');\r\n\r\n /**\r\n * Pads `string` on the left and right sides if it's shorter than `length`.\r\n * Padding characters are truncated if they can't be evenly divided by `length`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to pad.\r\n * @param {number} [length=0] The padding length.\r\n * @param {string} [chars=' '] The string used as padding.\r\n * @returns {string} Returns the padded string.\r\n * @example\r\n *\r\n * _.pad('abc', 8);\r\n * // => ' abc '\r\n *\r\n * _.pad('abc', 8, '_-');\r\n * // => '_-abc_-_'\r\n *\r\n * _.pad('abc', 3);\r\n * // => 'abc'\r\n */\r\n function pad(string, length, chars) {\r\n string = toString(string);\r\n length = toInteger(length);\r\n\r\n var strLength = length ? stringSize(string) : 0;\r\n if (!length || strLength >= length) {\r\n return string;\r\n }\r\n var mid = (length - strLength) / 2;\r\n return (\r\n createPadding(nativeFloor(mid), chars) +\r\n string +\r\n createPadding(nativeCeil(mid), chars)\r\n );\r\n }\r\n\r\n /**\r\n * Pads `string` on the right side if it's shorter than `length`. Padding\r\n * characters are truncated if they exceed `length`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to pad.\r\n * @param {number} [length=0] The padding length.\r\n * @param {string} [chars=' '] The string used as padding.\r\n * @returns {string} Returns the padded string.\r\n * @example\r\n *\r\n * _.padEnd('abc', 6);\r\n * // => 'abc '\r\n *\r\n * _.padEnd('abc', 6, '_-');\r\n * // => 'abc_-_'\r\n *\r\n * _.padEnd('abc', 3);\r\n * // => 'abc'\r\n */\r\n function padEnd(string, length, chars) {\r\n string = toString(string);\r\n length = toInteger(length);\r\n\r\n var strLength = length ? stringSize(string) : 0;\r\n return (length && strLength < length)\r\n ? (string + createPadding(length - strLength, chars))\r\n : string;\r\n }\r\n\r\n /**\r\n * Pads `string` on the left side if it's shorter than `length`. Padding\r\n * characters are truncated if they exceed `length`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to pad.\r\n * @param {number} [length=0] The padding length.\r\n * @param {string} [chars=' '] The string used as padding.\r\n * @returns {string} Returns the padded string.\r\n * @example\r\n *\r\n * _.padStart('abc', 6);\r\n * // => ' abc'\r\n *\r\n * _.padStart('abc', 6, '_-');\r\n * // => '_-_abc'\r\n *\r\n * _.padStart('abc', 3);\r\n * // => 'abc'\r\n */\r\n function padStart(string, length, chars) {\r\n string = toString(string);\r\n length = toInteger(length);\r\n\r\n var strLength = length ? stringSize(string) : 0;\r\n return (length && strLength < length)\r\n ? (createPadding(length - strLength, chars) + string)\r\n : string;\r\n }\r\n\r\n /**\r\n * Converts `string` to an integer of the specified radix. If `radix` is\r\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\r\n * hexadecimal, in which case a `radix` of `16` is used.\r\n *\r\n * **Note:** This method aligns with the\r\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 1.1.0\r\n * @category String\r\n * @param {string} string The string to convert.\r\n * @param {number} [radix=10] The radix to interpret `value` by.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\r\n * @returns {number} Returns the converted integer.\r\n * @example\r\n *\r\n * _.parseInt('08');\r\n * // => 8\r\n *\r\n * _.map(['6', '08', '10'], _.parseInt);\r\n * // => [6, 8, 10]\r\n */\r\n function parseInt(string, radix, guard) {\r\n if (guard || radix == null) {\r\n radix = 0;\r\n } else if (radix) {\r\n radix = +radix;\r\n }\r\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\r\n }\r\n\r\n /**\r\n * Repeats the given string `n` times.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to repeat.\r\n * @param {number} [n=1] The number of times to repeat the string.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\r\n * @returns {string} Returns the repeated string.\r\n * @example\r\n *\r\n * _.repeat('*', 3);\r\n * // => '***'\r\n *\r\n * _.repeat('abc', 2);\r\n * // => 'abcabc'\r\n *\r\n * _.repeat('abc', 0);\r\n * // => ''\r\n */\r\n function repeat(string, n, guard) {\r\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\r\n n = 1;\r\n } else {\r\n n = toInteger(n);\r\n }\r\n return baseRepeat(toString(string), n);\r\n }\r\n\r\n /**\r\n * Replaces matches for `pattern` in `string` with `replacement`.\r\n *\r\n * **Note:** This method is based on\r\n * [`String#replace`](https://mdn.io/String/replace).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to modify.\r\n * @param {RegExp|string} pattern The pattern to replace.\r\n * @param {Function|string} replacement The match replacement.\r\n * @returns {string} Returns the modified string.\r\n * @example\r\n *\r\n * _.replace('Hi Fred', 'Fred', 'Barney');\r\n * // => 'Hi Barney'\r\n */\r\n function replace() {\r\n var args = arguments,\r\n string = toString(args[0]);\r\n\r\n return args.length < 3 ? string : string.replace(args[1], args[2]);\r\n }\r\n\r\n /**\r\n * Converts `string` to\r\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to convert.\r\n * @returns {string} Returns the snake cased string.\r\n * @example\r\n *\r\n * _.snakeCase('Foo Bar');\r\n * // => 'foo_bar'\r\n *\r\n * _.snakeCase('fooBar');\r\n * // => 'foo_bar'\r\n *\r\n * _.snakeCase('--FOO-BAR--');\r\n * // => 'foo_bar'\r\n */\r\n var snakeCase = createCompounder(function(result, word, index) {\r\n return result + (index ? '_' : '') + word.toLowerCase();\r\n });\r\n\r\n /**\r\n * Splits `string` by `separator`.\r\n *\r\n * **Note:** This method is based on\r\n * [`String#split`](https://mdn.io/String/split).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 4.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to split.\r\n * @param {RegExp|string} separator The separator pattern to split by.\r\n * @param {number} [limit] The length to truncate results to.\r\n * @returns {Array} Returns the string segments.\r\n * @example\r\n *\r\n * _.split('a-b-c', '-', 2);\r\n * // => ['a', 'b']\r\n */\r\n function split(string, separator, limit) {\r\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\r\n separator = limit = undefined;\r\n }\r\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\r\n if (!limit) {\r\n return [];\r\n }\r\n string = toString(string);\r\n if (string && (\r\n typeof separator == 'string' ||\r\n (separator != null && !isRegExp(separator))\r\n )) {\r\n separator = baseToString(separator);\r\n if (!separator && hasUnicode(string)) {\r\n return castSlice(stringToArray(string), 0, limit);\r\n }\r\n }\r\n return string.split(separator, limit);\r\n }\r\n\r\n /**\r\n * Converts `string` to\r\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.1.0\r\n * @category String\r\n * @param {string} [string=''] The string to convert.\r\n * @returns {string} Returns the start cased string.\r\n * @example\r\n *\r\n * _.startCase('--foo-bar--');\r\n * // => 'Foo Bar'\r\n *\r\n * _.startCase('fooBar');\r\n * // => 'Foo Bar'\r\n *\r\n * _.startCase('__FOO_BAR__');\r\n * // => 'FOO BAR'\r\n */\r\n var startCase = createCompounder(function(result, word, index) {\r\n return result + (index ? ' ' : '') + upperFirst(word);\r\n });\r\n\r\n /**\r\n * Checks if `string` starts with the given target string.\r\n *\r\n * @static\r\n * @memberOf _\r\n * @since 3.0.0\r\n * @category String\r\n * @param {string} [string=''] The string to inspect.\r\n * @param {string} [target] The string to search for.\r\n * @param {number} [position=0] The position to search from.\r\n * @returns {boolean} Returns `true` if `string` starts with `target`,\r\n * else `false`.\r\n * @example\r\n *\r\n * _.startsWith('abc', 'a');\r\n * // => true\r\n *\r\n * _.startsWith('abc', 'b');\r\n * // => false\r\n *\r\n * _.startsWith('abc', 'b', 1);\r\n * // => true\r\n */\r\n function startsWith(string, target, position) {\r\n string = toString(string);\r\n position = position == null\r\n ? 0\r\n : baseClamp(toInteger(position), 0, string.length);\r\n\r\n target = baseToString(target);\r\n return string.slice(position, position + target.length) == target;\r\n }\r\n\r\n /**\r\n * Creates a compiled template function that can interpolate data properties\r\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\r\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\r\n * properties may be accessed as free variables in the template. If a setting\r\n * object is given, it takes precedence over `_.templateSettings` values.\r\n *\r\n * **Note:** In the development build `_.template` utilizes\r\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\r\n * for easier debugging.\r\n *\r\n * For more information on precompiling templates see\r\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\r\n *\r\n * For more information on Chrome extension sandboxes see\r\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\r\n *\r\n * @static\r\n * @since 0.1.0\r\n * @memberOf _\r\n * @category String\r\n * @param {string} [string=''] The template string.\r\n * @param {Object} [options={}] The options object.\r\n * @param {RegExp} [options.escape=_.templateSettings.escape]\r\n * The HTML \"escape\" delimiter.\r\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\r\n * The \"evaluate\" delimiter.\r\n * @param {Object} [options.imports=_.templateSettings.imports]\r\n * An object to import into the template as free variables.\r\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\r\n * The \"interpolate\" delimiter.\r\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\r\n * The sourceURL of the compiled template.\r\n * @param {string} [options.variable='obj']\r\n * The data object variable name.\r\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\r\n * @returns {Function} Returns the compiled template function.\r\n * @example\r\n *\r\n * // Use the \"interpolate\" delimiter to create a compiled template.\r\n * var compiled = _.template('hello <%= user %>!');\r\n * compiled({ 'user': 'fred' });\r\n * // => 'hello fred!'\r\n *\r\n * // Use the HTML \"escape\" delimiter to escape data property values.\r\n * var compiled = _.template('<%- value %>');\r\n * compiled({ 'value': '
+/*每个页面公共css */
+@import "./common/css/style.scss";
+
\ No newline at end of file
diff --git a/service/api/login.js b/service/api/login.js
index 69da29c8..1c14d63c 100644
--- a/service/api/login.js
+++ b/service/api/login.js
@@ -14,14 +14,27 @@ const login = {
method: 'GET',
})
},
-
+
/**
- * 用户密码登录接口
+ * 客服登录接口
* @param {Object} param
*/
userLoginByPassword(param) {
return util.request({
- url: '/user/login',
+ url: '/user/customerService/login',
+ query: param.query,
+ load: true,
+ })
+ },
+
+
+ /**
+ * 客服退出登录
+ * @param {Object} param
+ */
+ userLoginOut(param) {
+ return util.request({
+ url: '/user/customerService/logout',
data: param.data,
load: true,
})
diff --git a/service/common/js/config.js b/service/common/js/config.js
index 912f402f..f335ac02 100644
--- a/service/common/js/config.js
+++ b/service/common/js/config.js
@@ -5,10 +5,7 @@ const config = {
host: 'http://localhost:5173',
// #endif
// #ifndef H5
- host: 'http://91f.xyz:8080',
- // host: 'http://192.168.0.110:8080',
- // host: 'http://192.168.0.105:8080',
- // host: 'http://192.168.0.114:8080',
+ host: 'https://1a4b9ed1.r24.cpolar.top/',
// #endif
// 支付方式配置
payType: {
diff --git a/service/common/js/util.js b/service/common/js/util.js
index 83ae98b8..490c1970 100644
--- a/service/common/js/util.js
+++ b/service/common/js/util.js
@@ -5,8 +5,6 @@ import config from '@/common/js/config.js'
// 接口
import api from '@/api/index.js'
-const msgType = {}
-
// 工具库
const util = {
// 配置参数
@@ -68,14 +66,14 @@ const util = {
showCancel: obj.showCancel,
cancelText: obj.cancelText,
success: res => {
- obj.success ? obj.success(res) : () => {}
+ obj.success ? obj.success(res) : () => { }
resolve(res)
},
fail: err => {
- obj.fail ? obj.fail(err) : () => {}
+ obj.fail ? obj.fail(err) : () => { }
reject(err)
},
- complete: res => {}
+ complete: res => { }
})
})
},
@@ -135,6 +133,9 @@ const util = {
//
reject(res)
},
+ complete(rs) {
+ console.log('upload complete', rs)
+ }
})
})
},
@@ -191,11 +192,11 @@ const util = {
if (token) params.header["Authorization"] = `Bearer ${token}`
- // console.log('request url', url)
- // console.log('request data', params.data)
- // console.log('request header', params.header)
- // console.log('params.responseType', url, params.responseType)
- // 发起网络请求
+ console.log('request url', url)
+ console.log('request data', params.data)
+ console.log('request header', params.header)
+ console.log('params.responseType', url, params.responseType)
+ // 发起网络请求
uni.request({
// 请求地址
url: url,
@@ -212,7 +213,7 @@ const util = {
responseType: params.responseType || 'text',
// 请求成功返回
success: res => {
- console.log('request success', url, res, params.data ? params.data : '')
+ // console.log('request success', url, res, params.data ? params.data : '')
// 关闭加载效果
if (params.load) {
uni.hideLoading()
@@ -920,7 +921,7 @@ const util = {
const file_suffix = util.config[{
'file': 'file_suffix',
'audio': 'audio_suffix',
- } [type]]
+ }[type]]
let result = ''
if (url) result = file_suffix.find(item => item.id === url.split('.').pop().toLowerCase())
return result
@@ -1046,7 +1047,7 @@ const util = {
obj.fail ? obj.fail('no data') : ''
}
break
- // app支付
+ // app支付
case "app":
uni.requestPayment({
provider: "wxpay",
@@ -1068,7 +1069,7 @@ const util = {
break
}
break
- // 支付宝支付
+ // 支付宝支付
case "2":
switch (obj.method) {
// app支付
@@ -1093,7 +1094,7 @@ const util = {
break
}
break
- // 钱包支付
+ // 钱包支付
case "4":
obj.success ? obj.success(rs) : ''
result_goto('success')
@@ -1165,7 +1166,7 @@ const util = {
util.alert("您拒绝了授权");
// 失败
- obj.fail ? obj.fail(res) : (res) => {};
+ obj.fail ? obj.fail(res) : (res) => { };
},
complete() {
// 结束
@@ -1365,11 +1366,11 @@ const util = {
return new Promise((resolve, reject) => {
// 是否在微信小程序限制范围内
if (!['scope.userInfo', 'scope.userLocation', 'scope.userLocationBackground',
- 'scope.address',
- 'scope.record', 'scope.writePhotosAlbum', 'scope.camera',
- 'scope.invoice',
- 'scope.invoiceTitle', 'scope.werun'
- ].includes(obj.scope)) {
+ 'scope.address',
+ 'scope.record', 'scope.writePhotosAlbum', 'scope.camera',
+ 'scope.invoice',
+ 'scope.invoiceTitle', 'scope.werun'
+ ].includes(obj.scope)) {
resolve({
msg: '不在限制范围内',
})
@@ -1425,7 +1426,7 @@ const util = {
uni.$emit('login')
setTimeout(() => {
- uni.switchTab({
+ uni.reLaunch({
url: '/pages/index/index'
})
}, 500)
@@ -1729,7 +1730,7 @@ const util = {
}
});
},
- showToastAndRedirect(title, icon = 'none', fun = () => {}) {
+ showToastAndRedirect(title, icon = 'none', fun = () => { }) {
uni.showToast({
title,
icon,
diff --git a/service/main.js b/service/main.js
index 565f1982..913682b0 100644
--- a/service/main.js
+++ b/service/main.js
@@ -3,12 +3,14 @@ import App from './App'
import store from '@/store';
//
import Vuex from 'vuex'
+// 通用方法
+import util from '@/common/js/util';
import TIM from '@tencentcloud/chat';
-const chat = TencentCloudChat.create({
- SDKAppID: 0,
-})
+// const chat = TencentCloudChat.create({
+// SDKAppID: 0,
+// })
// 集成聊天
uni.$TIM = TIM
diff --git a/service/pages.json b/service/pages.json
index aa99bccf..99445172 100644
--- a/service/pages.json
+++ b/service/pages.json
@@ -24,7 +24,7 @@
"style": {
"navigationBarTitleText": ""
}
- },
+ }
],
"globalStyle": {
diff --git a/service/pages/index/index.vue b/service/pages/index/index.vue
index 892e9d06..9ed0c01c 100644
--- a/service/pages/index/index.vue
+++ b/service/pages/index/index.vue
@@ -33,6 +33,12 @@
}
])
+
+ // // 用户信息
+ // const userinfo = computed(() => {
+ // return store.state.userinfo
+ // })
+
/**
* 去聊天
* @param {Number} item 聊天对象
@@ -74,8 +80,7 @@
商家订单管理
-
-
+
diff --git a/service/pages/login/login.vue b/service/pages/login/login.vue
index e2c006b2..be51282e 100644
--- a/service/pages/login/login.vue
+++ b/service/pages/login/login.vue
@@ -1,88 +1,77 @@
@@ -96,7 +85,7 @@
九亿客服登录
-
+
@@ -116,7 +105,7 @@
\ No newline at end of file
diff --git a/service/unpackage/dist/cache/.vite/deps/@tencentcloud_chat.js b/service/unpackage/dist/cache/.vite/deps/@tencentcloud_chat.js
index a38fc9fd..2ec3ddcc 100644
--- a/service/unpackage/dist/cache/.vite/deps/@tencentcloud_chat.js
+++ b/service/unpackage/dist/cache/.vite/deps/@tencentcloud_chat.js
@@ -2,9 +2,9 @@ import {
__commonJS
} from "./chunk-TDUMLE5V.js";
-// ../../../../document/九亿商城/service/node_modules/@tencentcloud/chat/index.js
+// ../../../../document/九亿商城/jy/service/node_modules/@tencentcloud/chat/index.js
var require_chat = __commonJS({
- "../../../../document/九亿商城/service/node_modules/@tencentcloud/chat/index.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/@tencentcloud/chat/index.js"(exports, module) {
!function(e, t) {
"object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = "undefined" != typeof globalThis ? globalThis : e || self).TencentCloudChat = t();
}(exports, function() {
diff --git a/service/unpackage/dist/cache/.vite/deps/@tencentcloud_chat_index__es__js.js b/service/unpackage/dist/cache/.vite/deps/@tencentcloud_chat_index__es__js.js
deleted file mode 100644
index d641eaa7..00000000
--- a/service/unpackage/dist/cache/.vite/deps/@tencentcloud_chat_index__es__js.js
+++ /dev/null
@@ -1,10035 +0,0 @@
-import "./chunk-TDUMLE5V.js";
-
-// ../../../../document/九亿商城/service/node_modules/@tencentcloud/chat/index.es.js
-var e = { SDK_READY: "sdkStateReady", SDK_NOT_READY: "sdkStateNotReady", SDK_DESTROY: "sdkDestroy", MESSAGE_RECEIVED: "onMessageReceived", ROOM_CUSTOM_DATA_RECEIVED: "onRoomCustomDataReceived", MESSAGE_MODIFIED: "onMessageModified", MESSAGE_REVOKED: "onMessageRevoked", MESSAGE_READ_BY_PEER: "onMessageReadByPeer", MESSAGE_READ_RECEIPT_RECEIVED: "onMessageReadReceiptReceived", MESSAGE_EXTENSIONS_UPDATED: "onMessageExtensionsUpdated", MESSAGE_EXTENSIONS_DELETED: "onMessageExtensionsDeleted", MESSAGE_REACTIONS_UPDATED: "onMessageReactionsUpdated", CONVERSATION_LIST_UPDATED: "onConversationListUpdated", TOTAL_UNREAD_MESSAGE_COUNT_UPDATED: "onTotalUnreadMessageCountUpdated", CONVERSATION_GROUP_LIST_UPDATED: "onConversationGroupListUpdated", CONVERSATION_IN_GROUP_UPDATED: "onConversationInGroupUpdated", GROUP_LIST_UPDATED: "onGroupListUpdated", GROUP_ATTRIBUTES_UPDATED: "groupAttributesUpdated", GROUP_COUNTER_UPDATED: "onGroupCounterUpdated", TOPIC_CREATED: "onTopicCreated", TOPIC_DELETED: "onTopicDeleted", TOPIC_UPDATED: "onTopicUpdated", PROFILE_UPDATED: "onProfileUpdated", USER_STATUS_UPDATED: "onUserStatusUpdated", BLACKLIST_UPDATED: "blacklistUpdated", FRIEND_LIST_UPDATED: "onFriendListUpdated", FRIEND_GROUP_LIST_UPDATED: "onFriendGroupListUpdated", FRIEND_APPLICATION_LIST_UPDATED: "onFriendApplicationListUpdated", MY_FOLLOWERS_LIST_UPDATED: "onMyFollowersListUpdated", MY_FOLLOWING_LIST_UPDATED: "onMyFollowingListUpdated", MUTUAL_FOLLOWERS_LIST_UPDATED: "onMutualFollowersListUpdated", KICKED_OUT: "kickedOut", ERROR: "error", NET_STATE_CHANGE: "netStateChange", ALL_RECEIVE_MESSAGE_OPT_UPDATED: "onAllReceiveMessageOptUpdated" };
-var t = { MSG_TEXT: "TIMTextElem", MSG_IMAGE: "TIMImageElem", MSG_SOUND: "TIMSoundElem", MSG_AUDIO: "TIMSoundElem", MSG_FILE: "TIMFileElem", MSG_FACE: "TIMFaceElem", MSG_VIDEO: "TIMVideoFileElem", MSG_GEO: "TIMLocationElem", MSG_LOCATION: "TIMLocationElem", MSG_GRP_TIP: "TIMGroupTipElem", MSG_GRP_SYS_NOTICE: "TIMGroupSystemNoticeElem", MSG_CUSTOM: "TIMCustomElem", MSG_MERGER: "TIMRelayElem", MSG_PRIORITY_HIGH: "High", MSG_PRIORITY_NORMAL: "Normal", MSG_PRIORITY_LOW: "Low", MSG_PRIORITY_LOWEST: "Lowest", CONV_C2C: "C2C", CONV_GROUP: "GROUP", CONV_TOPIC: "TOPIC", CONV_SYSTEM: "@TIM#SYSTEM", CONV_AT_ME: 1, CONV_AT_ALL: 2, CONV_AT_ALL_AT_ME: 3, CONV_MARK_TYPE_STAR: 1, CONV_MARK_TYPE_UNREAD: 2, CONV_MARK_TYPE_FOLD: 4, CONV_MARK_TYPE_HIDE: 8, GRP_PRIVATE: "Private", GRP_WORK: "Private", GRP_PUBLIC: "Public", GRP_CHATROOM: "ChatRoom", GRP_MEETING: "ChatRoom", GRP_AVCHATROOM: "AVChatRoom", GRP_COMMUNITY: "Community", GRP_ROOM: "Room", GRP_LIVE: "Live", GRP_MBR_ROLE_OWNER: "Owner", GRP_MBR_ROLE_ADMIN: "Admin", GRP_MBR_ROLE_MEMBER: "Member", GRP_MBR_ROLE_CUSTOM: "Custom", GRP_TIP_MBR_JOIN: 1, GRP_TIP_MBR_QUIT: 2, GRP_TIP_MBR_KICKED_OUT: 3, GRP_TIP_MBR_SET_ADMIN: 4, GRP_TIP_MBR_CANCELED_ADMIN: 5, GRP_TIP_GRP_PROFILE_UPDATED: 6, GRP_TIP_MBR_PROFILE_UPDATED: 7, GRP_TIP_BAN_AVCHATROOM_MEMBER: 10, GRP_TIP_UNBAN_AVCHATROOM_MEMBER: 11, MSG_REMIND_ACPT_AND_NOTE: "AcceptAndNotify", MSG_REMIND_ACPT_NOT_NOTE: "AcceptNotNotify", MSG_REMIND_DISCARD: "Discard", RECEIVE_WITH_OFFLINE_PUSH_EXCEPT_AT: "AcceptNotNotifyExceptAt", NOT_RECEIVE_OFFLINE_PUSH_EXCEPT_AT: "AcceptNotNotifyExceptAt", NOT_RECEIVE_MSG_EXCEPT_AT: "NotReceiveMsgExceptAt", GENDER_UNKNOWN: "Gender_Type_Unknown", GENDER_FEMALE: "Gender_Type_Female", GENDER_MALE: "Gender_Type_Male", KICKED_OUT_MULT_ACCOUNT: "multipleAccount", KICKED_OUT_MULT_DEVICE: "multipleDevice", KICKED_OUT_USERSIG_EXPIRED: "userSigExpired", KICKED_OUT_REST_API: "REST_API_Kick", ALLOW_TYPE_ALLOW_ANY: "AllowType_Type_AllowAny", ALLOW_TYPE_NEED_CONFIRM: "AllowType_Type_NeedConfirm", ALLOW_TYPE_DENY_ANY: "AllowType_Type_DenyAny", FORBID_TYPE_NONE: "AdminForbid_Type_None", FORBID_TYPE_SEND_OUT: "AdminForbid_Type_SendOut", JOIN_OPTIONS_FREE_ACCESS: "FreeAccess", JOIN_OPTIONS_NEED_PERMISSION: "NeedPermission", JOIN_OPTIONS_DISABLE_APPLY: "DisableApply", JOIN_STATUS_SUCCESS: "JoinedSuccess", JOIN_STATUS_ALREADY_IN_GROUP: "AlreadyInGroup", JOIN_STATUS_WAIT_APPROVAL: "WaitAdminApproval", INVITE_OPTIONS_DISABLE_INVITE: "DisableInvite", INVITE_OPTIONS_NEED_PERMISSION: "NeedPermission", INVITE_OPTIONS_FREE_ACCESS: "FreeAccess", GRP_PROFILE_OWNER_ID: "ownerID", GRP_PROFILE_CREATE_TIME: "createTime", GRP_PROFILE_LAST_INFO_TIME: "lastInfoTime", GRP_PROFILE_MEMBER_NUM: "memberNum", GRP_PROFILE_MAX_MEMBER_NUM: "maxMemberNum", GRP_PROFILE_JOIN_OPTION: "joinOption", GRP_PROFILE_INVITE_OPTION: "inviteOption", GRP_PROFILE_INTRODUCTION: "introduction", GRP_PROFILE_NOTIFICATION: "notification", GRP_PROFILE_MUTE_ALL_MBRS: "muteAllMembers", SNS_ADD_TYPE_SINGLE: "Add_Type_Single", SNS_ADD_TYPE_BOTH: "Add_Type_Both", SNS_DELETE_TYPE_SINGLE: "Delete_Type_Single", SNS_DELETE_TYPE_BOTH: "Delete_Type_Both", SNS_APPLICATION_TYPE_BOTH: "Pendency_Type_Both", SNS_APPLICATION_SENT_TO_ME: "Pendency_Type_ComeIn", SNS_APPLICATION_SENT_BY_ME: "Pendency_Type_SendOut", SNS_APPLICATION_AGREE: "Response_Action_Agree", SNS_APPLICATION_AGREE_AND_ADD: "Response_Action_AgreeAndAdd", SNS_CHECK_TYPE_BOTH: "CheckResult_Type_Both", SNS_CHECK_TYPE_SINGLE: "CheckResult_Type_Single", SNS_TYPE_NO_RELATION: "CheckResult_Type_NoRelation", SNS_TYPE_A_WITH_B: "CheckResult_Type_AWithB", SNS_TYPE_B_WITH_A: "CheckResult_Type_BWithA", SNS_TYPE_BOTH_WAY: "CheckResult_Type_BothWay", NET_STATE_CONNECTED: "connected", NET_STATE_CONNECTING: "connecting", NET_STATE_DISCONNECTED: "disconnected", MSG_AT_ALL: "__kImSDK_MesssageAtALL__", READ_ALL_C2C_MSG: "readAllC2CMessage", READ_ALL_GROUP_MSG: "readAllGroupMessage", READ_ALL_MSG: "readAllMessage", USER_STATUS_UNKNOWN: 0, USER_STATUS_ONLINE: 1, USER_STATUS_OFFLINE: 2, USER_STATUS_UNLOGINED: 3, IOS_OFFLINE_PUSH_NO_SOUND: "push.no_sound", IOS_OFFLINE_PUSH_DEFAULT_SOUND: "default" };
-var s = class {
- constructor() {
- this.cache = [], this.options = null;
- }
- use(e2) {
- if ("function" != typeof e2)
- throw "middleware must be a function";
- return this.cache.push(e2), this;
- }
- next(e2) {
- if (this.middlewares && 0 < this.middlewares.length)
- return this.middlewares.shift().call(this, this.options, this.next.bind(this));
- }
- run(e2) {
- return this.middlewares = this.cache.map(function(e3) {
- return e3;
- }), this.options = e2, this.next();
- }
-};
-var i = class {
- constructor(e2 = 0, t2 = 0) {
- this.high = e2, this.low = t2;
- }
- equal(e2) {
- return null !== e2 && this.low === e2.low && this.high === e2.high;
- }
- toString() {
- var e2 = Number(this.high).toString(16);
- let t2 = Number(this.low).toString(16);
- if (t2.length < 8) {
- let e3 = 8 - t2.length;
- for (; e3; )
- t2 = "0" + t2, e3--;
- }
- return e2 + t2;
- }
-};
-var n = { TEST: { CHINA: { DEFAULT: "wss://wss-dev.tim.qq.com" }, OVERSEA: { DEFAULT: "wss://wss-dev.tim.qq.com" }, SINGAPORE: { DEFAULT: "wss://wsssgp-dev.im.qcloud.com" }, KOREA: { DEFAULT: "wss://wsskr-dev.im.qcloud.com" }, GERMANY: { DEFAULT: "wss://wssger-dev.im.qcloud.com" }, IND: { DEFAULT: "wss://wssind-dev.im.qcloud.com" }, JPN: { DEFAULT: "wss://wssjpn-dev.im.qcloud.com" }, USA: { DEFAULT: "wss://wssusa-dev.im.qcloud.com" }, INDONESIA: { DEFAULT: "wss://wssidn-dev.im.qcloud.com" } }, PRODUCTION: { CHINA: { DEFAULT0: "wss://*w4c.my-imcloud.com", DEFAULT: "wss://wss.im.qcloud.com", IPV6: "wss://wssv6.im.qcloud.com", BACKUP: "wss://wss.tim.qq.com", STAT: "https://events.im.qcloud.com", ANYCAST: "wss://162.14.13.203" }, OVERSEA: { DEFAULT0: "wss://*w4c.my-imcloud.com", DEFAULT: "wss://wss.im.qcloud.com", BACKUP: "wss://wss.my-imcloud.com", STAT: "https://api.my-imcloud.com" }, SINGAPORE: { DEFAULT0: "wss://*w4s.my-imcloud.com", DEFAULT: "wss://wsssgp.im.qcloud.com", IPV6: "wss://wsssgpv6.im.qcloud.com", BACKUP: "wss://wsssgp.my-imcloud.com", STAT: "https://apisgp.my-imcloud.com", ANYCAST: "wss://162.14.19.159" }, KOREA: { DEFAULT0: "wss://*w4k.my-imcloud.com", DEFAULT: "wss://wsskr.im.qcloud.com", IPV6: "wss://wsskrv6.im.qcloud.com", BACKUP: "wss://wsskr.my-imcloud.com", STAT: "https://apikr.my-imcloud.com", ANYCAST: "wss://162.14.13.104" }, GERMANY: { DEFAULT0: "wss://*w4g.my-imcloud.com", DEFAULT: "wss://wssger.im.qcloud.com", IPV6: "wss://wssgerv6.im.qcloud.com", BACKUP: "wss://wssger.my-imcloud.com", STAT: "https://apiger.my-imcloud.com", ANYCAST: "wss://162.14.3.17" }, IND: { DEFAULT0: "wss://*w4i.my-imcloud.com", DEFAULT: "wss://wssind.my-imcloud.com", IPV6: "wss://wssindv6.im.qcloud.com", BACKUP: "wss://wssind.im.qcloud.com", STAT: "https://apiind.my-imcloud.com", ANYCAST: "wss://162.14.19.46" }, JPN: { DEFAULT0: "wss://*w4j.my-imcloud.com", DEFAULT: "wss://wssjpn.im.qcloud.com", IPV6: "wss://wssjpnv6.im.qcloud.com", BACKUP: "wss://wssjpn.my-imcloud.com", STAT: "https://apijpn.my-imcloud.com" }, USA: { DEFAULT0: "wss://*w4u.my-imcloud.com", DEFAULT: "wss://wssusa.im.qcloud.com", IPV6: "wss://wssusav6.im.qcloud.com", BACKUP: "wss://wssusa.my-imcloud.com", STAT: "https://apiusa.my-imcloud.com", ANYCAST: "wss://162.14.10.42" }, INDONESIA: { DEFAULT0: "wss://*w4y.my-imcloud.com", DEFAULT: "wss://wssidn.im.qcloud.com", IPV6: "wss://wssidnv6.im.qcloud.com", BACKUP: "wss://wssidn.my-imcloud.com", STAT: "https://apiidn.my-imcloud.com", ANYCAST: "wss://43.129.34.169" } } };
-var o = { ANDROID: 2, IOS: 3, MAC: 4, WEB: 7, WX_MP: 8, QQ_MP: 9, TT_MP: 10, BAIDU_MP: 11, ALI_MP: 12, IPAD: 13, UNI_NATIVE_APP: 15, DONUT_NATIVE_APP: 19, NS_NATIVE_APP: 20, RN_NATIVE_APP: 21 };
-var r = "1.7.3";
-var a = 537048168;
-var c = "CHINA";
-var l = "OVERSEA";
-var u = "SINGAPORE";
-var d = "KOREA";
-var _ = "GERMANY";
-var h = "IND";
-var p = "JPN";
-var g = "USA";
-var m = "INDONESIA";
-var f = { HOST: { CURRENT: { DEFAULT: "wss://wss.im.qcloud.com", STAT: "https://events.im.qcloud.com" }, setCurrent(e2 = c) {
- this.CURRENT = n.PRODUCTION[e2];
-} }, NAME: { OPEN_IM: "openim", OPEN_IM_MSG_EXT: "openim_msg_ext_http_svc", GRP: "group_open_http_svc", GRP_AV: "group_open_avchatroom_http_svc", GRP_COMMUNITY: "million_group_open_http_svc", GRP_ATTR: "group_open_attr_http_svc", FD: "sns", PROFILE: "profile", RECENT_CONTACT: "recentcontact", PIC: "openpic", BIG_GRP_NO_AUTH: "group_open_http_noauth_svc", BIG_GRP_POLLING: "group_open_long_polling_http_svc", BIG_GRP_POLLING_NO_AUTH: "group_open_long_polling_http_noauth_svc", IM_OPEN_STAT: "imopenstat", WEB_IM: "webim", IM_COS_SIGN: "im_cos_sign_svr", CUSTOM_UPLOAD: "im_cos_msg", HEARTBEAT: "heartbeat", IM_OPEN_PUSH: "im_open_push", IM_OPEN_STATUS: "im_open_status", IM_LONG_MSG: "im_long_msg", IM_CONFIG_MANAGER: "im_sdk_config_mgr", STAT_SERVICE: "StatSvc", OVERLOAD_PUSH: "OverLoadPush", IM_MSG_AUDIT_MGR: "im_msg_audit_mgr", TUIROOM_SVR: "tui_room_svr", IM_OPEN_TRANSLATE: "im_open_translate", IM_OPEN_SPEECH: "im_open_speech", MSG_SEARCH: "message_search", GRP_SEARCH: "group_search", GRP_MEMBER_SEARCH: "group_member_search", USER_SEARCH: "user_search", FOLLOW: "follow", OFFLINE_PUSH_REPORT: "offline_push_report", IM_MSG_LOGIC: "im_msg_db_logic" } };
-var M = { SEARCH_GRP_SNS: new i(0, Math.pow(2, 1)).toString(), AV_HISTORY_MSG: new i(0, Math.pow(2, 2)).toString(), GRP_COMMUNITY: new i(0, Math.pow(2, 3)).toString(), MSG_TO_SPECIFIED_GRP_MBR: new i(0, Math.pow(2, 4)).toString(), AV_MBR_LIST: new i(0, Math.pow(2, 6)).toString(), USER_STATUS: new i(0, Math.pow(2, 7)).toString(), CONV_MARK: new i(0, Math.pow(2, 9)).toString(), CONV_GROUP: new i(0, Math.pow(2, 10)).toString(), AV_BAN_MBR: new i(0, Math.pow(2, 11)).toString(), MSG_EXT: new i(0, Math.pow(2, 13)).toString(), GRP_COUNTER: new i(0, Math.pow(2, 15)).toString(), PLUGIN_TRANSLATE: new i(Math.pow(2, 6)).toString(), PLUGIN_VOICE_TO_TEXT: new i(Math.pow(2, 7)).toString(), PLUGIN_CS: new i(Math.pow(2, 8)).toString(), PLUGIN_PUSH: new i(Math.pow(2, 9)).toString(), PLUGIN_BOT: new i(Math.pow(2, 10)).toString(), MSG_REACTION: new i(Math.pow(2, 16)).toString(), FOLLOW: new i(Math.pow(2, 20)).toString() };
-var I = "c2c_text_message";
-var C = "c2c_custom_message";
-var T = "group_text_message";
-var y = "group_custom_message";
-var v = "user_profile";
-var E = "group_profile";
-var S = (f.HOST.setCurrent(c), "undefined" != typeof wx && "function" == typeof wx.getSystemInfoSync && Boolean(wx.getSystemInfoSync().fontSizeSetting));
-var D = S && "function" == typeof wx.createGamePortal;
-var R = "undefined" != typeof qq && "function" == typeof qq.getSystemInfoSync && Boolean(qq.getSystemInfoSync().fontSizeSetting);
-var L = "undefined" != typeof tt && "function" == typeof tt.getSystemInfoSync && Boolean(tt.getSystemInfoSync().fontSizeSetting);
-var A = "undefined" != typeof swan && "function" == typeof swan.getSystemInfoSync && Boolean(swan.getSystemInfoSync().fontSizeSetting);
-var O = "undefined" != typeof my && "function" == typeof my.getSystemInfoSync && Boolean(my.getSystemInfoSync().fontSizeSetting);
-var N = "undefined" != typeof jd && "function" == typeof jd.getSystemInfoSync;
-var P = "undefined" != typeof uni && "undefined" == typeof window && "function" == typeof uni.requireNativePlugin;
-var U = S && "object" == typeof wx.miniapp;
-var G = "undefined" != typeof uni;
-var k = S || R || L || A || O || P || N;
-var w = "undefined" == typeof window && !k && "undefined" != typeof global && void 0 !== global.NativeScriptGlobals;
-var b = "undefined" != typeof global && (void 0 !== global.nativeModuleProxy || void 0 !== global.ReactNative);
-var F = "undefined" != typeof uni ? !k : "undefined" != typeof window && !k && !b;
-var $ = R ? qq : L ? tt : A ? swan : O ? my : S ? wx : P ? uni : N ? jd : {};
-var q = F && window && window.navigator && window.navigator.userAgent || "";
-var x = /(micromessenger|webbrowser)/i.test(q);
-var V = function() {
- let e2 = "WEB";
- return x ? e2 = "WEB" : R ? e2 = "QQ_MP" : L ? e2 = "TT_MP" : A ? e2 = "BAIDU_MP" : O ? e2 = "ALI_MP" : S ? e2 = U ? "DONUT_NATIVE_APP" : "WX_MP" : P ? e2 = "UNI_NATIVE_APP" : w ? e2 = "NS_NATIVE_APP" : b && (e2 = "RN_NATIVE_APP"), o[e2];
-}();
-var B = /iPad/i.test(q);
-var K = /iPhone/i.test(q) && !B;
-var H = /iPod/i.test(q);
-var W = K || B || H;
-var Y = function() {
- var e2 = q.match(/OS (\d+)_/i);
- return e2 && e2[1] ? e2[1] : null;
-}();
-var z = /Android/i.test(q);
-var j = function() {
- var e2 = q.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);
- if (!e2)
- return null;
- var t2 = e2[1] && parseFloat(e2[1]), s2 = e2[2] && parseFloat(e2[2]);
- return t2 && s2 ? parseFloat(e2[1] + "." + e2[2]) : t2 || null;
-}();
-var J = /Edge/i.test(q);
-var X = !J && /Chrome/i.test(q);
-var Z = /MSIE/.test(q) || -1 < q.indexOf("Trident") && -1 < q.indexOf("rv:11.0");
-var Q = function() {
- var e2 = /MSIE\s(\d+)\.\d/.exec(q);
- let t2 = e2 && parseFloat(e2[1]);
- return t2 = !t2 && /Trident\/7.0/i.test(q) && /rv:11.0/.test(q) ? 11 : t2;
-}();
-var ee = /Safari/i.test(q) && !X && !z && !J;
-var te = /Windows/i.test(q);
-var se = /MAC OS X/i.test(q);
-var ie = F && "undefined" != typeof Worker && !Z;
-var ne = z || W;
-var oe = F && void 0 !== window.tencent_cloud_im_csig_flutter_for_web_25F_cy;
-var re = function() {
- if ("undefined" == typeof window || void 0 === window.navigator)
- return false;
- var e2 = window.navigator.standalone;
- return !(!W || e2 || ee);
-}();
-var ae;
-var ce;
-ae = "undefined" != typeof console ? console : "undefined" != typeof global && global.console ? global.console : "undefined" != typeof window && window.console ? window.console : {};
-var le = function() {
-};
-var ue = ["assert", "clear", "count", "debug", "dir", "dirxml", "error", "group", "groupCollapsed", "groupEnd", "info", "log", "profile", "profileEnd", "table", "time", "timeEnd", "timeStamp", "trace", "warn"];
-var de = ue.length;
-for (; de--; )
- ce = ue[de], console[ce] || (ae[ce] = le);
-var _e = ae;
-var he = 0;
-var pe = function() {
- return (/* @__PURE__ */ new Date()).getTime() + he;
-};
-var ge = function() {
- he = 0;
-};
-var me = function() {
- return Math.floor(pe() / 1e3);
-};
-var fe = 0;
-function Me() {
- return Et() ? "%c Chat %c" : "Chat";
-}
-function Ie() {
- const e2 = function() {
- const e3 = /* @__PURE__ */ new Date();
- return e3.setTime(pe()), e3;
- }();
- return e2.toLocaleTimeString("en-US", { hour12: false }) + "." + function(e3) {
- let t2;
- switch (e3.toString().length) {
- case 1:
- t2 = "00" + e3;
- break;
- case 2:
- t2 = "0" + e3;
- break;
- default:
- t2 = e3;
- }
- return t2;
- }(e2.getMilliseconds());
-}
-var Ce = { arguments2String(s2) {
- let i2 = "";
- if (1 === s2.length)
- i2 = s2[0];
- else
- for (let e2 = 0, t2 = s2.length; e2 < t2; e2++) {
- if (qe(s2[e2]))
- try {
- i2 += Ve(s2[e2]) ? JSON.stringify(s2[e2], ["message", "code"]) : JSON.stringify(s2[e2]);
- } catch (e3) {
- i2 += e3 ? e3.message : "";
- break;
- }
- else
- i2 += s2[e2];
- i2 += " ";
- }
- return i2;
-}, _exec(e2, t2) {
- Et() ? _e[e2](Me(), "background:#0abf5b; padding:1px; border-radius:3px; color: #fff", "background:transparent", Ie(), t2) : _e[e2](`${Me()} ${Ie()} ` + t2);
-}, d: function() {
- var e2;
- fe <= -1 && (e2 = this.arguments2String(arguments), this._exec("debug", e2));
-}, l: function() {
- var e2;
- fe <= 0 && (e2 = this.arguments2String(arguments), this._exec("log", e2));
-}, log: function() {
- var e2;
- fe <= 0 && (e2 = this.arguments2String(arguments), this._exec("log", e2));
-}, i: function() {
- var e2;
- fe <= 1 && (e2 = this.arguments2String(arguments), this._exec("info", e2));
-}, w: function() {
- var e2;
- fe <= 2 && (e2 = this.arguments2String(arguments), this._exec("warn", e2));
-}, e: function() {
- var e2;
- fe <= 3 && (e2 = this.arguments2String(arguments), this._exec("error", e2));
-}, setLevel: function(e2) {
- e2 < 4 && this._exec("log", "set level from " + fe + " to " + e2), fe = e2;
-}, getLevel: function() {
- return fe;
-} };
-var Te = { JPG: 1, JPEG: 1, GIF: 2, PNG: 3, BMP: 4, UNKNOWN: 255 };
-var ye = { NICK: "Tag_Profile_IM_Nick", GENDER: "Tag_Profile_IM_Gender", BIRTHDAY: "Tag_Profile_IM_BirthDay", LOCATION: "Tag_Profile_IM_Location", SELFSIGNATURE: "Tag_Profile_IM_SelfSignature", ALLOWTYPE: "Tag_Profile_IM_AllowType", LANGUAGE: "Tag_Profile_IM_Language", AVATAR: "Tag_Profile_IM_Image", MESSAGESETTINGS: "Tag_Profile_IM_MsgSettings", ADMINFORBIDTYPE: "Tag_Profile_IM_AdminForbidType", LEVEL: "Tag_Profile_IM_Level", ROLE: "Tag_Profile_IM_Role" };
-var ve = "Gender_Type_";
-var Ee = { UNKNOWN: ve + "Unknown", FEMALE: ve + "Female", MALE: ve + "Male" };
-var Se = { NONE: "AdminForbid_Type_None", SEND_OUT: "AdminForbid_Type_SendOut" };
-var De = { NEED_CONFIRM: "AllowType_Type_NeedConfirm", ALLOW_ANY: "AllowType_Type_AllowAny", DENY_ANY: "AllowType_Type_DenyAny" };
-var Re = "@TGS#_";
-var Le = "@TOPIC#_";
-var Ae = Object.prototype.hasOwnProperty;
-function Oe(e2) {
- if (null == e2)
- return true;
- if ("boolean" == typeof e2)
- return false;
- if ("number" == typeof e2)
- return 0 === e2;
- if ("string" == typeof e2)
- return 0 === e2.length;
- if ("function" == typeof e2)
- return 0 === e2.length;
- if (Array.isArray(e2))
- return 0 === e2.length;
- if (e2 instanceof Error)
- return "" === e2.message;
- if (be(e2)) {
- for (const t2 in e2)
- if (Ae.call(e2, t2))
- return false;
- return true;
- }
- return !!(Ne(e2) || Pe(e2) || Ue(e2)) && 0 === e2.size;
-}
-var Ne = function(e2) {
- return "map" === Ke(e2);
-};
-var Pe = function(e2) {
- return "set" === Ke(e2);
-};
-var Ue = function(e2) {
- return "file" === Ke(e2);
-};
-var Ge = function(e2) {
- return null !== e2 && ("number" == typeof e2 && !isNaN(+e2) || "object" == typeof e2 && e2.constructor === Number);
-};
-var ke = function(e2) {
- return "string" == typeof e2;
-};
-var we = function(e2) {
- return null !== e2 && "object" == typeof e2;
-};
-var be = function(e2) {
- if ("object" != typeof e2 || null === e2)
- return false;
- e2 = Object.getPrototypeOf(e2);
- if (null === e2)
- return true;
- let t2 = e2;
- for (; null !== Object.getPrototypeOf(t2); )
- t2 = Object.getPrototypeOf(t2);
- return e2 === t2;
-};
-var Fe = function(e2) {
- return "function" == typeof Array.isArray ? Array.isArray(e2) : "array" === Ke(e2);
-};
-var $e = function(e2) {
- return void 0 === e2;
-};
-var qe = function(e2) {
- return Fe(e2) || we(e2);
-};
-var xe = function(e2) {
- return "function" == typeof e2;
-};
-var Ve = function(e2) {
- return e2 instanceof Error;
-};
-var Be = function(e2) {
- return "filelist" === Ke(e2);
-};
-var Ke = function(e2) {
- return Object.prototype.toString.call(e2).match(/^\[object (.*)\]$/)[1].toLowerCase();
-};
-var He = function(e2) {
- if ("string" != typeof e2)
- return false;
- e2 = e2[0];
- return !/[^a-zA-Z0-9]/.test(e2);
-};
-var We = (Date.now || (Date.now = function() {
- return (/* @__PURE__ */ new Date()).getTime();
-}), function(s2, i2, n2, o2) {
- if (!qe(s2) || !qe(i2))
- return 0;
- let r2 = 0;
- var a2, c2 = Object.keys(i2);
- for (let e2 = 0, t2 = c2.length; e2 < t2; e2++)
- if (a2 = c2[e2], !($e(i2[a2]) || n2 && n2.includes(a2)))
- if (qe(s2[a2]) && qe(i2[a2]))
- r2 += We(s2[a2], i2[a2], n2, o2);
- else {
- if (o2 && o2.includes(i2[a2]))
- continue;
- s2[a2] !== i2[a2] && (s2[a2] = i2[a2], r2 += 1);
- }
- return r2;
-});
-var Ye = function(e2, t2) {
- const s2 = /* @__PURE__ */ new Map();
- for (var [i2, n2] of e2.entries())
- n2 && s2.set(i2, t2 ? JSON.stringify(n2) : JSON.parse(JSON.stringify(n2)));
- return s2;
-};
-var ze = function(e2) {
- if (0 === e2.length)
- return 0;
- let t2 = 0, s2 = 0, i2;
- for (var n2 = "undefined" != typeof document && void 0 !== document.characterSet ? document.characterSet : "UTF-8"; void 0 !== e2[t2]; )
- i2 = e2[t2++].charCodeAt[t2] <= 255 ? 1 : false === n2 ? 3 : 2, s2 += i2;
- return s2;
-};
-var je = function(e2) {
- e2 = e2 || 99999999;
- return Math.round(Math.random() * e2);
-};
-var Je = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
-var Xe = Je.length;
-var Ze = function(e2, t2) {
- for (const s2 in e2)
- if (e2[s2] === t2)
- return true;
- return false;
-};
-var Qe = {};
-var et = function(e2) {
- return -1 === e2.indexOf("http://") || -1 === e2.indexOf("https://") ? "https://" + e2 : e2.replace(/https|http/, "https");
-};
-function st(i2, e2) {
- if (!Fe(i2) || !Fe(e2))
- return false;
- let n2 = false;
- return e2.forEach(({ key: t2, value: e3 }) => {
- const s2 = i2.find((e4) => e4.key === t2);
- s2 ? s2.value !== e3 && (s2.value = e3, n2 = true) : (i2.push({ key: t2, value: e3 }), n2 = true);
- }), n2;
-}
-function it(e2) {
- if (be(e2) && be(e2.webhookInfo)) {
- const t2 = [];
- return e2.webhookInfo.disableCloudMessagePreHook && t2.push("ForbidBeforeSendMsgCallback"), e2.webhookInfo.disableCloudMessagePostHook && t2.push("ForbidAfterSendMsgCallback"), 0 !== t2.length ? t2 : void 0;
- }
-}
-var nt = (e2) => e2 === t.GRP_AVCHATROOM;
-var ot = ({ type: e2, groupID: s2 }) => e2 === t.GRP_COMMUNITY || ("" + s2).startsWith(Re) && !("" + s2).includes(Le);
-var rt = (e2) => ("" + e2).startsWith(Re) && ("" + e2).includes(Le);
-var at = (e2) => ke(e2) && e2.slice(0, 3) === t.CONV_C2C;
-var ct = (e2) => ke(e2) && e2.slice(0, 5) === t.CONV_GROUP;
-var lt = (e2) => ke(e2) && e2 === t.CONV_SYSTEM;
-function ut(t2, s2) {
- const i2 = {};
- return Object.keys(t2).forEach((e2) => {
- i2[e2] = s2(t2[e2], e2);
- }), i2;
-}
-function dt(i2) {
- return b ? Promise.resolve({ width: 0, height: 0 }) : k ? new Promise((t2, e2) => {
- $.getImageInfo({ src: i2, success(e3) {
- t2({ width: e3.width, height: e3.height });
- }, fail() {
- t2({ width: 0, height: 0 });
- } });
- }) : Z && 9 === Q ? Promise.resolve({ width: 0, height: 0 }) : new Promise((e2, t2) => {
- let s2 = new Image();
- s2.onload = function() {
- e2({ width: this.width, height: this.height }), s2 = null;
- }, s2.onerror = function() {
- e2({ width: 0, height: 0 }), s2 = null;
- }, s2.src = i2;
- });
-}
-function _t() {
- function e2() {
- return (65536 * (1 + Math.random()) | 0).toString(16).substring(1);
- }
- return "" + (e2() + e2()) + e2() + e2() + e2() + e2() + e2() + e2();
-}
-function ht() {
- let e2 = "unknown";
- if (se && (e2 = "mac"), te && (e2 = "windows"), W && (e2 = "ios"), z && (e2 = "android"), k)
- try {
- var t2 = $.getSystemInfoSync().platform;
- void 0 !== t2 && (e2 = t2);
- } catch (e3) {
- }
- return e2;
-}
-function pt(t2, s2) {
- t2 = t2.split("."), s2 = s2.split(".");
- const i2 = Math.max(t2.length, s2.length);
- for (; t2.length < i2; )
- t2.push("0");
- for (; s2.length < i2; )
- s2.push("0");
- for (let e2 = 0; e2 < i2; e2++) {
- const i3 = parseInt(t2[e2]), n2 = parseInt(s2[e2]);
- if (i3 > n2)
- return 1;
- if (i3 < n2)
- return -1;
- }
- return 0;
-}
-function gt(e2) {
- const { originUrl: t2, originWidth: s2, originHeight: i2, min: n2 = 198 } = e2, o2 = parseInt(s2), r2 = parseInt(i2), a2 = { url: void 0, width: 0, height: 0 };
- if ((o2 <= r2 ? o2 : r2) <= n2)
- a2.url = t2, a2.width = o2, a2.height = r2;
- else {
- r2 <= o2 ? (a2.width = Math.ceil(o2 * n2 / r2), a2.height = n2) : (a2.width = n2, a2.height = Math.ceil(r2 * n2 / o2));
- const e3 = t2 && -1 < t2.indexOf("?") ? t2 + "&" : t2 + "?";
- a2.url = 198 === n2 ? e3 + "imageView2/3/w/198/h/198" : e3 + "imageView2/3/w/720/h/720";
- }
- if ($e(t2)) {
- const { url: e3, ...t3 } = a2;
- return t3;
- }
- return a2;
-}
-function mt(t2) {
- var e2 = t2[2];
- t2[2] = t2[1], t2[1] = e2;
- for (let e3 = 0; e3 < t2.length; e3++)
- t2[e3].setType(e3);
-}
-function ft(e2) {
- const t2 = e2["servcmd"];
- return t2.slice(t2.indexOf(".") + 1);
-}
-function Mt(e2, t2) {
- return Math.round(Number(e2) * Math.pow(10, t2)) / Math.pow(10, t2);
-}
-function It(e2, t2) {
- return e2.includes(t2);
-}
-function Ct(e2, t2) {
- return e2.includes(t2);
-}
-function Tt(e2) {
- return e2.split(Le)[0];
-}
-var yt = function(e2, s2, i2) {
- if ($e(s2))
- return "";
- switch (e2) {
- case t.MSG_TEXT:
- return s2.text;
- case t.MSG_IMAGE:
- return i2 ? "[Image]" : "[图片]";
- case t.MSG_LOCATION:
- return i2 ? "[Location]" : "[位置]";
- case t.MSG_AUDIO:
- return i2 ? "[Voice]" : "[语音]";
- case t.MSG_VIDEO:
- return i2 ? "[Video]" : "[视频]";
- case t.MSG_FILE:
- return i2 ? "[File]" : "[文件]";
- case t.MSG_CUSTOM:
- return i2 ? "[Custom Messages]" : "[自定义消息]";
- case t.MSG_GRP_TIP:
- return i2 ? "[Group Notification]" : "[群提示消息]";
- case t.MSG_GRP_SYS_NOTICE:
- return i2 ? "[Group System Message]" : "[群系统通知]";
- case t.MSG_FACE:
- return i2 ? "[Animated Sticker]" : "[动画表情]";
- case t.MSG_MERGER:
- return i2 ? "[Chat Record]" : "[聊天记录]";
- default:
- return "";
- }
-};
-function vt(t2) {
- const s2 = [];
- if (!ke(t2))
- return s2;
- var i2 = t2.length;
- if (0 === i2)
- return s2;
- for (let e2 = i2 - 1; 0 <= e2; e2--)
- "1" === t2[e2] && s2.push(Math.pow(2, i2 - e2 - 1));
- return s2;
-}
-function Et() {
- return !Z && !k;
-}
-function St(e2) {
- return "the length of userIDList cannot exceed " + e2;
-}
-function Dt(e2, t2 = true, s2 = true) {
- var i2 = Date.now();
- return t2 ? s2 ? i2 - e2 + " ms" : Math.round((i2 - e2) / 1e3) + " s" : s2 ? i2 - e2 : Math.round((i2 - e2) / 1e3);
-}
-function Rt(e2) {
- let t2 = e2 && 1 < e2 ? true : false;
- return t2;
-}
-function Lt(s2, i2, n2) {
- if (void 0 === i2)
- return true;
- let o2 = true;
- if (be(i2))
- Object.keys(i2).forEach((e2) => {
- var t2 = 1 === s2.length ? s2[0][e2] : void 0;
- o2 = !!At(t2, i2[e2], n2, e2) && o2;
- });
- else if (Fe(i2))
- for (let e2 = 0; e2 < i2.length; e2++)
- o2 = !!At(s2[e2], i2[e2], n2, i2[e2].name) && o2;
- if (o2)
- return o2;
- throw new Error("Params validate failed.");
-}
-function At(e2, t2, s2, i2) {
- if (void 0 === t2)
- return true;
- let n2 = true;
- var o2, r2;
- return t2.required && Oe(e2) && (Ce.e(`[${s2}] Missing required params: "${i2}".`), n2 = false), Oe(e2) || (o2 = Ke(e2)) !== (r2 = t2.type.toLowerCase()) && ("asyncfunction" === o2 && "function" === r2 || (Ce.e(`[${s2}] Invalid params: type check failed for "${i2}". Expected ${t2.type}.`), n2 = false)), t2.validator && !t2.validator(e2, s2, i2) && (Ce.e(`[${s2}] Invalid params: custom validator check failed for "${i2}".`), n2 = false), n2;
-}
-var Ot = "unSend";
-var Nt = "success";
-var Pt = "fail";
-var Ut = "notStart";
-var Gt = "pending";
-var kt = "resolved";
-var wt = "rejected";
-var bt = function(e2) {
- if (!e2)
- return false;
- if (at(e2) || ct(e2) || lt(e2))
- return true;
- e2 = gs("InvalidConversationID", e2);
- return e2 && Ce.w(e2), false;
-};
-var Ft = function(e2) {
- "" !== e2.desc && "" !== gs("API_REFER") && Ce.w(`[${e2.api}] | ${e2.paramName} | ${e2.desc}, ` + gs("API_REFER") + e2.api);
-};
-var $t = function() {
- return gs("StringRequiredLog");
-};
-var qt = function(e2) {
- return gs("NonEmptyStringRequiredLog", e2);
-};
-var xt = function() {
- return gs("NumberRequiredLog");
-};
-var Vt = function() {
- return gs("UndefinedNotAllowedLog");
-};
-var Bt = function() {
- return gs("FileRequiredLog");
-};
-var Kt = function() {
- return gs("FunctionRequiredLog");
-};
-var Ht = function() {
- return gs("ArrayRequiredLog");
-};
-var Wt = function() {
- return gs("NonEmptyArrayLog");
-};
-var Yt = function() {
- return gs("CallbackMissingLog");
-};
-var zt = function() {
- return gs("PositiveIntegerRequiredLog");
-};
-var jt = function(e2, t2) {
- return gs("StringNotLongerThanLog", e2, t2);
-};
-var Jt = function(e2, t2) {
- return gs("NumberGreaterThanLog", e2, t2);
-};
-var Xt = function(e2, t2) {
- return gs("NumberGreaterOrEqualLog", e2, t2);
-};
-var Zt = function(e2) {
- return gs("KeyValueStringRequiredLog", e2);
-};
-var Qt = function() {
- return gs("PlainObjectRequiredLog");
-};
-var es = function() {
- return gs("NonEmptyContentRequiredLog");
-};
-var ts = function() {
- return gs("FileNotSelectedLog");
-};
-var ss = function() {
- return gs("MessageInstanceRequiredLog");
-};
-var is = function() {
- return gs("NonAnonymousFunctionLog");
-};
-var ns = function() {
- return gs("MessageExtensionNotAvailableLog");
-};
-var os = function() {
- return gs("MessageReactionRequiredLog");
-};
-var rs = function(e2, t2) {
- return gs("ContainsUnsupportedTypeLog", e2, t2);
-};
-var as = { type: "String", required: true };
-var cs = { type: "Array", required: true };
-var ls = { type: "Object", required: true };
-var us = { type: "Boolean", required: true };
-var ds = { type: "number", required: true };
-var _s = function(e2, t2, s2, { allowUndefined: i2, allowEmpty: n2, maxLength: o2 }) {
- return $e(e2) ? !!i2 || (Ft({ api: t2, paramName: s2, desc: Vt() }), false) : Fe(e2) ? !(0 === e2.length && (Ft({ api: t2, paramName: s2, desc: Wt() }), !n2) || o2 && e2.length > o2 && (Ft({ api: t2, paramName: s2, desc: (i2 = s2, n2 = o2, gs("MaximumArrayLengthLog", i2, n2)) }), 1)) : (Ft({ api: t2, paramName: s2, desc: Ht() }), false);
-};
-var hs = function(e2, t2, s2, { allowUndefined: i2, min: n2, max: o2 }) {
- return $e(e2) ? !!i2 || (Ft({ api: t2, paramName: s2, desc: Vt() }), false) : Ge(e2) ? Ge(n2) && e2 < n2 ? (Ft({ api: t2, paramName: s2, desc: 0 === n2 ? Xt(s2, n2) : Jt(s2, n2 - 1) }), false) : !(Ge(o2) && o2 < e2 && (Ft({ api: t2, paramName: s2, desc: (i2 = s2, n2 = o2, gs("MaximumNumberLog", i2, n2)) }), 1)) : (Ft({ api: t2, paramName: s2, desc: xt() }), false);
-};
-var ps = { keywordListForMsg: { type: "Array", required: false, validator: (e2, t2, s2) => _s(e2, t2, s2, { allowUndefined: true, allowEmpty: true, maxLength: 5 }) }, keywordListExceptMsg: { type: "Array", required: true, validator: (e2, t2, s2) => _s(e2, t2, s2, { allowUndefined: false, allowEmpty: false, maxLength: 5 }) }, keywordListMatchType: { type: "String", required: false, validator: (e2, t2, s2) => !e2 || "or" === e2 || "and" === e2 || Ft({ api: t2, paramName: s2, desc: e2 + " is invalid match type" }) }, cursor: { type: "String", required: false }, count: { type: "Number", required: false, validator: (e2, t2, s2) => hs(e2, t2, s2, { allowUndefined: true, min: 1, max: 100 }) }, groupTypeList: { type: "Array", required: false, validator: (e2, s2, i2) => {
- if (!e2)
- return true;
- if (!_s(e2, s2, i2, { allowUndefined: true, allowEmpty: true }))
- return false;
- const n2 = [t.GRP_PUBLIC, t.GRP_COMMUNITY, t.GRP_WORK, t.GRP_MEETING];
- return !(0 < e2.filter((e3) => -1 === n2.indexOf(e3)).length && (Ft({ api: s2, paramName: i2, desc: rs(i2, "group") }), 1));
-} } };
-var gs = null;
-var ms = { hookGetAPITips: function(e2) {
- gs = e2;
-}, login: { userID: as, userSig: as }, addToBlacklist: { userIDList: cs }, removeFromBlacklist: { userIDList: cs }, on: [{ name: "eventName", type: "String", validator: (e2, t2, s2) => "string" == typeof e2 && 0 !== e2.length || (Ft({ api: t2, paramName: s2, desc: qt(s2) }), false) }, { name: "handler", type: "Function", validator: (e2, t2, s2) => "function" != typeof e2 ? (Ft({ api: t2, paramName: s2, desc: Kt() }), false) : ("" === e2.name && Ft({ api: t2, paramName: s2, desc: is() }), true) }], once: [{ name: "eventName", type: "String", validator: (e2, t2, s2) => "string" == typeof e2 && 0 !== e2.length || (Ft({ api: t2, paramName: s2, desc: qt(s2) }), false) }, { name: "handler", type: "Function", validator: (e2, t2, s2) => "function" != typeof e2 ? (Ft({ api: t2, paramName: s2, desc: Kt() }), false) : ("" === e2.name && Ft({ api: t2, paramName: s2, desc: is() }), true) }], off: [{ name: "eventName", type: "String", validator: (e2, t2, s2) => "string" == typeof e2 && 0 !== e2.length || (Ft({ api: t2, paramName: s2, desc: qt(s2) }), false) }, { name: "handler", type: "Function", validator: (e2, t2, s2) => "function" != typeof e2 ? (Ft({ api: t2, paramName: s2, desc: Kt() }), false) : ("" === e2.name && Ft({ api: t2, paramName: s2, desc: is() }), true) }], sendMessage: [{ name: "message", ...ls }], setMessageExtensions: [{ name: "message", ...ls, validator: (e2, t2, s2) => e2.status === Nt && true === e2.isSupportExtension || (Ft({ api: t2, paramName: s2, desc: ns() }), false) }, { name: "extensions", ...cs }], getMessageExtensions: [{ name: "message", ...ls, validator: (e2, t2, s2) => e2.status === Nt && true === e2.isSupportExtension || (Ft({ api: t2, paramName: s2, desc: ns() }), false) }], deleteMessageExtensions: [{ name: "message", ...ls, validator: (e2, t2, s2) => e2.status === Nt && true === e2.isSupportExtension || (Ft({ api: t2, paramName: s2, desc: ns() }), false) }], addMessageReaction: [{ name: "message", ...ls, validator: (e2, t2, s2) => e2.status === Nt || (Ft({ api: t2, paramName: s2, desc: os() }), false) }, { name: "reactionID", ...as }], removeMessageReaction: [{ name: "message", ...ls, validator: (e2, t2, s2) => e2.status === Nt || (Ft({ api: t2, paramName: s2, desc: os() }), false) }, { name: "reactionID", ...as }], getMessageReactions: { messageList: { ...cs } }, getAllUserListOfMessageReaction: { message: { ...ls, validator: (e2, t2, s2) => e2.status === Nt || (Ft({ api: t2, paramName: s2, desc: os() }), false) }, reactionID: { ...as }, nextSeq: { type: "Number" }, count: { type: "Number" } }, getMessageList: { conversationID: { ...as, validator: (e2) => bt(e2) }, nextReqMessageID: { type: "String" }, count: { type: "Number", validator: (e2, t2, s2) => !(!$e(e2) && !/^[1-9][0-9]*$/.test(e2) && (Ft({ api: t2, paramName: s2, desc: zt() }), 1)) } }, getMessageListHopping: { conversationID: { ...as, validator: (e2) => bt(e2) }, sequence: { type: "Number" }, time: { type: "Number" }, direction: { type: "Number", validator: (e2, t2, s2) => !(!$e(e2) && 0 !== e2 && 1 !== e2 && (Ft({ api: t2, paramName: s2, desc: gs("0Or1RequiredLog") }), 1)) }, count: { type: "Number", validator: (e2, t2, s2) => !(!$e(e2) && !/^[1-9][0-9]*$/.test(e2) && (Ft({ api: t2, paramName: s2, desc: zt }), 1)) } }, setMessageRead: { conversationID: { ...as, validator: (e2) => bt(e2) } }, setAllMessageRead: { scope: { type: "String", required: false, validator: (e2, s2, i2) => !e2 || -1 !== [t.READ_ALL_C2C_MSG, t.READ_ALL_GROUP_MSG, t.READ_ALL_MSG].indexOf(e2) || (Ft({ api: s2, paramName: i2, desc: gs("ValidScopeRequired") }), false) } }, getConversationProfile: [{ name: "conversationID", ...as, validator: (e2) => bt(e2) }], clearHistoryMessage: [{ name: "conversationID", ...as, validator: (e2) => bt(e2) }], pinConversation: { conversationID: { ...as, validator: (e2) => bt(e2) }, isPinned: { ...us } }, setConversationDraft: { conversationID: { ...as, validator: (e2) => bt(e2) }, draftText: { type: "String", validator: (e2, t2, s2) => !!ke(e2) || (Ft({ api: t2, paramName: s2, desc: $t() }), false) } }, setConversationCustomData: { conversationIDList: { ...cs }, customData: { type: "String", validator: (e2, t2, s2) => ke(e2) ? !(256 < e2.length && (Ft({ api: t2, paramName: s2, desc: jt(s2, 256) }), 1)) : (Ft({ api: t2, paramName: s2, desc: $t() }), false) } }, markConversation: { conversationIDList: { ...cs }, markType: { type: "number", validator: (e2, t2, s2) => {
- return Ge(e2) ? e2 <= 0 ? (Ft({ api: t2, paramName: s2, desc: Jt(s2, 0) }), false) : !(e2 >= Math.pow(2, 64) && (Ft({ api: t2, paramName: s2, desc: (e2 = s2, gs("NumberLessThanLog", e2, "Math.pow(2,64)")) }), 1)) : (Ft({ api: t2, paramName: s2, desc: xt() }), false);
-} }, enableMark: { ...us } }, createConversationGroup: { conversationIDList: { ...cs }, groupName: { ...as, validator: (e2, t2, s2) => !(!e2 || 32 < e2.length && (Ft({ api: t2, paramName: s2, desc: jt(s2, 32) }), 1)) } }, deleteConversationGroup: [{ name: "groupName", ...as }], renameConversationGroup: { oldName: { ...as }, newName: { ...as, validator: (e2, t2, s2) => !(!e2 || 32 < e2.length && (Ft({ api: t2, paramName: s2, desc: jt(s2, 32) }), 1)) } }, addConversationsToGroup: { conversationIDList: { ...cs }, groupName: { ...as } }, deleteConversationsFromGroup: { conversationIDList: { ...cs }, groupName: { ...as } }, getGroupList: { groupProfileFilter: { type: "Array" } }, getGroupProfile: { groupID: as, groupCustomFieldFilter: { type: "Array" }, memberCustomFieldFilter: { type: "Array" } }, getGroupProfileAdvance: { groupIDList: cs }, createGroup: { name: as }, joinGroup: { groupID: as, type: { type: "String" }, applyMessage: { type: "String" } }, quitGroup: [{ name: "groupID", ...as }], handleApplication: { message: ls, handleAction: as, handleMessage: { type: "String" } }, changeGroupOwner: { groupID: as, newOwnerID: as }, updateGroupProfile: { groupID: as, muteAllMembers: { type: "Boolean" } }, dismissGroup: [{ name: "groupID", ...as }], searchGroupByID: [{ name: "groupID", ...as }], getGroupOnlineMemberCount: [{ name: "groupID", ...as }], initGroupAttributes: { groupID: as, groupAttributes: { ...ls, validator: (t2, s2, i2) => {
- let n2 = true;
- return Object.keys(t2).forEach((e2) => {
- if (!ke(t2[e2]))
- return Ft({ api: s2, paramName: i2, desc: Zt("value") }), n2 = false;
- }), n2;
-} } }, setGroupAttributes: { groupID: as, groupAttributes: { ...ls, validator: (t2, s2, i2) => {
- let n2 = true;
- return Object.keys(t2).forEach((e2) => {
- if (!ke(t2[e2]))
- return Ft({ api: s2, paramName: i2, desc: Zt("value") }), n2 = false;
- }), n2;
-} } }, deleteGroupAttributes: { groupID: as, keyList: { type: "Array", validator: (e2, s2, i2) => {
- if ($e(e2) || !Fe(e2))
- return Ft({ api: s2, paramName: i2, desc: Ht() }), false;
- if (Oe(e2))
- return true;
- {
- let t2 = true;
- return e2.forEach((e3) => {
- if (!ke(e3))
- return Ft({ api: s2, paramName: i2, desc: gs("StringArrayRequiredLog") }), t2 = false;
- }), t2;
- }
-} } }, getGroupAttributes: { groupID: as, keyList: { type: "Array", validator: (e2, s2, i2) => {
- if ($e(e2) || !Fe(e2))
- return Ft({ api: s2, paramName: i2, desc: Ht() }), false;
- if (Oe(e2))
- return true;
- {
- let t2 = true;
- return e2.forEach((e3) => {
- if (!ke(e3))
- return Ft({ api: s2, paramName: i2, desc: Zt("key") }), t2 = false;
- }), t2;
- }
-} } }, setGroupCounters: { groupID: as, counters: ls }, increaseGroupCounter: { groupID: as, key: as, value: ds }, decreaseGroupCounter: { groupID: as, key: as, value: ds }, getGroupCounters: { groupID: as }, getGroupMemberList: { groupID: as, count: { type: "Number" } }, getGroupMemberProfile: { groupID: as, userIDList: cs, memberCustomFieldFilter: { type: "Array" } }, addGroupMember: { groupID: as, userIDList: cs }, setGroupMemberRole: { groupID: as, userID: as, role: as }, setGroupMemberMuteTime: { groupID: as, userID: as, muteTime: { type: "Number", validator: (e2) => 0 <= e2 } }, setGroupMemberNameCard: { groupID: as, userID: { type: "String" }, nameCard: { type: "String", validator: (e2, t2, s2) => ke(e2) ? (e2.length, true) : (Ft({ api: t2, paramName: s2, desc: $t() }), false) } }, setGroupMemberCustomField: { groupID: as, userID: { type: "String" }, memberCustomField: cs }, deleteGroupMember: { groupID: as }, markGroupMemberList: { groupID: as, markType: { type: "number", validator: (e2, t2, s2) => Ge(e2) ? !(e2 < 1e3 && (Ft({ api: t2, paramName: s2, desc: Xt(s2, 1e3) }), 1)) : (Ft({ api: t2, paramName: s2, desc: xt() }), false) }, userIDList: { ...cs }, enableMark: { ...us } }, createTextMessage: { to: as, conversationType: as, payload: { ...ls, validator: (e2, t2, s2) => be(e2) ? ke(e2.text) ? 0 !== e2.text.length || (Ft({ api: t2, paramName: "payload.text", desc: es() }), false) : (Ft({ api: t2, paramName: "payload.text", desc: $t() }), false) : (Ft({ api: t2, paramName: s2, desc: Qt() }), false) } }, createTextAtMessage: { to: as, conversationType: as, payload: { ...ls, validator: (e2, t2, s2) => be(e2) ? ke(e2.text) ? 0 === e2.text.length ? (Ft({ api: t2, paramName: "payload.text", desc: es() }), false) : !(e2.atUserList && !Fe(e2.atUserList) && (Ft({ api: t2, paramName: "payload.atUserList", desc: Ht() }), 1)) : (Ft({ api: t2, paramName: "payload.text", desc: $t() }), false) : (Ft({ api: t2, paramName: s2, desc: Qt() }), false) } }, createCustomMessage: { to: as, conversationType: as, payload: { ...ls, validator: (e2, t2, s2) => be(e2) ? e2.data && !ke(e2.data) ? (Ft({ api: t2, paramName: "payload.data", desc: $t() }), false) : e2.description && !ke(e2.description) ? (Ft({ api: t2, paramName: "payload.description", desc: $t() }), false) : !(e2.extension && !ke(e2.extension) && (Ft({ api: t2, paramName: "payload.extension", desc: $t() }), 1)) : (Ft({ api: t2, paramName: "payload", desc: Qt() }), false) } }, createImageMessage: { to: as, conversationType: as, payload: { ...ls, validator: (e2, t2, s2) => {
- if (!be(e2))
- return Ft({ api: t2, paramName: s2, desc: Qt() }), false;
- if ($e(e2.file))
- return Ft({ api: t2, paramName: "payload.file", desc: Vt() }), false;
- if (F) {
- if (!(e2.file instanceof HTMLInputElement || Ue(e2.file)))
- return be(e2.file) && "undefined" != typeof uni ? 0 !== e2.file.tempFilePaths.length && 0 !== e2.file.tempFiles.length || (Ft({ api: t2, paramName: "payload.file", desc: ts() }), false) : (Ft({ api: t2, paramName: "payload.file", desc: Bt() }), false);
- if (e2.file instanceof HTMLInputElement && 0 === e2.file.files.length)
- return Ft({ api: t2, paramName: "payload.file", desc: ts() }), false;
- }
- return true;
-}, onProgress: { type: "Function", required: false, validator: (e2, t2, s2) => ($e(e2) && Ft({ api: t2, paramName: s2, desc: Yt() }), true) } } }, createAudioMessage: { to: as, conversationType: as, payload: { ...ls, validator: (e2, t2, s2) => !!be(e2) || (Ft({ api: t2, paramName: s2, desc: Qt() }), false) }, onProgress: { type: "Function", required: false, validator: (e2, t2, s2) => ($e(e2) && Ft({ api: t2, paramName: s2, desc: Yt() }), true) } }, createVideoMessage: { to: as, conversationType: as, payload: { ...ls, validator: (e2, t2, s2) => {
- if (!be(e2))
- return Ft({ api: t2, paramName: s2, desc: Qt() }), false;
- if ($e(e2.file))
- return Ft({ api: t2, paramName: "payload.file", desc: Vt() }), false;
- if (F) {
- if (!(e2.file instanceof HTMLInputElement || Ue(e2.file)))
- return be(e2.file) && "undefined" != typeof uni ? !!Ue(e2.file.tempFile) || (Ft({ api: t2, paramName: "payload.file", desc: ts() }), false) : (Ft({ api: t2, paramName: "payload.file", desc: Bt() }), false);
- if (e2.file instanceof HTMLInputElement && 0 === e2.file.files.length)
- return Ft({ api: t2, paramName: "payload.file", desc: ts() }), false;
- }
- return true;
-} }, onProgress: { type: "Function", required: false, validator: (e2, t2, s2) => ($e(e2) && Ft({ api: t2, paramName: s2, desc: Yt() }), true) } }, createFaceMessage: { to: as, conversationType: as, payload: { ...ls, validator: (e2, t2, s2) => be(e2) ? Ge(e2.index) ? !!ke(e2.data) || (Ft({ api: t2, paramName: "payload.data", desc: $t() }), false) : (Ft({ api: t2, paramName: "payload.index", desc: xt() }), false) : (Ft({ api: t2, paramName: s2, desc: Qt() }), false) } }, createFileMessage: { to: as, conversationType: as, payload: { ...ls, validator: (e2, t2, s2) => {
- if (!be(e2))
- return Ft({ api: t2, paramName: s2, desc: Qt() }), false;
- if ($e(e2.file))
- return Ft({ api: t2, paramName: "payload.file", desc: Vt() }), false;
- if (F) {
- if (!(e2.file instanceof HTMLInputElement || Ue(e2.file)))
- return be(e2.file) && "undefined" != typeof uni ? 0 !== e2.file.tempFilePaths.length && 0 !== e2.file.tempFiles.length || (Ft({ api: t2, paramName: "payload.file", desc: ts() }), false) : (Ft({ api: t2, paramName: "payload.file", desc: Bt() }), false);
- if (e2.file instanceof HTMLInputElement && 0 === e2.file.files.length)
- return Ft({ api: t2, paramName: "payload.file", desc: ts() }), false;
- }
- return true;
-} }, onProgress: { type: "Function", required: false, validator: (e2, t2, s2) => ($e(e2) && Ft({ api: t2, paramName: s2, desc: Yt() }), true) } }, createLocationMessage: { to: as, conversationType: as, payload: { ...ls, validator: (e2, t2, s2) => be(e2) ? ke(e2.description) ? Ge(e2.longitude) ? !!Ge(e2.latitude) || (Ft({ api: t2, paramName: "payload.latitude", desc: xt() }), false) : (Ft({ api: t2, paramName: "payload.longitude", desc: xt() }), false) : (Ft({ api: t2, paramName: "payload.description", desc: $t() }), false) : (Ft({ api: t2, paramName: s2, desc: Qt() }), false) } }, createMergerMessage: { to: as, conversationType: as, payload: { ...ls, validator: (e2, t2, s2) => {
- if (Oe(e2.messageList))
- return Ft({ api: t2, paramName: "payload.messageList", desc: Wt() }), false;
- if (Oe(e2.compatibleText))
- return Ft({ api: t2, paramName: "payload.compatibleText", desc: qt("compatibleText") }), false;
- let i2 = false;
- return e2.messageList.forEach((e3) => {
- e3.status === Pt && (i2 = true);
- }), !i2 || (Ft({ api: t2, paramName: "payload.messageList", desc: gs("MergeFailedMessageLog") }), false);
-} } }, revokeMessage: [{ name: "message", ...ls, validator: (e2, s2, i2) => Oe(e2) ? (Ft({ api: s2, paramName: i2, desc: ss() }), false) : e2.conversationType === t.CONV_SYSTEM ? (Ft({ api: s2, paramName: i2, desc: gs("MessageCanBeRevokedDesc") }), false) : true !== e2.isRevoked || (Ft({ api: s2, paramName: i2, desc: gs("MessageRevokedLog") }), false) }], deleteMessage: [{ name: "messageList", ...cs, validator: (e2, t2, s2) => !Oe(e2) || (Ft({ api: t2, paramName: s2, desc: Wt() }), false) }], translateText: { sourceTextList: cs, sourceLanguage: as, targetLanguage: as }, convertVoiceToText: { message: { ...ls, validator: (e2, s2, i2) => Oe(e2) ? (Ft({ api: s2, paramName: i2, desc: ss() }), false) : e2.type === t.MSG_AUDIO && e2.status === Nt || (Ft({ api: s2, paramName: i2, desc: gs("AudioMessageRequiredLog") }), false) } }, modifyMessage: [{ name: "message", ...ls, validator: (e2, s2, i2) => Oe(e2) ? (Ft({ api: s2, paramName: i2, desc: ss() }), false) : e2.conversationType === t.CONV_SYSTEM ? (Ft({ api: s2, paramName: i2, desc: gs("MessageCanBeModifiedLog") }), false) : true !== e2._onlineOnlyFlag || (Ft({ api: s2, paramName: i2, desc: gs("OnlineMessageNotSupportLog") }), false) }], searchCloudMessages: { keywordList: ps.keywordListForMsg, keywordListMatchType: ps.keywordListMatchType, cursor: ps.cursor, senderUserIDList: { type: "Array", required: false, validator: (e2, t2, s2) => _s(e2, t2, s2, { allowUndefined: true, allowEmpty: true, maxLength: 5 }) }, messageTypeList: { type: "Array", required: false, validator: (e2, s2, i2) => {
- if (!e2)
- return true;
- if (!_s(e2, s2, i2, { allowUndefined: true, allowEmpty: true }))
- return false;
- const n2 = [t.MSG_TEXT, t.MSG_IMAGE, t.MSG_AUDIO, t.MSG_FILE, t.MSG_VIDEO, t.MSG_LOCATION, t.MSG_CUSTOM, t.MSG_MERGER];
- return !(0 < e2.filter((e3) => -1 === n2.indexOf(e3)).length && (Ft({ api: s2, paramName: i2, desc: rs(i2, "message") }), 1));
-} }, conversationID: { type: "String", required: false, validator: (e2) => !e2 || bt(e2) }, timePosition: { type: "number", required: false, validator: (e2, t2, s2) => hs(e2, t2, s2, { allowUndefined: true, min: 0 }) }, timePeriod: { type: "number", required: false, validator: (e2, t2, s2) => hs(e2, t2, s2, { allowUndefined: true, min: 0 }) } }, searchCloudUsers: { keywordList: ps.keywordListExceptMsg, keywordListMatchType: ps.keywordListMatchType, cursor: ps.cursor, count: ps.count, miniBirthday: { type: "Number", required: false, validator: (e2, t2, s2) => hs(e2, t2, s2, { allowUndefined: true, min: 0 }) }, maxBirthday: { type: "Number", required: false, validator: (e2, t2, s2) => hs(e2, t2, s2, { allowUndefined: true, min: 0 }) }, gender: { type: "String", required: false, validator: (e2, s2, i2) => !e2 || e2 === t.GENDER_FEMALE || e2 === t.GENDER_MALE || Ft({ api: s2, paramName: i2, desc: e2 + " is invalid match type" }) } }, searchCloudGroups: { keywordList: ps.keywordListExceptMsg, keywordListMatchType: ps.keywordListMatchType, cursor: ps.cursor, count: ps.count, groupTypeList: ps.groupTypeList }, searchCloudGroupMembers: { keywordList: ps.keywordListExceptMsg, keywordListMatchType: ps.keywordListMatchType, cursor: ps.cursor, count: ps.count, groupTypeList: ps.groupTypeList, groupIDList: { type: "Array", required: false, validator: (e2, t2, s2) => _s(e2, t2, s2, { allowUndefined: true, allowEmpty: true }) } }, getUserProfile: { userIDList: { type: "Array", validator: (e2, t2, s2) => Fe(e2) ? (0 === e2.length && Ft({ api: t2, paramName: s2, desc: Wt() }), true) : (Ft({ api: t2, paramName: s2, desc: Ht() }), false) } }, updateMyProfile: { profileCustomField: { type: "Array", validator: (e2, t2, s2) => !!$e(e2) || !!Fe(e2) || (Ft({ api: t2, paramName: s2, desc: Ht() }), false) } }, setSelfStatus: { customStatus: { type: "String", validator: (e2, t2, s2) => !!ke(e2) || (Ft({ api: t2, paramName: s2, desc: $t() }), false) } }, getUserStatus: { userIDList: { type: "Array", validator: (e2, t2, s2) => Fe(e2) ? 0 !== e2.length || (Ft({ api: t2, paramName: s2, desc: Wt() }), false) : (Ft({ api: t2, paramName: s2, desc: Ht() }), false) } }, subscribeUserStatus: { userIDList: { type: "Array", validator: (e2, t2, s2) => Fe(e2) ? 0 !== e2.length || (Ft({ api: t2, paramName: s2, desc: Wt() }), false) : (Ft({ api: t2, paramName: s2, desc: Ht() }), false) } }, unsubscribeUserStatus: { userIDList: { type: "Array", validator: (e2, t2, s2) => !e2 || !!Fe(e2) || (Ft({ api: t2, paramName: s2, desc: Ht() }), false) } }, addFriend: { to: as, source: { type: "String", required: true, validator: (e2, t2, s2) => !!e2 && (e2.startsWith("AddSource_Type_") ? !(8 < e2.replace("AddSource_Type_", "").length && (Ft({ api: t2, paramName: s2, desc: jt("keyword", 8) }), 1)) : (Ft({ api: t2, paramName: s2, desc: gs("SourcePrefixLog") }), false)) }, remark: { type: "String", required: false, validator: (e2, t2, s2) => !(ke(e2) && 96 < e2.length && (Ft({ api: t2, paramName: s2, desc: jt(s2, 96) }), 1)) } }, deleteFriend: { userIDList: cs }, checkFriend: { userIDList: cs }, getFriendProfile: { userIDList: cs }, updateFriend: { userID: as, remark: { type: "String", required: false, validator: (e2, t2, s2) => !(ke(e2) && 96 < e2.length && (Ft({ api: t2, paramName: s2, desc: jt(s2, 96) }), 1)) }, friendCustomField: { type: "Array", required: false, validator: (e2, s2, i2) => {
- if (e2) {
- if (!Fe(e2))
- return Ft({ api: s2, paramName: i2, desc: Ht() }), false;
- let t2 = true;
- return e2.forEach((e3) => ke(e3.key) && -1 !== e3.key.indexOf("Tag_SNS_Custom") ? ke(e3.value) ? 8 < e3.key.replace("Tag_SNS_Custom_", "").length ? (Ft({ api: s2, paramName: i2, desc: jt("keyword", 8) }), t2 = false) : void 0 : (Ft({ api: s2, paramName: i2, desc: Zt("value") }), t2 = false) : (Ft({ api: s2, paramName: i2, desc: gs("FriendCustomFieldPrefixLog") }), t2 = false)), t2;
- }
- return true;
-} } }, acceptFriendApplication: { userID: as }, refuseFriendApplication: { userID: as }, deleteFriendApplication: { userID: as }, createFriendGroup: { name: as }, deleteFriendGroup: { name: as }, addToFriendGroup: { name: as, userIDList: cs }, removeFromFriendGroup: { name: as, userIDList: cs }, renameFriendGroup: { oldName: as, newName: as }, sendMessageReadReceipt: [{ name: "messageList", type: "Array", validator: (e2, t2, s2) => Fe(e2) ? 0 !== e2.length || (Ft({ api: t2, paramName: s2, desc: Wt() }), false) : (Ft({ api: t2, paramName: s2, desc: Ht() }), false) }], getMessageReadReceiptList: [{ name: "messageList", type: "Array", validator: (e2, t2, s2) => Fe(e2) ? 0 !== e2.length || (Ft({ api: t2, paramName: s2, desc: Wt() }), false) : (Ft({ api: t2, paramName: s2, desc: Ht() }), false) }], createTopicInCommunity: { groupID: as, topicName: as }, deleteTopicFromCommunity: { groupID: as, topicIDList: { type: "Array", validator: (e2, t2, s2) => !e2 || !!Fe(e2) || (Ft({ api: t2, paramName: s2, desc: Ht() }), false) } }, updateTopicProfile: { groupID: as, topicID: as }, getTopicList: { groupID: as, topicIDList: { type: "Array", validator: (e2, t2, s2) => !e2 || !!Fe(e2) || (Ft({ api: t2, paramName: s2, desc: Ht() }), false) } }, followUser: [{ name: "userIDList", ...cs }], unfollowUser: [{ name: "userIDList", ...cs }], getMyFollowingList: [{ name: "startIndex", ...as, required: false }], getMyFollowersList: [{ name: "startIndex", ...as, required: false }], getMutualFollowersList: [{ name: "startIndex", ...as, required: false }], getUserFollowInfo: [{ name: "userIDList", ...cs, required: false }], checkFollowType: [{ name: "userIDList", ...cs }], addSignalingListener: [{ name: "eventName", type: "String", validator: (e2, t2, s2) => "string" == typeof e2 && 0 !== e2.length || (Ft({ api: t2, paramName: s2, desc: qt(s2) }), false) }, { name: "handler", type: "Function", validator: (e2, t2, s2) => "function" != typeof e2 ? (Ft({ api: t2, paramName: s2, desc: Kt() }), false) : ("" === e2.name && Ft({ api: t2, paramName: s2, desc: is() }), true) }], removeSignalingListener: [{ name: "eventName", type: "String", validator: (e2, t2, s2) => "string" == typeof e2 && 0 !== e2.length || (Ft({ api: t2, paramName: s2, desc: qt(s2) }), false) }, { name: "handler", type: "Function", validator: (e2, t2, s2) => "function" != typeof e2 ? (Ft({ api: t2, paramName: s2, desc: Kt() }), false) : ("" === e2.name && Ft({ api: t2, paramName: s2, desc: is() }), true) }], invite: { userID: as }, inviteSync: [{ ...ls, validator: (e2, t2, s2) => be(e2) ? !!ke(e2.userID) || (Ft({ api: t2, paramName: "options.userID", desc: $t() }), false) : (Ft({ api: t2, paramName: "options", desc: Qt() }), false) }, { name: "successCb", type: "Function", required: false, validator: (e2, t2, s2) => ($e(e2) && Ft({ api: t2, paramName: s2, desc: Kt() }), true) }, { name: "errorCb", type: "Function", required: false, validator: (e2, t2, s2) => ($e(e2) && Ft({ api: t2, paramName: s2, desc: Kt() }), true) }], inviteInGroup: { groupID: as, inviteeList: cs }, inviteInGroupSync: [{ ...ls, validator: (e2, t2, s2) => be(e2) ? ke(e2.groupID) ? !!Fe(e2.inviteeList) || (Ft({ api: t2, paramName: "options.inviteeList", desc: Ht() }), false) : (Ft({ api: t2, paramName: "options.groupID", desc: $t() }), false) : (Ft({ api: t2, paramName: "options", desc: Qt() }), false) }, { name: "successCb", type: "Function", required: false, validator: (e2, t2, s2) => ($e(e2) && Ft({ api: t2, paramName: s2, desc: Kt() }), true) }, { name: "errorCb", type: "Function", required: false, validator: (e2, t2, s2) => ($e(e2) && Ft({ api: t2, paramName: s2, desc: Kt() }), true) }], accept: { inviteID: as }, reject: { inviteID: as }, getSignalingInfo: [{ name: "message", ...ls, validator: (e2, t2, s2) => !Oe(e2) || (Ft({ api: t2, paramName: s2, desc: ss() }), false) }], modifyInvitation: { inviteID: as, data: as } };
-var fs = { login: 1, logout: 1, getLoginUser: 1, getServerTime: 1, on: 1, once: 1, off: 1, setLogLevel: 1, registerPlugin: 1, destroy: 1, isReady: 1, createTextMessage: 1, createTextAtMessage: 1, createImageMessage: 1, createAudioMessage: 1, createVideoMessage: 1, createCustomMessage: 1, createFaceMessage: 1, createFileMessage: 1, createLocationMessage: 1, createMergerMessage: 1, downloadMergerMessage: 1, createForwardMessage: 1, sendMessage: 1, resendMessage: 1, revokeMessage: 1, deleteMessage: 1, translateText: 1, convertVoiceToText: 1, modifyMessage: 1, sendMessageReadReceipt: 1, getGroupMessageReadMemberList: 1, getMessageReadReceiptList: 1, setMessageExtensions: 1, getMessageExtensions: 1, deleteMessageExtensions: 1, addMessageReaction: 1, removeMessageReaction: 1, getMessageReactions: 1, getAllUserListOfMessageReaction: 1, getMessageList: 1, findMessage: 1, getMessageListHopping: 1, setMessageRead: 1, setAllMessageRead: 1, getConversationList: 1, getConversationProfile: 1, deleteConversation: 1, setConversationDraft: 1, pinConversation: 1, getTotalUnreadMessageCount: 1, setConversationCustomData: 1, markConversation: 1, createConversationGroup: 1, getConversationGroupList: 1, deleteConversationGroup: 1, renameConversationGroup: 1, addConversationsToGroup: 1, deleteConversationsFromGroup: 1, clearHistoryMessage: 1, setMessageRemindType: 1, setAllReceiveMessageOpt: 1, getAllReceiveMessageOpt: 1, getGroupList: 1, getGroupProfile: 1, createGroup: 1, joinGroup: 1, updateGroupProfile: 1, quitGroup: 1, dismissGroup: 1, changeGroupOwner: 1, searchGroupByID: 1, getGroupApplicationList: 1, handleGroupApplication: 1, initGroupAttributes: 1, setGroupAttributes: 1, deleteGroupAttributes: 1, getGroupAttributes: 1, setGroupCounters: 1, increaseGroupCounter: 1, decreaseGroupCounter: 1, getGroupCounters: 1, getJoinedCommunityList: 1, createTopicInCommunity: 1, deleteTopicFromCommunity: 1, updateTopicProfile: 1, getTopicList: 1, getGroupMemberProfile: 1, getGroupMemberList: 1, addGroupMember: 1, deleteGroupMember: 1, setGroupMemberNameCard: 1, setGroupMemberMuteTime: 1, setGroupMemberRole: 1, setGroupMemberCustomField: 1, getGroupOnlineMemberCount: 1, markGroupMemberList: 1, getMyProfile: 1, getUserProfile: 1, updateMyProfile: 1, setSelfStatus: 1, getUserStatus: 1, subscribeUserStatus: 1, unsubscribeUserStatus: 1, getBlacklist: 1, addToBlacklist: 1, removeFromBlacklist: 1, searchCloudMessages: 1, searchCloudUsers: 1, searchCloudGroups: 1, searchCloudGroupMembers: 1, getFriendList: 1, addFriend: 1, deleteFriend: 1, checkFriend: 1, updateFriend: 1, getFriendProfile: 1, getFriendApplicationList: 1, refuseFriendApplication: 1, deleteFriendApplication: 1, acceptFriendApplication: 1, setFriendApplicationRead: 1, getFriendGroupList: 1, createFriendGroup: 1, renameFriendGroup: 1, deleteFriendGroup: 1, addToFriendGroup: 1, removeFromFriendGroup: 1, followUser: 1, unfollowUser: 1, getMyFollowingList: 1, getMyFollowersList: 1, getMutualFollowersList: 1, getUserFollowInfo: 1, checkFollowType: 1, callExperimentalAPI: 1, addSignalingListener: 1, removeSignalingListener: 1, invite: 1, inviteSync: 1, inviteInGroup: 1, inviteInGroupSync: 1, cancel: 1, accept: 1, reject: 1, getSignalingInfo: 1, modifyInvitation: 1 };
-var Ms = 1;
-var Is = 2;
-var Cs = 3;
-var Ts = 4;
-var ys = 6;
-var vs = 7;
-var Es = 8;
-var Ss = 10;
-var Ds = 11;
-var Rs = 12;
-var Ls = 13;
-var As = 14;
-var Os = 15;
-var Ns = 17;
-var Ps = 18;
-var Us = 19;
-var Gs = 20;
-var ks = 21;
-var ws = 23;
-var bs = 24;
-var Fs = 25;
-var $s = 26;
-var qs = 27;
-var xs = 28;
-var Vs = 29;
-var Bs = 30;
-var Ks = 31;
-var Hs = 32;
-var Ws = 33;
-var Ys = 34;
-var zs = 35;
-var js = 36;
-var Js = 37;
-var Xs = 38;
-var Zs = function(e2) {
- return { code: 0, data: e2 || {} };
-};
-var Qs = class extends Error {
- constructor(e2) {
- super();
- var { code: e2, message: t2, data: s2 } = e2;
- this.code = e2, t2 ? this.message = t2 : this._getErrMsg && (this.message = this._getErrMsg(this.code)), this.data = s2 || {};
- }
-};
-var ei = { NO_SDKAPPID: 2e3, NO_ACCOUNT_TYPE: 2001, NO_IDENTIFIER: 2002, NO_USERSIG: 2003, NO_TINYID: 2022, NO_A2KEY: 2023, USER_NOT_LOGGED_IN: 2024, REPEAT_LOGIN: 2025, COS_UNDETECTED: 2040, COS_GET_SIG_FAIL: 2041, MSG_SEND_FAIL: 2100, MSG_SEND_FAIL_NOT_IN_AV: 2101, MSG_INSTANCE_REQUIRED: 2105, MSG_INVALID_CONV_TYPE: 2106, MSG_F_IS_EMPTY: 2108, MSG_ONPROGRESS_ERR: 2109, MSG_REVOKE_FAIL: 2110, MSG_DELETE_FAIL: 2111, MSG_UNREAD_ALL_FAIL: 2112, READ_RECEIPT_MSG_LIST_EMPTY: 2114, MSG_SEND_GRP_WITH_TOPIC_FAIL: 2115, CANNOT_DELETE_GRP_SYSTEM_NOTICE: 2116, TRANSLATE_TEXT_FAIL: 2117, VOICE_TO_TEXT_FAIL: 2118, UNSUPPORTED_VOICE_FORMAT: 2119, MSG_I_SELECT_F_FIRST: 2251, MSG_I_TYPES_LIMIT: 2252, MSG_I_SIZE_LIMIT: 2253, MSG_A_UPLOAD_FAIL: 2300, MSG_A_SIZE_LIMIT: 2301, MSG_V_UPLOAD_FAIL: 2350, MSG_V_SIZE_LIMIT: 2351, MSG_V_TYPES_LIMIT: 2352, MSG_F_UPLOAD_FAIL: 2400, MSG_F_SELECT_F_FIRST: 2401, MSG_F_SIZE_LIMIT: 2402, MSG_F_URL_IS_EMPTY: 2403, MSG_MERGER_TYPE_INVALID: 2450, MSG_MERGER_KEY_INVALID: 2451, MSG_MERGER_DOWNLOAD_FAIL: 2452, MSG_FORWARD_TYPE_INVALID: 2453, MSG_FORWARD_INVALID_ELEMENTS: 2454, MSG_MODIFY_CONFLICT: 2480, MSG_MODIFY_DISABLED_IN_AV: 2481, CONV_NOT_FOUND: 2500, USER_OR_GRP_NOT_FOUND: 2501, CONV_UN_RECORDED_TYPE: 2502, INVALID_CONV_ID: 2503, ILLEGAL_GRP_TYPE: 2600, ILLEGAL_GRP_ID: 2602, CANNOT_FIND_GRP: 2603, CANNOT_CHANGE_OWNER_IN_AV: 2620, CANNOT_CHANGE_OWNER_TO_SELF: 2621, MEMBER_NOT_IN_GRP: 2623, JOIN_GRP_FAIL: 2660, CANNOT_ADD_MEMBER_IN_AV: 2661, CANNOT_JOIN_NON_AV_WITHOUT_LOGIN: 2662, NOT_OWNER: 2681, INVALID_MEMBER_ROLE: 2683, CANNOT_SET_SELF_MEMBER_ROLE: 2684, CANNOT_MUTE_SELF: 2685, BAN_DURATION_INVALID: 2686, OPERATION_NOT_SUPPORTED_IN_AV: 2687, NOT_MY_FRIEND: 2700, ALREADY_MY_FRIEND: 2701, FRIEND_GRP_EXISTED: 2710, FRIEND_GRP_NOT_EXIST: 2711, FRIEND_APPLICATION_NOT_EXIST: 2716, UPDATE_PROFILE_INVALID_PARAM: 2721, UPDATE_PROFILE_NO_KEY: 2722, CANNOT_ADD_SELF_TO_BLACKLIST: 2742, NETWORK_ERROR: 2800, NETWORK_TIMEOUT: 2801, NO_NETWORK: 2805, UNCAUGHT_ERROR: 2903, INVALID_OPERATION: 2905, INVALID_TRTC_CMD: 2995, OVER_FREQUENCY_LIMIT: 2996, NO_PROTOCOL: 2997, NO_MODULE: 2998, SDK_IS_NOT_READY: 2999, LOGGING_IN: 3e3, LOGIN_FAILED: 3001, KICKED_OUT_MULT_DEVICE: 3002, KICKED_OUT_MULT_ACCOUNT: 3003, KICKED_OUT_USERSIG_EXPIRED: 3004, LOGGED_OUT: 3005, KICKED_OUT_REST_API: 3006, ILLEGAL_TOPIC_ID: 3021, NO_USE: 3122, PROFANITY_FOUND: 3123, OPTIONS_IS_EMPTY: 3153, MSG_A2KEY_EXPIRED: 20002, ACCOUNT_A2KEY_EXPIRED: 70001, HELLO_ANSWER_KICKED_OUT: 1002, OPEN_SERVICE_OVERLOAD_ERROR: 60022, SIGNALING_INVALID_INVITE_ID: 8010, SIGNALING_NO_PERMISSION: 8011, SIGNALING_ALREADY_EXISTS: 8012, INVALID_CANCEL_MESSAGE: 8020 };
-var ti = null;
-var si = function(e2) {
- ti = e2;
-};
-var ii = function(e2) {
- return Promise.resolve(Zs(e2));
-};
-var ni = function(t2, s2 = false) {
- if (t2 instanceof Qs)
- return s2 && null !== ti && ti.emit(e.ERROR, t2), Promise.reject(t2);
- if (t2 instanceof Error) {
- const t3 = new Qs({ code: ei.UNCAUGHT_ERROR });
- return s2 && null !== ti && ti.emit(e.ERROR, t3), Promise.reject(t3);
- }
- if ($e(t2) || $e(t2.code))
- return Promise.reject(new Qs({ code: ei.UNCAUGHT_ERROR }));
- t2 = new Qs(t2);
- return s2 && null !== ti && ti.emit(e.ERROR, t2), Promise.reject(t2);
-};
-var oi = class {
- constructor(e2) {
- this._m = e2, this._n = "";
- }
- isLoggedIn() {
- return this._m.get(Rs).isLoggedIn();
- }
- isOversea() {
- return this._m.get(Rs).isOversea();
- }
- isPrivateNetWork() {
- const e2 = this._m.get(Rs);
- return e2.isPrivateNetWork() && !e2.getFileDownloadProxy();
- }
- getFileDownloadProxy() {
- return this._m.get(Rs).getFileDownloadProxy();
- }
- getDowloadFileAuthKey() {
- return this._m.get(Rs).getDowloadFileAuthKey();
- }
- getMyUserID() {
- return this._m.get(Rs).getUserID();
- }
- getMyTinyID() {
- return this._m.get(Rs).getTinyID();
- }
- getSDKAppID() {
- return this._m.get(Rs).getSDKAppID();
- }
- isIntl() {
- return this._m.get(Rs).isIntl();
- }
- isUsingChatCore() {
- return this._m.get(Rs).isUsingChatCore();
- }
- isDevMode() {
- return this._m.get(Rs).isDevMode();
- }
- get(e2) {
- return this._m.get(e2);
- }
- getPlatform() {
- return V;
- }
- getCloudConfig(e2) {
- return this._m.get(ws).getCloudConfig(e2);
- }
- emitOEvt(e2, t2) {
- this._m.getOEmitInst().emit(e2, t2);
- }
- emitIEvt(e2, t2) {
- this._m.getIEmitInst().emit(e2, t2);
- }
- getIEmitInst() {
- return this._m.getIEmitInst();
- }
- req(e2) {
- return this._m.get(Gs).req(e2);
- }
- canIUse(e2) {
- return this._m.get(qs).canIUse(e2);
- }
- getErrMsg(e2, t2, s2) {
- return this._m.getErrMsg(e2, t2, s2);
- }
- warn(e2, t2, s2) {
- e2 = this.getErrMsg(e2, t2, s2);
- e2 && Ce.w(e2);
- }
- noUse(e2) {
- var t2 = ei.NO_USE;
- return ni({ code: t2, message: this.getErrMsg(t2, e2) });
- }
-};
-var ri = { LOGIN: "wslogin", LOGOUT: "wslogout", HELLO: "wshello", KICK_OTHER: "KickOther", SYNC_UNREAD_MSG: "getmsg", SEND_C2C_MSG: "sendmsg", SEND_GRP_MSG: "send_group_msg", GET_USER_PROFILE: "portrait_get_all", UPDATE_MY_PROFILE: "portrait_set", GET_BL: "black_list_get", ADD_TO_BL: "black_list_add", RM_FROM_BL: "black_list_delete", GET_FD_LIST: "friend_get", GET_FD_PROFILE: "friend_get_specified", CHECK_FD: "friend_check", DEL_FD: "friend_delete", ADD_FD: "friend_add", UPDATE_FD: "friend_update", RESPOND_FD_APPLICATION: "friend_response", GET_FD_APPLICATION_LIST: "pendency_get", DEL_FD_APPLICATION: "pendency_delete", REFUSE_FD_APPLICATION: "pendency_refuse", REPORT_FD_APPLICATION: "pendency_report", GET_FD_GRP_LIST: "group_get", CREATE_FD_GRP: "group_add", DEL_FD_GRP: "group_delete", UPDATE_FD_GRP: "group_update", REVOKE_C2C_MSG: "msgwithdraw", SET_C2C_MSG_READ: "msgreaded", SET_C2C_PEER_MUTE_NOTIFICATIONS: "set_c2c_peer_mute_notifications", GET_C2C_PEER_MUTE_NOTIFICATIONS: "get_c2c_peer_mute_notifications", GET_C2C_ROAMING_MSG: "getroammsg", GET_C2C_PEER_READ_TIME: "get_peer_read_time", DEL_C2C_MSG: "delete_c2c_msg_ramble", MODIFY_C2C_MSG: "modify_c2c_msg", MODIFY_C2C_MSG_EXT: "set_key_values", GET_C2C_MSG_EXT: "get_key_values", ADD_C2C_MSG_REACTION: "reaction_add", RM_C2C_MSG_REACTION: "reaction_del", GET_C2C_MSG_REACTIONS: "reaction_multi_stat", GET_C2C_MSG_REACTION_USER_LIST: "reaction_iterate", PAGING_GET_CONV_LIST: "page_get", DEL_CONV: "batch_delete", CLEAR_HISTORY_MSG: "clear_msg", PIN_CONV: "top", DEL_GROUP_AT_TIPS: "deletemsg", SET_CONV_CUSTOM_DATA: "set_conv_custom_data", MARK_CONV: "mark_contact", CREATE_CONV_GRP: "create_contact_group", DEL_CONV_GRP: "del_contact_group", RENAME_CONV_GRP: "update_contact_group", ADD_CONV_TO_GRP: "add_conv_to_group", DEL_CONV_FROM_GRP: "del_conv_from_group", GET_CONV_GRP_LIST: "get_contact_group", SEARCH_CONV_GRP_MARK: "search_contact_group", GET_GRP_LIST: "get_joined_group_list", GET_GRP_PROFILE: "get_group_self_member_info", CREATE_GRP: "create_group", DISMISS_GRP: "destroy_group", UPDATE_GRP_PROFILE: "modify_group_base_info", APPLY_JOIN_GRP: "apply_join_group", APPLY_JOIN_GRP_NOAUTH: "apply_join_group_noauth", QUIT_GRP: "quit_group", SEARCH_GRP: "get_group_public_info", CHANGE_GRP_OWNER: "change_group_owner", HANDLE_GRP_APPLICATION: "handle_apply_join_group", HANDLE_INVITE_JOIN_GRP: "handle_invite_join_permission_group", HANDLE_GRP_INVITATION: "handle_invite_join_group", REVOKE_GRP_MSG: "group_msg_recall", SET_GRP_MSG_READ: "msg_read_report", SET_ALL_MSG_READ: "read_all_unread_msg", GET_GRP_ROAMING_MSG: "group_msg_get", GET_READ_RECEIPT: "get_group_msg_receipt", SEND_READ_RECEIPT: "group_msg_receipt", SEND_C2C_READ_RECEIPT: "c2c_msg_read_receipt", GET_READ_RECEIPT_DETAIL: "get_group_msg_receipt_detail", GET_GRP_PENDENCY: "get_pendency", DEL_GRP_SYSTEM_NOTICE: "deletemsg", AV_POLLING: "get_msg", AV_NOAUTH_POLLING: "get_msg_noauth", GET_ONLINE_MBR_NUM: "get_online_member_num", DEL_GRP_MSG: "delete_group_ramble_msg_by_seq", MODIFY_GRP_MSG: "modify_group_msg", SET_GRP_ATTR: "set_group_attr", MODIFY_GRP_ATTR: "modify_group_attr", DEL_GRP_ATTR: "delete_group_attr", CLEAR_GRP_ATTR: "clear_group_attr", GET_GRP_ATTR: "get_group_attr", MODIFY_GRP_MSG_EXT: "group_set_key_values", GET_GRP_MSG_EXT: "group_get_key_values", GET_GRP_NOTIFY: "batch_get_group_notify", UPDATE_GRP_COUNTER: "update_group_counter", GET_GRP_COUNTER: "get_group_counter", ADD_GRP_MSG_REACTION: "group_reaction_add", RM_GRP_MSG_REACTION: "group_reaction_del", GET_GRP_MSG_REACTIONS: "group_reaction_multi_stat", GET_GRP_MSG_REACTION_USER_LIST: "group_reaction_iterate", GET_GRP_MBR_LIST: "get_group_member_info", GET_AV_MBR_LIST: "get_members", GET_GRP_MBR_PROFILE: "get_specified_group_member_info", ADD_GRP_MBR: "add_group_member", DEL_GRP_MBR: "delete_group_member", BAN_AV_MBR: "ban_group_member", MODIFY_GRP_MBR_INFO: "modify_group_member_info", MARK_AV_MBR_INFO: "modify_user_info", COS_SIGN: "cos", COS_PRE_SIG: "pre_sig", SIMPLE_COS_PRE_SIG: "simple_sig", GET_IMAGE_INFO: "get_imageinfo", GET_IP: "get_final_ip", VIDEO_COVER: "video_cover", SSO_STAT: "tim_web_report_v2", PING: "alive", MSG_PUSH: "msg_push", CS: "query", GRP_CS: "query_grp", MBR_CS: "query_grp_member", USER_CS: "query_user", MULTI_MSG_PUSH: "multi_msg_push_ws", MSG_PUSH_ACK: "ws_msg_push_ack", STATUS_FORCE_OFFLINE: "stat_forceoffline", UPLOAD_MERGER_MSG: "save_relay_json_msg", DOWNLOAD_MERGER_MSG: "get_relay_json_msg", FETCH_CLOUD_CTRL_CONFIG: "fetch_config", PUSHED_CLOUD_CTRL_CONFIG: "push_configv2", FETCH_COMMERCIAL_CONFIG: "fetch_imsdk_purchase_bitsv2", PUSHED_COMMERCIAL_CONFIG: "push_imsdk_purchase_bitsv2", OVERLOAD_NOTIFY: "notify2", CREATE_TOPIC: "create_topic", DEL_TOPIC: "destroy_topic", UPDATE_TOPIC_PROFILE: "modify_topic", GET_TOPIC_LIST: "get_topic", SET_SELF_STATUS: "ws_set_custom_status", GET_USER_STATUS: "ws_get_user_status", SUB_USER_STATUS: "ws_status_subscribe", UNSUB_USER_STATUS: "ws_status_unsubscribe", STAT_BACKGROUND: "ws_stat_background", STAT_FOREGROUND: "ws_stat_foreground", SET_TOKEN: "ws_stat_settoken", PUSH_REPORT: "uniapp_sdk_report", GET_PROFANITY_LIST: "get_local_words", TRANSLATE_TEXT: "ws_batch_trans_text", VOICE_TO_TEXT: "ws_sentence_recognition", FOLLOW: "follow_add", UNFOLLOW: "follow_delete", GET_FOLLOW: "follow_get", GET_FOLLOW_INFO: "follow_get_info", CHECK_FOLLOW_TYPE: "follow_check", SET_ALL_RECEIVE_MSG_OPT: "ws_set_do_not_disturb", GET_ALL_RECEIVE_MSG_OPT: "ws_get_do_not_disturb" };
-var ai = "networkRTT";
-var ci = "messageE2EDelay";
-var li = "sendMessageC2C";
-var ui = "sendMessageGroup";
-var di = "sendMessageGroupAV";
-var _i = "sendMessageRichMedia";
-var hi = "cosUpload";
-var pi = "messageReceivedGroup";
-var gi = "messageReceivedGroupAVPush";
-var mi = "messageReceivedGroupAVPull";
-var fi = { [ai]: 2, [ci]: 3, [li]: 4, [ui]: 5, [di]: 6, [_i]: 7, [pi]: 8, [gi]: 9, [mi]: 10, [hi]: 11 };
-var Mi = { info: 4, warning: 5, error: 6 };
-var Ii = { wifi: 1, "2g": 2, "3g": 3, "4g": 4, "5g": 5, unknown: 6, none: 7, online: 8 };
-var Ci = { login: 4, plugin_search: 16, plugin_translate: 16, plugin_voice_to_text: 16, plugin_cs: 16, plugin_push: 16, plugin_bot: 16, plugin_emoji_reaction: 16, tui_key_features: 16 };
-var Ti = class _Ti {
- constructor(e2) {
- this._n = "SSOLogData", this.eventType = Ci[e2] || 0, this.timestamp = 0, this.networkType = 8, this.code = 0, this.message = "", this.moreMessage = "", this.extension = e2, this.costTime = 0, this.duplicate = false, this.level = 4, this.uiPlatform = void 0, this._sentFlag = false, this._startts = pe();
- }
- static bindEventStatModule(e2) {
- _Ti.prototype._eventStatModule = e2;
- }
- static bindNetMonitorModule(e2) {
- _Ti.prototype._netMonitorModule = e2;
- }
- updateTimeStamp() {
- this.timestamp = pe();
- }
- start(e2) {
- return this._startts = e2, this;
- }
- end(e2 = false) {
- if (!this._sentFlag) {
- if (this._netMonitorModule) {
- const e3 = this._netMonitorModule.getNetworkType();
- this.setNetworkType(e3);
- }
- var t2 = pe();
- 0 === this.costTime && (this.costTime = t2 - this._startts), this.setMoreMessage(`startts:${this._startts} endts:` + t2), e2 ? (this._sentFlag = true, this._eventStatModule && this._eventStatModule.pushIn(this)) : setTimeout(() => {
- this._sentFlag = true, this._eventStatModule && this._eventStatModule.pushIn(this);
- }, 0);
- }
- }
- setError(e2) {
- if (!(e2 instanceof Error))
- return Ce.w(this._n + ".setError value not instanceof Error, please check!"), this;
- if (this._sentFlag)
- return this;
- let t2 = true;
- if (t2 = this._netMonitorModule ? this._netMonitorModule.isOnline() : t2)
- e2.code && this.setCode(e2.code), e2.message && this.setMoreMessage(e2.message);
- else {
- const e3 = ei.NO_NETWORK;
- this.setCode(e3);
- }
- return this.setLevel("error"), this;
- }
- setCode(e2) {
- return $e(e2) || this._sentFlag || ("ECONNABORTED" === e2 && (this.code = 103), Ge(e2) ? this.code = e2 : Ce.w(this._n + ".setCode value not a number, please check!", e2, typeof e2)), this;
- }
- setMessage(e2) {
- return $e(e2) || this._sentFlag || (Ge(e2) && (this.message = e2.toString()), ke(e2) && (this.message = e2)), this;
- }
- setCostTime(e2) {
- return this.costTime = e2, this;
- }
- setLevel(e2) {
- return $e(e2) || this._sentFlag || (this.level = Mi[e2]), this;
- }
- setMoreMessage(e2) {
- return Oe(this.moreMessage) ? this.moreMessage = "" + e2 : this.moreMessage += " " + e2, this;
- }
- setNetworkType(e2) {
- return $e(e2) ? Ce.w(this._n + ".setNetworkType value is undefined, please check!") : (e2 = Ii[e2.toLowerCase()], $e(e2) || (this.networkType = e2)), this;
- }
- getStartTs() {
- return this._startts;
- }
- setUIPlatform(e2) {
- return this.uiPlatform = e2, this;
- }
- setExtension(e2) {
- return this.extension = e2, this;
- }
- setEventType(e2) {
- return this.eventType = e2, this;
- }
-};
-var yi = class {
- constructor(e2) {
- this.type = t.MSG_TEXT, this.content = { text: e2.text || "" };
- }
- setText(e2) {
- this.content.text = e2;
- }
- sendable() {
- return 0 !== this.content.text.length;
- }
-};
-function vi(t2, s2, i2, n2 = []) {
- if (t2) {
- let e2 = t2;
- return s2 && (t2.startsWith("http://") ? e2 = t2.replace(/^http:\/\/[^/]+/, s2) : t2.startsWith("https://") && (e2 = t2.replace(/^https:\/\/[^/]+/, s2))), e2 = i2 && -1 === e2.indexOf("authKey=") && Di(e2, n2) ? -1 < e2.indexOf("?") ? e2 + "&authKey=" + i2 : e2 + "?authKey=" + i2 : e2;
- }
-}
-function Ei(e2, s2, i2 = []) {
- if (e2 === t.MSG_VIDEO)
- Di((s2[0].content || s2[0].payload).snapshotUrl, i2) && (s2[0].content ? (s2[0].content.snapshotUrl = Si(s2[0].content.snapshotUrl), s2[0].content.thumbUrl = Si(s2[0].content.thumbUrl)) : (s2[0].payload.snapshotUrl = Si(s2[0].payload.snapshotUrl), s2[0].payload.thumbUrl = Si(s2[0].payload.thumbUrl)));
- else if (e2 === t.MSG_FILE)
- Di((s2[0].content || s2[0].payload).fileUrl, i2) && (s2[0].content ? s2[0].content.fileUrl = Si(s2[0].content.fileUrl) : s2[0].payload.fileUrl = Si(s2[0].payload.fileUrl));
- else if (e2 === t.MSG_MERGER) {
- const { downloadKey: e3 = "", messageList: t2 = [] } = s2[0].content || s2[0].payload;
- Oe(e3) && t2.forEach((e4) => {
- Ei(e4.messageBody[0].type, e4.messageBody);
- });
- }
- return s2;
-}
-function Si(e2) {
- if (!e2)
- return e2;
- if (-1 === e2.indexOf("authKey="))
- return e2;
- const t2 = e2.split("?"), s2 = t2[1].split("&");
- let i2 = 0;
- for (let e3 = 0; e3 < s2.length; e3++)
- if (-1 < s2[e3].indexOf("authKey=")) {
- i2 = e3;
- break;
- }
- return s2.splice(i2, 1), 0 < s2.length ? t2[0] + "?" + s2.join("&") : t2[0];
-}
-function Di(e2, t2) {
- let s2 = false;
- if (e2) {
- const i2 = e2.match(/:\/\/([0-9]?\.)?(.[^/:]+)/), n2 = i2 && i2[2] || "";
- if (n2.includes("rich-dev"))
- return true;
- for (let e3 = 0; e3 < t2.length; e3++)
- if (n2.endsWith(t2[e3])) {
- s2 = true;
- break;
- }
- }
- return s2;
-}
-var Ri = class {
- constructor(e2, s2, i2, n2) {
- this._imageMemoryURL = "", this._fileDownloadProxy = s2, this._authKey = i2, this._fileDNList = n2, k || b ? this.createImageDataASURL(e2.file) : this.createImageDataASURLInWeb(e2.file), this._initImageInfoModel(), this.type = t.MSG_IMAGE, this._percent = 0, this.content = { imageFormat: e2.imageFormat || Te.UNKNOWN, uuid: e2.uuid, imageInfoArray: [] }, this.initImageInfoArray(e2.imageInfoArray), this._autoFixUrl();
- }
- _initImageInfoModel() {
- const t2 = this;
- this._ImageInfoModel = function(e2) {
- this.instanceID = je(9999999), this.sizeType = e2.type || 0, this.type = 0, this.size = e2.size || 0, this.width = e2.width || 0, this.height = e2.height || 0, this.imageUrl = e2.imageUrl || e2.url || "", this.url = vi(e2.url || t2._imageMemoryURL, t2._fileDownloadProxy, t2._authKey, t2._fileDNList);
- }, this._ImageInfoModel.prototype = { setSizeType(e2) {
- this.sizeType = e2;
- }, setType(e2) {
- this.type = e2;
- }, setImageUrl(e2) {
- e2 && (this.imageUrl = e2);
- }, getImageUrl() {
- return this.imageUrl;
- } };
- }
- initImageInfoArray(e2) {
- let t2 = 0, s2 = null, i2;
- for (; t2 <= 2; )
- i2 = $e(e2) || $e(e2[t2]) ? { type: 0, size: 0, width: 0, height: 0, url: "" } : e2[t2], (s2 = new this._ImageInfoModel(i2)).setSizeType(t2 + 1), s2.setType(t2), this.addImageInfo(s2), t2++;
- this.updateAccessSideImageInfoArray();
- }
- updateImageInfoArray(t2) {
- var s2 = this.content.imageInfoArray.length;
- let i2;
- for (let e2 = 0; e2 < s2; e2++)
- i2 = this.content.imageInfoArray[e2], t2[e2].size && (i2.size = t2[e2].size), t2[e2].url && i2.setImageUrl(t2[e2].url), t2[e2].width && (i2.width = t2[e2].width), t2[e2].height && (i2.height = t2[e2].height);
- }
- _autoFixUrl() {
- var t2 = this.content.imageInfoArray.length;
- let s2 = "", i2 = "";
- const n2 = ["http", "https"];
- let o2 = null;
- for (let e2 = 0; e2 < t2; e2++)
- this.content.imageInfoArray[e2].url && ("" !== (o2 = this.content.imageInfoArray[e2]).imageUrl && (i2 = o2.imageUrl.slice(0, o2.imageUrl.indexOf("://") + 1), s2 = o2.imageUrl.slice(o2.imageUrl.indexOf("://") + 1), n2.indexOf(i2) < 0 && (i2 = "https:"), this.content.imageInfoArray[e2].setImageUrl([i2, s2].join(""))));
- }
- updatePercent(e2) {
- this._percent = e2, 1 < this._percent && (this._percent = 1);
- }
- updateImageFormat(e2) {
- this.content.imageFormat = Te[e2.toUpperCase()] || Te.UNKNOWN;
- }
- createImageDataASURLInWeb(e2) {
- void 0 !== e2 && 0 < e2.files.length && (this._imageMemoryURL = window.URL.createObjectURL(e2.files[0]));
- }
- createImageDataASURL(e2) {
- e2 && e2.url && (this._imageMemoryURL = e2.url);
- }
- replaceImageInfo(e2, t2) {
- this.content.imageInfoArray[t2] instanceof this._ImageInfoModel || (this.content.imageInfoArray[t2] = e2);
- }
- addImageInfo(e2) {
- 3 <= this.content.imageInfoArray.length || this.content.imageInfoArray.push(e2);
- }
- updateAccessSideImageInfoArray() {
- var e2 = this.content.imageInfoArray, { width: t2 = 0, height: s2 = 0 } = e2[0];
- 0 !== t2 && 0 !== s2 && (mt(e2), Object.assign(e2[2], gt({ originWidth: t2, originHeight: s2, min: 720 })));
- }
- sendable() {
- return 0 !== this.content.imageInfoArray.length && "" !== this.content.imageInfoArray[0].imageUrl && 0 !== this.content.imageInfoArray[0].size;
- }
-};
-var Li = class {
- constructor(e2) {
- this.type = t.MSG_FACE, this.content = e2 || null;
- }
- sendable() {
- return null !== this.content;
- }
-};
-var Ai = class {
- constructor(e2, s2, i2, n2) {
- this.type = t.MSG_AUDIO, this._percent = 0, this.content = { downloadFlag: 2, second: e2.second, size: e2.size, url: vi(e2.url, s2, i2, n2), remoteAudioUrl: e2.url || "", uuid: e2.uuid };
- }
- updatePercent(e2) {
- this._percent = e2, 1 < this._percent && (this._percent = 1);
- }
- updateAudioUrl(e2) {
- this.content.remoteAudioUrl = e2;
- }
- sendable() {
- return "" !== this.content.remoteAudioUrl;
- }
-};
-var Oi = { from: true, groupID: true, groupName: true, to: true };
-var Ni = class {
- constructor(e2) {
- this.type = t.MSG_GRP_TIP, this.content = {}, this._initContent(e2);
- }
- _initContent(t2) {
- Object.keys(t2).forEach((e2) => {
- switch (e2) {
- case "remarkInfo":
- break;
- case "groupProfile":
- this.content.groupProfile = {}, this._initGroupProfile(t2[e2]);
- break;
- case "operatorInfo":
- this.content.operatorInfo = {}, this._initOperatorInfo(t2[e2]);
- break;
- case "memberInfoList":
- case "msgMemberInfo":
- this._updateMemberList(t2[e2]);
- break;
- case "memberExtraInfo":
- case "onlineMemberInfo":
- break;
- case "memberNum":
- this.content[e2] = t2[e2], this.content.memberCount = t2[e2];
- break;
- case "newGroupProfile":
- this.content.newGroupProfile = {}, this._initNewGroupProfile(t2[e2]);
- break;
- default:
- this.content[e2] = t2[e2];
- }
- }), this.content.userIDList || (this.content.userIDList = [this.content.operatorID]);
- }
- _initGroupProfile(t2) {
- var s2 = Object.keys(t2);
- for (let e2 = 0; e2 < s2.length; e2++) {
- var i2 = s2[e2];
- Oi[i2] && (this.content.groupProfile[i2] = t2[i2]);
- }
- }
- _initOperatorInfo(t2) {
- var s2 = Object.keys(t2);
- for (let e2 = 0; e2 < s2.length; e2++) {
- var i2 = s2[e2];
- this.content.operatorInfo[i2] = t2[i2];
- }
- }
- _updateMemberList(e2) {
- Oe(this.content.memberList) ? this.content.memberList = e2 : this.content.memberList.forEach((t2) => {
- e2.forEach((e3) => {
- t2.userID === e3.userID && Object.assign(t2, e3);
- });
- });
- }
- _initNewGroupProfile(t2) {
- var s2 = Object.keys(t2);
- for (let e2 = 0; e2 < s2.length; e2++) {
- var i2 = s2[e2];
- this.content.newGroupProfile[i2] = "muteAllMembers" !== i2 ? t2[i2] : 1 === t2[i2];
- }
- }
-};
-var Pi = { from: true, groupID: true, groupName: true, to: true, groupType: true };
-var Ui = class {
- constructor(e2) {
- this.type = t.MSG_GRP_SYS_NOTICE, this.content = {}, this._initContent(e2);
- }
- _initContent(t2) {
- Object.keys(t2).forEach((e2) => {
- switch (e2) {
- case "memberInfoList":
- break;
- case "remarkInfo":
- this.content.handleMessage = t2[e2];
- break;
- case "groupProfile":
- this.content.groupProfile = {}, this._initGroupProfile(t2[e2]);
- break;
- default:
- this.content[e2] = t2[e2];
- }
- });
- }
- _initGroupProfile(t2) {
- var s2 = Object.keys(t2);
- for (let e2 = 0; e2 < s2.length; e2++) {
- var i2 = s2[e2];
- Pi[i2] && ("groupName" === i2 ? this.content.groupProfile.name = t2[i2] : this.content.groupProfile[i2] = t2[i2]);
- }
- }
-};
-var Gi = class {
- constructor(e2, s2, i2, n2) {
- this.type = t.MSG_FILE, this._percent = 0;
- var o2 = this._getFileInfo(e2);
- this.content = { downloadFlag: 2, fileUrl: vi(e2.url || e2.fileUrl, s2, i2, n2) || "", uuid: e2.uuid, fileName: o2.name || "", fileSize: o2.size || 0 };
- }
- _getFileInfo(e2) {
- if (!$e(e2.fileName) && !$e(e2.fileSize))
- return { size: e2.fileSize, name: e2.fileName };
- const t2 = e2.file.files[0];
- if (P) {
- if (t2.path && -1 !== t2.path.indexOf(".")) {
- const e3 = t2.path.slice(t2.path.lastIndexOf(".") + 1).toLowerCase();
- t2.type = e3, t2.name || (t2.name = je(999999) + "." + e3);
- }
- t2.name || (t2.type = "", t2.name = t2.path.slice(t2.path.lastIndexOf("/") + 1).toLowerCase()), t2.suffix && (t2.type = t2.suffix), t2.url || (t2.url = t2.path);
- }
- return { size: t2.size, name: t2.name };
- }
- updatePercent(e2) {
- this._percent = e2, 1 < this._percent && (this._percent = 1);
- }
- updateFileUrl(e2) {
- this.content.fileUrl = e2;
- }
- sendable() {
- return "" !== this.content.fileUrl && "" !== this.content.fileName && 0 !== this.content.fileSize;
- }
-};
-var ki = class {
- constructor(e2) {
- this.type = t.MSG_CUSTOM, this.content = { data: e2.data || "", description: e2.description || "", extension: e2.extension || "" };
- }
- setData(e2) {
- return this.content.data = e2, this;
- }
- setDescription(e2) {
- return this.content.description = e2, this;
- }
- setExtension(e2) {
- return this.content.extension = e2, this;
- }
- sendable() {
- return 0 !== this.content.data.length || 0 !== this.content.description.length || 0 !== this.content.extension.length;
- }
-};
-var wi = class {
- constructor(e2, s2, i2, n2) {
- this.type = t.MSG_VIDEO, this._percent = 0, this.content = { remoteVideoUrl: e2.remoteVideoUrl || e2.videoUrl || "", videoFormat: e2.videoFormat, videoSecond: parseInt(e2.videoSecond, 10), videoSize: e2.videoSize, videoUrl: vi(e2.videoUrl, s2, i2, n2), videoDownloadFlag: 2, videoUUID: e2.videoUUID, thumbUUID: e2.thumbUUID, thumbFormat: e2.thumbFormat, thumbWidth: e2.thumbWidth, snapshotWidth: e2.thumbWidth, thumbHeight: e2.thumbHeight, snapshotHeight: e2.thumbHeight, thumbSize: e2.thumbSize, snapshotSize: e2.thumbSize, thumbDownloadFlag: 2, thumbUrl: vi(e2.thumbUrl, s2, i2, n2), snapshotUrl: vi(e2.thumbUrl, s2, i2, n2) };
- }
- updatePercent(e2) {
- this._percent = e2, 1 < this._percent && (this._percent = 1);
- }
- updateVideoUrl(e2) {
- e2 && (this.content.remoteVideoUrl = e2);
- }
- updateSnapshotInfo(e2) {
- var { snapshotUrl: e2, snapshotWidth: t2, snapshotHeight: s2 } = e2;
- Oe(e2) || (this.content.thumbUrl = this.content.snapshotUrl = e2), Oe(t2) || (this.content.thumbWidth = this.content.snapshotWidth = Number(t2)), Oe(s2) || (this.content.thumbHeight = this.content.snapshotHeight = Number(s2));
- }
- sendable() {
- return "" !== this.content.remoteVideoUrl;
- }
-};
-var bi = class {
- constructor(e2) {
- this.type = t.MSG_LOCATION;
- var { description: e2, longitude: s2, latitude: i2 } = e2;
- this.content = { description: e2, longitude: s2, latitude: i2 };
- }
- sendable() {
- return true;
- }
-};
-var Fi = class {
- constructor(e2, s2, i2, n2) {
- var o2, r2;
- this.from = e2.from, this.messageSender = e2.from, this.time = e2.time, this.messageSequence = e2.sequence, this.clientSequence = e2.clientSequence || e2.sequence, this.messageRandom = e2.random, this.cloudCustomData = e2.cloudCustomData || "", this.clientTime = e2.clientTime || void 0, e2.ID ? (this.ID = e2.ID || "", this.nick = e2.nick || "", this.avatar = e2.avatar || "", e2.messageBody ? this.messageBody = JSON.parse(JSON.stringify(e2.messageBody)) : this.messageBody = [{ type: e2.type, payload: e2.payload }], e2.conversationType ? e2.conversationType.startsWith(t.CONV_C2C) ? this.receiverUserID = e2.to : e2.conversationType.startsWith(t.CONV_GROUP) && (this.receiverGroupID = e2.to) : e2.receiverGroupID ? this.receiverGroupID = e2.receiverGroupID : e2.receiverUserID && (this.receiverUserID = e2.receiverUserID), this.messageReceiver = e2.to || e2.messageReceiver) : (this.nick = e2.nick || "", this.avatar = e2.avatar || "", this.messageBody = [], o2 = e2.elements[0].type, r2 = e2.elements[0].content, this._patchRichMediaPayload(o2, r2), this._updateRichMediaDownloadUrl(o2, r2, s2, i2, n2), o2 === t.MSG_MERGER ? this.messageBody.push({ type: o2, payload: new $i(r2, s2, i2, n2).content }) : this.messageBody.push({ type: o2, payload: r2 }), e2.groupID && (this.receiverGroupID = e2.groupID, this.messageReceiver = e2.groupID), e2.to && (this.receiverUserID = e2.to, this.messageReceiver = e2.to), this.ID = `${e2.tinyID}-${e2.clientTime}-` + e2.random);
- }
- _patchRichMediaPayload(e2, s2) {
- e2 === t.MSG_IMAGE ? s2.imageInfoArray.forEach((e3) => {
- !e3.imageUrl && e3.url && (e3.imageUrl = e3.url, e3.sizeType = e3.type, 1 === e3.type ? e3.type = 0 : 3 === e3.type && (e3.type = 1));
- }) : e2 === t.MSG_VIDEO ? !s2.remoteVideoUrl && s2.videoUrl && (s2.remoteVideoUrl = s2.videoUrl) : e2 === t.MSG_AUDIO ? !s2.remoteAudioUrl && s2.url && (s2.remoteAudioUrl = s2.url) : e2 === t.MSG_FILE && !s2.fileUrl && s2.url && (s2.fileUrl = s2.url, s2.url = void 0);
- }
- _updateRichMediaDownloadUrl(e2, s2, i2, n2, o2) {
- (i2 || n2) && (e2 === t.MSG_IMAGE ? s2.imageInfoArray.forEach((e3) => {
- e3.url = vi(e3.url, i2, n2, o2);
- }) : e2 === t.MSG_VIDEO ? (s2.videoUrl = vi(s2.videoUrl, i2, n2, o2), s2.snapshotUrl = vi(s2.thumbUrl, i2, n2, o2), s2.snapshotHeight = s2.thumbHeight, s2.snapshotWidth = s2.thumbWidth) : e2 === t.MSG_AUDIO ? s2.url = vi(s2.url, i2, n2, o2) : e2 === t.MSG_FILE && (s2.fileUrl = vi(s2.fileUrl, i2, n2, o2)));
- }
-};
-var $i = class {
- constructor(e2, s2, i2, n2) {
- if (this.type = t.MSG_MERGER, this.content = { downloadKey: "", pbDownloadKey: "", messageList: [], title: "", abstractList: [], compatibleText: "", version: 0, layersOverLimit: false }, e2.downloadKey) {
- const { downloadKey: t2, pbDownloadKey: s3, title: i3, abstractList: n3, compatibleText: o2, version: r2 } = e2;
- this.content.downloadKey = t2, this.content.pbDownloadKey = s3, this.content.title = i3, this.content.abstractList = n3, this.content.compatibleText = o2, this.content.version = r2 || 0;
- } else if (Oe(e2.messageList))
- 1 === e2.layersOverLimit && (this.content.layersOverLimit = true);
- else {
- const { messageList: t2, title: a2, abstractList: c2, compatibleText: l2, version: _2 } = e2, d2 = [];
- t2.forEach((e3) => {
- Oe(e3) || (e3 = new Fi(e3, s2, i2, n2), d2.push(e3));
- }), this.content.messageList = d2, this.content.title = a2, this.content.abstractList = c2, this.content.compatibleText = l2, this.content.version = _2 || 0;
- }
- }
- sendable() {
- return !Oe(this.content.messageList) || !Oe(this.content.downloadKey);
- }
-};
-var qi = { 1: t.MSG_PRIORITY_HIGH, 2: t.MSG_PRIORITY_NORMAL, 3: t.MSG_PRIORITY_LOW, 4: t.MSG_PRIORITY_LOWEST };
-var xi = class {
- constructor(e2) {
- this.ID = "", this.conversationID = e2.conversationID || null, this.conversationType = e2.conversationType || t.CONV_C2C, this.conversationSubType = e2.conversationSubType, this.time = e2.time || Math.ceil(Date.now() / 1e3), this.sequence = e2.sequence || 0, this.clientSequence = e2.clientSequence || e2.sequence || 0, this.random = e2.random || 0 === e2.random ? e2.random : je(), this.priority = this._computePriority(e2.priority), this.nick = e2.nick || "", this.avatar = e2.avatar || "", this.isPeerRead = false, this.nameCard = "", this.hasRiskContent = Rt(e2.checkResult), this._elements = [], this.isPlaceMessage = e2.isPlaceMessage || 0, this.isRevoked = 2 === e2.isPlaceMessage || 8 === e2.msgFlagBits, this.from = e2.from || null, this.to = e2.to || null, this.flow = "", this.isSystemMessage = e2.isSystemMessage || false, this.protocol = e2.protocol || "JSON", this.isResend = false, this.isRead = false, this.status = e2.status || Nt, this._onlineOnlyFlag = false, this._groupAtInfoList = [], this._relayFlag = false, this.atUserList = [], this.cloudCustomData = e2.cloudCustomData || "", this.isDeleted = false, this.isModified = !!e2.messageVersion, this._isExcludedFromUnreadCount = !(!e2.messageControlInfo || 1 !== e2.messageControlInfo.excludedFromUnreadCount), this._isExcludedFromLastMessage = !(!e2.messageControlInfo || 1 !== e2.messageControlInfo.excludedFromLastMessage), this.clientTime = e2.clientTime || me() || 0, this.senderTinyID = e2.senderTinyID || e2.tinyID || "", this.readReceiptInfo = e2.readReceiptInfo || { readCount: void 0, unreadCount: void 0, isPeerRead: void 0, timestamp: 0 }, this.needReadReceipt = true === e2.needReadReceipt || 1 === e2.needReadReceipt, this.version = e2.messageVersion || 0, this.isBroadcastMessage = e2.isBroadcastMessage || false, this._receiverList = e2.receiverList || void 0, this.isSupportExtension = true === e2.isSupportExtension || 1 === e2.isSupportExtension, this._cmConfigID = e2.customModerationConfigurationID, this.revoker = e2.revokerInfo && e2.revokerInfo.revoker || "", this.revokerInfo = e2.revokerInfo || { userID: "", nick: "", avatar: "" }, this.revokeReason = e2.revokeReason || "", this.reInitialize(e2.currentUser), this.extractGroupInfo(e2.groupProfile || null), this.handleGroupAtInfo(e2), this.initC2CReadReceiptInfo(e2);
- }
- get elements() {
- return this._elements;
- }
- getElements() {
- return this._elements;
- }
- extractGroupInfo(e2) {
- null !== e2 && (ke(e2.nick) && (this.nick = e2.nick), ke(e2.avatar) && (this.avatar = e2.avatar), e2 = e2["messageFromAccountExtraInformation"], be(e2) && ke(e2.nameCard) && (this.nameCard = e2.nameCard));
- }
- handleGroupAtInfo(e2) {
- e2.payload && e2.payload.atUserList && e2.payload.atUserList.forEach((e3) => {
- e3 !== t.MSG_AT_ALL ? (this._groupAtInfoList.push({ groupAtAllFlag: 0, groupAtUserID: e3 }), this.atUserList.push(e3)) : (this._groupAtInfoList.push({ groupAtAllFlag: 1 }), this.atUserList.push(t.MSG_AT_ALL));
- }), Fe(e2.groupAtInfo) && e2.groupAtInfo.forEach((e3) => {
- 0 === e3.groupAtAllFlag ? this.atUserList.push(e3.groupAtUserID) : 1 === e3.groupAtAllFlag && this.atUserList.push(t.MSG_AT_ALL);
- });
- }
- getGroupAtInfoList() {
- return this._groupAtInfoList;
- }
- _initProxy() {
- this._elements[0] && (this.payload = this._elements[0].content, this.type = this._elements[0].type);
- }
- reInitialize(e2) {
- e2 && (this.status = this.from ? Nt : Ot, this.from || (this.from = e2)), this._initFlow(e2), this._initSequence(e2), this._concatConversationID(e2), this.generateMessageID();
- }
- isSendable() {
- return 0 !== this._elements.length && (true === this._relayFlag || "function" == typeof this._elements[0].sendable && this._elements[0].sendable());
- }
- _initTo(e2) {
- this.conversationType === t.CONV_GROUP && (this.to = e2.groupID);
- }
- _initSequence(e2) {
- 0 === this.clientSequence && e2 && (this.clientSequence = function(i2) {
- if (!i2)
- return false;
- if (void 0 === Qe[i2]) {
- const n2 = /* @__PURE__ */ new Date();
- let e3 = ("3" + n2.getHours()).slice(-2), t2 = ("0" + n2.getMinutes()).slice(-2), s2 = ("0" + n2.getSeconds()).slice(-2);
- Qe[i2] = parseInt([e3, t2, s2, "0001"].join("")), e3 = null, t2 = null, s2 = null, Ce.l("autoIncrementIndex start index:" + Qe[i2]);
- }
- return Qe[i2]++;
- }(e2)), 0 === this.sequence && this.conversationType === t.CONV_C2C && (this.sequence = this.clientSequence);
- }
- generateMessageID() {
- this.from === t.CONV_SYSTEM && (this.senderTinyID = "144115198244471703"), this.ID = `${this.senderTinyID}-${this.clientTime}-` + this.random;
- }
- _initFlow(e2) {
- "" !== e2 && (e2 === this.from ? (this.flow = "out", this.isRead = true) : this.flow = "in");
- }
- _concatConversationID(e2) {
- var s2 = this["to"], i2 = this.conversationType;
- i2 !== t.CONV_SYSTEM ? (e2 = i2 === t.CONV_C2C ? e2 === this.from ? s2 : this.from : this.to, this.conversationID = e2 ? "" + i2 + e2 : null) : this.conversationID = t.CONV_SYSTEM;
- }
- isElement(e2) {
- return e2 instanceof yi || e2 instanceof Ri || e2 instanceof Li || e2 instanceof Ai || e2 instanceof Gi || e2 instanceof wi || e2 instanceof Ni || e2 instanceof Ui || e2 instanceof ki || e2 instanceof bi || e2 instanceof $i;
- }
- setElement(s2, i2, n2, o2) {
- if (this.isElement(s2))
- return this._elements = [s2], void this._initProxy();
- var r2 = (e2) => {
- if (e2.type && e2.content)
- switch (e2.type) {
- case t.MSG_TEXT:
- this.setTextElement(e2.content);
- break;
- case t.MSG_IMAGE:
- this.setImageElement(e2.content, i2, n2, o2);
- break;
- case t.MSG_AUDIO:
- this.setAudioElement(e2.content, i2, n2, o2);
- break;
- case t.MSG_FILE:
- this.setFileElement(e2.content, i2, n2, o2);
- break;
- case t.MSG_VIDEO:
- this.setVideoElement(e2.content, i2, n2, o2);
- break;
- case t.MSG_CUSTOM:
- this.setCustomElement(e2.content);
- break;
- case t.MSG_LOCATION:
- this.setLocationElement(e2.content);
- break;
- case t.MSG_GRP_TIP:
- this.setGroupTipElement(e2.content);
- break;
- case t.MSG_GRP_SYS_NOTICE:
- this.setGroupSystemNoticeElement(e2.content);
- break;
- case t.MSG_FACE:
- this.setFaceElement(e2.content);
- break;
- case t.MSG_MERGER:
- this.setMergerElement(e2.content, i2, n2, o2);
- }
- };
- if (Fe(s2))
- for (let e2 = 0; e2 < s2.length; e2++)
- r2(s2[e2]);
- else
- r2(s2);
- this._initProxy();
- }
- clearElement() {
- this._elements.length = 0;
- }
- setTextElement(e2) {
- e2 = "string" == typeof e2 ? e2 : e2.text, e2 = new yi({ text: e2 });
- this._elements.push(e2);
- }
- setImageElement(e2, t2, s2, i2) {
- e2 = new Ri(e2, t2, s2, i2);
- this._elements.push(e2);
- }
- setAudioElement(e2, t2, s2, i2) {
- e2 = new Ai(e2, t2, s2, i2);
- this._elements.push(e2);
- }
- setFileElement(e2, t2, s2, i2) {
- e2 = new Gi(e2, t2, s2, i2);
- this._elements.push(e2);
- }
- setVideoElement(e2, t2, s2, i2) {
- e2 = new wi(e2, t2, s2, i2);
- this._elements.push(e2);
- }
- setLocationElement(e2) {
- e2 = new bi(e2);
- this._elements.push(e2);
- }
- setCustomElement(e2) {
- e2 = new ki(e2);
- this._elements.push(e2);
- }
- setGroupTipElement(e2) {
- let s2 = {};
- var i2 = e2.operationType;
- if (Oe(e2.memberInfoList) ? e2.operatorInfo && (s2 = e2.operatorInfo) : i2 !== t.GRP_TIP_MBR_JOIN && i2 !== t.GRP_TIP_MBR_KICKED_OUT && i2 !== t.GRP_TIP_MBR_SET_ADMIN && i2 !== t.GRP_TIP_MBR_CANCELED_ADMIN || (s2 = e2.memberInfoList[0]), !Oe(e2.memberExtraInfo)) {
- const t2 = e2.memberExtraInfo["reason"];
- e2.msgMemberInfo.forEach((e3) => {
- e3.reason = t2;
- });
- }
- var { nick: i2, avatar: n2 } = s2, i2 = (ke(i2) && (this.nick = i2), ke(n2) && (this.avatar = n2), new Ni(e2));
- this._elements.push(i2);
- }
- setGroupSystemNoticeElement(e2) {
- e2 = new Ui(e2);
- this._elements.push(e2);
- }
- setFaceElement(e2) {
- e2 = new Li(e2);
- this._elements.push(e2);
- }
- setMergerElement(e2, t2, s2, i2) {
- e2 = new $i(e2, t2, s2, i2);
- this._elements.push(e2);
- }
- setIsRead(e2) {
- this.isRead = e2;
- }
- setRelayFlag(e2) {
- this._relayFlag = e2;
- }
- _computePriority(e2) {
- if ($e(e2))
- return t.MSG_PRIORITY_NORMAL;
- if (ke(e2) && -1 !== Object.values(qi).indexOf(e2))
- return e2;
- if (Ge(e2)) {
- const t2 = "" + e2;
- if (-1 !== Object.keys(qi).indexOf(t2))
- return qi[t2];
- }
- return t.MSG_PRIORITY_NORMAL;
- }
- setNickAndAvatar(e2) {
- var { nick: e2, avatar: t2 } = e2;
- ke(e2) && (this.nick = e2), ke(t2) && (this.avatar = t2);
- }
- setNameCard(e2) {
- ke(e2) && (this.nameCard = e2);
- }
- initC2CReadReceiptInfo(e2) {
- var { readReceiptSentByPeer: e2, timestamp: s2 = 0 } = e2;
- this.conversationType === t.CONV_C2C && true === this.needReadReceipt && (this.readReceiptInfo.isPeerRead = 1 === e2, this.readReceiptInfo.timestamp = s2);
- }
-};
-function Vi(e2) {
- var t2 = e2.lastIndexOf(".");
- return -1 === t2 ? e2 : e2.slice(0, t2);
-}
-function Bi(e2) {
- const { androidInfo: t2 = {}, androidOPPOChannelID: s2 = "" } = e2, i2 = t2.OPPOChannelID || s2, { sound: n2 = "", FCMChannelID: o2 = "", ...r2 } = t2;
- return { ...r2, Sound: Vi(n2), OPPOChannelID: i2, GoogleChannelID: o2 };
-}
-function Ki(e2) {
- var { apnsInfo: e2 = {}, ignoreIOSBadge: t2 = false, disableVoipPush: s2 } = e2, t2 = true === e2.ignoreIOSBadge || true === t2 ? 1 : 0;
- let i2 = void 0;
- return $e(s2) || (i2 = false === s2 ? 1 : 0), $e(e2.disableVoipPush) || (i2 = false === e2.disableVoipPush ? 1 : 0), { ...e2, badgeMode: t2, isVoipPush: i2 };
-}
-function Hi(e2) {
- if (be(e2))
- return { pushFlag: true === e2.disablePush ? 1 : 0, title: e2.title || "", desc: e2.description || "", ext: e2.extension || "", apnsInfo: Ki(e2), androidInfo: Bi(e2) };
-}
-var Wi = class extends oi {
- constructor(e2) {
- super(e2), this._n = "C2CModule", this._msgFromUnreadDBMap = /* @__PURE__ */ new Map(), this._noticeFromUnreadDBList = [];
- }
- onNewMessage(t2) {
- var { dataList: t2, isInstantMessage: s2, C2CRemainingUnreadList: i2, C2CPairUnreadList: n2, isSyncingEnded: o2 } = t2;
- s2 || Ce.l(this._n + ".onNewMessage C2CPairUnreadList:", n2, "C2CRemainingUnreadList:", i2);
- const { conversationOptionsList: r2, messageList: a2, isUnreadC2CMessage: c2 } = this._assembly({ dataList: t2, C2CRemainingUnreadList: i2, C2CPairUnreadList: n2, isInstantMessage: s2 }), l2 = Oe(t2 = a2) ? [] : t2.filter((e2) => true === e2.isModified);
- 0 < l2.length && this.emitOEvt(e.MESSAGE_MODIFIED, l2), this.get(Ds).onNewMessage({ conversationOptionsList: r2, isInstantMessage: s2, isUnreadC2CMessage: c2, isSyncingEnded: o2 });
- n2 = Oe(i2 = a2) ? [] : i2.filter((e2) => false === e2.isModified);
- s2 && 0 < n2.length && this.emitOEvt(e.MESSAGE_RECEIVED, n2), a2.length = 0;
- }
- _assembly({ dataList: n2, C2CRemainingUnreadList: o2, C2CPairUnreadList: r2, isInstantMessage: a2 }) {
- let c2 = null;
- const l2 = [], d2 = [], s2 = {}, h2 = this.get($s);
- let _2 = false;
- const u2 = this.get(Ds), p2 = this.get(Ts), e2 = this.get(Ns), g2 = this.getFileDownloadProxy(), m2 = this.getDowloadFileAuthKey(), f2 = e2.getFileDNList();
- for (let i3 = 0, e3 = n2.length; i3 < e3; i3++)
- if (this._isC2CNotice(n2[i3]))
- this._noticeFromUnreadDBList.push(n2[i3].eventArray[0].c2CNotifyMsgArray[0]);
- else {
- const o3 = n2[i3], r3 = (o3.currentUser = this.getMyUserID(), o3.conversationType = t.CONV_C2C, o3.isSystemMessage = !!o3.isSystemMessage, ($e(o3.nick) || $e(o3.avatar)) && (_2 = true), (c2 = new xi(o3)).setElement(o3.elements, g2, m2, f2), c2.setNickAndAvatar({ nick: o3.nick, avatar: o3.avatar }), c2)["conversationID"];
- if (a2) {
- if (this._msgFromUnreadDBMap.get(c2.ID))
- continue;
- let e4 = false;
- if (c2.from !== this.getMyUserID()) {
- const n3 = u2.getLatestMessageSentByPeer(r3);
- if (n3) {
- const { nick: o4, avatar: r4 } = n3;
- _2 ? c2.setNickAndAvatar({ nick: o4, avatar: r4 }) : o4 === c2.nick && r4 === c2.avatar || (e4 = true);
- }
- } else {
- const n3 = u2.getLatestMessageSentByMe(r3);
- if (n3) {
- const { nick: t2, avatar: o4 } = n3;
- t2 === c2.nick && o4 === c2.avatar || (u2.modifyMessageSentByMe({ conversationID: r3, latestNick: c2.nick, latestAvatar: c2.avatar }), p2.mockOnNickAvatarModified(c2.nick, c2.avatar));
- }
- }
- let s3 = 1 === n2[i3].isModified;
- if (u2.isMessageSentByCurrentInstance(c2) ? c2.isModified = s3 : s3 = false, 0 === o3.msgLifeTime)
- c2._onlineOnlyFlag = true, u2.isMessageSentByCurrentInstance(c2) || d2.push(c2);
- else {
- if (!u2.pushIntoMessageList(d2, c2, s3))
- continue;
- e4 && (u2.modifyMessageSentByPeer({ conversationID: r3, latestNick: c2.nick, latestAvatar: c2.avatar }), u2.updateUserProfileSpecifiedKey({ conversationID: r3, nick: c2.nick, avatar: c2.avatar }));
- }
- a2 && 0 < c2.clientTime && h2.addMessageDelay(c2.clientTime);
- } else
- this._msgFromUnreadDBMap.set(c2.ID, c2);
- if (0 !== o3.msgLifeTime) {
- if (false === c2._onlineOnlyFlag) {
- const n3 = u2.getLastMessageTime(r3);
- if (!(Ge(n3) && c2.time < n3) && a2)
- if ($e(s2[r3])) {
- let e4 = 0;
- "in" === c2.flow && (c2._isExcludedFromUnreadCount || (e4 = 1)), s2[r3] = l2.push({ conversationID: r3, unreadCount: e4, type: c2.conversationType, subType: c2.conversationSubType, lastMessage: c2._isExcludedFromLastMessage ? "" : c2 }) - 1;
- } else {
- const n4 = s2[r3];
- l2[n4].type = c2.conversationType, l2[n4].subType = c2.conversationSubType, l2[n4].lastMessage = c2._isExcludedFromLastMessage ? "" : c2, "in" === c2.flow && (c2._isExcludedFromUnreadCount || l2[n4].unreadCount++);
- }
- }
- } else
- c2._onlineOnlyFlag = true;
- }
- this._handleNoticeFromUnreadDB();
- let i2 = false;
- if (Fe(r2) && 0 < r2.length) {
- for (let s3 = 0, e3 = r2.length; s3 < e3; s3++)
- if (r2[s3].from !== t.CONV_SYSTEM) {
- i2 = true;
- const n3 = l2.find(({ conversationID: e4 }) => e4 === "" + t.CONV_C2C + r2[s3].from);
- n3 ? n3.unreadCount = r2[s3].unreadCount : l2.push({ conversationID: "" + t.CONV_C2C + r2[s3].from, unreadCount: r2[s3].unreadCount, type: t.CONV_C2C });
- }
- }
- if (Fe(o2))
- for (let s3 = 0, e3 = o2.length; s3 < e3; s3++)
- l2.find(({ conversationID: e4 }) => e4 === "" + t.CONV_C2C + o2[s3].from) || l2.push({ conversationID: "" + t.CONV_C2C + o2[s3].from, type: t.CONV_C2C, lastMsgTime: o2[s3].lastMsgTime });
- return { conversationOptionsList: l2, messageList: d2, isUnreadC2CMessage: i2 };
- }
- getMessageListFromUnreadDB() {
- return [...this._msgFromUnreadDBMap.values()];
- }
- _isC2CNotice(e2) {
- e2 = e2.eventArray;
- return !(!Fe(e2) || 10 !== e2[0].event);
- }
- _handleNoticeFromUnreadDB() {
- var e2 = this._noticeFromUnreadDBList.length;
- if (0 !== e2) {
- Ce.l(this._n + "._handleNoticeFromUnreadDB count:" + e2);
- const t2 = [];
- this._noticeFromUnreadDBList.forEach((e3) => {
- e3.hasOwnProperty("c2cMessageRevokedNotify") && t2.push(e3);
- }), this.onMsgRevoked({ dataList: t2 }), this._noticeFromUnreadDBList.length = 0, t2.length = 0;
- }
- }
- onMsgRevoked(s2, i2) {
- const r2 = this.get(Ds), a2 = [];
- let c2;
- s2.dataList.forEach((e2) => {
- if (e2.c2cMessageRevokedNotify) {
- const s3 = e2.c2cMessageRevokedNotify["revokedInfos"];
- $e(s3) || s3.forEach((e3) => {
- var s4 = this.getMyUserID() === e3.from ? "" + t.CONV_C2C + e3.to : "" + t.CONV_C2C + e3.from, i3 = (c2 = r2.revoke(s4, e3.sequence, e3.random), e3.revokerInfo && e3.revokerInfo.revoker), n2 = e3.revokerInfo && e3.revokerInfo.reason || "";
- let o2;
- c2 ? o2 = c2 : (o2 = { conversationID: s4, sequence: e3.sequence }, e3.tinyID && e3.clientTime && e3.random && (o2.ID = `${e3.tinyID}-${e3.clientTime}-` + e3.random), e3.time && (o2.time = e3.time)), o2 && (o2.revoker = i3, o2.revokeReason = n2, o2.revokerInfo = { userID: i3, nick: "", avatar: "" }, a2.push(o2));
- });
- }
- }), 0 !== a2.length && (Ce.l(`${this._n}.onMsgRevoked count:${a2.length} updateUnreadCount:` + i2), r2.onMessageRevoked(a2, i2), r2.updateRevokerInfo(a2).then((t2) => {
- this.emitOEvt(e.MESSAGE_REVOKED, t2);
- }));
- }
- onMsgReadReceipt(e2) {
- e2.dataList.forEach((e3) => {
- if (!Oe(e3.c2cMessageReadReceipt)) {
- const n2 = e3.c2cMessageReadReceipt["to"];
- e3.c2cMessageReadReceipt.uinPairReadArray.forEach((e4) => {
- e4 = e4.peerReadTime;
- Ce.l(`${this._n}.onMsgReadReceipt to:${n2} peerReadTime:` + e4);
- const s2 = "" + t.CONV_C2C + n2, i2 = this.get(Ds);
- i2.recordPeerReadTime(s2, e4), i2.updateMsgIsPeerReadProp(s2, e4);
- });
- }
- });
- }
- onMsgReadNotice(e2) {
- e2.dataList.forEach((e3) => {
- if (!Oe(e3.c2cMessageReadNotice)) {
- const i2 = this.get(Ds);
- e3.c2cMessageReadNotice.uinPairReadArray.forEach((e4) => {
- var { from: e4, peerReadTime: s2 } = e4, e4 = (Ce.l(this._n + `.onMsgReadNotice from:${e4} lastReadTime:` + s2), "" + t.CONV_C2C + e4);
- i2.updateIsReadAfterReadReport({ conversationID: e4, lastMessageTime: s2 }), i2.updateUnreadCount(e4);
- });
- }
- });
- }
- onMsgModified(e2) {
- Ce.l(this._n + ".onMsgModified options:", e2);
- const s2 = this.get(Ds);
- e2.dataList.forEach((e3) => {
- s2.onMessageModified({ ...e3, conversationType: t.CONV_C2C });
- });
- }
- onReadReceiptList(e2) {
- Ce.l(this._n + ".onReadReceiptList options:", e2), this.get(Ds).updateReadReceiptInfo(e2.dataList);
- }
- sendMessage(e2, t2) {
- e2 = this._createC2CMessagePack(e2, t2);
- return this.req(e2);
- }
- _createC2CMessagePack(e2, t2) {
- let s2 = null, i2 = (t2 && (t2.offlinePushInfo && (s2 = t2.offlinePushInfo), true === t2.onlineUserOnly && (s2 ? s2.disablePush = true : s2 = { disablePush: true })), "");
- ke(e2.cloudCustomData) && 0 < e2.cloudCustomData.length && (i2 = e2.cloudCustomData);
- const n2 = [];
- if (be(t2) && be(t2.messageControlInfo)) {
- const { excludedFromUnreadCount: e3, excludedFromLastMessage: s3, excludedFromContentModeration: i3 } = t2.messageControlInfo;
- true === e3 && n2.push("NoUnread"), true === s3 && n2.push("NoLastMsg"), true === i3 && n2.push("NoMsgCheck");
- }
- var o2 = this.isOnlineMessage(e2, t2) ? 0 : void 0, r2 = JSON.parse(JSON.stringify(e2.getElements())), a2 = this.get(Ns).getFileDNList();
- return { P: ri.SEND_C2C_MSG, data: { fromAccount: this.getMyUserID(), toAccount: e2.to, msgBody: Ei(e2.type, r2, a2), cloudCustomData: i2, msgSeq: e2.sequence, msgRandom: e2.random, msgLifeTime: o2, nick: e2.nick, avatar: e2.avatar, offlinePushInfo: Hi(s2), messageControlInfo: 0 !== o2 ? n2 : void 0, clientTime: e2.clientTime, needReadReceipt: true === e2.needReadReceipt ? 1 : 0, isSupportExtension: true === e2.isSupportExtension ? 1 : 0, isRelayMessage: true === e2._relayFlag ? 1 : 0, cmConfigID: e2._cmConfigID, forbidCallbackControl: it(t2) } };
- }
- isOnlineMessage(e2, t2) {
- return !(!t2 || true !== t2.onlineUserOnly);
- }
- revokeMessage(e2) {
- return this.req({ P: ri.REVOKE_C2C_MSG, data: { msgInfo: { fromAccount: e2.from, toAccount: e2.to, msgSeq: e2.sequence, msgRandom: e2.random, msgTimeStamp: e2.time } } });
- }
- deleteMessage(e2) {
- var { to: e2, keyList: t2 } = e2;
- return Ce.l(this._n + `.deleteMessage toAccount:${e2} count:` + t2.length), this.req({ P: ri.DEL_C2C_MSG, data: { fromAccount: this.getMyUserID(), to: e2, keyList: t2 } });
- }
- modifyRemoteMessage(e2) {
- const { from: s2, to: i2, version: n2 = 0, sequence: o2, random: r2, time: a2, payload: _2, type: c2, cloudCustomData: u2, _elements: l2 } = e2;
- let d2 = void 0;
- return (e2 = c2) !== t.MSG_TEXT && e2 !== t.MSG_CUSTOM && e2 !== t.MSG_LOCATION && e2 !== t.MSG_FACE || (1 < l2.length && l2.splice(0, 1, { type: c2, content: _2 }), d2 = l2), this.req({ P: ri.MODIFY_C2C_MSG, data: { from: s2, to: i2, version: n2, sequence: o2, random: r2, time: a2, elements: d2, cloudCustomData: u2 } });
- }
- setMessageRead({ conversationID: t2, lastMessageTime: s2 }) {
- const i2 = this._n + ".setMessageRead", e2 = `convID:${t2} lastMessageTime:` + s2, n2 = (Ce.l(i2 + " " + e2), Ge(s2) || this.warn("DoNotModifyLastTime"), new Ti("setMessageRead"));
- return n2.setMessage(e2), this.req({ P: ri.SET_C2C_MSG_READ, data: { C2CMsgReaded: { cookie: "", C2CMsgReadedItem: [{ toAccount: t2.replace("C2C", ""), lastMessageTime: s2, receipt: 1 }] } } }).then(() => {
- n2.end(), Ce.l(i2 + " ok");
- const e3 = this.get(Ds);
- return e3.updateIsReadAfterReadReport({ conversationID: t2, lastMessageTime: s2 }), e3.updateUnreadCount(t2), Zs();
- }).catch((e3) => (n2.setError(e3).end(), Ce.l(i2 + " failed. error:", e3), ni(e3)));
- }
- getRoamingMessage(e2) {
- const c2 = this._n + ".getRoamingMessage", { peerAccount: s2, conversationID: l2, count: i2, lastMessageTime: n2, messageKey: o2 } = e2, d2 = `peerAccount:${s2} count:${i2 || 15} lastMessageTime:${n2 || 0} messageKey:` + o2, _2 = (Ce.l(c2 + " " + d2), new Ti("getRoamingMessage"));
- return this.req({ P: ri.GET_C2C_ROAMING_MSG, data: { peerAccount: s2, count: i2 || 15, lastMessageTime: n2 || 0, messageKey: o2 } }).then((e3) => {
- var { complete: e3, messageList: s3, messageKey: i3, lastMessageTime: n3 } = e3.data;
- $e(s3) ? Ce.l(c2 + ` ok. complete:${e3} but messageList is undefined!`) : Ce.l(c2 + ` ok. complete:${e3} count:` + s3.length), _2.setMessage(d2 + ` complete:${e3} length:` + s3.length).end();
- const o3 = this.get(Ds), r2 = 1 === e3;
- r2 && o3.setCompleted(l2);
- e3 = [], s3 = o3.onRoamingMessage(s3, l2, true, e3), o3.modifyMessageList(l2), o3.updateIsRead(l2), o3.updateRoamingMsgKeyAndTime(l2, i3, n3), i3 = o3.getPeerReadTime(l2);
- if (Ce.l(c2 + ` update isPeerRead property. convID:${l2} peerReadTime:` + i3), i3)
- o3.updateMsgIsPeerReadProp(l2, i3);
- else {
- const e4 = l2.replace(t.CONV_C2C, "");
- this.getRemotePeerReadTime([e4]).then(() => {
- o3.updateMsgIsPeerReadProp(l2, o3.getPeerReadTime(l2));
- });
- }
- let a2 = "";
- if (0 < s3.length)
- a2 = s3[0].ID;
- else {
- const e4 = o3.getLocalOldestMessage(l2);
- e4 && (a2 = e4.ID);
- }
- return Ce.l(c2 + ` nextReqID:${a2} storedMsgCount:` + s3.length), { nextReqID: a2, storedMessageList: s3, assembledMessageList: e3, isPullingCompleted: r2 };
- }).catch((e3) => (_2.setMessage(d2).setError(e3).end(), Ce.w(c2 + " failed. error:", e3), ni(e3)));
- }
- getRoamingMessagesHopping(e2) {
- const l2 = this._n + ".getRoamingMessagesHopping", { peerAccount: s2, time: i2 = 0, count: n2, direction: d2 } = e2, _2 = "" + t.CONV_C2C + s2, u2 = `peerAccount:${s2} count:${n2} time:${i2} direction:` + d2, h2 = (Ce.l(l2 + " " + u2), new Ti("getRoamingMessagesHopping"));
- return this.req({ P: ri.GET_C2C_ROAMING_MSG, data: { peerAccount: s2, count: n2 + 1, lastMessageTime: i2, direction: d2 } }).then((e3) => {
- const { complete: s3, messageList: i3 = [], lastMessageTime: n3 } = e3.data, o2 = `complete:${s3} count:` + i3.length, r2 = (Ce.l(l2 + " ok. " + o2), h2.setMessage(u2 + " " + o2).end(), 1 !== s3 && (1 === d2 ? i3.pop() : i3.shift()), this.get(Ds)), a2 = r2.onRoamingMessage(i3, _2, false);
- this._modifyMessageList(_2, a2);
- var e3 = this._computeResult({ complete: s3, lastMessageTime: n3, resultList: a2 }), c2 = (r2.storeHoppingMessageList(e3.messageList), r2.getPeerReadTime(_2));
- if (Ce.l(l2 + ` update isPeerRead property. convID:${_2} peerReadTime:` + c2), c2)
- r2.updateMsgIsPeerReadProp(_2, c2);
- else {
- const e4 = _2.replace(t.CONV_C2C, "");
- this.getRemotePeerReadTime([e4]).then(() => {
- r2.updateMsgIsPeerReadProp(_2, r2.getPeerReadTime(_2));
- });
- }
- return Zs(e3);
- }).catch((e3) => (h2.setMessage(u2).setError(e3).end(), Ce.w(l2 + " failed. error:", e3), ni(e3)));
- }
- _computeResult(e2) {
- const { complete: t2 = 0, lastMessageTime: s2, resultList: i2 = [] } = e2, n2 = { messageList: [...i2], isCompleted: false, nextMessageTime: "" };
- return 1 === t2 ? n2.isCompleted = true : n2.nextMessageTime = s2, n2;
- }
- _modifyMessageList(t2, s2) {
- t2 = this.get(Ds).getLocalConversation(t2);
- if (t2) {
- var i2 = t2.userProfile.nick, n2 = t2.userProfile.avatar, t2 = this.get(Ts).getNickAndAvatarByUserID(this.getMyUserID()), o2 = t2.nick, r2 = t2.avatar;
- for (let e2 = s2.length - 1; 0 <= e2; e2--) {
- const t3 = s2[e2];
- "in" === t3.flow && (t3.nick !== i2 && t3.setNickAndAvatar({ nick: i2 }), t3.avatar !== n2 && t3.setNickAndAvatar({ avatar: n2 })), "out" === t3.flow && (t3.nick !== o2 && t3.setNickAndAvatar({ nick: o2 }), t3.avatar !== r2 && t3.setNickAndAvatar({ avatar: r2 }));
- }
- }
- }
- getRemotePeerReadTime(o2) {
- const r2 = this._n + ".getRemotePeerReadTime";
- if (Oe(o2))
- return Promise.resolve();
- const a2 = new Ti("getRemotePeerReadTime");
- return Ce.l(r2 + " userIDList:" + o2), this.req({ P: ri.GET_C2C_PEER_READ_TIME, data: { userIDList: o2 } }).then((e2) => {
- var s2 = e2.data["peerReadTimeList"];
- Ce.l(r2 + " ok. peerReadTimeList:" + s2);
- let i2 = "";
- const n2 = this.get(Ds);
- for (let e3 = 0; e3 < o2.length; e3++)
- i2 += `${o2[e3]}-${s2[e3]} `, 0 < s2[e3] && n2.recordPeerReadTime("" + t.CONV_C2C + o2[e3], s2[e3]);
- a2.setMessage(i2).end();
- }).catch((e2) => {
- a2.setError(e2).end(), Ce.w(r2 + " failed. error:", e2);
- });
- }
- sendReadReceipt(e2) {
- const s2 = e2[0].conversationID.replace(t.CONV_C2C, ""), i2 = new Ti("sendReadReceipt"), n2 = (i2.setMessage("peerAccount:" + s2), this.getMyUserID()), o2 = e2.filter((e3) => e3.from !== n2 && true === e3.needReadReceipt).map((e3) => {
- var { from: e3, to: t2, sequence: s3, random: i3, time: n3, clientTime: o3 } = e3;
- return { fromAccount: e3, toAccount: t2, sequence: s3, random: i3, time: n3, clientTime: o3 };
- });
- if (0 === o2.length)
- return ni({ code: ei.READ_RECEIPT_MSG_LIST_EMPTY });
- const r2 = this._n + ".sendReadReceipt";
- return Ce.l(r2 + `. peerAccount:${s2} length:` + o2.length), this.req({ P: ri.SEND_C2C_READ_RECEIPT, data: { peerAccount: s2, messageInfoList: o2 } }).then((e3) => (i2.end(), Ce.l(r2 + " ok"), Zs())).catch((e3) => (i2.setError(e3).end(), Ce.w(r2 + " failed. error:", e3), ni(e3)));
- }
- getReadReceiptList(e2) {
- var s2 = e2[0].conversationID.replace(t.CONV_C2C, "");
- return Ce.l(this._n + `.getReadReceiptList peerAccount:${s2} msgCount:` + e2.length), ii({ messageList: e2 });
- }
- getMessageExtensions(e2, t2) {
- return Ce.l(this._n + ".getMessageExtensions startSequence:" + t2), this.req({ P: ri.GET_C2C_MSG_EXT, data: { from: e2.from, to: e2.to, messageKey: this.getMessageKey(e2), startSequence: t2 } });
- }
- modifyMsgExts(e2, t2, s2 = 1) {
- return Ce.l(this._n + ".modifyMsgExts operateType:" + s2), this.req({ P: ri.MODIFY_C2C_MSG_EXT, data: { from: e2.from, to: e2.to, messageKey: this.getMessageKey(e2), extensionList: t2, operateType: s2 } });
- }
- getMessageKey(e2) {
- var { clientSequence: e2, random: t2, time: s2 } = e2;
- return e2 + `_${t2}_` + s2;
- }
- reset() {
- Ce.l(this._n + ".reset"), this._msgFromUnreadDBMap.clear(), this._noticeFromUnreadDBList.length = 0;
- }
-};
-var Yi = { A2KEY_AND_TINYID_UPDATED: "_inner1", CLOUD_CONFIG: "_inner2", PROFILE_UPDATED: "_inner3", CONV_SYNC_COMPLETED: "_inner4", C2C_UNREAD_HANDLE_COMPLETED: "_inner5" };
-var zi = class {
- constructor(e2) {
- this._convM = e2, this._map = /* @__PURE__ */ new Map(), this._n = "MsgListHandler", this._latestMsgSentByPeerMap = /* @__PURE__ */ new Map(), this._latestMsgSentByMeMap = /* @__PURE__ */ new Map(), this._hoppingMsgMap = /* @__PURE__ */ new Map(), this.TOPIC_MSG_LIMIT = 1e3, this._convM.getIEmitInst().on(Yi.CLOUD_CONFIG, this._onCloudConfig, this);
- }
- _onCloudConfig() {
- var e2 = this._convM.getCloudConfig("topic_msg_limit");
- $e(e2) || (this.TOPIC_MSG_LIMIT = Number(e2)), Ce.l(this._n + "._onCloudConfig topicMsgLimit:" + this.TOPIC_MSG_LIMIT);
- }
- onCheckTimer(e2) {
- if (e2 % 20 == 0 && 0 < this._map.size)
- for (var [t2, s2] of this._map)
- t2.includes(Le) && s2.size >= this.TOPIC_MSG_LIMIT && this._convM.clearMemMsg(t2, true);
- }
- pushIn(e2, t2 = false) {
- var s2 = e2["conversationID"];
- let i2 = true;
- this._map.has(s2) || this._map.set(s2, /* @__PURE__ */ new Map());
- var n2 = this._getUniqueIDOfMsg(e2);
- if (this._map.get(s2).has(n2)) {
- const e3 = this._map.get(s2).get(n2);
- if (!t2 || true === e3.isModified)
- return i2 = false;
- }
- return this._map.get(s2).set(n2, e2), this._setLatestMsgSentByPeer(s2, e2), this._setLatestMsgSentByMe(s2, e2), i2;
- }
- unshift(s2, i2) {
- let n2;
- if (Fe(s2) ? 0 < s2.length && (n2 = s2[0].conversationID, this._unshiftMultipleMsgs(s2, i2)) : (n2 = s2.conversationID, this._unshiftSingleMsg(s2, i2)), n2) {
- const s3 = Array.from(this._map.get(n2).values()), i3 = s3.length;
- if (0 !== i3) {
- for (let e2 = i3 - 1; 0 <= e2; e2--)
- if ("out" === s3[e2].flow) {
- this._setLatestMsgSentByMe(n2, s3[e2]);
- break;
- }
- if (n2.startsWith(t.CONV_C2C)) {
- for (let e2 = i3 - 1; 0 <= e2; e2--)
- if ("in" === s3[e2].flow) {
- this._setLatestMsgSentByPeer(n2, s3[e2]);
- break;
- }
- }
- }
- }
- }
- _unshiftSingleMsg(e2, t2) {
- var s2 = e2["conversationID"], i2 = this._getUniqueIDOfMsg(e2);
- if (!this._map.has(s2))
- return this._map.set(s2, /* @__PURE__ */ new Map()), this._map.get(s2).set(i2, e2), void t2.push(e2);
- const n2 = this._map.get(s2), o2 = Array.from(n2);
- n2.has(i2) || (o2.unshift([i2, e2]), this._map.set(s2, new Map(o2)), t2.push(e2));
- }
- _unshiftMultipleMsgs(t2, s2) {
- const i2 = t2.length, n2 = [], e2 = t2[0].conversationID, o2 = this._map.get(e2), r2 = this._map.has(e2) ? Array.from(o2) : [];
- for (let e3 = 0; e3 < i2; e3++) {
- const i3 = this._getUniqueIDOfMsg(t2[e3]);
- o2 && o2.has(i3) || (n2.push([i3, t2[e3]]), s2.push(t2[e3]));
- }
- this._map.set(e2, new Map(n2.concat(r2)));
- }
- remove(e2) {
- var t2 = e2["conversationID"], e2 = this._getUniqueIDOfMsg(e2);
- this._map.has(t2) && this._map.get(t2).delete(e2);
- }
- revoke(e2, t2, s2) {
- var i2;
- return this._map.has(e2) ? (i2 = this._map.get(e2), this._updateMsgIsRevoked(i2, t2, s2)) : this._hoppingMsgMap.has(e2) ? (i2 = this._hoppingMsgMap.get(e2), this._updateMsgIsRevoked(i2, t2, s2)) : null;
- }
- _updateMsgIsRevoked(e2, t2, s2) {
- for (var [, i2] of e2)
- if (i2.sequence === t2 && ($e(s2) || i2.random === s2))
- return i2.isRevoked || (i2.isRevoked = true), i2;
- }
- removeByConvID(e2) {
- var t2 = this._map.has(e2);
- Ce.l(this._n + `.removeByConvID convID:${e2} has:` + t2), t2 && (this._map.delete(e2), this._latestMsgSentByPeerMap.delete(e2), this._latestMsgSentByMeMap.delete(e2));
- }
- findMessage(e2) {
- let t2 = null;
- return t2 = (t2 = this._findMsg(e2, this._map)) || this._findMsg(e2, this._hoppingMsgMap);
- }
- _findMsg(t2, s2) {
- let i2 = null;
- for (var [, e2] of s2) {
- const s3 = [...e2.values()], n2 = s3.length;
- for (let e3 = 0; e3 < n2; e3++)
- if (s3[e3].ID === t2) {
- i2 = s3[e3];
- break;
- }
- }
- return i2;
- }
- updateMsgIsPeerReadProp(e2, t2) {
- let s2 = [];
- var i2;
- return this._map.has(e2) ? (i2 = this._map.get(e2), s2 = this._updateMsgIsPeerReadProp(i2, t2)) : this._hoppingMsgMap.has(e2) && (i2 = this._hoppingMsgMap.get(e2), s2 = this._updateMsgIsPeerReadProp(i2, t2)), Ce.l(this._n + `.updateMsgIsPeerReadProp convID:${e2} peerReadTime:${t2} count:` + s2.length), s2;
- }
- _updateMsgIsPeerReadProp(e2, t2) {
- const s2 = [];
- for (var [, i2] of e2)
- i2.time <= t2 && !i2.isPeerRead && "out" === i2.flow && (i2.isPeerRead = true, s2.push(i2));
- return s2;
- }
- updateMsgIsModifiedProp(e2) {
- var t2 = e2["conversationID"];
- if (this._map.has(t2)) {
- const s2 = this._getUniqueIDOfMsg(e2), i2 = this._map.get(t2).get(s2);
- i2 && (i2.isModified = true);
- }
- }
- hasLocalMsgList(e2) {
- return this._map.has(e2);
- }
- getLocalMsgList(e2) {
- return this.hasLocalMsgList(e2) ? [...this._map.get(e2).values()] : [];
- }
- getLocalMaxSeq(e2) {
- if (!this.hasLocalMsgList(e2))
- return 0;
- e2 = [...this._map.get(e2).values()].map((e3) => e3.sequence);
- return Math.max(...e2);
- }
- getLocalMaxTime(e2) {
- if (!this.hasLocalMsgList(e2))
- return 0;
- e2 = [...this._map.get(e2).values()].map((e3) => e3.time);
- return Math.max(...e2);
- }
- hasLocalMsg(e2, t2) {
- let s2 = false;
- var i2 = this.getLocalMsgList(e2), n2 = i2.length;
- for (let e3 = 0; e3 < n2; e3++)
- i2[e3].ID === t2 && (s2 = true);
- return s2;
- }
- getLocalMsg(e2, t2) {
- let s2 = null;
- var i2 = this.getLocalMsgList(e2), n2 = i2.length;
- for (let e3 = 0; e3 < n2; e3++)
- if (i2[e3].ID === t2) {
- s2 = i2[e3];
- break;
- }
- return s2;
- }
- getLocalLastMsg(e2) {
- e2 = this.getLocalMsgList(e2);
- return e2[e2.length - 1];
- }
- getLocalSecondLastMsg(e2) {
- e2 = this.getLocalMsgList(e2);
- return e2[e2.length - 2];
- }
- getLocalOldestMsg(e2) {
- return this.getLocalMsgList(e2)[0];
- }
- _setLatestMsgSentByPeer(e2, s2) {
- e2.startsWith(t.CONV_C2C) && "in" === s2.flow && this._latestMsgSentByPeerMap.set(e2, s2);
- }
- _setLatestMsgSentByMe(e2, t2) {
- "out" === t2.flow && this._latestMsgSentByMeMap.set(e2, t2);
- }
- getLatestMsgSentByPeer(e2) {
- return this._latestMsgSentByPeerMap.get(e2);
- }
- getLatestMsgSentByMe(e2) {
- return this._latestMsgSentByMeMap.get(e2);
- }
- modifyMsgSentByPeer(n2) {
- const { conversationID: e2, latestNick: o2, latestAvatar: r2 } = n2, t2 = this._map.get(e2);
- if (!Oe(t2)) {
- var a2 = Array.from(t2.values()), n2 = a2.length;
- if (0 !== n2) {
- let t3 = null, s2 = 0, i2 = false;
- for (let e3 = n2 - 1; 0 <= e3; e3--)
- "in" === a2[e3].flow && ((t3 = a2[e3]).nick !== o2 && (t3.setNickAndAvatar({ nick: o2 }), i2 = true), t3.avatar !== r2 && (t3.setNickAndAvatar({ avatar: r2 }), i2 = true), i2 && (s2 += 1));
- Ce.l(this._n + `.modifyMsgSentByPeer convID:${e2} count:` + s2);
- }
- }
- }
- modifyMsgSentByMe(n2) {
- const { conversationID: e2, latestNick: o2, latestAvatar: r2 } = n2, t2 = this._map.get(e2);
- if (!Oe(t2)) {
- var a2 = Array.from(t2.values()), n2 = a2.length;
- if (0 !== n2) {
- let t3 = null, s2 = 0, i2 = false;
- for (let e3 = n2 - 1; 0 <= e3; e3--)
- "out" === a2[e3].flow && ((t3 = a2[e3]).nick !== o2 && (t3.setNickAndAvatar({ nick: o2 }), i2 = true), t3.avatar !== r2 && (t3.setNickAndAvatar({ avatar: r2 }), i2 = true), i2 && (s2 += 1));
- Ce.l(this._n + `.modifyMsgSentByMe convID:${e2} count:` + s2);
- }
- }
- }
- getTopicConvIDList(s2) {
- return [...this._map.keys()].filter((e2) => e2.startsWith("" + t.CONV_GROUP + s2));
- }
- onMsgModified(e2, t2) {
- if (!this._map.has(e2) && !this._hoppingMsgMap.has(e2))
- return { isUpdated: false, message: null };
- const s2 = this._n + ".onMsgModified", i2 = this._getUniqueIDOfMsg(t2), n2 = this._getTargetMsg(e2, i2), o2 = !!n2;
- if (Ce.l(s2 + ` convID:${e2} uniqueID:${i2} has:` + o2), o2) {
- const { messageVersion: e3, elements: i3, cloudCustomData: o3, checkResult: r2 } = t2;
- return Ce.l(s2 + ` localVersion:${n2.version} remoteVersion:` + e3), n2.version < e3 ? (n2.version = e3, n2._elements = JSON.parse(JSON.stringify(i3)), n2.payload = n2._elements[0].content, n2.type = n2._elements[0].type, n2.cloudCustomData = o3, n2.isModified = true, n2.hasRiskContent = Rt(r2), { isUpdated: true, message: n2 }) : { isUpdated: false, message: n2 };
- }
- return { isUpdated: false, message: null };
- }
- _getUniqueIDOfMsg(e2) {
- var { from: e2, to: t2, random: s2, sequence: i2, time: n2 } = e2;
- return e2 + `-${t2}-${s2}-${i2}-` + n2;
- }
- _getTargetMsg(e2, t2) {
- if (this._map.has(e2))
- return this._map.get(e2).get(t2);
- let s2 = void 0;
- if (this._hoppingMsgMap.has(e2)) {
- var i2 = [...this._hoppingMsgMap.get(e2).values()];
- for (let e3 = 0; e3 < i2.length; e3++)
- if (this._getUniqueIDOfMsg(i2[e3]) === t2) {
- s2 = i2[e3];
- break;
- }
- }
- return s2;
- }
- storeHoppingMsgList(t2) {
- if (0 !== t2.length) {
- const s2 = t2[0]["conversationID"], i2 = t2.length, n2 = (this._hoppingMsgMap.has(s2) || this._hoppingMsgMap.set(s2, /* @__PURE__ */ new Map()), this._hoppingMsgMap.get(s2));
- for (let e2 = 0; e2 < i2; e2++) {
- const s3 = t2[e2];
- n2.has(s3.ID) || n2.set(s3.ID, s3);
- }
- }
- }
- getHoppingMsg(e2, t2) {
- if (this._hoppingMsgMap.has(e2))
- return this._hoppingMsgMap.get(e2).get(t2);
- }
- reset() {
- this._map.clear(), this._latestMsgSentByPeerMap.clear(), this._latestMsgSentByMeMap.clear(), this._hoppingMsgMap.clear();
- }
-};
-function ji(e2) {
- this.mixin(e2);
-}
-ji.mixin = function(e2) {
- const t2 = e2.prototype || e2;
- t2._isReady = false, t2.ready = function(e3, t3 = false) {
- if (e3)
- return this._isReady ? void (t3 ? e3.call(this) : setTimeout(e3, 1)) : (this._readyQueue = this._readyQueue || [], void this._readyQueue.push(e3));
- }, t2.triggerReady = function() {
- this._isReady = true, setTimeout(() => {
- const e3 = this._readyQueue;
- this._readyQueue = [], e3 && 0 < e3.length && e3.forEach(function(e4) {
- e4.call(this);
- }, this);
- }, 1);
- }, t2.resetReady = function() {
- this._isReady = false, this._readyQueue = [];
- }, t2.isReady = function() {
- return this._isReady;
- };
-};
-var Ji = ["jpg", "jpeg", "gif", "png", "bmp", "image", "webp"];
-var Xi = ["mp4", "quicktime", "mov"];
-var Zi = 1;
-var Qi = 2;
-var en = 3;
-var tn = 255;
-var sn = class {
- constructor(e2) {
- Oe(e2) || (this.userID = e2.userID || "", this.nick = e2.nick || "", this.gender = e2.gender || "", this.birthday = e2.birthday || 0, this.location = e2.location || "", this.selfSignature = e2.selfSignature || "", this.allowType = e2.allowType || t.ALLOW_TYPE_ALLOW_ANY, this.language = e2.language || 0, this.avatar = e2.avatar || "", this.messageSettings = e2.messageSettings || 0, this.adminForbidType = e2.adminForbidType || t.FORBID_TYPE_NONE, this.level = e2.level || 0, this.role = e2.role || 0, this.lastUpdatedTime = 0, this.profileCustomField = [], Oe(e2.profileCustomField) || e2.profileCustomField.forEach((e3) => {
- this.profileCustomField.push({ key: e3.key, value: e3.value });
- }));
- }
- validate(s2) {
- let i2 = true, e2 = "";
- if (Oe(s2))
- return { valid: false, tips: "empty options" };
- if (s2.profileCustomField) {
- const i3 = s2.profileCustomField.length;
- let t2 = null;
- for (let e3 = 0; e3 < i3; e3++) {
- if (t2 = s2.profileCustomField[e3], !ke(t2.key) || -1 === t2.key.indexOf("Tag_Profile_Custom"))
- return { valid: false, tips: "The prefix of keys of the custom profile key-value pairs (which is profileCustomField) must be Tag_Profile_Custom" };
- if (!ke(t2.value))
- return { valid: false, tips: "The type of values of the custom profile key-value pairs (which is profileCustomField) must be String" };
- }
- }
- for (const t2 in s2)
- if (Object.prototype.hasOwnProperty.call(s2, t2)) {
- if ("profileCustomField" === t2)
- continue;
- if (Oe(s2[t2]) && !ke(s2[t2]) && !Ge(s2[t2])) {
- e2 = "key:" + t2 + ", invalid value:" + s2[t2], i2 = false;
- continue;
- }
- switch (t2) {
- case "nick":
- ke(s2[t2]) || (e2 = "nick must be a string", i2 = false), 500 < ze(s2[t2]) && (e2 = `nick name limited: must less than or equal to 500 bytes, current size: ${ze(s2[t2])} bytes`, i2 = false);
- break;
- case "gender":
- Ze(Ee, s2.gender) || (e2 = "key:gender, invalid value:" + s2.gender, i2 = false);
- break;
- case "birthday":
- Ge(s2.birthday) || (e2 = "birthday must be a number", i2 = false);
- break;
- case "location":
- ke(s2.location) || (e2 = "location must be a string", i2 = false);
- break;
- case "selfSignature":
- ke(s2.selfSignature) || (e2 = "selfSignature must be a string", i2 = false);
- break;
- case "allowType":
- Ze(De, s2.allowType) || (e2 = "key:allowType, invalid value:" + s2.allowType, i2 = false);
- break;
- case "language":
- Ge(s2.language) || (e2 = "language must be a number", i2 = false);
- break;
- case "avatar":
- ke(s2.avatar) || (e2 = "avatar must be a string", i2 = false);
- break;
- case "messageSettings":
- 0 !== s2.messageSettings && 1 !== s2.messageSettings && (e2 = "messageSettings must be 0 or 1", i2 = false);
- break;
- case "adminForbidType":
- Ze(Se, s2.adminForbidType) || (e2 = "key:adminForbidType, invalid value:" + s2.adminForbidType, i2 = false);
- break;
- case "level":
- Ge(s2.level) || (e2 = "level must be a number", i2 = false);
- break;
- case "role":
- Ge(s2.role) || (e2 = "role must be a number", i2 = false);
- break;
- default:
- e2 = "unknown key:" + t2 + " " + s2[t2], i2 = false;
- }
- }
- return { valid: i2, tips: e2 };
- }
-};
-var nn = class {
- constructor(e2) {
- this.MAX_LENGTH = e2, this.map = /* @__PURE__ */ new Map();
- }
- set(e2) {
- if (this.map.size >= this.MAX_LENGTH) {
- const e3 = this.map.entries().next().value[0];
- this.map.delete(e3);
- }
- this.map.set(e2, 1);
- }
- has(e2) {
- return this.map.has(e2);
- }
- delete(e2) {
- this.has(e2) && this.map.delete(e2);
- }
- reset() {
- this.map.clear();
- }
-};
-var on = ["groupID", "name", "avatar", "type", "introduction", "notification", "ownerID", "selfInfo", "createTime", "infoSequence", "lastInfoTime", "lastMessage", "nextMessageSeq", "memberNum", "maxMemberNum", "memberList", "joinOption", "groupCustomField", "muteAllMembers", "isSupportTopic", "inviteOption", "_lastRevokedTime"];
-var rn = class {
- constructor(e2) {
- this.groupID = "", this.name = "", this.avatar = "", this.type = "", this.introduction = "", this.notification = "", this.ownerID = "", this.createTime = "", this.infoSequence = "", this.lastInfoTime = "", this.selfInfo = { messageRemindType: "", joinTime: "", nameCard: "", role: "", userID: "", memberCustomField: void 0, readedSequence: 0, excludedUnreadSequenceList: void 0 }, this.lastMessage = { lastTime: "", lastSequence: "", fromAccount: "", messageForShow: "" }, this.nextMessageSeq = "", this.memberNum = "", this.memberCount = "", this.maxMemberNum = "", this.maxMemberCount = "", this.joinOption = "", this.inviteOption = "", this.groupCustomField = [], this.muteAllMembers = false, this.isSupportTopic = false, this._lastRevokedTime = 0, this._initGroup(e2);
- }
- set memberNum(e2) {
- }
- set maxMemberNum(e2) {
- }
- get memberNum() {
- return this.memberCount;
- }
- get maxMemberNum() {
- return this.maxMemberCount;
- }
- _initGroup(e2) {
- for (const t2 in e2)
- on.indexOf(t2) < 0 || ("selfInfo" !== t2 ? ("memberNum" === t2 && (this.memberCount = e2[t2]), "maxMemberNum" === t2 && (this.maxMemberCount = e2[t2]), "isSupportTopic" !== t2 ? this[t2] = e2[t2] : this.isSupportTopic = 1 === e2[t2]) : this.updateSelfInfo(e2[t2]));
- }
- updateGroup(e2) {
- e2.appid = void 0, e2.grossTopicNextMsgSeq = void 0, e2.selfInfo && (e2.selfInfo.grossTopicReadSeq = void 0);
- const t2 = JSON.parse(JSON.stringify(e2));
- t2.lastMsgTime && (this.lastMessage.lastTime = t2.lastMsgTime), $e(t2.muteAllMembers) || ("On" === t2.muteAllMembers ? t2.muteAllMembers = true : t2.muteAllMembers = false), t2.groupCustomField && st(this.groupCustomField, t2.groupCustomField), $e(t2.memberNum) || (this.memberCount = t2.memberNum), $e(t2.maxMemberNum) || (this.maxMemberCount = t2.maxMemberNum), $e(t2.isSupportTopic) || (this.isSupportTopic = Ge(t2.isSupportTopic) ? 1 === t2.isSupportTopic : t2.isSupportTopic), We(this, t2, ["members", "errorCode", "lastMsgTime", "groupCustomField", "memberNum", "maxMemberNum", "isSupportTopic"]), Fe(t2.members) && 0 < t2.members.length && t2.members.forEach((e3) => {
- e3.userID === this.selfInfo.userID && We(this.selfInfo, e3, ["sequence"]);
- });
- }
- updateSelfInfo({ nameCard: e2, joinTime: t2, role: s2, messageRemindType: i2, readedSequence: n2, excludedUnreadSequenceList: o2 }) {
- e2 = { nameCard: e2, joinTime: t2, role: s2, messageRemindType: i2, readedSequence: n2, excludedUnreadSequenceList: o2 };
- We(this.selfInfo, { ...e2 }, [], ["", null, void 0, 0, NaN]);
- }
- setSelfNameCard(e2) {
- this.selfInfo.nameCard = e2;
- }
-};
-var an = function(e2, t2, s2) {
- return $e(e2) ? { lastTime: 0, lastSequence: 0, fromAccount: "", messageForShow: "", payload: null, type: "", isRevoked: false, cloudCustomData: "", onlineOnlyFlag: false, nick: "", nameCard: "", version: 0, isPeerRead: false, revoker: null } : s2 && e2.ID || e2 instanceof xi ? { lastTime: e2.time || 0, lastSequence: e2.sequence || 0, fromAccount: e2.from || "", messageForShow: yt(e2.type, e2.payload, t2), payload: e2.payload || null, type: e2.type || null, isRevoked: e2.isRevoked || false, cloudCustomData: e2.cloudCustomData || "", onlineOnlyFlag: e2._onlineOnlyFlag || false, nick: e2.nick || "", nameCard: e2.nameCard || "", version: e2.version || 0, isPeerRead: e2.isPeerRead || false, revoker: e2.revoker || null } : { ...e2, messageForShow: yt(e2.type, e2.payload, t2) };
-};
-var cn = class {
- constructor(e2, t2, s2 = false) {
- this.conversationID = e2.conversationID || "", this.unreadCount = e2.unreadCount || 0, this.type = e2.type || "", this.lastMessage = an(e2.lastMessage, t2, s2), e2.lastMsgTime && (this.lastMessage.lastTime = e2.lastMsgTime), this._isInfoCompleted = false, this.peerReadTime = e2.peerReadTime || 0, this.groupAtInfoList = [], this.remark = "", this.isPinned = e2.isPinned || false, this.messageRemindType = e2.messageRemindType, this.markList = e2.markList || [], this.customData = e2.customData || "", this.conversationGroupList = e2.conversationGroupList || [], this.draftText = e2.draftText || "", this._initProfile(e2), this.subType = this.groupProfile ? this.groupProfile.type : "";
- }
- get toAccount() {
- return this.conversationID.startsWith(t.CONV_C2C) ? this.conversationID.replace(t.CONV_C2C, "") : this.conversationID.startsWith(t.CONV_GROUP) ? this.conversationID.replace(t.CONV_GROUP, "") : "";
- }
- _initProfile(s2) {
- Object.keys(s2).forEach((e2) => {
- switch (e2) {
- case "userProfile":
- this.userProfile = s2.userProfile;
- break;
- case "groupProfile":
- this.groupProfile = s2.groupProfile;
- }
- }), $e(this.userProfile) && this.type === t.CONV_C2C ? this.userProfile = new sn({ userID: s2.conversationID.replace("C2C", "") }) : $e(this.groupProfile) && this.type === t.CONV_GROUP && (this.groupProfile = new rn({ groupID: s2.conversationID.replace("GROUP", "") }));
- }
- updateUnreadCount(e2) {
- var { nextUnreadCount: e2, isFromGetConversations: s2, isUnreadC2CMessage: i2 } = e2;
- $e(e2) || (nt(this.subType) ? this.unreadCount = 0 : s2 && this.type === t.CONV_GROUP || s2 && this.type === t.CONV_TOPIC || i2 && this.type === t.CONV_C2C ? this.unreadCount = e2 : this.unreadCount = this.unreadCount + e2);
- }
- updateLastMessage(e2) {
- this.lastMessage = an(e2);
- }
- updateGroupAtInfoList(s2) {
- if (!this._isNeedMergeGroupAtInfo(s2)) {
- let [...e2] = s2.groupAtType;
- -1 !== e2.indexOf(t.CONV_AT_ME) && -1 !== e2.indexOf(t.CONV_AT_ALL) && (e2 = [t.CONV_AT_ALL_AT_ME]);
- s2 = { from: s2.from, groupID: s2.groupID, topicID: s2.topicID, messageSequence: s2.sequence, atTypeArray: e2, __random: s2.__random, __sequence: s2.__sequence };
- this.groupAtInfoList.push(s2);
- }
- }
- _isNeedMergeGroupAtInfo(s2) {
- const { groupID: e2, sequence: i2 } = s2;
- if (!ot({ groupID: e2 }))
- return false;
- let n2 = false;
- return this.groupAtInfoList.forEach((e3) => {
- e3.messageSequence === i2 && (-1 < e3.atTypeArray.indexOf(t.CONV_AT_ME) && -1 < s2.groupAtType.indexOf(t.CONV_AT_ALL) && (e3.atTypeArray = [t.CONV_AT_ALL_AT_ME]), -1 < e3.atTypeArray.indexOf(t.CONV_AT_ALL) && -1 < s2.groupAtType.indexOf(t.CONV_AT_ME) && (e3.atTypeArray = [t.CONV_AT_ALL_AT_ME], e3.__random = s2.__random, e3.__sequence = s2.__sequence), n2 = true);
- }), n2;
- }
- clearGroupAtInfoList() {
- this.groupAtInfoList.length = 0;
- }
- reduceUnreadCount() {
- return 1 <= this.unreadCount && (--this.unreadCount, true);
- }
- isLastMessageRevoked({ sequence: e2, time: s2 }) {
- return this.type === t.CONV_C2C && e2 === this.lastMessage.lastSequence && s2 === this.lastMessage.lastTime || this.type === t.CONV_GROUP && e2 === this.lastMessage.lastSequence;
- }
- setLastMessageRevoked(e2) {
- this.lastMessage.isRevoked = e2;
- }
- setLastMessageRevoker(e2) {
- this.lastMessage.revoker = e2;
- }
- setDraftText(e2) {
- this.draftText = e2;
- }
-};
-var ln = { [t.MSG_REMIND_ACPT_AND_NOTE]: 0, [t.MSG_REMIND_DISCARD]: 1, [t.MSG_REMIND_ACPT_NOT_NOTE]: 2 };
-var un = class {
- constructor(e2) {
- this._convM = e2, this._n = "MsgRemindHandler";
- }
- onAllRcvMsgOptNotify(t2) {
- t2 = this._handleResult(t2);
- this._convM.emitOEvt(e.ALL_RECEIVE_MESSAGE_OPT_UPDATED, t2);
- }
- getC2CMsgRemindType(t2) {
- const s2 = this._n + ".getC2CMsgRemindType";
- return this._convM.req({ P: ri.GET_C2C_PEER_MUTE_NOTIFICATIONS, data: { toAccount: this._convM.getMyUserID(), userIDList: t2 } }).then((e2) => {
- Ce.l(s2 + " ok. userIDList:" + t2);
- e2 = e2.data.muteFlagList;
- this._convM.onC2CMsgRemindTypeFetched(e2);
- }).catch((e2) => {
- Ce.e(s2 + " failed. error:", e2);
- });
- }
- set(e2) {
- return e2.groupID ? this._setGroupMsgRemindType(e2) : Fe(e2.userIDList) ? this._setC2CMsgRemindType(e2) : void 0;
- }
- _setGroupMsgRemindType(t2) {
- const s2 = this._n + "._setGroupMsgRemindType", { groupID: e2, messageRemindType: i2 } = t2, n2 = `groupID:${e2} messageRemindType:` + i2, o2 = new Ti("_setGroupMsgRemindType"), r2 = (o2.setMessage(n2), this._get(vs));
- return r2 ? r2.modifyGroupMemberInfo({ groupID: e2, messageRemindType: i2, userID: this._convM.getMyUserID() }).then(() => {
- o2.end(), Ce.l(s2 + " ok. " + n2);
- var e3 = this.onGroupMsgRemindTypeUpdated(t2);
- return this._convM.onTotalUnreadCountUpdate(), Zs(e3);
- }).catch((e3) => (o2.setError(e3).end(), Ce.e(s2 + " failed. error:", e3), ni(e3))) : ni({ code: ei.NO_MODULE });
- }
- onGroupMsgRemindTypeUpdated(t2) {
- var { groupID: s2, messageRemindType: i2 } = t2;
- Ce.l(this._n + `.onGroupMsgRemindTypeUpdated groupID:${s2} messageRemindType:` + i2);
- const n2 = this._get(vs).getLocalGroupProfile(s2);
- if (n2 && (n2.selfInfo.messageRemindType = i2), rt(s2)) {
- const t3 = s2, n3 = Tt(t3), o2 = this._get(Ss).getLocalTopic(n3, t3);
- return o2 && o2.updateSelfInfo({ messageRemindType: i2 }) && this._convM.emitOEvt(e.TOPIC_UPDATED, { groupID: n3, topic: o2 }), { topic: o2 };
- }
- return this._convM.patchMsgRemindType({ ID: s2, isC2CConversation: false, messageRemindType: i2 }) && this._emitConvUpdate(), { group: n2 };
- }
- _setC2CMsgRemindType(e2) {
- const r2 = this._n + "._setC2CMsgRemindType", { userIDList: t2, messageRemindType: a2 } = e2, c2 = t2.slice(0, 30), s2 = ln[a2] || 0, l2 = `userIDList:${c2} messageRemindType:` + a2, d2 = new Ti("_setC2CMsgRemindType");
- return d2.setMessage(l2), this._convM.req({ P: ri.SET_C2C_PEER_MUTE_NOTIFICATIONS, data: { userIDList: c2, muteFlag: s2 } }).then((e3) => {
- d2.end();
- const t3 = e3.data["errorList"], s3 = [], i2 = [], n2 = (Fe(t3) && t3.forEach((e4) => {
- s3.push(e4.userID), i2.push({ userID: e4.userID, code: e4.errorCode });
- }), c2.filter((e4) => -1 === s3.indexOf(e4)));
- Ce.l(r2 + ` ok. ${l2} successUserIDList:${n2} failureUserIDList:` + JSON.stringify(i2));
- let o2 = 0;
- return n2.forEach((e4) => {
- this._convM.patchMsgRemindType({ ID: e4, isC2CConversation: true, messageRemindType: a2 }) && (o2 += 1);
- }), 1 <= o2 && this._emitConvUpdate(), c2.length = s3.length = 0, this._convM.onTotalUnreadCountUpdate(), ii({ successUserIDList: n2.map((e4) => ({ userID: e4 })), failureUserIDList: i2 });
- }).catch((e3) => (d2.setError(e3).end(), Ce.e(r2 + " failed. error:", e3), ni(e3)));
- }
- _get(e2) {
- return this._convM.get(e2);
- }
- _emitConvUpdate() {
- this._convM.emitConvUpdate(true, false);
- }
- setAllRcvMsgOpt(e2) {
- const s2 = this._n + ".setAllRcvMsgOpt", { messageRemindType: i2 = t.MSG_REMIND_ACPT_NOT_NOTE, isRepeated: n2 = true } = e2, { startTime: o2 = 0, endTime: r2 = 0 } = this._calcStartAndEndTime(e2), a2 = JSON.stringify(e2), c2 = new Ti("setAllRcvMsgOpt");
- return c2.setMessage(a2), Ce.l(s2 + " options:" + a2), this._convM.req({ P: ri.SET_ALL_RECEIVE_MSG_OPT, data: { messageRemindType: ln[i2], startTime: o2, endTime: r2, isRepeated: n2 ? 1 : 0 } }).then((e3) => (c2.end(), Ce.l(s2 + " ok."), Zs(e3))).catch((e3) => (c2.setError(e3).end(), Ce.e(s2 + " failed. error:", e3), ni(e3)));
- }
- _calcStartAndEndTime(e2) {
- const { startHour: t2 = 0, startMinute: s2 = 0, startSecond: i2 = 0, duration: n2 = 0, isRepeated: o2 = true } = e2, r2 = /* @__PURE__ */ new Date(), a2 = r2.getFullYear(), c2 = r2.getMonth(), d2 = r2.getDate(), l2 = Math.round(new Date(a2, c2, d2, t2, s2, i2).getTime() / 1e3);
- let _2 = o2 && 86400 <= n2 ? l2 + 86400 : l2 + n2;
- return { startTime: l2, endTime: _2 };
- }
- getAllRcvMsgOpt() {
- const t2 = this._n + ".getAllRcvMsgOpt", s2 = new Ti("getAllRcvMsgOpt");
- return this._convM.req({ P: ri.GET_ALL_RECEIVE_MSG_OPT, data: { toAccount: this._convM.getMyUserID() } }).then((e2) => {
- e2 = e2.data, s2.setMessage(JSON.stringify(e2)).end(), Ce.l(t2 + " ok. data:" + JSON.stringify(e2)), e2 = this._handleResult(e2);
- return Zs(e2);
- }).catch((e2) => (s2.setError(e2).end(), Ce.e(t2 + " failed. error:", e2), ni(e2)));
- }
- _handleResult(e2) {
- var { messageRemindType: e2, startTime: s2, endTime: i2, isRepeated: n2 } = e2;
- let o2 = t.MSG_REMIND_ACPT_AND_NOTE;
- return 1 === e2 && (o2 = t.MSG_REMIND_DISCARD), { messageRemindType: o2 = 2 === e2 ? t.MSG_REMIND_ACPT_NOT_NOTE : o2, startTime: s2, endTime: i2, isRepeated: 1 === n2 };
- }
- reset() {
- Ce.l(this._n + ".reset");
- }
-};
-var dn = class {
- constructor(e2) {
- this._convM = e2, this._n = "ConvGroupHandler", this._convGroupMap = /* @__PURE__ */ new Map(), this._startIndex = 0, this._pagingStatus = Ut;
- }
- setConvCustomData(e2) {
- const s2 = this._n + ".setConvCustomData", { conversationIDList: i2, customData: o2 } = e2, r2 = (Ce.l(s2 + " options:", e2), new Ti("setConvCustomData")), n2 = (r2.setMessage(JSON.stringify(e2)), { fromAccount: this._getMyUserID(), itemList: [] }), a2 = [], c2 = [];
- return i2.forEach((e3) => {
- if (!this._hasLocalConv(e3))
- return this._onConvNotFound(c2, e3), true;
- if (!at(e3) && !ct(e3))
- return this._onConvIDInvalid(c2, e3), true;
- const s3 = { operationType: 2, contactItem: void 0, customMark: o2 };
- at(e3) ? s3.contactItem = { type: 1, toAccount: e3.replace(t.CONV_C2C, "") } : ct(e3) && (s3.contactItem = { type: 2, groupID: e3.replace(t.CONV_GROUP, "") }), n2.itemList.push(s3);
- }), c2.length === i2.length ? ii({ successConversationIDList: a2, failureConversationIDList: c2 }) : this._convM.req({ P: ri.SET_CONV_CUSTOM_DATA, data: n2 }).then((e3) => {
- r2.end(), Ce.l(s2 + " ok");
- const n3 = e3.data["resultItem"];
- if (Fe(n3)) {
- let t2, s3, i3 = false;
- n3.forEach((e4) => {
- t2 = this._concatConvID(e4.contactItem), 0 === e4.resultCode ? (a2.push(t2), (s3 = this._getLocalConv(t2)) && s3.customData !== o2 && (s3.customData = o2, i3 = true)) : c2.push({ conversationID: t2, code: e4.resultCode, message: e4.resultInfo });
- }), true === i3 && this._emitConvUpdate();
- }
- return Zs({ successConversationIDList: a2, failureConversationIDList: c2 });
- }).catch((e3) => (r2.setError(e3).end(), Ce.e(s2 + " failed. error:", e3), ni(e3)));
- }
- markConv(e2) {
- if (!this._convM.canIUse(M.CONV_MARK))
- return this._convM.noUse("markConv");
- const s2 = this._n + ".markConv", { conversationIDList: i2, markType: o2, enableMark: r2 } = e2, a2 = (Ce.l(s2 + " options:", e2), new Ti("markConv"));
- a2.setMessage(JSON.stringify(e2));
- let n2 = void 0, c2 = void 0;
- e2 = this._getFlagBit(o2);
- true === r2 ? c2 = [e2] : n2 = [e2];
- const _2 = { fromAccount: this._getMyUserID(), itemList: [] }, l2 = [], d2 = [];
- return i2.forEach((e3) => {
- if (!this._hasLocalConv(e3))
- return this._onConvNotFound(d2, e3), true;
- if (!at(e3) && !ct(e3))
- return this._onConvIDInvalid(d2, e3), true;
- const s3 = { operationType: 1, contactItem: void 0, clearMark: n2, setMark: c2 };
- at(e3) ? s3.contactItem = { type: 1, toAccount: e3.replace(t.CONV_C2C, "") } : ct(e3) && (s3.contactItem = { type: 2, groupID: e3.replace(t.CONV_GROUP, "") }), _2.itemList.push(s3);
- }), d2.length === i2.length ? ii({ successConversationIDList: l2, failureConversationIDList: d2 }) : this._convM.req({ P: ri.MARK_CONV, data: _2 }).then((e3) => {
- a2.end(), Ce.l(s2 + " ok");
- const n3 = e3.data["resultItem"];
- if (Fe(n3)) {
- let t2, s3, i3 = false;
- n3.forEach((e4) => {
- if (t2 = this._concatConvID(e4.contactItem), 0 === e4.resultCode) {
- if (l2.push(t2), s3 = this._getLocalConv(t2)) {
- const t3 = s3.markList.indexOf(o2);
- true === r2 ? -1 === t3 && (s3.markList.push(o2), i3 = true) : -1 !== t3 && (s3.markList.splice(t3, 1), i3 = true);
- }
- } else
- d2.push({ conversationID: t2, code: e4.resultCode, message: e4.resultInfo });
- }), true === i3 && this._emitConvUpdate();
- }
- return Zs({ successConversationIDList: l2, failureConversationIDList: d2 });
- }).catch((e3) => (a2.setError(e3).end(), Ce.e(s2 + " failed. error:", e3), ni(e3)));
- }
- getLocalConvGroupList() {
- return Ce.l(this._n + ".getLocalConvGroupList pagingStatus:" + this._pagingStatus), this._pagingStatus === wt ? this.getRemoteConvGroupList().then(() => Zs([...this._convGroupMap.values()])) : ii([...this._convGroupMap.values()]);
- }
- searchConvGroupAndMark(e2, t2) {
- const s2 = this._n + ".searchConvGroupAndMark", i2 = [];
- return e2.forEach((e3) => {
- 1 === t2 ? i2.push({ type: 1, toAccount: e3 }) : 2 === t2 && i2.push({ type: 2, groupID: e3 });
- }), Ce.l(s2 + ` type:${t2} list:`, e2), this._convM.req({ P: ri.SEARCH_CONV_GRP_MARK, data: { fromAccount: this._getMyUserID(), contactItem: i2 } }).then((e3) => {
- var { contactItem: e3, groupItem: t3 } = e3.data;
- Ce.l(s2 + " ok. contactItem:", e3, "groupItem:", t3), this._fillConvGroupMap(t3), this._handleContactItem(e3), this._emitConvUpdate();
- }).catch((e3) => {
- Ce.w(s2 + " failed. error:", e3);
- });
- }
- _fillConvGroupMap(e2) {
- Fe(e2) && e2.forEach((e3) => {
- var { convGroupID: e3, groupName: t2 } = e3;
- this._convGroupMap.set(e3, t2);
- });
- }
- _handleContactItem(e2) {
- if (Fe(e2)) {
- let o2, r2;
- e2.forEach((e3) => {
- const t2 = [], { standardMark: s2, customData: i2, convGroupIDList: n2 } = e3;
- Fe(n2) && n2.forEach((e4) => {
- this._convGroupMap.has(e4) && t2.push(this._convGroupMap.get(e4));
- }), r2 = this._concatConvID(e3), (o2 = this._getLocalConv(r2)) && (o2.markList = vt(s2), o2.customData = i2 || "", o2.conversationGroupList = [...t2]);
- });
- }
- }
- getRemoteConvGroupList() {
- const n2 = this._n + ".getRemoteConvGroupList";
- return this._pagingStatus = Gt, this._convM.req({ P: ri.GET_CONV_GRP_LIST, data: { fromAccount: this._getMyUserID(), startIndex: this._startIndex } }).then((e2) => {
- var { completeFlag: e2, contactItem: t2, nextStartIndex: s2 = 0, groupItem: i2 } = e2.data;
- if (this._startIndex = s2, Ce.l(n2 + ` completeFlag:${e2} nextStartIndex:${s2}, groupItem:`, i2, "contactItem:", t2), this._fillConvGroupMap(i2), this._handleContactItem(t2), 0 === e2)
- return this.getRemoteConvGroupList();
- 1 === e2 && (this._pagingStatus = kt, this._emitConvUpdate(), this._emitConvGroupListUpdate());
- }).catch((e2) => {
- this._pagingStatus = wt, Ce.w(n2 + " failed. error:", e2);
- });
- }
- createConvGroup(e2) {
- if (!this._convM.canIUse(M.CONV_GROUP))
- return this._convM.noUse("createConvGroup");
- const i2 = this._n + ".createConvGroup", o2 = (Ce.l(i2 + " options:", e2), new Ti("createConvGroup")), { groupName: r2, conversationIDList: s2 } = (o2.setMessage(JSON.stringify(e2)), e2), n2 = { fromAccount: this._getMyUserID(), itemList: [{ groupName: r2, contactItem: [] }] }, a2 = [], c2 = [];
- return s2.forEach((e3) => this._hasLocalConv(e3) ? at(e3) || ct(e3) ? void (at(e3) ? n2.itemList[0].contactItem.push({ type: 1, toAccount: e3.replace(t.CONV_C2C, "") }) : ct(e3) && n2.itemList[0].contactItem.push({ type: 2, groupID: e3.replace(t.CONV_GROUP, "") })) : (this._onConvIDInvalid(c2, e3), true) : (this._onConvNotFound(c2, e3), true)), c2.length === s2.length ? ii({ successConversationIDList: a2, failureConversationIDList: c2 }) : this._convM.req({ P: ri.CREATE_CONV_GRP, data: n2 }).then((e3) => {
- o2.end(), Ce.l(i2 + " ok");
- const t2 = e3.data["groupResultItem"], { groupItem: s3, resultItem: n3 } = t2[0];
- if (be(s3) && (this._convGroupMap.set(s3.convGroupID, s3.groupName), this._emitConvGroupListUpdate()), Fe(n3)) {
- let t3, s4, i3 = false;
- n3.forEach((e4) => {
- t3 = this._concatConvID(e4.contactItem), 0 === e4.resultCode ? (a2.push(t3), (s4 = this._getLocalConv(t3)) && -1 === s4.conversationGroupList.indexOf(r2) && (s4.conversationGroupList.push(r2), i3 = true)) : c2.push({ conversationID: t3, code: e4.resultCode, message: e4.resultInfo });
- }), true === i3 && (this._emitConvUpdate(), this._emitConvGroupListUpdate());
- }
- return Zs({ successConversationIDList: a2, failureConversationIDList: c2 });
- }).catch((e3) => (o2.setError(e3).end(), Ce.e(i2 + " failed. error:", e3), ni(e3)));
- }
- deleteConvGroup(t2) {
- if (!this._convM.canIUse(M.CONV_GROUP))
- return this._convM.noUse("deleteConvGroup");
- const i2 = this._n + ".deleteConvGroup", n2 = (Ce.l(i2 + " groupName:" + t2), new Ti("deleteConvGroup"));
- return n2.setMessage(t2), this._convM.req({ P: ri.DEL_CONV_GRP, data: { fromAccount: this._getMyUserID(), groupName: [t2] } }).then((e2) => {
- n2.end(), Ce.l(i2 + " ok");
- const s2 = e2.data["groupItem"];
- if (Fe(s2)) {
- let t3 = false;
- s2.forEach((e3) => {
- this._convGroupMap.has(e3.convGroupID) && (this._convGroupMap.delete(e3.convGroupID), t3 = true);
- }), true === t3 && this._emitConvGroupListUpdate();
- }
- this._eraseFromConversationGroupList([t2]);
- }).catch((e2) => (n2.setError(e2).end(), Ce.e(i2 + " failed. error:", e2), ni(e2)));
- }
- renameConvGroup(e2) {
- if (!this._convM.canIUse(M.CONV_GROUP))
- return this._convM.noUse("renameConvGroup");
- const o2 = this._n + ".renameConvGroup", r2 = (Ce.l(o2 + " options:", e2), new Ti("renameConvGroup")), { oldName: a2, newName: c2 } = (r2.setMessage(JSON.stringify(e2)), e2);
- return this._convM.req({ P: ri.RENAME_CONV_GRP, data: { fromAccount: this._getMyUserID(), updateType: 1, updateGroup: { updateGroupType: 1, oldName: a2, newName: c2 } } }).then((e3) => {
- r2.end(), Ce.l(o2 + " ok");
- e3 = e3.data.updateGroupResult, e3 = e3.convGroupID;
- this._convGroupMap.set(e3, c2), this._emitConvGroupListUpdate();
- const t2 = this._convM.getLocalConvList();
- let s2, i2, n2 = false;
- t2.forEach((e4) => {
- s2 = e4.conversationGroupList, -1 !== (i2 = s2.indexOf(a2)) && (s2.splice(i2, 1, c2), n2 = true);
- }), true === n2 && this._emitConvUpdate();
- }).catch((e3) => (r2.setError(e3).end(), Ce.e(o2 + " failed. error:", e3), ni(e3)));
- }
- addConvsToGroup(e2) {
- if (!this._convM.canIUse(M.CONV_GROUP))
- return this._convM.noUse("addConvsToGroup");
- const s2 = this._n + ".addConvsToGroup", i2 = (Ce.l(s2 + " options:", e2), new Ti("addConvsToGroup")), { conversationIDList: n2, groupName: o2 } = (i2.setMessage(JSON.stringify(e2)), e2), r2 = { fromAccount: this._getMyUserID(), updateType: 1, updateGroup: { updateGroupType: 2, groupName: o2, updateItem: [] } }, a2 = [], c2 = [];
- return n2.forEach((e3) => this._hasLocalConv(e3) ? at(e3) || ct(e3) ? void (at(e3) ? r2.updateGroup.updateItem.push({ operationType: 1, contactItem: { type: 1, toAccount: e3.replace(t.CONV_C2C, "") } }) : ct(e3) && r2.updateGroup.updateItem.push({ operationType: 1, contactItem: { type: 2, groupID: e3.replace(t.CONV_GROUP, "") } })) : (this._onConvIDInvalid(c2, e3), true) : (this._onConvNotFound(c2, e3), true)), c2.length === n2.length ? ii({ successConversationIDList: a2, failureConversationIDList: c2 }) : this._convM.req({ P: ri.ADD_CONV_TO_GRP, data: r2 }).then((e3) => {
- i2.end(), Ce.l(s2 + " ok");
- const n3 = e3.data.updateGroupResult["contactResultItem"];
- if (Fe(n3)) {
- let t2, s3, i3 = false;
- n3.forEach((e4) => {
- t2 = this._concatConvID(e4.contactItem), 0 === e4.resultCode ? (s3 = this._getLocalConv(t2)) && -1 === s3.conversationGroupList.indexOf(o2) && (s3.conversationGroupList.push(o2), a2.push(t2), i3 = true) : c2.push({ conversationID: t2, code: e4.resultCode, message: e4.resultInfo });
- }), true === i3 && (this._emitConvUpdate(), this._emitConvInGroupUpdate(o2));
- }
- return Zs({ successConversationIDList: a2, failureConversationIDList: c2 });
- }).catch((e3) => (i2.setError(e3).end(), Ce.e(s2 + " failed. error:", e3), ni(e3)));
- }
- deleteConvsFromGroup(e2) {
- var s2 = "deleteConvsFromGroup";
- if (!this._convM.canIUse(M.CONV_GROUP))
- return this._convM.noUse(s2);
- const i2 = this._n + "." + s2, o2 = (Ce.l(i2 + " options:", e2), new Ti(s2)), { conversationIDList: n2, groupName: r2 } = (o2.setMessage(JSON.stringify(e2)), e2), a2 = { fromAccount: this._getMyUserID(), updateType: 1, updateGroup: { updateGroupType: 2, groupName: r2, updateItem: [] } }, c2 = [], l2 = [];
- return n2.forEach((e3) => this._hasLocalConv(e3) ? at(e3) || ct(e3) ? void (at(e3) ? a2.updateGroup.updateItem.push({ operationType: 2, contactItem: { type: 1, toAccount: e3.replace(t.CONV_C2C, "") } }) : ct(e3) && a2.updateGroup.updateItem.push({ operationType: 2, contactItem: { type: 2, groupID: e3.replace(t.CONV_GROUP, "") } })) : (this._onConvIDInvalid(l2, e3), true) : (this._onConvNotFound(l2, e3), true)), l2.length === n2.length ? ii({ successConversationIDList: c2, failureConversationIDList: l2 }) : this._convM.req({ P: ri.DEL_CONV_FROM_GRP, data: a2 }).then((e3) => {
- o2.end(), Ce.l(i2 + " ok");
- const n3 = e3.data.updateGroupResult["contactResultItem"];
- if (Fe(n3)) {
- let t2, s3, i3 = false;
- n3.forEach((e4) => {
- if (t2 = this._concatConvID(e4.contactItem), 0 === e4.resultCode) {
- if (s3 = this._getLocalConv(t2)) {
- const e5 = s3.conversationGroupList.indexOf(r2);
- -1 !== e5 && (s3.conversationGroupList.splice(e5, 1), c2.push(t2), i3 = true);
- }
- } else
- l2.push({ conversationID: t2, code: e4.resultCode, message: e4.resultInfo });
- }), true === i3 && (this._emitConvUpdate(), this._emitConvInGroupUpdate(r2));
- }
- return Zs({ successConversationIDList: c2, failureConversationIDList: l2 });
- }).catch((e3) => (o2.setError(e3).end(), Ce.e(i2 + " failed. error:", e3), ni(e3)));
- }
- onConvMarkUpdated(e2) {
- if (!Oe(e2)) {
- let n2, o2, r2 = (Ce.l(this._n + ".onConvMarkUpdated markItemList:", e2), false);
- e2.forEach((e3) => {
- var { recentContactItem: e3, optType: t2, standardMark: s2, customMark: i2 } = e3;
- if (n2 = this._concatConvID(e3), o2 = this._getLocalConv(n2)) {
- if (1 === t2)
- r2 = this._diffStandardMark(o2, s2);
- else if (2 === t2)
- r2 = this._diffCustomMark(o2, i2);
- else if (3 === t2) {
- const e4 = this._diffStandardMark(o2, s2), n3 = this._diffCustomMark(o2, i2);
- r2 = e4 || n3;
- }
- }
- }), true === r2 && this._emitConvUpdate();
- }
- }
- _diffStandardMark(e2, t2) {
- t2 = vt(t2);
- let s2 = false;
- return true !== function(s3, i2) {
- if (s3 === i2)
- return true;
- if (!s3 || !i2)
- return false;
- if (s3.length !== i2.length)
- return false;
- for (let e3 = 0, t3 = s3.length; e3 < t3; e3++)
- if (s3[e3] !== i2[e3])
- return false;
- return true;
- }(e2.markList, t2) && (e2.markList = t2, s2 = true), s2;
- }
- _diffCustomMark(e2, t2) {
- let s2 = false;
- return e2.customData !== t2 && void 0 !== t2 && (e2.customData = t2, s2 = true), s2;
- }
- onConvGroupCreated(e2) {
- Ce.l(this._n + ".onConvGroupCreated resultList:", e2);
- let o2 = false, s2 = false;
- Fe(e2) && (e2.forEach((e3) => {
- const { groupID: t2, groupName: i2 } = e3.msgGroupItem, n2 = (this._convGroupMap.get(t2) !== i2 && (this._convGroupMap.set(t2, i2), s2 = true), e3.msgRecentContactItem);
- if (Fe(n2)) {
- let t3, s3;
- n2.forEach((e4) => {
- t3 = this._concatConvID(e4), (s3 = this._getLocalConv(t3)) && -1 === s3.conversationGroupList.indexOf(i2) && (s3.conversationGroupList.push(i2), o2 = true);
- });
- }
- }), true === o2 && this._emitConvUpdate(), true === s2 && this._emitConvGroupListUpdate());
- }
- onConvGroupDeleted(e2) {
- Ce.l(this._n + ".onConvGroupDeleted groupItemList:", e2);
- const i2 = [];
- if (Fe(e2)) {
- let s2 = false;
- e2.forEach((e3) => {
- var { groupID: e3, groupName: t2 } = e3;
- this._convGroupMap.has(e3) && (this._convGroupMap.delete(e3), s2 = true, i2.push(t2));
- }), true === s2 && this._emitConvGroupListUpdate();
- }
- this._eraseFromConversationGroupList(i2);
- }
- _eraseFromConversationGroupList(t2) {
- Oe(t2) || (this._convM.getLocalConvList().forEach((e2) => {
- e2.conversationGroupList = e2.conversationGroupList.filter((e3) => !t2.includes(e3));
- }), this._emitConvUpdate());
- }
- onConvGroupNameUpdated(e2) {
- Ce.l(this._n + ".onConvGroupNameUpdated options:", e2);
- const { groupID: n2, groupName: o2, oldGroupName: r2 } = e2;
- if (this._convGroupMap.get(n2) !== o2) {
- this._convGroupMap.set(n2, o2), this._emitConvGroupListUpdate();
- const a2 = this._convM.getLocalConvList();
- let t2, s2, i2 = false;
- a2.forEach((e3) => {
- t2 = e3.conversationGroupList, -1 !== (s2 = t2.indexOf(r2)) && (t2.splice(s2, 1, o2), i2 = true);
- }), true === i2 && this._emitConvUpdate();
- }
- }
- onConvInGroupUpdated(e2) {
- Ce.l(this._n + ".onConvInGroupUpdated options:", e2);
- const { oldGroupName: r2, recentContactUpdateGroupItem: t2 } = e2;
- if (Fe(t2)) {
- let s2, i2, n2, o2 = false;
- t2.forEach((e3) => {
- var { contactOptType: e3, recentContactItem: t3 } = e3;
- s2 = this._concatConvID(t3), (i2 = this._getLocalConv(s2)) && (n2 = i2.conversationGroupList.indexOf(r2), 1 === e3 ? -1 === n2 && (i2.conversationGroupList.push(r2), o2 = true) : 2 === e3 && -1 !== n2 && (i2.conversationGroupList.splice(n2, 1), o2 = true));
- }), true === o2 && (this._emitConvUpdate(), this._emitConvInGroupUpdate(r2));
- }
- }
- onConvAddedToOrDeletedFromGroup(e2) {
- Ce.l(this._n + ".onConvAddedToOrDeletedFromGroup options:", e2);
- const { msgRecentContactItem: t2, msgRecentContactUpdateContactItem: n2 } = e2, s2 = this._concatConvID(t2), o2 = this._getLocalConv(s2);
- if (o2 && Fe(n2)) {
- let s3, i2 = false;
- n2.forEach((e3) => {
- var { groupOptType: e3, recentContactGroupItem: t3 } = e3, t3 = t3["groupName"];
- s3 = o2.conversationGroupList.indexOf(t3), 1 === e3 ? -1 === s3 && (o2.conversationGroupList.push(t3), i2 = true) : 2 === e3 && -1 !== s3 && (o2.conversationGroupList.splice(s3, 1), i2 = true), true === i2 && this._emitConvInGroupUpdate(t3);
- }), true === i2 && this._emitConvUpdate();
- }
- }
- onConvGroupListSynced(e2) {
- Fe(e2) && 0 !== e2.length && (Ce.l(this._n + ".onConvGroupListSynced groupItem:", e2), this._fillConvGroupMap(e2));
- }
- getConvGroupListByID(e2) {
- if (!Oe(e2)) {
- const t2 = [];
- return e2.forEach((e3) => {
- this._convGroupMap.has(e3) && t2.push(this._convGroupMap.get(e3));
- }), t2;
- }
- }
- _onConvNotFound(e2, t2) {
- e2.push({ conversationID: t2, code: ei.CONV_NOT_FOUND, message: this._convM.getErrMsg(ei.CONV_NOT_FOUND) });
- }
- _onConvIDInvalid(e2, t2) {
- e2.push({ conversationID: t2, code: ei.INVALID_CONV_ID, message: this._convM.getErrMsg(ei.INVALID_CONV_ID) });
- }
- _getFlagBit(e2) {
- var t2 = e2.toString(2), s2 = t2.length;
- for (let e3 = s2 - 1; 0 <= e3; e3--)
- if ("1" === t2[e3])
- return s2 - e3 - 1;
- }
- _concatConvID(e2) {
- var { type: e2, to: s2, groupID: i2, userID: n2 } = e2;
- let o2;
- return 1 === e2 ? $e(n2) ? $e(s2) || (o2 = "" + t.CONV_C2C + s2) : o2 = "" + t.CONV_C2C + n2 : 2 === e2 && (o2 = "" + t.CONV_GROUP + i2), o2;
- }
- _getMyUserID() {
- return this._convM.getMyUserID();
- }
- _getLocalConv(e2) {
- return this._convM.getLocalConversation(e2);
- }
- _hasLocalConv(e2) {
- return this._convM.hasLocalConversation(e2);
- }
- _emitConvUpdate() {
- this._convM.emitConvUpdate(true, false);
- }
- _emitConvGroupListUpdate() {
- this._convM.emitOEvt(e.CONVERSATION_GROUP_LIST_UPDATED, [...this._convGroupMap.values()]);
- }
- _emitConvInGroupUpdate(t2) {
- const s2 = { groupName: t2, conversationList: [] }, i2 = this._convM.getLocalConvList();
- s2.conversationList = i2.filter((e2) => e2.conversationGroupList.includes(t2)), this._convM.emitOEvt(e.CONVERSATION_IN_GROUP_UPDATED, s2);
- }
- reset() {
- Ce.l(this._n + ".reset"), this._convGroupMap.clear(), this._startIndex = 0, this._pagingStatus = Ut;
- }
-};
-var _n = class extends oi {
- constructor(e2) {
- super(e2), this._n = "ConvModule", ji.mixin(this), this._msgListHandler = new zi(this), this._msgRemindHandler = new un(this), this._convGroupHandler = new dn(this), this._sll = new nn(100), this._pagingStatus = Ut, this._pagingTs = 0, this._pagingStartIdx = 0, this._pagingPinnedTs = 0, this._pagingPinnedStartIdx = 0, this._pagingConvIDMap = /* @__PURE__ */ new Map(), this._convIDFromUnreadDBMap = /* @__PURE__ */ new Map(), this._convMap = /* @__PURE__ */ new Map(), this._tmpGroupList = [], this._tmpGroupAtTipsList = [], this._peerReadTimeMap = /* @__PURE__ */ new Map(), this._completedMap = /* @__PURE__ */ new Map(), this._roamingMsgKeyAndTimeMap = /* @__PURE__ */ new Map(), this._remoteGroupReadSeqMap = /* @__PURE__ */ new Map(), this._convTotalUnreadCount = 0, this._pagingGetCostList = [], this._convMapForDiff = /* @__PURE__ */ new Map(), this._partialUpdatedConvMap = /* @__PURE__ */ new Map(), this._everClearedMap = /* @__PURE__ */ new Map(), this._bPullOnInvite = true, this._initListeners();
- }
- _initListeners() {
- const e2 = this.getIEmitInst();
- e2.on(Yi.A2KEY_AND_TINYID_UPDATED, this._init, this), e2.on(Yi.PROFILE_UPDATED, this._onProfileUpdated, this), e2.on(Yi.CLOUD_CONFIG, this._onCloudConfig, this);
- }
- _init() {
- Ce.l(this._n + "._init");
- var t2 = this.get(Ls).getItem("conversationMap"), s2 = this.isIntl(), i2 = this.isUsingChatCore();
- if (t2) {
- var n2 = t2.length;
- for (let e2 = 0; e2 < n2; e2++) {
- var o2 = t2[e2];
- if (o2) {
- if (this._isNonExistentAccount(o2.conversationID))
- continue;
- if (o2.groupProfile && nt(o2.groupProfile.type))
- continue;
- }
- this._convMap.set(o2.conversationID, new cn(t2[e2], s2, i2));
- }
- this.emitConvUpdate(true, false);
- }
- this.ready(() => {
- 0 < this._tmpGroupList.length && (this.updateConvGroupProfile(this._tmpGroupList), this._tmpGroupList.length = 0);
- }), this.syncConvList();
- }
- _isNonExistentAccount(e2) {
- let s2;
- return "@TLS#ERROR" === (s2 = e2.startsWith(t.CONV_C2C) ? e2.replace(t.CONV_C2C, "") : s2) || "@TLS#NOT_FOUND" === s2;
- }
- onCheckTimer(e2) {
- this.isLoggedIn() && this._msgListHandler.onCheckTimer(e2);
- }
- onMessageSent(e2) {
- this._onSendOrRcvMsg({ conversationOptionsList: e2.conversationOptionsList, isInstantMessage: true });
- }
- onNewMessage(e2) {
- this._onSendOrRcvMsg(e2);
- }
- _onSendOrRcvMsg(e2) {
- const { conversationOptionsList: t2, isInstantMessage: s2 = true, isUnreadC2CMessage: i2 = false, updateUnreadCount: n2 = true, isSyncingEnded: o2 = false } = e2;
- this._isReady ? 0 !== t2.length ? (true === s2 && this._checkNewConv(t2), this._updateLocalConvList({ conversationOptionsList: t2, isInstantMessage: s2, isUnreadC2CMessage: i2, isFromGetConversations: false, updateUnreadCount: n2 }), s2 || (this._convIDFromUnreadDBMap = new Map([...this._convIDFromUnreadDBMap, ...t2.map((e3) => [e3.conversationID, 1])]), this._diffAndDeleteConv(), o2 && this.emitIEvt(Yi.C2C_UNREAD_HANDLE_COMPLETED)), 0 < t2.filter((e3) => !this._isConvNeedShow(e3.conversationID)).length || this.emitConvUpdate()) : o2 && this.emitIEvt(Yi.C2C_UNREAD_HANDLE_COMPLETED) : this.ready(() => {
- this._onSendOrRcvMsg(e2);
- });
- }
- updateConvGroupProfile(e2) {
- if (!Fe(e2) || 0 !== e2.length)
- if (0 !== this._convMap.size) {
- let i2 = false;
- e2.forEach((e3) => {
- var s2 = "" + t.CONV_GROUP + e3.groupID;
- if (this._convMap.has(s2)) {
- i2 = true;
- const t2 = this._convMap.get(s2);
- t2.groupProfile = JSON.parse(JSON.stringify(e3)), t2.lastMessage.lastSequence < e3.nextMessageSeq && (t2.lastMessage.lastSequence = e3.nextMessageSeq - 1), t2.subType || (t2.subType = e3.type);
- }
- }), i2 && this.emitConvUpdate(true, false);
- } else
- this._tmpGroupList = e2;
- }
- onMessageRevoked(e2, n2) {
- if (0 !== e2.length) {
- let s2 = null, i2 = false;
- const o2 = [];
- e2.forEach((e3) => {
- (s2 = this._convMap.get(e3.conversationID)) && (n2 && s2.reduceUnreadCount() && (i2 = s2.type !== t.CONV_TOPIC), s2.type === t.CONV_TOPIC ? o2.push(e3) : s2.isLastMessageRevoked({ sequence: e3.sequence, time: e3.time }) && (s2.setLastMessageRevoked(true), s2.setLastMessageRevoker(e3.revoker), i2 = true));
- }), this.get(Ss).onMessageRevoked(o2), i2 && this.emitConvUpdate(true, false);
- }
- }
- updateRevokerInfo(n2) {
- const t2 = /* @__PURE__ */ new Set();
- for (let e3 = 0; e3 < n2.length; e3++) {
- const s3 = n2[e3]["revoker"];
- t2.add(s3);
- }
- const s2 = [...t2], e2 = this.get(Ts);
- return new Promise((i2) => {
- e2.getUserProfile({ userIDList: s2 }).then((e3) => {
- e3 = e3.data;
- if (!Fe(e3) || 0 === e3.length)
- return i2(n2);
- const s3 = {};
- for (const { userID: n3, nick: i3, avatar: t3 } of e3)
- s3[n3] = { nick: i3, avatar: t3 };
- n2.forEach((e4) => {
- var t3 = e4["revoker"];
- s3[t3] && (e4.revokerInfo.nick = s3[t3].nick || "", e4.revokerInfo.avatar = s3[t3].avatar || "");
- }), i2(n2);
- }).catch(() => {
- i2(n2);
- });
- });
- }
- isLastMessageRevoked(e2) {
- let s2 = false;
- const { conversationID: i2, sequence: n2, time: o2 } = e2, r2 = this._convMap.get(i2);
- return r2 && (s2 = r2.type === t.CONV_TOPIC ? this.get(Ss).isLastMessageRevoked({ topicID: i2.replace(t.CONV_GROUP, ""), sequence: n2 }) : r2.isLastMessageRevoked({ sequence: n2, time: o2 })), Ce.l(this._n + ".isLastMessageRevoked options:", e2, "ret:" + s2), s2;
- }
- onMessageDeleted(e2) {
- if (0 !== e2.length) {
- let s2 = null;
- e2.forEach((e3) => {
- (s2 = this._msgListHandler.getLocalMsg(e3.conversationID, e3.ID)) && (s2.isDeleted = true), e3 !== s2 && (e3.isDeleted = true);
- });
- const n2 = e2[0].conversationID, o2 = this._msgListHandler.getLocalMsgList(n2);
- let i2 = {};
- for (let e3 = o2.length - 1; 0 <= e3; e3--)
- if (!o2[e3].isDeleted) {
- i2 = o2[e3];
- break;
- }
- const r2 = this._convMap.get(n2);
- if (r2) {
- let e3 = false;
- r2.lastMessage.lastSequence === i2.sequence && r2.lastMessage.lastTime === i2.time || (Oe(i2) && (i2 = void 0), r2.updateLastMessage(i2), r2.type !== t.CONV_TOPIC && (e3 = true), Ce.l(`${this._n}.onMessageDeleted. update convID:${n2} with lastMessage:`, r2.lastMessage)), n2.startsWith(t.CONV_C2C) && this.updateUnreadCount(n2), e3 && this.emitConvUpdate(true, false);
- }
- }
- }
- onMessageModified(s2) {
- var i2 = this._n + ".onMessageModified", { conversationType: n2, from: o2, to: r2, time: u2, sequence: h2, elements: a2, cloudCustomData: p2, messageVersion: c2 } = s2;
- let l2 = "" + n2 + r2;
- r2 === this.getMyUserID() && n2 === t.CONV_C2C && (l2 = "" + n2 + o2);
- var { isUpdated: n2, message: d2 } = this._msgListHandler.onMsgModified(l2, s2), _2 = (true === n2 && this.emitOEvt(e.MESSAGE_MODIFIED, [d2]), this._isTopicConv(l2));
- if (null === d2 ? Ce.l(i2 + " message is null! options:", s2) : Ce.l(i2 + ` isUpdated:${n2} isTopicMessage:${_2} from:${o2} to:${r2} sequence:${d2.sequence} time:` + d2.time), _2)
- this.get(Ss).onMessageModified(s2);
- else {
- const e2 = this._convMap.get(l2);
- if (e2) {
- const t2 = e2.lastMessage;
- t2 && t2.lastTime === u2 && t2.lastSequence === h2 && t2.version !== c2 && (Ce.l(i2 + ` convID:${l2} lastMessage updated`), t2.type = a2[0].type, t2.payload = a2[0].content, t2.messageForShow = yt(t2.type, t2.payload, this.isIntl()), t2.cloudCustomData = p2, t2.version = c2, this.emitConvUpdate(true, false));
- }
- }
- return d2;
- }
- onNewGroupAtTips(e2) {
- const t2 = e2.dataList;
- let s2 = null;
- t2.forEach((e3) => {
- e3.groupAtTips ? s2 = e3.groupAtTips : e3.elements ? s2 = { ...e3.elements, sync: true } : e3.groupAtType && (s2 = { ...e3, sync: true }), s2.__random = e3.random, s2.__sequence = e3.clientSequence, this._tmpGroupAtTipsList.push(s2);
- }), Ce.l(this._n + ".onNewGroupAtTips isReady:" + this._isReady, this._tmpGroupAtTipsList), this._isReady && this._handleGroupAtTipsList();
- }
- _handleGroupAtTipsList() {
- if (0 !== this._tmpGroupAtTipsList.length) {
- let r2 = false;
- this._tmpGroupAtTipsList.forEach((e2) => {
- const { groupID: s2, from: i2, topicID: n2, sync: o2 = false } = e2;
- if (i2 !== this.getMyUserID())
- if ($e(n2)) {
- const i3 = this._convMap.get("" + t.CONV_GROUP + s2);
- i3 && (i3.updateGroupAtInfoList(e2), r2 = true);
- } else {
- const r3 = this._convMap.get("" + t.CONV_GROUP + n2);
- r3 && (r3.updateGroupAtInfoList(e2), this.get(Ss).onAtInfoUpdated({ topicID: n2, groupAtInfoList: r3.groupAtInfoList })), Oe(r3) && o2 && (this.updateTopicConversation([{ conversationID: "" + t.CONV_GROUP + n2, type: t.CONV_TOPIC }]), this._convMap.get("" + t.CONV_GROUP + n2).updateGroupAtInfoList(e2));
- }
- }), r2 && this.emitConvUpdate(true, false), this._tmpGroupAtTipsList.length = 0;
- }
- }
- _checkNewConv(e2) {
- let s2 = [], i2 = [];
- e2.forEach((e3) => {
- this._convMap.has(e3.conversationID) || (e3.type === t.CONV_C2C ? s2.push(e3.conversationID.replace(t.CONV_C2C, "")) : e3.type === t.CONV_GROUP && i2.push(e3.conversationID.replace(t.CONV_GROUP, "")));
- }), 0 < s2.length && (this._onNewC2CConv(s2), s2 = null), 0 < i2.length && (this._onNewGroupConv(i2), i2 = null);
- }
- _onNewC2CConv(e2) {
- const t2 = this.get(ys);
- return Promise.all([t2.getRemotePeerReadTime(e2), this._msgRemindHandler.getC2CMsgRemindType(e2), this._convGroupHandler.searchConvGroupAndMark(e2, 1)]);
- }
- _onNewGroupConv(e2) {
- const t2 = this.get(vs);
- return t2 ? Promise.all([t2.getMsgRemindType(e2), this._convGroupHandler.searchConvGroupAndMark(e2, 2)]) : Promise.resolve();
- }
- _setStorageConvList(e2 = false) {
- var s2 = this.getLocalConvList().filter((e3) => e3.type === t.CONV_C2C || e3.type === t.CONV_GROUP && e3.lastMessage.type !== t.MSG_GRP_TIP).slice(0, 20).map((e3) => ({ conversationID: e3.conversationID, type: e3.type, subType: e3.subType, lastMessage: e3.lastMessage, groupProfile: e3.groupProfile, userProfile: e3.userProfile }));
- this.get(Ls).setItem("conversationMap", s2, e2);
- }
- emitConvUpdate(t2 = true, s2 = true) {
- var i2 = this.getLocalConvList();
- if (s2) {
- const e2 = this.get(vs);
- e2 && e2.updateGroupLastMessage(i2);
- }
- t2 && (this.get(Rs).isPartialUpdatedConvs() ? (this._diffConvMap(this._convMapForDiff, this._convMap), 0 < this._partialUpdatedConvMap.size && (this.emitOEvt(e.CONVERSATION_LIST_UPDATED), this.onTotalUnreadCountUpdate(), this._convMapForDiff.clear(), this._convMapForDiff = Ye(this._convMap, true)), 0 === this._convMapForDiff.size && (this._convMapForDiff = Ye(this._convMap, true))) : (this.emitOEvt(e.CONVERSATION_LIST_UPDATED), this.onTotalUnreadCountUpdate()));
- }
- _diffConvMap(e2, t2) {
- for (var [s2, i2] of t2)
- e2.has(s2) && JSON.stringify(i2) === e2.get(s2) || this._partialUpdatedConvMap.set(s2, i2);
- }
- getPartialUpdatedConvs() {
- var e2 = [...Ye(this._partialUpdatedConvMap, false).values()];
- return this._partialUpdatedConvMap.clear(), e2;
- }
- getLocalConvList() {
- return [...this._convMap.values()].filter((e2) => this._isConvNeedShow(e2.conversationID));
- }
- getLocalConversation(e2) {
- return this._convMap.get(e2);
- }
- hasLocalConversation(e2) {
- return this._convMap.has(e2);
- }
- getLocalOldestMessage(e2) {
- return this._msgListHandler.getLocalOldestMsg(e2);
- }
- syncConvList(e2 = true) {
- const i2 = new Ti("syncConvList");
- return this._pagingStatus === Ut && this._convMap.clear(), this._pagingGetConvList(e2).then((e3) => {
- var t2 = function(e4) {
- if (Fe(e4) && 0 !== e4.length) {
- let t3 = 0;
- return e4.forEach((e5) => {
- t3 += e5;
- }), (t3 / e4.length).toFixed(0);
- }
- }(this._pagingGetCostList), s2 = function(e4) {
- if (Fe(e4) && 0 !== e4.length) {
- let t3 = 0;
- return e4.forEach((e5) => {
- t3 += e5;
- }), t3.toFixed(0);
- }
- }(this._pagingGetCostList), s2 = (this._pagingGetCostList.length = 0, this._pagingStatus = kt, this._diffAndDeleteConv(), this.emitConvUpdate(true, false), this._setStorageConvList(), this._handleC2CPeerReadTime(), this.emitIEvt(Yi.CONV_SYNC_COMPLETED), `count:${this._convMap.size} sum:${s2} avg:` + t2);
- return Ce.l(this._n + ".syncConvList. " + s2), i2.setMessage(s2).end(), e3;
- }).catch((e3) => (this._pagingStatus = wt, i2.setMessage(this._pagingTs).setError(e3).end(), ni(e3)));
- }
- _diffAndDeleteConv() {
- if (this._isSyncCompleted()) {
- let s2 = [];
- this._convMap.forEach((e2, t2) => {
- !this._pagingConvIDMap.has(t2) && this._convIDFromUnreadDBMap.has(t2) && (this._convMap.delete(t2), s2.push(t2));
- }), Ce.l(this._n + "._diffAndDeleteConv list:" + s2), s2 = null;
- }
- }
- _pagingGetConvList(e2 = true) {
- const a2 = this._n + "._pagingGetConvList", c2 = (Ce.l(a2 + ` incrementalPullFlag:${e2} ts:${this._pagingTs} startIdx:${this._pagingStartIdx} pinnedTs:${this._pagingPinnedTs} pinnedStartIdx:` + this._pagingPinnedStartIdx), Date.now());
- return this._pagingStatus = Gt, this.req({ P: ri.PAGING_GET_CONV_LIST, data: { fromAccount: this.getMyUserID(), timeStamp: e2 ? this._pagingTs : 0, startIndex: e2 ? this._pagingStartIdx : 0, pinnedTimeStamp: e2 ? this._pagingPinnedTs : 0, pinnedStartIndex: e2 ? this._pagingPinnedStartIdx : 0, orderType: 1 } }).then((e3) => {
- var { completeFlag: e3, conversations: t2 = [], timeStamp: s2, startIndex: i2, pinnedTimeStamp: n2, pinnedStartIndex: o2, groupItem: r2 } = e3.data;
- if (this._pagingGetCostList.push(Dt(c2, false)), Ce.l(a2 + ` ok. completeFlag:${e3} count:${t2.length} cost:` + Dt(c2)), this._convGroupHandler.onConvGroupListSynced(r2), 0 < t2.length) {
- const e4 = this._getConvOptions(t2);
- this._pagingConvIDMap = new Map([...this._pagingConvIDMap, ...e4.map((e5) => [e5.conversationID, 1])]), this._updateLocalConvList({ conversationOptionsList: e4, isFromGetConversations: true, updateUnreadCount: true }), this.isLoggedIn() && this.emitConvUpdate();
- }
- if (!this._isReady) {
- if (!this.isLoggedIn())
- return ii();
- this.triggerReady();
- }
- return this._pagingTs = s2, this._pagingStartIdx = i2, this._pagingPinnedTs = n2, this._pagingPinnedStartIdx = o2, 1 !== e3 ? this._pagingGetConvList() : (this._handleGroupAtTipsList(), this._convGroupHandler.getRemoteConvGroupList(), ii());
- }).catch((e3) => {
- throw this.isLoggedIn() && (this._isReady || (Ce.w(a2 + " failed. error:", e3), this.triggerReady())), e3;
- });
- }
- _updateLocalConvList(e2) {
- var t2 = e2["isFromGetConversations"], s2 = Date.now(), e2 = this._getTmpConvListMapping(e2)["newConvList"];
- this._convMap = new Map(this._sortConvList([...this._convMap])), t2 || this._updateUserOrGroupProfile(e2), Ce.l(this._n + "._updateLocalConvList cost:" + Dt(s2));
- }
- _getTmpConvListMapping(i2) {
- const { conversationOptionsList: n2, isFromGetConversations: o2, isInstantMessage: r2, isUnreadC2CMessage: h2 = false, updateUnreadCount: p2 } = i2, a2 = [], c2 = [], l2 = this.get(vs), d2 = this.get(Es), g2 = this.isIntl(), m2 = this.isUsingChatCore();
- for (let e2 = 0, s2 = n2.length; e2 < s2; e2++) {
- const i3 = new cn(n2[e2], g2, m2), { conversationID: _3, type: u2 } = i3;
- if (!this._isNonExistentAccount(_3)) {
- if (this._convMap.has(_3)) {
- const a3 = this._convMap.get(_3);
- if (o2 && u2 !== t.CONV_TOPIC) {
- this._convMap.set(_3, i3), u2 === t.CONV_C2C ? i3.unreadCount = a3.unreadCount : u2 === t.CONV_GROUP && (i3.groupProfile = JSON.parse(JSON.stringify(a3.groupProfile)));
- continue;
- }
- const c3 = ["unreadCount", "allowType", "adminForbidType", "payload"], l3 = (false === r2 && c3.push("lastMessage"), "boolean" == typeof r2 && c3.push("isPinned"), n2[e2].lastMessage), d3 = !$e(l3);
- d3 || n2[e2].type === t.CONV_TOPIC || this._onLastMsgNotExist(n2[e2]), $e(r2) && d3 && null === a3.lastMessage.payload && (a3.lastMessage.payload = l3.payload), Oe(a3.lastMessage.revoker) || (a3.lastMessage.revoker = null), We(a3, i3, c3, [null, void 0, "", 0, NaN]), true === p2 && a3.updateUnreadCount({ nextUnreadCount: i3.unreadCount, isFromGetConversations: o2, isUnreadC2CMessage: h2 }), r2 && d3 && (l3.payload && (a3.lastMessage.payload = l3.payload), a3.type === t.CONV_GROUP && (a3.lastMessage.nameCard = l3.nameCard, a3.lastMessage.nick = l3.nick)), d3 && a3.lastMessage.cloudCustomData !== l3.cloudCustomData && (a3.lastMessage.cloudCustomData = l3.cloudCustomData || "");
- } else {
- if (u2 === t.CONV_GROUP && l2) {
- const t2 = i3.groupProfile["groupID"], n3 = l2.getLocalGroupProfile(t2);
- n3 && (i3.groupProfile = n3, true === p2 && i3.updateUnreadCount({ nextUnreadCount: 0 }));
- } else if (u2 === t.CONV_C2C) {
- const n3 = _3.replace(t.CONV_C2C, "");
- d2 && d2.isMyFriend(n3) && (i3.remark = d2.getFriendRemark(n3));
- }
- a2.push(i3), this._convMap.set(_3, i3);
- }
- this._convMap.get(_3).type === t.CONV_TOPIC && c2.push(this._convMap.get(_3));
- }
- }
- const _2 = this.get(Ss);
- for (let e2 = 0, s2 = c2.length; e2 < s2; e2++) {
- const { conversationID: i3, groupAtInfoList: n3 } = c2[e2];
- Oe(n3) || _2.onAtInfoUpdated({ topicID: i3.replace(t.CONV_GROUP, ""), groupAtInfoList: n3 });
- }
- return { newConvList: a2 };
- }
- _onLastMsgNotExist(e2) {
- new Ti("lastMsgNotExist").setMessage(JSON.stringify(e2)).end();
- }
- _sortConvList(e2) {
- const t2 = [], s2 = [], i2 = [], n2 = [];
- return e2.forEach((e3) => {
- (true === e3[1].isPinned ? Oe(e3[1].lastMessage.lastTime) ? s2 : t2 : Oe(e3[1].lastMessage.lastTime) ? n2 : i2).push(e3);
- }), t2.sort((e3, t3) => t3[1].lastMessage.lastTime - e3[1].lastMessage.lastTime).concat(s2).concat(i2.sort((e3, t3) => t3[1].lastMessage.lastTime - e3[1].lastMessage.lastTime)).concat(n2);
- }
- _sortConvListAndEmitEvent() {
- this._convMap = new Map(this._sortConvList([...this._convMap])), this.emitConvUpdate(true, false);
- }
- _updateUserOrGroupProfile(e2) {
- if (0 !== e2.length) {
- const s2 = [], i2 = [], n2 = this.get(Ts), o2 = this.get(vs);
- e2.forEach((e3) => {
- if (e3.type === t.CONV_C2C)
- s2.push(e3.toAccount);
- else if (e3.type === t.CONV_GROUP) {
- const t2 = e3.toAccount;
- o2.hasLocalGroup(t2) ? e3.groupProfile = o2.getLocalGroupProfile(t2) : i2.push(t2);
- }
- }), Ce.l(`${this._n}._updateUserOrGroupProfile userIDList:${s2} groupIDList:` + i2), 0 < s2.length && n2.getUserProfile({ userIDList: s2 }).then(({ data: e3 }) => {
- Fe(e3) ? e3.forEach((e4) => {
- this._doUpdateUserProfile("" + t.CONV_C2C + e4.userID, e4);
- }) : this._doUpdateUserProfile("" + t.CONV_C2C + e3.userID, e3);
- }), 0 < i2.length && o2.getGroupProfileAdvance({ groupIDList: i2, responseFilter: { groupBaseInfoFilter: ["Type", "Name", "FaceUrl"] } }).then(({ data: { successGroupList: e3 } }) => {
- let i3 = false;
- e3.forEach((e4) => {
- var s3 = "" + t.CONV_GROUP + e4.groupID;
- if (this._convMap.has(s3)) {
- const t2 = this._convMap.get(s3);
- We(t2.groupProfile, e4, [], [null, void 0, "", 0, NaN]), !t2.subType && e4.type && (t2.subType = e4.type), i3 = true;
- }
- }), i3 && this.emitConvUpdate();
- });
- }
- }
- _doUpdateUserProfile(e2, t2) {
- this.hasLocalConversation(e2) && (this.getLocalConversation(e2).userProfile = t2, this.emitConvUpdate());
- }
- _getConvOptions(e2) {
- const i2 = [], s2 = e2.filter(({ type: e3, userID: t2 }) => 1 === e3 && !this._isNonExistentAccount(t2) || 2 === e3), n2 = this.getMyUserID(), o2 = s2.map((e3) => {
- var s3;
- return $e(e3.lastMsg) && (e3.lastMsg = { elements: [] }), 1 === e3.type ? (s3 = { userID: e3.userID, nick: e3.peerNick, avatar: e3.peerAvatar }, i2.push(s3), { conversationID: "" + t.CONV_C2C + e3.userID, type: t.CONV_C2C, lastMessage: { lastTime: e3.time, lastSequence: e3.sequence, fromAccount: e3.lastC2CMsgFromAccount, type: e3.lastMsg.elements[0] ? e3.lastMsg.elements[0].type : null, payload: e3.lastMsg.elements[0] ? this._amendLayersOverLimitProp(e3.lastMsg.elements[0].content) : null, cloudCustomData: e3.lastMsg.cloudCustomData || "", isRevoked: 8 === e3.lastMessageFlag, onlineOnlyFlag: false, nick: "", nameCard: "", version: 0, isPeerRead: e3.lastC2CMsgFromAccount === n2 && e3.time <= e3.c2cPeerReadTime, revoker: e3.lastMsg.revokerInfo ? e3.lastMsg.revokerInfo.revoker : null }, unreadCount: 0, userProfile: new sn(s3), peerReadTime: e3.c2cPeerReadTime, isPinned: 1 === e3.isPinned, customData: e3.customMark || "", markList: vt(e3.standardMark), conversationGroupList: this._convGroupHandler.getConvGroupListByID(e3.contactGroupId), remark: e3.friendRemark || "", messageRemindType: this._transMsgRemindType(e3.messageRemindType) }) : { conversationID: "" + t.CONV_GROUP + e3.groupID, type: t.CONV_GROUP, lastMessage: { lastTime: e3.time, lastSequence: e3.sequence, fromAccount: e3.msgGroupFromAccount, ...this._patchTypeAndPayload(e3), cloudCustomData: e3.lastMsg.cloudCustomData || "", isRevoked: 2 === e3.lastMessageFlag, onlineOnlyFlag: false, nick: e3.senderNick || "", nameCard: e3.senderNameCard || "", revoker: e3.lastMsg.revokerInfo ? e3.lastMsg.revokerInfo.revoker : null }, groupProfile: new rn({ groupID: e3.groupID, name: e3.groupNick, avatar: e3.groupImage, type: e3.groupType, nextMessageSeq: e3.nextMessageSeq }), unreadCount: this._computeGroupUnreadCount(e3), peerReadTime: 0, isPinned: 1 === e3.isPinned, version: 0, customData: e3.customMark || "", markList: vt(e3.standardMark), conversationGroupList: this._convGroupHandler.getConvGroupListByID(e3.contactGroupId), messageRemindType: this._transMsgRemindType(e3.messageRemindType) };
- });
- return 0 < i2.length && this.get(Ts).onConvProfileUpdated(i2), o2;
- }
- _transMsgRemindType(e2) {
- let s2 = "";
- return 0 === e2 ? s2 = t.MSG_REMIND_ACPT_AND_NOTE : 1 === e2 ? s2 = t.MSG_REMIND_DISCARD : 2 === e2 ? s2 = t.MSG_REMIND_ACPT_NOT_NOTE : 3 === e2 && (s2 = t.NOT_RECEIVE_OFFLINE_PUSH_EXCEPT_AT), s2;
- }
- _computeGroupUnreadCount(e2) {
- var { unreadCount: e2 = 0, noUnreadCount: t2 = 0 } = e2, e2 = e2 - t2;
- return 0 < e2 ? e2 : 0;
- }
- _patchTypeAndPayload(e2) {
- const { event: s2, elements: i2 = [], groupTips: n2 = {} } = e2.lastMsg;
- if ($e(s2) || Oe(n2))
- return { type: i2[0] ? i2[0].type : null, payload: i2[0] ? this._amendLayersOverLimitProp(i2[0].content) : null };
- {
- let e3 = new xi(n2);
- e3.setElement({ type: t.MSG_GRP_TIP, content: { ...n2.elements, groupProfile: n2.groupProfile } });
- const s3 = JSON.parse(JSON.stringify(e3.payload));
- return e3 = null, { type: t.MSG_GRP_TIP, payload: s3 };
- }
- }
- _amendLayersOverLimitProp(e2) {
- var t2 = e2["layersOverLimit"];
- return 0 === t2 ? e2.layersOverLimit = false : 1 === t2 && (e2.layersOverLimit = true), e2;
- }
- getLocalMessageList(e2) {
- return this._msgListHandler.getLocalMsgList(e2);
- }
- deleteLocalMessage(e2) {
- e2 instanceof xi && this._msgListHandler.remove(e2);
- }
- onConvDeleted(e2) {
- Fe(e2) && (e2 = e2.map((e3) => {
- var { type: e3, userID: s2, groupID: i2 } = e3;
- return 1 === e3 ? "" + t.CONV_C2C + s2 : 2 === e3 ? "" + t.CONV_GROUP + i2 : void 0;
- }), Ce.l(this._n + ".onConvDeleted convIDList:" + e2), this.deleteLocalConvList(e2));
- }
- onConvPinnedStatus(e2, r2) {
- if (Fe(e2)) {
- let o2 = false;
- e2.forEach((e3) => {
- var { type: e3, userID: s2, groupID: i2 } = e3;
- let n2;
- 1 === e3 ? n2 = this.getLocalConversation("" + t.CONV_C2C + s2) : 2 === e3 && (n2 = this.getLocalConversation("" + t.CONV_GROUP + i2)), n2 && (Ce.l(`${this._n}.onConvPinnedStatus convID:${n2.conversationID} localPinned:${n2.isPinned} remotePinned:` + r2), r2 ? n2.isPinned || (n2.isPinned = true, o2 = true) : n2.isPinned && (n2.isPinned = false, o2 = true));
- }), o2 && this._sortConvListAndEmitEvent();
- }
- }
- getMessageList({ conversationID: a2, nextReqMessageID: e2, count: t2 }) {
- const c2 = this._n + ".getMessageList", s2 = this.getLocalConversation(a2);
- let i2 = "";
- if (s2 && s2.groupProfile && (i2 = s2.groupProfile.type), nt(i2))
- return Ce.l(c2 + ` not available in ${i2}. convID:` + a2), ii({ messageList: [], nextReqMessageID: "", isCompleted: true });
- ($e(t2) || 15 < t2) && (t2 = 15), e2 || this._isMeInCommunity(a2) || this.clearMemMsg(a2);
- const l2 = this._computeRemainingCount({ conversationID: a2, nextReqMessageID: e2 }), n2 = this._completedMap.has(a2);
- if (Ce.l(c2 + ` convID:${a2} isEverCleared:${this._isEverCleared(a2)} nextReqMessageID:${e2} remainingCount:${l2} count:${t2} isCompleted:` + n2), this._needGetHistory({ conversationID: a2, remainingCount: l2, count: t2 }))
- return this.getHistoryMessages({ conversationID: a2, nextReqMessageID: e2, count: 20 }).then((e3) => {
- var { nextReqID: e3, storedMessageList: t3, assembledMessageList: s3, isPullingCompleted: i3 } = e3, n3 = this._completedMap.has(a2);
- let o2 = t3;
- 0 < l2 && (o2 = this._msgListHandler.getLocalMsgList(a2).slice(0, t3.length + l2));
- const r2 = { nextReqMessageID: void 0, messageList: void 0, isCompleted: void 0 };
- this._isEverCleared(a2) ? (r2.nextReqMessageID = e3, r2.messageList = s3, r2.isCompleted = i3) : (r2.nextReqMessageID = n3 ? "" : e3, r2.messageList = o2, r2.isCompleted = n3);
- t3 = r2.messageList.filter((e4) => e4.isRevoked) || [], s3 = r2.messageList.map((e4) => e4.sequence);
- return Ce.l(c2 + ` ret.nextReqMessageID:${r2.nextReqMessageID} ret.isCompleted:${r2.isCompleted} sequenceList:`, s3), Fe(t3) && 0 !== t3.length ? this.updateRevokerInfo(t3).then((e4) => (e4.forEach((t4) => {
- const s4 = t4["revokerInfo"];
- r2.messageList = r2.messageList.map((e5) => (e5.ID === t4.ID && s4 && (e5.revokeReason = s4.reason || "", e5.revokerInfo = { userID: s4.revoker || e5.revoker, nick: s4.nick, avatar: s4.avatar }), e5));
- }), Zs(r2))) : Zs(r2);
- });
- this.modifyMessageList(a2);
- e2 = this._getMsgListFromMem({ conversationID: a2, nextReqMessageID: e2, count: t2 });
- return ii(e2);
- }
- _isEverCleared(e2) {
- return this._everClearedMap.has(e2);
- }
- _getMsgListFromMem({ conversationID: e2, nextReqMessageID: t2, count: s2 }) {
- const i2 = this._n + "._getMsgListFromMem", n2 = this._msgListHandler.getLocalMsgList(e2), o2 = n2.length, r2 = at(e2);
- let a2 = 0;
- const c2 = { isCompleted: false, nextReqMessageID: "", messageList: [] };
- t2 ? (a2 = r2 ? n2.findIndex((e3) => e3.ID === t2) : n2.findIndex((e3) => e3.sequence + "" === t2)) > s2 ? (c2.messageList = n2.slice(a2 - s2, a2), c2.nextReqMessageID = r2 ? n2[a2 - s2].ID : n2[a2 - s2].sequence + "") : (c2.messageList = n2.slice(0, a2), c2.isCompleted = true) : s2 < o2 ? (a2 = o2 - s2, c2.messageList = n2.slice(a2, o2), c2.nextReqMessageID = r2 ? n2[a2].ID : n2[a2].sequence + "") : (c2.messageList = n2.slice(0, o2), c2.isCompleted = true);
- s2 = c2.messageList.map((e3) => e3.sequence);
- return Ce.l(i2 + ` convID:${e2} ret.nextReqMessageID:${c2.nextReqMessageID} ret.isCompleted:${c2.isCompleted} sequenceList:` + s2), c2;
- }
- getMessageListHopping(e2) {
- let { conversationID: s2, sequence: i2, time: n2, count: o2, direction: r2 = 0 } = e2;
- if (($e(o2) || 15 < o2) && (o2 = 15), s2.startsWith(t.CONV_C2C)) {
- const e3 = this.get(ys), i3 = s2.replace(t.CONV_C2C, "");
- return e3.getRoamingMessagesHopping({ peerAccount: i3, time: n2, count: o2, direction: r2 });
- }
- if (s2.startsWith(t.CONV_GROUP)) {
- const e3 = this.get(vs), n3 = s2.replace(t.CONV_GROUP, "");
- return e3.getRoamingMessagesHopping({ groupID: n3, sequence: i2, count: o2, direction: r2 });
- }
- }
- _computeRemainingCount({ conversationID: e2, nextReqMessageID: t2 }) {
- const s2 = this._msgListHandler.getLocalMsgList(e2), i2 = s2.length;
- if (Ce.l(this._n + `._computeRemainingCount convID:${e2} nextReqMessageID:${t2} length:` + i2), !t2)
- return i2;
- let n2 = 0;
- return at(e2) ? n2 = s2.findIndex((e3) => e3.ID === t2) : ct(e2) && (n2 = -1 !== t2.indexOf("-") ? s2.findIndex((e3) => e3.ID === t2) : s2.findIndex((e3) => e3.sequence + "" === t2)), n2 = -1 === n2 ? 0 : n2;
- }
- _needGetHistory({ conversationID: e2, remainingCount: t2, count: s2 }) {
- var i2 = this.getLocalConversation(e2);
- let n2 = "";
- if (i2 && i2.groupProfile && (n2 = i2.groupProfile.type), lt(e2) || nt(n2))
- return false;
- if (this._isEverCleared(e2))
- return true;
- i2 = t2 <= s2 && !this._completedMap.has(e2);
- return Ce.l(this._n + `._needGetHistory convID:${e2} ret:` + i2), i2;
- }
- _isTopicConv(e2) {
- e2 = e2.replace(t.CONV_GROUP, "");
- return rt(e2);
- }
- getHistoryMessages(n2) {
- const { conversationID: o2, count: e2, nextReqMessageID: r2 } = n2;
- if (o2 === t.CONV_SYSTEM)
- return ii();
- let a2 = 15, c2 = (20 < e2 && (a2 = 20), null);
- if (at(o2)) {
- let e3 = 0, s2 = "", i2 = false;
- n2 = this._roamingMsgKeyAndTimeMap.has(o2);
- if (r2)
- if (i2 = true, n2)
- e3 = this._roamingMsgKeyAndTimeMap.get(o2).lastMessageTime, s2 = this._roamingMsgKeyAndTimeMap.get(o2).messageKey;
- else {
- const t2 = this._msgListHandler.findMessage(r2);
- t2 && (e3 = t2.time, Ce.l(`${this._n}.getHistoryMessages convID:${o2} isRelayInfoExisted:${n2} lastMessageTime:` + e3));
- }
- return (c2 = this.get(ys)).getRoamingMessage({ conversationID: o2, peerAccount: o2.replace(t.CONV_C2C, ""), count: a2, lastMessageTime: i2 ? e3 : 0, messageKey: i2 ? s2 : "" });
- }
- if (ct(o2)) {
- if (!(c2 = this.get(vs)))
- return ni({ code: ei.NO_MODULE });
- const n3 = o2.replace(t.CONV_GROUP, "");
- let e3 = null, s2 = (this._convMap.has(o2) && !rt(n3) && (e3 = this._convMap.get(o2).lastMessage), 0);
- return r2 ? s2 = Number(r2) : e3 && (s2 = e3.lastSequence), c2.getRoamingMessage({ conversationID: o2, groupID: n3, count: a2, sequence: s2 });
- }
- return ii();
- }
- patchConvLastMessage(e2, t2 = false) {
- const s2 = this.getLocalConversation(e2);
- if (s2) {
- const { messageForShow: i2, payload: n2 } = s2.lastMessage;
- if (Oe(i2) || Oe(n2) || t2) {
- const i3 = this._msgListHandler.getLocalMsgList(e2);
- if (0 !== i3.length) {
- const n3 = i3[i3.length - 1];
- Ce.l(this._n + `.patchConvLastMessage bForceUpdate:${t2} convID:${e2} payload:`, n3.payload), s2.updateLastMessage(n3);
- }
- }
- }
- }
- onRoamingMessage(e2 = [], _2, u2 = true, s2) {
- var i2 = _2.startsWith(t.CONV_C2C) ? t.CONV_C2C : t.CONV_GROUP;
- let n2 = null, o2 = [], r2 = [], a2 = 0, c2 = e2.length, l2;
- const d2 = i2 === t.CONV_GROUP, h2 = this.getFileDownloadProxy(), p2 = this.getDowloadFileAuthKey(), g2 = Fe(s2), m2 = this.get(Ns).getFileDNList();
- let f2 = () => {
- d2 ? --a2 : ++a2;
- }, M2 = () => d2 ? a2 >= c2 : a2 < c2;
- for (a2 = d2 ? e2.length - 1 : 0, c2 = d2 ? 0 : e2.length; M2(); f2())
- if (1 !== e2[a2].isPlaceMessage)
- if ((n2 = new xi(e2[a2])).to = e2[a2].to, i2 !== t.CONV_GROUP || $e(e2[a2].topicID) || (n2.to = e2[a2].topicID), n2.isSystemMessage = !!e2[a2].isSystemMessage, n2.conversationType = i2, l2 = 4 === e2[a2].event ? { type: t.MSG_GRP_TIP, content: { ...e2[a2].elements, groupProfile: e2[a2].groupProfile } } : e2[a2].elements, d2 || n2.setNickAndAvatar({ nick: e2[a2].nick, avatar: e2[a2].avatar }), Oe(l2)) {
- const t2 = new Ti("emptyMessageBody");
- t2.setMessage(`from:${n2.from} to:${n2.to} sequence:${n2.sequence} event:` + e2[a2].event), t2.setLevel("warning").end();
- } else
- n2.setElement(l2, h2, p2, m2), n2.reInitialize(this.getMyUserID()), o2.push(n2), g2 && s2.push(n2);
- return f2 = M2 = null, u2 ? (this._msgListHandler.unshift(o2, r2), o2 = null, r2) : (r2 = null, o2);
- }
- findMessage(e2) {
- return this._msgListHandler.findMessage(e2);
- }
- _isMeInCommunity(e2) {
- let s2 = true;
- return this._isTopicConv(e2) && (e2 = Tt(e2.replace(t.CONV_GROUP, "")), this.get(vs).hasLocalGroup(e2) || (s2 = false, Ce.l(this._n + `._isMeInCommunity groupID:${e2} ret:` + s2))), s2;
- }
- deleteTopicRoamingInfo(e2) {
- ot({ groupID: e2 }) && this._msgListHandler.getTopicConvIDList(e2).forEach((e3) => {
- this.clearMemMsg(e3);
- });
- }
- deleteGroupRoamingInfo(e2) {
- e2 = "" + t.CONV_GROUP + e2;
- 0 < this._msgListHandler.getLocalMsgList(e2).length && this.clearMemMsg(e2);
- }
- setMessageRead({ conversationID: e2 }) {
- const s2 = this.getLocalConversation(e2), i2 = this._n + ".setMessageRead";
- if (Ce.l(i2 + ` convID:${e2} unreadCount:` + (s2 ? s2.unreadCount : 0)), !s2)
- return ii();
- if (s2.type !== t.CONV_GROUP && s2.type !== t.CONV_TOPIC || Oe(s2.groupAtInfoList) || this.deleteGroupAtTips(e2), 0 === s2.unreadCount)
- return ii();
- const n2 = this._msgListHandler.getLocalLastMsg(e2);
- let o2 = s2.lastMessage.lastTime;
- var r2 = this._msgListHandler.getLocalMaxTime(e2), r2 = (o2 < r2 && (Ce.l(`${i2} update lastMessageTime from ${o2} to ` + r2), o2 = r2), this._msgListHandler.getLocalMaxSeq(e2));
- let a2 = s2.lastMessage.lastSequence;
- if (a2 < r2 && (Ce.l(`${i2} update lastMessageSeq from ${a2} to ` + r2), a2 = r2), s2.type === t.CONV_TOPIC && $e(n2)) {
- const s3 = this.get(Ss), i3 = e2.replace(t.CONV_GROUP, ""), n3 = Tt(i3), o3 = s3.getLocalTopic(n3, i3);
- o3 && (a2 = o3.nextMessageSeq - 1);
- }
- let c2 = null;
- switch (s2.type) {
- case t.CONV_C2C:
- return (c2 = this.get(ys)) ? c2.setMessageRead({ conversationID: e2, lastMessageTime: o2 }) : ni({ code: ei.NO_MODULE });
- case t.CONV_GROUP:
- case t.CONV_TOPIC:
- return (c2 = this.get(vs)) ? c2.setMessageRead({ conversationID: e2, lastMessageSeq: a2 }) : ni({ code: ei.NO_MODULE });
- case t.CONV_SYSTEM:
- return s2.unreadCount = 0, this.emitConvUpdate(true, false), ii();
- default:
- return ii();
- }
- }
- setAllMessageRead(s2 = {}) {
- const i2 = this._n + ".setAllMessageRead";
- s2.scope || (s2.scope = t.READ_ALL_MSG), Ce.l(i2 + " options:", s2);
- var e2 = this._createSetAllMessageReadPack(s2);
- if (0 === e2.readAllC2CMessage && 0 === e2.groupMessageReadInfoList.length)
- return ii();
- const n2 = new Ti("setAllMessageRead");
- return this.req({ P: ri.SET_ALL_MSG_READ, data: e2 }).then((e3) => {
- e3 = e3.data, e3 = this._handleAllMsgRead(e3);
- return n2.setMessage(`scope:${s2.scope} failureGroups:` + JSON.stringify(e3)).end(), ii();
- }).catch((e3) => (n2.setError(e3).end(), Ce.w(i2 + " failed. error:", e3), ni({ code: e3 && e3.code ? e3.code : ei.MSG_UNREAD_ALL_FAIL, message: e3 && e3.message ? e3.message : void 0 })));
- }
- setConvCustomData(e2) {
- return this._convGroupHandler.setConvCustomData(e2);
- }
- markConv(e2) {
- return this._convGroupHandler.markConv(e2);
- }
- getConvGroupList() {
- return this._convGroupHandler.getLocalConvGroupList();
- }
- createConvGroup(e2) {
- return this._convGroupHandler.createConvGroup(e2);
- }
- deleteConvGroup(e2) {
- return this._convGroupHandler.deleteConvGroup(e2);
- }
- renameConvGroup(e2) {
- return this._convGroupHandler.renameConvGroup(e2);
- }
- addConvsToGroup(e2) {
- return this._convGroupHandler.addConvsToGroup(e2);
- }
- deleteConvsFromGroup(e2) {
- return this._convGroupHandler.deleteConvsFromGroup(e2);
- }
- onConvMarkUpdated(e2) {
- this._convGroupHandler.onConvMarkUpdated(e2);
- }
- onConvGroupCreated(e2) {
- this._convGroupHandler.onConvGroupCreated(e2);
- }
- onConvGroupDeleted(e2) {
- this._convGroupHandler.onConvGroupDeleted(e2);
- }
- onConvGroupNameUpdated(e2) {
- this._convGroupHandler.onConvGroupNameUpdated(e2);
- }
- onConvInGroupUpdated(e2) {
- this._convGroupHandler.onConvInGroupUpdated(e2);
- }
- onConvAddedToOrDeletedFromGroup(e2) {
- this._convGroupHandler.onConvAddedToOrDeletedFromGroup(e2);
- }
- _getConvLastMessageSeq(e2) {
- var t2 = this._msgListHandler.getLocalLastMsg(e2.conversationID);
- let s2 = e2.lastMessage.lastSequence;
- return s2 = t2 && s2 < t2.sequence ? t2.sequence : s2;
- }
- _getConvLastMessageTime(e2) {
- var t2 = this._msgListHandler.getLocalLastMsg(e2.conversationID);
- let s2 = e2.lastMessage.lastTime;
- return s2 = t2 && s2 < t2.time ? t2.time : s2;
- }
- _createSetAllMessageReadPack(e2) {
- const s2 = { readAllC2CMessage: 0, groupMessageReadInfoList: [] }, i2 = e2["scope"];
- for (var [, n2] of this._convMap)
- if (0 < n2.unreadCount) {
- if (n2.type === t.CONV_C2C && 0 === s2.readAllC2CMessage) {
- if (i2 === t.READ_ALL_MSG)
- s2.readAllC2CMessage = 1;
- else if (i2 === t.READ_ALL_C2C_MSG) {
- s2.readAllC2CMessage = 1;
- break;
- }
- } else if (n2.type === t.CONV_GROUP && (i2 === t.READ_ALL_GROUP_MSG || i2 === t.READ_ALL_MSG)) {
- const e3 = this._getConvLastMessageSeq(n2);
- s2.groupMessageReadInfoList.push({ groupID: n2.groupProfile.groupID, messageSequence: e3 });
- }
- }
- return s2;
- }
- onPushedAllMessageRead(e2) {
- this._handleAllMsgRead(e2);
- }
- _handleAllMsgRead(e2) {
- var { groupMessageReadInfoList: e2, readAllC2CMessage: t2 } = e2, e2 = this._parseGroupReadInfo(e2);
- return 1 <= this._updateAllConvUnreadCount({ readAllC2CMessage: t2 }) && this.emitConvUpdate(true, false), e2;
- }
- _parseGroupReadInfo(s2) {
- const i2 = [];
- if (s2 && s2.length)
- for (let e2 = 0, t2 = s2.length; e2 < t2; e2++) {
- var { groupID: n2, sequence: o2, retCode: r2, lastMessageSeq: a2 } = s2[e2];
- $e(r2) ? this._remoteGroupReadSeqMap.set(n2, a2) : (this._remoteGroupReadSeqMap.set(n2, o2), 0 !== r2 && i2.push(n2 + `-${o2}-` + r2));
- }
- return i2;
- }
- _updateAllConvUnreadCount(e2) {
- const s2 = e2["readAllC2CMessage"];
- let i2 = 0;
- for (var [n2, o2] of this._convMap)
- if (1 <= o2.unreadCount) {
- if (1 === s2 && o2.type === t.CONV_C2C) {
- const e3 = this._getConvLastMessageTime(o2);
- this.updateIsReadAfterReadReport({ conversationID: n2, lastMessageTime: e3 });
- } else if (o2.type === t.CONV_GROUP) {
- const e3 = n2.replace(t.CONV_GROUP, "");
- if (this._remoteGroupReadSeqMap.has(e3)) {
- const t2 = this._remoteGroupReadSeqMap.get(e3), s3 = this._getConvLastMessageSeq(o2);
- this.updateIsReadAfterReadReport({ conversationID: n2, remoteReadSequence: t2 }), s3 >= t2 && this._remoteGroupReadSeqMap.delete(e3);
- }
- }
- this.updateUnreadCount(n2, false) && (i2 += 1);
- }
- return i2;
- }
- isRemoteRead(e2) {
- const { conversationID: s2, sequence: i2 } = e2, n2 = s2.replace(t.CONV_GROUP, "");
- let o2 = false;
- if (this._remoteGroupReadSeqMap.has(n2)) {
- const e3 = this._remoteGroupReadSeqMap.get(n2);
- i2 <= e3 && (o2 = true, Ce.l(`${this._n}.isRemoteRead convID:${s2} msgSeq:${i2} remoteReadSeq:` + e3)), i2 >= e3 + 10 && this._remoteGroupReadSeqMap.delete(n2);
- }
- return o2;
- }
- updateIsReadAfterReadReport({ conversationID: e2, lastMessageSeq: s2, lastMessageTime: i2 }) {
- var n2 = this._msgListHandler.getLocalMsgList(e2);
- if (0 !== n2.length) {
- let t2;
- for (let e3 = n2.length - 1; 0 <= e3; e3--)
- if (t2 = n2[e3], !(i2 && t2.time > i2 || s2 && t2.sequence > s2)) {
- if ("in" === t2.flow && t2.isRead)
- break;
- t2.setIsRead(true);
- }
- }
- }
- updateUnreadCount(e2, s2 = true) {
- let i2 = false;
- const n2 = this.getLocalConversation(e2), o2 = this._msgListHandler.getLocalMsgList(e2);
- if (n2) {
- var r2 = n2.unreadCount, a2 = o2.filter((e3) => !e3.isRead && !e3._onlineOnlyFlag && !e3.isDeleted).length;
- if (r2 !== a2 && (n2.unreadCount = a2, i2 = true, Ce.l(this._n + `.updateUnreadCount from ${r2} to ${a2}, convID:` + e2), true === s2 && this.emitConvUpdate(true, false)), i2 && n2.type === t.CONV_TOPIC) {
- const s3 = n2["unreadCount"], i3 = this.get(Ss), o3 = e2.replace(t.CONV_GROUP, "");
- i3.onUnreadCountUpdatedFromConv(o3, s3);
- }
- return i2;
- }
- }
- clearGroupAtInfoList(e2, s2 = true) {
- const i2 = this.getLocalConversation(e2);
- if (i2 && 0 < i2.groupAtInfoList.length) {
- if (i2.clearGroupAtInfoList(), Ce.l(this._n + ".clearGroupAtInfoList convID:" + e2), i2.type === t.CONV_TOPIC) {
- const s3 = i2["groupAtInfoList"], n2 = this.get(Ss), o2 = e2.replace(t.CONV_GROUP, "");
- n2.onAtInfoUpdated({ topicID: o2, groupAtInfoList: s3 });
- }
- true === s2 && this.emitConvUpdate(true, false);
- }
- }
- updateReadReceiptInfo(s2) {
- const { userID: a2, groupID: d2, readReceiptList: i2, timestamp: c2 = 0 } = s2;
- if (!Oe(i2)) {
- const _2 = [];
- if ($e(a2)) {
- if (!$e(d2)) {
- const e2 = "" + t.CONV_GROUP + d2;
- i2.forEach((t2) => {
- const { tinyID: s3, clientTime: i3, random: n2, readCount: o2, unreadCount: r2 } = t2, a3 = s3 + `-${i3}-` + n2, c3 = this._msgListHandler.getLocalMsg(e2, a3) || this._msgListHandler.getHoppingMsg(e2, a3), l2 = { groupID: d2, messageID: a3, readCount: 0, unreadCount: 0 };
- c3 && (Ge(o2) && (c3.readReceiptInfo.readCount = o2, l2.readCount = o2), Ge(r2) && (c3.readReceiptInfo.unreadCount = r2, l2.unreadCount = r2), _2.push(l2));
- });
- }
- } else {
- const e2 = "" + t.CONV_C2C + a2;
- i2.forEach((t2) => {
- const { tinyID: s3, clientTime: i3, random: n2 } = t2, o2 = s3 + `-${i3}-` + n2, r2 = this._msgListHandler.getLocalMsg(e2, o2) || this._msgListHandler.getHoppingMsg(e2, o2);
- if (r2 && !r2.readReceiptInfo.isPeerRead) {
- r2.readReceiptInfo.isPeerRead = true, r2.readReceiptInfo.timestamp = c2;
- const e3 = { userID: a2, messageID: o2, isPeerRead: true, timestamp: c2 };
- _2.push(e3);
- }
- });
- }
- 0 < _2.length && this.emitOEvt(e.MESSAGE_READ_RECEIPT_RECEIVED, _2);
- }
- }
- updateIsRead(e2) {
- const i2 = this.getLocalConversation(e2), n2 = this.getLocalMessageList(e2);
- if (i2 && 0 !== n2.length && !lt(i2.type)) {
- const o2 = [];
- for (let e3 = 0, t2 = n2.length; e3 < t2; e3++)
- "in" !== n2[e3].flow ? "out" !== n2[e3].flow || n2[e3].isRead || n2[e3].setIsRead(true) : o2.push(n2[e3]);
- let s2 = 0;
- if (i2.type === t.CONV_C2C) {
- const e3 = o2.slice(-i2.unreadCount).filter((e4) => e4.isRevoked).length;
- s2 = o2.length - i2.unreadCount - e3;
- } else
- s2 = o2.length - i2.unreadCount;
- for (let e3 = 0; e3 < s2 && !o2[e3].isRead; e3++)
- o2[e3].setIsRead(true);
- }
- }
- deleteGroupAtTips(e2) {
- const s2 = this._n + ".deleteGroupAtTips";
- Ce.l(s2);
- var i2 = this._convMap.get(e2);
- if (!i2)
- return Promise.resolve();
- const n2 = i2.groupAtInfoList;
- if (0 === n2.length)
- return Promise.resolve();
- let o2 = void 0, r2 = (e2.startsWith(t.CONV_GROUP) && (o2 = e2.replace(t.CONV_GROUP, "")), [...n2]);
- if ((ot({ groupID: o2 }) || rt(o2)) && 0 === (r2 = n2.filter((e3) => !e3.atTypeArray.includes(t.CONV_AT_ALL))).length)
- return this.clearGroupAtInfoList(e2, false), Promise.resolve();
- const a2 = this.getMyUserID();
- return this.req({ P: ri.DEL_GROUP_AT_TIPS, data: { messageListToDelete: r2.map((e3) => ({ from: e3.from, to: a2, messageSeq: e3.__sequence, messageRandom: e3.__random, groupID: $e(e3.topicID) ? e3.groupID : e3.topicID })) } }).then(() => (Ce.l(s2 + " ok. count:" + n2.length), this.clearGroupAtInfoList(e2, false), Promise.resolve())).catch((e3) => (Ce.e(s2 + " failed. error:", e3), ni(e3)));
- }
- appendToMessageList(e2) {
- return this._msgListHandler.pushIn(e2);
- }
- setMessageRandom(e2) {
- this._sll.set(e2.random);
- }
- deleteMessageRandom(e2) {
- this._sll.delete(e2.random);
- }
- pushIntoMessageList(e2, t2, s2) {
- return !(!this._msgListHandler.pushIn(t2, s2) || this._sll.has(t2.random) && !s2 || (e2.push(t2), 0));
- }
- revoke(e2, t2, s2) {
- return this._msgListHandler.revoke(e2, t2, s2);
- }
- getPeerReadTime(e2) {
- return this._peerReadTimeMap.get(e2);
- }
- recordPeerReadTime(e2, t2) {
- (!this._peerReadTimeMap.has(e2) || this._peerReadTimeMap.get(e2) < t2) && this._peerReadTimeMap.set(e2, t2);
- }
- updateMsgIsPeerReadProp(s2, i2) {
- if (s2.startsWith(t.CONV_C2C) && 0 < i2) {
- const t2 = this._msgListHandler.updateMsgIsPeerReadProp(s2, i2);
- if (0 < t2.length && this.emitOEvt(e.MESSAGE_READ_BY_PEER, t2), this._convMap.has(s2)) {
- const e2 = this._convMap.get(s2).lastMessage;
- Oe(e2) || e2.fromAccount === this.getMyUserID() && e2.lastTime <= i2 && !e2.isPeerRead && (e2.isPeerRead = true, this.emitConvUpdate(true, false));
- }
- }
- }
- updateMsgIsModifiedProp(e2) {
- this._msgListHandler.updateMsgIsModifiedProp(e2);
- }
- setCompleted(e2) {
- Ce.l(this._n + ".setCompleted convID:" + e2), this._completedMap.set(e2, true);
- }
- updateRoamingMsgKeyAndTime(e2, t2, s2) {
- this._roamingMsgKeyAndTimeMap.set(e2, { messageKey: t2, lastMessageTime: s2 });
- }
- getConvList(t2) {
- const s2 = this._n + ".getConvList", e2 = `pagingStatus:${this._pagingStatus}, local conversation count:${this._convMap.size}, options:` + JSON.stringify(t2);
- if (Ce.l(s2 + ". " + e2), this._pagingStatus === wt) {
- const i3 = new Ti("getConvList");
- return i3.setMessage(e2), this.syncConvList().then(() => {
- i3.end();
- var e3 = this._getConvList(t2);
- return Zs({ conversationList: e3, isSyncCompleted: this._isSyncCompleted() });
- }).catch((e3) => (i3.setError(e3).end(), Ce.e(s2 + " failed. error:", e3), ni(e3)));
- }
- const i2 = this._getConvList(t2);
- return Ce.l(s2 + ". returned conversation count:" + i2.length), ii({ conversationList: i2, isSyncCompleted: this._isSyncCompleted() });
- }
- _getConvList(t2) {
- if ($e(t2))
- return this.getLocalConvList();
- if (Fe(t2))
- return 0 === t2.length ? [] : this.getLocalConvList().filter((e2) => t2.includes(e2.conversationID));
- if (be(t2)) {
- const { type: s2, markType: i2, groupName: n2, hasUnreadCount: o2, hasGroupAtInfo: r2 } = t2;
- return this.getLocalConvList().filter((e2) => this._filterType(e2, s2) && this._filterMarkType(e2, i2) && this._filterGroupName(e2, n2) && this._filterUnreadCount(e2, o2) && this._filterGroupAtInfo(e2, r2));
- }
- return [];
- }
- _filterType(e2, s2) {
- return s2 !== t.CONV_C2C && s2 !== t.CONV_GROUP || e2.type === s2;
- }
- _filterGroupName(e2, t2) {
- return !ke(t2) || ("" === t2 ? 0 === e2.conversationGroupList.length : e2.conversationGroupList.includes(t2));
- }
- _filterMarkType(e2, t2) {
- return !Ge(t2) || (0 === t2 ? 0 === e2.markList.length : e2.markList.includes(t2));
- }
- _filterUnreadCount(e2, t2) {
- let s2 = true;
- return true === t2 ? s2 = 1 <= e2.unreadCount : false === t2 && (s2 = 0 === e2.unreadCount), s2;
- }
- _filterGroupAtInfo(e2, t2) {
- let s2 = true;
- return true === t2 ? s2 = 1 <= e2.groupAtInfoList.length : false === t2 && (s2 = 0 === e2.groupAtInfoList.length), s2;
- }
- _handleC2CPeerReadTime() {
- for (var [e2, s2] of this._convMap)
- s2.type === t.CONV_C2C && this.recordPeerReadTime(e2, s2.peerReadTime);
- }
- _isPagingGetGroupListCompleted() {
- const e2 = this.get(vs);
- return !e2 || e2.isPagingGetCompleted();
- }
- _getLocalGroupCount() {
- const e2 = this.get(vs);
- return e2 ? e2.getLocalGroupList().length : 0;
- }
- _hasLocalGroup(e2) {
- const s2 = this.get(vs);
- return !!s2 && s2.hasLocalGroup(e2.replace(t.CONV_GROUP, ""));
- }
- getConversationProfile(i2) {
- let n2, o2 = false;
- if (this._convMap.has(i2) ? n2 = this._convMap.get(i2) : (n2 = new cn({ conversationID: i2, type: at(i2) ? t.CONV_C2C : t.CONV_GROUP }, this.isIntl(), this.isUsingChatCore()), o2 = true), n2._isInfoCompleted || n2.type === t.CONV_SYSTEM)
- return ii({ conversation: n2 });
- if (ct(i2)) {
- if (!this.get(vs))
- return ni({ code: ei.NO_MODULE });
- if (!this._hasLocalGroup(i2))
- return ii({ conversation: n2 });
- }
- const r2 = this._n + ".getConversationProfile", a2 = new Ti("getConversationProfile");
- return Ce.l(r2 + `. convID:${i2} remark:${n2.remark} lastMessage:`, n2.lastMessage), this._getUserOrGroupProfile(n2).then((e2) => {
- a2.setMessage(`convID:${i2} unreadCount:` + e2.data.conversation.unreadCount).end();
- const s2 = this.get(Es);
- if (s2 && n2.type === t.CONV_C2C) {
- const o3 = i2.replace(t.CONV_C2C, "");
- if (s2.isMyFriend(o3)) {
- const t2 = s2.getFriendRemark(o3);
- n2.remark !== t2 && (n2.remark = t2, Ce.l(r2 + `. convID:${i2} patch remark:` + n2.remark));
- }
- }
- if (Ce.l(r2 + ` ok. isNewConv:${o2} convID:` + i2), o2) {
- if (n2.type === t.CONV_C2C)
- return this._onNewC2CConv([i2.replace(t.CONV_C2C, "")]).then(() => ii({ conversation: n2 }));
- if (n2.type === t.CONV_GROUP)
- return this._onNewGroupConv([i2.replace(t.CONV_GROUP, "")]).then(() => ii({ conversation: n2 }));
- }
- return e2;
- }).catch((e2) => (a2.setError(e2).setMessage("convID:" + i2).end(), Ce.e(r2 + " failed. error:", e2), ni(e2)));
- }
- _getUserOrGroupProfile(s2) {
- return s2.type === t.CONV_C2C ? this.get(Ts).getUserProfile({ userIDList: [s2.toAccount] }).then((e2) => {
- e2 = e2.data;
- return 0 === e2.length ? ni({ code: ei.USER_OR_GRP_NOT_FOUND }) : (s2.userProfile = e2[0], s2._isInfoCompleted = true, this._insertConvAfterTopmost(s2), ii({ conversation: s2 }));
- }) : this.get(vs).getGroupProfile({ groupID: s2.toAccount }).then((e2) => (s2.groupProfile = e2.data.group, s2._isInfoCompleted = true, this._insertConvAfterTopmost(s2), ii({ conversation: s2 })));
- }
- _insertConvAfterTopmost(e2) {
- if (e2 instanceof cn && !this._convMap.has(e2.conversationID)) {
- const t2 = [...this._convMap], s2 = t2.findIndex((e3) => false === e3[1].isPinned);
- t2.splice(s2, 0, [e2.conversationID, e2]), this._convMap = new Map(t2), this._setStorageConvList(), this.emitConvUpdate(true, false);
- }
- }
- _onProfileUpdated(e2) {
- e2.data.forEach((e3) => {
- var s2 = e3["userID"];
- if (s2 === this.getMyUserID())
- this._onMyProfileModified({ latestNick: e3.nick, latestAvatar: e3.avatar });
- else {
- const i2 = this._convMap.get("" + t.CONV_C2C + s2);
- i2 && (i2.userProfile = e3);
- }
- });
- }
- _onCloudConfig(e2) {
- "0" === this.getCloudConfig("pull_on_invite") && (this._bPullOnInvite = false), Ce.l(this._n + "._onCloudConfig bPullOnInvite:" + this._bPullOnInvite);
- }
- disableMsgPullOnInvite() {
- this._bPullOnInvite = false;
- }
- _isSyncCompleted() {
- return this._pagingStatus === kt;
- }
- _errorLog(e2, t2, s2, i2) {
- var n2 = new Error("Params validate failed."), o2 = "" + this.getErrMsg("API_REFER") + e2;
- throw Ce.w(`[${e2}] | ${t2} | ${this.getErrMsg(s2, i2)}, ` + o2), Ce.e(`[${e2}] Invalid ${t2}: type check failed for ${t2}.`), n2;
- }
- _isValidConvID(e2) {
- return at(e2) || ct(e2) || lt(e2);
- }
- deleteConversation(e2) {
- const t2 = "deleteConversation";
- return ke(e2) || we(e2) || this._errorLog(t2, "options", "StringOrObjectRequiredLog"), ke(e2) ? (this._isValidConvID(e2) || this._errorLog(t2, "options", "InvalidConversationID", e2), Ce.l(`${this._n}.${t2} convID:` + e2), this.deleteConvList({ conversationIDList: [e2], flag: 1 })) : (Fe(e2.conversationIDList) || this._errorLog(t2, "conversationIDList", "ArrayRequiredLog"), 0 === e2.conversationIDList.length && this._errorLog(t2, "conversationIDList", "NonEmptyArrayLog"), e2.conversationIDList.forEach((e3) => {
- this._isValidConvID(e3) || this._errorLog(t2, "conversationIDList", "InvalidConversationID", e3);
- }), "clearHistoryMessage" in e2 && "boolean" != typeof e2.clearHistoryMessage && this._errorLog(t2, "clearHistoryMessage", "BooleanRequiredLog"), 100 < e2.conversationIDList.length && (e2.conversationIDList = e2.conversationIDList.slice(0, 100)), this.deleteConvList(e2));
- }
- deleteConvList(e2) {
- const { conversationIDList: t2 = [], clearHistoryMessage: s2 = true, flag: i2 = 0 } = e2, n2 = this._n + ".deleteConvList", o2 = `convIDList:${t2} clearHistoryMessage:` + s2, r2 = (Ce.l(n2 + " " + o2), new Ti("deleteConvList"));
- return r2.setMessage(o2), Promise.all([this.rmLocalOnlyConvList(t2), this.rmLocalAndRemoteConvList(t2, s2)]).then((e3) => {
- r2.end();
- e3 = [...e3[0], ...e3[1]];
- return 0 === e3.length ? ni(new Qs({ code: ei.CONV_NOT_FOUND })) : (Ce.l(n2 + " ok"), ii(1 === i2 ? { conversationID: e3[0] } : { conversationIDList: e3 }));
- }).catch((e3) => (r2.setError(e3).end(), Ce.e(n2 + " failed. error:", e3), ni(e3)));
- }
- rmLocalOnlyConvList(e2) {
- return e2.filter((e3) => {
- if (!this._convMap.has(e3))
- return false;
- var s2 = this.getLocalConversation(e3).type;
- return s2 !== t.CONV_GROUP || this._hasLocalGroup(e3) ? s2 === t.CONV_SYSTEM && (this.get(vs).deleteGroupSystemNotice({ messageList: this._msgListHandler.getLocalMsgList(e3) }), this.deleteLocalConv(e3), true) : (this.deleteLocalConv(e3), true);
- });
- }
- rmLocalAndRemoteConvList(e2, s2) {
- const i2 = { fromAccount: this.getMyUserID(), conversationList: [], clearHistoryMessage: s2 ? 1 : 0 };
- return e2.forEach((e3) => {
- var s3;
- this._convMap.has(e3) && ((s3 = this.getLocalConversation(e3).type) === t.CONV_C2C ? i2.conversationList.push({ toAccount: e3.replace(s3, ""), type: 1 }) : s3 === t.CONV_GROUP && this._hasLocalGroup(e3) && i2.conversationList.push({ toGroupID: e3.replace(s3, ""), type: 2 }));
- }), 0 === i2.conversationList.length ? [] : this.req({ P: ri.DEL_CONV, data: i2 }).then((e3) => {
- const s3 = [];
- return 0 < e3.data.resultList.length && e3.data.resultList.map((e4) => {
- 0 === e4.code && (e4 = 1 === e4.type ? "" + t.CONV_C2C + e4.to : "" + t.CONV_GROUP + e4.groupID, s3.push(e4));
- }), this.deleteLocalConvList(s3), s3;
- });
- }
- setConvDraft(e2) {
- var { conversationID: e2, draftText: t2 } = e2, s2 = this._n + ".setConvDraft";
- if (Ce.l(s2 + ` convID:${e2} draftText:` + t2), !this._convMap.has(e2))
- return ni({ code: ei.CONV_NOT_FOUND });
- const i2 = this._convMap.get(e2);
- return i2.setDraftText(t2), this.emitConvUpdate(), ii({ code: 0, conversation: i2 });
- }
- clearHistoryMessage(s2) {
- const e2 = { fromAccount: this.getMyUserID(), toAccount: void 0, type: void 0, toGroupID: void 0 };
- if (!this._convMap.has(s2))
- return ni({ code: ei.CONV_NOT_FOUND });
- var i2 = this._convMap.get(s2).type;
- if (i2 === t.CONV_C2C)
- e2.type = 1, e2.toAccount = s2.replace(t.CONV_C2C, "");
- else {
- if (i2 !== t.CONV_GROUP)
- return i2 === t.CONV_SYSTEM ? (this.get(vs).deleteGroupSystemNotice({ messageList: this._msgListHandler.getLocalMsgList(s2) }), ii({ conversationID: s2 })) : ni({ code: ei.CONV_UN_RECORDED_TYPE });
- e2.type = 2, e2.toGroupID = s2.replace(t.CONV_GROUP, "");
- }
- const n2 = this._n + ".clearHistoryMessage", o2 = new Ti("clearHistoryMessage");
- return o2.setMessage("convID:" + s2), Ce.l(n2 + ". convID:" + s2), this.setMessageRead({ conversationID: s2 }).then(() => this.req({ P: ri.CLEAR_HISTORY_MSG, data: e2 })).then(() => {
- o2.end(), Ce.l(n2 + " ok"), this.clearMemMsg(s2);
- const e3 = this.getLocalConversation(s2);
- return e3 && (e3.updateLastMessage(), this._sortConvListAndEmitEvent()), ii({ conversationID: s2 });
- }).catch((e3) => (o2.setError(e3).end(), Ce.e(n2 + " failed. error:", e3), ni(e3)));
- }
- pinConversation(e2) {
- const { conversationID: s2, isPinned: i2 } = e2, n2 = this.getLocalConversation(s2);
- if (n2 && n2.isPinned === i2)
- return ii({ conversationID: s2 });
- if (lt(s2))
- return n2 && (n2.isPinned = i2), this._sortConvListAndEmitEvent(), ii({ conversationID: s2 });
- let o2 = null;
- if (at(s2) ? o2 = { type: 1, toAccount: s2.replace(t.CONV_C2C, "") } : ct(s2) && (o2 = { type: 2, groupID: s2.replace(t.CONV_GROUP, "") }), null === o2)
- return ni({ code: ei.INVALID_CONV_ID });
- const r2 = this._n + ".pinConversation", a2 = `convID:${s2} isPinned:` + i2, c2 = new Ti("pinConversation");
- return c2.setMessage(a2), Ce.l(r2 + ". " + a2), this.req({ P: ri.PIN_CONV, data: { fromAccount: this.getMyUserID(), operationType: true === i2 ? 1 : 2, itemList: [o2] } }).then(() => (c2.end(), Ce.l(r2 + " ok"), n2 ? n2.isPinned !== i2 && (n2.isPinned = i2) : this._convMap.set(s2, new cn({ conversationID: s2, type: at(s2) ? t.CONV_C2C : t.CONV_GROUP, isPinned: i2 }, this.isIntl(), this.isUsingChatCore())), this._sortConvListAndEmitEvent(), Zs({ conversationID: s2 }))).catch((e3) => (c2.setError(e3).end(), Ce.e(r2 + " failed. error:", e3), ni(e3)));
- }
- setMessageRemindType(e2) {
- return this._msgRemindHandler.set(e2);
- }
- patchMsgRemindType(e2) {
- var { ID: s2, isC2CConversation: i2, messageRemindType: n2 } = e2;
- let o2 = false;
- const r2 = this.getLocalConversation(i2 ? "" + t.CONV_C2C + s2 : "" + t.CONV_GROUP + s2);
- return r2 && r2.messageRemindType !== n2 && (r2.messageRemindType = n2, o2 = true), Ce.l(this._n + ".patchMsgRemindType options:", e2, "ret:" + o2), o2;
- }
- onC2CMsgRemindTypeFetched(e2) {
- if (Fe(e2) && 0 < e2.length) {
- let s2 = 0;
- e2.forEach((e3) => {
- var { userID: e3, muteFlag: t2 } = e3, t2 = this._transMsgRemindType(t2);
- true === this.patchMsgRemindType({ ID: e3, isC2CConversation: true, messageRemindType: t2 }) && (s2 += 1);
- }), Ce.l(this._n + ".onC2CMsgRemindTypeFetched updateCount:" + s2), 1 <= s2 && this.emitConvUpdate(true, false);
- }
- }
- onC2CMsgRemindTypeSynced(e2) {
- const i2 = this._n + ".onC2CMsgRemindTypeSynced";
- e2.dataList.forEach((t2) => {
- if (!Oe(t2.muteNotificationsSync)) {
- var { to: t2, muteFlag: s2 } = t2.muteNotificationsSync, s2 = this._transMsgRemindType(s2);
- let e3 = 0;
- this.patchMsgRemindType({ ID: t2, isC2CConversation: true, messageRemindType: s2 }) && (e3 += 1), Ce.l(i2 + " updateCount:" + e3), 1 <= e3 && this.emitConvUpdate(true, false);
- }
- });
- }
- onGroupMsgRemindTypeUpdated(e2) {
- this._msgRemindHandler.onGroupMsgRemindTypeUpdated(e2);
- }
- deleteLocalConv(e2, t2 = true) {
- var s2 = this._convMap.has(e2);
- if (Ce.l(this._n + `.deleteLocalConv convID:${e2} has:` + s2), s2 && (this._convMap.delete(e2), this._convMapForDiff.delete(e2), this.clearMemMsg(e2), this._setStorageConvList(true), t2)) {
- const t3 = !this._isTopicConv(e2);
- this.emitConvUpdate(t3, false);
- }
- }
- pullMsgOnInvite(i2) {
- const n2 = this.get(vs);
- if (n2) {
- var o2 = this._n + ".pullMsgOnInvite";
- if (Ce.l(o2 + " flag:" + this._bPullOnInvite), this._bPullOnInvite) {
- var r2 = this.getLocalLastMessage(i2), a2 = this.getLocalSecondLastMessage(i2);
- let e2 = 1, s2 = 1;
- r2 && (e2 = r2.sequence), a2 && (s2 = a2.sequence);
- r2 = n2.getGroupRemoteLastSeq(i2.replace(t.CONV_GROUP, ""));
- Ce.l(o2 + ` convID:${i2} localLastSeq:${e2} localSecondLastSeq:${s2} remoteLastSeq:` + r2), this.clearMemMsg(i2), 1 < e2 - s2 ? this._recursiveGetMsgList([], i2, false, e2, s2) : 1 < r2 - e2 && this._recursiveGetMsgList([], i2, true, r2, e2);
- }
- }
- }
- _recursiveGetMsgList(o2, r2, a2, c2, l2, e2) {
- this.getMessageList({ conversationID: r2, nextReqMessageID: e2 }).then((e3) => {
- const { messageList: t2, isCompleted: s2, nextReqMessageID: i2 } = e3.data, n2 = t2.filter((e4) => a2 ? e4.sequence > l2 && e4.sequence <= c2 : e4.sequence > l2 && e4.sequence < c2);
- o2.unshift(...n2), !s2 && 0 < t2.length && t2[0].sequence > l2 && o2.length < 60 ? this._recursiveGetMsgList(o2, r2, a2, c2, l2, i2) : this._emitMsgReceived(r2, o2);
- });
- }
- _emitMsgReceived(t2, s2) {
- if (0 < s2.length) {
- const i2 = s2.filter((t3, e2, s3) => e2 === s3.findIndex((e3) => e3.sequence === t3.sequence)), n2 = this.hasLocalConversation(t2), o2 = i2.map((e2) => e2.sequence);
- Ce.l(`${this._n}._emitMsgReceived convID:${t2} has:${n2} count:${o2.length} sequenceList:`, o2), this.emitOEvt(e.MESSAGE_RECEIVED, i2), n2 ? this.patchConvLastMessage(t2, true) : this.getConversationProfile(t2).then(() => {
- this.patchConvLastMessage(t2, true);
- });
- }
- }
- deleteLocalConvList(e2) {
- let t2 = false;
- e2.forEach((e3) => {
- this._convMap.has(e3) && (this.deleteLocalConv(e3, false), t2 = true);
- }), Ce.l(this._n + `.deleteLocalConvList convID:${e2} isConvIDExisted:` + t2), t2 && this.emitConvUpdate(true, false);
- }
- isMessageSentByCurrentInstance(e2) {
- return !(!this._msgListHandler.hasLocalMsg(e2.conversationID, e2.ID) && !this._sll.has(e2.random));
- }
- modifyMessageList(e2) {
- var s2, i2;
- e2.startsWith(t.CONV_C2C) && this._convMap.has(e2) && (i2 = this._convMap.get(e2), s2 = Date.now(), this._msgListHandler.modifyMsgSentByPeer({ conversationID: e2, latestNick: i2.userProfile.nick, latestAvatar: i2.userProfile.avatar }), i2 = this.get(Ts).getNickAndAvatarByUserID(this.getMyUserID()), this._msgListHandler.modifyMsgSentByMe({ conversationID: e2, latestNick: i2.nick, latestAvatar: i2.avatar }), Ce.l(this._n + `.modifyMessageList convID:${e2} cost:` + Dt(s2)));
- }
- updateUserProfileSpecifiedKey(e2) {
- Ce.l(this._n + ".updateUserProfileSpecifiedKey options:", e2);
- var { conversationID: t2, nick: s2, avatar: i2 } = e2;
- if (this._convMap.has(t2)) {
- const e3 = this._convMap.get(t2).userProfile;
- ke(s2) && e3.nick !== s2 && (e3.nick = s2), ke(i2) && e3.avatar !== i2 && (e3.avatar = i2), this.emitConvUpdate(true, false);
- }
- }
- _onMyProfileModified(t2) {
- const e2 = this.getLocalConvList(), s2 = Date.now();
- e2.forEach((e3) => {
- this.modifyMessageSentByMe({ conversationID: e3.conversationID, ...t2 });
- }), Ce.l(this._n + "._onMyProfileModified. modify all messages sent by me, cost:" + Dt(s2));
- }
- modifyMessageSentByMe(e2) {
- this._msgListHandler.modifyMsgSentByMe(e2);
- }
- getLatestMessageSentByMe(e2) {
- return this._msgListHandler.getLatestMsgSentByMe(e2);
- }
- modifyMessageSentByPeer(e2) {
- this._msgListHandler.modifyMsgSentByPeer(e2);
- }
- getLatestMessageSentByPeer(e2) {
- return this._msgListHandler.getLatestMsgSentByPeer(e2);
- }
- pushIntoNoticeResult(e2, t2) {
- return !(!this._msgListHandler.pushIn(t2) || this._sll.has(t2.random) || (e2.push(t2), 0));
- }
- getLocalLastMessage(e2) {
- return this._msgListHandler.getLocalLastMsg(e2);
- }
- getLocalSecondLastMessage(e2) {
- return this._msgListHandler.getLocalSecondLastMsg(e2);
- }
- checkAndPatchRemark() {
- const n2 = this.get(Es);
- if (0 !== this._convMap.size && n2) {
- const e2 = [...this._convMap.values()].filter((e3) => e3.type === t.CONV_C2C);
- if (0 !== e2.length) {
- let i2 = 0;
- e2.forEach((e3) => {
- var s2 = e3.conversationID.replace(t.CONV_C2C, "");
- if (n2.isMyFriend(s2)) {
- const t2 = n2.getFriendRemark(s2);
- e3.remark !== t2 && (e3.remark = t2, i2 += 1);
- }
- }), Ce.l(`${this._n}.checkAndPatchRemark. c2cConvCount:${e2.length} patchedCount:` + i2), 0 < i2 && this.emitConvUpdate(true, false);
- }
- }
- }
- updateTopicConversation(e2) {
- this._updateLocalConvList({ conversationOptionsList: e2, isFromGetConversations: true, updateUnreadCount: true });
- }
- sendReadReceipt(e2) {
- var s2 = e2[0];
- let i2 = null;
- return s2.conversationType === t.CONV_C2C ? i2 = this._m.get(ys) : s2.conversationType === t.CONV_GROUP && (i2 = this._m.get(vs)), i2 ? i2.sendReadReceipt(e2) : ni({ code: ei.NO_MODULE });
- }
- getReadReceiptList(e2) {
- var s2 = e2[0];
- let i2 = null;
- return s2.conversationType === t.CONV_C2C ? i2 = this._m.get(ys) : s2.conversationType === t.CONV_GROUP && (i2 = this._m.get(vs)), i2 ? i2.getReadReceiptList(e2) : ni({ code: ei.NO_MODULE });
- }
- getLastMessageTime(e2) {
- e2 = this.getLocalConversation(e2);
- return e2 ? e2.lastMessage.lastTime : 0;
- }
- getTotalUnreadCount() {
- const e2 = this.getLocalConvList();
- let s2 = 0;
- return e2.forEach((e3) => {
- e3.type !== t.CONV_SYSTEM && ("" !== e3.messageRemindType && e3.messageRemindType !== t.MSG_REMIND_ACPT_AND_NOTE || (s2 += e3.unreadCount));
- }), s2;
- }
- onTotalUnreadCountUpdate() {
- var t2 = this.getTotalUnreadCount();
- this._convTotalUnreadCount !== t2 && (Ce.l(`${this._n}.onTotalUnreadCountUpdate from ${this._convTotalUnreadCount} to ` + t2), this._convTotalUnreadCount = t2, this.emitOEvt(e.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED));
- }
- _isConvNeedShow(e2) {
- e2 = this.getLocalConversation(e2);
- if ($e(e2))
- return true;
- var s2 = e2.type === t.CONV_TOPIC, i2 = e2.type === t.CONV_GROUP && e2.groupProfile.type === t.GRP_ROOM, e2 = e2.type === t.CONV_GROUP && e2.groupProfile.type === t.GRP_LIVE;
- return !(s2 || i2 || e2);
- }
- setAllRcvMsgOpt(e2) {
- return this._msgRemindHandler.setAllRcvMsgOpt(e2);
- }
- getAllRcvMsgOpt() {
- return this._msgRemindHandler.getAllRcvMsgOpt();
- }
- onAllRcvMsgOptNotify(e2) {
- this._msgRemindHandler.onAllRcvMsgOptNotify(e2);
- }
- clearUnreadCount(e2) {
- const t2 = this.getLocalConversation(e2);
- t2 && 0 < t2.unreadCount && (t2.unreadCount = 0, this.emitConvUpdate(true, false));
- }
- storeHoppingMessageList(e2) {
- this._msgListHandler.storeHoppingMsgList(e2);
- }
- clearMemMsg(e2, t2 = false) {
- Ce.l(this._n + `.clearMemMsg convID:${e2} isOverLimit:` + t2), this._msgListHandler.removeByConvID(e2), this._completedMap.delete(e2), this._roamingMsgKeyAndTimeMap.delete(e2), this._everClearedMap.set(e2, 1);
- }
- reset() {
- Ce.l(this._n + ".reset"), this._setStorageConvList(true), this._pagingStatus = Ut, this._msgListHandler.reset(), this._msgRemindHandler.reset(), this._roamingMsgKeyAndTimeMap.clear(), this._sll.reset(), this._peerReadTimeMap.clear(), this._completedMap.clear(), this._convMap.clear(), this._pagingTs = 0, this._pagingStartIdx = 0, this._pagingPinnedTs = 0, this._pagingPinnedStartIdx = 0, this._remoteGroupReadSeqMap.clear(), this._convTotalUnreadCount = 0, this._pagingGetCostList.length = 0, this._pagingConvIDMap.clear(), this._convIDFromUnreadDBMap.clear(), this._pagingGetCostList.length = 0, this._convMapForDiff.clear(), this._partialUpdatedConvMap.clear(), this._everClearedMap.clear(), this._bPullOnInvite = true, this._convGroupHandler.reset(), this.resetReady();
- }
-};
-var hn = ["topicID", "topicName", "avatar", "introduction", "notification", "unreadCount", "muteAllMembers", "customData", "groupAtInfoList", "nextMessageSeq", "selfInfo"];
-var pn = function(e2, t2) {
- return Oe(e2) ? { lastTime: 0, lastSequence: 0, fromAccount: "", payload: null, type: "", messageForShow: "", nick: "", avatar: "", version: 0, cloudCustomData: "", isRevoked: false, revoker: null } : { lastTime: e2.time || 0, lastSequence: e2.sequence || 0, fromAccount: e2.from || "", payload: e2.payload || null, type: e2.type || "", messageForShow: yt(e2.type, e2.payload, t2), nick: e2.nick || "", avatar: e2.avatar || "", version: e2.version || 0, cloudCustomData: e2.cloudCustomData || "", isRevoked: e2.isRevoked || false, revoker: e2.revoker || null };
-};
-var gn = class {
- constructor(e2, t2) {
- this.topicID = "", this.topicName = "", this.avatar = "", this.introduction = "", this.notification = "", this.unreadCount = 0, this.muteAllMembers = false, this.customData = "", this.groupAtInfoList = [], this.nextMessageSeq = 0, this.lastMessage = pn(e2.lastMessage, t2), this.selfInfo = { muteTime: 0, readedSequence: 0, messageRemindType: "", excludedUnreadSequenceList: void 0 }, this._initTopic(e2);
- }
- _initTopic(e2) {
- for (const t2 in e2)
- hn.indexOf(t2) < 0 || ("selfInfo" === t2 ? this.updateSelfInfo(e2[t2]) : this[t2] = "muteAllMembers" === t2 ? 1 === e2[t2] : e2[t2]);
- }
- updateUnreadCount(e2 = 0) {
- this.unreadCount = e2;
- }
- updateNextMessageSeq(e2) {
- this.nextMessageSeq = e2;
- }
- updateLastMessage(e2) {
- this.lastMessage = pn(e2);
- }
- updateGroupAtInfoList(e2) {
- this.groupAtInfoList = JSON.parse(JSON.stringify(e2));
- }
- updateTopic(e2) {
- $e(e2.selfInfo) || this.updateSelfInfo(e2.selfInfo), $e(e2.muteAllMembers) || (this.muteAllMembers = 1 === e2.muteAllMembers), We(this, e2, ["groupID", "lastMessageTime", "selfInfo", "muteAllMembers", "lastMsg"]);
- }
- updateSelfInfo(e2) {
- return 0 === We(this.selfInfo, e2, [], [""]);
- }
- reduceUnreadCount() {
- return 1 <= this.unreadCount && (--this.unreadCount, true);
- }
- isLastMessageRevoked({ sequence: e2 }) {
- return e2 === this.lastMessage.lastSequence;
- }
- setLastMessageRevoked(e2) {
- this.lastMessage.isRevoked = e2;
- }
- setLastMessageRevoker(e2) {
- this.lastMessage.revoker = e2;
- }
-};
-var mn = class extends oi {
- constructor(e2) {
- super(e2), this._n = "TopicModule", this._topicMap = /* @__PURE__ */ new Map(), this._getTopicTimeMap = /* @__PURE__ */ new Map(), this.TOPIC_CACHE_TIME = 300, this.TOPIC_LAST_ACTIVE_TIME = 3600, this.getIEmitInst().on(Yi.CLOUD_CONFIG, this._onCloudConfig, this);
- }
- _onCloudConfig() {
- var e2 = this.getCloudConfig("topic_cache_time"), t2 = this.getCloudConfig("topic_last_active_time");
- $e(e2) || (this.TOPIC_CACHE_TIME = Number(e2)), $e(t2) || (this.TOPIC_LAST_ACTIVE_TIME = Number(t2));
- }
- onTopicCreated(t2) {
- var s2 = t2["groupID"];
- this.resetGetTopicTime(s2), this.emitOEvt(e.TOPIC_CREATED, t2);
- }
- onTopicDeleted(t2) {
- const { groupID: s2, topicIDList: i2 = [] } = t2;
- i2.forEach((e2) => {
- this._deleteLocalTopic(s2, e2);
- }), this.emitOEvt(e.TOPIC_DELETED, t2);
- }
- onTopicProfileUpdated(t2) {
- const { groupID: s2, topicID: i2 } = t2, n2 = this.getLocalTopic(s2, i2);
- n2 && (n2.updateTopic(t2), this.emitOEvt(e.TOPIC_UPDATED, { groupID: s2, topic: n2 }));
- }
- onTopicLatestMsg(e2) {
- const { topicLatestMessage: s2, excludedUnreadSequenceList: i2 } = e2 || {};
- if (!Oe(s2)) {
- const { topicID: e3 } = s2["groupProfile"], n2 = (s2.conversationType = t.CONV_GROUP, s2.to = e3, new xi(s2));
- n2.setElement(s2.elements), this.updateUnreadCountAndLastMsg(e3, n2, i2);
- }
- }
- onMessageRemindTypeUpdated(t2) {
- const { groupID: s2, topicID: i2, messageRemindType: n2 } = t2, o2 = this.getLocalTopic(s2, i2);
- if (o2) {
- const t3 = o2.updateSelfInfo({ messageRemindType: n2 });
- t3 && this.emitOEvt(e.TOPIC_UPDATED, { groupID: s2, topic: o2 }), Ce.l(this._n + `.onMessageRemindTypeUpdated topicID:${i2} messageRemindType:${n2} isUpdated:` + t3);
- }
- }
- onAtInfoUpdated(t2) {
- const { topicID: s2, groupAtInfoList: i2 } = t2, n2 = Tt(s2), o2 = this.getLocalTopic(n2, s2);
- o2 && !$e(i2) && (o2.updateGroupAtInfoList(i2), this.emitOEvt(e.TOPIC_UPDATED, { groupID: n2, topic: o2 }));
- }
- onUnreadCountUpdatedFromConv(t2, s2 = 0) {
- const i2 = Tt(t2), n2 = this.getLocalTopic(i2, t2);
- n2 && n2.unreadCount !== s2 && (n2.updateUnreadCount(s2), 0 === s2 && n2.updateSelfInfo({ readedSequence: n2.lastMessage.lastSequence }), this.emitOEvt(e.TOPIC_UPDATED, { groupID: i2, topic: n2 }));
- }
- onMessageSent(t2) {
- const { groupID: s2, topicID: i2, lastMessage: n2 } = t2, o2 = this.getLocalTopic(s2, i2);
- if (o2) {
- const { sequence: t3 = 0 } = n2, i3 = t3 + 1;
- i3 > o2.nextMessageSeq && (o2.updateNextMessageSeq(i3), o2.updateLastMessage(n2), o2.updateSelfInfo({ readedSequence: t3 }), o2.updateUnreadCount(0), this.emitOEvt(e.TOPIC_UPDATED, { groupID: s2, topic: o2 }));
- }
- }
- onMessageModified(t2) {
- var { to: s2, time: i2, sequence: n2, elements: o2, cloudCustomData: r2, messageVersion: a2 } = t2, c2 = Tt(s2), l2 = this.getLocalTopic(c2, s2);
- if (l2) {
- const d2 = l2.lastMessage;
- Ce.d(this._n + `.onMessageModified topicID:${s2} lastMessage:`, JSON.stringify(d2), "options:", JSON.stringify(t2)), d2 && (null === d2.payload || d2.lastTime === i2 && d2.lastSequence === n2 && d2.version !== a2) && (d2.type = o2[0].type, d2.payload = o2[0].content, d2.messageForShow = yt(d2.type, d2.payload, this.isIntl()), d2.cloudCustomData = r2, d2.version = a2, d2.lastSequence = n2, d2.lastTime = i2, this.emitOEvt(e.TOPIC_UPDATED, { groupID: c2, topic: l2 }));
- }
- }
- onMessageRevoked(t2) {
- if (0 !== t2.length) {
- let s2 = null, i2 = null, n2 = false;
- t2.forEach((e2) => {
- const t3 = e2.to;
- if (i2 = Tt(t3), s2 = this.getLocalTopic(i2, t3)) {
- s2.reduceUnreadCount() && (n2 = true), s2.isLastMessageRevoked(e2) && (s2.setLastMessageRevoked(true), s2.setLastMessageRevoker(e2.revoker), n2 = true);
- const t4 = s2.selfInfo.excludedUnreadSequenceList || [];
- t4.push(e2.sequence), s2.updateSelfInfo({ excludedUnreadSequenceList: t4 });
- }
- }), n2 && this.emitOEvt(e.TOPIC_UPDATED, { groupID: i2, topic: s2 });
- }
- }
- isLastMessageRevoked(e2) {
- const { topicID: t2, sequence: s2 } = e2, i2 = Tt(t2), n2 = this.getLocalTopic(i2, t2);
- let o2 = false;
- return o2 = n2 ? n2.isLastMessageRevoked({ sequence: s2 }) : o2;
- }
- updateUnreadCountAndLastMsg(i2, n2, o2) {
- const r2 = Tt(i2), a2 = this.getLocalTopic(r2, i2);
- if (a2) {
- let s2 = a2.selfInfo.excludedUnreadSequenceList || [];
- if ($e(o2) || (s2 = o2), n2._isExcludedFromUnreadCount && s2.push(n2.sequence), a2.updateSelfInfo({ excludedUnreadSequenceList: s2 }), Ce.l(`${this._n}.updateUnreadCountAndLastMsg seq:${n2.sequence} lastSeq:` + a2.lastMessage.lastSequence), n2.sequence > a2.lastMessage.lastSequence) {
- a2.updateLastMessage(n2);
- const o3 = n2.sequence + 1;
- a2.updateNextMessageSeq(o3);
- n2 = this._computeUnreadCount(a2);
- a2.updateUnreadCount(n2);
- const c2 = this.get(Ds).getLocalConversation("" + t.CONV_GROUP + i2);
- c2 && c2.updateUnreadCount({ nextUnreadCount: n2, isFromGetConversations: true }), this.emitOEvt(e.TOPIC_UPDATED, { groupID: r2, topic: a2 });
- }
- }
- }
- getJoinedCommunityList() {
- return this.get(vs).syncCommunityWithTopic();
- }
- createTopicInCommunity(t2) {
- const s2 = this._n + ".createTopicInCommunity", e2 = t2["topicID"];
- if (!$e(e2) && !rt(e2))
- return ni({ code: ei.ILLEGAL_TOPIC_ID });
- if (t2.topicName && false === this._filterProfanity("topicName", t2))
- return ni({ code: ei.PROFANITY_FOUND });
- if (t2.introduction && false === this._filterProfanity("introduction", t2))
- return ni({ code: ei.PROFANITY_FOUND });
- if (t2.notification && false === this._filterProfanity("notification", t2))
- return ni({ code: ei.PROFANITY_FOUND });
- const i2 = new Ti("createTopicInCommunity");
- return this.req({ P: ri.CREATE_TOPIC, data: { ...t2 } }).then((e3) => {
- e3 = e3.data.topicID;
- return i2.setMessage("topicID:" + e3).end(), Ce.l(s2 + " ok. topicID:" + e3), this._updateTopicMap([{ ...t2, topicID: e3 }]), Zs({ topicID: e3 });
- }).catch((e3) => (i2.setError(e3).end(), Ce.e(s2 + " failed. error:", e3), ni(e3)));
- }
- deleteTopicFromCommunity(e2) {
- const s2 = this._n + ".deleteTopicFromCommunity", { groupID: o2, topicIDList: t2 = [] } = e2, r2 = new Ti("deleteTopicFromCommunity");
- return r2.setMessage(`groupID:${o2} topicIDList:` + t2), this.req({ P: ri.DEL_TOPIC, data: { groupID: o2, topicIDList: t2 } }).then((e3) => {
- const { resultList: t3 = [] } = e3.data, i2 = [], n2 = [];
- t3.forEach((e4) => {
- var { topicID: e4, errorCode: t4, errorInfo: s3 } = e4;
- 0 === t4 ? i2.push({ topicID: e4 }) : n2.push({ topicID: e4, code: t4, message: s3 });
- });
- e3 = `success count:${i2.length}, fail count:` + n2.length;
- return r2.setMoreMessage(e3).end(), Ce.l(s2 + " ok. " + e3), i2.forEach((e4) => {
- this._deleteLocalTopic(o2, e4.topicID);
- }), Zs({ successTopicList: i2, failureTopicList: n2 });
- }).catch((e3) => (r2.setError(e3).end(), Ce.e(s2 + " failed. error:", e3), ni(e3)));
- }
- updateTopicProfile(e2) {
- const t2 = this._n + ".updateTopicProfile";
- if (Ce.l(t2 + " options:", e2), e2.topicName && false === this._filterProfanity("topicName", e2))
- return ni({ code: ei.PROFANITY_FOUND });
- if (e2.introduction && false === this._filterProfanity("introduction", e2))
- return ni({ code: ei.PROFANITY_FOUND });
- if (e2.notification && false === this._filterProfanity("notification", e2))
- return ni({ code: ei.PROFANITY_FOUND });
- const s2 = new Ti("updateTopicProfile");
- return s2.setMessage(`groupID:${e2.groupID} topicID:` + e2.topicID), $e(e2.muteAllMembers) || (e2.muteAllMembers = true === e2.muteAllMembers ? "On" : "Off"), this.req({ P: ri.UPDATE_TOPIC_PROFILE, data: { ...e2 } }).then(() => (s2.end(), Ce.l(t2 + " ok"), this._updateTopicMap([e2]), Zs({ topic: this.getLocalTopic(e2.groupID, e2.topicID) }))).catch((e3) => (s2.setError(e3).end(), Ce.e(t2 + " failed. error:", e3), ni(e3)));
- }
- getTopicList(e2) {
- const i2 = this._n + ".getTopicList", { groupID: n2, topicIDList: t2 = [] } = e2, c2 = 0 === t2.length, l2 = new Ti("getTopicList");
- if (l2.setMessage("groupID:" + n2), this._getTopicTimeMap.has(n2)) {
- const { isGetAll: e3, time: s2 } = this._getTopicTimeMap.get(n2);
- if ((e3 || !e3 && !c2) && Date.now() - s2 < 1e3 * this.TOPIC_CACHE_TIME) {
- const e4 = this._getLocalTopicList(n2, t2);
- if (c2 || e4.length === t2.length)
- return l2.setMoreMessage("from cache, topic count:" + e4.length).end(), Ce.l(i2 + ` groupID:${n2} from cache, topic count:` + e4.length), ii({ successTopicList: e4, failureTopicList: [] });
- }
- }
- return this.req({ P: ri.GET_TOPIC_LIST, data: { groupID: n2, topicIDList: t2 } }).then((e3) => {
- const { topicInfoList: t3 = [] } = e3.data, o2 = [], r2 = [], a2 = [];
- t3.forEach((e4) => {
- var { topic: e4, selfInfo: t4, errorCode: s3, errorInfo: i3 } = e4, n3 = e4["topicID"];
- 0 === s3 ? (o2.push({ ...e4, selfInfo: t4 }), r2.push(n3)) : a2.push({ topicID: n3, code: s3, message: i3 });
- }), this._updateTopicMap(o2), this._handleTopicAtInfo(o2);
- e3 = `success count:${r2.length}, fail count:` + a2.length;
- l2.setMoreMessage(e3).end(), Ce.l(i2 + ` groupID:${n2} from remote, ` + e3);
- let s2 = [];
- return Oe(r2) || (this._getTopicTimeMap.set(n2, { time: Date.now(), isGetAll: c2 }), s2 = this._getLocalTopicList(n2, r2)), Zs({ successTopicList: s2, failureTopicList: a2 });
- }).catch((e3) => (l2.setError(e3).end(), Ce.e(i2 + " failed. error:", e3), ni(e3)));
- }
- hasLocalTopic(e2, t2) {
- return !!this._topicMap.has(e2) && this._topicMap.get(e2).has(t2);
- }
- getLocalTopic(e2, t2) {
- let s2 = null;
- return s2 = this._topicMap.has(e2) ? this._topicMap.get(e2).get(t2) : s2;
- }
- _getLocalTopicList(e2, t2 = []) {
- const s2 = this._topicMap.get(e2);
- let i2 = [];
- return s2 && (i2 = [...s2.values()]), 0 === t2.length ? i2 : i2.filter((e3) => t2.includes(e3.topicID));
- }
- _deleteLocalTopic(e2, t2) {
- this._topicMap.has(e2) && this._topicMap.get(e2).has(t2) && (this._topicMap.get(e2).delete(t2), Ce.l(this._n + `._deleteLocalTopic groupID:${e2} topicID:` + t2));
- }
- _updateTopicMap(e2) {
- const o2 = [];
- e2.forEach((e3) => {
- var { groupID: s2, topicID: i2 } = e3;
- let n2 = null;
- this._topicMap.has(s2) || this._topicMap.set(s2, /* @__PURE__ */ new Map()), this._topicMap.get(s2).has(i2) ? (n2 = this._topicMap.get(s2).get(i2)).updateTopic(e3) : (this._getTopicLastMessage(e3), n2 = new gn(e3, this.isIntl()), this._topicMap.get(s2).set(i2, n2));
- e3 = this._computeUnreadCount(n2);
- n2.updateUnreadCount(e3), o2.push({ conversationID: "" + t.CONV_GROUP + i2, type: t.CONV_TOPIC, unreadCount: e3 });
- }), 0 < o2.length && this.get(Ds).updateTopicConversation(o2);
- }
- resetGetTopicTime(e2) {
- $e(e2) ? [...this._getTopicTimeMap.keys()].forEach((e3) => {
- this._getTopicTimeMap.set(e3, 0);
- }) : this._getTopicTimeMap.set(e2, 0);
- }
- getTopicListOnReconnected() {
- const e2 = [...this._topicMap.keys()], i2 = [], n2 = this.get(Ds);
- e2.forEach((e3) => {
- const s2 = [], t2 = this._getLocalTopicList(e3);
- n2.deleteTopicRoamingInfo(e3), t2.forEach((e4) => {
- var { lastMessage: { lastTime: t3 = 0 } } = e4;
- Date.now() - 1e3 * t3 < 1e3 * this.TOPIC_LAST_ACTIVE_TIME && s2.push(e4.topicID);
- }), 0 < s2.length && i2.push({ groupID: e3, topicIDList: s2 });
- }), Ce.l(this._n + ".getTopicListOnReconnected. active community count:" + i2.length), this._relayGetTopicList(i2);
- }
- _relayGetTopicList(t2) {
- if (0 !== t2.length) {
- const e2 = t2.shift(), s2 = 5 < e2.topicIDList.length ? "topicIDList.length:" + e2.topicIDList.length : "topicIDList:" + e2.topicIDList, i2 = new Ti("relayGetTopicList");
- i2.setMessage(s2), Ce.l(this._n + "._relayGetTopicList. " + s2), this.getTopicList(e2).then(() => {
- i2.end(), this._relayGetTopicList(t2);
- }).catch((e3) => {
- i2.setError(e3).end(), this._relayGetTopicList(t2);
- });
- }
- }
- _handleTopicAtInfo(e2) {
- 0 !== e2.length && e2.forEach((e3) => {
- const { groupID: t2, topicID: s2, groupAtInfoList: i2 } = e3, n2 = [];
- $e(i2) || (i2.forEach((e4) => {
- n2.push({ ...e4, groupID: t2, topicID: s2 });
- }), this.get(Ds).onNewGroupAtTips({ dataList: n2 }));
- });
- }
- _getTopicLastMessage(e2) {
- var t2;
- $e(e2.lastMsg) || (t2 = { time: e2.lastMsg.time, sequence: e2.lastMsg.sequence, from: e2.lastMsg.from, payload: e2.lastMsg.elements[0] ? e2.lastMsg.elements[0].content : null, type: e2.lastMsg.elements[0] ? e2.lastMsg.elements[0].type : "", nick: e2.lastMsg.nick, avatar: e2.lastMsg.avatar, version: e2.lastMsg.messageVersion, cloudCustomData: e2.lastMsg.cloudCustomData, isRevoked: 2 === e2.lastMsg.isPlaceMessage, revoker: Oe(e2.lastMsg.revokerInfo) ? null : e2.lastMsg.revokerInfo.revoker }, e2.lastMessage = t2);
- }
- deleteTopicListInCommunity(s2) {
- const e2 = this._getLocalTopicList(s2), i2 = this.get(Ds);
- e2.forEach((e3) => {
- e3 = e3.topicID;
- this._deleteLocalTopic(s2, e3), this._getTopicTimeMap.delete(s2), i2.deleteLocalConv("" + t.CONV_GROUP + e3);
- });
- }
- _computeUnreadCount(s2) {
- const { excludedUnreadSequenceList: e2, readedSequence: i2 } = s2.selfInfo;
- let n2 = s2.nextMessageSeq - s2.selfInfo.readedSequence - 1;
- if (Fe(e2)) {
- let t2 = 0;
- e2.forEach((e3) => {
- e3 > i2 && e3 <= s2.nextMessageSeq - 1 && (t2 += 1);
- }), 1 <= t2 && (n2 -= t2);
- }
- return n2 < 0 ? 0 : n2;
- }
- _filterProfanity(e2, t2) {
- const s2 = this.get(Vs);
- if (!s2)
- return true;
- var { isAllowedToSend: i2, modifiedText: n2 } = s2.filterText(t2[e2], E);
- return true === i2 && (t2[e2] = n2, true);
- }
- getMessageExtensions(e2, t2) {
- Ce.l(this._n + ".getMessageExtensions startSequence:" + t2);
- var s2 = Tt(e2.to);
- return this.req({ P: ri.GET_GRP_MSG_EXT, data: { groupID: s2, topicID: e2.to, messageSequence: e2.sequence, startSequence: t2 } });
- }
- modifyMsgExts(e2, t2, s2 = 1) {
- Ce.l(this._n + ".modifyMsgExts operateType:" + s2);
- var i2 = Tt(e2.to);
- return this.req({ P: ri.MODIFY_GRP_MSG_EXT, data: { groupID: i2, topicID: e2.to, messageSequence: e2.sequence, extensionList: t2, operateType: s2 } });
- }
- reset() {
- Ce.l(this._n + ".reset"), this._topicMap.clear(), this._getTopicTimeMap.clear(), this.TOPIC_CACHE_TIME = 300, this.TOPIC_LAST_ACTIVE_TIME = 3600;
- }
-};
-var fn = class {
- constructor(e2) {
- this._userM = e2, this._n = "ProfileHandler", this.TAG = "profile", this.accountProfileMap = /* @__PURE__ */ new Map(), this.expirationTime = 864e5;
- }
- setExpirationTime(e2) {
- this.expirationTime = e2;
- }
- getUserProfile(e2) {
- const t2 = this._n + ".getUserProfile", s2 = e2.userIDList, i2 = (e2.fromAccount = this._userM.getMyAccount(), 100 < s2.length && (Ce.w(t2 + " " + St(100)), s2.length = 100), []), n2 = [];
- var o2;
- for (let e3 = 0, t3 = s2.length; e3 < t3; e3++)
- o2 = s2[e3], this._userM.isMyFriend(o2) && this._contains(o2) ? n2.push(this._getProfileFromMap(o2)) : i2.push(o2);
- if (0 === i2.length)
- return ii(n2);
- e2.toAccount = i2;
- const r2 = e2.bFromGetMyProfile || false, a2 = [], c2 = (e2.toAccount.forEach((e3) => {
- a2.push({ toAccount: e3, standardSequence: 0, customSequence: 0 });
- }), e2.userItem = a2, new Ti("getUserProfile"));
- return c2.setMessage(5 < s2.length ? "userIDList.length:" + s2.length : "userIDList:" + s2), this._userM.req({ P: ri.GET_USER_PROFILE, data: e2 }).then((e3) => {
- c2.end(), Ce.i(t2 + " ok");
- e3 = this._handleResponse(e3).concat(n2);
- return Zs(r2 ? e3[0] : e3);
- }).catch((e3) => (c2.setError(e3).end(), Ce.e(t2 + " failed. error:", e3), ni(e3)));
- }
- getMyProfile() {
- var e2, t2 = this._userM.getMyAccount(), s2 = this._n + ".getMyProfile";
- return Ce.l(s2 + " myAccount:" + t2), this._fill(), this._contains(t2) ? (e2 = this._getProfileFromMap(t2), Ce.d(s2 + " from cache, myProfile:" + JSON.stringify(e2)), ii(e2)) : this.getUserProfile({ fromAccount: t2, userIDList: [t2], bFromGetMyProfile: true });
- }
- _handleResponse(s2) {
- var i2, n2 = s2.data["userProfileItem"];
- if (!Fe(n2))
- return [];
- const o2 = [], r2 = Date.now();
- for (let e2 = 0, t2 = n2.length; e2 < t2; e2++) {
- const { to: s3, profileItem: r3 } = n2[e2];
- "@TLS#NOT_FOUND" !== s3 && "" !== s3 && (i2 = this._update(s3, this._getLatestProfileFromResponse(s3, r3))["latestProfile"], o2.push(i2));
- }
- return Ce.l(this._n + "._handleResponse cost:" + Dt(r2)), o2;
- }
- _getLatestProfileFromResponse(e2, s2) {
- const i2 = { userID: e2, profileCustomField: [] };
- if (!Oe(s2))
- for (let e3 = 0, t2 = s2.length; e3 < t2; e3++)
- if (-1 < s2[e3].tag.indexOf("Tag_Profile_Custom"))
- i2.profileCustomField.push({ key: s2[e3].tag, value: s2[e3].value });
- else
- switch (s2[e3].tag) {
- case ye.NICK:
- i2.nick = s2[e3].value;
- break;
- case ye.GENDER:
- i2.gender = s2[e3].value;
- break;
- case ye.BIRTHDAY:
- i2.birthday = s2[e3].value;
- break;
- case ye.LOCATION:
- i2.location = s2[e3].value;
- break;
- case ye.SELFSIGNATURE:
- i2.selfSignature = s2[e3].value;
- break;
- case ye.ALLOWTYPE:
- i2.allowType = s2[e3].value;
- break;
- case ye.LANGUAGE:
- i2.language = s2[e3].value;
- break;
- case ye.AVATAR:
- i2.avatar = s2[e3].value;
- break;
- case ye.MESSAGESETTINGS:
- i2.messageSettings = s2[e3].value;
- break;
- case ye.ADMINFORBIDTYPE:
- i2.adminForbidType = s2[e3].value;
- break;
- case ye.LEVEL:
- i2.level = s2[e3].value;
- break;
- case ye.ROLE:
- i2.role = s2[e3].value;
- break;
- default:
- Ce.w(this._n + "._getLatestProfileFromResponse unknown tag:", s2[e3].tag, s2[e3].value);
- }
- return i2;
- }
- updateMyProfile(n2) {
- const o2 = this._n + ".updateMyProfile";
- if (n2.nick && false === this._userM.filterProfanity("nick", n2))
- return ni({ code: ei.PROFANITY_FOUND });
- if (n2.selfSignature && false === this._userM.filterProfanity("selfSignature", n2))
- return ni({ code: ei.PROFANITY_FOUND });
- const r2 = new Ti("updateMyProfile");
- r2.setMessage(JSON.stringify(n2));
- var t2 = new sn().validate(n2);
- if (!t2.valid)
- return r2.setCode(ei.UPDATE_PROFILE_INVALID_PARAM).setMoreMessage("info:" + t2.tips).end(), Ce.e(o2 + " info:" + t2.tips), ni({ code: ei.UPDATE_PROFILE_INVALID_PARAM });
- const s2 = [];
- for (const e2 in n2)
- Object.prototype.hasOwnProperty.call(n2, e2) && ("profileCustomField" === e2 ? n2.profileCustomField.forEach((e3) => {
- s2.push({ tag: e3.key, value: e3.value });
- }) : s2.push({ tag: ye[e2.toUpperCase()], value: n2[e2] }));
- if (0 === s2.length) {
- const e2 = new Qs({ code: ei.UPDATE_PROFILE_NO_KEY });
- return r2.setError(e2).end(), Ce.e(o2 + " failed. error:", e2), ni(e2);
- }
- const a2 = this._userM.getMyAccount();
- return this._userM.req({ P: ri.UPDATE_MY_PROFILE, data: { fromAccount: a2, profileItem: s2 } }).then((t3) => {
- r2.end(), Ce.i(o2 + " ok");
- var { isProfileUpdated: s3, latestProfile: i2 } = this._update(a2, n2);
- return true === s3 && this._userM.emitOEvt(e.PROFILE_UPDATED, [i2]), ii(i2);
- }).catch((e2) => (r2.setError(e2).end(), Ce.e(o2 + " failed. error:", e2), ni(e2)));
- }
- onProfileModified(t2) {
- var s2, i2 = t2.dataList;
- if (!Oe(i2)) {
- const n2 = i2.length;
- Ce.d(`${this._n}.onProfileModified count:${n2} dataList:`, t2.dataList);
- const o2 = [];
- for (let e2 = 0; e2 < n2; e2++) {
- s2 = i2[e2].userID;
- const { isProfileUpdated: t3, latestProfile: n3 } = this._update(s2, this._getLatestProfileFromResponse(s2, i2[e2].profileList));
- true === t3 && o2.push(n3);
- }
- 0 < o2.length && (this._userM.emitIEvt(Yi.PROFILE_UPDATED, o2), this._userM.emitOEvt(e.PROFILE_UPDATED, o2));
- }
- }
- _fill() {
- if (0 === this.accountProfileMap.size) {
- var s2 = this._getCachedProfiles(), i2 = Date.now();
- for (let e2 = 0, t2 = s2.length; e2 < t2; e2++)
- i2 - s2[e2].lastUpdatedTime < this.expirationTime && this.accountProfileMap.set(s2[e2].userID, s2[e2]);
- Ce.l(this._n + "._fill from cache, size:" + this.accountProfileMap.size);
- }
- }
- _update(e2, t2) {
- let s2, i2 = false;
- var n2 = Date.now();
- return this._contains(e2) ? (s2 = this._getProfileFromMap(e2), t2.profileCustomField && true === st(s2.profileCustomField, t2.profileCustomField) && (s2.lastUpdatedTime = n2, i2 = true), 0 < We(s2, t2, ["profileCustomField"]) && (s2.lastUpdatedTime = n2, i2 = true)) : (s2 = new sn(t2), !this._userM.isMyFriend(e2) && e2 !== this._userM.getMyAccount() || (s2.lastUpdatedTime = n2, i2 = true, this.accountProfileMap.set(e2, s2))), this._flush(e2 === this._userM.getMyAccount()), true === i2 && Ce.l(this._n + `._update account:${e2} isUpdated:` + i2), { isProfileUpdated: i2, latestProfile: s2 };
- }
- _flush(e2) {
- const t2 = [...this.accountProfileMap.values()], s2 = this._userM.getStorageModule();
- Ce.d(this._n + `._flush length:${t2.length} flushAtOnce:` + e2), s2.setItem(this.TAG, t2, e2);
- }
- _contains(e2) {
- return this.accountProfileMap.has(e2);
- }
- _getProfileFromMap(e2) {
- return this.accountProfileMap.get(e2);
- }
- _getCachedProfiles() {
- var e2 = this._userM.getStorageModule().getItem(this.TAG);
- return Oe(e2) ? [] : e2;
- }
- onConvProfileUpdated(s2) {
- var i2, n2, o2;
- const r2 = [];
- for (let e2 = 0, t2 = s2.length; e2 < t2; e2++)
- n2 = (i2 = s2[e2]).userID, this._userM.isMyFriend(n2) && (this._contains(n2) ? (o2 = this._getProfileFromMap(n2), 0 < We(o2, i2) && r2.push(n2)) : r2.push(i2.userID));
- 0 !== r2.length && (Ce.l(this._n + ".onConvProfileUpdated toAccountList:" + r2), this.getUserProfile({ userIDList: r2 }));
- }
- getNickAndAvatarByUserID(e2) {
- return this._contains(e2) ? { nick: (e2 = this._getProfileFromMap(e2)).nick, avatar: e2.avatar } : { nick: "", avatar: "" };
- }
- getUserNickAndAvatar(e2) {
- var t2 = [...new Set(e2)];
- Ce.l(`${this._n}.getUserNickAndAvatar userIDList.length:${e2.length} uniqueUserIDList.length:` + t2.length);
- const s2 = [];
- if (0 === e2.length)
- return Promise.resolve(s2);
- const i2 = this._createUserIDListGroup(t2), n2 = [];
- return i2.forEach((e3) => {
- n2.push(this.getUserProfile({ userIDList: e3 }));
- }), Promise.all(n2).then((e3) => (e3.forEach((e4) => {
- e4 = e4.data.map(({ userID: e5, nick: t3, avatar: s3 }) => ({ userID: e5, nick: t3, avatar: s3 }));
- s2.push(...e4);
- }), s2));
- }
- _createUserIDListGroup(e2) {
- const t2 = [];
- let s2 = 0;
- for (; s2 < e2.length; )
- t2.push(e2.slice(s2, s2 += 100));
- return t2;
- }
- reset() {
- this._flush(true), this.accountProfileMap.clear();
- }
-};
-var Mn = class {
- constructor(e2) {
- Oe || (this.userID = e2.userID || "", this.timeStamp = e2.timeStamp || 0);
- }
-};
-var In = class {
- constructor(e2) {
- this._userM = e2, this._n = "BlacklistHandler", this._blacklistMap = /* @__PURE__ */ new Map(), this._startIndex = 0;
- }
- getLocalBlacklist() {
- return [...this._blacklistMap.keys()];
- }
- getBlacklist() {
- const n2 = this._n + ".getBlacklist", t2 = { fromAccount: this._userM.getMyAccount(), maxLimited: 100, startIndex: this._startIndex }, o2 = new Ti("getBlacklist");
- return this._userM.req({ P: ri.GET_BL, data: t2 }).then((t3) => {
- var { blackListItem: t3, startIndex: s2 } = t3.data, i2 = Oe(t3) ? 0 : t3.length;
- o2.setMessage("count:" + i2).end(), Ce.i(n2 + " ok"), this._startIndex = s2, this._handleResponse(t3, true), this._userM.emitOEvt(e.BLACKLIST_UPDATED, [...this._blacklistMap.keys()]), 0 !== this._startIndex && this.getBlacklist();
- }).catch((e2) => (o2.setError(e2).end(), Ce.e(n2 + " failed. error:", e2), ni(e2)));
- }
- addBlacklist(t2) {
- const s2 = new Ti("addToBlacklist"), i2 = this._n + ".addBlacklist", n2 = this._userM.getMyAccount();
- if (1 !== t2.userIDList.length || t2.userIDList[0] !== n2)
- return t2.userIDList.includes(n2) && (t2.userIDList = t2.userIDList.filter((e3) => e3 !== n2)), t2.fromAccount = this._userM.getMyAccount(), t2.toAccount = t2.userIDList, this._userM.req({ P: ri.ADD_TO_BL, data: t2 }).then((e3) => (s2.setMessage(5 < t2.userIDList.length ? "userIDList.length:" + t2.userIDList.length : "userIDList:" + t2.userIDList).end(), Ce.i(i2 + " ok"), this._handleResponse(e3.resultItem, true), Zs([...this._blacklistMap.keys()]))).catch((e3) => (s2.setError(e3).end(), Ce.e(i2 + " failed. error:", e3), ni(e3)));
- {
- const t3 = ei.CANNOT_ADD_SELF_TO_BLACKLIST, n3 = this._userM.getErrMsg(t3);
- s2.setCode(t3).setMessage(n3).end();
- var e2 = new Qs({ code: t3 });
- return Ce.e(i2 + " failed. error:", e2), ni(e2);
- }
- }
- _handleResponse(o2, r2) {
- if (!Oe(o2)) {
- let s2, i2, n2;
- for (let e2 = 0, t2 = o2.length; e2 < t2; e2++)
- i2 = o2[e2].to, n2 = o2[e2].resultCode, !$e(n2) && 0 !== n2 || (r2 ? ((s2 = this._blacklistMap.has(i2) ? this._blacklistMap.get(i2) : new Mn()).userID = i2, Oe(o2[e2].addBlackTimeStamp) || (s2.timeStamp = o2[e2].addBlackTimeStamp), this._blacklistMap.set(i2, s2)) : this._blacklistMap.has(i2) && (s2 = this._blacklistMap.get(i2), this._blacklistMap.delete(i2)));
- }
- Ce.l(`${this._n}._handleResponse total:${this._blacklistMap.size} bAdd:` + r2);
- }
- deleteBlacklist(t2) {
- const s2 = this._n + ".deleteBlacklist", i2 = new Ti("removeFromBlacklist");
- return t2.fromAccount = this._userM.getMyAccount(), t2.toAccount = t2.userIDList, this._userM.req({ P: ri.RM_FROM_BL, data: t2 }).then((e2) => (i2.setMessage(5 < t2.userIDList.length ? "userIDList.length:" + t2.userIDList.length : "userIDList:" + t2.userIDList).end(), Ce.i(s2 + " ok"), this._handleResponse(e2.data.resultItem, false), Zs([...this._blacklistMap.keys()]))).catch((e2) => (i2.setError(e2).end(), Ce.e(s2 + " failed. error:", e2), ni(e2)));
- }
- onAccountDeleted(s2) {
- for (let e2 = 0, t2 = s2.length; e2 < t2; e2++) {
- const i3 = s2[e2];
- this._blacklistMap.has(i3) && this._blacklistMap.delete(i3);
- }
- const i2 = s2.length;
- 0 < i2 && (Ce.l(`${this._n}.onAccountDeleted count:${i2} ` + (i2 < 30 ? "userIDList:" + s2 : "")), this._userM.emitOEvt(e.BLACKLIST_UPDATED, [...this._blacklistMap.keys()]));
- }
- onAccountAdded(s2) {
- const i2 = [];
- var n2;
- for (let e2 = 0, t2 = s2.length; e2 < t2; e2++)
- n2 = s2[e2], this._blacklistMap.has(n2) || (this._blacklistMap.set(n2, new Mn({ userID: n2 })), i2.push(n2));
- 0 < i2.length && (Ce.l(`${this._n}.onAccountAdded count:${i2.length} userIDList:`, i2), this._userM.emitOEvt(e.BLACKLIST_UPDATED, [...this._blacklistMap.keys()]));
- }
- reset() {
- this._blacklistMap.clear(), this._startIndex = 0;
- }
-};
-var Cn = function(e2) {
- const n2 = String(e2).replace(/[=]+$/, "");
- let o2 = "";
- if (n2.length % 4 == 1)
- return "";
- for (let e3, t2, s2 = 0, i2 = 0; t2 = n2.charAt(i2++); ~t2 && (e3 = s2 % 4 ? 64 * e3 + t2 : t2, s2++ % 4) && (o2 += String.fromCharCode(255 & e3 >> (-2 * s2 & 6))))
- t2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(t2);
- try {
- return decodeURIComponent(escape(o2));
- } catch (e3) {
- return "";
- }
-};
-var Tn = class {
- constructor(e2) {
- this._userM = e2, this._n = "UserStatusHandler", this.MAX_QUERY_USER_COUNT = 500, this.MAX_SUBSCRIBE_USER_COUNT = 100, this.MAX_UNSUBSCRIBE_USER_COUNT = 100, this._userM.getIEmitInst().on(Yi.CLOUD_CONFIG, this._onCloudConfig, this);
- }
- _onCloudConfig() {
- var e2 = this._userM.getCloudConfig("status_query_count"), t2 = this._userM.getCloudConfig("status_sub_count"), s2 = this._userM.getCloudConfig("status_unsub_count");
- Ce.l(this._n + `._onCloudConfig statusQueryCount:${e2} statusSubscribeCount:${t2} statusUnsubscribeCount:` + s2), $e(e2) || (this.MAX_QUERY_USER_COUNT = parseInt(e2, 10)), $e(e2) || (this.MAX_SUBSCRIBE_USER_COUNT = parseInt(t2, 10)), $e(e2) || (this.MAX_UNSUBSCRIBE_USER_COUNT = parseInt(s2, 10));
- }
- onUserStatusUpdated(t2) {
- const s2 = t2["dataList"], i2 = this._userM.getMyUserID(), n2 = this._userM.get(Rs), o2 = s2.map((e2) => {
- var { to: e2, statusType: t3, customStatus: s3 } = e2, s3 = Cn(s3);
- return e2 === i2 && n2.setCustomStatus(s3), { userID: e2, statusType: t3, customStatus: s3 };
- });
- Ce.l(this._n + ".onUserStatusUpdated list:" + JSON.stringify(o2)), this._userM.emitOEvt(e.USER_STATUS_UPDATED, o2);
- }
- setSelfStatus(e2) {
- const t2 = this._n + ".setSelfStatus";
- if (false === this._userM.filterProfanity("customStatus", e2))
- return ni({ code: ei.PROFANITY_FOUND });
- const s2 = new Ti("setSelfStatus"), i2 = e2["customStatus"];
- return this._userM.req({ P: ri.SET_SELF_STATUS, data: { customStatus: i2 } }).then((e3) => (s2.setMessage("customStatus:" + i2).end(), Ce.l(t2 + " ok. customStatus:" + i2), this._userM.get(Rs).setCustomStatus(i2), Zs({ userID: this._userM.getMyUserID(), statusType: 1, customStatus: i2 }))).catch((e3) => (s2.setError(e3).end(), Ce.e(t2 + " failed. error:", e3), ni(e3)));
- }
- getUserStatus(e2) {
- const o2 = this._n + ".getUserStatus", { userIDList: r2 = [] } = e2, t2 = this._userM.getMyUserID();
- let s2 = [...r2], a2 = void 0;
- var i2 = s2.indexOf(t2);
- if (-1 < i2) {
- s2.splice(i2, 1);
- const e3 = this._userM.get(Rs).getCustomStatus();
- a2 = { userID: t2, statusType: 1, customStatus: e3 };
- }
- if (0 === s2.length)
- return ii({ successUserList: [a2], failureUserList: [] });
- if (!this._userM.canIUse(M.USER_STATUS))
- return this._userM.noUse("getUserStatus");
- s2.length > this.MAX_QUERY_USER_COUNT && (Ce.w(o2 + " " + St(this.MAX_QUERY_USER_COUNT)), s2 = r2.slice(0, this.MAX_QUERY_USER_COUNT));
- const c2 = new Ti("getUserStatus");
- return this._userM.req({ P: ri.GET_USER_STATUS, data: { userIDList: s2 } }).then((e3) => {
- const { successUserList: t3 = [], failureUserList: s3 = [] } = e3.data, i3 = t3.map((e4) => {
- var { userID: e4, statusType: t4, customStatus: s4 } = e4;
- return { userID: e4, statusType: t4, customStatus: Cn(s4) };
- }), n2 = s3.map((e4) => {
- var { userID: e4, invalidUserID: t4, errorCode: s4, errorInfo: i4 } = e4;
- return { userID: Oe(t4) ? e4 : t4, code: s4, message: i4 };
- });
- $e(a2) || i3.unshift(a2);
- e3 = `userID count:${r2.length}, success count:${i3.length}, fail count:` + n2.length;
- return c2.setMessage(e3).end(), Ce.l(o2 + ` ok. ${e3}.`), Zs({ successUserList: i3, failureUserList: n2 });
- }).catch((e3) => (c2.setMessage("userID count:" + r2.length).setError(e3).end(), Ce.e(o2 + " failed. error:", e3), ni(e3)));
- }
- subscribeUserStatus(e2) {
- var t2 = "subscribeUserStatus";
- if (!this._userM.canIUse(M.USER_STATUS))
- return this._userM.noUse(t2);
- const i2 = this._n + "." + t2, { userIDList: s2 = [] } = e2;
- let n2 = [...s2];
- n2.length > this.MAX_SUBSCRIBE_USER_COUNT && (Ce.w(i2 + " " + St(this.MAX_SUBSCRIBE_USER_COUNT)), n2 = s2.slice(0, this.MAX_SUBSCRIBE_USER_COUNT));
- const o2 = new Ti(t2), r2 = "userID count:" + s2.length;
- return Ce.l(i2 + " " + r2), this._userM.req({ P: ri.SUB_USER_STATUS, data: { userIDList: n2 } }).then((e3) => {
- const { failureUserList: t3 = [] } = e3.data, s3 = t3.map((e4) => {
- var { userID: e4, invalidUserID: t4, errorCode: s4, errorInfo: i3 } = e4;
- return { userID: Oe(t4) ? e4 : t4, code: s4, message: i3 };
- });
- return o2.setMessage(r2 + " fail count:" + s3.length).end(), Ce.l(i2 + ` ok. fail count:${s3.length}.`), Zs({ failureUserList: s3 });
- }).catch((e3) => (o2.setMessage(r2).setError(e3).end(), Ce.e(i2 + " failed. error:", e3), ni(e3)));
- }
- unsubscribeUserStatus(e2) {
- var t2 = "unsubscribeUserStatus";
- if (!this._userM.canIUse(M.USER_STATUS))
- return this._userM.noUse(t2);
- const i2 = this._n + "." + t2, { userIDList: s2 = [] } = e2 || {};
- let n2 = [...s2];
- s2.length > this.MAX_UNSUBSCRIBE_USER_COUNT && (Ce.w(i2 + " " + St(this.MAX_UNSUBSCRIBE_USER_COUNT)), n2 = s2.slice(0, this.MAX_UNSUBSCRIBE_USER_COUNT));
- const o2 = new Ti(t2), r2 = "userID count:" + s2.length, a2 = (Ce.l(i2 + " " + r2), { userIDList: n2 });
- return 0 === n2.length && (a2.userIDList = void 0, a2.unsubscribeAll = 1), this._userM.req({ P: ri.UNSUB_USER_STATUS, data: a2 }).then((e3) => {
- const { failureUserList: t3 = [] } = e3.data, s3 = t3.map((e4) => {
- var { userID: e4, invalidUserID: t4, errorCode: s4, errorInfo: i3 } = e4;
- return { userID: Oe(t4) ? e4 : t4, code: s4, message: i3 };
- });
- return o2.setMessage(r2 + " fail count:" + s3.length).end(), Ce.l(i2 + ` ok. fail count:${s3.length}.`), Zs({ failureUserList: s3 });
- }).catch((e3) => (o2.setMessage(r2).setError(e3).end(), Ce.e(i2 + " failed. error:", e3), ni(e3)));
- }
- reset() {
- this.MAX_QUERY_USER_COUNT = 500, this.MAX_SUBSCRIBE_USER_COUNT = 100, this.MAX_UNSUBSCRIBE_USER_COUNT = 100;
- }
-};
-var yn = class extends oi {
- constructor(e2) {
- super(e2), this._n = "UserModule", this._profileHandler = new fn(this), this._blacklistHandler = new In(this), this._userStatusHandler = new Tn(this), this.getIEmitInst().on(Yi.A2KEY_AND_TINYID_UPDATED, this.onContextUpdated, this);
- }
- onContextUpdated(e2) {
- this._profileHandler.getMyProfile(), this._blacklistHandler.getBlacklist();
- }
- mockOnNickAvatarModified(e2, t2) {
- Ce.l(this._n + `._mockOnNickAvatarModified nick:${e2} avatar:` + t2), this.onProfileModified({ dataList: [{ pushType: 1, userID: this.getMyUserID(), profileList: [{ tag: ye.NICK, value: e2 }, { tag: ye.AVATAR, value: t2 }] }] });
- }
- onProfileModified(e2) {
- this._profileHandler.onProfileModified(e2);
- }
- onRelationChainModified(e2) {
- const t2 = e2["dataList"];
- if (!Oe(t2)) {
- const s2 = [], i2 = (t2.forEach((e3) => {
- e3.blackListDelAccount && s2.push(...e3.blackListDelAccount);
- }), 0 < s2.length && this._blacklistHandler.onAccountDeleted(s2), []);
- t2.forEach((e3) => {
- e3.blackListAddAccount && i2.push(...e3.blackListAddAccount);
- }), 0 < i2.length && this._blacklistHandler.onAccountAdded(i2);
- }
- }
- onConvProfileUpdated(e2) {
- this._profileHandler.onConvProfileUpdated(e2);
- }
- getMyAccount() {
- return this.getMyUserID();
- }
- getMyNick() {
- return this._profileHandler.getNickAndAvatarByUserID(this.getMyUserID()).nick;
- }
- getMyProfile() {
- return this._profileHandler.getMyProfile();
- }
- getStorageModule() {
- return this.get(Ls);
- }
- filterProfanity(e2, t2) {
- const s2 = this.get(Vs);
- if (!s2)
- return true;
- var { isAllowedToSend: i2, modifiedText: n2 } = s2.filterText(t2[e2], v);
- return true === i2 && (t2[e2] = n2, true);
- }
- isMyFriend(e2) {
- const t2 = this.get(Es);
- return !!t2 && t2.isMyFriend(e2);
- }
- getUserProfile(e2) {
- return this._profileHandler.getUserProfile(e2);
- }
- updateMyProfile(e2) {
- return this._profileHandler.updateMyProfile(e2);
- }
- getNickAndAvatarByUserID(e2) {
- return this._profileHandler.getNickAndAvatarByUserID(e2);
- }
- getUserNickAndAvatar(e2) {
- return this._profileHandler.getUserNickAndAvatar(e2);
- }
- getLocalBlacklist() {
- var e2 = this._blacklistHandler.getLocalBlacklist();
- return ii(e2);
- }
- addBlacklist(e2) {
- return this._blacklistHandler.addBlacklist(e2);
- }
- deleteBlacklist(e2) {
- return this._blacklistHandler.deleteBlacklist(e2);
- }
- onUserStatusUpdated(e2) {
- this._userStatusHandler.onUserStatusUpdated(e2);
- }
- setSelfStatus(e2) {
- return this._userStatusHandler.setSelfStatus(e2);
- }
- getUserStatus(e2) {
- return this._userStatusHandler.getUserStatus(e2);
- }
- subscribeUserStatus(e2) {
- return this._userStatusHandler.subscribeUserStatus(e2);
- }
- unsubscribeUserStatus(e2) {
- return this._userStatusHandler.unsubscribeUserStatus(e2);
- }
- reset() {
- Ce.l(this._n + ".reset"), this._profileHandler.reset(), this._blacklistHandler.reset(), this._userStatusHandler.reset();
- }
-};
-var vn = class {
- constructor(e2, t2) {
- this._m = e2, this._isLoggedIn = false, this._SDKAppID = t2.SDKAppID, this._userID = t2.userID || "", this._userSig = t2.userSig || "", this._version = "3.5.2", this._a2Key = "", this._tinyID = "", this._customStatus = "", this._contentType = "json", this._unlimitedAVChatRoom = t2.unlimitedAVChatRoom, this._scene = t2.scene || "", this._oversea = t2.oversea, this._instanceID = t2.instanceID, this._statusInstanceID = 0, this._isDevMode = t2.devMode, this._isTestEnv = t2.testEnv, this._proxyServer = t2.proxyServer, this._fileUploadProxy = t2.fileUploadProxy, this._fileDownloadProxy = t2.fileDownloadProxy, this._applicationID = 0, this._isPartialUpdatedConvs = t2.partialUpdatedConversations, this._isIndependentDomainDisabled = t2.disableIndependentDomain, this._isUsingChatCore = false, this._uiPlatform = 0, this._authKey = "", this._customLoginInfo = "";
- }
- isLoggedIn() {
- return this._isLoggedIn;
- }
- isOversea() {
- return this._oversea;
- }
- isPrivateNetWork() {
- return this._proxyServer;
- }
- isDevMode() {
- return this._isDevMode;
- }
- isTestEnv() {
- return this._isTestEnv;
- }
- isPartialUpdatedConvs() {
- return this._isPartialUpdatedConvs;
- }
- isIndependentDomainDisabled() {
- return this._isIndependentDomainDisabled;
- }
- isSingaporeSite() {
- return 2e7 <= this._SDKAppID && this._SDKAppID < 3e7 || 172e7 <= this._SDKAppID && this._SDKAppID < 173e7;
- }
- isKoreaSite() {
- return 3e7 <= this._SDKAppID && this._SDKAppID < 4e7 || 173e7 <= this._SDKAppID && this._SDKAppID < 174e7;
- }
- isGermanySite() {
- return 4e7 <= this._SDKAppID && this._SDKAppID < 5e7 || 174e7 <= this._SDKAppID && this._SDKAppID < 175e7;
- }
- isIndiaSite() {
- return 5e7 <= this._SDKAppID && this._SDKAppID < 6e7 || 175e7 <= this._SDKAppID && this._SDKAppID < 176e7;
- }
- isJapanSite() {
- return 6e7 <= this._SDKAppID && this._SDKAppID < 7e7 || 176e7 <= this._SDKAppID && this._SDKAppID < 177e7;
- }
- isUSASite() {
- return 7e7 <= this._SDKAppID && this._SDKAppID < 8e7 || 177e7 <= this._SDKAppID && this._SDKAppID < 178e7;
- }
- isIndonesiaSite() {
- return 8e7 <= this._SDKAppID && this._SDKAppID < 9e7 || 178e7 <= this._SDKAppID && this._SDKAppID < 179e7;
- }
- isIntl() {
- return 0 === (e2 = this._SDKAppID) || 2e7 <= e2 && e2 < 9e7 || 172e7 <= e2 && e2 < 179e7;
- var e2;
- }
- isUnlimitedAVChatRoom() {
- return this._unlimitedAVChatRoom;
- }
- isUsingChatCore() {
- return this._isUsingChatCore;
- }
- setUsingChatCore(e2) {
- this._isUsingChatCore = e2;
- }
- getUIPlatform() {
- return this._uiPlatform;
- }
- setUIPlatform(e2) {
- this._uiPlatform = e2;
- }
- setUserID(e2) {
- this._userID = e2;
- }
- getUserID() {
- return this._userID;
- }
- setUserSig(e2) {
- this._userSig = e2;
- }
- getUserSig() {
- return this._userSig;
- }
- getSDKAppID() {
- return this._SDKAppID;
- }
- setTinyID(e2) {
- this._tinyID = e2, this._isLoggedIn = true;
- }
- getTinyID() {
- return this._tinyID;
- }
- setCustomStatus(e2) {
- this._customStatus = e2;
- }
- getCustomStatus() {
- return this._customStatus;
- }
- getScene() {
- return oe ? window.tencent_cloud_im_csig_flutter_for_web_25F_cy : this._isTUIKit() ? "tuikit" : this._scene;
- }
- getInstanceID() {
- return this._instanceID;
- }
- getStatusInstanceID() {
- return this._statusInstanceID;
- }
- setStatusInstanceID(e2) {
- this._statusInstanceID = e2;
- }
- getVersion() {
- return this._version;
- }
- getA2Key() {
- return this._a2Key;
- }
- setA2Key(e2) {
- this._a2Key = e2;
- }
- getContentType() {
- return this._contentType;
- }
- getProxyServer() {
- return this._proxyServer;
- }
- getFileUploadProxy() {
- return this._fileUploadProxy;
- }
- getFileDownloadProxy() {
- return this._fileDownloadProxy;
- }
- setApplicationID(e2) {
- this._applicationID = e2;
- }
- getApplicationID() {
- return this._applicationID;
- }
- setDowloadFileAuthKey(e2) {
- this._authKey = e2;
- }
- getDowloadFileAuthKey() {
- return this._authKey;
- }
- setCustomLoginInfo(e2) {
- this._customLoginInfo = e2;
- }
- getCustomLoginInfo() {
- return this._customLoginInfo;
- }
- _isTUIKit() {
- let s2 = false, e2 = false, t2 = false, i2 = false, n2 = [];
- k && (n2 = Object.keys($));
- for (let e3 = 0, t3 = (n2 = F ? G ? Object.keys(uni) : Object.keys(window) : n2).length; e3 < t3; e3++)
- if (n2[e3].toLowerCase().includes("uikit")) {
- s2 = true;
- break;
- }
- if (n2 = null, k && !xe($.createGamePortal) && xe(getApp) && !$e(getApp())) {
- const s3 = getApp().globalData;
- be(s3) && true === s3.isTUIKit && (e2 = true);
- }
- true === this._m.get(Ls).getStorageSync(`TIM_${this._SDKAppID}_isTUIKit`) && (t2 = true);
- let o2 = null;
- if (S && !L && "undefined" == typeof uni && __wxConfig && (o2 = __wxConfig.pages), R && "undefined" == typeof uni && __qqConfig && (o2 = __qqConfig.pages), Fe(o2) && 0 < o2.length) {
- for (let e3 = 0, t3 = o2.length; e3 < t3; e3++)
- if (o2[e3].toLowerCase().includes("tui")) {
- i2 = true;
- break;
- }
- o2 = null;
- }
- return s2 || e2 || t2 || i2;
- }
- reset() {
- this._isLoggedIn = false, this._userSig = "", this._a2Key = "", this._tinyID = "", this._customStatus = "", this._statusInstanceID = 0;
- }
-};
-var En = { "k-vue2-pc": 1, "k-vue2-h5": 2, "k-vue2-h5-uni": 3, "k-vue2-app-uni": 4, "k-vue2-mp-uni": 5, "k-vue2-pc-uni": 6, "k-vue3-pc": 7, "k-vue3-h5": 8, "k-vue3-h5-uni": 9, "k-vue3-app-uni": 10, "k-vue3-mp-uni": 11, "k-vue3-pc-uni": 12, "k-rn": 13 };
-var Sn = class extends oi {
- constructor(e2) {
- super(e2), this._n = "SignModule", this._helloInterval = 120, this._lastLoginTs = 0, this._lastWsHelloTs = 0, this._isWebUniapp = 0, ji.mixin(this);
- }
- onCheckTimer(e2) {
- this.isLoggedIn() && e2 % this._helloInterval == 0 && this._hello();
- }
- getPushModule() {
- let e2 = void 0;
- const t2 = this.get(js), s2 = this.get(xs);
- return t2.canIUseTIMPush() ? e2 = t2 : s2.canIUseOfflinePush() && (e2 = s2), e2;
- }
- login(e2) {
- if (this.isLoggedIn()) {
- const e3 = this.getMyUserID();
- return (t2 = this.getErrMsg("RepeatLogin", e3)) && Ce.w(t2), ii({ actionStatus: "OK", errorCode: 0, errorInfo: t2, repeatLogin: true });
- }
- if (Date.now() - this._lastLoginTs <= 15e3)
- return this.warn("LoggingIn", e2.userID), ni({ code: ei.REPEAT_LOGIN });
- Ce.l(this._n + ".login userID:" + e2.userID);
- var t2 = this._checkLoginInfo(e2);
- if (0 !== t2.code)
- return ni(t2);
- const s2 = this.get(Rs), { userID: i2, userSig: n2 } = e2;
- return s2.setUserID(i2), s2.setUserSig(n2), this.get(Gs).updateProtocolConfig(), this._login();
- }
- _login() {
- const f2 = this.get(Rs);
- let M2 = f2.getScene(), e2 = 0, t2 = M2;
- M2 && M2.startsWith("k-") && (t2 = En[M2], M2 = "tuikit");
- const I2 = new Ti("login");
- I2.setMessage("" + t2).setMoreMessage("identifier:" + this.getMyUserID());
- var s2 = "tuikit" === M2;
- let i2 = 0;
- G ? i2 = s2 ? 3 === t2 || 4 === t2 || 5 === t2 || 6 === t2 ? 31 : 9 === t2 || 10 === t2 || 11 === t2 || 12 === t2 ? 32 : 4 : 3 : k ? i2 = D ? 36 : "tuikit" === M2 ? 12 : 11 : F ? i2 = oe ? "flutter_web_uikit" === M2 ? 21 : 20 : this._isReactUIKit() ? ne ? 25 : 24 : s2 ? 1 === t2 || 2 === t2 ? 29 : 7 === t2 || 8 === t2 ? 30 : ne ? 17 : 14 : ne ? 16 : 13 : 13 === t2 && (i2 = 38), I2.setUIPlatform(i2), f2.setUIPlatform(i2);
- const n2 = this.getPushModule();
- if (n2) {
- this._isWebUniapp = n2.getUniAppPlatform();
- const M3 = this._getStatusInstanceID();
- f2.setStatusInstanceID(M3), this.get(Gs).updateProtocolConfig(), e2 = n2.getDeviceBrand();
- }
- const C2 = this._n + "._login";
- return this._lastLoginTs = Date.now(), this.req({ P: ri.LOGIN, data: { deviceBrand: e2, isWebUniapp: this._isWebUniapp, customInfo: f2.getCustomLoginInfo() } }).then((e3) => {
- this._lastLoginTs = 0;
- var t3 = Date.now();
- let s3 = null;
- var { a2Key: i3, tinyID: n3, helloInterval: d2, instanceID: o2, timeStamp: _2, customStatus: r2 = "", purchaseBits: u2, authKey: h2 = "" } = e3.data, a2 = 1e3 * _2, c2 = t3 - I2.getStartTs(), c2 = a2 + parseInt(c2 / 2) - t3, t3 = I2.getStartTs() + c2;
- I2.start(t3);
- {
- t3 = a2, a2 = c2, he = a2;
- const l2 = /* @__PURE__ */ new Date();
- l2.setTime(t3), Ce.i(`baseTime from server:${l2} offset:` + he);
- }
- if (!n3)
- throw s3 = new Qs({ code: ei.NO_TINYID }), I2.setError(s3).end(), s3;
- if (!i3)
- throw s3 = new Qs({ code: ei.NO_A2KEY }), I2.setError(s3).end(), s3;
- a2 = this.get(ks).getSocketID(), t3 = Cn(r2), r2 = `socketID:${a2} scene:${M2} helloInterval:${d2} instanceID:${o2} timeStamp:${_2} offset:${c2} customStatus:${t3} isWebUniapp:` + this._isWebUniapp;
- Ce.l(C2 + " ok. " + r2);
- let p2 = "", g2 = "";
- if (S && xe($.getAccountInfoSync)) {
- const f3 = $.getAccountInfoSync().miniProgram;
- f3 && (p2 = f3.appId, g2 = f3.envVersion);
- }
- I2.setMoreMessage(r2 + ` href:${F ? window.location.href : ""} mpAppId:${p2} envVersion:${g2} authKey:` + h2).end(), f2.setA2Key(i3), f2.setTinyID(n3), f2.setStatusInstanceID(o2), f2.setCustomStatus(t3), f2.setDowloadFileAuthKey(h2), u2 && this.get(qs).onPushedConfig({ errorCode: 0, expiredTime: 0, purchaseBits: u2 }), this.get(Gs).updateProtocolConfig(), this.emitIEvt(Yi.A2KEY_AND_TINYID_UPDATED), this._helloInterval = d2, this.triggerReady();
- const m2 = this.getPushModule();
- return m2 && (uni.setStorageSync("timUniAppInstanceID", o2), m2.init()), this._fetchCloudControlConfig(), this.get(Vs).init(), e3;
- }).catch((e3) => (I2.setError(e3).end(true), this._m.setNotReadyReason(ei.LOGIN_FAILED), Ce.e(C2 + " failed. error:", e3), this._lastLoginTs = 0, this._m.onLoginFailed(), ni(e3)));
- }
- logout(e2 = 0) {
- const t2 = this._n + ".logout", s2 = this.isLoggedIn();
- return Ce.i(t2 + ` type:${e2} isLoggedIn:${s2} isWebUniapp:` + this._isWebUniapp), s2 ? (new Ti("logout").setMessage("identifier:" + this.getMyUserID()).end(true), 0 === e2 && this._m.setNotReadyReason(ei.LOGGED_OUT), this.req({ P: ri.LOGOUT, data: { type: e2, isWebUniapp: this._isWebUniapp } }).then(() => (this.resetReady(), ii({}))).catch((e3) => (Ce.e(t2 + " error:", e3), this.resetReady(), ii({})))) : ni({ code: ei.USER_NOT_LOGGED_IN });
- }
- getLoginUser() {
- return this.isLoggedIn() ? this.getMyUserID() : "";
- }
- _fetchCloudControlConfig() {
- this.get(ws).fetchConfig();
- }
- _getStatusInstanceID() {
- return uni.getStorageSync("timUniAppInstanceID") || 0;
- }
- _hello() {
- this._lastWsHelloTs = Date.now(), this.req({ P: ri.HELLO, data: { isWebUniapp: this._isWebUniapp } }).catch((e2) => {
- Ce.w(this._n + "._hello error:", e2);
- });
- }
- getLastWsHelloTs() {
- return this._lastWsHelloTs;
- }
- _checkLoginInfo(e2) {
- let t2 = 0;
- return Oe(this.get(Rs).getSDKAppID()) ? t2 = ei.NO_SDKAPPID : Oe(e2.userID) ? t2 = ei.NO_IDENTIFIER : Oe(e2.userSig) && (t2 = ei.NO_USERSIG), { code: t2 };
- }
- _isReactUIKit() {
- return F && void 0 !== window.tencent_cloud_im_csig_react_uikit_23F_xa;
- }
- onMultipleAccountKickedOut(s2) {
- new Ti("kickedOut").setMessage(`type:${t.KICKED_OUT_MULT_ACCOUNT} newInstanceInfo:` + JSON.stringify(s2)).end(true), Ce.w(`${this._n}.onMultipleAccountKickedOut userID:${this.getMyUserID()} newInstanceInfo:`, s2), this.logout(1).then(() => {
- this.emitOEvt(e.KICKED_OUT, { type: t.KICKED_OUT_MULT_ACCOUNT }), this._m.setNotReadyReason(ei.KICKED_OUT_MULT_ACCOUNT), this._m.reset();
- });
- }
- onMultipleDeviceKickedOut(s2) {
- new Ti("kickedOut").setMessage(`type:${t.KICKED_OUT_MULT_DEVICE} newInstanceInfo:` + JSON.stringify(s2)).end(true), Ce.w(`${this._n}.onMultipleDeviceKickedOut userID:${this.getMyUserID()} newInstanceInfo:`, s2), this.logout(1).then(() => {
- this.emitOEvt(e.KICKED_OUT, { type: t.KICKED_OUT_MULT_DEVICE }), this._m.setNotReadyReason(ei.KICKED_OUT_MULT_DEVICE), this._m.reset();
- });
- }
- onUserSigExpired() {
- new Ti("kickedOut").setMessage(t.KICKED_OUT_USERSIG_EXPIRED).end(true), Ce.w(this._n + ".onUserSigExpired userID:" + this.getMyUserID()), 0 !== this.get(Rs).getStatusInstanceID() && (this.emitOEvt(e.KICKED_OUT, { type: t.KICKED_OUT_USERSIG_EXPIRED }), this._m.setNotReadyReason(ei.KICKED_OUT_USERSIG_EXPIRED), this._m.reset());
- }
- onRestApiKickedOut(s2) {
- new Ti("kickedOut").setMessage(`type:${t.KICKED_OUT_REST_API} newInstanceInfo:` + JSON.stringify(s2)).end(true), Ce.w(`${this._n}.onRestApiKickedOut userID:${this.getMyUserID()} newInstanceInfo:`, s2), 0 !== this.get(Rs).getStatusInstanceID() && (this.emitOEvt(e.KICKED_OUT, { type: t.KICKED_OUT_REST_API }), this._m.setNotReadyReason(ei.KICKED_OUT_REST_API), this._m.reset(), this.get(ks).onRestApiKickedOut());
- }
- reset() {
- Ce.l(this._n + ".reset"), this.resetReady(), this._helloInterval = 120, this._lastLoginTs = 0, this._lastWsHelloTs = 0, this._isWebUniapp = 0;
- }
-};
-function Dn() {
- return null;
-}
-var Rn = class {
- constructor(e2) {
- this._m = e2, this._n = "StorageModule", this._storageQueue = /* @__PURE__ */ new Map(), this._errorTolerantHandle();
- }
- _errorTolerantHandle() {
- k || "undefined" != typeof window && this._canIUseCookies() || (this.getItem = Dn, this.setItem = Dn, this.removeItem = Dn, this.clear = Dn);
- }
- onCheckTimer(e2) {
- e2 % 20 == 0 && 0 !== this._storageQueue.size && this._doFlush();
- }
- _doFlush() {
- try {
- for (var [e2, t2] of this._storageQueue)
- this._setStorageSync(this._getKey(e2), t2);
- this._storageQueue.clear();
- } catch (e3) {
- Ce.w(this._n + "._doFlush error:", e3);
- }
- }
- _getPrefix() {
- const e2 = this._m.get(Rs);
- return `TIM_${e2.getSDKAppID()}_${e2.getUserID()}_`;
- }
- _getKey(e2) {
- return "" + this._getPrefix() + e2;
- }
- getItem(e2, t2 = true) {
- try {
- var s2 = t2 ? this._getKey(e2) : e2;
- return this.getStorageSync(s2);
- } catch (e3) {
- return Ce.w(this._n + ".getItem error:", e3), {};
- }
- }
- setItem(e2, t2, s2 = false, i2 = true) {
- if (s2) {
- const s3 = i2 ? this._getKey(e2) : e2;
- this._setStorageSync(s3, t2);
- } else
- this._storageQueue.set(e2, t2);
- }
- clear() {
- try {
- k ? $.clearStorageSync() : this._canIUseCookies() && localStorage.clear();
- } catch (e2) {
- Ce.w(this._n + ".clear error:", e2);
- }
- }
- removeItem(e2, t2 = true) {
- try {
- var s2 = t2 ? this._getKey(e2) : e2;
- this._removeStorageSync(s2);
- } catch (e3) {
- Ce.w(this._n + ".removeItem error:", e3);
- }
- }
- getSize(e2, t2 = "b") {
- try {
- const s2 = { size: 0, limitSize: 5242880, unit: t2 };
- if (Object.defineProperty(s2, "leftSize", { enumerable: true, get: () => s2.limitSize - s2.size }), k && (s2.limitSize = 1024 * $.getStorageInfoSync().limitSize), e2)
- s2.size = JSON.stringify(this.getItem(e2)).length + this._getKey(e2).length;
- else if (k) {
- const e3 = $.getStorageInfoSync()["keys"];
- e3.forEach((e4) => {
- s2.size += JSON.stringify(this.getStorageSync(e4)).length + this._getKey(e4).length;
- });
- } else if (this._canIUseCookies())
- for (const e3 in localStorage)
- localStorage.hasOwnProperty(e3) && (s2.size += localStorage.getItem(e3).length + e3.length);
- return this._convertUnit(s2);
- } catch (e3) {
- Ce.w(this._n + " error:", e3);
- }
- }
- _convertUnit(e2) {
- const t2 = {}, s2 = e2["unit"];
- t2.unit = s2;
- for (const i2 in e2)
- "number" == typeof e2[i2] && ("kb" === s2.toLowerCase() ? t2[i2] = Math.round(e2[i2] / 1024) : "mb" === s2.toLowerCase() ? t2[i2] = Math.round(e2[i2] / 1024 / 1024) : t2[i2] = e2[i2]);
- return t2;
- }
- _setStorageSync(e2, t2) {
- k ? O ? my.setStorageSync({ key: e2, data: t2 }) : $.setStorageSync(e2, t2) : this._canIUseCookies() && localStorage.setItem(e2, JSON.stringify(t2));
- }
- getStorageSync(e2) {
- return k ? O ? my.getStorageSync({ key: e2 }).data : $.getStorageSync(e2) : this._canIUseCookies() ? JSON.parse(localStorage.getItem(e2)) : {};
- }
- _removeStorageSync(e2) {
- k ? O ? my.removeStorageSync({ key: e2 }) : $.removeStorageSync(e2) : this._canIUseCookies() && localStorage.removeItem(e2);
- }
- _canIUseCookies() {
- return "undefined" != typeof window && navigator && navigator.cookieEnabled && localStorage;
- }
- reset() {
- Ce.l(this._n + ".reset"), this._doFlush();
- }
-};
-var Ln = class {
- constructor(e2) {
- this._n = "SSOLogBody", this._report = [];
- }
- pushIn(e2) {
- Ce.d(this._n + ".pushIn", this._report.length, e2), this._report.push(e2);
- }
- backfill(e2) {
- Fe(e2) && 0 !== e2.length && (Ce.d(this._n + ".backfill", this._report.length, e2.length), this._report.unshift(...e2));
- }
- getLogsNumInMemory() {
- return this._report.length;
- }
- isEmpty() {
- return 0 === this._report.length;
- }
- _reset() {
- this._report.length = 0, this._report = [];
- }
- getLogsInMemory() {
- var e2 = this._report.slice();
- return this._reset(), e2;
- }
-};
-var An = function(e2) {
- const t2 = e2.get(Rs);
- return { SDKType: 10, SDKAppID: t2.getSDKAppID(), SDKVersion: t2.getVersion(), tinyID: Number(t2.getTinyID()), userID: t2.getUserID(), platform: e2.getPlatform(), instanceID: t2.getInstanceID(), traceID: pe() };
-};
-var On = class extends oi {
- constructor(e2) {
- super(e2), this._n = "EventStatModule", this.TAG = "im-ssolog-event", this._reportBody = new Ln(), this.MIN_THRESHOLD = 20, this.MAX_THRESHOLD = 100, this.WAITING_TIME = 6e4, this.REPORT_LEVEL = [4, 5, 6], this.REPORT_SDKAPPID_BLACKLIST = [], this.REPORT_TINYID_WHITELIST = [], this._lastReportTime = Date.now();
- const t2 = this.getIEmitInst();
- t2.on(Yi.A2KEY_AND_TINYID_UPDATED, this._onLoginSuccess, this), t2.on(Yi.CLOUD_CONFIG, this._onCloudConfig, this);
- }
- reportAtOnce() {
- this._report();
- }
- _onLoginSuccess() {
- const e2 = this.get(Ls), t2 = e2.getItem(this.TAG, false);
- !Oe(t2) && xe(t2.forEach) && (Ce.l(this._n + "._onLoginSuccess. logs count:" + t2.length), t2.forEach((e3) => {
- this._reportBody.pushIn(e3);
- }), e2.removeItem(this.TAG, false));
- }
- _onCloudConfig() {
- const e2 = this.getCloudConfig("evt_rpt_threshold"), t2 = this.getCloudConfig("evt_rpt_waiting"), s2 = this.getCloudConfig("evt_rpt_level"), i2 = this.getCloudConfig("evt_rpt_sdkappid_bl"), n2 = this.getCloudConfig("evt_rpt_tinyid_wl");
- $e(e2) || (this.MIN_THRESHOLD = Number(e2)), $e(t2) || (this.WAITING_TIME = Number(t2)), $e(s2) || (this.REPORT_LEVEL = s2.split(",").map((e3) => Number(e3))), $e(i2) || (this.REPORT_SDKAPPID_BLACKLIST = i2.split(",").map((e3) => Number(e3))), $e(n2) || (this.REPORT_TINYID_WHITELIST = n2.split(","));
- }
- pushIn(e2) {
- e2 instanceof Ti && (e2.updateTimeStamp(), this._reportBody.pushIn(e2), this._reportBody.getLogsNumInMemory() >= this.MIN_THRESHOLD && this._report());
- }
- onCheckTimer() {
- Date.now() < this._lastReportTime + this.WAITING_TIME || this._reportBody.isEmpty() || this._report();
- }
- _filterLogs(e2) {
- const t2 = this.get(Rs), s2 = t2.getSDKAppID(), i2 = t2.getTinyID();
- return It(this.REPORT_SDKAPPID_BLACKLIST, s2) && !Ct(this.REPORT_TINYID_WHITELIST, i2) ? [] : e2.filter((e3) => this.REPORT_LEVEL.includes(e3.level));
- }
- _report() {
- if (!this._reportBody.isEmpty()) {
- const t2 = this._reportBody.getLogsInMemory(), s2 = this._filterLogs(t2);
- var e2;
- 0 !== s2.length ? (e2 = { header: An(this), event: s2 }, this.req({ P: ri.SSO_STAT, data: { ...e2 } }).then(() => {
- this._lastReportTime = Date.now();
- }).catch((e3) => {
- Ce.w(this._n + "._report failed. error:", e3), this._lastReportTime = Date.now(), this._reportBody.backfill(t2), this._reportBody.getLogsNumInMemory() > this.MAX_THRESHOLD && this._flushAtOnce();
- })) : this._lastReportTime = Date.now();
- }
- }
- _flushAtOnce() {
- const t2 = this.get(Ls), s2 = t2.getItem(this.TAG, false), i2 = this._reportBody.getLogsInMemory(), n2 = this._n + "._flushAtOnce";
- if (Oe(s2))
- Ce.l(n2 + " count:" + i2.length), t2.setItem(this.TAG, i2, true, false);
- else {
- let e2 = i2.concat(s2);
- e2.length > this.MAX_THRESHOLD && (e2 = e2.slice(0, this.MAX_THRESHOLD)), Ce.l(n2 + " count:" + e2.length), t2.setItem(this.TAG, e2, true, false);
- }
- }
- reset() {
- Ce.l(this._n + ".reset"), this._lastReportTime = 0, this._report(), this.REPORT_SDKAPPID_BLACKLIST = [], this.REPORT_TINYID_WHITELIST = [];
- }
-};
-var Nn = "none";
-var Pn = "online";
-var Un = class {
- constructor(e2) {
- this._m = e2, this._networkType = Pn, this._n = "NetMonitorModule", this._mpNetworkStatusCallback = null, this._webOnlineCallback = null, this._webOfflineCallback = null, this._removeListener = null, this._m.getIEmitInst().on(Yi.A2KEY_AND_TINYID_UPDATED, this._startRN, this);
- }
- _startRN() {
- if (b) {
- const e2 = this._m.get(Ps).getPlugin("chat-network-monitor");
- e2 && (this._removeListener = e2.addEventListener((e3) => {
- var { isConnected: e3 = false, type: t2 } = e3;
- this._networkType !== t2 && this._onNetworkStatusChange({ isConnected: e3, networkType: t2 });
- }));
- }
- }
- start() {
- const t2 = this._n + ".start";
- k ? ($.getNetworkType({ success: (e2) => {
- this._networkType = e2.networkType || e2.subtype || "", e2.networkType === Nn ? Ce.w(t2 + " no network, please check!") : Ce.i(t2 + " networkType:" + e2.networkType);
- } }), this._mpNetworkStatusCallback = this._onNetworkStatusChange.bind(this), $.onNetworkStatusChange(this._mpNetworkStatusCallback)) : F && (this._networkType = Pn, this._webOnlineCallback = this._onWebOnline.bind(this), this._webOfflineCallback = this._onWebOffline.bind(this), window.addEventListener("online", this._webOnlineCallback), window.addEventListener("offline", this._webOfflineCallback));
- }
- _onWebOnline() {
- this._onNetworkStatusChange({ isConnected: true, networkType: Pn });
- }
- _onWebOffline() {
- this._onNetworkStatusChange({ isConnected: false, networkType: Nn });
- }
- _onNetworkStatusChange(e2) {
- var { isConnected: e2, networkType: t2 } = e2, s2 = this._n + "._onNetworkStatusChange";
- let i2 = false;
- var n2 = `previous:${this._networkType} current:` + t2;
- e2 ? (Ce.i(s2 + " " + n2), this._networkType !== t2 && (i2 = true, this._networkType = t2, this._m.get(ks).reConnect(true))) : this._networkType !== t2 && (i2 = true, this._networkType = t2, Ce.w(s2 + " no network, please check!"), this._m.get(ks).offline()), i2 && new Ti("networkChange").setMessage(`isConnected:${e2} ` + n2).end();
- }
- isOnline() {
- return this._networkType !== Nn;
- }
- getNetworkType() {
- return this._networkType;
- }
- reset() {
- Ce.l(this._n + ".reset"), k ? null !== this._mpNetworkStatusCallback && ($.offNetworkStatusChange && $.offNetworkStatusChange(this._mpNetworkStatusCallback), this._mpNetworkStatusCallback = null) : F ? (null !== this._webOnlineCallback && (window.removeEventListener("online", this._webOnlineCallback), this._webOnlineCallback = null), null !== this._onWebOffline && (window.removeEventListener("offline", this._webOfflineCallback), this._webOfflineCallback = null)) : b && this._removeListener && (this._removeListener(), this._removeListener = null);
- }
-};
-function Gn(e2, t2) {
- return e2(t2 = { exports: {} }, t2.exports), t2.exports;
-}
-var kn = Gn(function(e2) {
- var i2 = Object.prototype.hasOwnProperty, h2 = "~";
- function s2() {
- }
- function o2(e3, t3, s3) {
- this.fn = e3, this.context = t3, this.once = s3 || false;
- }
- function n2(e3, t3, s3, i3, n3) {
- if ("function" != typeof s3)
- throw new TypeError("The listener must be a function");
- s3 = new o2(s3, i3 || e3, n3), i3 = h2 ? h2 + t3 : t3;
- return e3._events[i3] ? e3._events[i3].fn ? e3._events[i3] = [e3._events[i3], s3] : e3._events[i3].push(s3) : (e3._events[i3] = s3, e3._eventsCount++), e3;
- }
- function c2(e3, t3) {
- 0 == --e3._eventsCount ? e3._events = new s2() : delete e3._events[t3];
- }
- function t2() {
- this._events = new s2(), this._eventsCount = 0;
- }
- Object.create && (s2.prototype = /* @__PURE__ */ Object.create(null), new s2().__proto__ || (h2 = false)), t2.prototype.eventNames = function() {
- var e3, t3, s3 = [];
- if (0 === this._eventsCount)
- return s3;
- for (t3 in e3 = this._events)
- i2.call(e3, t3) && s3.push(h2 ? t3.slice(1) : t3);
- return Object.getOwnPropertySymbols ? s3.concat(Object.getOwnPropertySymbols(e3)) : s3;
- }, t2.prototype.listeners = function(e3) {
- var e3 = h2 ? h2 + e3 : e3, t3 = this._events[e3];
- if (!t3)
- return [];
- if (t3.fn)
- return [t3.fn];
- for (var s3 = 0, i3 = t3.length, n3 = new Array(i3); s3 < i3; s3++)
- n3[s3] = t3[s3].fn;
- return n3;
- }, t2.prototype.listenerCount = function(e3) {
- e3 = h2 ? h2 + e3 : e3, e3 = this._events[e3];
- return e3 ? e3.fn ? 1 : e3.length : 0;
- }, t2.prototype.emit = function(e3, t3, s3, i3, l2, d2) {
- var _2 = h2 ? h2 + e3 : e3;
- if (!this._events[_2])
- return false;
- var n3, o3 = this._events[_2], r2 = arguments.length;
- if (o3.fn) {
- switch (o3.once && this.removeListener(e3, o3.fn, void 0, true), r2) {
- case 1:
- return o3.fn.call(o3.context), true;
- case 2:
- return o3.fn.call(o3.context, t3), true;
- case 3:
- return o3.fn.call(o3.context, t3, s3), true;
- case 4:
- return o3.fn.call(o3.context, t3, s3, i3), true;
- case 5:
- return o3.fn.call(o3.context, t3, s3, i3, l2), true;
- case 6:
- return o3.fn.call(o3.context, t3, s3, i3, l2, d2), true;
- }
- for (c3 = 1, n3 = new Array(r2 - 1); c3 < r2; c3++)
- n3[c3 - 1] = arguments[c3];
- o3.fn.apply(o3.context, n3);
- } else
- for (var a2, u2 = o3.length, c3 = 0; c3 < u2; c3++)
- switch (o3[c3].once && this.removeListener(e3, o3[c3].fn, void 0, true), r2) {
- case 1:
- o3[c3].fn.call(o3[c3].context);
- break;
- case 2:
- o3[c3].fn.call(o3[c3].context, t3);
- break;
- case 3:
- o3[c3].fn.call(o3[c3].context, t3, s3);
- break;
- case 4:
- o3[c3].fn.call(o3[c3].context, t3, s3, i3);
- break;
- default:
- if (!n3)
- for (a2 = 1, n3 = new Array(r2 - 1); a2 < r2; a2++)
- n3[a2 - 1] = arguments[a2];
- o3[c3].fn.apply(o3[c3].context, n3);
- }
- return true;
- }, t2.prototype.on = function(e3, t3, s3) {
- return n2(this, e3, t3, s3, false);
- }, t2.prototype.once = function(e3, t3, s3) {
- return n2(this, e3, t3, s3, true);
- }, t2.prototype.removeListener = function(e3, t3, s3, i3) {
- e3 = h2 ? h2 + e3 : e3;
- if (!this._events[e3])
- return this;
- if (!t3)
- return c2(this, e3), this;
- var n3 = this._events[e3];
- if (n3.fn)
- n3.fn !== t3 || i3 && !n3.once || s3 && n3.context !== s3 || c2(this, e3);
- else {
- for (var o3 = 0, r2 = [], a2 = n3.length; o3 < a2; o3++)
- (n3[o3].fn !== t3 || i3 && !n3[o3].once || s3 && n3[o3].context !== s3) && r2.push(n3[o3]);
- r2.length ? this._events[e3] = 1 === r2.length ? r2[0] : r2 : c2(this, e3);
- }
- return this;
- }, t2.prototype.removeAllListeners = function(e3) {
- return e3 ? (e3 = h2 ? h2 + e3 : e3, this._events[e3] && c2(this, e3)) : (this._events = new s2(), this._eventsCount = 0), this;
- }, t2.prototype.off = t2.prototype.removeListener, t2.prototype.addListener = t2.prototype.on, t2.prefixed = h2, e2.exports = t2.EventEmitter = t2;
-});
-var wn = ["rich.my-imcloud.com", "imrich.qcloud.com"];
-var bn = 9999;
-var Fn = 1e4;
-var $n = class extends oi {
- constructor(e2) {
- super(e2), this._n = "UploadModule", this.TIMUploadPlugin = null, this.timUploadPlugin = null, this.COSSDK = null, this._cosUploadMethod = null, this.expiredTimeLimit = 600, this.appid = 0, this.bucketName = "", this.ciUrl = "", this.directory = "", this.downloadUrl = "", this.uploadUrl = "", this.region = "ap-shanghai", this.cos = null, this.cosOptions = { secretId: "", secretKey: "", sessionToken: "", expiredTime: 0 }, this.uploadFileType = "", this.duration = 900, this.tryCount = 0, this.UPLOAD_SIZE_LIMIT = { A: 20971520, F: 104857600, I: 20971520, V: 104857600 }, this.isSimpleCos = false, this._fileDownloadProxy = "", this._authKey = "", this._fileDNList = wn;
- const t2 = this.getIEmitInst();
- t2.on(Yi.A2KEY_AND_TINYID_UPDATED, this._init, this), t2.on(Yi.CLOUD_CONFIG, this._onCloudConfig, this);
- }
- _init() {
- this._fileDownloadProxy = this.getFileDownloadProxy(), this._authKey = this.getDowloadFileAuthKey();
- const e2 = this.get(Ps);
- var t2;
- this.TIMUploadPlugin = e2.getPlugin("tim-upload-plugin"), this.TIMUploadPlugin ? this._initUploaderMethod() : (t2 = k ? "cos-wx-sdk" : "cos-js-sdk", this.COSSDK = e2.getPlugin(t2), this.COSSDK ? (this._getAuthorizationKey(), this.warn("CosReplacement", t2)) : this.warn("PluginUndetected"));
- }
- _onCloudConfig() {
- const e2 = this._n + "._onCloudConfig", t2 = this.getCloudConfig("upload_size_limit"), s2 = this.getCloudConfig("simple_cos"), i2 = this.getCloudConfig("file_dn_list");
- if (Ce.l(e2 + ` uploadSizeLimit:${t2} simpleCos:` + s2), !$e(t2))
- try {
- const e3 = JSON.parse(t2);
- this.UPLOAD_SIZE_LIMIT = { A: e3.a ? 1048576 * parseInt(e3.a) : this.UPLOAD_SIZE_LIMIT.A, F: e3.f ? 1048576 * parseInt(e3.f) : this.UPLOAD_SIZE_LIMIT.F, I: e3.i ? 1048576 * parseInt(e3.i) : this.UPLOAD_SIZE_LIMIT.I, V: e3.v ? 1048576 * parseInt(e3.v) : this.UPLOAD_SIZE_LIMIT.V };
- } catch (e3) {
- }
- if ($e(s2) || (this.isSimpleCos = "1" === s2), !$e(i2))
- try {
- JSON.parse(i2).forEach((e3) => {
- this._fileDNList.includes(e3) || this._fileDNList.push(e3);
- });
- } catch (e3) {
- }
- }
- _getAuthorizationKey() {
- const s2 = this._n + "._getAuthorizationKey", i2 = new Ti("_getAuthorizationKey"), n2 = Math.ceil(Date.now() / 1e3);
- this.req({ P: ri.COS_SIGN, data: { duration: this.expiredTimeLimit } }).then((e2) => {
- var e2 = e2["data"], t2 = (Ce.l(s2 + " ok. data:", e2), e2.expiredTime - n2);
- i2.setMessage(`requestId:${e2.requestId} requestTime:${n2} expiredTime:${e2.expiredTime} diff:${t2}s`).end(), !k && e2.region && (this.region = e2.region), this.appid = e2.appid, this.bucketName = e2.bucketName, this.ciUrl = e2.ciUrl, this.directory = e2.directory, this.downloadUrl = e2.downloadUrl, this.uploadUrl = e2.uploadUrl, this.cosOptions = { secretId: e2.secretId, secretKey: e2.secretKey, sessionToken: e2.sessionToken, expiredTime: e2.expiredTime }, Ce.l(s2 + ` ok. region:${this.region} bucketName:` + this.bucketName), this._initUploaderMethod();
- }).catch((e2) => {
- i2.setError(e2).end(), Ce.w(s2 + " failed. error:", e2);
- });
- }
- _getCosPreSigUrl(t2) {
- const i2 = this._n + "._getCosPreSigUrl", n2 = Math.ceil(Date.now() / 1e3), o2 = new Ti("_getCosPreSigUrl");
- let e2 = { uploadMethod: t2.uploadMethod, platform: this.getPlatform(), SDKAppID: this.getSDKAppID(), userID: t2.userID, conversationType: t2.conversationType, uploadConfig: [{ fileID: 1, fileType: t2.fileType, fileName: t2.fileName }] }, s2 = ri.SIMPLE_COS_PRE_SIG;
- return this.isSimpleCos || (e2 = { fileType: t2.fileType, fileName: t2.fileName, uploadMethod: t2.uploadMethod, duration: t2.duration }, s2 = ri.COS_PRE_SIG), this.req({ P: s2, data: e2 }).then((e3) => {
- this.tryCount = 0;
- var t3 = e3.data || {};
- Ce.l(`${i2} ok. isSimpleCos:${this.isSimpleCos} data:`, t3);
- let s3 = "";
- if (this.isSimpleCos) {
- const { uploadUrl: e4, fileKey: i3 } = t3.preSig[0];
- s3 = `uploadIP:${t3.uploadIP} uploadUrl:${e4} fileKey:${i3} cost:` + Dt(n2);
- } else
- s3 = `requestId:${t3.requestId} expiredTime:${t3.expiredTime} diff:${t3.expiredTime - n2}s`;
- return o2.setMessage(s3).end(), t3;
- }).catch((e3) => (-1 === e3.code && (e3.code = ei.COS_GET_SIG_FAIL), o2.setError(e3).end(), Ce.w(i2 + " failed. error:", e3), this.tryCount < 1 ? (this.tryCount++, this._getCosPreSigUrl(t2)) : (this.tryCount = 0, ni({ code: ei.COS_GET_SIG_FAIL }))));
- }
- _initUploaderMethod() {
- if (this.TIMUploadPlugin)
- return this.timUploadPlugin = new this.TIMUploadPlugin(), void (this._cosUploadMethod = (e2, t2) => {
- this.timUploadPlugin.uploadFile(e2, t2);
- });
- this.appid && (this.cos = k ? new this.COSSDK({ ForcePathStyle: true, getAuthorization: this._getAuthorization.bind(this) }) : new this.COSSDK({ getAuthorization: this._getAuthorization.bind(this) }), this._cosUploadMethod = k ? (e2, t2) => {
- this.cos.postObject(e2, t2);
- } : (e2, t2) => {
- this.cos.uploadFiles(e2, t2);
- });
- }
- onCheckTimer(e2) {
- this.COSSDK && (this.TIMUploadPlugin || this.isLoggedIn() && e2 % 60 == 0 && Math.ceil(Date.now() / 1e3) >= this.cosOptions.expiredTime - 120 && this._getAuthorizationKey());
- }
- getFileDNList() {
- return this._fileDNList;
- }
- _getAuthorization(e2, t2) {
- t2({ TmpSecretId: this.cosOptions.secretId, TmpSecretKey: this.cosOptions.secretKey, XCosSecurityToken: this.cosOptions.sessionToken, ExpiredTime: this.cosOptions.expiredTime });
- }
- upload(e2) {
- if (true === e2._relayFlag)
- return Promise.resolve();
- const s2 = this.get($s);
- switch (e2.type) {
- case t.MSG_IMAGE:
- return s2.addTotalCount(hi), this._uploadImage(e2);
- case t.MSG_FILE:
- return s2.addTotalCount(hi), this._uploadFile(e2);
- case t.MSG_AUDIO:
- return s2.addTotalCount(hi), this._uploadAudio(e2);
- case t.MSG_VIDEO:
- return s2.addTotalCount(hi), this._uploadVideo(e2);
- default:
- return Promise.resolve();
- }
- }
- _uploadImage(g2) {
- const e2 = this.get(Is), m2 = g2.getElements()[0], t2 = e2.getMessageOption(g2.clientSequence);
- return this.doUploadImage({ file: t2.payload.file, to: t2.to, message: g2, onProgress: (e3) => {
- if (m2.updatePercent(e3), xe(t2.onProgress))
- try {
- t2.onProgress(e3);
- } catch (e4) {
- return ni({ code: ei.MSG_ONPROGRESS_ERR });
- }
- } }).then((t3) => {
- var { location: t3, fileType: e3, fileSize: d2, width: s2, height: i2, smallImageUrl: n2, smallImageWidth: _2, smallImageHeight: u2, largeImageUrl: o2, largeImageWidth: h2, largeImageHeight: p2, imageInfoArray: r2 } = t3, t3 = this.isPrivateNetWork() ? t3 : et(t3);
- m2.updateImageFormat(e3);
- let a2, c2, l2 = { size: d2, url: t3, width: s2, height: i2 };
- if (r2 && 0 < r2.length)
- for (let e4 = 0; e4 < r2.length; e4++) {
- const t4 = r2[e4];
- 1 === t4.type ? a2 = t4 : 2 === t4.type ? c2 = t4 : l2 = { ...l2, ...t4 };
- }
- else
- c2 = n2 && o2 ? (a2 = { url: n2, width: _2, height: u2 }, { url: o2, width: h2, height: p2 }) : (a2 = gt({ originUrl: t3, originWidth: s2, originHeight: i2, min: 198 }), gt({ originUrl: t3, originWidth: s2, originHeight: i2, min: 720 }));
- return m2.updateImageInfoArray([{ ...l2 }, { ...c2 }, { ...a2 }]), g2;
- });
- }
- _uploadFile(s2) {
- const e2 = this.get(Is), i2 = s2.getElements()[0], t2 = e2.getMessageOption(s2.clientSequence);
- return this.doUploadFile({ file: t2.payload.file, to: t2.to, message: s2, onProgress: (e3) => {
- if (i2.updatePercent(e3), xe(t2.onProgress))
- try {
- t2.onProgress(e3);
- } catch (e4) {
- return ni({ code: ei.MSG_ONPROGRESS_ERR });
- }
- } }).then(({ location: e3 }) => {
- let t3 = e3;
- return this.isPrivateNetWork() || (t3 = vi(t3 = et(e3), this._fileDownloadProxy, this._authKey, this._fileDNList)), i2.updateFileUrl(t3), s2;
- });
- }
- _uploadAudio(t2) {
- const e2 = this.get(Is), s2 = t2.getElements()[0], i2 = e2.getMessageOption(t2.clientSequence);
- return this.doUploadAudio({ file: i2.payload.file, to: i2.to, message: t2, onProgress: (e3) => {
- if (s2.updatePercent(e3), xe(i2.onProgress))
- try {
- i2.onProgress(e3);
- } catch (e4) {
- return ni({ code: ei.MSG_ONPROGRESS_ERR });
- }
- } }).then(({ location: e3 }) => {
- e3 = this.isPrivateNetWork() ? e3 : et(e3);
- return s2.updateAudioUrl(e3), t2;
- });
- }
- _uploadVideo(s2) {
- const e2 = this.get(Is), i2 = s2.getElements()[0], t2 = e2.getMessageOption(s2.clientSequence);
- return this.doUploadVideo({ file: t2.payload.file, to: t2.to, message: s2, onProgress: (e3) => {
- if (i2.updatePercent(e3), xe(t2.onProgress))
- try {
- t2.onProgress(e3);
- } catch (e4) {
- return ni({ code: ei.MSG_ONPROGRESS_ERR });
- }
- } }).then((e3) => {
- var { location: e3, snapshotInfo: t3 } = e3, e3 = this.isPrivateNetWork() ? e3 : et(e3);
- return i2.updateVideoUrl(e3), Oe(t3) || i2.updateSnapshotInfo(t3), s2;
- });
- }
- _checkSizeError(e2) {
- let t2 = "";
- return "A" === e2 ? t2 = "audio" : "I" === e2 ? t2 = "image" : "V" === e2 ? t2 = "video" : "F" === e2 && (t2 = "file"), ni({ code: ei[`MSG_${e2}_SIZE_LIMIT`], message: this.getErrMsg("UploadSizeLimit", t2, this.UPLOAD_SIZE_LIMIT[e2] / 1048576 + "MB") });
- }
- doUploadImage(s2) {
- if (!s2.file || this._isEmptyFileList(s2.file.files))
- return ni({ code: ei.MSG_I_SELECT_F_FIRST });
- var e2 = this._checkImageType(s2.file);
- if (true !== e2)
- return e2;
- e2 = this._checkImageSize(s2.file);
- if (true !== e2)
- return e2;
- let i2 = null;
- return this._setUploadFileType(Zi), this.uploadByCOS(s2).then((e3) => {
- if (i2 = e3, this.isPrivateNetWork())
- return dt(t2);
- if (Fe(i2.imageInfoArray)) {
- const s3 = i2.imageInfoArray.find((e4) => 3 === e4.type);
- if (s3)
- return s3;
- }
- if (b)
- return { width: s2.file.width, height: s2.file.height };
- let t2 = et(e3.location);
- return dt(t2 = this.COSSDK ? t2 : vi(t2, this._fileDownloadProxy, this._authKey, this._fileDNList));
- }).then((e3) => (i2.width = e3.width, i2.height = e3.height, Promise.resolve(i2)));
- }
- _checkImageType(e2) {
- let t2 = "";
- return t2 = k ? e2.url.slice(e2.url.lastIndexOf(".") + 1) : b ? e2.type.split("/")[1] : e2.files[0].name.slice(e2.files[0].name.lastIndexOf(".") + 1), 0 <= Ji.indexOf(t2.toLowerCase()) || ni({ code: ei.MSG_I_TYPES_LIMIT });
- }
- _checkImageSize(e2) {
- return 0 === (e2 = (k || b ? e2 : e2.files[0]).size) ? ni({ code: ei.MSG_F_IS_EMPTY }) : e2 < this.UPLOAD_SIZE_LIMIT.I || this._checkSizeError("I");
- }
- doUploadFile(e2) {
- let t2 = null;
- return !e2.file || this._isEmptyFileList(e2.file.files) ? (t2 = { code: ei.MSG_F_SELECT_F_FIRST }, ni(t2)) : e2.file.files[0].size > this.UPLOAD_SIZE_LIMIT.F ? this._checkSizeError("F") : 0 === e2.file.files[0].size ? (t2 = { code: ei.MSG_F_IS_EMPTY }, ni(t2)) : (this._setUploadFileType(tn), this.uploadByCOS(e2));
- }
- doUploadVideo(e2) {
- return e2.file.videoFile.size > this.UPLOAD_SIZE_LIMIT.V ? this._checkSizeError("V") : 0 === e2.file.videoFile.size ? ni({ code: ei.MSG_F_IS_EMPTY }) : -1 === Xi.indexOf(e2.file.videoFile.type) ? ni({ code: ei.MSG_V_TYPES_LIMIT }) : (this._setUploadFileType(Qi), k || b ? this.handleVideoUpload({ ...e2, file: e2.file.videoFile }) : F ? this.handleVideoUpload(e2) : void 0);
- }
- handleVideoUpload(s2) {
- return new Promise((t2, e2) => {
- this.uploadByCOS(s2).then((e3) => {
- t2(e3);
- }).catch(() => {
- this.uploadByCOS(s2).then((e3) => {
- t2(e3);
- }).catch(() => {
- e2(new Qs({ code: ei.MSG_V_UPLOAD_FAIL }));
- });
- });
- });
- }
- doUploadAudio(e2) {
- return e2.file ? e2.file.size > this.UPLOAD_SIZE_LIMIT.A ? this._checkSizeError("A") : 0 === e2.file.size ? ni({ code: ei.MSG_F_IS_EMPTY }) : (this._setUploadFileType(en), this.uploadByCOS(e2)) : ni({ code: ei.MSG_A_UPLOAD_FAIL });
- }
- uploadByCOS(t2) {
- if (!xe(this._cosUploadMethod))
- return this.warn("PluginUndetected"), ni({ code: ei.COS_UNDETECTED });
- if (this.timUploadPlugin)
- return this._uploadWithPreSigUrl(t2);
- const l2 = new Ti("upload"), d2 = this._n + ".uploadByCOS", _2 = Date.now(), u2 = this._getFile(t2);
- return new Promise((r2, a2) => {
- const e2 = k ? this._createCosOptionsWXMiniApp(t2) : this._createCosOptionsWeb(t2), c2 = this;
- this._cosUploadMethod(e2, (e3, t3) => {
- const s2 = /* @__PURE__ */ Object.create(null);
- if (t3) {
- if (e3 || Fe(t3.files) && t3.files[0].error) {
- const e4 = new Qs({ code: ei.MSG_F_UPLOAD_FAIL });
- return l2.setError(e4).end(), Ce.l(d2 + " failed. error:", t3.files[0].error), 403 === t3.files[0].error.statusCode && this._getAuthorizationKey(), void a2(e4);
- }
- s2.fileName = u2.name, s2.fileSize = u2.size, s2.fileType = u2.type.slice(u2.type.indexOf("/") + 1).toLowerCase(), s2.location = (k ? t3 : t3.files[0].data).Location;
- const i3 = Date.now() - _2, n2 = `size:${c2._formatFileSize(u2.size)} time:${i3}ms speed:` + c2._formatSpeed(1e3 * u2.size / i3), o2 = (Ce.l(d2 + ` success. name:${u2.name} ` + n2), r2(s2), this.get($s));
- return o2.addCost(hi, i3), o2.addFileSize(hi, u2.size), void l2.setMessage(n2).end();
- }
- const i2 = new Qs({ code: ei.MSG_F_UPLOAD_FAIL });
- l2.setError(i2).end(), Ce.w(d2 + " failed. error:", e3), 403 === e3.statusCode && this._getAuthorizationKey(), a2(i2);
- });
- });
- }
- _uploadWithPreSigUrl(e2) {
- const g2 = this._n + "._uploadWithPreSigUrl", m2 = this._getFile(e2);
- return this._createCosOptionsPreSigUrl(e2).then((p2) => new Promise((c2, l2) => {
- const d2 = new Ti("upload"), { requestSnapshotUrl: _2, ...u2 } = p2, h2 = Date.now();
- this._cosUploadMethod(u2, (e3, t2) => {
- if (e3 || 403 === t2.statusCode) {
- d2.setError(new Qs(e3)).end();
- const m3 = { HttpStatusCode: bn, CostTime: Dt(h2, false), error: e3, url: p2.url };
- return t2.data && t2.data.uploadIP && (m3.uploadIP = t2.data.uploadIP), this._uploadSSOLog(m3), Ce.l(g2 + " failed, error:", e3), void l2(new Qs({ code: ei.MSG_F_UPLOAD_FAIL }));
- }
- const s2 = /* @__PURE__ */ Object.create(null);
- let i2 = t2.data.location || "";
- this.isPrivateNetWork() || 0 !== i2.indexOf("https://") && 0 !== i2.indexOf("http://") || (i2 = i2.split("//")[1]), s2.fileName = m2.name, s2.fileSize = m2.size, s2.fileType = m2.type.slice(m2.type.indexOf("/") + 1).toLowerCase(), s2.location = i2;
- var e3 = Dt(h2, false), n2 = `size:${this._formatFileSize(m2.size)} time:${e3}ms speed:${this._formatSpeed(1e3 * m2.size / e3)} res:` + JSON.stringify(t2.data);
- Ce.l(g2 + ` ok. name:${m2.name} ` + n2), d2.setMessage(n2).end();
- const o2 = { HttpStatusCode: t2.statusCode, FileSize: m2.size, CostTime: e3, url: p2.url }, r2 = (t2.data && t2.data.uploadIP && (o2.uploadIP = t2.data.uploadIP), this._uploadSSOLog(o2), this.get($s)), a2 = (r2.addCost(hi, e3), r2.addFileSize(hi, m2.size), []);
- if (u2.thumbUrl && u2.largeUrl && a2.push(this._getSmallImageInfoByUrl(u2.thumbUrl, s2), this._getLargeImageInfoByUrl(u2.largeUrl, s2)), this.uploadFileType === Zi && this.isSimpleCos && !this.isPrivateNetWork() && (a2.push(this._getImageInfoArray(u2.downloadUrl, s2)), t2.data.uploadIP && a2.push(this._getDownloadIP(u2.downloadUrl.split("//")[1].split("/")[0], s2))), _2 && a2.push(this._getSnapshotInfoByUrl(_2, s2)), 0 < a2.length)
- return Promise.all(a2).then(() => {
- c2(s2);
- });
- c2(s2);
- });
- }));
- }
- _getDownloadIP(e2, s2) {
- const i2 = this._n + "._getDownloadIP", n2 = Date.now();
- return this.req({ P: ri.GET_IP, data: { domainName: e2 } }).then((e3) => {
- if (e3.data && e3.data.ip) {
- Ce.l(i2 + ` ok. downloadIP:${e3.data.ip} cost:` + Dt(n2));
- const t2 = s2.location.split("/");
- t2[0] = e3.data.ip, s2.location = t2.join("/");
- }
- }).catch((e3) => {
- });
- }
- _getImageInfoArray(t2, s2) {
- const i2 = this._n + "._getImageInfoArray", n2 = Date.now();
- return this.req({ P: ri.GET_IMAGE_INFO, data: { imageUrl: t2 } }).then((e2) => {
- e2 = e2.data || {};
- return Ce.l(i2 + ` ok. data: ${JSON.stringify(e2)} cost:` + Dt(n2)), s2.imageInfoArray = e2.imageInfoArray, e2;
- }).catch((e2) => {
- s2.imageInfoArray = void 0, this._uploadSSOLog({ HttpStatusCode: Fn, CostTime: Dt(n2, false), url: t2 });
- });
- }
- _uploadSSOLog(t2) {
- if (this.isSimpleCos) {
- const s2 = new Ti();
- s2.setEventType(18), t2.error && s2.setError(new Qs(t2.error));
- let e2 = `HttpStatusCode:${t2.HttpStatusCode}|CosRequestId:${t2.CosRequestId || ""}|FileAlreadyExist:${t2.FileAlreadyExist || 0}|FileSize:${t2.FileSize || 0}|CostTime:` + t2.CostTime;
- t2.uploadIP && (e2 += "|FinalIP:" + t2.uploadIP), s2.setMessage("OK").setMoreMessage(t2.url).setExtension(e2).end();
- }
- }
- _getRawOrUploadProxyUrl(e2) {
- var t2 = this.get(Rs).getFileUploadProxy();
- let s2 = e2;
- return s2 = t2 ? e2.replace(/^https:\/\/[^/]+/, t2) : s2;
- }
- _getFile(e2) {
- return Fe(e2.file.files) || Be(e2.file.files) ? e2.file.files[0] : e2.file;
- }
- _formatFileSize(e2) {
- return e2 < 1024 ? e2 + "B" : e2 < 1048576 ? Math.floor(e2 / 1024) + "KB" : Math.floor(e2 / 1048576) + "MB";
- }
- _formatSpeed(e2) {
- return e2 <= 1048576 ? Mt(e2 / 1024, 1) + "KB/s" : Mt(e2 / 1048576, 1) + "MB/s";
- }
- _createCosOptionsWeb(t2) {
- const e2 = this._getFile(t2), s2 = e2.name, i2 = s2.slice(s2.lastIndexOf(".")), n2 = this._genFileName("" + je(999999) + i2);
- return { files: [{ Bucket: this.bucketName + "-" + this.appid, Region: this.region, Key: this.directory + "/" + n2, Body: e2 }], SliceSize: 1048576, onProgress: (e3) => {
- if ("function" == typeof t2.onProgress)
- try {
- t2.onProgress(e3.percent);
- } catch (e4) {
- Ce.w("onProgress callback error:", e4);
- }
- }, onFileFinish: (e3, t3, s3) => {
- } };
- }
- _createCosOptionsWXMiniApp(t2) {
- var e2 = this._getFile(t2), s2 = this._genFileName(e2.name), e2 = e2.url;
- return { Bucket: this.bucketName + "-" + this.appid, Region: this.region, Key: this.directory + "/" + s2, FilePath: e2, onProgress: (e3) => {
- if (Ce.l(JSON.stringify(e3)), "function" == typeof t2.onProgress)
- try {
- t2.onProgress(e3.percent);
- } catch (e4) {
- Ce.w("onProgress callback error:", e4);
- }
- } };
- }
- _createCosOptionsPreSigUrl(a2) {
- let c2 = "", l2 = "", e2 = 0;
- var s2 = this._getFile(a2);
- if (k || b) {
- if (a2.message.type === t.MSG_FILE) {
- const a3 = s2.name, t2 = a3.slice(a3.lastIndexOf("."));
- c2 = this._genFileName("" + je(999999) + t2);
- } else
- c2 = this._genFileName(s2.name);
- l2 = s2.url, e2 = 1;
- } else {
- const a3 = s2.name, t2 = a3.slice(a3.lastIndexOf("."));
- c2 = this._genFileName("" + je(999999) + t2), l2 = s2, e2 = 0;
- }
- return this._getCosPreSigUrl({ fileType: this.uploadFileType, fileName: c2, uploadMethod: e2, duration: this.duration, userID: a2.message.from, conversationType: at(a2.message.conversationID) ? 1 : 2 }).then((e3) => {
- var { uploadUrl: t2, downloadUrl: s3, requestSnapshotUrl: i2, thumbUrl: n2, largeUrl: o2, fileKey: r2 } = this.isSimpleCos ? e3.preSig[0] : e3, { uploadIP: e3 = "" } = e3;
- return { url: this._getRawOrUploadProxyUrl(t2), fileType: this.uploadFileType, fileName: c2, resources: l2, downloadUrl: s3, requestSnapshotUrl: i2, thumbUrl: n2, largeUrl: o2, fileKey: r2, uploadIP: !this.isPrivateNetWork() && e3, onProgress: (e4) => {
- if ("function" == typeof a2.onProgress)
- try {
- a2.onProgress(e4.percent);
- } catch (e5) {
- Ce.w("onProgress callback error:", e5), Ce.e(e5);
- }
- } };
- });
- }
- _genFileName(e2) {
- return _t() + "-" + e2;
- }
- _setUploadFileType(e2) {
- this.uploadFileType = e2;
- }
- _getSnapshotInfoByUrl(e2, s2) {
- const i2 = "_getSnapshotInfoByUrl", n2 = new Ti(i2);
- return this.req({ P: ri.VIDEO_COVER, data: { platform: this.getPlatform(), coverName: this._genFileName(je(99999)), requestSnapshotUrl: e2 } }).then((e3) => {
- e3 = (e3.data || {}).snapshotUrl;
- if (Ce.l(`${this._n}.${i2} ok. snapshotUrl:` + e3), n2.setMessage("snapshotUrl:" + e3).end(), Oe(e3))
- return {};
- const t2 = vi(e3, this._fileDownloadProxy, this._authKey, this._fileDNList);
- return dt(t2).then((e4) => {
- s2.snapshotInfo = { snapshotUrl: t2, snapshotWidth: e4.width, snapshotHeight: e4.height };
- });
- }).catch((e3) => (Ce.w(`${this._n}.${i2} failed. error:`, e3), n2.setCode(e3.errorCode).setMessage(e3.errorInfo).end(), {}));
- }
- _getSmallImageInfoByUrl(t2, s2) {
- return dt(vi(t2, this._fileDownloadProxy, this._authKey, this._fileDNList)).then((e2) => {
- s2.smallImageUrl = t2, s2.smallImageWidth = e2.width, s2.smallImageHeight = e2.height;
- });
- }
- _getLargeImageInfoByUrl(t2, s2) {
- return dt(vi(t2, this._fileDownloadProxy, this._authKey, this._fileDNList)).then((e2) => {
- s2.largeImageUrl = t2, s2.largeImageWidth = e2.width, s2.largeImageHeight = e2.height;
- });
- }
- _isEmptyFileList(e2) {
- return !(!Be(e2) || 0 !== e2.length);
- }
- reset() {
- Ce.l(this._n + ".reset");
- }
-};
-var qn = class {
- constructor(e2) {
- this._n = "MergerMessageHandler", this._msgM = e2;
- }
- uploadMergerMessage(e2, s2) {
- const i2 = this._n + ".uploadMergerMessage", t2 = (Ce.d(i2 + " message:", e2, "messageBytes:" + s2), JSON.parse(JSON.stringify(e2.payload)))["messageList"], n2 = t2.length, o2 = this._msgM.get(Ns).getFileDNList(), r2 = new Ti("uploadMergerMessage");
- return t2.forEach((e3) => {
- Ei(e3.messageBody[0].type, e3.messageBody, o2);
- }), this._msgM.req({ P: ri.UPLOAD_MERGER_MSG, data: { messageList: t2 } }).then((e3) => {
- Ce.d(i2 + " ok. response:", e3.data);
- var { pbDownloadKey: e3, downloadKey: t3 } = e3.data, e3 = { pbDownloadKey: e3, downloadKey: t3, messageNumber: n2 };
- return r2.setMessage(n2 + `-${s2}-` + t3).end(), e3;
- }).catch((e3) => {
- throw Ce.w(i2 + " failed. error:", e3), r2.setError(e3).end(), e3;
- });
- }
- downloadMergerMessage(n2) {
- const o2 = this._n + ".downloadMergerMessage", t2 = (Ce.d(o2 + " message:", n2), n2.payload)["downloadKey"], r2 = this._msgM.getFileDownloadProxy(), a2 = this._msgM.getDowloadFileAuthKey(), c2 = new Ti("downloadMergerMessage");
- return c2.setMessage("downloadKey:" + t2), this._msgM.req({ P: ri.DOWNLOAD_MERGER_MSG, data: { downloadKey: t2 } }).then((e2) => {
- Ce.d(o2 + " ok. response:", e2.data);
- const t3 = this._msgM.get(Ns).getFileDNList();
- if (xe(n2.clearElement)) {
- const { downloadKey: o3, pbDownloadKey: c3, messageList: s2, ...i2 } = n2.payload;
- n2.clearElement(), n2.setElement({ type: n2.type, content: { messageList: e2.data.messageList, ...i2 } }, r2, a2, t3);
- } else {
- const o3 = [];
- e2.data.messageList.forEach((e3) => {
- Oe(e3) || (e3 = new Fi(e3, r2, a2, t3), o3.push(e3));
- }), n2.payload.messageList = o3, n2.payload.downloadKey = "", n2.payload.pbDownloadKey = "";
- }
- return c2.end(), n2;
- }).catch((e2) => {
- throw Ce.w(`${o2} failed. key:${t2} error:`, e2), c2.setError(e2).end(), e2;
- });
- }
- createMergerMessagePack(e2, s2, i2) {
- return e2.conversationType === t.CONV_C2C ? this._createC2CMergerMessagePack(e2, s2, i2) : this._createGroupMergerMessagePack(e2, s2, i2);
- }
- _createC2CMergerMessagePack(e2, t2, s2) {
- let i2 = null;
- t2 && (t2.offlinePushInfo && (i2 = t2.offlinePushInfo), true === t2.onlineUserOnly && (i2 ? i2.disablePush = true : i2 = { disablePush: true }));
- const n2 = [];
- if (be(t2) && be(t2.messageControlInfo)) {
- const { excludedFromUnreadCount: e3, excludedFromLastMessage: s3, excludedFromContentModeration: i3 } = t2.messageControlInfo;
- true === e3 && n2.push("NoUnread"), true === s3 && n2.push("NoLastMsg"), true === i3 && n2.push("NoMsgCheck");
- }
- let o2 = "";
- ke(e2.cloudCustomData) && 0 < e2.cloudCustomData.length && (o2 = e2.cloudCustomData);
- const { pbDownloadKey: r2, downloadKey: a2, messageNumber: d2 } = s2, { title: _2, abstractList: u2, compatibleText: h2 } = e2.payload, c2 = this._msgM.get(ys), l2 = c2 && c2.isOnlineMessage(e2, t2) ? 0 : void 0;
- return { P: ri.SEND_C2C_MSG, data: { fromAccount: this._msgM.getMyUserID(), toAccount: e2.to, msgBody: [{ msgType: e2.type, msgContent: { pbDownloadKey: r2, downloadKey: a2, title: _2, abstractList: u2, compatibleText: h2, messageNumber: d2 } }], cloudCustomData: o2, clientTime: e2.clientTime, msgSeq: e2.sequence, msgRandom: e2.random, msgLifeTime: l2, offlinePushInfo: Hi(i2), messageControlInfo: 0 !== l2 ? n2 : void 0, isSupportExtension: true === e2.isSupportExtension ? 1 : 0, isRelayMessage: true === e2._relayFlag ? 1 : 0 } };
- }
- _createGroupMergerMessagePack(e2, t2, s2) {
- let i2 = null;
- t2 && t2.offlinePushInfo && (i2 = t2.offlinePushInfo);
- const n2 = [];
- if (be(t2) && be(t2.messageControlInfo)) {
- const { excludedFromUnreadCount: e3, excludedFromLastMessage: s3, excludedFromContentModeration: i3 } = t2.messageControlInfo;
- true === e3 && n2.push("NoUnread"), true === s3 && n2.push("NoLastMsg"), true === i3 && n2.push("NoMsgCheck");
- }
- let o2 = "";
- ke(e2.cloudCustomData) && 0 < e2.cloudCustomData.length && (o2 = e2.cloudCustomData);
- const { pbDownloadKey: r2, downloadKey: a2, messageNumber: d2 } = s2, { title: _2, abstractList: u2, compatibleText: h2 } = e2.payload, c2 = this._msgM.get(vs), l2 = c2 && c2.isOnlineMessage(e2, t2) ? 1 : 0;
- return { P: ri.SEND_GRP_MSG, data: { fromAccount: this._msgM.getMyUserID(), groupID: e2.to, msgBody: [{ msgType: e2.type, msgContent: { pbDownloadKey: r2, downloadKey: a2, title: _2, abstractList: u2, compatibleText: h2, messageNumber: d2 } }], random: e2.random, priority: e2.priority, clientSequence: e2.clientSequence, groupAtInfo: void 0, cloudCustomData: o2, onlineOnlyFlag: l2, offlinePushInfo: Hi(i2), clientTime: e2.clientTime, needReadReceipt: true !== e2.needReadReceipt || c2.isMessageFromOrToAVChatroom(e2.to) ? 0 : 1, messageControlInfo: 0 == l2 ? n2 : void 0, isSupportExtension: true === e2.isSupportExtension ? 1 : 0, isRelayMessage: true === e2._relayFlag ? 1 : 0 } };
- }
-};
-var xn = { ERR_SVR_COMM_SENSITIVE_TEXT: 80001, ERR_SVR_COMM_BODY_SIZE_LIMIT: 80002, OPEN_SERVICE_OVERLOAD_ERROR: 60022, ERR_SVR_MSG_PKG_PARSE_FAILED: 20001, ERR_SVR_MSG_INTERNAL_AUTH_FAILED: 20002, ERR_SVR_MSG_INVALID_ID: 20003, ERR_SVR_MSG_PUSH_DENY: 20006, ERR_SVR_MSG_IN_PEER_BLACKLIST: 20007, ERR_SVR_MSG_BOTH_NOT_FRIEND: 20009, ERR_SVR_MSG_NOT_PEER_FRIEND: 20010, ERR_SVR_MSG_NOT_SELF_FRIEND: 20011, ERR_SVR_MSG_SHUTUP_DENY: 20012, ERR_SVR_GROUP_INVALID_PARAMETERS: 10004, ERR_SVR_GROUP_PERMISSION_DENY: 10007, ERR_SVR_GROUP_NOT_FOUND: 10010, ERR_SVR_GROUP_INVALID_GROUPID: 10015, ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY: 10016, ERR_SVR_GROUP_SHUTUP_DENY: 10017, MSG_SEND_FAIL: 2100, OVER_FREQUENCY_LIMIT: 2996 };
-var Vn = [ei.MSG_ONPROGRESS_ERR, ei.MSG_I_SELECT_F_FIRST, ei.MSG_I_TYPES_LIMIT, ei.MSG_F_IS_EMPTY, ei.MSG_I_SIZE_LIMIT, ei.MSG_F_SELECT_F_FIRST, ei.MSG_F_SIZE_LIMIT, ei.MSG_V_SIZE_LIMIT, ei.MSG_V_TYPES_LIMIT, ei.MSG_A_UPLOAD_FAIL, ei.MSG_A_SIZE_LIMIT, ei.COS_UNDETECTED];
-function Bn(e2) {
- let t2 = false;
- return Object.values(xn).includes(e2) && (t2 = true), t2 = 120001 <= e2 && e2 <= 13e4 || 10100 <= e2 && e2 <= 10200 ? true : t2;
-}
-var Kn = class extends oi {
- constructor(e2) {
- super(e2), this._n = "MessageModule", this._messageOptionsMap = /* @__PURE__ */ new Map(), this._mergerMessageHandler = new qn(this);
- }
- createTextMessage(e2) {
- var t2 = this.getMyUserID();
- e2.currentUser = t2, e2.senderTinyID = this.getMyTinyID();
- const s2 = new xi(e2), i2 = ke(e2.payload) ? e2.payload : e2.payload.text, n2 = new yi({ text: i2 }), o2 = this._getNickAndAvatarByUserID(t2);
- return s2.setElement(n2), s2.setNickAndAvatar(o2), s2.setNameCard(this._getNameCardByGroupID(s2)), s2;
- }
- createImageMessage(e2) {
- const t2 = this.getMyUserID(), s2 = (e2.currentUser = t2, e2.senderTinyID = this.getMyTinyID(), new xi(e2));
- if (k) {
- const t3 = e2.payload["file"];
- if (Ue(t3))
- return void this.warn("FileUnsupportedInMP", "createImageMessage");
- const s3 = t3.tempFiles[0].path || t3.tempFiles[0].tempFilePath, i3 = { url: s3, name: s3.slice(s3.lastIndexOf("/") + 1), size: t3.tempFiles && t3.tempFiles[0].size || 1, type: s3.slice(s3.lastIndexOf(".") + 1).toLowerCase() };
- e2.payload.file = i3;
- } else if (b) {
- const t3 = e2.payload["file"], s3 = { url: t3.uri, name: t3.fileName, size: t3.fileSize || 1, type: t3.type, width: t3.width, height: t3.height };
- e2.payload.file = s3;
- } else if (F) {
- if (Ue(e2.payload.file)) {
- const t3 = e2.payload.file;
- e2.payload.file = { files: [t3] };
- } else if (be(e2.payload.file) && "undefined" != typeof uni) {
- const t3 = e2.payload.file.tempFiles[0];
- e2.payload.file = { files: [t3] };
- }
- }
- const i2 = new Ri({ imageFormat: Te.UNKNOWN, uuid: this._generateUUID(e2.payload.file), file: e2.payload.file }), n2 = this._getNickAndAvatarByUserID(t2);
- return s2.setElement(i2), s2.setNickAndAvatar(n2), s2.setNameCard(this._getNameCardByGroupID(s2)), this._messageOptionsMap.set(s2.clientSequence, e2), s2;
- }
- createAudioMessage(e2) {
- const t2 = e2.payload["file"];
- if (k) {
- const s3 = { url: t2.tempFilePath, name: t2.tempFilePath.slice(t2.tempFilePath.lastIndexOf("/") + 1), size: t2.fileSize, second: parseInt(t2.duration) / 1e3, type: t2.tempFilePath.slice(t2.tempFilePath.lastIndexOf(".") + 1).toLowerCase() };
- e2.payload.file = s3;
- }
- if (b) {
- const s3 = { url: t2.uri, name: t2.uri.slice(t2.uri.lastIndexOf("/") + 1), size: t2.fileSize || 1, second: Math.floor(t2.duration / 1e3), type: t2.uri.slice(t2.uri.lastIndexOf(".") + 1).toLowerCase() };
- e2.payload.file = s3, Oe(t2.uri) && this.warn("VoiceFileInRN");
- }
- const s2 = this.getMyUserID(), i2 = (e2.currentUser = s2, e2.senderTinyID = this.getMyTinyID(), new xi(e2)), n2 = new Ai({ second: Math.floor(t2.duration / 1e3), size: t2.fileSize || t2.size || 1, url: t2.tempFilePath || t2.uri, uuid: this._generateUUID(e2.payload.file) }), o2 = this._getNickAndAvatarByUserID(s2);
- return i2.setElement(n2), i2.setNickAndAvatar(o2), i2.setNameCard(this._getNameCardByGroupID(i2)), this._messageOptionsMap.set(i2.clientSequence, e2), i2;
- }
- createVideoMessage(t2) {
- const e2 = this.getMyUserID(), s2 = (t2.currentUser = e2, t2.senderTinyID = this.getMyTinyID(), t2.payload.file.thumbUrl = "", t2.payload.file.thumbSize = 0, {});
- if (k) {
- if (O)
- return void this.warn("VideoUnsupportedInAlipay");
- if (Ue(t2.payload.file))
- return void this.warn("FileUnsupportedInMP", "createVideoMessage");
- let e3 = t2.payload["file"];
- Fe(e3.tempFiles) && (e3 = e3.tempFiles[0]), s2.url = e3.tempFilePath, s2.name = e3.tempFilePath.slice(e3.tempFilePath.lastIndexOf("/") + 1), s2.size = e3.size || 1, s2.second = e3.duration || 0, s2.type = e3.tempFilePath.slice(e3.tempFilePath.lastIndexOf(".") + 1).toLowerCase();
- } else if (b) {
- const e3 = t2.payload["file"];
- s2.url = e3.uri, s2.name = e3.fileName, s2.size = e3.fileSize || 1, s2.second = e3.duration || 0, s2.type = e3.type.split("/")[1];
- } else if (F) {
- if (Ue(t2.payload.file)) {
- const e4 = t2.payload.file;
- t2.payload.file.files = [e4];
- } else if (be(t2.payload.file) && "undefined" != typeof uni) {
- const e4 = t2.payload.file.tempFile;
- t2.payload.file.files = [e4];
- }
- const e3 = t2.payload["file"];
- s2.url = window.URL.createObjectURL(e3.files[0]), s2.name = e3.files[0].name, s2.size = e3.files[0].size || 1, s2.second = e3.files[0].duration || 0, s2.type = e3.files[0].type.split("/")[1];
- }
- t2.payload.file.videoFile = s2;
- const i2 = new xi(t2), n2 = new wi({ videoFormat: s2.type, videoSecond: Mt(s2.second, 0), videoSize: s2.size, remoteVideoUrl: "", videoUrl: s2.url, videoUUID: this._generateUUID(t2.payload.file.videoFile), thumbUUID: this._generateUUID(t2.payload.file.videoFile), thumbWidth: t2.payload.file.width || 200, thumbHeight: t2.payload.file.height || 200, thumbUrl: t2.payload.file.thumbUrl, thumbSize: t2.payload.file.thumbSize, thumbFormat: t2.payload.file.thumbUrl.slice(t2.payload.file.thumbUrl.lastIndexOf(".") + 1).toLowerCase() }), o2 = this._getNickAndAvatarByUserID(e2);
- return i2.setElement(n2), i2.setNickAndAvatar(o2), i2.setNameCard(this._getNameCardByGroupID(i2)), this._messageOptionsMap.set(i2.clientSequence, t2), i2;
- }
- createCustomMessage(e2) {
- var t2 = this.getMyUserID();
- e2.currentUser = t2, e2.senderTinyID = this.getMyTinyID();
- const s2 = new xi(e2), i2 = new ki({ data: e2.payload.data, description: e2.payload.description, extension: e2.payload.extension }), n2 = this._getNickAndAvatarByUserID(t2);
- return s2.setElement(i2), s2.setNickAndAvatar(n2), s2.setNameCard(this._getNameCardByGroupID(s2)), s2;
- }
- createFaceMessage(e2) {
- var t2 = this.getMyUserID();
- e2.currentUser = t2, e2.senderTinyID = this.getMyTinyID();
- const s2 = new xi(e2), i2 = new Li(e2.payload), n2 = this._getNickAndAvatarByUserID(t2);
- return s2.setElement(i2), s2.setNickAndAvatar(n2), s2.setNameCard(this._getNameCardByGroupID(s2)), s2;
- }
- createMergerMessage(e2) {
- var t2 = this.getMyUserID();
- e2.currentUser = t2, e2.senderTinyID = this.getMyTinyID();
- const s2 = this._getNickAndAvatarByUserID(t2), i2 = new xi(e2), n2 = new $i(e2.payload);
- return i2.setElement(n2), i2.setNickAndAvatar(s2), i2.setNameCard(this._getNameCardByGroupID(i2)), i2.setRelayFlag(true), i2;
- }
- createForwardMessage(e2) {
- var { to: s2, conversationType: i2, priority: n2, payload: o2, needReadReceipt: r2, receiverList: a2 } = e2;
- if (!Fe(o2._elements))
- return ni({ code: ei.MSG_FORWARD_INVALID_ELEMENTS });
- var c2 = this.getMyUserID(), l2 = this._getNickAndAvatarByUserID(c2);
- if (o2.type === t.MSG_GRP_TIP)
- return ni({ code: ei.MSG_FORWARD_TYPE_INVALID });
- const _2 = { to: s2, conversationType: i2, conversationID: "" + i2 + s2, priority: n2, isPlaceMessage: 0, status: Ot, currentUser: c2, senderTinyID: this.getMyTinyID(), cloudCustomData: e2.cloudCustomData || o2.cloudCustomData || "", needReadReceipt: r2, receiverList: a2, isSupportExtension: e2.isSupportExtension || false }, d2 = new xi(_2);
- return d2.setElement(o2._elements[0]), d2.setNickAndAvatar(l2), d2.setNameCard(this._getNameCardByGroupID(o2)), d2.setRelayFlag(true), d2;
- }
- downloadMergerMessage(e2) {
- return this._mergerMessageHandler.downloadMergerMessage(e2);
- }
- createFileMessage(t2) {
- if (k) {
- if (!S && !R && !P)
- return;
- let e3;
- const s3 = $.getSystemInfoSync().SDKVersion;
- if (S && pt(s3, e3 = "2.5.0") < 0)
- return void this.warn("WXChooseMessageFile");
- if (R && pt(s3, e3 = "1.18.0") < 0)
- return void this.warn("QQChooseMessageFile");
- }
- if (F || P) {
- if (Ue(t2.payload.file)) {
- const s3 = t2.payload.file;
- t2.payload.file = { files: [s3] };
- } else if (be(t2.payload.file) && "undefined" != typeof uni) {
- const { tempFiles: s3, files: i3 } = t2.payload.file;
- let e3 = null;
- Fe(s3) ? e3 = s3[0] : Fe(i3) && (e3 = i3[0]), t2.payload.file = { files: [e3] };
- }
- } else if (S || R) {
- const s3 = t2.payload.file["tempFiles"], i3 = { ...s3[0], url: s3[0].path };
- t2.payload.file = { files: [i3] };
- } else if (b) {
- const s3 = t2.payload["file"], i3 = { ...s3, url: s3.uri };
- t2.payload.file = { files: [i3] };
- }
- const s2 = this.getMyUserID(), i2 = (t2.currentUser = s2, t2.senderTinyID = this.getMyTinyID(), new xi(t2)), e2 = new Gi({ uuid: this._generateUUID(t2.payload.file), file: t2.payload.file }), n2 = this._getNickAndAvatarByUserID(s2);
- return i2.setElement(e2), i2.setNickAndAvatar(n2), i2.setNameCard(this._getNameCardByGroupID(i2)), this._messageOptionsMap.set(i2.clientSequence, t2), i2;
- }
- createLocationMessage(e2) {
- var t2 = this.getMyUserID();
- e2.currentUser = t2, e2.senderTinyID = this.getMyTinyID();
- const s2 = new xi(e2), i2 = new bi(e2.payload), n2 = this._getNickAndAvatarByUserID(t2);
- return s2.setElement(i2), s2.setNickAndAvatar(n2), s2.setNameCard(this._getNameCardByGroupID(s2)), s2;
- }
- _onNoModule() {
- return ni({ code: ei.NO_MODULE });
- }
- sendMessageInstance(r2, a2) {
- if (false === this.get(Vs).filterMessage(r2, a2))
- return r2.hasRiskContent = true, this._onSendMessageFailed(r2, new Qs({ code: ei.PROFANITY_FOUND }));
- let s2 = null;
- if (r2.conversationType === t.CONV_C2C)
- s2 = this.get(ys);
- else {
- if (r2.conversationType !== t.CONV_GROUP)
- return ni({ code: ei.MSG_INVALID_CONV_TYPE });
- s2 = this.get(vs);
- }
- if (!s2)
- return this._onNoModule();
- const c2 = this._n + ".sendMessageInstance", l2 = this.get(Ds), d2 = s2.isOnlineMessage(r2, a2);
- let _2;
- return this.get(Ns).upload(r2).then(() => (this._getSendMessageSpecifiedKey(r2) === _i && this.get($s).addSuccessCount(hi), this._guardForGroup(r2).then(() => {
- if (!r2.isSendable())
- return ni({ code: ei.MSG_F_URL_IS_EMPTY });
- this._addSendMessageTotalCount(r2), _2 = Date.now();
- var e2 = function(t2) {
- let e3 = "utf-8";
- F && document && (e3 = document.charset.toLowerCase());
- let s3, i2 = 0, n2;
- if (n2 = t2.length, "utf-8" === e3 || "utf8" === e3)
- for (let e4 = 0; e4 < n2; e4++)
- (s3 = t2.codePointAt(e4)) <= 127 ? i2 += 1 : s3 <= 2047 ? i2 += 2 : s3 <= 65535 ? i2 += 3 : (i2 += 4, e4++);
- else if ("utf-16" === e3 || "utf16" === e3)
- for (let e4 = 0; e4 < n2; e4++)
- (s3 = t2.codePointAt(e4)) <= 65535 ? i2 += 2 : (i2 += 4, e4++);
- else
- i2 = t2.replace(/[^\x00-\xff]/g, "aa").length;
- return i2;
- }(JSON.stringify(r2));
- return r2.type === t.MSG_MERGER && 11264 < e2 ? this._mergerMessageHandler.uploadMergerMessage(r2, e2).then((e3) => {
- e3 = this._mergerMessageHandler.createMergerMessagePack(r2, a2, e3);
- return this.req(e3);
- }) : (l2.setMessageRandom(r2), s2.sendMessage(r2, a2));
- }).then((e2) => {
- var { time: e2, sequence: s3, readReceiptCode: i2, messageDropReason: n2 } = e2.data;
- if (Ge(i2) && 0 !== i2 && (new Ti("sendMessageWithReceipt").setMessage(`from:${r2.from} to:${r2.to} sequence:${s3} readReceiptCode:` + i2).end(), Ce.w(c2 + ` readReceiptCode:${i2} message:` + this.getErrMsg(i2))), n2) {
- const t2 = new Ti("messageDropReason"), a3 = `from:${r2.from} to:${r2.to} sequence:${s3} messageDropReason:` + n2;
- t2.setMessage(a3).end(), Ce.w(c2 + " " + a3);
- }
- if (this._addSendMessageSuccessCount(r2, _2), this._messageOptionsMap.delete(r2.clientSequence), true === r2.isResend) {
- const t2 = l2.findMessage(r2.ID);
- t2 && (Ce.l(c2 + " resend ok. ID:" + t2.ID), l2.deleteLocalMessage(t2));
- }
- r2.status = Nt, r2.time = e2;
- let o2 = false;
- if (r2.conversationType === t.CONV_GROUP)
- r2.sequence = s3;
- else if (r2.conversationType === t.CONV_C2C) {
- const t2 = l2.getLatestMessageSentByMe(r2.conversationID);
- if (t2) {
- const { nick: a3, avatar: e3 } = t2;
- a3 === r2.nick && e3 === r2.avatar || (o2 = true);
- }
- }
- if (o2 && l2.modifyMessageSentByMe({ conversationID: r2.conversationID, latestNick: r2.nick, latestAvatar: r2.avatar }), true === d2)
- r2._onlineOnlyFlag = true;
- else {
- l2.appendToMessageList(r2);
- let e3 = r2, s4 = (be(a2) && be(a2.messageControlInfo) && (true === a2.messageControlInfo.excludedFromLastMessage && (r2._isExcludedFromLastMessage = true, e3 = ""), true === a2.messageControlInfo.excludedFromUnreadCount && (r2._isExcludedFromUnreadCount = true)), r2.conversationType);
- rt(r2.to) && (s4 = t.CONV_TOPIC, this.get(Ss).onMessageSent({ groupID: Tt(r2.to), topicID: r2.to, lastMessage: e3 })), l2.onMessageSent({ conversationOptionsList: [{ conversationID: r2.conversationID, unreadCount: 0, type: s4, subType: r2.conversationSubType, lastMessage: e3 }] });
- }
- return r2._relayFlag || "TIMImageElem" !== r2.type || mt(r2.payload.imageInfoArray), Zs({ message: r2 });
- }))).catch((e2) => this._onSendMessageFailed(r2, e2, d2));
- }
- _guardForGroup(e2) {
- if (e2.conversationType !== t.CONV_GROUP)
- return Promise.resolve();
- const s2 = this.get(vs);
- if (!s2)
- return this._onNoModule();
- if (ot({ groupID: e2.to })) {
- const t2 = s2.getLocalGroupProfile(e2.to);
- if (t2 && t2.isSupportTopic)
- return ni({ code: ei.MSG_SEND_GRP_WITH_TOPIC_FAIL });
- }
- return s2.guardForAVChatRoom(e2);
- }
- _onSendMessageFailed(e2, t2, s2 = false) {
- var i2 = this._n + "._onSendMessageFailed";
- e2.status = Pt, 80001 !== t2.code && 80004 !== t2.code || (e2.hasRiskContent = true);
- const n2 = this.get(Ds);
- n2.deleteMessageRandom(e2);
- var o2 = 10100 <= t2.code && t2.code <= 10200 || 120001 <= t2.code && t2.code <= 13e4;
- s2 || o2 || true === n2.appendToMessageList(e2) && Ce.l(i2 + " message stored, ID:" + e2.ID), this._addSendMessageFailCountOnUser(e2, t2);
- const r2 = new Ti("sendMessage");
- let a2 = `head.seq:${t2.data.headSeq} type:${e2.type} from:${e2.from} to:` + e2.to;
- if (F) {
- if ("connection" in navigator) {
- const e3 = navigator.connection;
- a2 += ` downlink:${e3.downlink} effectiveType:${e3.effectiveType} rtt:` + e3.rtt;
- }
- if ("memory" in window.performance) {
- const e3 = window.performance.memory;
- a2 += ` usedJSHeapSize:${e3.usedJSHeapSize} totalJSHeapSize:${e3.totalJSHeapSize} jsHeapSizeLimit:` + e3.jsHeapSizeLimit;
- }
- }
- return r2.setMessage(a2).setError(t2).end(), Ce.e(i2 + ` ${a2} error:`, t2), ni(new Qs({ code: t2 && t2.code ? t2.code : ei.MSG_SEND_FAIL, message: t2 && t2.message ? t2.message : void 0, data: { message: e2 } }));
- }
- _getSendMessageSpecifiedKey(e2) {
- if ([t.MSG_IMAGE, t.MSG_AUDIO, t.MSG_VIDEO, t.MSG_FILE].includes(e2.type))
- return _i;
- if (e2.conversationType === t.CONV_C2C)
- return li;
- if (e2.conversationType === t.CONV_GROUP) {
- const t2 = this.get(vs);
- if (t2) {
- var e2 = t2.getLocalGroupProfile(e2.to);
- if (e2)
- return e2 = e2.type, nt(e2) ? di : ui;
- }
- }
- }
- _addSendMessageTotalCount(e2) {
- e2 = this._getSendMessageSpecifiedKey(e2);
- e2 && this.get($s).addTotalCount(e2);
- }
- _addSendMessageSuccessCount(e2, t2) {
- var s2 = this._getSendMessageSpecifiedKey(e2);
- if (s2) {
- const e3 = this.get($s);
- e3.addSuccessCount(s2), e3.addCost(s2, Dt(t2, false));
- }
- }
- _addSendMessageFailCountOnUser(e2, t2) {
- const { code: s2 = -1 } = t2, i2 = this.get($s), n2 = this._getSendMessageSpecifiedKey(e2);
- n2 === _i && function(e3) {
- let t3 = false;
- return t3 = Vn.includes(e3) ? true : t3;
- }(s2) ? i2.addFailedCountOfUserSide(hi) : Bn(s2) && n2 && i2.addFailedCountOfUserSide(n2);
- }
- resendMessage(e2, t2) {
- return e2.isResend = true, e2.status = Ot, this.sendMessageInstance(e2, t2);
- }
- revokeMessage(s2) {
- let e2 = null;
- if (s2.conversationType === t.CONV_C2C ? e2 = this.get(ys) : s2.conversationType === t.CONV_GROUP && (e2 = this.get(vs)), !e2)
- return this._onNoModule();
- const i2 = new Ti("revokeMessage"), n2 = (i2.setMessage(`type:${s2.type} from:${s2.from} to:` + s2.to), this._n + ".revokeMessage");
- return e2.revokeMessage(s2).then((e3) => {
- var t2 = e3.data.recallRetList;
- if (Oe(t2) || 0 === t2[0].retCode)
- return Ce.i(n2 + " ok. ID:" + s2.ID), s2.isRevoked = true, i2.end(), this.get(Ds).onMessageRevoked([s2]), Zs({ message: s2 });
- {
- const e4 = new Qs({ code: t2[0].retCode, data: { message: s2 } });
- return i2.setCode(e4.code).setMoreMessage(e4.message).end(), ni(e4);
- }
- }).catch((e3) => {
- i2.setError(e3).end();
- var t2 = new Qs({ code: e3 && e3.code ? e3.code : ei.MSG_REVOKE_FAIL, message: e3 && e3.message ? e3.message : void 0, data: { message: s2 } });
- return Ce.w(n2 + " failed. error:", e3), ni(t2);
- });
- }
- deleteMessage(e2) {
- let s2 = null;
- const i2 = e2[0], n2 = i2.conversationID;
- let o2 = "", r2 = [], a2 = [];
- if (i2.conversationType === t.CONV_C2C)
- s2 = this.get(ys), o2 = n2.replace(t.CONV_C2C, ""), e2.forEach((e3) => {
- e3 && e3.status === Nt && e3.conversationID === n2 && (e3._onlineOnlyFlag || r2.push(`${e3.sequence}_${e3.random}_` + e3.time), a2.push(e3));
- });
- else if (i2.conversationType === t.CONV_GROUP)
- s2 = this.get(vs), o2 = n2.replace(t.CONV_GROUP, ""), e2.forEach((e3) => {
- e3 && e3.status === Nt && e3.conversationID === n2 && (e3._onlineOnlyFlag || r2.push("" + e3.sequence), a2.push(e3));
- });
- else if (i2.conversationType === t.CONV_SYSTEM)
- return ni({ code: ei.CANNOT_DELETE_GRP_SYSTEM_NOTICE });
- if (!s2)
- return this._onNoModule();
- if (0 === r2.length)
- return this._onMessageDeleted(a2);
- 30 < r2.length && (r2 = r2.slice(0, 30), a2 = a2.slice(0, 30));
- const c2 = new Ti("deleteMessage"), l2 = (c2.setMessage(`to:${o2} count:` + r2.length), this._n + ".deleteMessage");
- return s2.deleteMessage({ to: o2, keyList: r2 }).then((e3) => (c2.end(), Ce.i(l2 + " ok"), this._onMessageDeleted(a2))).catch((e3) => {
- c2.setError(e3).end(), Ce.w(l2 + " failed. error:", e3);
- e3 = new Qs({ code: e3 && e3.code ? e3.code : ei.MSG_DELETE_FAIL, message: e3 && e3.message ? e3.message : void 0 });
- return ni(e3);
- });
- }
- _onMessageDeleted(e2) {
- return this.get(Ds).onMessageDeleted(e2), ii({ messageList: e2 });
- }
- translateText(e2) {
- const n2 = this._n + ".translateText", { sourceTextList: t2, sourceLanguage: s2, targetLanguage: i2 } = e2, o2 = new Ti("translateText");
- return o2.setMessage(`sourceLanguage:${s2} targetLanguage:` + i2), this.req({ P: ri.TRANSLATE_TEXT, data: { sourceTextList: t2, source: s2 || "auto", target: i2, from: this.getMyTinyID(), SDKAppID: this.getSDKAppID() } }).then((e3) => {
- var { error: e3, requestID: t3, translatedTextList: s3 } = e3.data, i3 = e3["code"];
- if (0 === i3)
- return o2.end(), Ce.i(n2 + " ok. requestID:" + t3), Zs({ translatedTextList: s3 });
- throw { ...e3, requestID: t3 };
- }).catch((e3) => (o2.setCode(e3.code).setMoreMessage(e3.requestID).end(), Ce.w(n2 + " failed. error:", e3), ni({ code: ei.TRANSLATE_TEXT_FAIL })));
- }
- convertVoiceToText(e2) {
- var { message: e2, language: t2 } = e2;
- let s2 = e2.payload.url;
- e2.from === this.getMyUserID() && "out" === e2.flow && (s2 = e2.payload.remoteAudioUrl);
- const i2 = /\.(wav|pcm|ogg-opus|speex|silk|mp3|m4a|aac|amr)/;
- if (!i2.test(s2))
- return ni({ code: ei.UNSUPPORTED_VOICE_FORMAT });
- e2 = i2.exec(s2)[1] || "mp3";
- let n2 = "16k_zh-PY";
- t2 ? "zh (cmn-Hans-CN)" === t2 ? n2 = "16k_zh" : "en-US" === t2 ? n2 = "16k_en" : "yue-Hant-HK" === t2 ? n2 = "16k_yue" : "ja-JP" === t2 && (n2 = "16k_ja") : n2 = "16k_zh-PY";
- const o2 = `serviceType:${n2} url:` + s2, r2 = this._n + ".convertVoiceToText", a2 = (Ce.i(r2 + " " + o2), new Ti("convertVoiceToText"));
- return a2.setMessage(o2), this.req({ P: ri.VOICE_TO_TEXT, data: { url: s2, language: n2, SDKAppID: this.getSDKAppID(), format: e2 } }).then((e3) => {
- var { error: e3, requestID: t3, result: s3 } = e3.data, i3 = e3["code"];
- if (0 === i3)
- return a2.end(), Ce.i(r2 + " ok. requestID:" + t3), Zs({ result: s3 });
- throw { ...e3, requestID: t3 };
- }).catch((e3) => (a2.setCode(e3.code).setMoreMessage(e3.requestID || "").end(), Ce.w(r2 + " failed. error:", e3), ni({ code: ei.VOICE_TO_TEXT_FAIL })));
- }
- modifyRemoteMessage(s2) {
- if (false === this.get(Vs).filterMessage(s2))
- return s2.hasRiskContent = true, ni({ code: ei.PROFANITY_FOUND, data: { message: s2 } });
- let e2 = null;
- var { conversationType: i2, to: n2 } = s2;
- if (i2 === t.CONV_C2C)
- e2 = this.get(ys);
- else if (i2 === t.CONV_GROUP) {
- if (!(e2 = this.get(vs)))
- return this._onNoModule();
- if (e2.isMessageFromOrToAVChatroom(n2))
- return ni({ code: ei.MSG_MODIFY_DISABLED_IN_AV, data: { message: s2 } });
- }
- const o2 = new Ti("modifyMessage"), r2 = (o2.setMessage("to:" + n2), this._n + ".modifyRemoteMessage");
- return e2.modifyRemoteMessage(s2).then((e3) => {
- o2.end(), Ce.i(r2 + " ok");
- e3 = this._onModifyRemoteMessageResp(s2, e3.data);
- return Zs({ message: e3 });
- }).catch((e3) => {
- var t2;
- return o2.setCode(e3.code).setMoreMessage(e3.message).end(), Ce.w(r2 + " failed. error:", e3), 20027 === e3.code ? (t2 = this._onModifyRemoteMessageResp(s2, e3.data), ni({ code: ei.MSG_MODIFY_CONFLICT, data: { message: t2 } })) : ni({ code: e3.code, message: e3.message, data: { message: s2 } });
- });
- }
- _onModifyRemoteMessageResp(e2, t2) {
- Ce.d(this._n + "._onModifyRemoteMessageResp options:", t2);
- var { conversationType: e2, from: s2, to: i2, random: n2, sequence: o2, time: r2 } = e2, { elements: t2, messageVersion: a2, cloudCustomData: c2 = "" } = t2;
- return this.get(Ds).onMessageModified({ conversationType: e2, from: s2, to: i2, time: r2, random: n2, sequence: o2, elements: t2, cloudCustomData: c2, messageVersion: a2 });
- }
- _generateUUID(e2) {
- const t2 = this.get(Rs);
- let s2 = `${t2.getSDKAppID()}-${t2.getUserID()}-` + function() {
- let t3 = "";
- for (let e3 = 32; 0 < e3; --e3)
- t3 += Je[Math.floor(Math.random() * Xe)];
- return t3;
- }();
- const i2 = e2.name || e2.value || e2.url || e2.tempFilePath, n2 = i2 && i2.slice(i2.lastIndexOf(".") + 1);
- return s2 = n2 ? s2 + "." + n2 : s2;
- }
- getMessageOption(e2) {
- return this._messageOptionsMap.get(e2);
- }
- _getNickAndAvatarByUserID(e2) {
- return this.get(Ts).getNickAndAvatarByUserID(e2);
- }
- _getNameCardByGroupID(e2) {
- if (e2.conversationType === t.CONV_GROUP) {
- const t2 = this.get(vs);
- if (t2)
- return t2.getMyNameCardByGroupID(e2.to);
- }
- return "";
- }
- reset() {
- Ce.l(this._n + ".reset"), this._messageOptionsMap.clear();
- }
-};
-var Hn = class extends oi {
- constructor(e2) {
- super(e2), this._n = "MsgExtModule", this.msgExtMap = /* @__PURE__ */ new Map(), this.globalSeqMap = /* @__PURE__ */ new Map(), this.getMsgExtsMap = /* @__PURE__ */ new Map();
- }
- onMsgExtNotify(t2) {
- const { messageInfo: s2, operateType: i2, operateResultList: n2, tinyID: _2, globalSequence: o2 } = t2.dataList, { clientTime: u2, random: h2 } = s2, r2 = _2 + `-${u2}-` + h2, a2 = [], c2 = [];
- Ce.l(`${this._n}.onMsgExtNotify messageID:${r2} operateType:${i2} globalSequence:` + o2), this._updateGlobalSeq(r2, o2);
- let l2 = false, d2 = false;
- n2.forEach((e2) => {
- const { extensions: t3 = [], clearSequence: s3 } = e2;
- 1 === i2 ? (l2 = true, t3.forEach((e3) => {
- a2.push({ key: e3.key, value: e3.value });
- }), this._updateLocalExt(r2, t3)) : 2 === i2 ? (d2 = true, t3.forEach((e3) => {
- c2.push(e3.key);
- }), this._updateLocalExt(r2, t3)) : 3 === i2 && (d2 = true, this._hasLocalExt(r2) && this._getLocalExt(r2).forEach((e3, t4) => {
- e3.seq <= s3 && !Oe(e3.value) && c2.push(t4);
- }), this._clearLocalExt(r2, s3));
- }), l2 && this.emitOEvt(e.MESSAGE_EXTENSIONS_UPDATED, { messageID: r2, extensions: a2 }), d2 && this.emitOEvt(e.MESSAGE_EXTENSIONS_DELETED, { messageID: r2, keyList: c2 });
- }
- setMessageExtensions(e2, t2) {
- var s2 = "setMessageExtensions";
- if (!this.canIUse(M.MSG_EXT))
- return this.noUse(s2);
- const i2 = this._n + "." + s2, { ID: n2, conversationID: o2, sequence: r2, time: d2 } = e2;
- let a2 = [...t2];
- 20 < t2.length && (a2 = t2.slice(0, 20), Ce.w(i2 + ". the length of extensions cannot exceed 20."));
- const c2 = `convID:${o2} messageID:${n2} sequence:${r2} time:${d2} count:` + a2.length, l2 = new Ti(s2);
- return l2.setMessage(c2), Ce.l(i2 + " " + c2), this._modifyMsgExts(e2, a2).then((e3) => {
- var { resultList: e3, successCount: t3, failureCount: s3 } = e3, t3 = `successCount:${t3} failCount:` + s3;
- return l2.setMoreMessage(t3).end(), Ce.l(i2 + " ok. " + t3), Zs({ extensions: e3 });
- }).catch((e3) => (l2.setError(e3).end(), Ce.e(i2 + " failed. error:", e3), ni(e3)));
- }
- getMessageExtensions(e2) {
- var t2 = "getMessageExtensions";
- if (!this.canIUse(M.MSG_EXT))
- return this.noUse(t2);
- const s2 = this._n + "." + t2, { ID: i2, conversationID: n2, sequence: o2, time: r2 } = e2, a2 = `convID:${n2} messageID:${i2} sequence:${o2} time:` + r2, c2 = new Ti(t2);
- c2.setMessage(a2), Ce.l(s2 + " " + a2);
- let l2 = void 0;
- return this.getMsgExtsMap.has(i2) && (l2 = this._getGlobalSeq(i2)), this._getMsgExts(e2, l2).then((e3) => (c2.end(), Ce.l(s2 + " ok. extCount:" + e3.length), $e(l2) && 0 < e3.length && this.getMsgExtsMap.set(i2, 1), Zs({ extensions: e3 }))).catch((e3) => (c2.setError(e3).end(), Ce.e(s2 + " failed. error:", e3), ni(e3)));
- }
- deleteMessageExtensions(e2, t2) {
- var s2 = "deleteMessageExtensions";
- if (!this.canIUse(M.MSG_EXT))
- return this.noUse(s2);
- const n2 = this._n + "." + s2, i2 = [];
- let o2 = 3;
- Oe(t2) || (o2 = 2, t2.forEach((e3) => {
- i2.push({ key: e3, value: "", seq: 0 });
- }));
- const { ID: r2, conversationID: a2, sequence: d2, time: _2 } = e2, c2 = `convID:${a2} messageID:${r2} sequence:${d2} time:${_2} operateType:` + o2, l2 = new Ti(s2);
- return l2.setMessage(c2), Ce.l(n2 + " " + c2), this._modifyMsgExts(e2, i2, o2).then((e3) => {
- var { resultList: e3, successCount: t3, failureCount: s3 } = e3;
- let i3 = "";
- return 2 === o2 && (i3 = `success count:${t3} fail count:` + s3), l2.setMoreMessage("" + i3).end(), Ce.l(n2 + " ok. " + i3), Zs({ extensions: e3 });
- }).catch((e3) => (l2.setError(e3).end(), Ce.e(n2 + " failed. error:", e3), ni(e3)));
- }
- _modifyMsgExts(i2, e2, s2 = 1) {
- var n2 = rt(i2.to) ? t.CONV_TOPIC : i2.conversationType;
- let o2 = void 0, r2 = (3 !== s2 && (o2 = this._getReqExts(i2, e2)), null);
- switch (n2) {
- case t.CONV_C2C:
- r2 = this.get(ys);
- break;
- case t.CONV_GROUP:
- r2 = this.get(vs);
- break;
- case t.CONV_TOPIC:
- r2 = this.get(Ss);
- break;
- default:
- return ni({ code: ei.NO_MODULE });
- }
- return r2.modifyMsgExts(i2, o2, s2).then((e3) => {
- let { extensions: t2, seq: s3 } = e3.data;
- const n3 = [];
- let o3 = 0, r3 = 0, a2 = [];
- return (t2 = Oe(t2) ? [] : t2).forEach((e4) => {
- var { errorCode: e4, extension: t3 } = e4, { key: t3, value: s4, seq: i3 } = t3;
- n3.push({ code: e4, key: t3, value: s4 }), 0 === e4 ? o3++ : r3++, a2.push({ key: t3, value: s4, seq: i3 });
- }), this._updateGlobalSeq(i2.ID, s3), 0 < a2.length && (this._updateLocalExt(i2.ID, a2), a2 = null), { resultList: n3, successCount: o3, failureCount: r3 };
- }).catch((e3) => ni(e3));
- }
- _getReqExts(e2, t2) {
- const i2 = [];
- if (this._hasLocalExt(e2.ID)) {
- const n2 = this._getLocalExt(e2.ID);
- return t2.forEach((e3) => {
- var { key: e3, value: t3 } = e3;
- let s2 = 0;
- n2.has(e3) && (s2 = n2.get(e3).seq), i2.push({ key: e3, value: t3, seq: s2 });
- }), i2;
- }
- return t2.forEach((e3) => {
- var { key: e3, value: t3 } = e3;
- i2.push({ key: e3, value: t3, seq: 0 });
- }), i2;
- }
- _getMsgExts(o2, e2) {
- const r2 = this._n + "._getMsgExts", { ID: a2, to: s2 } = o2;
- let i2 = null;
- switch (rt(s2) ? t.CONV_TOPIC : o2.conversationType) {
- case t.CONV_C2C:
- i2 = this.get(ys);
- break;
- case t.CONV_GROUP:
- i2 = this.get(vs);
- break;
- case t.CONV_TOPIC:
- i2 = this.get(Ss);
- break;
- default:
- return ni({ code: ei.NO_MODULE });
- }
- return i2.getMessageExtensions(o2, e2).then((e3) => {
- let { extensions: t2, completeFlag: s3, globalSequence: i3, clearSequence: n2 } = e3.data;
- if (t2 = Oe(t2) ? [] : t2, Ce.l(r2 + ` ok. completeFlag:${s3} globalSequence:${i3} clearSequence:${n2} count:` + t2.length), this._updateLocalExt(a2, t2), this._clearLocalExt(a2, n2), this._updateGlobalSeq(a2, i3), 1 === s3)
- return this._getLocalExtList(a2);
- {
- const e4 = t2.slice(-1)[0].seq + 1;
- return this._getMsgExts(o2, e4);
- }
- }).catch((e3) => ni(e3));
- }
- _hasLocalExt(e2) {
- return this.msgExtMap.has(e2);
- }
- _getLocalExt(e2) {
- return this.msgExtMap.get(e2);
- }
- _updateLocalExt(e2, t2) {
- this._hasLocalExt(e2) || this.msgExtMap.set(e2, /* @__PURE__ */ new Map());
- const i2 = this._getLocalExt(e2);
- t2.forEach((e3) => {
- var { key: e3, value: t3 = "", seq: s2 } = e3;
- i2.set(e3, { value: t3, seq: s2 });
- });
- }
- _clearLocalExt(e2, s2) {
- if (!(s2 <= 0) && this._hasLocalExt(e2)) {
- const i2 = this._getLocalExt(e2);
- i2.forEach((e3, t2) => {
- e3.seq <= s2 && i2.delete(t2);
- });
- }
- }
- _getLocalExtList(e2) {
- const s2 = [];
- return this._hasLocalExt(e2) && this._getLocalExt(e2).forEach((e3, t2) => {
- e3 = e3.value;
- Oe(e3) || s2.push({ key: t2, value: e3 });
- }), s2;
- }
- _getGlobalSeq(e2) {
- return this.globalSeqMap.get(e2);
- }
- _updateGlobalSeq(e2, t2) {
- this.globalSeqMap.set(e2, t2);
- }
- reset() {
- Ce.l(this._n + ".reset"), this.msgExtMap.clear(), this.globalSeqMap.clear(), this.getMsgExtsMap.clear();
- }
-};
-var Wn = class extends oi {
- constructor(e2) {
- super(e2), this._n = "MsgReactionModule", this._reactedByMyselfMap = /* @__PURE__ */ new Map(), this._reactionInfoMap = /* @__PURE__ */ new Map();
- }
- onReactionNotifyList(t2) {
- const { dataList: s2 = [] } = t2 || {};
- s2.forEach((t3) => {
- const { C2CMessageInfo: s3 = {}, groupMessageInfo: i2 = {}, reactionList: n2 = [] } = t3, { tinyID: o2, clientTime: r2, random: a2 } = { ...s3, ...i2 }, c2 = o2 + `-${r2}-` + a2, l2 = [];
- n2.forEach((e2) => {
- $e(e2.userIDList) && (e2.userIDList = [], e2.count = 0), l2.push(...e2.userIDList);
- }), Ce.l(this._n + `.onReactionNotifyList messageID:${c2} reactionList:` + n2.length), this._handleReactionSummary([{ messageID: c2, reactionList: n2 }], l2).then((t4) => {
- this.emitOEvt(e.MESSAGE_REACTIONS_UPDATED, { ...t4[0] });
- });
- });
- }
- onReactionNotify(t2) {
- var { C2CMessageInfo: t2 = {}, groupMessageInfo: s2 = {}, reactionID: i2, operateType: n2 } = t2.dataList || {}, { tinyID: t2, clientTime: s2, random: o2 } = { ...t2, ...s2 }, s2 = t2 + `-${s2}-` + o2, o2 = (Ce.l(this._n + `.onReactionNotify messageID:${s2} reactionID:${i2} operateType:` + n2), 1 === n2 ? this._addReactedByMyselfMap(s2, i2) : this._removeReactedByMyselfMap(s2, i2), s2 + "-" + i2);
- if (this._reactionInfoMap.has(o2)) {
- const t3 = this._reactionInfoMap.get(o2);
- t3.reactedByMyself = 1 === n2, this.emitOEvt(e.MESSAGE_REACTIONS_UPDATED, { messageID: s2, reactionList: [t3] });
- }
- }
- addMessageReaction(t2, s2) {
- var e2 = "addMessageReaction";
- if (!this.canIUse(M.MSG_REACTION))
- return this.noUse(e2);
- const i2 = this._n + "." + e2, { ID: n2, conversationID: o2 } = t2, r2 = `convID:${o2} messageID:${n2} reactionID:` + s2, a2 = new Ti(e2);
- a2.setMessage(r2), Ce.l(i2 + " " + r2);
- e2 = this._createReactionOperationPack(t2, s2, 1);
- return this._addReactedByMyselfMap(t2.ID, s2), this.req(e2).then(() => (a2.end(), Ce.l(i2 + " ok."), Zs())).catch((e3) => (this._removeReactedByMyselfMap(t2.ID, s2), a2.setError(e3).end(), Ce.e(i2 + " failed. error:", e3), ni(e3)));
- }
- removeMessageReaction(e2, t2) {
- var s2 = "removeMessageReaction";
- if (!this.canIUse(M.MSG_REACTION))
- return this.noUse(s2);
- const i2 = this._n + "." + s2, { ID: n2, conversationID: o2 } = e2, r2 = `convID:${o2} messageID:${n2} reactionID:` + t2, a2 = new Ti(s2);
- a2.setMessage(r2), Ce.l(i2 + " " + r2);
- s2 = this._createReactionOperationPack(e2, t2, 2);
- return this._removeReactedByMyselfMap(e2.ID, t2), this.req(s2).then(() => (a2.end(), Ce.l(i2 + " ok."), Zs())).catch((e3) => (a2.setError(e3).end(), Ce.e(i2 + " failed. error:", e3), ni(e3)));
- }
- getMessageReactions(e2) {
- var t2 = "getMessageReactions";
- if (!this.canIUse(M.MSG_REACTION))
- return this.noUse(t2);
- const s2 = this._n + "." + t2, { messageList: i2, maxUserCountPerReaction: n2 } = e2, o2 = i2[0]["conversationID"], r2 = `convID:${o2} maxUserCountPerReaction:${n2} msgCount:` + i2.length, a2 = new Ti(t2), c2 = (a2.setMessage(r2), Ce.l(s2 + " " + r2), /* @__PURE__ */ new Map()), l2 = this._createReactionSummaryPack({ ...e2, messageIDMap: c2 });
- return this.req(l2).then((e3) => {
- const { resultList: t3 = [] } = e3.data, o3 = [], r3 = [];
- return t3.forEach((e4) => {
- const { messageKey: t4, messageSequence: s3, reactionList: i3 = [] } = e4, n3 = $e(t4) ? c2.get(s3) : c2.get(t4);
- o3.push({ messageID: n3, reactionList: i3 }), i3.forEach((e5) => {
- r3.push(...e5.userIDList);
- });
- }), this._handleReactionSummary(o3, r3);
- }).then((e3) => (a2.end(), Ce.l(s2 + " ok."), c2.clear(), Zs({ resultList: e3 }))).catch((e3) => (a2.setError(e3).end(), Ce.e(s2 + " failed. error:", e3), ni(e3)));
- }
- getAllUserListOfMessageReaction(e2) {
- var t2 = "getAllUserListOfMessageReaction";
- if (!this.canIUse(M.MSG_REACTION))
- return this.noUse(t2);
- const s2 = this._n + "." + t2, { message: i2, reactionID: n2, nextSeq: o2, count: r2 } = e2, { ID: d2, conversationID: _2 } = i2, a2 = `convID:${_2} messageID:${d2} reactionID:${n2} nextSeq:${o2} count:` + r2, c2 = new Ti(t2), l2 = (c2.setMessage(a2), Ce.l(s2 + " " + a2), { userList: [], nextSeq: 0, isCompleted: false }), u2 = this._createReactionUserListPack(e2);
- return this.req(u2).then((e3) => {
- var { userIDList: e3 = [], nextSeq: t3 = 0 } = e3.data;
- return l2.nextSeq = t3, l2.isCompleted = 0 === t3, this.get(Ts).getUserNickAndAvatar(e3);
- }).then((e3) => (l2.userList = e3, c2.end(), Ce.l(s2 + " ok."), Zs(l2))).catch((e3) => (c2.setError(e3).end(), Ce.e(s2 + " failed. error:", e3), ni(e3)));
- }
- _createReactionOperationPack(s2, e2, i2) {
- let n2 = void 0;
- const o2 = { reactionID: e2, userIDList: [this.getMyUserID()] };
- if (s2.conversationType === t.CONV_C2C) {
- const t2 = this.get(ys);
- n2 = 1 === i2 ? ri.ADD_C2C_MSG_REACTION : ri.RM_C2C_MSG_REACTION, o2.from = s2.from, o2.to = s2.to, o2.messageKey = t2.getMessageKey(s2);
- }
- if (s2.conversationType === t.CONV_GROUP) {
- let e3 = void 0, t2 = s2.to;
- rt(s2.to) && (e3 = s2.to, t2 = Tt(e3)), n2 = 1 === i2 ? ri.ADD_GRP_MSG_REACTION : ri.RM_GRP_MSG_REACTION, o2.groupID = t2, o2.topicID = e3, o2.messageSequence = s2.sequence;
- }
- return { P: n2, data: o2 };
- }
- _createReactionSummaryPack(s2) {
- const { messageList: i2, maxUserCountPerReaction: n2 = 10, messageIDMap: o2 } = s2, r2 = i2[0];
- let a2 = void 0, c2 = void 0;
- if (r2.conversationType === t.CONV_C2C) {
- const s3 = this.get(ys), t2 = i2.map((e2) => {
- var t3 = s3.getMessageKey(e2);
- return o2.set(t3, e2.ID), t3;
- });
- a2 = ri.GET_C2C_MSG_REACTIONS, c2 = { from: r2.from, to: r2.to, messageKeyList: t2, count: n2 };
- }
- if (r2.conversationType === t.CONV_GROUP) {
- let e2 = void 0, t2 = r2.to;
- rt(r2.to) && (e2 = r2.to, t2 = Tt(e2));
- s2 = i2.map((e3) => (o2.set(e3.sequence, e3.ID), e3.sequence));
- a2 = ri.GET_GRP_MSG_REACTIONS, c2 = { groupID: t2, topicID: e2, messageSequenceList: s2, count: n2 };
- }
- return { P: a2, data: c2 };
- }
- _createReactionUserListPack(e2) {
- var { message: s2, reactionID: e2, nextSeq: i2 = 0, count: n2 = 100 } = e2;
- let o2 = void 0;
- const r2 = { reactionID: e2, nextSeq: i2, count: 100 < n2 ? 100 : n2 };
- if (s2.conversationType === t.CONV_C2C) {
- const e3 = this.get(ys);
- o2 = ri.GET_C2C_MSG_REACTION_USER_LIST, r2.from = s2.from, r2.to = s2.to, r2.messageKey = e3.getMessageKey(s2);
- }
- if (s2.conversationType === t.CONV_GROUP) {
- let e3 = void 0, t2 = s2.to;
- rt(s2.to) && (e3 = s2.to, t2 = Tt(e3)), o2 = ri.GET_GRP_MSG_REACTION_USER_LIST, r2.groupID = t2, r2.topicID = e3, r2.messageSequence = s2.sequence;
- }
- return { P: o2, data: r2 };
- }
- _handleReactionSummary(t2, e2) {
- return this.get(Ts).getUserNickAndAvatar(e2).then((c2) => {
- const e3 = [];
- return t2.forEach((r2) => {
- const a2 = [];
- r2.reactionList.forEach((e4) => {
- const { reactionID: t3, count: s2, userIDList: i2, reactedByMyself: n2 } = e4, o2 = [];
- i2.forEach((t4) => {
- c2.forEach((e5) => {
- t4 === e5.userID && o2.push(e5);
- });
- });
- e4 = { reactionID: t3, totalUserCount: s2, partialUserList: o2, reactedByMyself: this._computeReactedByMyself({ reactedByMyself: n2, messageID: r2.messageID, reactionID: t3 }) };
- if (a2.push(e4), $e(n2) && !this._reactedByMyselfMap.has(r2.messageID)) {
- const c3 = r2.messageID + "-" + t3;
- this._reactionInfoMap.set(c3, e4);
- }
- }), e3.push({ messageID: r2.messageID, reactionList: a2 });
- }), e3;
- });
- }
- _addReactedByMyselfMap(e2, t2) {
- this._reactedByMyselfMap.has(e2) || this._reactedByMyselfMap.set(e2, []);
- const s2 = this._reactedByMyselfMap.get(e2);
- -1 === s2.indexOf(t2) && s2.push(t2);
- }
- _removeReactedByMyselfMap(e2, t2) {
- if (this._reactedByMyselfMap.has(e2)) {
- const s2 = this._reactedByMyselfMap.get(e2), i2 = s2.indexOf(t2);
- -1 < i2 && s2.splice(i2, 1);
- }
- }
- _computeReactedByMyself({ reactedByMyself: e2, messageID: t2, reactionID: s2 }) {
- return $e(e2) ? !!this._reactedByMyselfMap.has(t2) && this._reactedByMyselfMap.get(t2).includes(s2) : 1 === e2;
- }
- reset() {
- Ce.l(this._n + ".reset"), this._reactedByMyselfMap.clear(), this._reactionInfoMap.clear();
- }
-};
-var Yn = class extends oi {
- constructor(e2) {
- super(e2), this._n = "ComboMsgModule";
- }
- sendMessage(e2) {
- const r2 = this._createMsg(e2);
- if (null === r2)
- return ni({ code: ei.MSG_SEND_FAIL });
- this._addSendMessageTotalCount(r2);
- const a2 = Date.now();
- return this.get(Ds).setMessageRandom(r2), this._sendComboMessage(r2, e2).then((e3) => {
- var { time: e3, sequence: s2, readReceiptCode: i2 } = e3.data;
- Ge(i2) && 0 !== i2 && (new Ti("sendMessageWithReceipt").setMessage(`from:${r2.from} to:${r2.to} sequence:${s2} readReceiptCode:` + i2).end(), Ce.w(this._n + `.sendMessage readReceiptCode:${i2} message:` + this.getErrMsg(i2))), this._addSendMessageSuccessCount(r2, a2);
- const n2 = this.get(Ds);
- r2.status = Nt, r2.time = e3, r2.conversationType === t.CONV_GROUP && (r2.sequence = s2), n2.appendToMessageList(r2);
- let o2 = r2;
- return true === r2._isExcludedFromLastMessage && (o2 = ""), n2.onMessageSent({ conversationOptionsList: [{ conversationID: r2.conversationID, unreadCount: 0, type: r2.conversationType, subType: r2.conversationSubType, lastMessage: o2 }] }), Zs({ message: r2 });
- }).catch((e3) => this._onSendMessageFailed(r2, e3));
- }
- _sendComboMessage(e2, s2) {
- const i2 = this._m.get(Gs);
- let n2 = "";
- return e2.conversationType === t.CONV_C2C && (n2 = f.NAME.OPEN_IM + "." + ri.SEND_C2C_MSG), e2.conversationType === t.CONV_GROUP && (n2 = f.NAME.GRP + "." + ri.SEND_GRP_MSG), i2.sendComboMessage({ servcmd: n2, data: s2 });
- }
- _createMsg(s2) {
- var i2 = this._n + "._createMsg";
- let n2 = null;
- try {
- const a2 = this.getMyUserID(), c2 = {};
- if (c2.senderTinyID = this.getMyTinyID(), c2.currentUser = a2, c2.from = s2.From_Account || a2, s2.GroupId ? (c2.conversationID = "" + t.CONV_GROUP + s2.GroupId, c2.conversationType = t.CONV_GROUP, c2.to = s2.GroupId) : s2.To_Account && (c2.conversationID = "" + t.CONV_C2C + s2.To_Account, c2.conversationType = t.CONV_C2C, c2.to = s2.To_Account), c2.time = s2.MsgTimeStamp || 0, c2.random = s2.Random || s2.MsgRandom || 0, c2.priority = s2.MsgPriority, ke(s2.CloudCustomData) && 0 < s2.CloudCustomData.length && (c2.cloudCustomData = s2.CloudCustomData), Fe(s2.SendMsgControl) && (c2.messageControlInfo = {}, s2.SendMsgControl.includes("NoUnread") && (c2.messageControlInfo.excludedFromUnreadCount = 1), s2.SendMsgControl.includes("NoLastMsg") && (c2.messageControlInfo.excludedFromLastMessage = 1)), c2.conversationType === t.CONV_GROUP && Fe(s2.To_Account) && 0 < s2.To_Account.length) {
- let e3 = s2.To_Account;
- 50 < s2.To_Account.length && (e3 = s2.To_Account.slice(0, 50), Ce.w(i2 + " To_Account must be less than or equal to 50.")), c2.receiverList = [...e3], s2.To_Account = [...e3];
- }
- 1 !== s2.IsNeedReadReceipt && 1 !== s2.NeedReadReceipt || (c2.needReadReceipt = true), 1 === s2.SupportMessageExtension && (c2.isSupportExtension = true), (n2 = new xi(c2)).status = Ot, s2.MsgClientTime = n2.clientTime, n2.conversationType === t.CONV_C2C && (s2.MsgSeq = n2.sequence);
- var o2, r2 = s2.MsgBody.length;
- for (let e3 = 0; e3 < r2; e3++)
- "TIMTextElem" === (o2 = s2.MsgBody[e3]).MsgType ? n2.setTextElement(o2.MsgContent.Text) : "TIMCustomElem" === o2.MsgType ? n2.setCustomElement({ data: o2.MsgContent.Data || "", description: o2.MsgContent.Desc || "", extension: o2.MsgContent.Ext || "" }) : "TIMFaceElem" === o2.MsgType && n2.setFaceElement({ index: o2.MsgContent.Index, data: o2.MsgContent.Data });
- var e2 = n2.getElements();
- n2.payload = e2[0].content, n2.type = e2[0].type;
- } catch (e3) {
- n2 = null, Ce.e(i2 + " failed. error:", e3);
- }
- return n2;
- }
- _onSendMessageFailed(e2, t2) {
- e2.status = Pt, this.get(Ds).deleteMessageRandom(e2), this._addSendMessageFailCountOnUser(e2, t2);
- const s2 = new Ti("sendMessage"), i2 = `head.seq:${t2.data.headSeq} type:${e2.type} from:${e2.from} to:` + e2.to;
- return s2.setMessage(i2).setError(t2).end(), Ce.e(this._n + `._onSendMessageFailed ${i2} error:`, t2), ni(new Qs({ code: t2 && t2.code ? t2.code : ei.MSG_SEND_FAIL, message: t2 && t2.message ? t2.message : void 0, data: { message: e2 } }));
- }
- _getSendMessageSpecifiedKey(e2) {
- if (e2.conversationType === t.CONV_C2C)
- return li;
- if (e2.conversationType === t.CONV_GROUP) {
- const t2 = this.get(vs).getLocalGroupProfile(e2.to);
- if (t2)
- return e2 = t2.type, nt(e2) ? di : ui;
- }
- }
- _addSendMessageTotalCount(e2) {
- e2 = this._getSendMessageSpecifiedKey(e2);
- e2 && this.get($s).addTotalCount(e2);
- }
- _addSendMessageSuccessCount(e2, t2) {
- var s2 = this._getSendMessageSpecifiedKey(e2);
- if (s2) {
- const e3 = this.get($s);
- e3.addSuccessCount(s2), e3.addCost(s2, Dt(t2, false));
- }
- }
- _addSendMessageFailCountOnUser(e2, t2) {
- const { code: s2 = -1 } = t2, i2 = this.get($s), n2 = this._getSendMessageSpecifiedKey(e2);
- Bn(s2) && n2 && i2.addFailedCountOfUserSide(n2);
- }
-};
-var zn = class extends oi {
- constructor(e2) {
- super(e2), this._n = "PluginModule", this.plugins = {};
- }
- registerPlugin(t2) {
- let s2 = "0";
- Object.keys(t2).forEach((e2) => {
- this.plugins[e2] = t2[e2], "tim-upload-plugin" === e2 && "function" == typeof t2[e2].getVersion && (s2 = t2[e2].getVersion());
- }), new Ti("registerPlugin").setMessage("" + Object.keys(t2)).setMoreMessage("version:" + s2).end();
- }
- getPlugin(e2) {
- return this.plugins[e2];
- }
- reset() {
- }
-};
-var jn = class extends oi {
- constructor(e2) {
- super(e2), this._n = "SyncUnreadMsgModule", this._cookie = "", this._onlineSyncFlag = false, this.getIEmitInst().on(Yi.A2KEY_AND_TINYID_UPDATED, this._init, this);
- }
- _init() {
- this._startSync({ cookie: this._cookie, syncFlag: 0, isOnlineSync: 0 });
- }
- _startSync(e2) {
- const { cookie: t2, syncFlag: s2, isOnlineSync: i2 } = e2, n2 = this._n + "._startSync", o2 = (Ce.l(n2 + " options:", e2), new Ti("syncUnread"));
- o2.setMessage(JSON.stringify(e2)), this.req({ P: ri.SYNC_UNREAD_MSG, data: { cookie: t2, syncFlag: s2, isOnlineSync: i2 } }).then((e3) => {
- var { cookie: t3, syncFlag: s3 } = e3.data, i3 = `$cookie:${t3} syncFlag:` + s3;
- Ce.l(n2 + " ok. " + i3), this._cookie = t3, o2.setMoreMessage(i3).end(), Oe(t3) || (0 === s3 || 1 === s3 ? (this._dispatch({ ...e3.data, isSyncingEnded: false }), this._startSync({ cookie: t3, syncFlag: s3, isOnlineSync: 0 })) : 2 === s3 && this._dispatch({ ...e3.data, isSyncingEnded: true }));
- }).catch((e3) => {
- o2.setError(e3).end(), Ce.e(n2 + " failed. error:", e3);
- });
- }
- _dispatch(e2) {
- e2.eventArray && this.get(Gs).onMessage({ head: {}, body: { eventArray: e2.eventArray, isInstantMessage: this._onlineSyncFlag, isSyncingEnded: e2.isSyncingEnded } }), this.get(ys).onNewMessage({ dataList: e2.messageList, isInstantMessage: !!e2.isSyncingEnded && this._onlineSyncFlag, C2CRemainingUnreadList: e2.C2CRemainingUnreadList, C2CPairUnreadList: e2.C2CPairUnreadList, isSyncingEnded: e2.isSyncingEnded });
- }
- syncOnNeed() {
- Ce.l(this._n + ".syncOnNeed cookie:" + this._cookie), this._onlineSyncFlag = true, this._startSync({ cookie: this._cookie, syncFlag: 0, isOnlineSync: 1 });
- }
- syncOnReconnected() {
- Ce.l(this._n + ".syncOnReconnected cookie:" + this._cookie), this._onlineSyncFlag = true, this._startSync({ cookie: this._cookie, syncFlag: 0, isOnlineSync: 0 });
- }
- reset() {
- Ce.l(this._n + ".reset"), this._onlineSyncFlag = false, this._cookie = "";
- }
-};
-var Jn = { req: { toAccount: "To_Account", fromAccount: "From_Account", to: "To_Account", from: "From_Account", groupID: "GroupId", groupAtUserID: "GroupAt_Account", extension: "Ext", data: "Data", description: "Desc", elements: "MsgBody", sizeType: "Type", downloadFlag: "Download_Flag", thumbUUID: "ThumbUUID", videoUUID: "VideoUUID", remoteAudioUrl: "Url", remoteVideoUrl: "VideoUrl", videoUrl: "", imageUrl: "URL", fileUrl: "Url", uuid: "UUID", priority: "MsgPriority", receiverUserID: "To_Account", receiverGroupID: "GroupId", messageSender: "SenderId", messageReceiver: "ReceiverId", nick: "From_AccountNick", avatar: "From_AccountHeadurl", messageNumber: "MsgNum", pbDownloadKey: "PbMsgKey", downloadKey: "JsonMsgKey", applicationType: "PendencyType", userIDList: "To_Account", groupNameList: "GroupName", userID: "To_Account", groupAttributeList: "GroupAttr", mainSequence: "AttrMainSeq", avChatRoomKey: "BytesKey", attributeControl: "AttrControl", sequence: "seq", messageControlInfo: "SendMsgControl", updateSequence: "UpdateSeq", clientTime: "MsgClientTime", sequenceList: "MsgSeqList", topicID: "TopicId", customData: "CustomString", isSupportTopic: "SupportTopic", isWebUniapp: "is_web_uniapp", isSupportExtension: "SupportMessageExtension", messageSequence: "MsgSeq", messageKey: "MsgKey", startSequence: "startSeq", simplifiedMessage: "DownsizeFlag", isRelayMessage: "IsRelayMsg", reactionID: "Reaction", messageSequenceList: "MsgSeqList", messageKeyList: "MsgKeyList", cmConfigID: "CustomModerationConfigID" }, res: { MsgPriority: "priority", ThumbUUID: "thumbUUID", VideoUUID: "videoUUID", Download_Flag: "downloadFlag", GroupId: "groupID", Member_Account: "userID", MsgList: "messageList", SyncFlag: "syncFlag", To_Account: "to", From_Account: "from", MsgSeq: "sequence", MsgRandom: "random", MsgTime: "time", MsgTimeStamp: "time", MsgContent: "content", MsgBody: "elements", From_AccountNick: "nick", From_AccountHeadurl: "avatar", GroupWithdrawInfoArray: "revokedInfos", GroupReadInfoArray: "groupMessageReadNotice", LastReadMsgSeq: "lastMessageSeq", WithdrawC2cMsgNotify: "c2cMessageRevokedNotify", C2cWithdrawInfoArray: "revokedInfos", C2cReadedReceipt: "c2cMessageReadReceipt", ReadC2cMsgNotify: "c2cMessageReadNotice", LastReadTime: "peerReadTime", MsgRand: "random", MsgType: "type", MsgShow: "messageShow", NextMsgSeq: "nextMessageSeq", FaceUrl: "avatar", ProfileDataMod: "profileModify", Profile_Account: "userID", ValueBytes: "value", ValueNum: "value", NoticeSeq: "noticeSequence", NotifySeq: "notifySequence", MsgFrom_AccountExtraInfo: "messageFromAccountExtraInformation", Operator_Account: "operatorID", OpType: "operationType", ReportType: "operationType", UserId: "userID", User_Account: "userID", List_Account: "userIDList", MsgOperatorMemberExtraInfo: "operatorInfo", MsgMemberExtraInfo: "memberInfoList", ImageUrl: "avatar", NickName: "nick", MsgGroupNewInfo: "newGroupProfile", MsgAppDefinedData: "groupCustomField", Owner_Account: "ownerID", GroupFaceUrl: "avatar", GroupIntroduction: "introduction", GroupNotification: "notification", GroupApplyJoinOption: "joinOption", MsgKey: "messageKey", GroupInfo: "groupProfile", ShutupTime: "muteTime", Desc: "description", Ext: "extension", GroupAt_Account: "groupAtUserID", MsgNum: "messageNumber", PbMsgKey: "pbDownloadKey", JsonMsgKey: "downloadKey", MsgModifiedFlag: "isModified", PendencyItem: "applicationItem", PendencyType: "applicationType", AddTime: "time", AddSource: "source", AddWording: "wording", ProfileImImage: "avatar", PendencyAdd: "friendApplicationAdded", FrienPencydDel_Account: "friendApplicationDeletedUserIDList", Peer_Account: "userID", GroupAttr: "groupAttributeList", GroupAttrAry: "groupAttributeList", AttrMainSeq: "mainSequence", seq: "sequence", GroupAttrOption: "groupAttributeOption", BytesChangedKeys: "changedKeyList", GroupAttrInfo: "groupAttributeList", GroupAttrSeq: "mainSequence", PushChangedAttrValFlag: "isWithChangedAttributeInfo", SubKeySeq: "sequence", Val: "value", MsgGroupFromCardName: "senderNameCard", MsgGroupFromNickName: "senderNick", C2cNick: "peerNick", C2cImage: "peerAvatar", SendMsgControl: "messageControlInfo", NoLastMsg: "excludedFromLastMessage", NoUnread: "excludedFromUnreadCount", UpdateSeq: "updateSequence", MuteNotifications: "muteFlag", MsgClientTime: "clientTime", TinyId: "tinyID", GroupMsgReceiptList: "readReceiptList", ReadNum: "readCount", UnreadNum: "unreadCount", TopicId: "topicID", MillionGroupFlag: "communityType", SupportTopic: "isSupportTopic", MsgTopicNewInfo: "newTopicInfo", ShutupAll: "muteAllMembers", CustomString: "customData", TopicFaceUrl: "avatar", TopicIntroduction: "introduction", TopicNotification: "notification", TopicIdArray: "topicIDList", MsgVersion: "messageVersion", C2cMsgModNotifys: "c2cMessageModified", GroupMsgModNotifys: "groupMessageModified", ApplyJoinOption: "joinOption", MsgFlag: "messageRemindType", AtInfoList: "groupAtInfoList", AtFlagList: "groupAtType", AtMsgSeq: "sequence", BanDuration: "duration", BanDescription: "reason", NotVisible: "invisible", BytesTag: "tag", BytesValue: "value", RptBytesValue: "value", LatestSeq: "globalSequence", ClearSeq: "clearSequence", SupportMessageExtension: "isSupportExtension", ExtensionList: "extensions", GroupCounter: "counterList", Revoker_Account: "revoker", MsgExtensionNotify: "messageExtensionNotify", ExtensionC2cMsgInfo: "messageInfo", ExtensionGroupMsgInfo: "messageInfo", MsgOptType: "operateType", SetKVInfo: "operateResultList", DeleteKVInfo: "operateResultList", ClearKVInfo: "operateResultList", MsgKeyValue: "extensions", ClearMsgSeq: "clearSequence", MsgLastSeq: "globalSequence", InviteJoinOption: "inviteOption", MemberList_Account: "inviteeList", MsgMemberExtraInfoList: "inviteeInfoList", E: "event", GInf: "groupProfile", MCT: "clientTime", MR: "random", MP: "priority", MTS: "time", GId: "groupID", MS: "sequence", CCD: "cloudCustomData", F_Account: "from", F_Hd: "avatar", F_NN: "nick", GN: "groupName", GT: "groupType", IsSys: "isSystemMessage", OpInf: "operatorInfo", Img: "avatar", NN: "nick", OnlineInf: "onlineMemberInfo", ET: "expireTime", Num: "onlineMemberNum", Opt: "operationType", O_Account: "operatorID", RT: "operationType", UDF: "userDefinedField", L_Account: "userIDList", IsPlaceMsg: "isPlaceMessage", MsgCheckResult: "checkResult", Results: "resultList", Reaction: "reactionID", Reaction_Account: "userIDList", MsgReactionNotifyList: "messageReactionNotifyList", MsgReactionNotify: "messageReactionNotify", MsgReactionSummary: "reactionList", C2CMsgInfo: "C2CMessageInfo", GroupMsgInfo: "groupMessageInfo", int32_err_code: "errorCode", str_err_msg: "errorMsg", MsgDropReason: "messageDropReason", ReactedByMe: "reactedByMyself", Level: "messageRemindType", PeerReadTime: "timestamp", NoUnreadSeqList: "excludedUnreadSequenceList", NewMsg: "topicLatestMessage" }, ignoreKeyWord: ["C2C", "ID", "USP"] };
-function Xn(e2, t2) {
- if ("string" != typeof e2 && !Array.isArray(e2))
- throw new TypeError("Expected the input to be `string | string[]`");
- return t2 = Object.assign({ pascalCase: false }, t2), 0 === (e2 = Array.isArray(e2) ? e2.map((e3) => e3.trim()).filter((e3) => e3.length).join("-") : e2.trim()).length ? "" : 1 === e2.length ? t2.pascalCase ? e2.toUpperCase() : e2.toLowerCase() : (e2 = e2 = (e2 = e2 !== e2.toLowerCase() ? Zn(e2) : e2).replace(/^[_.\- ]+/, "").toLowerCase().replace(/[_.\- ]+(\w|$)/g, (e3, t3) => t3.toUpperCase()).replace(/\d+(\w|$)/g, (e3) => e3.toUpperCase()), t2.pascalCase ? e2.charAt(0).toUpperCase() + e2.slice(1) : e2);
-}
-var Zn = (t2) => {
- let s2 = false, i2 = false, n2 = false;
- for (let e2 = 0; e2 < t2.length; e2++) {
- const o2 = t2[e2];
- s2 && /[a-zA-Z]/.test(o2) && o2.toUpperCase() === o2 ? (t2 = t2.slice(0, e2) + "-" + t2.slice(e2), s2 = false, n2 = i2, i2 = true, e2++) : i2 && n2 && /[a-zA-Z]/.test(o2) && o2.toLowerCase() === o2 ? (t2 = t2.slice(0, e2 - 1) + "-" + t2.slice(e2 - 1), n2 = i2, i2 = false, s2 = true) : (s2 = o2.toLowerCase() === o2 && o2.toUpperCase() !== o2, n2 = i2, i2 = o2.toUpperCase() === o2 && o2.toLowerCase() !== o2);
- }
- return t2;
-};
-function Qn(e2, t2) {
- let i2 = 0;
- return function s2(e3, n2) {
- return 100 < ++i2 ? (i2--, e3) : Fe(e3) ? (t3 = e3.map((e4) => we(e4) ? s2(e4, n2) : e4), i2--, t3) : we(e3) ? (t3 = ut(t3 = function(s3) {
- const i3 = /* @__PURE__ */ Object.create(null);
- return Object.keys(s3).forEach((e4) => {
- var t4 = ((t5) => {
- if (!He(t5))
- return false;
- if (t5 !== Xn(t5))
- for (let e6 = 0; e6 < Jn.ignoreKeyWord.length && !t5.includes(Jn.ignoreKeyWord[e6]); e6++)
- ;
- var e5, s4;
- if ($e(n2[t5]))
- return s4 = t5, s4[0].toUpperCase() + Xn(s4).slice(1);
- else
- return n2[t5];
- })((s3[e4], e4));
- t4 && (i3[t4] = s3[e4]);
- }), i3;
- }(e3), (e4, t4) => Fe(e4) || we(e4) ? s2(e4, n2) : e4), i2--, t3) : void 0;
- var t3;
- }(e2, t2);
-}
-function eo(e2, n2) {
- return Fe(e2) ? e2.map((e3) => we(e3) ? eo(e3, n2) : e3) : we(e2) ? ut(function(s2) {
- const i2 = {};
- return Object.keys(s2).forEach((e3) => {
- var t2;
- i2[s2[e3], t2 = e3, $e(n2[t2]) ? Xn(t2) : n2[t2]] = s2[e3];
- }), i2;
- }(e2), (e3) => Fe(e3) || we(e3) ? eo(e3, n2) : e3) : void 0;
-}
-var to = String.fromCharCode;
-var so = function(e2) {
- let t2 = 0 | e2.charCodeAt(0);
- if (55296 <= t2)
- if (t2 < 56320) {
- e2 = 0 | e2.charCodeAt(1);
- if (56320 <= e2 && e2 <= 57343) {
- if (65535 < (t2 = (t2 << 10) + e2 - 56613888 | 0))
- return to(240 | t2 >>> 18, 128 | t2 >>> 12 & 63, 128 | t2 >>> 6 & 63, 128 | 63 & t2);
- } else
- t2 = 65533;
- } else
- t2 <= 57343 && (t2 = 65533);
- return t2 <= 2047 ? to(192 | t2 >>> 6, 128 | 63 & t2) : to(224 | t2 >>> 12, 128 | t2 >>> 6 & 63, 128 | 63 & t2);
-};
-var io = function(e2) {
- const t2 = void 0 === e2 ? "" : ("" + e2).replace(/[\x80-\uD7ff\uDC00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g, so), s2 = 0 | t2.length, i2 = new Uint8Array(s2);
- let n2 = 0;
- for (; n2 < s2; n2 = n2 + 1 | 0)
- i2[n2] = 0 | t2.charCodeAt(n2);
- return i2;
-};
-var no = class {
- constructor(e2) {
- var t2 = (this._handler = e2).getURL();
- if (this._socket = null, this._workerSocket = null, this._id = je(), this._handler.getIsWorkerEnabled()) {
- const e3 = URL.createObjectURL(new Blob([';let _socket = null;onmessage = function(event) { if (event.data.cmd === "start") { const url = event.data.url; _socket = new WebSocket(url); _socket.binaryType = "arraybuffer"; _socket.onopen = function() { postMessage({ callback: "onOpen", extensions: _socket.extensions }); }; _socket.onclose = function(e) { postMessage({ callback: "onOpen", e: { code: e.code, reason: e.reason } }); }; _socket.onmessage = function(e) { postMessage({ callback: "onMessage", data: e.data }); }; _socket.onerror = function(e) { postMessage({ callback: "onError", e: { isTrusted: "true" } }); }; } else if (event.data.cmd === "sendMessage") { if (_socket !== null) { _socket.send(event.data.data); } } else if (event.data.cmd === "stop") { if (_socket !== null) { _socket.close(event.data.code); _socket = null; } }};'], { type: "application/javascript; charset=utf-8" })), n2 = (this._workerSocket = new Worker(e3), this);
- this._workerSocket.onmessage = function(e4) {
- var { callback: t3, e: s2, extensions: i2 } = e4.data;
- "onOpen" === t3 ? n2._onOpen(i2) : "onClose" === t3 ? n2._onClose(s2) : "onError" === t3 ? n2._onError(s2) : "onMessage" === t3 && n2._onMessage(e4.data);
- }, this._workerSocket.postMessage({ cmd: "start", id: this._id, url: t2 });
- } else
- k ? O ? ($.connectSocket({ url: t2, header: { "content-type": "application/json" } }), $.onSocketClose(this._onClose.bind(this)), $.onSocketOpen(this._onOpen.bind(this)), $.onSocketMessage(this._onMessage.bind(this)), $.onSocketError(this._onError.bind(this))) : (this._socket = $.connectSocket({ url: t2, header: { "content-type": "application/json" }, complete: () => {
- } }), this._socket.onClose(this._onClose.bind(this)), this._socket.onOpen(this._onOpen.bind(this)), this._socket.onMessage(this._onMessage.bind(this)), this._socket.onError(this._onError.bind(this))) : (this._socket = new WebSocket(t2), this._socket.binaryType = "arraybuffer", this._socket.onopen = this._onOpen.bind(this, this._socket.extensions), this._socket.onmessage = this._onMessage.bind(this), this._socket.onclose = this._onClose.bind(this), this._socket.onerror = this._onError.bind(this));
- this._canIUseBinaryFrame = e2.canIUseBinaryFrame();
- }
- getID() {
- return this._id;
- }
- _onOpen(e2) {
- this._handler.onOpen({ id: this._id, res: JSON.stringify(e2) });
- }
- _onClose(e2) {
- this._handler.onClose({ id: this._id, e: e2 });
- }
- _onMessage(e2) {
- e2 = this._canIUseBinaryFrame ? this._isAppCompressedData(e2.data) ? this._handler.inflate(e2.data) : function(e3) {
- var n2 = new Uint8Array(e3);
- let o2 = "", r2 = 0;
- for (var a2 = n2.length; r2 < a2; ) {
- let t2 = n2[r2], s2 = 0, i2 = 0;
- if (t2 <= 127 ? (s2 = 0, i2 = 255 & t2) : t2 <= 223 ? (s2 = 1, i2 = 31 & t2) : t2 <= 239 ? (s2 = 2, i2 = 15 & t2) : t2 <= 244 && (s2 = 3, i2 = 7 & t2), 0 < a2 - r2 - s2) {
- let e4 = 0;
- for (; e4 < s2; )
- t2 = n2[r2 + e4 + 1], i2 = i2 << 6 | 63 & t2, e4 += 1;
- } else
- i2 = 65533, s2 = a2 - r2;
- o2 += String.fromCodePoint(i2), r2 += s2 + 1;
- }
- return o2;
- }(e2.data) : e2.data;
- this._handler.onMessage({ data: e2 });
- }
- _isAppCompressedData(e2) {
- e2 = new Uint8Array(e2);
- return 67 === e2[0] && 79 === e2[1] && 77 === e2[2] && 80 === e2[3];
- }
- _onError(e2) {
- this._handler.onError({ id: this._id, e: e2 });
- }
- setIsWorkerEnabled(e2) {
- this._isWorkerEnabled = true;
- }
- close(e2) {
- if (this._workerSocket && (this._workerSocket.postMessage({ cmd: "stop", code: e2 }), this._workerSocket.terminate(), this._workerSocket = null), O)
- return $.offSocketClose(), $.offSocketMessage(), $.offSocketOpen(), $.offSocketError(), void $.closeSocket();
- this._socket && (k ? (this._socket.onClose(() => {
- }), this._socket.onOpen(() => {
- }), this._socket.onMessage(() => {
- }), this._socket.onError(() => {
- })) : (this._socket.onopen = null, this._socket.onmessage = null, this._socket.onclose = null, this._socket.onerror = null), A ? this._socket.close({ code: e2 }) : this._socket.close(e2), this._socket = null);
- }
- send(e2) {
- this._workerSocket ? this._workerSocket.postMessage({ cmd: "sendMessage", data: this._canIUseBinaryFrame ? io(e2.data).buffer : e2.data }) : O ? $.sendSocketMessage({ data: e2.data, fail: () => {
- e2.fail && e2.requestID && e2.fail(e2.requestID);
- } }) : this._socket && (k ? this._socket.send({ data: this._canIUseBinaryFrame ? io(e2.data).buffer : e2.data, fail: () => {
- e2.fail && e2.requestID && e2.fail(e2.requestID);
- } }) : this._socket.send(this._canIUseBinaryFrame ? io(e2.data) : e2.data));
- }
-};
-var oo = 4e3;
-var ro = 4001;
-var ao = "connected";
-var co = "connecting";
-var lo = "disconnected";
-var uo = class {
- constructor(e2) {
- this._chM = e2, this._n = "SocketHandler", this._promiseMap = /* @__PURE__ */ new Map(), this._readyState = lo, this._simpleRequestMap = /* @__PURE__ */ new Map(), this.MAX_SIZE = 100, this._startSequence = je(), this._startTs = 0, this._reConnectFlag = false, this._nextPingTs = 0, this._reConnectCount = 0, this.MAX_RECONNECT_COUNT = 3, this._socketID = -1, this._random = 0, this._socket = null, this._url = "", this._onOpenTs = 0, this._canIUseBinaryFrame = true, this._isWorkerEnabled = true, this._currentSite = c, this._setWebsocketHost(), this._initConnection();
- }
- _setWebsocketHost() {
- const e2 = this._chM.get(Rs);
- this._currentSite = c, this._chM.isOversea() && (this._currentSite = l), e2.isSingaporeSite() ? this._currentSite = u : e2.isKoreaSite() ? this._currentSite = d : e2.isGermanySite() ? this._currentSite = _ : e2.isIndiaSite() ? this._currentSite = h : e2.isJapanSite() ? this._currentSite = p : e2.isUSASite() ? this._currentSite = g : e2.isIndonesiaSite() && (this._currentSite = m), f.HOST.setCurrent(this._currentSite);
- }
- _initConnection() {
- var e2 = this._chM.get(Rs).getSDKAppID() + "", t2 = this._chM.get(Rs).isIndependentDomainDisabled();
- $e(f.HOST.CURRENT.BACKUP) ? this._url = f.HOST.CURRENT.DEFAULT : "" === this._url ? this._url = t2 ? f.HOST.CURRENT.DEFAULT : f.HOST.CURRENT.DEFAULT0.replace("*", e2) : -1 < this._url.indexOf(e2) ? this._url = f.HOST.CURRENT.DEFAULT : this._url === f.HOST.CURRENT.DEFAULT ? this._url = f.HOST.CURRENT.IPV6 || f.HOST.CURRENT.BACKUP : this._url === f.HOST.CURRENT.IPV6 ? this._url = f.HOST.CURRENT.BACKUP : this._url === f.HOST.CURRENT.BACKUP ? this._url = this._canIUseAnyCast() ? f.HOST.CURRENT.ANYCAST : f.HOST.CURRENT.DEFAULT : this._url === f.HOST.CURRENT.ANYCAST && (f.HOST.CURRENT.ANYCAST = "", this._url = f.HOST.CURRENT.DEFAULT);
- const s2 = this._chM.get(Rs), i2 = s2.getProxyServer();
- Oe(i2) || (this._url = i2), s2.isTestEnv() && (this._url = n.TEST[this._currentSite].DEFAULT), this._connect(), this._nextPingTs = 0;
- }
- _canIUseAnyCast() {
- return F && f.HOST.CURRENT.ANYCAST;
- }
- onCheckTimer(e2) {
- e2 % 1 == 0 && (this._checkPromiseMap(), this._checkNativeAppWS());
- }
- _checkPromiseMap() {
- 0 !== this._promiseMap.size && this._promiseMap.forEach((e2, t2) => {
- const { reject: s2, timestamp: i2, headSeq: n2 } = e2;
- let o2 = 15e3;
- -1 !== t2.indexOf(ri.LOGIN) ? o2 = 9e4 : -1 !== t2.indexOf(ri.PING) && (o2 = 3e3), Date.now() - i2 >= o2 && (Ce.l(this._n + "._checkPromiseMap request timeout, delete requestID:" + t2), this._promiseMap.delete(t2), s2(new Qs({ code: ei.NETWORK_TIMEOUT, data: { headSeq: n2 } })), this._chM.onRequestTimeout());
- });
- }
- _checkNativeAppWS() {
- P && !this.isConnected() && this._reConnect();
- }
- onOpen(e2) {
- var t2, s2;
- this._readyState !== lo && (this._onOpenTs = Date.now(), { id: e2, res: t2 } = e2, this._socketID = e2, s2 = Dt(this._startTs, false), e2 = `socketID:${e2} res:` + t2, Ce.l(this._n + `._onOpen cost:${s2} ms. ` + e2), new Ti("wsOnOpen").setMessage(s2).setCostTime(s2).setMoreMessage(e2).end(), this._readyState = ao, this._reConnectCount = 0, this._resend(), true === this._reConnectFlag && (this._chM.onReconnected(), this._reConnectFlag = false), this._chM.onOpen());
- }
- onClose(e2) {
- const t2 = new Ti("wsOnClose"), { id: s2, e: i2 } = e2, n2 = `sourceSocketID:${s2} currentSocketID:${this._socketID} code:${i2.code} reason:` + i2.reason;
- let o2 = 0;
- 0 !== this._onOpenTs && (o2 = Date.now() - this._onOpenTs), t2.setMessage(o2).setCostTime(o2).setMoreMessage(n2).setCode(i2.code).end(true), Ce.l(this._n + `._onClose ${n2} onlineTime:` + o2), s2 === this._socketID && (this._readyState = lo, o2 < 1e3 ? this._chM.onReconnectFailed() : this._chM.onClose());
- }
- onError(e2) {
- var { id: e2, e: t2 } = e2, s2 = `sourceSocketID:${e2} currentSocketID:` + this._socketID;
- new Ti("wsOnError").setMessage(t2.errMsg || JSON.stringify(t2, ["message", "code"])).setMoreMessage(s2).setLevel("error").end(true), Ce.w(this._n + "._onError", t2, s2), e2 === this._socketID && (this._readyState = lo, this._chM.onError());
- }
- onMessage(t2) {
- let s2;
- try {
- s2 = JSON.parse(t2.data);
- } catch (e2) {
- new Ti("jsonParseError").setMessage(t2.data).end();
- }
- if (s2 && s2.head) {
- const i2 = this._getRequestIDFromHead(s2.head);
- let e2 = s2.body;
- if (!this._chM.get(Bs).isTRTCCommand(i2)) {
- const t3 = ft(s2.head);
- e2 = eo(s2.body, this._getResKeyMap(t3));
- }
- if (Ce.d(`${this._n}.onMessage ret:${JSON.stringify(e2)} requestID:${i2} has:` + this._promiseMap.has(i2)), this._setNextPingTs(), this._promiseMap.has(i2)) {
- const { resolve: t3, reject: s3, timestamp: n2, headSeq: o2 } = this._promiseMap.get(i2);
- return this._promiseMap.delete(i2), this._calcRTT(n2), void (e2.errorCode && 0 !== e2.errorCode ? (this._chM.onErrorCodeNotZero(e2), s3(new Qs({ code: e2.errorCode, message: e2.errorInfo || "", data: i2.includes(ri.MODIFY_C2C_MSG) || i2.includes(ri.MODIFY_GRP_MSG) ? { elements: e2.elements, messageVersion: e2.messageVersion, cloudCustomData: e2.cloudCustomData, headSeq: o2 } : { headSeq: o2 } }))) : t3(Zs(e2)));
- }
- this._chM.onMessage({ head: s2.head, body: e2 });
- }
- }
- _calcRTT(e2) {
- e2 = Date.now() - e2;
- this._chM.get($s).addRTT(e2);
- }
- _connect() {
- this._readyState !== co && this._readyState !== ao && (this._startTs = Date.now(), this._onOpenTs = 0, this._readyState = co, this._socket = new no(this), this._socketID = this._socket.getID(), Ce.l(`${this._n}._connect isWorkerEnabled:${this.getIsWorkerEnabled()} socketID:${this._socketID} url:` + this.getURL()), new Ti("wsConnect").setMessage(`socketID:${this._socketID} url:` + this.getURL()).end());
- }
- getURL() {
- this._chM.isDevMode() && (this._canIUseBinaryFrame = false);
- var e2 = ht();
- (O || S && "windows" === e2 || P) && (this._canIUseBinaryFrame = false);
- let t2 = -1;
- "ios" === e2 ? t2 = Y || -1 : "android" === e2 && (t2 = j || -1);
- const s2 = this._chM.get(Rs), i2 = this._chM.getPlatform();
- let n2 = `sdkappid=${s2.getSDKAppID()}&instanceid=${s2.getInstanceID()}&random=${this._getRandom()}&platform=${i2}&host=${e2}&version=${t2}&sdkversion=3.5.2`;
- return D && (n2 += "&isminigame=1"), this._chM.canIUseInflate() && (n2 += "&compress=gzip"), this._canIUseBinaryFrame ? this._url + "/binfo?" + n2 : this._url + "/info?" + n2;
- }
- _closeConnection(e2) {
- Ce.l(this._n + "._closeConnection socketID:" + this._socketID), this._socket && (this._socket.close(e2), this._socketID = -1, this._socket = null, this._readyState = lo);
- }
- _resend() {
- if (Ce.l(this._n + "._resend reConnectFlag:" + this._reConnectFlag, `promiseMap.size:${this._promiseMap.size} simpleRequestMap.size:` + this._simpleRequestMap.size), 0 < this._promiseMap.size && this._promiseMap.forEach((e3, t3) => {
- var { uplinkData: e3, resolve: s2, reject: i2 } = e3;
- -1 !== t3.indexOf(ri.AV_POLLING) ? this._promiseMap.delete(t3) : (this._promiseMap.set(t3, { resolve: s2, reject: i2, timestamp: Date.now(), uplinkData: e3 }), this._execute(t3, e3));
- }), 0 < this._simpleRequestMap.size) {
- for (var [e2, t2] of this._simpleRequestMap)
- this._execute(e2, t2);
- this._simpleRequestMap.clear();
- }
- }
- send(s2) {
- s2.head.seq = this._getSequence(), s2.head.reqtime = Math.floor(Date.now() / 1e3), s2.head.cs = this._calcCheckSum(s2.head.servcmd, s2.body);
- const { keyMap: e2, ...i2 } = s2, n2 = this._getRequestIDFromHead(s2.head), o2 = JSON.stringify(i2);
- return new Promise((e3, t2) => {
- this._promiseMap.set(n2, { resolve: e3, reject: t2, timestamp: Date.now(), uplinkData: o2, headSeq: s2.head.seq }), Ce.d(`${this._n}.send uplinkData:${JSON.stringify(i2)} requestID:${n2} readyState:` + this._readyState), this._readyState !== ao ? this._reConnect() : (this._execute(n2, o2), this._chM.get($s).addRequestCount());
- });
- }
- simplySend(e2) {
- e2.head.seq = this._getSequence(), e2.head.reqtime = Math.floor(Date.now() / 1e3);
- const { keyMap: t2, ...s2 } = e2, i2 = this._getRequestIDFromHead(e2.head), n2 = JSON.stringify(s2);
- this._readyState !== ao ? (this._simpleRequestMap.size < this.MAX_SIZE ? this._simpleRequestMap.set(i2, n2) : Ce.l(this._n + ".simplySend. simpleRequestMap is full, drop request!"), this._reConnect()) : this._execute(i2, n2);
- }
- _execute(e2, t2) {
- this._socket.send({ data: t2, fail: k ? this._onSendFail.bind(this) : void 0, requestID: e2 });
- }
- _onSendFail(e2) {
- Ce.l(this._n + "._onSendFail requestID:" + e2), this._chM.onSendFail();
- }
- _getSequence() {
- var e2;
- if (this._startSequence < 2415919103)
- return e2 = this._startSequence, this._startSequence += 1, 2415919103 === this._startSequence && (this._startSequence = je()), e2;
- }
- _getRequestIDFromHead(e2) {
- var { servcmd: e2, seq: t2 } = e2;
- return e2 + t2;
- }
- _getResKeyMap(e2) {
- e2 = this._chM.getKeyMap(e2);
- return { ...Jn.res, ...e2.res };
- }
- _reConnect() {
- this._readyState !== ao && this._readyState !== co && this.forcedReconnect();
- }
- forcedReconnect() {
- var e2 = this._n + ".forcedReconnect";
- Ce.l(e2 + ` count:${this._reConnectCount} readyState:` + this._readyState), this._reConnectFlag = true, this._resetRandom(), this._reConnectCount < this.MAX_RECONNECT_COUNT ? (this._reConnectCount += 1, this._closeConnection(ro), this._initConnection()) : (this._reConnectCount = 0, this._chM.get(Os).isOnline() ? (Ce.w(e2 + " disconnected from wsserver but network is ok, continue..."), this._closeConnection(ro), this._initConnection()) : this._chM.onReconnectFailed());
- }
- getReconnectFlag() {
- return this._reConnectFlag;
- }
- _setNextPingTs() {
- this._nextPingTs = P ? Date.now() + 5e3 : Date.now() + 1e4;
- }
- getNextPingTs() {
- return this._nextPingTs;
- }
- isConnected() {
- return this._readyState === ao;
- }
- canIUseBinaryFrame() {
- return this._canIUseBinaryFrame;
- }
- getSocketID() {
- return this._socketID;
- }
- inflate(e2) {
- if (this._chM.canIUseInflate())
- return this._chM.get(Js).inflate(e2);
- }
- setIsWorkerEnabled(e2) {
- Ce.l(this._n + ".setIsWorkerEnabled flag:" + e2), this._isWorkerEnabled = e2;
- }
- getIsWorkerEnabled() {
- return this._isWorkerEnabled && ie;
- }
- _getRandom() {
- return 0 === this._random && (this._random = Math.random()), this._random;
- }
- _resetRandom() {
- this._random = 0;
- }
- _calcCheckSum(e2, t2) {
- if (-1 !== e2.indexOf(ri.PING) || -1 !== e2.indexOf(ri.LOGIN) || -1 !== e2.indexOf(ri.LOGOUT) || -1 !== e2.indexOf(ri.AV_POLLING) || -1 !== e2.indexOf(ri.AV_NOAUTH_POLLING))
- return 0;
- var s2 = io(JSON.stringify(t2));
- let i2 = 4294967295;
- for (let e3 = 0, t3 = s2.length; e3 < t3; e3++) {
- i2 ^= s2[e3];
- for (let e4 = 0; e4 < 8; e4++)
- 1 == (1 & i2) ? i2 = i2 >>> 1 ^ 3988292384 : i2 >>>= 1;
- }
- return (4294967295 ^ i2) >>> 0;
- }
- close() {
- Ce.l(this._n + ".close"), this._closeConnection(oo), this._promiseMap.clear(), this._startSequence = je(), this._readyState = lo, this._simpleRequestMap.clear(), this._reConnectFlag = false, this._reConnectCount = 0, this._onOpenTs = 0, this._url = "", this._random = 0, this._canIUseBinaryFrame = true, this._isWorkerEnabled = true;
- }
-};
-var _o = function(o2, r2, a2) {
- return new Promise((t2, e2) => {
- var s2 = "application/x-www-form-urlencoded;charset=UTF-8";
- if (k)
- $.request({ url: r2, data: a2, method: o2, timeout: 3e3, header: { "content-type": s2 }, success: (e3) => {
- e3 && e3.data && e3.data.NetCheckInfo && Ce.l("getconninfo ok in miniapp. ret:", e3.data), t2();
- }, fail: () => {
- e2(new Qs({ code: ei.NETWORK_ERROR }));
- } });
- else {
- const i2 = new XMLHttpRequest(), n2 = setTimeout(() => {
- i2.abort(), e2(new Qs({ code: ei.NETWORK_TIMEOUT }));
- }, 3e3);
- i2.onreadystatechange = function() {
- 4 === i2.readyState && (n2 && clearTimeout(n2), 200 === i2.status || 304 === i2.status ? (i2.responseText && -1 < i2.responseText.indexOf("NetCheckInfo") && Ce.l("getconninfo ok in web. ret:", JSON.parse(i2.responseText)), t2()) : e2(new Qs({ code: ei.NETWORK_ERROR })));
- }, i2.open(o2, r2, true), i2.setRequestHeader("Content-type", s2), a2 ? i2.send(a2) : i2.send();
- }
- });
-};
-var ho = class extends oi {
- constructor(e2) {
- super(e2), this._n = "ChannelModule", this._socketHandler = new uo(this), this._probing = false, this._isAppShowing = true, this._previousState = t.NET_STATE_CONNECTED, this._timerForNotLoggedIn = -1, this._timerForNotLoggedIn = setInterval(this.onCheckTimer.bind(this), 1e3), this._fatalErrorFlag = false, this._disconnectedTS = 0, this._lastDiagnoseTS = 0;
- }
- onCheckTimer(e2) {
- this._socketHandler && (this.isLoggedIn() ? (0 < this._timerForNotLoggedIn && (clearInterval(this._timerForNotLoggedIn), this._timerForNotLoggedIn = -1), this._socketHandler.onCheckTimer(e2)) : this._socketHandler.onCheckTimer(1), this._checkNextPing());
- }
- onErrorCodeNotZero(e2) {
- this.get(Gs).onErrorCodeNotZero(e2);
- }
- onMessage(e2) {
- this.get(Gs).onMessage(e2);
- }
- send(e2) {
- return this._socketHandler ? this._previousState !== t.NET_STATE_CONNECTED && e2.head.servcmd.includes(ri.SSO_STAT) ? (this.reConnect(), this.isPrivateNetWork() ? Promise.resolve() : this._sendLogViaHTTP(e2)) : this._socketHandler.send(e2) : Promise.reject();
- }
- _sendLogViaHTTP(e2) {
- var t2 = `${f.HOST.CURRENT.STAT}/v4/imopenstat/tim_web_report_v2?sdkappid=${e2.head.sdkappid}&reqtime=` + Date.now(), e2 = JSON.stringify(e2.body);
- return _o("POST", t2, e2);
- }
- simplySend(e2) {
- return this._socketHandler ? this._socketHandler.simplySend(e2) : Promise.reject();
- }
- onOpen() {
- this._ping();
- }
- onClose() {
- this._socketHandler && this._socketHandler.getReconnectFlag() && this._emitNetStateChangeEvent(t.NET_STATE_DISCONNECTED), this.reConnect();
- }
- onError() {
- k && !P && this.warn("DomainNameInMP"), this._emitNetStateChangeEvent(t.NET_STATE_DISCONNECTED);
- }
- getKeyMap(e2) {
- return this.get(Gs).getKeyMap(e2);
- }
- onRequestTimeout() {
- 3e4 <= Date.now() - this._lastDiagnoseTS && this.diagnose();
- }
- onSendFail() {
- this._emitNetStateChangeEvent(t.NET_STATE_DISCONNECTED);
- }
- onReconnected() {
- Ce.l(this._n + ".onReconnected cost:" + Dt(this._disconnectedTS, true, true)), this._m.restartTimer(), this.get(Gs).onReconnected(Dt(this._disconnectedTS, false, false)), this._disconnectedTS = 0, this._emitNetStateChangeEvent(t.NET_STATE_CONNECTED);
- }
- onReconnectFailed() {
- Ce.l(this._n + ".onReconnectFailed"), this._emitNetStateChangeEvent(t.NET_STATE_DISCONNECTED);
- }
- setIsWorkerEnabled(e2) {
- this._socketHandler && this._socketHandler.setIsWorkerEnabled(false);
- }
- offline() {
- this._emitNetStateChangeEvent(t.NET_STATE_DISCONNECTED);
- }
- reConnect(e2 = false) {
- let s2 = false;
- this._socketHandler && (s2 = this._socketHandler.getReconnectFlag());
- var i2 = `forcedFlag:${e2} fatalErrorFlag:${this._fatalErrorFlag} previousState:${this._previousState} reconnectFlag:` + s2;
- if (Ce.l(this._n + ".reConnect " + i2), !this._fatalErrorFlag && this._socketHandler) {
- if (true === e2)
- this._socketHandler.forcedReconnect();
- else {
- if (this._previousState === t.NET_STATE_CONNECTING && s2)
- return;
- this._socketHandler.forcedReconnect();
- }
- this._emitNetStateChangeEvent(t.NET_STATE_CONNECTING);
- }
- }
- _emitNetStateChangeEvent(s2) {
- this._previousState !== s2 && (Ce.l(`${this._n}._emitNetStateChangeEvent from ${this._previousState} to ` + s2), s2 === t.NET_STATE_DISCONNECTED && 0 === this._disconnectedTS && (this._disconnectedTS = Date.now(), this.diagnose()), this._previousState = s2, this.emitOEvt(e.NET_STATE_CHANGE, { state: s2 }));
- }
- _ping() {
- var e2;
- true !== this._probing && (this._probing = true, e2 = this.get(Gs).getProtocolData({ P: ri.PING }), this.send(e2).then(() => {
- this._probing = false;
- }).catch((e3) => {
- this._probing = false;
- var s2 = this.get(Os).isOnline();
- if (Ce.w(this._n + `._ping failed. bOnline:${s2} error:`, e3), e3 && 60002 === e3.code)
- return new Ti("error").setMessage(`code:${e3.code} message:` + e3.message).end(), this._fatalErrorFlag = true, void this._emitNetStateChangeEvent(t.NET_STATE_DISCONNECTED);
- s2 ? this.reConnect() : this._emitNetStateChangeEvent(t.NET_STATE_DISCONNECTED);
- }));
- }
- _checkNextPing() {
- this._socketHandler && this._socketHandler.isConnected() && Date.now() >= this._socketHandler.getNextPingTs() && this._ping();
- }
- dealloc() {
- this._socketHandler && (this._socketHandler.close(), this._socketHandler = null), -1 < this._timerForNotLoggedIn && clearInterval(this._timerForNotLoggedIn);
- }
- onRestApiKickedOut() {
- this._socketHandler && (this._socketHandler.close(), this.reConnect(true));
- }
- canIUseInflate() {
- return this._m.canIUseInflate();
- }
- getSocketID() {
- if (this._socketHandler)
- return this._socketHandler.getSocketID();
- }
- diagnose() {
- this.isPrivateNetWork() || (this._lastDiagnoseTS = Date.now(), this._diagnoseBySSO(), this._diagnoseByCDN());
- }
- _diagnoseBySSO() {
- const e2 = this._socketHandler.getURL(), t2 = e2.split("/")[2];
- var s2;
- t2.startsWith("ws") && (s2 = `https://${t2}/v3/netcheck/getconninfo?${e2.slice(e2.indexOf("info?") + 5)}&reqtime=` + Date.now(), _o("GET", s2).catch((e3) => {
- Ce.w(this._n + "._diagnoseBySSO failed. error:", e3);
- }));
- }
- _diagnoseByCDN() {
- const e2 = this._socketHandler.getURL(), t2 = `https://boce-cdn.my-imcloud.com/v3/netcheck/getconninfo?${e2.slice(e2.indexOf("info?") + 5)}&reqtime=` + Date.now();
- _o("GET", t2).catch((e3) => {
- Ce.w(this._n + "._diagnoseByCDN failed. error:", e3);
- });
- }
- reset() {
- Ce.l(this._n + ".reset"), this._previousState = t.NET_STATE_CONNECTED, this._probing = false, this._fatalErrorFlag = false, this._timerForNotLoggedIn = setInterval(this.onCheckTimer.bind(this), 1e3), this._disconnectedTS = 0, this._lastDiagnoseTS = 0;
- }
-};
-var po = class {
- constructor(e2) {
- this._n = "PHandler", this._sessionM = e2, this._map = /* @__PURE__ */ new Map(), this._fillMap();
- }
- _fillMap() {
- this._map.clear();
- var i2 = this._sessionM.genCommonHead(), e2 = this._sessionM.genCosSpecifiedHead(), t2 = this._sessionM.genSSOReportHead();
- this._map.set(ri.LOGIN, { head: { ...i2, servcmd: f.NAME.IM_OPEN_STATUS + "." + ri.LOGIN }, body: { state: "Online", isWebUniapp: 0, deviceBrand: 0, customInfo: "" }, keyMap: { req: { deviceBrand: "InstType" }, res: { InstId: "instanceID", HelloInterval: "helloInterval", RichMsgAuthKey: "authKey" } } }), this._map.set(ri.LOGOUT, { head: { ...i2, servcmd: f.NAME.IM_OPEN_STATUS + "." + ri.LOGOUT }, body: { type: 0, isWebUniapp: 0 }, keyMap: { req: { type: "wslogout_type" } } }), this._map.set(ri.HELLO, { head: { ...i2, servcmd: f.NAME.IM_OPEN_STATUS + "." + ri.HELLO }, body: { isWebUniapp: 0 }, keyMap: { res: { NewInstInfo: "newInstanceInfo" } } }), this._map.set(ri.KICK_OTHER, { head: { ...i2, servcmd: f.NAME.STAT_SERVICE + "." + ri.KICK_OTHER }, body: {} }), this._map.set(ri.COS_SIGN, { head: { ...e2, servcmd: f.NAME.IM_COS_SIGN + "." + ri.COS_SIGN }, body: { cmd: "open_im_cos_svc", subCmd: "get_cos_token", duration: 300, version: 2 }, keyMap: { req: { userSig: "usersig", subCmd: "sub_cmd", cmd: "cmd", duration: "duration", version: "version" }, res: { expired_time: "expiredTime", bucket_name: "bucketName", session_token: "sessionToken", tmp_secret_id: "secretId", tmp_secret_key: "secretKey" } } }), this._map.set(ri.COS_PRE_SIG, { head: { ...e2, servcmd: f.NAME.CUSTOM_UPLOAD + "." + ri.COS_PRE_SIG }, body: { fileType: void 0, fileName: void 0, uploadMethod: 0, duration: 900 }, keyMap: { req: { userSig: "usersig", fileType: "file_type", fileName: "file_name", uploadMethod: "upload_method" }, res: { expired_time: "expiredTime", request_id: "requestId", head_url: "headUrl", upload_url: "uploadUrl", download_url: "downloadUrl", ci_url: "ciUrl", snapshot_url: "requestSnapshotUrl" } } }), this._map.set(ri.SIMPLE_COS_PRE_SIG, { head: { ...e2, servcmd: f.NAME.CUSTOM_UPLOAD + "." + ri.SIMPLE_COS_PRE_SIG }, body: { uploadMethod: 0, platform: 2, SDKAppID: 0, userID: "", conversationType: 1, uploadConfig: [{ fileID: 1, fileType: 1, fileName: "" }] }, keyMap: { req: { platform: "uint32_platform", SDKAppID: "uint32_sdkappid", userID: "str_user_id", uploadMethod: "uint32_upload_method", conversationType: "uint32_scene", uploadConfig: "rpt_upload_object", fileID: "uint32_file_id", fileType: "uint32_file_type", fileName: "str_file_name" }, res: { str_final_ip: "uploadIP", rpt_pre_sig: "preSig", uint32_file_id: "fileID", uint32_exist_flag: "existFlag", str_download_url: "downloadUrl", str_upload_url: "uploadUrl", str_snapshot_url: "requestSnapshotUrl", str_file_key: "fileKey" } } }), this._map.set(ri.GET_IMAGE_INFO, { head: { ...e2, servcmd: f.NAME.CUSTOM_UPLOAD + "." + ri.GET_IMAGE_INFO }, body: { imageUrl: "" }, keyMap: { req: { imageUrl: "str_image_url" }, res: { rpt_msg_image_info: "imageInfoArray", uint32_image_type: "type", str_url: "url", uint32_width: "width", uint32_height: "height", str_image_format: "imageFormat" } } }), this._map.set(ri.GET_IP, { head: { ...e2, servcmd: f.NAME.CUSTOM_UPLOAD + "." + ri.GET_IP }, body: { domainName: "" }, keyMap: { req: { domainName: "str_domain" }, res: { str_final_ip: "ip" } } }), this._map.set(ri.VIDEO_COVER, { head: { ...e2, servcmd: f.NAME.CUSTOM_UPLOAD + "." + ri.VIDEO_COVER }, body: { version: 1, platform: void 0, coverName: void 0, requestSnapshotUrl: void 0 }, keyMap: { req: { version: "version", platform: "platform", coverName: "cover_name", requestSnapshotUrl: "snapshot_url" }, res: { error_code: "errorCode", error_msg: "errorInfo", download_url: "snapshotUrl" } } }), this._map.set(ri.FETCH_COMMERCIAL_CONFIG, { head: { ...i2, servcmd: f.NAME.IM_CONFIG_MANAGER + "." + ri.FETCH_COMMERCIAL_CONFIG }, body: { SDKAppID: 0 }, keyMap: { req: { SDKAppID: "uint32_sdkappid" }, res: { int32_error_code: "errorCode", str_error_message: "errorMessage", str_purchase_bits: "purchaseBits", uint32_expired_time: "expiredTime" } } }), this._map.set(ri.PUSHED_COMMERCIAL_CONFIG, { head: { ...i2, servcmd: f.NAME.IM_CONFIG_MANAGER + "." + ri.PUSHED_COMMERCIAL_CONFIG }, body: {}, keyMap: { res: { int32_error_code: "errorCode", str_error_message: "errorMessage", str_purchase_bits: "purchaseBits", uint32_expired_time: "expiredTime" } } }), this._map.set(ri.FETCH_CLOUD_CTRL_CONFIG, { head: { ...i2, servcmd: f.NAME.IM_CONFIG_MANAGER + "." + ri.FETCH_CLOUD_CTRL_CONFIG }, body: { SDKAppID: 0, version: 0 }, keyMap: { req: { SDKAppID: "uint32_sdkappid", version: "uint64_version" }, res: { int32_error_code: "errorCode", str_error_message: "errorMessage", str_json_config: "cloudControlConfig", uint32_expired_time: "expiredTime", uint32_sdkappid: "SDKAppID", uint64_version: "version" } } }), this._map.set(ri.PUSHED_CLOUD_CTRL_CONFIG, { head: { ...i2, servcmd: f.NAME.IM_CONFIG_MANAGER + "." + ri.PUSHED_CLOUD_CTRL_CONFIG }, body: {}, keyMap: { res: { int32_error_code: "errorCode", str_error_message: "errorMessage", str_json_config: "cloudControlConfig", uint32_expired_time: "expiredTime", uint32_sdkappid: "SDKAppID", uint64_version: "version" } } }), this._map.set(ri.OVERLOAD_NOTIFY, { head: { ...i2, servcmd: f.NAME.OVERLOAD_PUSH + "." + ri.OVERLOAD_NOTIFY }, body: {}, keyMap: { res: { OverLoadServCmd: "overloadCommand", DelaySecs: "waitingTime" } } }), this._map.set(ri.SYNC_UNREAD_MSG, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.SYNC_UNREAD_MSG }, body: { cookie: "", syncFlag: 0, needAbstract: 1, isOnlineSync: 0, needSignaling: 1, needCachedMsg: 1 }, keyMap: { req: { fromAccount: "From_Account", toAccount: "To_Account", from: "From_Account", to: "To_Account", time: "MsgTimeStamp", sequence: "MsgSeq", random: "MsgRandom", elements: "MsgBody" }, res: { MsgList: "messageList", SyncFlag: "syncFlag", To_Account: "to", From_Account: "from", ClientSeq: "clientSequence", MsgSeq: "sequence", NoticeSeq: "noticeSequence", NotifySeq: "notifySequence", MsgRandom: "random", MsgTimeStamp: "time", MsgContent: "content", ToGroupId: "to", MsgKey: "messageKey", GroupTips: "groupTips", MsgBody: "elements", MsgType: "type", C2CRemainingUnreadCount: "C2CRemainingUnreadList", C2CPairUnreadCount: "C2CPairUnreadList" } } }), this._map.set(ri.GET_PROFANITY_LIST, { head: { ...i2, servcmd: f.NAME.IM_MSG_AUDIT_MGR + "." + ri.GET_PROFANITY_LIST }, body: { version: 0, deviceID: "", startIndex: void 0 }, keyMap: { req: { version: "uint64_version", deviceID: "str_device_id", startIndex: "uint64_start_index" }, res: { msg_cmd_error_code: "errorInfo", str_err_msg: "errorMessage", uint32_code: "errorCode", msg_scene_ctl_config: "filterConfig", uint64_c2c_custom_msg_flag: "c2c_custom_message", uint64_c2c_text_msg_flag: "c2c_text_message", uint64_group_custom_msg_flag: "group_custom_message", uint64_group_text_msg_flag: "group_text_message", uint64_group_info_flag: "group_profile", uint64_group_member_info_flag: "group_member_profile", uint64_relation_chain_flag: "sns", uint64_user_info_flag: "user_profile", rpt_msg_dirty_word: "lexicon", str_dirty_word: "profanity", str_replaced_content: "replacement", uint64_filter_type: "filterType", uint64_id: "id", uint64_word_type: "profanityType", uint64_complete_flag: "completeFlag", uint64_next_start_index: "nextStartIndex", uint64_version: "version", uint64_expired_time: "expiredTime" } } }), this._map.set(ri.SEND_C2C_MSG, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.SEND_C2C_MSG }, body: { fromAccount: "", toAccount: "", msgSeq: 0, msgRandom: 0, msgBody: [], cloudCustomData: void 0, nick: "", avatar: "", msgLifeTime: void 0, offlinePushInfo: { pushFlag: 0, title: "", desc: "", ext: "", apnsInfo: { sound: "", badgeMode: 0, isVoipPush: void 0, image: "" }, androidInfo: { sound: "", XiaoMiChannelID: "", OPPOChannelID: "", GoogleChannelID: "", VIVOClassification: 1, VIVOCategory: "", HuaWeiCategory: "", OPPOCategory: "", HuaWeiImage: "", HonorImage: "", GoogleImage: "", HonorImportance: "" } }, messageControlInfo: void 0, clientTime: void 0, needReadReceipt: 0, isSupportExtension: 0, isRelayMessage: 0, cmConfigID: void 0, forbidCallbackControl: void 0 }, keyMap: { req: { fromAccount: "From_Account", toAccount: "To_Account", msgTimeStamp: "MsgTimeStamp", msgSeq: "MsgSeq", msgRandom: "MsgRandom", msgBody: "MsgBody", count: "MaxCnt", lastMessageTime: "LastMsgTime", messageKey: "MsgKey", peerAccount: "Peer_Account", data: "Data", description: "Desc", extension: "Ext", type: "MsgType", content: "MsgContent", sizeType: "Type", uuid: "UUID", url: "", imageUrl: "URL", fileUrl: "Url", remoteAudioUrl: "Url", remoteVideoUrl: "VideoUrl", thumbUUID: "ThumbUUID", videoUUID: "VideoUUID", videoUrl: "", downloadFlag: "Download_Flag", nick: "From_AccountNick", avatar: "From_AccountHeadurl", from: "From_Account", time: "MsgTimeStamp", messageRandom: "MsgRandom", messageSequence: "MsgSeq", elements: "MsgBody", clientSequence: "ClientSeq", payload: "MsgContent", messageList: "MsgList", messageNumber: "MsgNum", abstractList: "AbstractList", messageBody: "MsgBody", needReadReceipt: "IsNeedReadReceipt", GoogleChannelID: "GoogleChannelID", XiaoMiChannelID: "XiaoMiChannelID", OPPOChannelID: "OPPOChannelID", OPPOCategory: "OPPOCategory", VIVOClassification: "VIVOClassification", VIVOCategory: "VIVOCategory", HonorImportance: "HonorImportance" } } }), this._map.set(ri.SEND_GRP_MSG, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.SEND_GRP_MSG }, body: { fromAccount: "", groupID: "", random: 0, clientSequence: 0, priority: "", msgBody: [], cloudCustomData: void 0, onlineOnlyFlag: 0, offlinePushInfo: { pushFlag: 0, title: "", desc: "", ext: "", apnsInfo: { sound: "", badgeMode: 0, isVoipPush: void 0, image: "" }, androidInfo: { sound: "", XiaoMiChannelID: "", OPPOChannelID: "", GoogleChannelID: "", VIVOClassification: 1, VIVOCategory: "", HuaWeiCategory: "", OPPOCategory: "", HuaWeiImage: "", HonorImage: "", GoogleImage: "", HonorImportance: "" } }, groupAtInfo: [], messageControlInfo: void 0, clientTime: void 0, needReadReceipt: 0, topicID: void 0, receiverList: void 0, isSupportExtension: 0, isRelayMessage: 0, cmConfigID: void 0, forbidCallbackControl: void 0 }, keyMap: { req: { to: "GroupId", extension: "Ext", data: "Data", description: "Desc", random: "Random", sequence: "ReqMsgSeq", count: "ReqMsgNumber", type: "MsgType", priority: "MsgPriority", content: "MsgContent", elements: "MsgBody", sizeType: "Type", uuid: "UUID", url: "", imageUrl: "URL", fileUrl: "Url", remoteAudioUrl: "Url", remoteVideoUrl: "VideoUrl", thumbUUID: "ThumbUUID", videoUUID: "VideoUUID", videoUrl: "", downloadFlag: "Download_Flag", clientSequence: "ClientSeq", from: "From_Account", time: "MsgTimeStamp", messageRandom: "MsgRandom", messageSequence: "MsgSeq", payload: "MsgContent", messageList: "MsgList", messageNumber: "MsgNum", abstractList: "AbstractList", messageBody: "MsgBody", needReadReceipt: "NeedReadReceipt", receiverList: "To_Account", GoogleChannelID: "GoogleChannelID", XiaoMiChannelID: "XiaoMiChannelID", OPPOChannelID: "OPPOChannelID", OPPOCategory: "OPPOCategory", VIVOClassification: "VIVOClassification", VIVOCategory: "VIVOCategory", HonorImportance: "HonorImportance" }, res: { MsgTime: "time", MsgSeq: "sequence" } } }), this._map.set(ri.REVOKE_C2C_MSG, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.REVOKE_C2C_MSG }, body: { msgInfo: { fromAccount: "", toAccount: "", msgTimeStamp: 0, msgSeq: 0, msgRandom: 0 } }, keyMap: { req: { msgInfo: "MsgInfo", msgTimeStamp: "MsgTimeStamp", msgSeq: "MsgSeq", msgRandom: "MsgRandom" } } }), this._map.set(ri.REVOKE_GRP_MSG, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.REVOKE_GRP_MSG }, body: { groupID: "", msgSeqList: void 0, topicID: "" }, keyMap: { req: { msgSeqList: "MsgSeqList", msgSeq: "MsgSeq" } } }), this._map.set(ri.GET_C2C_ROAMING_MSG, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.GET_C2C_ROAMING_MSG }, body: { peerAccount: "", count: 15, lastMessageTime: 0, messageKey: "", withRecalledMessage: 1, direction: 0 }, keyMap: { req: { messageKey: "MsgKey", peerAccount: "Peer_Account", count: "MaxCnt", lastMessageTime: "LastMsgTime", withRecalledMessage: "WithRecalledMsg", direction: "GetDirection" }, res: { LastMsgTime: "lastMessageTime", IsNeedReadReceipt: "needReadReceipt", IsPeerRead: "readReceiptSentByPeer" } } }), this._map.set(ri.MODIFY_C2C_MSG, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.MODIFY_C2C_MSG }, body: { from: "", to: "", sequence: 0, random: 0, time: 0, version: 0, elements: void 0, cloudCustomData: void 0 }, keyMap: { req: { sequence: "MsgSeq", random: "MsgRandom", time: "MsgTime", version: "MsgVersion", type: "MsgType", content: "MsgContent" } } }), this._map.set(ri.GET_GRP_ROAMING_MSG, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.GET_GRP_ROAMING_MSG }, body: { withRecalledMsg: 1, groupID: "", count: 15, sequence: "", topicID: void 0 }, keyMap: { req: { sequence: "ReqMsgSeq", count: "ReqMsgNumber", withRecalledMessage: "WithRecalledMsg" }, res: { Random: "random", MsgTime: "time", MsgSeq: "sequence", ReqMsgSeq: "sequence", RspMsgList: "messageList", IsSystemMsg: "isSystemMessage", ToGroupId: "to", EnumFrom_AccountType: "fromAccountType", EnumTo_AccountType: "toAccountType", GroupCode: "groupCode", MsgPriority: "priority", MsgBody: "elements", MsgType: "type", MsgContent: "content", IsFinished: "complete", Download_Flag: "downloadFlag", ClientSeq: "clientSequence", ThumbUUID: "thumbUUID", VideoUUID: "videoUUID", ToTopicId: "topicID", InvisibleMsgSeq: "invisibleSequenceList", NextReqMsgSeq: "nextSequence" } } }), this._map.set(ri.SET_C2C_MSG_READ, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.SET_C2C_MSG_READ }, body: { C2CMsgReaded: void 0 }, keyMap: { req: { lastMessageTime: "LastedMsgTime" } } }), this._map.set(ri.SET_C2C_PEER_MUTE_NOTIFICATIONS, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.SET_C2C_PEER_MUTE_NOTIFICATIONS }, body: { userIDList: void 0, muteFlag: 0 }, keyMap: { req: { userIDList: "Peer_Account", muteFlag: "Mute_Notifications" } } }), this._map.set(ri.GET_C2C_PEER_MUTE_NOTIFICATIONS, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.GET_C2C_PEER_MUTE_NOTIFICATIONS }, body: { toAccount: void 0, userIDList: void 0 }, keyMap: { req: { userIDList: "Peer_Account" }, res: { MuteNotificationsList: "muteFlagList" } } }), this._map.set(ri.SET_GRP_MSG_READ, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.SET_GRP_MSG_READ }, body: { groupID: void 0, messageReadSeq: void 0, topicID: void 0 }, keyMap: { req: { messageReadSeq: "MsgReadedSeq" } } }), this._map.set(ri.SET_ALL_MSG_READ, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.SET_ALL_MSG_READ }, body: { readAllC2CMessage: 0, groupMessageReadInfoList: [] }, keyMap: { req: { readAllC2CMessage: "C2CReadAllMsg", groupMessageReadInfoList: "GroupReadInfo", messageSequence: "MsgSeq" }, res: { C2CReadAllMsg: "readAllC2CMessage", GroupReadInfoArray: "groupMessageReadInfoList" } } }), this._map.set(ri.DEL_C2C_MSG, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.DEL_C2C_MSG }, body: { fromAccount: "", to: "", keyList: void 0 }, keyMap: { req: { keyList: "MsgKeyList" } } }), this._map.set(ri.DEL_GRP_MSG, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.DEL_GRP_MSG }, body: { groupID: "", deleter: "", keyList: void 0, topicID: void 0 }, keyMap: { req: { deleter: "Deleter_Account", keyList: "Seqs" } } }), this._map.set(ri.TRANSLATE_TEXT, { head: { ...i2, servcmd: f.NAME.IM_OPEN_TRANSLATE + "." + ri.TRANSLATE_TEXT }, body: { sourceTextList: void 0, SDKAppID: 0, from: 0, source: "", target: "" }, keyMap: { req: { sourceTextList: "SourceText", SDKAppID: "SdkAppId", from: "FromAccount" }, res: { TargetText: "translatedTextList", RequestId: "requestID", CmdErrorCode: "error", ErrorCode: "code", ErrorInfo: "message" } } }), this._map.set(ri.VOICE_TO_TEXT, { head: { ...i2, servcmd: f.NAME.IM_OPEN_SPEECH + "." + ri.VOICE_TO_TEXT }, body: { url: "", SDKAppID: 0, format: "", sourceType: 0, language: "" }, keyMap: { req: { url: "BytesUrl", SDKAppID: "Uint32Sdkappid", format: "BytesVoiceFormat", sourceType: "Uint64SourceType", language: "BytesEngServiceType" }, res: { BytesRequestid: "requestID", BytesResult: "result", CmdErrorCode: "error", ErrorCode: "code", ErrorInfo: "message" } } }), this._map.set(ri.MODIFY_GRP_MSG, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.MODIFY_GRP_MSG }, body: { groupID: "", topicID: void 0, sequence: 0, version: 0, elements: void 0, cloudCustomData: void 0 }, keyMap: { req: { sequence: "MsgSeq", version: "MsgVersion", type: "MsgType", content: "MsgContent" } } }), this._map.set(ri.GET_READ_RECEIPT, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.GET_READ_RECEIPT }, body: { groupID: "", sequenceList: void 0 }, keyMap: { req: { sequence: "MsgSeq" } } }), this._map.set(ri.SEND_C2C_READ_RECEIPT, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.SEND_C2C_READ_RECEIPT }, body: { peerAccount: "", messageInfoList: void 0 }, keyMap: { req: { peerAccount: "Peer_Account", messageInfoList: "C2CMsgInfo", fromAccount: "From_Account", toAccount: "To_Account", sequence: "MsgSeq", random: "MsgRandom", time: "MsgTime", clientTime: "MsgClientTime" } } }), this._map.set(ri.SEND_READ_RECEIPT, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.SEND_READ_RECEIPT }, body: { groupID: "", sequenceList: void 0 }, keyMap: { req: { sequenceList: "MsgSeqList", sequence: "MsgSeq" } } }), this._map.set(ri.GET_READ_RECEIPT_DETAIL, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.GET_READ_RECEIPT_DETAIL }, body: { groupID: "", sequence: void 0, flag: 0, cursor: 0, count: 0 }, keyMap: { req: { sequence: "MsgSeq", count: "Num" }, res: { ReadList: "readUserIDList", Read_Account: "userID", UnreadList: "unreadUserIDList", Unread_Account: "userID", IsFinish: "isCompleted" } } }), this._map.set(ri.MODIFY_C2C_MSG_EXT, { head: { ...i2, servcmd: f.NAME.OPEN_IM_MSG_EXT + "." + ri.MODIFY_C2C_MSG_EXT }, body: { from: void 0, to: void 0, messageKey: void 0, operateType: void 0, extensionList: void 0 } }), this._map.set(ri.GET_C2C_MSG_EXT, { head: { ...i2, servcmd: f.NAME.OPEN_IM_MSG_EXT + "." + ri.GET_C2C_MSG_EXT }, body: { from: void 0, to: void 0, messageKey: void 0, startSequence: void 0 } }), this._map.set(ri.MODIFY_GRP_MSG_EXT, { head: { ...i2, servcmd: f.NAME.OPEN_IM_MSG_EXT + "." + ri.MODIFY_GRP_MSG_EXT }, body: { groupID: void 0, topicID: void 0, messageSequence: void 0, operateType: void 0, extensionList: void 0 } }), this._map.set(ri.GET_GRP_MSG_EXT, { head: { ...i2, servcmd: f.NAME.OPEN_IM_MSG_EXT + "." + ri.GET_GRP_MSG_EXT }, body: { groupID: void 0, topicID: void 0, messageSequence: void 0, startSequence: void 0 } }), this._map.set(ri.ADD_C2C_MSG_REACTION, { head: { ...i2, servcmd: f.NAME.OPEN_IM_MSG_EXT + "." + ri.ADD_C2C_MSG_REACTION }, body: { from: void 0, to: void 0, reactionID: void 0, messageKey: void 0, userIDList: void 0 }, keyMap: { req: { userIDList: "Add_Account" } } }), this._map.set(ri.RM_C2C_MSG_REACTION, { head: { ...i2, servcmd: f.NAME.OPEN_IM_MSG_EXT + "." + ri.RM_C2C_MSG_REACTION }, body: { from: void 0, to: void 0, reactionID: void 0, messageKey: void 0, userIDList: void 0 }, keyMap: { req: { userIDList: "Del_Account" } } }), this._map.set(ri.GET_C2C_MSG_REACTIONS, { head: { ...i2, servcmd: f.NAME.OPEN_IM_MSG_EXT + "." + ri.GET_C2C_MSG_REACTIONS }, body: { from: void 0, to: void 0, messageKeyList: void 0, count: void 0 } }), this._map.set(ri.GET_C2C_MSG_REACTION_USER_LIST, { head: { ...i2, servcmd: f.NAME.OPEN_IM_MSG_EXT + "." + ri.GET_C2C_MSG_REACTION_USER_LIST }, body: { from: void 0, to: void 0, reactionID: void 0, messageKey: void 0, count: void 0 } }), this._map.set(ri.ADD_GRP_MSG_REACTION, { head: { ...i2, servcmd: f.NAME.OPEN_IM_MSG_EXT + "." + ri.ADD_GRP_MSG_REACTION }, body: { groupID: void 0, topicID: void 0, reactionID: void 0, messageSequence: void 0, userIDList: void 0 }, keyMap: { req: { userIDList: "Add_Account" } } }), this._map.set(ri.RM_GRP_MSG_REACTION, { head: { ...i2, servcmd: f.NAME.OPEN_IM_MSG_EXT + "." + ri.RM_GRP_MSG_REACTION }, body: { groupID: void 0, topicID: void 0, reactionID: void 0, messageSequence: void 0, userIDList: void 0 }, keyMap: { req: { userIDList: "Del_Account" } } }), this._map.set(ri.GET_GRP_MSG_REACTIONS, { head: { ...i2, servcmd: f.NAME.OPEN_IM_MSG_EXT + "." + ri.GET_GRP_MSG_REACTIONS }, body: { groupID: void 0, topicID: void 0, messageSequenceList: void 0, count: void 0 }, keyMap: { res: { MsgSeq: "messageSequence" } } }), this._map.set(ri.GET_GRP_MSG_REACTION_USER_LIST, { head: { ...i2, servcmd: f.NAME.OPEN_IM_MSG_EXT + "." + ri.GET_GRP_MSG_REACTION_USER_LIST }, body: { groupID: void 0, topicID: void 0, reactionID: void 0, messageSequence: void 0, nextSeq: void 0, count: void 0 } }), this._map.set(ri.GET_C2C_PEER_READ_TIME, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.GET_C2C_PEER_READ_TIME }, body: { userIDList: void 0 }, keyMap: { req: { userIDList: "To_Account" }, res: { ReadTime: "peerReadTimeList" } } }), this._map.set(ri.PAGING_GET_CONV_LIST, { head: { ...i2, servcmd: f.NAME.RECENT_CONTACT + "." + ri.PAGING_GET_CONV_LIST }, body: { fromAccount: void 0, timeStamp: void 0, startIndex: void 0, pinnedTimeStamp: void 0, pinnedStartIndex: void 0, orderType: void 0, messageAssistFlag: 15, assistFlag: 31 }, keyMap: { req: { messageAssistFlag: "MsgAssistFlags", assistFlag: "AssistFlags", pinnedTimeStamp: "TopTimeStamp", pinnedStartIndex: "TopStartIndex" }, res: { SessionItem: "conversations", ToAccount: "groupID", To_Account: "userID", UnreadMsgCount: "unreadCount", MsgGroupReadedSeq: "messageReadSeq", C2cPeerReadTime: "c2cPeerReadTime", LastMsgFlags: "lastMessageFlag", TopFlags: "isPinned", TopTimeStamp: "pinnedTimeStamp", TopStartIndex: "pinnedStartIndex", GroupId: "convGroupID", C2cRemark: "friendRemark", MsgRecvOption: "messageRemindType", GroupIgnoredUnreadSeqCount: "noUnreadCount", GroupNextMsgSeq: "nextMessageSeq" } } }), this._map.set(ri.DEL_CONV, { head: { ...i2, servcmd: f.NAME.RECENT_CONTACT + "." + ri.DEL_CONV }, body: { fromAccount: "", conversationList: void 0, clearHistoryMessage: void 0 }, keyMap: { req: { toGroupID: "ToGroupid", clearHistoryMessage: "ClearRamble", conversationList: "ContactItem" }, res: { ResultItem: "resultList", ToGroupid: "groupID", ResultCode: "code", ResultInfo: "info" } } }), this._map.set(ri.CLEAR_HISTORY_MSG, { head: { ...i2, servcmd: f.NAME.RECENT_CONTACT + "." + ri.CLEAR_HISTORY_MSG }, body: { fromAccount: "", toAccount: void 0, type: 1, toGroupID: void 0 }, keyMap: { req: { toGroupID: "ToGroupid" } } }), this._map.set(ri.PIN_CONV, { head: { ...i2, servcmd: f.NAME.RECENT_CONTACT + "." + ri.PIN_CONV }, body: { fromAccount: "", operationType: 1, itemList: void 0 }, keyMap: { req: { itemList: "RecentContactItem" } } }), this._map.set(ri.DEL_GROUP_AT_TIPS, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.DEL_GROUP_AT_TIPS }, body: { messageListToDelete: void 0 }, keyMap: { req: { messageListToDelete: "DelMsgList", messageSeq: "MsgSeq", messageRandom: "MsgRandom" } } }), this._map.set(ri.SET_CONV_CUSTOM_DATA, { head: { ...i2, servcmd: f.NAME.RECENT_CONTACT + "." + ri.MARK_CONV }, body: { fromAccount: "", itemList: void 0 }, keyMap: { req: { itemList: "MarkItem", operationType: "OptType", groupID: "ToGroupId" }, res: { ToGroupId: "groupID", OptType: "operationType" } } }), this._map.set(ri.MARK_CONV, { head: { ...i2, servcmd: f.NAME.RECENT_CONTACT + "." + ri.MARK_CONV }, body: { fromAccount: "", itemList: void 0 }, keyMap: { req: { itemList: "MarkItem", operationType: "OptType", groupID: "ToGroupId" }, res: { ToGroupId: "groupID", OptType: "operationType" } } }), this._map.set(ri.CREATE_CONV_GRP, { head: { ...i2, servcmd: f.NAME.RECENT_CONTACT + "." + ri.CREATE_CONV_GRP }, body: { fromAccount: "", itemList: void 0 }, keyMap: { req: { itemList: "GroupContactItem", groupID: "ToGroupId" }, res: { GroupId: "convGroupID", ToGroupId: "groupID", OptType: "operationType" } } }), this._map.set(ri.DEL_CONV_GRP, { head: { ...i2, servcmd: f.NAME.RECENT_CONTACT + "." + ri.DEL_CONV_GRP }, body: { fromAccount: "", groupName: void 0 }, keyMap: { res: { GroupId: "convGroupID" } } }), this._map.set(ri.RENAME_CONV_GRP, { head: { ...i2, servcmd: f.NAME.RECENT_CONTACT + "." + ri.RENAME_CONV_GRP }, body: { fromAccount: "", updateType: void 0, updateGroup: void 0 }, keyMap: { req: { oldName: "OldGroupName", newName: "NewGroupName", groupID: "ToGroupId", operationType: "ContactOptType", groupName: "OldGroupName", updateItem: "ContactUpdateItem" }, res: { ContactOptType: "operationType", ToGroupId: "groupID", GroupId: "convGroupID" } } }), this._map.set(ri.ADD_CONV_TO_GRP, { head: { ...i2, servcmd: f.NAME.RECENT_CONTACT + "." + ri.RENAME_CONV_GRP }, body: { fromAccount: "", updateType: void 0, updateGroup: { groupName: void 0, updateGroupType: void 0, updateItem: void 0 } } }), this._map.set(ri.DEL_CONV_FROM_GRP, { head: { ...i2, servcmd: f.NAME.RECENT_CONTACT + "." + ri.RENAME_CONV_GRP }, body: { fromAccount: "", updateType: void 0, updateGroup: void 0 } }), this._map.set(ri.GET_CONV_GRP_LIST, { head: { ...i2, servcmd: f.NAME.RECENT_CONTACT + "." + ri.GET_CONV_GRP_LIST }, body: { fromAccount: "", startIndex: void 0 }, keyMap: { res: { GroupId: "convGroupID", ToGroupId: "groupID", OptType: "operationType", CustomMark: "customData", ContactGroupId: "convGroupIDList" } } }), this._map.set(ri.SEARCH_CONV_GRP_MARK, { head: { ...i2, servcmd: f.NAME.RECENT_CONTACT + "." + ri.SEARCH_CONV_GRP_MARK }, body: { fromAccount: "", contactItem: void 0 }, keyMap: { req: { groupID: "ToGroupId" }, res: { GroupId: "convGroupID", ToGroupId: "groupID", OptType: "operationType", CustomMark: "customData", ContactGroupId: "convGroupIDList", ContactResultItem: "contactItem" } } }), this._map.set(ri.GET_USER_PROFILE, { head: { ...i2, servcmd: f.NAME.PROFILE + "." + ri.GET_USER_PROFILE }, body: { fromAccount: "", userItem: [] }, keyMap: { req: { toAccount: "To_Account", standardSequence: "StandardSequence", customSequence: "CustomSequence" } } }), this._map.set(ri.UPDATE_MY_PROFILE, { head: { ...i2, servcmd: f.NAME.PROFILE + "." + ri.UPDATE_MY_PROFILE }, body: { fromAccount: "", profileItem: [{ tag: ye.NICK, value: "" }, { tag: ye.GENDER, value: "" }, { tag: ye.ALLOWTYPE, value: "" }, { tag: ye.AVATAR, value: "" }] }, keyMap: { req: { toAccount: "To_Account", standardSequence: "StandardSequence", customSequence: "CustomSequence" } } }), this._map.set(ri.GET_BL, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.GET_BL }, body: { fromAccount: "", startIndex: 0, maxLimited: 30 } }), this._map.set(ri.ADD_TO_BL, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.ADD_TO_BL }, body: { fromAccount: "", toAccount: [] } }), this._map.set(ri.RM_FROM_BL, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.RM_FROM_BL }, body: { fromAccount: "", toAccount: [] } }), this._map.set(ri.SET_SELF_STATUS, { head: { ...i2, servcmd: f.NAME.IM_OPEN_STATUS + "." + ri.SET_SELF_STATUS }, body: { customStatus: "" } }), this._map.set(ri.GET_USER_STATUS, { head: { ...i2, servcmd: f.NAME.IM_OPEN_STATUS + "." + ri.GET_USER_STATUS }, body: { userIDList: void 0 }, keyMap: { res: { UserStatusList: "successUserList", ErrorList: "failureUserList", To_Account: "userID", Invalid_Account: "invalidUserID", Status: "statusType" } } }), this._map.set(ri.SUB_USER_STATUS, { head: { ...i2, servcmd: f.NAME.IM_OPEN_STATUS + "." + ri.SUB_USER_STATUS }, body: { userIDList: void 0 }, keyMap: { res: { ErrorList: "failureUserList", To_Account: "userID", Invalid_Account: "invalidUserID" } } }), this._map.set(ri.UNSUB_USER_STATUS, { head: { ...i2, servcmd: f.NAME.IM_OPEN_STATUS + "." + ri.UNSUB_USER_STATUS }, body: { userIDList: void 0, unsubscribeAll: void 0 }, keyMap: { res: { ErrorList: "failureUserList", To_Account: "userID", Invalid_Account: "invalidUserID" } } }), this._map.set(ri.GET_FD_LIST, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.GET_FD_LIST }, body: { fromAccount: "", startIndex: 0, standardSequence: 0, customSequence: 0 }, keyMap: { res: { FriendNum: "friendCount", UserDataItem: "resultList", ValueItem: "tagValueList" } } }), this._map.set(ri.ADD_FD, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.ADD_FD }, body: { fromAccount: "", addFriendItem: [], type: "" }, keyMap: { req: { source: "AddSource", wording: "AddWording", type: "AddType" }, res: { ResultItem: "resultList" } } }), this._map.set(ri.UPDATE_FD, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.UPDATE_FD }, body: { fromAccount: "", updateItem: void 0 }, keyMap: { req: { snsItem: "SnsItem" }, res: { ResultItem: "resultList" } } }), this._map.set(ri.DEL_FD, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.DEL_FD }, body: { fromAccount: "", userIDList: [], type: "" }, keyMap: { req: { type: "DeleteType" }, res: { ResultItem: "resultList" } } }), this._map.set(ri.GET_FD_PROFILE, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.GET_FD_PROFILE }, body: { fromAccount: "", userIDList: void 0 }, keyMap: { res: { InfoItem: "resultList", SnsProfileItem: "tagValueList" } } }), this._map.set(ri.CHECK_FD, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.CHECK_FD }, body: { fromAccount: "", userIDList: [], type: "" }, keyMap: { req: { type: "CheckType" }, res: { InfoItem: "resultList" } } }), this._map.set(ri.GET_FD_APPLICATION_LIST, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.GET_FD_APPLICATION_LIST }, body: { fromAccount: "", applicationType: "", startTime: 0, maxLimited: 0, lastSequence: 0 }, keyMap: { res: { PendencyItem: "resultList", AddSource: "source", AddTime: "time", AddWording: "wording", Image: "avatar", UnreadPendencyCount: "unreadCount", To_Account: "userID", PendencyType: "type" } } }), this._map.set(ri.RESPOND_FD_APPLICATION, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.RESPOND_FD_APPLICATION }, body: { fromAccount: "", responseFriendItem: [] }, keyMap: { req: { tag: "TagName", action: "ResponseAction" }, res: { ResultItem: "resultList" } } }), this._map.set(ri.DEL_FD_APPLICATION, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.DEL_FD_APPLICATION }, body: { fromAccount: "", type: "", userIDList: void 0 }, keyMap: { req: { type: "PendencyType", userIDList: "To_Account" }, res: { ResultItem: "resultList" } } }), this._map.set(ri.REPORT_FD_APPLICATION, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.REPORT_FD_APPLICATION }, body: { fromAccount: "", latestTimeStamp: "" }, keyMap: { req: { latestTimeStamp: "LatestPendencyTimeStamp" } } }), this._map.set(ri.CREATE_FD_GRP, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.CREATE_FD_GRP }, body: { fromAccount: "", groupName: void 0, userIDList: void 0 }, keyMap: { req: { groupName: "GroupName", userIDList: "To_Account" }, res: { ResultItem: "resultList" } } }), this._map.set(ri.DEL_FD_GRP, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.DEL_FD_GRP }, body: { fromAccount: "", nameList: void 0 }, keyMap: { req: { nameList: "GroupName" } } }), this._map.set(ri.GET_FD_GRP_LIST, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.GET_FD_GRP_LIST }, body: { fromAccount: "", lastSequence: 0, needFriend: "Need_Friend_Type_Yes" }, keyMap: { res: { ResultItem: "resultList", GroupName: "name", FriendNumber: "friendCount", To_Account: "userIDList" } } }), this._map.set(ri.UPDATE_FD_GRP, { head: { ...i2, servcmd: f.NAME.FD + "." + ri.UPDATE_FD_GRP }, body: { fromAccount: "", oldName: "", newName: void 0, updateGroupItem: void 0 }, keyMap: { req: { oldName: "GroupOldName", newName: "GroupNewName" }, res: { UpdateType: "type", ResultItem: "resultList" } } }), this._map.set(ri.GET_GRP_LIST, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.GET_GRP_LIST }, body: { memberAccount: "", limit: void 0, offset: void 0, groupType: void 0, responseFilter: { groupBaseInfoFilter: void 0, selfInfoFilter: void 0 }, isSupportTopic: 0, needAppDefineData: 1 }, keyMap: { req: { memberAccount: "Member_Account" }, res: { GroupIdList: "groups", MsgSeq: "readedSequence", LastRecallTime: "_lastRevokedTime", AppDefinedData: "groupCustomField" } } }), this._map.set(ri.GET_GRP_PROFILE, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.GET_GRP_PROFILE }, body: { groupIDList: void 0, responseFilter: { groupBaseInfoFilter: void 0, groupCustomFieldFilter: void 0, memberInfoFilter: void 0, memberCustomFieldFilter: void 0 } }, keyMap: { req: { groupIDList: "GroupIdList", groupCustomField: "AppDefinedData", memberCustomField: "AppMemberDefinedData", groupCustomFieldFilter: "AppDefinedDataFilter_Group", memberCustomFieldFilter: "AppDefinedDataFilter_GroupMember" }, res: { GroupIdList: "groups", AppDefinedData: "groupCustomField", AppMemberDefinedData: "memberCustomField", AppDefinedDataFilter_Group: "groupCustomFieldFilter", AppDefinedDataFilter_GroupMember: "memberCustomFieldFilter", InfoSeq: "infoSequence", MemberList: "members", GroupInfo: "groups", ShutUpUntil: "muteUntil", ShutUpAllMember: "muteAllMembers" } } }), this._map.set(ri.CREATE_GRP, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.CREATE_GRP }, body: { type: void 0, name: void 0, groupID: void 0, ownerID: void 0, introduction: void 0, notification: void 0, maxMemberNum: void 0, joinOption: void 0, memberList: void 0, groupCustomField: void 0, memberCustomField: void 0, webPushFlag: 1, avatar: "", isSupportTopic: void 0, inviteOption: void 0 }, keyMap: { req: { ownerID: "Owner_Account", userID: "Member_Account", avatar: "FaceUrl", maxMemberNum: "MaxMemberCount", joinOption: "ApplyJoinOption", groupCustomField: "AppDefinedData", memberCustomField: "AppMemberDefinedData", inviteOption: "InviteJoinOption" }, res: { HugeGroupFlag: "avChatRoomFlag", OverJoinedGroupLimit_Account: "overLimitUserIDList" } } }), this._map.set(ri.DISMISS_GRP, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.DISMISS_GRP }, body: { groupID: void 0 } }), this._map.set(ri.UPDATE_GRP_PROFILE, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.UPDATE_GRP_PROFILE }, body: { groupID: void 0, name: void 0, introduction: void 0, notification: void 0, avatar: void 0, joinOption: void 0, groupCustomField: void 0, muteAllMembers: void 0, inviteOption: void 0 }, keyMap: { req: { groupCustomField: "AppDefinedData", muteAllMembers: "ShutUpAllMember", joinOption: "ApplyJoinOption", avatar: "FaceUrl", inviteOption: "InviteJoinOption" }, res: { AppDefinedData: "groupCustomField", ShutUpAllMember: "muteAllMembers" } } }), this._map.set(ri.APPLY_JOIN_GRP, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.APPLY_JOIN_GRP }, body: { groupID: void 0, applyMessage: void 0, userDefinedField: void 0, webPushFlag: 1, historyMessageFlag: void 0 }, keyMap: { req: { applyMessage: "ApplyMsg", historyMessageFlag: "HugeGroupHistoryMsgFlag" }, res: { HugeGroupFlag: "avChatRoomFlag", AVChatRoomKey: "avChatRoomKey", RspMsgList: "messageList", ToGroupId: "to" } } }), this._map.set(ri.APPLY_JOIN_GRP_NOAUTH, function() {
- const { a2: e3, tinyid: t3, ...s2 } = i2;
- return { head: { ...s2, servcmd: f.NAME.BIG_GRP_NO_AUTH + "." + ri.APPLY_JOIN_GRP }, body: { groupID: void 0, applyMessage: void 0, userDefinedField: void 0, webPushFlag: 1 }, keyMap: { req: { applyMessage: "ApplyMsg" }, res: { HugeGroupFlag: "avChatRoomFlag" } } };
- }()), this._map.set(ri.QUIT_GRP, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.QUIT_GRP }, body: { groupID: void 0 } }), this._map.set(ri.SEARCH_GRP, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.SEARCH_GRP }, body: { groupIDList: void 0, responseFilter: { groupBasePublicInfoFilter: ["Type", "Name", "Introduction", "Notification", "FaceUrl", "CreateTime", "Owner_Account", "LastInfoTime", "LastMsgTime", "NextMsgSeq", "MemberNum", "MaxMemberNum", "ApplyJoinOption", "InviteJoinOption"] } } }), this._map.set(ri.CHANGE_GRP_OWNER, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.CHANGE_GRP_OWNER }, body: { groupID: void 0, newOwnerID: void 0 }, keyMap: { req: { newOwnerID: "NewOwner_Account" } } }), this._map.set(ri.HANDLE_GRP_APPLICATION, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.HANDLE_GRP_APPLICATION }, body: { groupID: void 0, applicant: void 0, handleAction: void 0, handleMessage: void 0, authentication: void 0, messageKey: void 0, userDefinedField: void 0 }, keyMap: { req: { applicant: "Applicant_Account", handleAction: "HandleMsg", handleMessage: "ApprovalMsg", messageKey: "MsgKey" } } }), this._map.set(ri.HANDLE_INVITE_JOIN_GRP, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.HANDLE_INVITE_JOIN_GRP }, body: { groupID: void 0, applicant: void 0, invitee: void 0, handleAction: void 0, handleMessage: void 0, authentication: void 0, userDefinedField: void 0 }, keyMap: { req: { applicant: "Applicant_Account", invitee: "Invited_Account", handleAction: "HandleMsg", handleMessage: "ApprovalMsg" } } }), this._map.set(ri.HANDLE_GRP_INVITATION, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.HANDLE_GRP_INVITATION }, body: { groupID: void 0, inviter: void 0, handleAction: void 0, handleMessage: void 0, authentication: void 0, messageKey: void 0, userDefinedField: void 0 }, keyMap: { req: { inviter: "Inviter_Account", handleAction: "HandleMsg", handleMessage: "ApprovalMsg", messageKey: "MsgKey" } } }), this._map.set(ri.GET_GRP_PENDENCY, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.GET_GRP_PENDENCY }, body: { startTime: void 0, limit: void 0, handleAccount: void 0 }, keyMap: { req: { handleAccount: "Handle_Account" }, res: { To_Account: "userID", ApplyInviteMsg: "note" } } }), this._map.set(ri.DEL_GRP_SYSTEM_NOTICE, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.DEL_GRP_SYSTEM_NOTICE }, body: { messageListToDelete: void 0 }, keyMap: { req: { messageListToDelete: "DelMsgList", messageSeq: "MsgSeq", messageRandom: "MsgRandom" } } }), this._map.set(ri.AV_POLLING, { head: { ...i2, servcmd: f.NAME.BIG_GRP_POLLING + "." + ri.AV_POLLING }, body: { USP: 1, startSeq: 1, startBroadcastSeq: void 0, holdTime: 90, key: void 0, simplifiedMessage: void 0 }, keyMap: { req: { USP: "USP" }, res: { ToGroupId: "groupID", RspBroadcastMsgList: "broadcastMessageList", IsSystemMsg: "isSystemMessage" } } }), this._map.set(ri.AV_NOAUTH_POLLING, function() {
- const { a2: e3, tinyid: t3, ...s2 } = i2;
- return { head: { ...s2, servcmd: f.NAME.BIG_GRP_POLLING_NO_AUTH + "." + ri.AV_POLLING }, body: { USP: 1, startSeq: 1, holdTime: 90, key: void 0, simplifiedMessage: void 0 }, keyMap: { req: { USP: "USP" }, res: { ToGroupId: "groupID", RspBroadcastMsgList: "broadcastMessageList", IsSystemMsg: "isSystemMessage" } } };
- }()), this._map.set(ri.GET_ONLINE_MBR_NUM, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.GET_ONLINE_MBR_NUM }, body: { groupID: void 0 }, keyMap: { res: { OnlineMemberNum: "memberCount" } } }), this._map.set(ri.SET_GRP_ATTR, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.SET_GRP_ATTR }, body: { groupID: void 0, groupAttributeList: void 0, mainSequence: void 0, avChatRoomKey: void 0, attributeControl: ["RaceConflict"] }, keyMap: { req: { key: "key", value: "value" } } }), this._map.set(ri.MODIFY_GRP_ATTR, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.MODIFY_GRP_ATTR }, body: { groupID: void 0, groupAttributeList: void 0, mainSequence: void 0, avChatRoomKey: void 0, attributeControl: ["RaceConflict"] }, keyMap: { req: { key: "key", value: "value" } } }), this._map.set(ri.DEL_GRP_ATTR, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.DEL_GRP_ATTR }, body: { groupID: void 0, groupAttributeList: void 0, mainSequence: void 0, avChatRoomKey: void 0, attributeControl: ["RaceConflict"] }, keyMap: { req: { key: "key" } } }), this._map.set(ri.CLEAR_GRP_ATTR, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.CLEAR_GRP_ATTR }, body: { groupID: void 0, mainSequence: void 0, avChatRoomKey: void 0, attributeControl: ["RaceConflict"] } }), this._map.set(ri.GET_GRP_ATTR, { head: { ...i2, servcmd: f.NAME.GRP_ATTR + "." + ri.GET_GRP_ATTR }, body: { groupID: void 0, avChatRoomKey: void 0, groupType: 1 }, keyMap: { req: { avChatRoomKey: "Key", groupType: "GroupType" } } }), this._map.set(ri.GET_GRP_NOTIFY, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.GET_GRP_NOTIFY }, body: { notifyReqList: [] }, keyMap: { req: { notifyReqList: "NotifyReqList" }, res: { NextMsgTime: "nextRevokedTime", NotifyMsgList: "notifyList", NotifyRspList: "notifyRspList" } } }), this._map.set(ri.UPDATE_GRP_COUNTER, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.UPDATE_GRP_COUNTER }, body: { groupID: void 0, counterList: void 0, avChatRoomKey: void 0, mode: void 0 }, keyMap: { req: { counterList: "GroupCounter" } } }), this._map.set(ri.GET_GRP_COUNTER, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.GET_GRP_COUNTER }, body: { groupID: void 0, keyList: [], avChatRoomKey: void 0 }, keyMap: { req: { keyList: "GroupCounterKeys" } } }), this._map.set(ri.CREATE_TOPIC, { head: { ...i2, servcmd: f.NAME.GRP_COMMUNITY + "." + ri.CREATE_TOPIC }, body: { groupID: void 0, topicName: void 0, avatar: void 0, customData: void 0, topicID: void 0, notification: void 0, introduction: void 0 }, keyMap: { req: { avatar: "FaceUrl" } } }), this._map.set(ri.DEL_TOPIC, { head: { ...i2, servcmd: f.NAME.GRP_COMMUNITY + "." + ri.DEL_TOPIC }, body: { groupID: void 0, topicIDList: void 0 }, keyMap: { req: { topicIDList: "TopicIdList" }, res: { DestroyResultItem: "resultList" } } }), this._map.set(ri.UPDATE_TOPIC_PROFILE, { head: { ...i2, servcmd: f.NAME.GRP_COMMUNITY + "." + ri.UPDATE_TOPIC_PROFILE }, body: { groupID: void 0, topicID: void 0, avatar: void 0, customData: void 0, notification: void 0, introduction: void 0, muteAllMembers: void 0, topicName: void 0 }, keyMap: { req: { avatar: "FaceUrl", muteAllMembers: "ShutUpAllMember" } } }), this._map.set(ri.GET_TOPIC_LIST, { head: { ...i2, servcmd: f.NAME.GRP_COMMUNITY + "." + ri.GET_TOPIC_LIST }, body: { groupID: void 0, topicIDList: void 0, MemberInfoFilter: ["NoUnreadSeqList"] }, keyMap: { req: { topicIDList: "TopicIdList" }, res: { TopicAndSelfInfo: "topicInfoList", TopicInfo: "topic", GroupID: "groupID", ShutUpTime: "muteTime", ShutUpAllFlag: "muteAllMembers", LastMsgTime: "lastMessageTime", MsgSeq: "readedSequence", LastMsgSeq: "sequence" } } }), this._map.set(ri.GET_GRP_MBR_LIST, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.GET_GRP_MBR_LIST }, body: { groupID: void 0, limit: 0, offset: void 0, next: void 0, memberRoleFilter: void 0, memberInfoFilter: void 0, memberCustomFieldFilter: void 0 }, keyMap: { req: { memberCustomFieldFilter: "AppDefinedDataFilter_GroupMember" }, res: { AppMemberDefinedData: "memberCustomField", AppDefinedDataFilter_GroupMember: "memberCustomFieldFilter", MemberList: "members", ShutUpUntil: "muteUntil" } } }), this._map.set(ri.GET_AV_MBR_LIST, { head: { ...i2, servcmd: f.NAME.GRP_AV + "." + ri.GET_AV_MBR_LIST }, body: { groupID: void 0, offset: void 0, filter: void 0 }, keyMap: { req: { offset: "Timestamp", filter: "Mark" }, res: { NextTimestamp: "offset" } } }), this._map.set(ri.GET_GRP_MBR_PROFILE, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.GET_GRP_MBR_PROFILE }, body: { groupID: void 0, userIDList: void 0, memberInfoFilter: void 0, memberCustomFieldFilter: void 0 }, keyMap: { req: { userIDList: "Member_List_Account", memberCustomFieldFilter: "AppDefinedDataFilter_GroupMember" }, res: { MemberList: "members", ShutUpUntil: "muteUntil", AppDefinedDataFilter_GroupMember: "memberCustomFieldFilter", AppMemberDefinedData: "memberCustomField" } } }), this._map.set(ri.ADD_GRP_MBR, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.ADD_GRP_MBR }, body: { groupID: void 0, silence: void 0, userIDList: void 0 }, keyMap: { req: { userID: "Member_Account", userIDList: "MemberList" }, res: { MemberList: "members" } } }), this._map.set(ri.DEL_GRP_MBR, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.DEL_GRP_MBR }, body: { groupID: void 0, userIDList: void 0, reason: void 0 }, keyMap: { req: { userIDList: "MemberToDel_Account" } } }), this._map.set(ri.BAN_AV_MBR, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.BAN_AV_MBR }, body: { groupID: void 0, userIDList: void 0, duration: void 0, reason: "" }, keyMap: { req: { userIDList: "Members_Account", duration: "Duration", reason: "Description" } } }), this._map.set(ri.MODIFY_GRP_MBR_INFO, { head: { ...i2, servcmd: f.NAME.GRP + "." + ri.MODIFY_GRP_MBR_INFO }, body: { groupID: void 0, topicID: void 0, userID: void 0, messageRemindType: void 0, nameCard: void 0, role: void 0, memberCustomField: void 0, muteTime: void 0 }, keyMap: { req: { userID: "Member_Account", memberCustomField: "AppMemberDefinedData", muteTime: "ShutUpTime", messageRemindType: "MsgFlag" } } }), this._map.set(ri.MARK_AV_MBR_INFO, { head: { ...i2, servcmd: f.NAME.GRP_AV + "." + ri.MARK_AV_MBR_INFO }, body: { groupID: void 0, operationType: 1, memberList: [] }, keyMap: { req: { operationType: "CommandType", memberList: "MemberList", markType: "Marks", userID: "Member_Account" }, res: { CommandType: "operationType", Marks: "markType", Member_Account: "userID" } } }), this._map.set(ri.CS, { head: { ...i2, servcmd: f.NAME.MSG_SEARCH + "." + ri.CS }, body: { keywordList: void 0, keywordListMatchType: "or", account: void 0, groupID: void 0, count: 100, cursor: void 0, messageTypeList: void 0, senderUserIDList: void 0, startTime: void 0, endTime: void 0 }, keyMap: { req: { keywordListMatchType: "MatchType", account: "PeerAccount", groupID: "GroupID", messageTypeList: "MsgTypeList", senderUserIDList: "SendUserIDList", keywords: "Keywords", keywordMatchType: "KeywordMatchType", count: "Count", miniBirthday: "UserBirthStart", maxBirthday: "UserBirthEnd", gender: "UserGenderType", groupTypeList: "GroupType", groupIDList: "GroupIdList" }, res: { GroupID: "groupID", UserID: "userID", ErrorCode: "code", ErrorInfo: "message", TotalCount: "totalCount", Count: "messageCount", LastMsgTime: "lastMessageTime", ConversationMsgs: "searchResult", IsNeedReadReceipt: "needReadReceipt", IsPeerRead: "readReceiptSentByPeer", MsgSeq: "sequence", ReqMsgSeq: "sequence", IsSystemMsg: "isSystemMessage", ToGroupId: "to", EnumFrom_AccountType: "fromAccountType", EnumTo_AccountType: "toAccountType", GroupCode: "groupCode", MsgContent: "content", ClientSeq: "clientSequence", ToTopicId: "topicID", InvisibleMsgSeq: "invisibleSequenceList", Users: "userList", ProfileItems: "profileItems", StrValue: "value", IntValue: "value", Groups: "groupList", GroupFaceUrl: "avatar", GroupIntroduction: "introduction", GroupOwnerUserID: "ownerID", GroupOwnerUserName: "ownerNick", GroupOwnerTinyID: "ownerTinyID", GroupMemberNum: "memberNum", GroupName: "name", GroupType: "type", GroupMembers: "groupMemberList", GroupMemberUserID: "userID", GroupMemberTinyID: "userTinyID", GroupMemberUserName: "nick", GroupMemberNameCard: "nameCard" } } }), this._map.set(ri.USER_CS, { head: { ...i2, servcmd: f.NAME.USER_SEARCH + "." + ri.CS }, body: { keywords: void 0, keywordMatchType: 0, miniBirthday: void 0, maxBirthday: void 0, gender: void 0, count: 20, cursor: void 0 } }), this._map.set(ri.GRP_CS, { head: { ...i2, servcmd: f.NAME.GRP_SEARCH + "." + ri.CS }, body: { keywords: void 0, keywordMatchType: 0, groupType: void 0, count: 20, cursor: void 0 } }), this._map.set(ri.MBR_CS, { head: { ...i2, servcmd: f.NAME.GRP_MEMBER_SEARCH + "." + ri.CS }, body: { keywords: void 0, keywordMatchType: 0, groupType: void 0, groupIDList: void 0, count: 20, cursor: void 0 } }), this._map.set(ri.SSO_STAT, { head: { ...t2, servcmd: f.NAME.IM_OPEN_STAT + "." + ri.SSO_STAT }, body: { header: {}, event: [], quality: [] }, keyMap: { req: { SDKType: "sdk_type", SDKVersion: "sdk_version", deviceType: "device_type", platform: "platform", instanceID: "instance_id", traceID: "trace_id", SDKAppID: "sdk_app_id", userID: "user_id", tinyID: "tiny_id", extension: "extension", timestamp: "timestamp", networkType: "network_type", eventType: "event_type", code: "error_code", message: "error_message", moreMessage: "more_message", duplicate: "duplicate", costTime: "cost_time", level: "level", qualityType: "quality_type", reportIndex: "report_index", wholePeriod: "whole_period", totalCount: "total_count", rttCount: "success_count_business", successRateOfRequest: "percent_business", countLessThan1Second: "success_count_business", percentOfCountLessThan1Second: "percent_business", countLessThan3Second: "success_count_platform", percentOfCountLessThan3Second: "percent_platform", successCountOfBusiness: "success_count_business", successRateOfBusiness: "percent_business", successCountOfPlatform: "success_count_platform", successRateOfPlatform: "percent_platform", successCountOfMessageReceived: "success_count_business", successRateOfMessageReceived: "percent_business", avgRTT: "average_value", avgDelay: "average_value", avgValue: "average_value", uiPlatform: "ui_platform" } } }), this._map.set(ri.PING, { head: { ...i2, servcmd: f.NAME.HEARTBEAT + "." + ri.PING }, body: {} }), this._map.set(ri.MSG_PUSH, { head: { ...i2, servcmd: f.NAME.IM_OPEN_PUSH + "." + ri.MSG_PUSH }, body: {}, keyMap: { res: { C2cMsgArray: "C2CMessageArray", GroupMsgArray: "groupMessageArray", GroupTips: "groupTips", C2cNotifyMsgArray: "C2CNotifyMessageArray", C2cMsgInfo: "C2CReadReceiptArray", ClientSeq: "clientSequence", MsgPriority: "priority", NoticeSeq: "noticeSequence", MsgContent: "content", MsgType: "type", MsgBody: "elements", ToGroupId: "to", Desc: "description", Ext: "extension", IsSyncMsg: "isSyncMessage", Flag: "needSync", NeedAck: "needAck", PendencyAdd_Account: "userID", ProfileImNick: "nick", PendencyType: "applicationType", C2CReadAllMsg: "readAllC2CMessage", IsNeedReadReceipt: "needReadReceipt", Status: "statusType" } } }), this._map.set(ri.MULTI_MSG_PUSH, { head: { ...i2, servcmd: f.NAME.IM_OPEN_PUSH + "." + ri.MULTI_MSG_PUSH }, body: {}, keyMap: { res: { GroupMsgArray: "groupMessageArray", GroupTips: "groupTips", ClientSeq: "clientSequence", MsgPriority: "priority", NoticeSeq: "noticeSequence", MsgContent: "content", MsgType: "type", MsgBody: "elements", ToGroupId: "to", Desc: "description", Ext: "extension", IsSyncMsg: "isSyncMessage", Flag: "needSync", NeedAck: "needAck", PendencyType: "applicationType" } } }), this._map.set(ri.MSG_PUSH_ACK, { head: { ...i2, servcmd: f.NAME.OPEN_IM + "." + ri.MSG_PUSH_ACK }, body: { sessionData: void 0 }, keyMap: { req: { sessionData: "SessionData" } } }), this._map.set(ri.STATUS_FORCE_OFFLINE, { head: { ...i2, servcmd: f.NAME.IM_OPEN_STATUS + "." + ri.STATUS_FORCE_OFFLINE }, body: {}, keyMap: { res: { C2cNotifyMsgArray: "C2CNotifyMessageArray", NoticeSeq: "noticeSequence", KickoutMsgNotify: "kickoutMsgNotify", NewInstInfo: "newInstanceInfo" } } }), this._map.set(ri.DOWNLOAD_MERGER_MSG, { head: { ...i2, servcmd: f.NAME.IM_LONG_MSG + "." + ri.DOWNLOAD_MERGER_MSG }, body: { downloadKey: "" }, keyMap: { res: { Data: "data", Desc: "description", Ext: "extension", Download_Flag: "downloadFlag", ThumbUUID: "thumbUUID", VideoUUID: "videoUUID" } } }), this._map.set(ri.UPLOAD_MERGER_MSG, { head: { ...i2, servcmd: f.NAME.IM_LONG_MSG + "." + ri.UPLOAD_MERGER_MSG }, body: { messageList: [] }, keyMap: { req: { fromAccount: "From_Account", toAccount: "To_Account", msgTimeStamp: "MsgTimeStamp", msgSeq: "MsgSeq", msgRandom: "MsgRandom", msgBody: "MsgBody", type: "MsgType", content: "MsgContent", data: "Data", description: "Desc", extension: "Ext", sizeType: "Type", uuid: "UUID", url: "", imageUrl: "URL", fileUrl: "Url", remoteAudioUrl: "Url", remoteVideoUrl: "VideoUrl", thumbUUID: "ThumbUUID", videoUUID: "VideoUUID", videoUrl: "", downloadFlag: "Download_Flag", from: "From_Account", time: "MsgTimeStamp", messageRandom: "MsgRandom", messageSequence: "MsgSeq", elements: "MsgBody", clientSequence: "ClientSeq", payload: "MsgContent", messageList: "MsgList", messageNumber: "MsgNum", abstractList: "AbstractList", messageBody: "MsgBody" } } }), this._map.set(ri.FOLLOW, { head: { ...i2, servcmd: f.NAME.FOLLOW + "." + ri.FOLLOW }, body: { fromAccount: "", userIDList: [] }, keyMap: { req: { userIDList: "FollowItem" }, res: { ResultItem: "resultList", To_Account: "userID" } } }), this._map.set(ri.UNFOLLOW, { head: { ...i2, servcmd: f.NAME.FOLLOW + "." + ri.UNFOLLOW }, body: { fromAccount: "", userIDList: [] }, keyMap: { req: { userIDList: "To_Account" }, res: { ResultItem: "resultList", To_Account: "userID" } } }), this._map.set(ri.GET_FOLLOW_INFO, { head: { ...i2, servcmd: f.NAME.FOLLOW + "." + ri.GET_FOLLOW_INFO }, body: { fromAccount: "", userIDList: [] }, keyMap: { req: { userIDList: "To_Account" }, res: { FollowInfo: "followInfoList", To_Account: "userID", FollowerCount: "followersCount", FollowingCount: "followingCount", MutualFollowingCount: "mutualFollowersCount" } } }), this._map.set(ri.GET_FOLLOW, { head: { ...i2, servcmd: f.NAME.FOLLOW + "." + ri.GET_FOLLOW }, body: { fromAccount: "", type: 1, nextCursor: "", count: 500 }, keyMap: { req: { type: "FollowType", nextCursor: "StartCursor", count: "WantNum" }, res: { FollowItem: "resultList", To_Account: "userID", ProfileItem: "profileList" } } }), this._map.set(ri.CHECK_FOLLOW_TYPE, { head: { ...i2, servcmd: f.NAME.FOLLOW + "." + ri.CHECK_FOLLOW_TYPE }, body: { fromAccount: "", userIDList: [] }, keyMap: { req: { userIDList: "To_Account" }, res: { ResultItem: "resultList", To_Account: "userID" } } }), this._map.set(ri.SET_TOKEN, { head: { ...i2, servcmd: f.NAME.IM_OPEN_STATUS + "." + ri.SET_TOKEN }, body: { tokenID: "", pushMsg: 0, sdkAppID: 0, businessID: "", deviceBrand: "", deviceToken: "", isTpns: 0, isWebUniapp: 0, notificationStatus: 0, deviceModel: "", systemVersion: "", pushVersion: "" }, keyMap: { req: { tokenID: "TokenID", pushMsg: "PushMsg", sdkAppID: "EnterVersion", businessID: "BusiID", deviceBrand: "InstType", deviceToken: "VarToken", isTpns: "IsTpns", notificationStatus: "NotificationStatus", deviceModel: "DeviceModel", systemVersion: "SystemVersion", pushVersion: "PushPluginVersion" } } }), this._map.set(ri.STAT_FOREGROUND, { head: { ...i2, servcmd: f.NAME.IM_OPEN_STATUS + "." + ri.STAT_FOREGROUND }, body: { isWebUniapp: 0 } }), this._map.set(ri.STAT_BACKGROUND, { head: { ...i2, servcmd: f.NAME.IM_OPEN_STATUS + "." + ri.STAT_BACKGROUND }, body: { C2CUnread: 0, GroupUnread: 0, isWebUniapp: 0 }, keyMap: { req: { c2cUnreadCount: "C2cUnread", groupUnreadCount: "GrpUnread" } } }), this._map.set(ri.PUSH_REPORT, { head: { ...i2, servcmd: f.NAME.OFFLINE_PUSH_REPORT + "." + ri.PUSH_REPORT }, body: { eventList: [] }, keyMap: { req: { eventList: "UinappPushEvents", type: "EventType", time: "EventTime", pushId: "ClickExt" } } }), this._map.set(ri.SET_ALL_RECEIVE_MSG_OPT, { head: { ...i2, servcmd: f.NAME.IM_MSG_LOGIC + "." + ri.SET_ALL_RECEIVE_MSG_OPT }, body: { startTime: 0, endTime: 0, isRepeated: 0, messageRemindType: 0 }, keyMap: { req: { messageRemindType: "Level" } } }), this._map.set(ri.GET_ALL_RECEIVE_MSG_OPT, { head: { ...i2, servcmd: f.NAME.IM_MSG_LOGIC + "." + ri.GET_ALL_RECEIVE_MSG_OPT }, body: { toAccount: void 0 } });
- }
- has(e2) {
- return this._map.has(e2);
- }
- get(e2) {
- return this._map.get(e2);
- }
- update() {
- this._fillMap();
- }
- getKeyMap(e2) {
- return this.has(e2) ? this.get(e2).keyMap || {} : (Ce.w(this._n + ".getKeyMap unknown P:" + e2), {});
- }
- getProtocolData(e2) {
- const { P: t2, data: s2 } = e2, i2 = this.get(t2);
- let n2 = null;
- if (s2) {
- const e3 = this._simpleDeepCopy(i2), t3 = this._updateService(s2, e3), o2 = t3.body, r2 = /* @__PURE__ */ Object.create(null);
- for (const i3 in o2)
- if (Object.prototype.hasOwnProperty.call(o2, i3)) {
- if (r2[i3] = o2[i3], void 0 === s2[i3])
- continue;
- r2[i3] = s2[i3];
- }
- t3.body = r2, n2 = this._getUplinkData(t3);
- } else
- n2 = this._getUplinkData(i2);
- return n2;
- }
- _getUplinkData(e2) {
- const t2 = this._dataCleaner(e2), s2 = ft(t2.head), i2 = Qn(t2.body, this._getReqKeyMap(s2));
- return t2.body = i2, t2;
- }
- _updateService(i2, n2) {
- var o2 = ft(n2.head);
- if (this._isFromGroupRequest(n2)) {
- let { type: e2, groupID: t2, groupIDList: s2 = [] } = i2;
- $e(t2) && (t2 = s2[0] || ""), ot({ type: e2, groupID: t2 }) && (n2.head.servcmd = f.NAME.GRP_COMMUNITY + "." + o2);
- }
- return n2;
- }
- _isFromGroupRequest(e2) {
- return e2.head.servcmd.includes(f.NAME.GRP) || e2.head.servcmd.includes(f.NAME.GRP_ATTR);
- }
- _getReqKeyMap(e2) {
- e2 = this.getKeyMap(e2);
- return { ...Jn.req, ...e2.req };
- }
- _dataCleaner(e2) {
- const t2 = Array.isArray(e2) ? [] : /* @__PURE__ */ Object.create(null);
- for (const s2 in e2)
- Object.prototype.hasOwnProperty.call(e2, s2) && He(s2) && null !== e2[s2] && void 0 !== e2[s2] && ("object" != typeof e2[s2] ? t2[s2] = e2[s2] : t2[s2] = this._dataCleaner.bind(this)(e2[s2]));
- return t2;
- }
- _simpleDeepCopy(s2) {
- const i2 = Object.keys(s2), n2 = {};
- var o2;
- for (let e2 = 0, t2 = i2.length; e2 < t2; e2++)
- o2 = i2[e2], Fe(s2[o2]) ? n2[o2] = Array.from(s2[o2]) : we(s2[o2]) ? n2[o2] = this._simpleDeepCopy(s2[o2]) : n2[o2] = s2[o2];
- return n2;
- }
-};
-var go = [ri.MSG_PUSH_ACK];
-var mo = class {
- constructor(e2) {
- this._sessionM = e2, this._n = "MsgDispatcher", this._eventHandlerMap = /* @__PURE__ */ new Map(), this._eventHandlerMap.set("C2CMessageArray", this._onC2CMsgArray.bind(this)), this._eventHandlerMap.set("groupMessageArray", this._onGroupMsgArray.bind(this)), this._eventHandlerMap.set("groupTips", this._onGroupTips.bind(this)), this._eventHandlerMap.set("C2CNotifyMessageArray", this._onC2CNotifyMsgArray.bind(this)), this._eventHandlerMap.set("C2CReadReceiptArray", this._onC2CReadReceiptArray.bind(this)), this._eventHandlerMap.set("profileModify", this._onProfileModified.bind(this)), this._eventHandlerMap.set("friendListMod", this._onRelationChainModified.bind(this)), this._eventHandlerMap.set("recentContactMod", this._onRecentContact.bind(this)), this._eventHandlerMap.set("readAllC2CMessage", this._onAllMsgRead.bind(this)), this._eventHandlerMap.set("c2cMessageModified", this._onC2CMsgModified.bind(this)), this._eventHandlerMap.set("groupMessageModified", this._onGroupMsgModified.bind(this)), this._eventHandlerMap.set("userStatusList", this._onUserStatusList.bind(this)), this._eventHandlerMap.set("messageExtensionNotify", this._onMsgExtNotify.bind(this)), this._eventHandlerMap.set("messageReactionNotifyList", this._onMsgReactionNotifyList.bind(this)), this._eventHandlerMap.set("messageReactionNotify", this._onMsgReactionNotify.bind(this)), this._eventHandlerMap.set("followChangeList", this._onFollowNotify.bind(this)), this._keys = [...this._eventHandlerMap.keys()];
- }
- _onC2CMsgArray(e2) {
- const t2 = this._sessionM.get(ys);
- e2.dataList.forEach((e3) => {
- var t3;
- 1 === e3.isSyncMessage && (t3 = e3.from, e3.from = e3.to, e3.to = t3);
- }), 1 === e2.needSync && this._sessionM.get(Us).syncOnNeed(), t2.onNewMessage({ dataList: e2.dataList, isInstantMessage: true });
- }
- _onC2CMsgModified(e2) {
- this._sessionM.get(ys).onMsgModified(e2);
- }
- _onGroupMsgArray(e2) {
- const t2 = this._sessionM.get(vs);
- t2 && t2.onNewMessage({ event: e2.event, dataList: e2.dataList, isInstantMessage: true });
- }
- _onGroupMsgModified(e2) {
- const t2 = this._sessionM.get(vs);
- t2 && t2.onMsgModified(e2);
- }
- _onGroupTips(e2) {
- const t2 = this._sessionM.get(vs);
- if (t2) {
- var { event: s2, dataList: i2, isInstantMessage: n2 = true, isSyncingEnded: o2 } = e2;
- switch (s2) {
- case 4:
- case 6:
- t2.onNewGroupTips({ event: s2, dataList: i2 });
- break;
- case 5:
- for (let e3 = 0; e3 < i2.length; e3++)
- if (Fe(i2[e3].elements.revokedInfos))
- t2.onMsgRevoked({ dataList: i2 });
- else if (Fe(i2[e3].elements.groupMessageReadNotice))
- t2.onMsgReadNotice({ dataList: i2 });
- else {
- if (!Fe(i2[e3].elements.readReceiptList)) {
- t2.onNewGroupSystemNotice({ dataList: i2, isInstantMessage: n2, isSyncingEnded: o2 });
- break;
- }
- t2.onReadReceiptList({ dataList: i2 });
- }
- break;
- case 12:
- this._sessionM.get(Ds).onNewGroupAtTips({ dataList: i2 });
- break;
- default:
- Ce.l(this._n + `._onGroupTips unknown event:${s2} dataList:`, i2);
- }
- }
- }
- _onC2CNotifyMsgArray(e2) {
- const t2 = e2["dataList"];
- if (Fe(t2)) {
- const s2 = this._sessionM.get(ys);
- t2.forEach((e3) => {
- if (be(e3))
- if (e3.hasOwnProperty("kickoutMsgNotify")) {
- const { kickoutMsgNotify: { kickType: t3, newInstanceInfo: s3 = {} } } = e3;
- 1 === t3 ? this._sessionM.onMultipleAccountKickedOut(s3) : 2 === t3 ? this._sessionM.onMultipleDeviceKickedOut(s3) : 3 === t3 && this._sessionM.onRestApiKickedOut(s3);
- } else
- e3.hasOwnProperty("c2cMessageRevokedNotify") ? s2 && s2.onMsgRevoked({ dataList: t2 }, true) : e3.hasOwnProperty("c2cMessageReadReceipt") ? s2 && s2.onMsgReadReceipt({ dataList: t2 }) : e3.hasOwnProperty("c2cMessageReadNotice") ? s2 && s2.onMsgReadNotice({ dataList: t2 }) : e3.hasOwnProperty("muteNotificationsSync") && this._sessionM.get(Ds).onC2CMsgRemindTypeSynced({ dataList: t2 });
- });
- }
- }
- _onC2CReadReceiptArray(e2) {
- this._sessionM.get(ys).onReadReceiptList(e2);
- }
- _onProfileModified(e2) {
- this._sessionM.get(Ts).onProfileModified({ dataList: e2.dataList });
- const t2 = this._sessionM.get(Es);
- t2 && t2.onFriendProfileModified({ dataList: e2.dataList });
- }
- _onRelationChainModified(e2) {
- this._sessionM.get(Ts).onRelationChainModified({ dataList: e2.dataList });
- const t2 = this._sessionM.get(Es);
- t2 && t2.onRelationChainModified({ dataList: e2.dataList });
- }
- _onRecentContact(e2) {
- const t2 = e2["dataList"];
- if (Fe(t2)) {
- const o2 = this._sessionM.get(Ds);
- o2 && t2.forEach((e3) => {
- const t3 = e3["pushType"];
- if (1 === t3) {
- const t4 = e3["recentContactDeleteItem"];
- o2.onConvDeleted(t4.recentContactList);
- } else if (2 === t3) {
- const t4 = e3["recentContactTopItem"];
- o2.onConvPinnedStatus(t4.recentContactList, true);
- } else if (3 === t3) {
- const t4 = e3["recentContactTopItem"];
- o2.onConvPinnedStatus(t4.recentContactList, false);
- } else if (4 === t3) {
- const t4 = e3["recentContactMarkContact"];
- o2.onConvMarkUpdated(t4.recentContactMarkContactItem);
- } else if (5 === t3) {
- const t4 = e3["recentContactCreateContactGroup"];
- o2.onConvGroupCreated(t4.msgContactGroupContactItem);
- } else if (6 === t3) {
- const t4 = e3["recentContactDelContactGroup"];
- o2.onConvGroupDeleted(t4.msgGroupItem);
- } else if (7 === t3) {
- const t4 = e3["recentContactUpdateContactGroup"], { updateType: s2, msgUpdateGroup: i2, msgUpdateContact: n2 } = t4;
- if (1 === s2) {
- const e4 = i2["updateGroupType"];
- 1 === e4 ? o2.onConvGroupNameUpdated(i2) : 2 === e4 && o2.onConvInGroupUpdated(i2);
- } else
- 2 === s2 && o2.onConvAddedToOrDeletedFromGroup(n2);
- }
- });
- }
- }
- _onAllMsgRead(e2) {
- const t2 = e2["dataList"], s2 = this._sessionM.get(Ds);
- s2 && s2.onPushedAllMessageRead(t2);
- }
- _onUserStatusList(e2) {
- this._sessionM.get(Ts).onUserStatusUpdated(e2);
- }
- _onMsgExtNotify(e2) {
- this._sessionM.get(Cs).onMsgExtNotify(e2);
- }
- _onMsgReactionNotifyList(e2) {
- this._sessionM.get(Ys).onReactionNotifyList(e2);
- }
- _onMsgReactionNotify(e2) {
- this._sessionM.get(Ys).onReactionNotify(e2);
- }
- _onFollowNotify(e2) {
- this._sessionM.get(zs).onFollowNotify(e2);
- }
- _onTopicLatestMsg(e2) {
- this._sessionM.get(Ss).onTopicLatestMsg(e2);
- }
- onMessage(s2) {
- var e2 = s2["body"];
- if (this._filterMsgFromIMOpenPush(s2)) {
- var { eventArray: i2, isInstantMessage: n2, isSyncingEnded: o2, needSync: r2 } = e2;
- if (Fe(i2)) {
- var a2, c2, l2;
- for (let e3 = 0, t2 = i2.length; e3 < t2; e3++)
- if (100 !== (l2 = (a2 = i2[e3]).event))
- if (24 !== l2)
- if (26 !== l2) {
- const s3 = Object.keys(a2).find((e4) => -1 !== this._keys.indexOf(e4));
- s3 ? (c2 = 14 === l2 ? { readAllC2CMessage: a2[s3], groupMessageReadInfoList: a2.groupMessageReadNotice || [] } : 16 === l2 ? { userID: a2.userID, timestamp: a2.timestamp, readReceiptList: a2[s3] } : a2[s3], this._eventHandlerMap.get(s3)({ event: l2, dataList: c2, isInstantMessage: n2, isSyncingEnded: o2, needSync: r2 })) : Ce.l(this._n + ".onMessage unknown eventItem:", a2);
- } else
- this._onTopicLatestMsg(a2);
- else
- this._onAllRcvMsgOptNotify(a2);
- else
- this._onRoomCustomData(a2.content);
- }
- }
- }
- _onRoomCustomData(e2) {
- this._sessionM.get(Bs).onRoomCustomDataReceived(e2), Ce.l(this._n + "._onRoomCustomData data:" + e2);
- }
- _onAllRcvMsgOptNotify(e2) {
- this._sessionM.get(Ds).onAllRcvMsgOptNotify(e2);
- }
- _filterMsgFromIMOpenPush(e2) {
- const { head: t2, body: s2 } = e2, i2 = t2["servcmd"];
- let n2 = false;
- if (!(n2 = $e(i2) ? n2 : i2.includes(f.NAME.IM_CONFIG_MANAGER) || i2.includes(f.NAME.OVERLOAD_PUSH) || i2.includes(f.NAME.STAT_SERVICE)))
- return true;
- if (i2.includes(ri.PUSHED_CLOUD_CTRL_CONFIG))
- this._sessionM.get(ws).onPushedConfig(s2);
- else if (i2.includes(ri.PUSHED_COMMERCIAL_CONFIG))
- this._sessionM.get(qs).onPushedConfig(s2);
- else if (i2.includes(ri.OVERLOAD_NOTIFY))
- this._sessionM.onPushedServerOverload(s2);
- else if (i2.includes(ri.KICK_OTHER)) {
- const e3 = Date.now(), t3 = (this._sessionM.reLoginOnKickOther(), new Ti("kickOther")), s3 = this._sessionM.get(Ms).getLastWsHelloTs(), i3 = e3 - s3;
- t3.setMessage(`last wshello time:${s3} diff:${i3}ms`).end();
- }
- return false;
- }
-};
-var fo = [{ cmd: ri.GET_GRP_PROFILE, interval: 1, count: 8 }, { cmd: ri.UPDATE_GRP_PROFILE, interval: 1, count: 8 }, { cmd: ri.GET_AV_MBR_LIST, interval: 3, count: 1 }, { cmd: ri.GET_GRP_PENDENCY, interval: 1, count: 15 }, { cmd: ri.GET_TOPIC_LIST, interval: 1, count: 10 }, { cmd: ri.SET_GRP_ATTR, interval: 5, count: 10 }, { cmd: ri.MODIFY_GRP_ATTR, interval: 5, count: 10 }, { cmd: ri.DEL_GRP_ATTR, interval: 5, count: 10 }, { cmd: ri.CLEAR_GRP_ATTR, interval: 5, count: 10 }, { cmd: ri.GET_GRP_ATTR, interval: 5, count: 20 }, { cmd: ri.UPDATE_GRP_COUNTER, interval: 5, count: 20 }, { cmd: ri.GET_GRP_COUNTER, interval: 5, count: 20 }, { cmd: ri.SET_ALL_MSG_READ, interval: 1, count: 1 }, { cmd: ri.GET_USER_STATUS, interval: 5, count: 20 }, { cmd: ri.SUB_USER_STATUS, interval: 5, count: 20 }, { cmd: ri.UNSUB_USER_STATUS, interval: 5, count: 20 }, { cmd: ri.CS, interval: 5, count: 20 }, { cmd: ri.GRP_CS, interval: 5, count: 20 }, { cmd: ri.MBR_CS, interval: 5, count: 20 }, { cmd: ri.USER_CS, interval: 5, count: 20 }, { cmd: ri.CHECK_FOLLOW_TYPE, interval: 5, count: 20 }, { cmd: ri.GET_GRP_ROAMING_MSG, interval: 1, count: 20 }, { cmd: ri.GET_C2C_ROAMING_MSG, interval: 1, count: 20 }];
-var Mo = /* @__PURE__ */ new Map();
-var Io = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
-for (let e2 = 0, t2 = Io.length; e2 < t2; e2++)
- Mo.set(e2, Io[e2]);
-function Co(s2) {
- let i2, n2, o2 = s2, r2 = "";
- for (let e2 = 0, t2 = (o2 = s2.length % 8 != 0 ? "0".repeat(8 - s2.length % 8) + s2 : o2).length; e2 < t2; e2 += 8)
- i2 = parseInt(o2.slice(e2, e2 + 4), 2), n2 = parseInt(o2.slice(e2 + 4, e2 + 8), 2), r2 += Mo.get(i2) + Mo.get(n2);
- return r2;
-}
-var To = class extends oi {
- constructor(e2) {
- super(e2), this._n = "SessionModule", this._platform = this.getPlatform(), this._pHandler = new po(this), this._msgDispatcher = new mo(this), this._cmdFreqLimitMap = /* @__PURE__ */ new Map(), this._cmdReqInfoMap = /* @__PURE__ */ new Map(), this._serverOverloadInfoMap = /* @__PURE__ */ new Map(), this._incrementalPullContactFlag = true, this._init(), this.getIEmitInst().on(Yi.CLOUD_CONFIG, this._onCloudConfig, this);
- }
- _init() {
- this._updateCmdFreqLimitMap(fo);
- }
- _onCloudConfig() {
- var e2 = this.getCloudConfig("cmd_frequency_limit");
- $e(e2) || (e2 = JSON.parse(e2), this._updateCmdFreqLimitMap(e2));
- }
- _updateCmdFreqLimitMap(e2) {
- e2.forEach((e3) => {
- this._cmdFreqLimitMap.set(e3.cmd, { interval: e3.interval, count: e3.count });
- });
- }
- updateProtocolConfig() {
- this._pHandler.update();
- }
- req(e2) {
- Ce.d(this._n + ".req options:", e2);
- var t2 = e2["P"];
- if (!this._pHandler.has(t2))
- return Ce.w(this._n + ".req unknown P:" + t2), ni({ code: ei.NO_PROTOCOL });
- var e2 = this.getProtocolData(e2), s2 = e2.head["servcmd"];
- let i2;
- if (this._isFreqOverLimit(s2))
- return i2 = ei.OVER_FREQUENCY_LIMIT, ni({ code: i2, message: this.getErrMsg(i2, this._getCmd(s2)) });
- if (this._isServerOverload(s2))
- return i2 = ei.OPEN_SERVICE_OVERLOAD_ERROR, ni({ code: i2, message: this.getErrMsg(i2, this._getCmd(s2)) });
- const n2 = this.get(ks);
- return go.includes(t2) ? n2.simplySend(e2) : n2.send(e2);
- }
- getKeyMap(e2) {
- return this._pHandler.getKeyMap(e2);
- }
- genCommonHead() {
- const e2 = this.get(Rs);
- return { ver: "v4", platform: this._platform, websdkappid: a, websdkversion: r, a2: e2.getA2Key() || void 0, tinyid: e2.getTinyID() || void 0, status_instid: e2.getStatusInstanceID(), sdkappid: e2.getSDKAppID(), contenttype: e2.getContentType(), reqtime: 0, identifier: e2.getA2Key() ? void 0 : e2.getUserID(), usersig: e2.getA2Key() ? void 0 : e2.getUserSig(), sdkability: 12775283, sdkability_ext: Co(""), cappid: e2.getApplicationID(), cs: 0 };
- }
- genCosSpecifiedHead() {
- const e2 = this.get(Rs);
- return { ver: "v4", platform: this._platform, websdkappid: a, websdkversion: r, sdkappid: e2.getSDKAppID(), contenttype: e2.getContentType(), reqtime: 0, identifier: e2.getUserID(), usersig: e2.getUserSig(), status_instid: e2.getStatusInstanceID(), sdkability: 12775283, sdkability_ext: Co(""), cappid: e2.getApplicationID(), cs: 0 };
- }
- genSSOReportHead() {
- const e2 = this.get(Rs);
- return { ver: "v4", platform: this._platform, websdkappid: a, websdkversion: r, sdkappid: e2.getSDKAppID(), contenttype: "", reqtime: 0, identifier: "", usersig: "", status_instid: e2.getStatusInstanceID(), sdkability: 12775283, sdkability_ext: Co(""), cappid: e2.getApplicationID(), cs: 0 };
- }
- getProtocolData(e2) {
- return this._pHandler.getProtocolData(e2);
- }
- trans(e2) {
- var { servcmd: e2, data: t2 } = e2, e2 = { head: { ...this.genCommonHead(), servcmd: e2 }, body: t2 };
- return this.get(ks).send(e2);
- }
- sendComboMessage(e2) {
- var { servcmd: e2, data: t2 } = e2, e2 = { head: { ...this.genCommonHead(), servcmd: e2 }, body: t2 };
- return this.get(ks).send(e2);
- }
- onErrorCodeNotZero(e2) {
- const t2 = e2["errorCode"];
- if (t2 === ei.HELLO_ANSWER_KICKED_OUT) {
- const { kickType: t3, newInstanceInfo: s2 = {} } = e2;
- 1 === t3 ? this.onMultipleAccountKickedOut(s2) : 2 === t3 ? this.onMultipleDeviceKickedOut(s2) : 3 === t3 && this.onRestApiKickedOut(s2);
- }
- t2 !== ei.MSG_A2KEY_EXPIRED && t2 !== ei.ACCOUNT_A2KEY_EXPIRED || (this._onUserSigExpired(), this.get(ks).reConnect());
- }
- onMessage(e2) {
- var t2 = e2["body"], { needAck: t2 = 0, sessionData: s2 } = t2;
- 1 === t2 && this._sendACK(s2), this._msgDispatcher.onMessage(e2);
- }
- onReconnected(e2) {
- this._incrementalPullContactFlag = e2 <= 300, this._reLoginOnReconnected();
- }
- reLoginOnKickOther() {
- Ce.l(this._n + ".reLoginOnKickOther"), this._reLogin();
- }
- _reLoginOnReconnected() {
- Ce.l(this._n + "._reLoginOnReconnected"), this._reLogin();
- }
- _reLogin() {
- const _2 = this._n + "._reLogin";
- if (this.isLoggedIn()) {
- let e2 = 0;
- const s2 = this.get(Ms).getPushModule(), u2 = (s2 && (e2 = s2.getUniAppPlatform()), new Ti("reLogin"));
- this.req({ P: ri.LOGIN, data: { isWebUniapp: e2, customInfo: this.get(Rs).getCustomLoginInfo() } }).then((e3) => {
- const { instanceID: s3, customStatus: i2 } = e3.data, n2 = this.get(Rs), o2 = Cn(i2), r2 = (n2.setStatusInstanceID(s3), this.get(ks)), a2 = `socketID:${r2.getSocketID()} instanceID:${s3} customStatus:` + o2, c2 = (u2.setMessage(a2).end(true), Ce.l(_2 + " ok. " + a2), n2.getCustomStatus() !== o2 && this.get(Ts).onUserStatusUpdated({ dataList: [{ to: this.getMyUserID(), statusType: t.USER_STATUS_ONLINE, customStatus: i2 }] }), r2.diagnose(), this.get(Ds).syncConvList(this._incrementalPullContactFlag).then(() => {
- Ce.l(_2 + ", sync conv list ok."), this.get(Fs).start();
- }), this.get(vs)), l2 = (c2 && c2.updateLocalMainSequenceOnReconnected(), this.get(Ss)), d2 = (l2.resetGetTopicTime(), l2.getTopicListOnReconnected(), this.get(zs));
- d2 && d2.clearCacheOnReconnected();
- });
- }
- }
- onMultipleAccountKickedOut(e2) {
- this.get(Ms).onMultipleAccountKickedOut(e2);
- }
- onMultipleDeviceKickedOut(e2) {
- this.get(Ms).onMultipleDeviceKickedOut(e2);
- }
- _onUserSigExpired() {
- this.get(Ms).onUserSigExpired();
- }
- onRestApiKickedOut(e2) {
- this.get(Ms).onRestApiKickedOut(e2);
- }
- _sendACK(e2) {
- this.req({ P: ri.MSG_PUSH_ACK, data: { sessionData: e2 } });
- }
- _isFreqOverLimit(e2) {
- e2 = e2.split(".")[1];
- if (!this._cmdFreqLimitMap.has(e2))
- return false;
- if (!this._cmdReqInfoMap.has(e2))
- return this._cmdReqInfoMap.set(e2, { startTime: Date.now(), requestCount: 1 }), false;
- var { count: t2, interval: s2 } = this._cmdFreqLimitMap.get(e2), { startTime: i2, requestCount: n2 } = this._cmdReqInfoMap.get(e2);
- if (Date.now() - i2 > 1e3 * s2)
- return this._cmdReqInfoMap.set(e2, { startTime: Date.now(), requestCount: 1 }), false;
- this._cmdReqInfoMap.set(e2, { startTime: i2, requestCount: n2 += 1 });
- let o2 = t2 < n2 ? true : false;
- return o2;
- }
- _isServerOverload(e2) {
- if (!this._serverOverloadInfoMap.has(e2))
- return false;
- var { overloadTime: t2, waitingTime: s2 } = this._serverOverloadInfoMap.get(e2);
- let i2 = false;
- return i2 = Date.now() - t2 <= 1e3 * s2 || (this._serverOverloadInfoMap.delete(e2), false);
- }
- _getCmd(e2) {
- let t2 = "";
- if (!e2.includes("."))
- return t2;
- var s2 = e2.split(".")[1];
- for (const i2 in ri)
- if (ri[i2] === s2) {
- t2 = i2;
- break;
- }
- return t2;
- }
- onPushedServerOverload(e2) {
- var { overloadCommand: e2, waitingTime: t2 } = e2;
- this._serverOverloadInfoMap.set(e2, { overloadTime: Date.now(), waitingTime: t2 }), Ce.w(this._n + `.onPushedServerOverload waitingTime:${t2}s cmd:` + this._getCmd(e2));
- }
- reset() {
- Ce.l(this._n + ".reset"), this._updateCmdFreqLimitMap(fo), this._cmdReqInfoMap.clear(), this._serverOverloadInfoMap.clear(), this._incrementalPullContactFlag = true;
- }
-};
-var yo = class extends oi {
- constructor(e2) {
- super(e2), this._n = "CloudControlModule", this._cloudConfig = /* @__PURE__ */ new Map(), this._expiredTime = 0, this._version = 0, this._isFetching = false;
- }
- getCloudConfig(e2) {
- return $e(e2) ? this._cloudConfig : this._cloudConfig.has(e2) ? this._cloudConfig.get(e2) : void 0;
- }
- getServerConfig(e2) {
- const t2 = { code: 0, data: "" };
- return !$e(e2) && this._cloudConfig.has(e2) && (t2.data = this._cloudConfig.get(e2)), Promise.resolve(t2);
- }
- _canFetch() {
- return this.isLoggedIn() && !this._isFetching && Date.now() >= this._expiredTime;
- }
- fetchConfig() {
- const i2 = this._n + ".fetchConfig", e2 = this._canFetch();
- if (Ce.l(i2 + " canFetch:" + e2), e2) {
- const n2 = new Ti("fetchCloudCtrlConfig"), t2 = this.get(Rs).getSDKAppID();
- this._isFetching = true, this.req({ P: ri.FETCH_CLOUD_CTRL_CONFIG, data: { SDKAppID: t2, version: this._version } }).then((e3) => {
- this._isFetching = false;
- var { version: t3, cloudControlConfig: s2 } = e3.data;
- n2.setMessage(`version:${this._version} newVersion:${t3} config:` + s2).end(), Ce.l(i2 + " ok"), this._parse(e3.data);
- }).catch((e3) => {
- this._isFetching = false, n2.setError(e3).end(), Ce.l(i2 + " failed. error:", e3), this._setExpiredTime(12e4);
- });
- }
- }
- onPushedConfig(e2) {
- Ce.l(this._n + ".onPushedConfig config:", e2), new Ti("pushedCloudCtrlConfig").setMessage(`newVersion:${e2.version} config:` + e2.cloudControlConfig).end(), this._parse(e2);
- }
- onCheckTimer(e2) {
- this._canFetch() && this.fetchConfig();
- }
- _parse(e2) {
- var s2 = this._n + "._parse", { errorCode: t2, errorMessage: i2, cloudControlConfig: n2, version: o2, expiredTime: r2 } = e2;
- if (0 === t2) {
- if (this._version !== o2) {
- let t3 = null;
- try {
- t3 = JSON.parse(n2);
- } catch (e3) {
- this.isPrivateNetWork() || Ce.e(s2 + " failed. config:", n2);
- }
- t3 && (this._cloudConfig.clear(), Object.keys(t3).forEach((e3) => {
- this._cloudConfig.set(e3, t3[e3]);
- }), this._version = o2, this.emitIEvt(Yi.CLOUD_CONFIG));
- }
- this._setExpiredTime(1e3 * r2);
- } else
- $e(t2) ? (Ce.l(s2 + " failed. Invalid message format:", e2), this._setExpiredTime(36e5)) : (Ce.e(s2 + ` errorCode:${t2} errorMessage:` + i2), this._setExpiredTime(12e4));
- }
- _setExpiredTime(e2) {
- this._expiredTime = Date.now() + e2;
- }
- reset() {
- Ce.l(this._n + ".reset"), this._cloudConfig.clear(), this._expiredTime = 0, this._version = 0, this._isFetching = false;
- }
-};
-var vo = class extends oi {
- constructor(e2) {
- super(e2), this._n = "RecoverMsgModule", this.PULL_LIMIT_COUNT = 15;
- }
- start() {
- this._recoverGroupChat(), this._recoverC2CChat();
- }
- _recoverGroupChat() {
- const e2 = this._getLocalConvList().filter((e3) => e3.type === t.CONV_GROUP && e3.groupProfile.type !== t.GRP_AVCHATROOM), n2 = this.get(Ds);
- let o2, r2, a2, c2, l2;
- const d2 = [];
- e2.forEach((e3) => {
- const { conversationID: s2, lastMessage: i2 } = e3;
- r2 = s2.replace(t.CONV_GROUP, ""), o2 = n2.getLocalLastMessage(s2), i2 && 0 !== i2.lastSequence && o2 ? (c2 = i2.lastSequence, a2 = o2.sequence, l2 = c2 - a2, 0 < a2 && 1 <= l2 && l2 < 300 ? this._recoverGroupMsg({ groupID: r2, localLastMessageSequence: a2, remoteLastMessageSequence: c2 }) : d2.push(r2)) : d2.push(r2);
- }), this._getGroupNotice(d2);
- }
- _recoverC2CChat() {
- const e2 = this._getLocalConvList().filter((e3) => e3.type === t.CONV_C2C), s2 = this.get(Ds);
- let i2, n2, o2, r2;
- const a2 = [Promise.resolve()];
- e2.forEach((e3) => {
- var { conversationID: e3, lastMessage: t2 } = e3;
- i2 = s2.getLocalLastMessage(e3), t2 && 0 !== t2.lastTime && i2 && (o2 = t2.lastTime, n2 = i2.time, r2 = o2 - n2, 0 < n2 && 1 <= r2 && r2 <= 600 && a2.push(this._recoverC2CMsg({ conversationID: e3, localLastMessageTime: n2, remoteLastMessageTime: o2 })));
- }), Promise.all(a2).then(() => {
- Ce.l(this._n + "._recoverC2CChat all done"), this.get(Us).syncOnReconnected();
- });
- }
- _getLocalConvList() {
- return this.get(Ds).getLocalConvList();
- }
- _recoverGroupMsg(e2) {
- const c2 = this._n + "._recoverGroupMsg", { groupID: l2, localLastMessageSequence: d2, remoteLastMessageSequence: _2 } = (Ce.l(c2 + " options:", e2), e2), u2 = JSON.stringify(e2), h2 = new Ti("_recoverGroupMsg");
- h2.setMessage(u2), this._getGroupRoamingMsg({ groupID: l2, sequence: d2 }).then((n2) => {
- const { complete: e3, messageList: o2 } = n2.data;
- if (!$e(o2)) {
- const n3 = o2[0].sequence, s2 = o2.map((e4) => e4.sequence), r2 = u2 + ` complete:${e3} sequenceList:` + s2, a2 = (Ce.l(c2 + " " + r2), n3 !== d2 && n3 < _2 && 2 !== e3 && this._recoverGroupMsg({ groupID: l2, localLastMessageSequence: n3, remoteLastMessageSequence: _2 }), h2.setMessage(r2).end(), this.get(vs));
- 1 < o2.length && o2.sort((e4, t2) => e4.sequence - t2.sequence);
- let i2 = false;
- for (let e4 = 0, s3 = o2.length; e4 < s3; e4++)
- if (o2[e4].from === t.CONV_SYSTEM) {
- i2 = true;
- break;
- }
- if (i2)
- for (let e4 = 0, s3 = o2.length; e4 < s3; e4++) {
- const n4 = o2[e4];
- n4.from !== t.CONV_SYSTEM ? a2.onNewMessage({ dataList: [n4], isInstantMessage: false, updateUnreadCount: false }) : a2.onNewGroupTips({ event: n4.event, dataList: [n4] });
- }
- else
- a2.onNewMessage({ dataList: o2, isInstantMessage: false, updateUnreadCount: false });
- }
- }).catch((e3) => {
- h2.setError(e3).end(), Ce.w(c2 + " failed. error:", e3);
- });
- }
- _getGroupNotice(s2) {
- var e2 = s2.length;
- if (Ce.l(this._n + "._getGroupNotice length:" + e2), 0 !== e2) {
- const i2 = this.get(vs);
- if (e2 <= 10)
- i2.getNotice(s2);
- else {
- let t2 = Math.floor(e2 / 10);
- 5 <= t2 && (t2 = 5);
- for (let e3 = 0; e3 <= t2; e3++)
- i2.getNotice(s2.slice(10 * e3, 10 * (e3 + 1)));
- }
- }
- }
- _getGroupRoamingMsg(e2) {
- var { groupID: e2, sequence: t2 } = e2;
- return this.req({ P: ri.GET_GRP_ROAMING_MSG, data: { groupID: e2, count: this.PULL_LIMIT_COUNT, sequence: t2 + this.PULL_LIMIT_COUNT - 1 } });
- }
- _recoverC2CMsg(e2) {
- const o2 = this._n + "._recoverC2CMsg", { conversationID: r2, localLastMessageTime: t2, remoteLastMessageTime: a2 } = (Ce.l(o2 + " options:", e2), e2), c2 = JSON.stringify(e2), l2 = new Ti("_recoverC2CMsg");
- return l2.setMessage(c2), this._getC2CRoamingMsg({ conversationID: r2, time: t2 }).then((e3) => {
- const { complete: t3, messageList: s2 } = e3.data;
- if (!$e(s2)) {
- const e4 = s2.length;
- this.get(ys).onNewMessage({ dataList: s2, isInstantMessage: true });
- var i2 = s2[e4 - 1].time, n2 = s2.map((e5) => e5.random), n2 = c2 + ` complete:${t3} randomList:` + n2;
- if (Ce.l(o2 + " " + n2), l2.setMessage(n2).end(), i2 < a2 && 1 !== t3)
- return this._recoverC2CMsg({ conversationID: r2, localLastMessageTime: i2, remoteLastMessageTime: a2 });
- }
- }).catch((e3) => {
- l2.setError(e3).end(), Ce.w(o2 + " failed. error:", e3);
- });
- }
- _getC2CRoamingMsg(e2) {
- const { conversationID: s2, time: i2 } = e2;
- return this.req({ P: ri.GET_C2C_ROAMING_MSG, data: { peerAccount: s2.replace(t.CONV_C2C, ""), count: this.PULL_LIMIT_COUNT + 1, lastMessageTime: i2, direction: 1 } });
- }
- reset() {
- Ce.l(this._n + ".reset");
- }
-};
-var Eo = class {
- constructor() {
- this._n = "AvgE2EDelay", this._e2eDelayArray = [];
- }
- addMessageDelay(e2) {
- e2 = me() - e2;
- 0 <= e2 && this._e2eDelayArray.push(e2);
- }
- _calcAvg(e2, t2) {
- if (0 === t2)
- return 0;
- let s2 = 0;
- return e2.forEach((e3) => {
- s2 += e3;
- }), Mt(s2 / t2, 1);
- }
- _calcCountWithLimit(e2) {
- const { e2eDelayArray: t2, min: s2, max: i2 } = e2;
- return t2.filter((e3) => s2 <= e3 && e3 < i2).length;
- }
- _calcPercent(e2, t2) {
- let s2 = Mt(e2 / t2 * 100, 2);
- return s2 = 100 < s2 ? 100 : s2;
- }
- _checkE2EDelayException(e2, t2) {
- var s2 = e2.filter((e3) => t2 < e3);
- if (0 < s2.length) {
- const t3 = s2.length, i2 = Math.min(...s2), n2 = Math.max(...s2), o2 = this._calcAvg(s2, t3), r2 = Mt(t3 / e2.length * 100, 2);
- 50 < r2 && new Ti("messageE2EDelayException").setMessage(`count:${t3} min:${i2} max:${n2} avg:${o2} percent:` + r2).setLevel("warning").end();
- }
- }
- getStatResult() {
- var e2 = this._e2eDelayArray.length;
- if (0 === e2)
- return null;
- const t2 = [...this._e2eDelayArray], s2 = this._calcCountWithLimit({ e2eDelayArray: t2, min: 0, max: 1 }), i2 = this._calcCountWithLimit({ e2eDelayArray: t2, min: 1, max: 3 }), n2 = this._calcPercent(s2, e2), o2 = this._calcPercent(i2, e2), r2 = this._calcAvg(t2, e2);
- return this._checkE2EDelayException(t2, 3), t2.length = 0, this.reset(), { totalCount: e2, countLessThan1Second: s2, percentOfCountLessThan1Second: n2, countLessThan3Second: i2, percentOfCountLessThan3Second: o2, avgDelay: r2 };
- }
- reset() {
- this._e2eDelayArray.length = 0;
- }
-};
-var So = class {
- constructor() {
- this._n = "AvgRTT", this._requestCount = 0, this._rttArray = [];
- }
- addRequestCount() {
- this._requestCount += 1;
- }
- addRTT(e2) {
- this._rttArray.push(e2);
- }
- _calcTotalCount() {
- return this._requestCount;
- }
- _calcRTTCount(e2) {
- return e2.length;
- }
- _calcSuccessRateOfRequest(e2, t2) {
- if (0 === t2)
- return 0;
- let s2 = Mt(e2 / t2 * 100, 2);
- return s2 = 100 < s2 ? 100 : s2;
- }
- _calcAvg(e2, t2) {
- if (0 === t2)
- return 0;
- let s2 = 0;
- return e2.forEach((e3) => {
- s2 += e3;
- }), parseInt(s2 / t2);
- }
- _calcMax() {
- return Math.max(...this._rttArray);
- }
- _calcMin() {
- return Math.min(...this._rttArray);
- }
- getStatResult() {
- var e2 = this._calcTotalCount(), t2 = [...this._rttArray];
- if (0 === e2)
- return null;
- var s2 = this._calcRTTCount(t2), i2 = this._calcSuccessRateOfRequest(s2, e2), t2 = this._calcAvg(t2, s2);
- return Ce.l(`${this._n}.getStatResult max:${this._calcMax()} min:${this._calcMin()} avg:` + t2), this.reset(), { totalCount: e2, rttCount: s2, successRateOfRequest: i2, avgRTT: t2 };
- }
- reset() {
- this._requestCount = 0, this._rttArray.length = 0;
- }
-};
-var Do = class {
- constructor() {
- this._map = /* @__PURE__ */ new Map();
- }
- initMap(e2) {
- e2.forEach((e3) => {
- this._map.set(e3, { totalCount: 0, successCount: 0, failedCountOfUserSide: 0, costArray: [], fileSizeArray: [] });
- });
- }
- addTotalCount(e2) {
- return !($e(e2) || !this._map.has(e2) || (this._map.get(e2).totalCount += 1, 0));
- }
- addSuccessCount(e2) {
- return !($e(e2) || !this._map.has(e2) || (this._map.get(e2).successCount += 1, 0));
- }
- addFailedCountOfUserSide(e2) {
- return !($e(e2) || !this._map.has(e2) || (this._map.get(e2).failedCountOfUserSide += 1, 0));
- }
- addCost(e2, t2) {
- return !($e(e2) || !this._map.has(e2) || (this._map.get(e2).costArray.push(t2), 0));
- }
- addFileSize(e2, t2) {
- return !($e(e2) || !this._map.has(e2) || (this._map.get(e2).fileSizeArray.push(t2), 0));
- }
- _calcSuccessRateOfBusiness(e2) {
- if ($e(e2) || !this._map.has(e2))
- return -1;
- e2 = this._map.get(e2);
- let t2 = Mt(e2.successCount / e2.totalCount * 100, 2);
- return t2 = 100 < t2 ? 100 : t2;
- }
- _calcSuccessRateOfPlatform(e2) {
- if ($e(e2) || !this._map.has(e2))
- return -1;
- var t2 = this._map.get(e2);
- let s2 = this._calcSuccessCountOfPlatform(e2) / t2.totalCount * 100;
- return s2 = 100 < (s2 = Mt(s2, 2)) ? 100 : s2;
- }
- _calcTotalCount(e2) {
- return $e(e2) || !this._map.has(e2) ? -1 : this._map.get(e2).totalCount;
- }
- _calcSuccessCountOfBusiness(e2) {
- return $e(e2) || !this._map.has(e2) ? -1 : this._map.get(e2).successCount;
- }
- _calcSuccessCountOfPlatform(e2) {
- if ($e(e2) || !this._map.has(e2))
- return -1;
- e2 = this._map.get(e2);
- return e2.successCount + e2.failedCountOfUserSide;
- }
- _calcAvg(e2) {
- return $e(e2) || !this._map.has(e2) ? -1 : e2 === hi ? this._calcAvgSpeed(e2) : this._calcAvgCost(e2);
- }
- _calcAvgCost(e2) {
- var t2 = this._map.get(e2).costArray.length;
- if (0 === t2)
- return 0;
- let s2 = 0;
- return this._map.get(e2).costArray.forEach((e3) => {
- s2 += e3;
- }), parseInt(s2 / t2);
- }
- _calcAvgSpeed(e2) {
- let t2 = 0, s2 = 0;
- return this._map.get(e2).costArray.forEach((e3) => {
- t2 += e3;
- }), this._map.get(e2).fileSizeArray.forEach((e3) => {
- s2 += e3;
- }), parseInt(1e3 * s2 / t2);
- }
- getStatResult(e2) {
- var t2 = this._calcTotalCount(e2);
- if (0 === t2)
- return null;
- var s2 = this._calcSuccessCountOfBusiness(e2), i2 = this._calcSuccessRateOfBusiness(e2), n2 = this._calcSuccessCountOfPlatform(e2), o2 = this._calcSuccessRateOfPlatform(e2), r2 = this._calcAvg(e2);
- return this.reset(e2), { totalCount: t2, successCountOfBusiness: s2, successRateOfBusiness: i2, successCountOfPlatform: n2, successRateOfPlatform: o2, avgValue: r2 };
- }
- reset(e2) {
- $e(e2) ? this._map.clear() : this._map.set(e2, { totalCount: 0, successCount: 0, failedCountOfUserSide: 0, costArray: [], fileSizeArray: [] });
- }
-};
-var Ro = class {
- constructor() {
- this._lastMap = /* @__PURE__ */ new Map(), this._currentMap = /* @__PURE__ */ new Map();
- }
- initMap(e2) {
- e2.forEach((e3) => {
- this._lastMap.set(e3, /* @__PURE__ */ new Map()), this._currentMap.set(e3, /* @__PURE__ */ new Map());
- });
- }
- addMessageSequence(e2) {
- const { key: s2, message: i2 } = e2;
- if ($e(s2) || !this._lastMap.has(s2) || !this._currentMap.has(s2))
- return false;
- const { conversationID: n2, sequence: o2 } = i2, r2 = n2.replace(t.CONV_GROUP, "");
- if (0 === this._lastMap.get(s2).size)
- this._addCurrentMap(e2);
- else if (this._lastMap.get(s2).has(r2)) {
- const t2 = this._lastMap.get(s2).get(r2), i3 = t2.length - 1;
- o2 > t2[0] && o2 < t2[i3] ? (t2.push(o2), t2.sort(), this._lastMap.get(s2).set(r2, t2)) : this._addCurrentMap(e2);
- } else
- this._addCurrentMap(e2);
- return true;
- }
- _addCurrentMap(e2) {
- const { key: s2, message: i2 } = e2, { conversationID: n2, sequence: o2 } = i2, r2 = n2.replace(t.CONV_GROUP, "");
- this._currentMap.get(s2).has(r2) || this._currentMap.get(s2).set(r2, []), this._currentMap.get(s2).get(r2).push(o2);
- }
- _copyData(t2) {
- if (!$e(t2)) {
- this._lastMap.set(t2, /* @__PURE__ */ new Map());
- let e2 = this._lastMap.get(t2);
- for (var [s2, i2] of this._currentMap.get(t2))
- e2.set(s2, i2);
- e2 = null, this._currentMap.set(t2, /* @__PURE__ */ new Map());
- }
- }
- getStatResult(e2) {
- if ($e(this._currentMap.get(e2)) || $e(this._lastMap.get(e2)))
- return null;
- if (0 === this._lastMap.get(e2).size)
- return this._copyData(e2), null;
- let i2 = 0, n2 = 0;
- if (this._lastMap.get(e2).forEach((e3, t3) => {
- var e3 = [...e3.values()], s2 = e3.length;
- i2 += e3[s2 - 1] - e3[0] + 1, n2 += s2;
- }), 0 === i2)
- return null;
- let t2 = Mt(n2 / i2 * 100, 2);
- return 100 < t2 && (t2 = 100), this._copyData(e2), { totalCount: i2, successCountOfMessageReceived: n2, successRateOfMessageReceived: t2 };
- }
- reset() {
- this._currentMap.clear(), this._lastMap.clear();
- }
-};
-var Lo = class extends oi {
- constructor(e2) {
- super(e2), this._n = "QualityStatModule", this.TAG = "im-ssolog-quality-stat", this.reportIndex = 0, this.wholePeriod = false, this._qualityItems = [ai, ci, li, ui, di, _i, hi, pi, gi, mi], this._messageSentItems = [li, ui, di, _i, hi], this._messageReceivedItems = [pi, gi, mi], this.REPORT_INTERVAL = 120, this.REPORT_SDKAPPID_BLACKLIST = [], this.REPORT_TINYID_WHITELIST = [], this._statInfoArr = [], this._avgRTT = new So(), this._avgE2EDelay = new Eo(), this._rateMessageSent = new Do(), this._rateMessageReceived = new Ro();
- const t2 = this.getIEmitInst();
- t2.on(Yi.A2KEY_AND_TINYID_UPDATED, this._onLoginSuccess, this), t2.on(Yi.CLOUD_CONFIG, this._onCloudConfig, this);
- }
- _onLoginSuccess() {
- this._rateMessageSent.initMap(this._messageSentItems), this._rateMessageReceived.initMap(this._messageReceivedItems);
- const e2 = this.get(Ls), t2 = e2.getItem(this.TAG, false);
- !Oe(t2) && xe(t2.forEach) && (Ce.l(this._n + "._onLoginSuccess. logs count:" + t2.length), t2.forEach((e3) => {
- this._statInfoArr.push(e3);
- }), e2.removeItem(this.TAG, false));
- }
- _onCloudConfig() {
- const e2 = this.getCloudConfig("q_rpt_interval"), t2 = this.getCloudConfig("q_rpt_sdkappid_bl"), s2 = this.getCloudConfig("q_rpt_tinyid_wl");
- $e(e2) || (this.REPORT_INTERVAL = Number(e2)), $e(t2) || (this.REPORT_SDKAPPID_BLACKLIST = t2.split(",").map((e3) => Number(e3))), $e(s2) || (this.REPORT_TINYID_WHITELIST = s2.split(","));
- }
- onCheckTimer(e2) {
- this.isLoggedIn() && e2 % this.REPORT_INTERVAL == 0 && (this.wholePeriod = true, this._report());
- }
- addRequestCount() {
- this._avgRTT.addRequestCount();
- }
- addRTT(e2) {
- this._avgRTT.addRTT(e2);
- }
- addMessageDelay(e2) {
- this._avgE2EDelay.addMessageDelay(e2);
- }
- addTotalCount(e2) {
- this._rateMessageSent.addTotalCount(e2) || Ce.w(this._n + ".addTotalCount invalid key:", e2);
- }
- addSuccessCount(e2) {
- this._rateMessageSent.addSuccessCount(e2) || Ce.w(this._n + ".addSuccessCount invalid key:", e2);
- }
- addFailedCountOfUserSide(e2) {
- this._rateMessageSent.addFailedCountOfUserSide(e2) || Ce.w(this._n + ".addFailedCountOfUserSide invalid key:", e2);
- }
- addCost(e2, t2) {
- this._rateMessageSent.addCost(e2, t2) || Ce.w(this._n + ".addCost invalid key or cost:", e2, t2);
- }
- addFileSize(e2, t2) {
- this._rateMessageSent.addFileSize(e2, t2) || Ce.w(this._n + ".addFileSize invalid key or size:", e2, t2);
- }
- addMessageSequence(e2) {
- this._rateMessageReceived.addMessageSequence(e2) || Ce.w(this._n + ".addMessageSequence invalid key:", e2.key);
- }
- _getQualityItem(e2) {
- let t2 = {}, s2 = Ii[this.get(Os).getNetworkType()];
- $e(s2) && (s2 = 8);
- var i2 = { qualityType: fi[e2], timestamp: pe(), networkType: s2, extension: "" };
- switch (e2) {
- case ai:
- t2 = this._avgRTT.getStatResult();
- break;
- case ci:
- t2 = this._avgE2EDelay.getStatResult();
- break;
- case li:
- case ui:
- case di:
- case _i:
- case hi:
- t2 = this._rateMessageSent.getStatResult(e2);
- break;
- case pi:
- case gi:
- case mi:
- t2 = this._rateMessageReceived.getStatResult(e2);
- }
- return null === t2 ? null : { ...i2, ...t2 };
- }
- _report(e2) {
- let t2 = [], s2 = null;
- $e(e2) ? this._qualityItems.forEach((e3) => {
- null !== (s2 = this._getQualityItem(e3)) && (s2.reportIndex = this.reportIndex, s2.wholePeriod = this.wholePeriod, t2.push(s2));
- }) : null !== (s2 = this._getQualityItem(e2)) && (s2.reportIndex = this.reportIndex, s2.wholePeriod = this.wholePeriod, t2.push(s2)), Ce.d(this._n + "._report", t2), 0 < this._statInfoArr.length && (t2 = t2.concat(this._statInfoArr), this._statInfoArr = []);
- const i2 = this.get(Rs), n2 = i2.getSDKAppID(), o2 = i2.getTinyID();
- 0 < (t2 = It(this.REPORT_SDKAPPID_BLACKLIST, n2) && !Ct(this.REPORT_TINYID_WHITELIST, o2) ? [] : t2).length && this._doReport(t2);
- }
- _doReport(t2) {
- var e2 = { header: An(this), quality: t2 };
- this.req({ P: ri.SSO_STAT, data: { ...e2 } }).then(() => {
- this.reportIndex++, this.wholePeriod = false;
- }).catch((e3) => {
- Ce.w(this._n + "._doReport failed. error:", e3), this._statInfoArr = this._statInfoArr.concat(t2), this._flushAtOnce();
- });
- }
- _flushAtOnce() {
- const t2 = this.get(Ls), s2 = t2.getItem(this.TAG, false), i2 = this._statInfoArr, n2 = this._n + "._flushAtOnce";
- if (Oe(s2))
- Ce.l(n2 + " count:" + i2.length), t2.setItem(this.TAG, i2, true, false);
- else {
- let e2 = i2.concat(s2);
- 10 < e2.length && (e2 = e2.slice(0, 10)), Ce.l(n2 + " count:" + e2.length), t2.setItem(this.TAG, e2, true, false);
- }
- this._statInfoArr = [];
- }
- reset() {
- Ce.l(this._n + ".reset"), this._report(), this.reportIndex = 0, this.wholePeriod = false, this.REPORT_SDKAPPID_BLACKLIST = [], this.REPORT_TINYID_WHITELIST = [], this._avgRTT.reset(), this._avgE2EDelay.reset(), this._rateMessageSent.reset(), this._rateMessageReceived.reset();
- }
-};
-var Ao = class extends oi {
- constructor(e2) {
- super(e2), this._n = "WorkerTimerModule", this._isWorkerEnabled = true, this._workerTimer = null, this._timerID = -1, this._init(), this.getIEmitInst().on(Yi.CLOUD_CONFIG, this._onCloudConfig, this);
- }
- isWorkerEnabled() {
- return this._isWorkerEnabled && ie;
- }
- startWorkerTimer() {
- Ce.l(this._n + ".startWorkerTimer"), this._workerTimer && this._workerTimer.postMessage("start");
- }
- stopWorkerTimer() {
- Ce.l(this._n + ".stopWorkerTimer"), this._workerTimer && this._workerTimer.postMessage("stop");
- }
- _init() {
- if (ie) {
- var e2 = URL.createObjectURL(new Blob(['let interval = -1;onmessage = function(event) { if (event.data === "start") { if (interval > 0) { clearInterval(interval); } interval = setInterval(() => { postMessage(""); }, 1000); postMessage(interval); } else if (event.data === "stop") { clearInterval(interval); interval = -1; }};'], { type: "application/javascript; charset=utf-8" }));
- this._workerTimer = new Worker(e2);
- const t2 = this;
- this._workerTimer.onmessage = function(e3) {
- e3.data ? (t2._timerID = e3.data, Ce.l(t2._n + "._init seed:" + t2._timerID)) : t2._m.onCheckTimer();
- };
- }
- }
- _onCloudConfig() {
- var e2 = this.getCloudConfig("enable_worker");
- Ce.l(this._n + "._onCloudConfig enableWorker:" + e2), $e(e2) || "1" === e2 ? !this._isWorkerEnabled && ie && (this._isWorkerEnabled = true, this.startWorkerTimer(), this._m.onWorkerTimerEnabled()) : this._isWorkerEnabled && ie && (this._isWorkerEnabled = false, this.stopWorkerTimer(), this._m.onWorkerTimerDisabled());
- }
- terminate() {
- Ce.l(this._n + ".terminate"), this._workerTimer && (this._workerTimer.terminate(), this._workerTimer = null, this._timerID = -1);
- }
- getTimerID() {
- return this._timerID;
- }
- reset() {
- Ce.l(this._n + ".reset");
- }
-};
-var Oo = class {
- constructor(e2) {
- this._commercialConfigM = e2, this._n = "PurchasedFeatureHandler", this._isCSPluginReported = false, this._featureMap = /* @__PURE__ */ new Map();
- }
- isValidPurchaseBits(e2) {
- return e2 && "string" == typeof e2 && 1 <= e2.length && e2.length <= 64 && /[01]{1,64}/.test(e2);
- }
- parsePurchaseBits(s2) {
- if (this.isValidPurchaseBits(s2)) {
- this._featureMap.clear();
- var n2;
- for (let e2 = s2.length - 1, t2 = 0; 0 <= e2; e2--, t2++)
- n2 = (t2 < 32 ? new i(0, Math.pow(2, t2)) : new i(Math.pow(2, t2 - 32), 0)).toString(), "1" === s2[e2] ? this._featureMap.set(n2, true) : this._featureMap.set(n2, false);
- } else
- Ce.w(this._n + ".parsePurchaseBits invalid purchasebits:" + s2);
- }
- hasPurchasedFeature(e2) {
- return !!this._featureMap.get(e2);
- }
- isFeatureEnabled(e2) {
- const s2 = parseInt(e2).toString(2);
- let n2 = void 0, o2 = true;
- for (let e3 = s2.length - 1, t2 = 0; 0 <= e3; e3--, t2++)
- if ("1" === s2.charAt(e3) && (n2 = (t2 < 32 ? new i(0, Math.pow(2, t2)) : new i(Math.pow(2, t2 - 32), 0)).toString(), !this._featureMap.get(n2))) {
- o2 = false;
- break;
- }
- return Ce.l(`${this._n}.isFeatureEnabled decimalNumber:${e2} key:${n2} ret:` + o2), ii({ enabled: o2 });
- }
- isFeatureEnabledForStat(e2) {
- const s2 = parseInt(e2).toString(2);
- let n2 = void 0;
- for (let e3 = s2.length - 1, t2 = 0; 0 <= e3; e3--, t2++)
- if ("1" === s2.charAt(e3)) {
- if (n2 = (t2 < 32 ? new i(0, Math.pow(2, t2)) : new i(Math.pow(2, t2 - 32), 0)).toString(), !this._featureMap.get(n2))
- break;
- {
- let e4 = "", t3 = 0;
- if (n2 === M.PLUGIN_TRANSLATE ? (e4 = "plugin_translate", t3 = 16) : n2 === M.PLUGIN_VOICE_TO_TEXT ? (e4 = "plugin_voice_to_text", t3 = 17) : n2 === M.PLUGIN_CS ? (e4 = "plugin_cs", t3 = 14) : n2 === M.PLUGIN_PUSH ? (e4 = "plugin_push", t3 = 13) : n2 === M.PLUGIN_BOT ? (e4 = "plugin_bot", t3 = 15) : n2 === M.MSG_REACTION && (e4 = "plugin_emoji_reaction", t3 = 18), "" !== e4) {
- const n3 = this._commercialConfigM.get(Rs).getUIPlatform();
- new Ti(e4).setCode(t3).setUIPlatform(n3).end(), Ce.l(`${this._n}.isFeatureEnabledForStat ${e4} code:${t3} uiPlatform:` + n3);
- }
- }
- }
- }
- isCSPluginEnabled() {
- var e2;
- this._isCSPluginReported || (e2 = this._commercialConfigM.get(Rs).getUIPlatform(), new Ti("plugin_search").setCode(6).setUIPlatform(e2).end(), this._isCSPluginReported = true);
- }
- clear() {
- this._featureMap.clear(), this._isCSPluginReported = false;
- }
-};
-var No = class {
- constructor(e2) {
- this._m = e2, this._n = "CommercialConfigModule", this._expiredTime = 0, this._isFetching = false, this._purchasedFeatureHandler = new Oo(this);
- }
- _canFetch() {
- return this.get(Rs).isLoggedIn() ? !this._isFetching && Date.now() >= this._expiredTime : (this._expiredTime = Date.now() + 2e3, false);
- }
- onCheckTimer(e2) {
- this._canFetch() && this.fetchConfig();
- }
- fetchConfig() {
- const e2 = this._canFetch(), t2 = this._n + ".fetchConfig";
- if (Ce.l(t2 + " canFetch:" + e2), e2) {
- const s2 = new Ti("fetchCommercialConfig"), i2 = this.get(Rs).getSDKAppID(), n2 = this.get(Gs);
- this._isFetching = true, n2.req({ P: ri.FETCH_COMMERCIAL_CONFIG, data: { SDKAppID: i2 } }).then((e3) => {
- s2.setMessage("purchaseBits:" + e3.data.purchaseBits).end(), Ce.l(t2 + " ok."), this._parseConfig(e3.data), this._isFetching = false;
- }).catch((e3) => {
- s2.setError(e3).end(), this._isFetching = false;
- });
- }
- }
- onPushedConfig(e2) {
- var t2 = this._n + ".onPushedConfig data:" + JSON.stringify(e2);
- Ce.l(t2), new Ti("pushedCommercialConfig").setMessage("purchaseBits:" + e2.purchaseBits).end(), this._parseConfig(e2);
- }
- _parseConfig(e2) {
- var t2 = this._n + "._parseConfig", { errorCode: s2, errorMessage: i2, purchaseBits: n2, expiredTime: o2 } = e2;
- 0 === s2 ? (this._purchasedFeatureHandler.parsePurchaseBits(n2), this._expiredTime = Date.now() + 1e3 * o2) : $e(s2) ? (Ce.l(t2 + " failed. Invalid message format:", e2), this._setExpiredTimeOnResponseError(36e5)) : (Ce.e(t2 + ` errorCode:${s2} errorMessage:` + i2), this._setExpiredTimeOnResponseError(12e4));
- }
- _setExpiredTimeOnResponseError(e2) {
- this._expiredTime = Date.now() + e2;
- }
- canIUse(e2) {
- return this._purchasedFeatureHandler.hasPurchasedFeature(e2);
- }
- isFeatureEnabled(e2) {
- return this._purchasedFeatureHandler.isFeatureEnabled(e2);
- }
- isFeatureEnabledForStat(e2) {
- this._purchasedFeatureHandler.isFeatureEnabledForStat(e2);
- }
- isCSPluginEnabled() {
- this._purchasedFeatureHandler.isCSPluginEnabled();
- }
- get(e2) {
- return this._m.get(e2);
- }
- reset() {
- Ce.l(this._n + ".reset"), this._expiredTime = 0, this._isFetching = false, this._purchasedFeatureHandler.clear();
- }
-};
-var Po = class extends oi {
- constructor(e2) {
- super(e2), this._m = e2, this._n = "OfflinePushModule", this._offlinePushPlugin = void 0, this._androidPushConfig = { huaweiPushBussinessId: "", xiaomiPushBussinessId: "", xiaomiPushAppId: "", xiaomiPushAppKey: "", meizuPushBussinessId: "", meizuPushAppId: "", meizuPushAppKey: "", vivoPushBussinessId: "", fcmPushBussinessId: "", oppoPushBussinessId: "", oppoPushAppKey: "", oppoPushAppSecret: "", honorPushBussinessId: "" }, this._deviceToken = "", this._businessID = 0, this._iosBusinessID = 0, this._c2cUnreadCount = 0, this._groupUnreadCount = 0, this._isWebUniapp = 0;
- }
- registerPlugin(e2) {
- var t2, s2, i2, n2, o2, r2, a2, c2, l2, d2, _2, u2, h2;
- P ? (this._offlinePushPlugin = e2["tim-offline-push-plugin"], { huaweiBusinessID: t2, xiaomiBusinessID: s2, xiaomiAppID: i2, xiaomiAppKey: n2, meizuBusinessID: o2, meizuAppID: r2, meizuAppKey: a2, vivoBusinessID: c2, oppoBusinessID: l2, oppoAppKey: d2, oppoAppSecret: _2, honorBusinessID: u2, iosBusinessID: h2 } = e2.offlinePushConfig || {}, this._androidPushConfig.huaweiPushBussinessId = t2, this._androidPushConfig.xiaomiPushBussinessId = s2, this._androidPushConfig.xiaomiPushAppId = i2, this._androidPushConfig.xiaomiPushAppKey = n2, this._androidPushConfig.meizuPushBussinessId = o2, this._androidPushConfig.meizuPushAppId = r2, this._androidPushConfig.meizuPushAppKey = a2, this._androidPushConfig.vivoPushBussinessId = c2, this._androidPushConfig.oppoPushBussinessId = l2, this._androidPushConfig.oppoPushAppKey = d2, this._androidPushConfig.oppoPushAppSecret = _2, this._androidPushConfig.honorPushBussinessId = u2, new Ti("registerPlugin").setMessage("tim-offline-push-plugin").setMoreMessage("isExist:" + !$e(this._offlinePushPlugin)).end(true), Ce.l(this._n + ".registerPlugin ok. offlinePushConfig:" + JSON.stringify(e2.offlinePushConfig)), this._iosBusinessID = h2, this._setAppShowListener()) : this.warn("OfflinePushInUniapp");
- }
- init() {
- this._isWebUniapp = this.getUniAppPlatform(), this._getDeviceToken();
- }
- _getDeviceToken() {
- const a2 = this._n + "._getDeviceToken";
- if (xe(this._offlinePushPlugin.getDeviceToken)) {
- let r2 = `androidPushConfig:${JSON.stringify(this._androidPushConfig)}, iosBusinessID:` + this._iosBusinessID;
- Ce.l(a2 + " start. " + r2), new Ti("_getDeviceToken").setMessage(r2).end(true), this._offlinePushPlugin.getDeviceToken(this._androidPushConfig, (e2) => {
- const t2 = new Ti("getDeviceTokenRes"), { code: s2, msg: i2 } = e2;
- if (0 === s2) {
- const { deviceToken: s3, deviceBrand: i3, deviceType: n2, bussinessId: o2 } = e2.data;
- this._deviceToken = s3, this._businessID = o2 || this._iosBusinessID, r2 = `deviceToken:${s3}, deviceBrand:${i3 || n2}, businessID:` + this._businessID, Ce.l(a2 + " ok. " + r2), t2.setMessage(r2).end(true), this._setToken();
- } else
- t2.setMessage(`code:${s2}, msg:` + i2).end(true), Ce.e(a2 + " failed. error:", e2);
- });
- } else
- Ce.e(a2 + " getDeviceToken is not a function");
- }
- canIUseOfflinePush() {
- return P && !$e(this._offlinePushPlugin);
- }
- _setAppShowListener() {
- const t2 = this._n + "._setAppShowListener";
- $e(this._offlinePushPlugin) ? Ce.e(t2 + " offlinePushPlugin is undefined") : xe(this._offlinePushPlugin.setAppShowListener) ? (new Ti("_setAppShowListener").end(true), Ce.l(t2 + " start"), this._offlinePushPlugin.setAppShowListener((e2) => {
- e2 = (e2 || {}).appShow;
- new Ti("setAppShowListenerRes").setMessage("appShow:" + e2).end(true), Ce.l(t2 + " ok. appShow:" + e2), this._m.isReady() && (0 === e2 ? (this._getConvUnreadCount(), this._onBackground()) : 1 === e2 && this._onForeground());
- })) : Ce.e(t2 + " setAppShowListener is not a function");
- }
- getDeviceBrand() {
- var e2;
- if (!$e(this._offlinePushPlugin) && xe(this._offlinePushPlugin.getDeviceType))
- return e2 = (this._offlinePushPlugin.getDeviceType() || {})["deviceType"], Ce.l(this._n + ".getDeviceBrand ok. deviceType:" + e2), e2;
- }
- _setToken() {
- const t2 = this._n + "._setToken", e2 = this.get(Rs);
- let s2, i2 = 1, n2 = "", r2 = "";
- Oe(this._deviceToken) && (i2 = 0);
- var a2 = this.getUniAppPlatform(), c2 = this.getDeviceBrand();
- a2 === o.IOS || a2 === o.IPAD || a2 === o.MAC ? r2 = this._deviceToken : a2 === o.ANDROID && (n2 = this._deviceToken);
- const l2 = new Ti("offlinePushSetToken");
- return s2 = `deviceToken:${r2 || n2}, businessID:${this._businessID}, deviceBrand:${c2}, isWebUniapp:${this._isWebUniapp}, pushMsg:${i2}, platform:` + a2, l2.setMessage(s2), Ce.l(t2 + " " + s2), this.req({ P: ri.SET_TOKEN, data: { tokenID: n2, pushMsg: i2, sdkAppID: e2.getSDKAppID(), businessID: parseInt(this._businessID), deviceBrand: c2, deviceToken: r2, isWebUniapp: this._isWebUniapp } }).then((e3) => (l2.end(), Ce.l(t2 + " ok"), e3)).catch((e3) => (l2.setError(e3).end(), Ce.e(t2 + " failed. error:", e3), ni(e3)));
- }
- _getConvUnreadCount() {
- this._c2cUnreadCount = 0, this._groupUnreadCount = 0, this.get(Ds).getLocalConvList().forEach((e2) => {
- e2.type === t.CONV_C2C && (this._c2cUnreadCount += e2.unreadCount), e2.type === t.CONV_GROUP && (this._groupUnreadCount += e2.unreadCount);
- });
- }
- _onBackground() {
- const t2 = this._n + "._onBackground", s2 = new Ti("_onBackground");
- this.req({ P: ri.STAT_BACKGROUND, data: { c2cUnreadCount: this._c2cUnreadCount, groupUnreadCount: this._groupUnreadCount, isWebUniapp: this._isWebUniapp } }).then((e2) => (s2.setMessage(`c2cUnreadCount: ${this._c2cUnreadCount}, groupUnreadCount: ` + this._groupUnreadCount).end(), Ce.l(t2 + " ok"), e2)).catch((e2) => {
- s2.setError(e2).end(), Ce.e(t2 + " failed. error:", e2);
- });
- }
- _onForeground() {
- const t2 = this._n + "._onForeground", s2 = new Ti("_onForeground");
- this.req({ P: ri.STAT_FOREGROUND, data: { isWebUniapp: this._isWebUniapp } }).then((e2) => (s2.end(), Ce.l(t2 + " ok"), e2)).catch((e2) => {
- s2.setError(e2).end(), Ce.e(t2 + " failed. error:", e2);
- });
- }
- getUniAppPlatform() {
- var e2 = uni.getSystemInfoSync().platform, t2 = this.getDeviceBrand();
- return "ios" === e2 ? o.IOS : "android" === e2 ? o.ANDROID : 1002 === t2 ? o.IPAD : 1001 === t2 ? o.MAC : void 0;
- }
- reset() {
- this._deviceToken = "", this._businessID = 0, this._c2cUnreadCount = 0, this._groupUnreadCount = 0, this._isWebUniapp = 0, Ce.l(this._n + ".reset");
- }
-};
-var Uo = class extends oi {
- constructor(e2) {
- super(e2), this._m = e2, this._n = "TIMPushModule", this._pluginName = "TIMPush", this._pushPlugin = void 0, this._androidPushConfig = {}, this._deviceToken = "", this._businessID = 0, this._iOSBusinessID = 0, this._c2cUnreadCount = 0, this._groupUnreadCount = 0, this._isWebUniapp = 0, this._deviceInfo = { notificationStatus: 0, deviceModel: "", systemVersion: "", pushVersion: "1.0.1", packageName: "" };
- }
- registerPlugin(e2) {
- var t2, s2, i2;
- P ? (t2 = this._n + ".registerPlugin", { androidConfig: s2, iOSConfig: i2 } = (this._pushPlugin = e2["tim-push"], this._getDeviceInfo(), e2.pushConfig || {}), we(s2) && (this._androidPushConfig = s2[this._deviceInfo.packageName]), s2 = (i2 || {}).iOSBusinessID, this._iOSBusinessID = s2, i2 = !$e(this._pushPlugin), new Ti("registerPlugin").setMessage(this._pluginName).setMoreMessage("isExisted:" + i2).end(true), Ce.l(t2 + " ok. pushConfig:" + JSON.stringify(e2.pushConfig)), i2 ? (this._setAppShowListener(), this._setPushEventReportListener()) : Ce.e(t2 + ` ${this._pluginName} is undefined`)) : this.warn("TIMPushInUniapp");
- }
- init() {
- this._isWebUniapp = this.getUniAppPlatform(), this._reportEventCacheList(), this._getDeviceToken(), this.get(qs).isFeatureEnabledForStat(Math.pow(2, 41));
- }
- _reportEventCacheList() {
- const r2 = this._n + "._reportEventCacheList";
- xe(this._pushPlugin.getPushEventCacheList) ? (new Ti("_reportEventCacheList").end(true), this._pushPlugin.getPushEventCacheList((e2) => {
- const { code: t2, data: { eventList: s2 } } = e2, i2 = new Ti("getPushEventCacheListRes");
- if (i2.setCode(t2), 0 !== t2)
- i2.setMessage("res:" + JSON.stringify(e2)).end(true), Ce.e(r2 + " failed. error:" + JSON.stringify(e2));
- else {
- var n2 = s2.length < 10 ? "eventList:" + JSON.stringify(s2) : "eventList.length:" + s2.length;
- Ce.l(r2 + " ok. " + n2), i2.setMessage(n2).end(true);
- const o2 = { ...e2.data, eventList: [] };
- for (; 0 < s2.length; )
- o2.eventList = s2.splice(0, 40), this._pushReport(o2);
- }
- })) : Ce.e(this._pluginName + ".getPushEventCacheList is not a function");
- }
- _getDeviceToken() {
- const a2 = this._n + "._getDeviceToken";
- if (xe(this._pushPlugin.getDeviceToken)) {
- let r2 = `androidPushConfig:${JSON.stringify(this._androidPushConfig)} iOSBusinessID:` + this._iOSBusinessID;
- Ce.l(a2 + " start. " + r2), new Ti("_getDeviceToken").setMessage(r2).end(true), this._pushPlugin.getDeviceToken(this._androidPushConfig, (e2) => {
- const { code: t2, msg: s2 } = e2, i2 = new Ti("getDeviceTokenRes");
- if (i2.setCode(t2), 0 === t2) {
- const { deviceToken: t3, deviceBrand: s3, deviceType: n2, bussinessId: o2 } = e2.data;
- return this._deviceToken = t3, this._businessID = o2 || this._iOSBusinessID, r2 = `deviceToken:${t3} deviceBrand:${s3 || n2} businessID:` + this._businessID, Ce.l(a2 + " ok. " + r2), i2.setMessage(r2).end(true), void this._setToken();
- }
- i2.setMessage(s2).end(true), Ce.e(a2 + " failed. error:" + JSON.stringify(e2));
- });
- } else
- Ce.e(this._pluginName + ".getDeviceToken is not a function");
- }
- _getDeviceInfo() {
- var e2 = this._n + "._getDeviceInfo";
- if (xe(this._pushPlugin.getDeviceInfo)) {
- const t2 = this._pushPlugin.getDeviceInfo(), { code: s2, data: i2 } = t2, n2 = new Ti("_getDeviceInfo");
- if (n2.setCode(s2), 0 === s2) {
- this._deviceInfo = { ...this._deviceInfo, ...i2 }, this._deviceInfo.pushVersion || (this._deviceInfo.pushVersion = "1.0.1");
- const t3 = "deviceInfo:" + JSON.stringify(this._deviceInfo);
- return Ce.l(e2 + " ok. " + t3), void n2.setMessage(t3).end(true);
- }
- n2.setMessage("deviceInfoRes:" + JSON.stringify(t2)).end(true), Ce.e(e2 + " failed. error:" + JSON.stringify(t2));
- } else
- Ce.e(this._pluginName + ".getDeviceInfo is not a function");
- }
- canIUseTIMPush() {
- return P && !$e(this._pushPlugin);
- }
- _setAppShowListener() {
- const t2 = this._n + "._setAppShowListener";
- xe(this._pushPlugin.setAppShowListener) ? (new Ti("_setAppShowListener").end(true), Ce.l(t2 + " start"), this._pushPlugin.setAppShowListener((e2) => {
- e2 = (e2 || {}).appShow;
- new Ti("setAppShowListenerRes").setMessage("appShow:" + e2).end(true), Ce.l(t2 + " ok. appShow:" + e2), this._m.isReady() && (0 === e2 ? (this._getConvUnreadCount(), this._onBackground()) : 1 === e2 && this._onForeground());
- })) : Ce.e(this._pluginName + ".setAppShowListener is not a function");
- }
- _setPushEventReportListener() {
- const o2 = this._n + "._setPushEventReportListener";
- xe(this._pushPlugin.setPushEventReportListener) ? (new Ti("_setPushEventReportListener").end(true), this._pushPlugin.setPushEventReportListener((e2) => {
- const { code: t2, data: s2 } = e2, i2 = s2["eventList"], n2 = new Ti("setPushEventReportListenerRes");
- if (n2.setCode(t2), 0 === t2) {
- const e3 = "eventList:" + JSON.stringify(i2);
- return Ce.l(o2 + " ok. " + e3), n2.setMessage(e3).end(true), void (this._m.isReady() && Fe(i2) && 0 < i2.length && this._pushReport(s2));
- }
- n2.setMessage("res:" + JSON.stringify(e2)).end(true), Ce.e(o2 + " failed. error:" + JSON.stringify(e2));
- })) : Ce.e(this._pluginName + ".setPushEventReportListener is not a function");
- }
- getDeviceBrand() {
- var e2;
- if (!$e(this._pushPlugin) && xe(this._pushPlugin.getDeviceType))
- return e2 = (this._pushPlugin.getDeviceType() || {})["deviceType"], Ce.l(this._n + ".getDeviceBrand ok. deviceType:" + e2), e2;
- }
- _setToken() {
- const t2 = this._n + "._setToken", e2 = this.get(Rs);
- let s2, i2 = 1, n2 = "", r2 = "";
- Oe(this._deviceToken) && (i2 = 0);
- var a2 = this.getUniAppPlatform(), c2 = this.getDeviceBrand();
- a2 === o.IOS || a2 === o.IPAD || a2 === o.MAC ? r2 = this._deviceToken : a2 === o.ANDROID && (n2 = this._deviceToken);
- const l2 = { tokenID: n2, pushMsg: i2, sdkAppID: e2.getSDKAppID(), businessID: parseInt(this._businessID), deviceBrand: c2, deviceToken: r2, isWebUniapp: this._isWebUniapp, ...this._deviceInfo }, d2 = new Ti("_setToken");
- s2 = "data:" + JSON.stringify(l2), d2.setMessage(s2), Ce.l(t2 + " " + s2), this.req({ P: ri.SET_TOKEN, data: l2 }).then(() => {
- d2.end(), Ce.w(t2 + " ok");
- }).catch((e3) => {
- d2.setError(e3).end(), Ce.e(t2 + " failed. error:", e3), ni(e3);
- });
- }
- _getConvUnreadCount() {
- this._c2cUnreadCount = 0, this._groupUnreadCount = 0, this.get(Ds).getLocalConvList().forEach((e2) => {
- e2.type === t.CONV_C2C && (this._c2cUnreadCount += e2.unreadCount), e2.type === t.CONV_GROUP && (this._groupUnreadCount += e2.unreadCount);
- });
- }
- _onBackground() {
- const t2 = this._n + "._onBackground", s2 = new Ti("_onBackground");
- this.req({ P: ri.STAT_BACKGROUND, data: { c2cUnreadCount: this._c2cUnreadCount, groupUnreadCount: this._groupUnreadCount, isWebUniapp: this._isWebUniapp } }).then(() => {
- s2.setMessage(`c2cUnreadCount:${this._c2cUnreadCount} groupUnreadCount:` + this._groupUnreadCount).end(), Ce.l(t2 + " ok");
- }).catch((e2) => {
- s2.setError(e2).end(), Ce.e(t2 + " failed. error:", e2);
- });
- }
- _onForeground() {
- const t2 = this._n + "._onForeground", s2 = new Ti("_onForeground");
- this.req({ P: ri.STAT_FOREGROUND, data: { isWebUniapp: this._isWebUniapp } }).then(() => {
- s2.end(), Ce.l(t2 + " ok");
- }).catch((e2) => {
- s2.setError(e2).end(), Ce.e(t2 + " failed. error:", e2);
- });
- }
- _pushReport(e2) {
- const t2 = this._n + "._pushReport", s2 = new Ti("_pushReport");
- this.req({ P: ri.PUSH_REPORT, data: { eventList: e2.eventList } }).then(() => {
- s2.end(), this._notifyReportSuccess(e2);
- }).catch((e3) => {
- s2.setError(e3).end(), Ce.e(t2 + " failed. error:", e3);
- });
- }
- _notifyReportSuccess(e2) {
- !$e(this._pushPlugin) && xe(this._pushPlugin.notifyReportSuccess) && (this._pushPlugin.notifyReportSuccess(e2), Ce.l(this._n + "._notifyReportSuccess ok"));
- }
- getUniAppPlatform() {
- var e2 = uni.getSystemInfoSync().platform, t2 = this.getDeviceBrand();
- return "ios" === e2 ? o.IOS : "android" === e2 ? o.ANDROID : 1002 === t2 ? o.IPAD : 1001 === t2 ? o.MAC : void 0;
- }
- reset() {
- this._deviceToken = "", this._businessID = 0, this._c2cUnreadCount = 0, this._groupUnreadCount = 0, this._isWebUniapp = 0, Ce.l(this._n + ".reset");
- }
-};
-var Go = class extends oi {
- constructor(e2) {
- super(e2), this._n = "ProfanityFilterModule", this._plugin = null, this._filterConfigMap = /* @__PURE__ */ new Map(), this._startIndex = 0, this._version = 0, this._canIUseLexicon = false, this._isFetching = false, this._expiredTime = 0;
- }
- init() {
- const e2 = this.get(Ps).getPlugin("tim-profanity-filter-plugin");
- e2 && (this._plugin = new e2({ logger: Ce, isArray: Fe, isMap: Ne, isDevMode: this.isDevMode() }), this._getLexicon());
- }
- onCheckTimer() {
- this._plugin && this._canIUseLexicon && this.isLoggedIn() && !this._isFetching && Date.now() >= this._expiredTime && this._getLexicon();
- }
- filterMessage(e2, s2) {
- let i2 = true;
- if (!this._plugin || !this._canIUseLexicon)
- return i2;
- if (s2 && s2.messageControlInfo && true === s2.messageControlInfo.excludedFromContentModeration)
- return i2;
- const { type: n2, conversationType: o2 } = e2;
- if (n2 !== t.MSG_TEXT && n2 !== t.MSG_CUSTOM)
- return i2;
- const r2 = this._n + ".filterMessage";
- let a2;
- if (Ce.l("" + r2), n2 === t.MSG_TEXT) {
- if (o2 === t.CONV_C2C ? a2 = I : o2 === t.CONV_GROUP && (a2 = T), !this._isConfigOn(a2))
- return i2;
- const { type: s3, modifiedText: n3 } = this._plugin.filter(e2.payload.text);
- 1 === s3 ? i2 = false : 2 === s3 && (e2.payload.text = n3);
- } else if (n2 === t.MSG_CUSTOM) {
- if (o2 === t.CONV_C2C ? a2 = C : o2 === t.CONV_GROUP && (a2 = y), !this._isConfigOn(a2))
- return i2;
- const s3 = this._plugin.filter(e2.payload.data), n3 = this._plugin.filter(e2.payload.description), r3 = this._plugin.filter(e2.payload.extension);
- 1 === s3.type || 1 === n3.type || 1 === r3.type ? i2 = false : (2 === s3.type && (e2.payload.data = s3.modifiedText), 2 === n3.type && (e2.payload.description = n3.modifiedText), 2 === r3.type && (e2.payload.extension = r3.modifiedText));
- }
- return Ce.l(r2 + " done. isAllowedToSend:" + i2), i2;
- }
- filterText(e2, t2) {
- const s2 = this._n + ".filterText", i2 = { isAllowedToSend: true, modifiedText: e2 };
- if (!this._plugin || !this._canIUseLexicon)
- return i2;
- if (!this._isConfigOn(t2))
- return i2;
- Ce.l(s2);
- var { type: t2, modifiedText: e2 } = this._plugin.filter(e2);
- return 1 === t2 ? i2.isAllowedToSend = false : 2 === t2 && (i2.modifiedText = e2), Ce.l(s2 + " done. ret:", i2), i2;
- }
- _getLexicon() {
- const d2 = new Ti("profanityFilter"), _2 = this._n + "._getLexicon";
- this._isFetching = true, this.req({ P: ri.GET_PROFANITY_LIST, data: { startIndex: this._startIndex, version: this._version } }).then((e2) => {
- var { errorInfo: e2, filterConfig: t2, lexicon: s2, strToken: i2, completeFlag: n2, nextStartIndex: o2, version: r2, expiredTime: a2 } = e2.data, { errorCode: c2, errorMessage: l2 } = e2;
- return 0 !== c2 ? (this._isFetching = false, Ce.w(_2 + " failed. error:", e2), void d2.setCode(c2).setMessage(l2).end()) : (this._onFilterConfig(t2), this._getToken(i2), 1 === n2 ? (Ce.l(_2 + ` done. version:${r2} expiredTime:` + a2), this._version = r2, this._canIUseLexicon = true, this._isFetching = false, this._expiredTime = Date.now() + 1e3 * a2, void this._plugin.onLexiconCompleted(s2)) : (this._startIndex = o2, this._plugin.onLexiconSliced(s2), void this._getLexicon()));
- }).catch((e2) => {
- d2.setError(e2).end(), this._isFetching = false, Ce.l(_2 + " failed. error:", e2);
- });
- }
- _onFilterConfig(t2) {
- Oe(t2) || (this._filterConfigMap.clear(), Object.keys(t2).forEach((e2) => {
- this._filterConfigMap.set(e2, t2[e2]);
- }), Ce.l(`${this._n}._onFilterConfig. keys:${Array.from(this._filterConfigMap.keys())} values:` + Array.from(this._filterConfigMap.values())));
- }
- _isConfigOn(e2) {
- return 1 === this._filterConfigMap.get(e2);
- }
- _getToken(s2) {
- if (ke(s2)) {
- var i2 = s2.length;
- let t2 = "";
- if (i2 % 2 == 0)
- for (let e2 = 0; e2 <= i2 - 1; e2 += 2)
- t2 = (t2 += s2[e2 + 1]) + s2[e2];
- else {
- for (let e2 = 0; e2 < i2 - 1; e2 += 2)
- t2 = (t2 += s2[e2 + 1]) + s2[e2];
- t2 += s2[i2 - 1];
- }
- this._plugin.onToken(t2);
- }
- }
- reset() {
- Ce.l(this._n + ".reset"), this._plugin && (this._plugin.reset(), this._plugin = null), this._filterConfigMap.clear(), this._startIndex = 0, this._version = 0, this._canIUseLexicon = false, this._isFetching = false, this._expiredTime = 0;
- }
-};
-var ko = class {
- constructor(e2) {
- this._m = e2, this._n = "TransCmdModule", this._TRTCCommandList = ["tui_room_svr.*", "callkit_records_svr.*", "room_engine_srv.*", "room_engine_http_srv.*", "room_engine_mic.*", "live_engine_srv.*", "live_engine_http_srv.*", "live_engine_pk.*", "trtc_ai_service.*", "call_engine_srv.*"], this._TRTCCommandMap = /* @__PURE__ */ new Map(), this._setTRTCCommandMap(), this._m.getIEmitInst().on(Yi.CLOUD_CONFIG, this._onCloudConfig, this);
- }
- _onCloudConfig() {
- let e2 = this._m.get(ws).getCloudConfig("rtc_cmd");
- $e(e2) || ((e2 = JSON.parse(e2)).forEach((e3) => {
- this._TRTCCommandList.includes(e3) || this._TRTCCommandList.push(e3);
- }), this._setTRTCCommandMap());
- }
- _setTRTCCommandMap() {
- var s2;
- for (let e2 = 0, t2 = this._TRTCCommandList.length; e2 < t2; e2++)
- s2 = this._TRTCCommandList[e2].split(".")[0], this._TRTCCommandMap.set(s2, 1);
- }
- onRoomCustomDataReceived(t2) {
- this._m.getOEmitInst().emit(e.ROOM_CUSTOM_DATA_RECEIVED, t2);
- }
- sendTRTCCustomData(e2) {
- var { serviceCommand: e2, data: t2 } = e2;
- let s2 = f.NAME.TUIROOM_SVR + ".*";
- return $e(e2) || (s2 = e2), this._isValidServiceCommand(s2) ? this._trans({ servcmd: s2, data: t2 }) : ni({ code: ei.INVALID_TRTC_CMD });
- }
- _trans(e2) {
- Ce.d(this._n + "._trans. options:" + JSON.stringify(e2));
- var { servcmd: e2, data: t2 } = e2;
- return this._m.get(Gs).trans({ servcmd: e2, data: ke(t2) ? JSON.parse(t2) : t2 });
- }
- _isValidServiceCommand(e2) {
- if (e2.endsWith(".*"))
- return this._TRTCCommandList.includes(e2);
- e2 = e2.split(".")[0];
- return this._TRTCCommandMap.has(e2);
- }
- isTRTCCommand(e2) {
- e2 = e2.split(".")[0];
- return this._TRTCCommandMap.has(e2);
- }
- reset() {
- Ce.l(this._n + ".reset");
- }
-};
-var wo = class {
- constructor(e2) {
- this._m = e2, this._n = "ErrMsgModule", this.TIM_ERROR_ASSISTANCE = "tim_error_assistance", this.STORAGE_EXPIRES_TIME = 6048e5, this._map = /* @__PURE__ */ new Map(), this._init();
- }
- _init() {
- var t2 = this._getStorageModule().getItem(this.TIM_ERROR_ASSISTANCE, false);
- if (t2) {
- let e2;
- try {
- e2 = JSON.parse(t2);
- } catch (e3) {
- this._getStorageModule().removeItem(this.TIM_ERROR_ASSISTANCE, false), Ce.w(this._n + "._init error:", e3);
- }
- e2 && (this._needToUpdate(e2) ? this._fetch() : this._fillMap(e2.message));
- } else
- this._fetch();
- }
- _needToUpdate(e2) {
- var { localSavedTime: e2, localSavedVersion: t2 } = e2, e2 = e2 && (/* @__PURE__ */ new Date()).getTime() - e2 >= this.STORAGE_EXPIRES_TIME, t2 = !t2 || "3.5.2" !== t2;
- return Ce.l(this._n + `._needToUpdate isTimeout:${e2} isDifferentVersion:` + t2), e2 || t2;
- }
- _fetch() {
- if (!this._m.get(Rs).isPrivateNetWork()) {
- const e2 = "https://web.sdk.qcloud.com/im/download/error-message/v3/0.0.7/tim-error-message.txt", t2 = "application/x-www-form-urlencoded;charset=UTF-8", s2 = this._n + "._fetch ok in", i2 = this;
- if (k)
- $.request({ url: e2, method: "GET", timeout: 3e3, header: { "content-type": t2 }, dataType: "text", success: (e3) => {
- i2._fillAndSave(e3.data), Ce.l(s2 + " mini program");
- }, fail: () => {
- } });
- else {
- const n2 = new XMLHttpRequest(), o2 = setTimeout(() => {
- n2.abort();
- }, 3e3);
- n2.onreadystatechange = function() {
- 4 === n2.readyState && (o2 && clearTimeout(o2), 200 !== n2.status && 304 !== n2.status || (Ce.l(s2 + " browser"), i2._fillAndSave(n2.responseText)));
- }, n2.open("GET", e2, true), n2.setRequestHeader("Content-type", t2), n2.send();
- }
- }
- }
- _fillAndSave(e2) {
- this._fillMap(e2), this._getStorageModule().setItem(this.TIM_ERROR_ASSISTANCE, JSON.stringify({ message: e2, localSavedTime: (/* @__PURE__ */ new Date()).getTime(), localSavedVersion: "3.5.2" }), true, false);
- }
- _getStorageModule() {
- return this._m.get(Ls);
- }
- _fillMap(e2) {
- this._map.clear();
- const t2 = e2.split(";\n"), s2 = t2.length;
- let i2, n2, o2;
- var r2 = new RegExp(/'/g);
- for (let e3 = 0; e3 < s2; e3++)
- if (i2 = t2[e3].indexOf(":"), n2 = t2[e3].slice(0, i2), o2 = t2[e3].slice(i2 + 1, t2[e3].length), !n2.startsWith("//")) {
- if ($e(o2))
- continue;
- this._map.set(n2, o2.replace(r2, ""));
- }
- }
- get(e2) {
- var { isIntl: e2, key: t2, replacement1: s2, replacement2: i2 } = e2;
- let n2 = e2 ? t2 + "_en" : t2 + "_cn", o2 = (!this._map.has(n2) && this._map.has(t2) && (n2 = t2), "");
- return this._map.has(n2) && (o2 = this._map.get(n2), $e(s2) || (o2 = o2.replace("$replacement1", s2)), $e(i2) || (o2 = o2.replace("$replacement2", i2))), o2;
- }
- reset() {
- Ce.l(this._n + ".reset");
- }
-};
-var bo = Gn(function(e2, t2) {
- var s2 = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array;
- t2.assign = function(e3) {
- for (var t3, s3, i3 = Array.prototype.slice.call(arguments, 1); i3.length; ) {
- var n3 = i3.shift();
- if (n3) {
- if ("object" != typeof n3)
- throw new TypeError(n3 + "must be non-object");
- for (var o2 in n3)
- t3 = n3, s3 = o2, Object.prototype.hasOwnProperty.call(t3, s3) && (e3[o2] = n3[o2]);
- }
- }
- return e3;
- }, t2.shrinkBuf = function(e3, t3) {
- return e3.length === t3 ? e3 : e3.subarray ? e3.subarray(0, t3) : (e3.length = t3, e3);
- };
- var i2 = { arraySet: function(e3, t3, s3, i3, n3) {
- if (t3.subarray && e3.subarray)
- e3.set(t3.subarray(s3, s3 + i3), n3);
- else
- for (var o2 = 0; o2 < i3; o2++)
- e3[n3 + o2] = t3[s3 + o2];
- }, flattenChunks: function(e3) {
- for (var t3, s3, i3, n3 = 0, o2 = 0, r2 = e3.length; o2 < r2; o2++)
- n3 += e3[o2].length;
- for (i3 = new Uint8Array(n3), o2 = t3 = 0, r2 = e3.length; o2 < r2; o2++)
- s3 = e3[o2], i3.set(s3, t3), t3 += s3.length;
- return i3;
- } }, n2 = { arraySet: function(e3, t3, s3, i3, n3) {
- for (var o2 = 0; o2 < i3; o2++)
- e3[n3 + o2] = t3[s3 + o2];
- }, flattenChunks: function(e3) {
- return [].concat.apply([], e3);
- } };
- t2.setTyped = function(e3) {
- e3 ? (t2.Buf8 = Uint8Array, t2.Buf16 = Uint16Array, t2.Buf32 = Int32Array, t2.assign(t2, i2)) : (t2.Buf8 = Array, t2.Buf16 = Array, t2.Buf32 = Array, t2.assign(t2, n2));
- }, t2.setTyped(s2);
-});
-var Fo = (bo.assign, bo.shrinkBuf, bo.setTyped, bo.Buf8, bo.Buf16, bo.Buf32, function(e2, t2, s2, i2) {
- for (var n2 = 65535 & e2 | 0, o2 = e2 >>> 16 & 65535 | 0, r2 = 0; 0 !== s2; ) {
- for (s2 -= r2 = 2e3 < s2 ? 2e3 : s2; o2 = o2 + (n2 = n2 + t2[i2++] | 0) | 0, --r2; )
- ;
- n2 %= 65521, o2 %= 65521;
- }
- return n2 | o2 << 16 | 0;
-});
-var $o = function() {
- for (var e2 = [], t2 = 0; t2 < 256; t2++) {
- for (var s2 = t2, i2 = 0; i2 < 8; i2++)
- s2 = 1 & s2 ? 3988292384 ^ s2 >>> 1 : s2 >>> 1;
- e2[t2] = s2;
- }
- return e2;
-}();
-var qo = function(e2, t2, s2, i2) {
- var n2 = $o, o2 = i2 + s2;
- e2 ^= -1;
- for (var r2 = i2; r2 < o2; r2++)
- e2 = e2 >>> 8 ^ n2[255 & (e2 ^ t2[r2])];
- return -1 ^ e2;
-};
-var xo = function(e2, d2) {
- var _2, t2, s2, u2, i2, h2, n2 = e2.state, o2 = e2.next_in, p2 = e2.input, g2 = o2 + (e2.avail_in - 5), r2 = e2.next_out, a2 = e2.output, m2 = r2 - (d2 - e2.avail_out), f2 = r2 + (e2.avail_out - 257), M2 = n2.dmax, I2 = n2.wsize, C2 = n2.whave, T2 = n2.wnext, v2 = n2.window, c2 = n2.hold, l2 = n2.bits, y2 = n2.lencode, E2 = n2.distcode, D2 = (1 << n2.lenbits) - 1, S2 = (1 << n2.distbits) - 1;
- e:
- do {
- for (l2 < 15 && (c2 += p2[o2++] << l2, l2 += 8, c2 += p2[o2++] << l2, l2 += 8), _2 = y2[c2 & D2]; ; ) {
- if (c2 >>>= t2 = _2 >>> 24, l2 -= t2, 0 == (t2 = _2 >>> 16 & 255))
- a2[r2++] = 65535 & _2;
- else {
- if (!(16 & t2)) {
- if (0 == (64 & t2)) {
- _2 = y2[(65535 & _2) + (c2 & (1 << t2) - 1)];
- continue;
- }
- if (32 & t2) {
- n2.mode = 12;
- break e;
- }
- e2.msg = "invalid literal/length code", n2.mode = 30;
- break e;
- }
- for (s2 = 65535 & _2, (t2 &= 15) && (l2 < t2 && (c2 += p2[o2++] << l2, l2 += 8), s2 += c2 & (1 << t2) - 1, c2 >>>= t2, l2 -= t2), l2 < 15 && (c2 += p2[o2++] << l2, l2 += 8, c2 += p2[o2++] << l2, l2 += 8), _2 = E2[c2 & S2]; ; ) {
- if (c2 >>>= t2 = _2 >>> 24, l2 -= t2, !(16 & (t2 = _2 >>> 16 & 255))) {
- if (0 == (64 & t2)) {
- _2 = E2[(65535 & _2) + (c2 & (1 << t2) - 1)];
- continue;
- }
- e2.msg = "invalid distance code", n2.mode = 30;
- break e;
- }
- if (u2 = 65535 & _2, l2 < (t2 &= 15) && (c2 += p2[o2++] << l2, (l2 += 8) < t2 && (c2 += p2[o2++] << l2, l2 += 8)), (u2 += c2 & (1 << t2) - 1) > M2) {
- e2.msg = "invalid distance too far back", n2.mode = 30;
- break e;
- }
- if (c2 >>>= t2, l2 -= t2, u2 > (t2 = r2 - m2)) {
- if ((t2 = u2 - t2) > C2 && n2.sane) {
- e2.msg = "invalid distance too far back", n2.mode = 30;
- break e;
- }
- if (h2 = v2, (i2 = 0) === T2) {
- if (i2 += I2 - t2, t2 < s2) {
- for (s2 -= t2; a2[r2++] = v2[i2++], --t2; )
- ;
- i2 = r2 - u2, h2 = a2;
- }
- } else if (T2 < t2) {
- if (i2 += I2 + T2 - t2, (t2 -= T2) < s2) {
- for (s2 -= t2; a2[r2++] = v2[i2++], --t2; )
- ;
- if (i2 = 0, T2 < s2) {
- for (s2 -= t2 = T2; a2[r2++] = v2[i2++], --t2; )
- ;
- i2 = r2 - u2, h2 = a2;
- }
- }
- } else if (i2 += T2 - t2, t2 < s2) {
- for (s2 -= t2; a2[r2++] = v2[i2++], --t2; )
- ;
- i2 = r2 - u2, h2 = a2;
- }
- for (; 2 < s2; )
- a2[r2++] = h2[i2++], a2[r2++] = h2[i2++], a2[r2++] = h2[i2++], s2 -= 3;
- s2 && (a2[r2++] = h2[i2++], 1 < s2 && (a2[r2++] = h2[i2++]));
- } else {
- for (i2 = r2 - u2; a2[r2++] = a2[i2++], a2[r2++] = a2[i2++], a2[r2++] = a2[i2++], 2 < (s2 -= 3); )
- ;
- s2 && (a2[r2++] = a2[i2++], 1 < s2 && (a2[r2++] = a2[i2++]));
- }
- break;
- }
- }
- break;
- }
- } while (o2 < g2 && r2 < f2);
- o2 -= s2 = l2 >> 3, c2 &= (1 << (l2 -= s2 << 3)) - 1, e2.next_in = o2, e2.next_out = r2, e2.avail_in = o2 < g2 ? g2 - o2 + 5 : 5 - (o2 - g2), e2.avail_out = r2 < f2 ? f2 - r2 + 257 : 257 - (r2 - f2), n2.hold = c2, n2.bits = l2;
-};
-var Vo = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0];
-var Bo = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78];
-var Ko = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0];
-var Ho = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64];
-var Wo = function(d2, _2, u2, h2, p2, g2, e2, m2) {
- for (var t2, f2, M2, I2, C2, T2, v2, y2, E2, D2 = m2.bits, s2 = 0, i2 = 0, n2 = 0, o2 = 0, r2 = 0, a2 = 0, c2 = 0, S2 = 0, R2 = 0, l2 = 0, O2 = null, L2 = 0, A2 = new bo.Buf16(16), N2 = new bo.Buf16(16), P2 = null, U2 = 0, s2 = 0; s2 <= 15; s2++)
- A2[s2] = 0;
- for (i2 = 0; i2 < h2; i2++)
- A2[_2[u2 + i2]]++;
- for (r2 = D2, o2 = 15; 1 <= o2 && 0 === A2[o2]; o2--)
- ;
- if (o2 < r2 && (r2 = o2), 0 === o2)
- return p2[g2++] = 20971520, p2[g2++] = 20971520, m2.bits = 1, 0;
- for (n2 = 1; n2 < o2 && 0 === A2[n2]; n2++)
- ;
- for (r2 < n2 && (r2 = n2), s2 = S2 = 1; s2 <= 15; s2++)
- if ((S2 = (S2 << 1) - A2[s2]) < 0)
- return -1;
- if (0 < S2 && (0 === d2 || 1 !== o2))
- return -1;
- for (N2[1] = 0, s2 = 1; s2 < 15; s2++)
- N2[s2 + 1] = N2[s2] + A2[s2];
- for (i2 = 0; i2 < h2; i2++)
- 0 !== _2[u2 + i2] && (e2[N2[_2[u2 + i2]]++] = i2);
- if (T2 = 0 === d2 ? (O2 = P2 = e2, 19) : 1 === d2 ? (O2 = Vo, L2 -= 257, P2 = Bo, U2 -= 257, 256) : (O2 = Ko, P2 = Ho, -1), s2 = n2, C2 = g2, c2 = i2 = l2 = 0, M2 = -1, I2 = (R2 = 1 << (a2 = r2)) - 1, 1 === d2 && 852 < R2 || 2 === d2 && 592 < R2)
- return 1;
- for (; ; ) {
- for (E2 = e2[i2] < T2 ? (y2 = 0, e2[i2]) : e2[i2] > T2 ? (y2 = P2[U2 + e2[i2]], O2[L2 + e2[i2]]) : (y2 = 96, 0), t2 = 1 << (v2 = s2 - c2), n2 = f2 = 1 << a2; p2[C2 + (l2 >> c2) + (f2 -= t2)] = v2 << 24 | y2 << 16 | E2 | 0, 0 !== f2; )
- ;
- for (t2 = 1 << s2 - 1; l2 & t2; )
- t2 >>= 1;
- if (0 !== t2 ? l2 = (l2 & t2 - 1) + t2 : l2 = 0, i2++, 0 == --A2[s2]) {
- if (s2 === o2)
- break;
- s2 = _2[u2 + e2[i2]];
- }
- if (r2 < s2 && (l2 & I2) !== M2) {
- for (C2 += n2, S2 = 1 << (a2 = s2 - (c2 = 0 === c2 ? r2 : c2)); a2 + c2 < o2 && !((S2 -= A2[a2 + c2]) <= 0); )
- a2++, S2 <<= 1;
- if (R2 += 1 << a2, 1 === d2 && 852 < R2 || 2 === d2 && 592 < R2)
- return 1;
- p2[M2 = l2 & I2] = r2 << 24 | a2 << 16 | C2 - g2 | 0;
- }
- }
- return 0 !== l2 && (p2[C2 + l2] = s2 - c2 << 24 | 64 << 16 | 0), m2.bits = r2, 0;
-};
-function Yo(e2) {
- return (e2 >>> 24 & 255) + (e2 >>> 8 & 65280) + ((65280 & e2) << 8) + ((255 & e2) << 24);
-}
-function zo() {
- this.mode = 0, this.last = false, this.wrap = 0, this.havedict = false, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new bo.Buf16(320), this.work = new bo.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0;
-}
-function jo(e2) {
- var t2;
- return e2 && e2.state ? (t2 = e2.state, e2.total_in = e2.total_out = t2.total = 0, e2.msg = "", t2.wrap && (e2.adler = 1 & t2.wrap), t2.mode = 1, t2.last = 0, t2.havedict = 0, t2.dmax = 32768, t2.head = null, t2.hold = 0, t2.bits = 0, t2.lencode = t2.lendyn = new bo.Buf32(852), t2.distcode = t2.distdyn = new bo.Buf32(592), t2.sane = 1, t2.back = -1, 0) : -2;
-}
-function Jo(e2) {
- var t2;
- return e2 && e2.state ? ((t2 = e2.state).wsize = 0, t2.whave = 0, t2.wnext = 0, jo(e2)) : -2;
-}
-function Xo(e2, t2) {
- var s2, i2;
- return e2 && e2.state ? (i2 = e2.state, t2 < 0 ? (s2 = 0, t2 = -t2) : (s2 = 1 + (t2 >> 4), t2 < 48 && (t2 &= 15)), t2 && (t2 < 8 || 15 < t2) ? -2 : (null !== i2.window && i2.wbits !== t2 && (i2.window = null), i2.wrap = s2, i2.wbits = t2, Jo(e2))) : -2;
-}
-function Zo(e2, t2) {
- var s2;
- return e2 ? (s2 = new zo(), (e2.state = s2).window = null, 0 !== (s2 = Xo(e2, t2)) && (e2.state = null), s2) : -2;
-}
-var Qo;
-var er;
-var tr = true;
-function sr(e2) {
- if (tr) {
- var t2;
- for (Qo = new bo.Buf32(512), er = new bo.Buf32(32), t2 = 0; t2 < 144; )
- e2.lens[t2++] = 8;
- for (; t2 < 256; )
- e2.lens[t2++] = 9;
- for (; t2 < 280; )
- e2.lens[t2++] = 7;
- for (; t2 < 288; )
- e2.lens[t2++] = 8;
- for (Wo(1, e2.lens, 0, 288, Qo, 0, e2.work, { bits: 9 }), t2 = 0; t2 < 32; )
- e2.lens[t2++] = 5;
- Wo(2, e2.lens, 0, 32, er, 0, e2.work, { bits: 5 }), tr = false;
- }
- e2.lencode = Qo, e2.lenbits = 9, e2.distcode = er, e2.distbits = 5;
-}
-function ir(e2, t2, s2, i2) {
- var n2, e2 = e2.state;
- return null === e2.window && (e2.wsize = 1 << e2.wbits, e2.wnext = 0, e2.whave = 0, e2.window = new bo.Buf8(e2.wsize)), i2 >= e2.wsize ? (bo.arraySet(e2.window, t2, s2 - e2.wsize, e2.wsize, 0), e2.wnext = 0, e2.whave = e2.wsize) : ((n2 = e2.wsize - e2.wnext) > i2 && (n2 = i2), bo.arraySet(e2.window, t2, s2 - i2, n2, e2.wnext), (i2 -= n2) ? (bo.arraySet(e2.window, t2, s2 - i2, i2, 0), e2.wnext = i2, e2.whave = e2.wsize) : (e2.wnext += n2, e2.wnext === e2.wsize && (e2.wnext = 0), e2.whave < e2.wsize && (e2.whave += n2))), 0;
-}
-var nr = { inflateReset: Jo, inflateReset2: Xo, inflateResetKeep: jo, inflateInit: function(e2) {
- return Zo(e2, 15);
-}, inflateInit2: Zo, inflate: function(e2, d2) {
- var t2, s2, _2, i2, u2, n2, h2, o2, r2, p2, g2, a2, m2, f2, c2, M2, I2, C2, T2, v2, l2, y2, E2, D2, S2 = 0, R2 = new bo.Buf8(4), O2 = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
- if (!e2 || !e2.state || !e2.output || !e2.input && 0 !== e2.avail_in)
- return -2;
- 12 === (t2 = e2.state).mode && (t2.mode = 13), u2 = e2.next_out, _2 = e2.output, h2 = e2.avail_out, i2 = e2.next_in, s2 = e2.input, n2 = e2.avail_in, o2 = t2.hold, r2 = t2.bits, p2 = n2, g2 = h2, y2 = 0;
- e:
- for (; ; )
- switch (t2.mode) {
- case 1:
- if (0 === t2.wrap) {
- t2.mode = 13;
- break;
- }
- for (; r2 < 16; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- if (2 & t2.wrap && 35615 === o2) {
- R2[t2.check = 0] = 255 & o2, R2[1] = o2 >>> 8 & 255, t2.check = qo(t2.check, R2, 2, 0), r2 = o2 = 0, t2.mode = 2;
- break;
- }
- if (t2.flags = 0, t2.head && (t2.head.done = false), !(1 & t2.wrap) || (((255 & o2) << 8) + (o2 >> 8)) % 31) {
- e2.msg = "incorrect header check", t2.mode = 30;
- break;
- }
- if (8 != (15 & o2)) {
- e2.msg = "unknown compression method", t2.mode = 30;
- break;
- }
- if (r2 -= 4, l2 = 8 + (15 & (o2 >>>= 4)), 0 === t2.wbits)
- t2.wbits = l2;
- else if (l2 > t2.wbits) {
- e2.msg = "invalid window size", t2.mode = 30;
- break;
- }
- t2.dmax = 1 << l2, e2.adler = t2.check = 1, t2.mode = 512 & o2 ? 10 : 12, r2 = o2 = 0;
- break;
- case 2:
- for (; r2 < 16; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- if (t2.flags = o2, 8 != (255 & t2.flags)) {
- e2.msg = "unknown compression method", t2.mode = 30;
- break;
- }
- if (57344 & t2.flags) {
- e2.msg = "unknown header flags set", t2.mode = 30;
- break;
- }
- t2.head && (t2.head.text = o2 >> 8 & 1), 512 & t2.flags && (R2[0] = 255 & o2, R2[1] = o2 >>> 8 & 255, t2.check = qo(t2.check, R2, 2, 0)), r2 = o2 = 0, t2.mode = 3;
- case 3:
- for (; r2 < 32; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- t2.head && (t2.head.time = o2), 512 & t2.flags && (R2[0] = 255 & o2, R2[1] = o2 >>> 8 & 255, R2[2] = o2 >>> 16 & 255, R2[3] = o2 >>> 24 & 255, t2.check = qo(t2.check, R2, 4, 0)), r2 = o2 = 0, t2.mode = 4;
- case 4:
- for (; r2 < 16; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- t2.head && (t2.head.xflags = 255 & o2, t2.head.os = o2 >> 8), 512 & t2.flags && (R2[0] = 255 & o2, R2[1] = o2 >>> 8 & 255, t2.check = qo(t2.check, R2, 2, 0)), r2 = o2 = 0, t2.mode = 5;
- case 5:
- if (1024 & t2.flags) {
- for (; r2 < 16; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- t2.length = o2, t2.head && (t2.head.extra_len = o2), 512 & t2.flags && (R2[0] = 255 & o2, R2[1] = o2 >>> 8 & 255, t2.check = qo(t2.check, R2, 2, 0)), r2 = o2 = 0;
- } else
- t2.head && (t2.head.extra = null);
- t2.mode = 6;
- case 6:
- if (1024 & t2.flags && ((a2 = (a2 = t2.length) > n2 ? n2 : a2) && (t2.head && (l2 = t2.head.extra_len - t2.length, t2.head.extra || (t2.head.extra = new Array(t2.head.extra_len)), bo.arraySet(t2.head.extra, s2, i2, a2, l2)), 512 & t2.flags && (t2.check = qo(t2.check, s2, a2, i2)), n2 -= a2, i2 += a2, t2.length -= a2), t2.length))
- break e;
- t2.length = 0, t2.mode = 7;
- case 7:
- if (2048 & t2.flags) {
- if (0 === n2)
- break e;
- for (a2 = 0; l2 = s2[i2 + a2++], t2.head && l2 && t2.length < 65536 && (t2.head.name += String.fromCharCode(l2)), l2 && a2 < n2; )
- ;
- if (512 & t2.flags && (t2.check = qo(t2.check, s2, a2, i2)), n2 -= a2, i2 += a2, l2)
- break e;
- } else
- t2.head && (t2.head.name = null);
- t2.length = 0, t2.mode = 8;
- case 8:
- if (4096 & t2.flags) {
- if (0 === n2)
- break e;
- for (a2 = 0; l2 = s2[i2 + a2++], t2.head && l2 && t2.length < 65536 && (t2.head.comment += String.fromCharCode(l2)), l2 && a2 < n2; )
- ;
- if (512 & t2.flags && (t2.check = qo(t2.check, s2, a2, i2)), n2 -= a2, i2 += a2, l2)
- break e;
- } else
- t2.head && (t2.head.comment = null);
- t2.mode = 9;
- case 9:
- if (512 & t2.flags) {
- for (; r2 < 16; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- if (o2 !== (65535 & t2.check)) {
- e2.msg = "header crc mismatch", t2.mode = 30;
- break;
- }
- r2 = o2 = 0;
- }
- t2.head && (t2.head.hcrc = t2.flags >> 9 & 1, t2.head.done = true), e2.adler = t2.check = 0, t2.mode = 12;
- break;
- case 10:
- for (; r2 < 32; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- e2.adler = t2.check = Yo(o2), r2 = o2 = 0, t2.mode = 11;
- case 11:
- if (0 === t2.havedict)
- return e2.next_out = u2, e2.avail_out = h2, e2.next_in = i2, e2.avail_in = n2, t2.hold = o2, t2.bits = r2, 2;
- e2.adler = t2.check = 1, t2.mode = 12;
- case 12:
- if (5 === d2 || 6 === d2)
- break e;
- case 13:
- if (t2.last) {
- o2 >>>= 7 & r2, r2 -= 7 & r2, t2.mode = 27;
- break;
- }
- for (; r2 < 3; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- switch (t2.last = 1 & o2, --r2, 3 & (o2 >>>= 1)) {
- case 0:
- t2.mode = 14;
- break;
- case 1:
- if (sr(t2), t2.mode = 20, 6 !== d2)
- break;
- o2 >>>= 2, r2 -= 2;
- break e;
- case 2:
- t2.mode = 17;
- break;
- case 3:
- e2.msg = "invalid block type", t2.mode = 30;
- }
- o2 >>>= 2, r2 -= 2;
- break;
- case 14:
- for (o2 >>>= 7 & r2, r2 -= 7 & r2; r2 < 32; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- if ((65535 & o2) != (o2 >>> 16 ^ 65535)) {
- e2.msg = "invalid stored block lengths", t2.mode = 30;
- break;
- }
- if (t2.length = 65535 & o2, r2 = o2 = 0, t2.mode = 15, 6 === d2)
- break e;
- case 15:
- t2.mode = 16;
- case 16:
- if (a2 = t2.length) {
- if (0 === (a2 = h2 < (a2 = n2 < a2 ? n2 : a2) ? h2 : a2))
- break e;
- bo.arraySet(_2, s2, i2, a2, u2), n2 -= a2, i2 += a2, h2 -= a2, u2 += a2, t2.length -= a2;
- break;
- }
- t2.mode = 12;
- break;
- case 17:
- for (; r2 < 14; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- if (t2.nlen = 257 + (31 & o2), o2 >>>= 5, r2 -= 5, t2.ndist = 1 + (31 & o2), o2 >>>= 5, r2 -= 5, t2.ncode = 4 + (15 & o2), o2 >>>= 4, r2 -= 4, 286 < t2.nlen || 30 < t2.ndist) {
- e2.msg = "too many length or distance symbols", t2.mode = 30;
- break;
- }
- t2.have = 0, t2.mode = 18;
- case 18:
- for (; t2.have < t2.ncode; ) {
- for (; r2 < 3; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- t2.lens[O2[t2.have++]] = 7 & o2, o2 >>>= 3, r2 -= 3;
- }
- for (; t2.have < 19; )
- t2.lens[O2[t2.have++]] = 0;
- if (t2.lencode = t2.lendyn, t2.lenbits = 7, E2 = { bits: t2.lenbits }, y2 = Wo(0, t2.lens, 0, 19, t2.lencode, 0, t2.work, E2), t2.lenbits = E2.bits, y2) {
- e2.msg = "invalid code lengths set", t2.mode = 30;
- break;
- }
- t2.have = 0, t2.mode = 19;
- case 19:
- for (; t2.have < t2.nlen + t2.ndist; ) {
- for (; M2 = (S2 = t2.lencode[o2 & (1 << t2.lenbits) - 1]) >>> 16 & 255, I2 = 65535 & S2, !((c2 = S2 >>> 24) <= r2); ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- if (I2 < 16)
- o2 >>>= c2, r2 -= c2, t2.lens[t2.have++] = I2;
- else {
- if (16 === I2) {
- for (D2 = c2 + 2; r2 < D2; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- if (o2 >>>= c2, r2 -= c2, 0 === t2.have) {
- e2.msg = "invalid bit length repeat", t2.mode = 30;
- break;
- }
- l2 = t2.lens[t2.have - 1], a2 = 3 + (3 & o2), o2 >>>= 2, r2 -= 2;
- } else if (17 === I2) {
- for (D2 = c2 + 3; r2 < D2; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- l2 = 0, a2 = 3 + (7 & (o2 >>>= c2)), o2 >>>= 3, r2 = r2 - c2 - 3;
- } else {
- for (D2 = c2 + 7; r2 < D2; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- l2 = 0, a2 = 11 + (127 & (o2 >>>= c2)), o2 >>>= 7, r2 = r2 - c2 - 7;
- }
- if (t2.have + a2 > t2.nlen + t2.ndist) {
- e2.msg = "invalid bit length repeat", t2.mode = 30;
- break;
- }
- for (; a2--; )
- t2.lens[t2.have++] = l2;
- }
- }
- if (30 === t2.mode)
- break;
- if (0 === t2.lens[256]) {
- e2.msg = "invalid code -- missing end-of-block", t2.mode = 30;
- break;
- }
- if (t2.lenbits = 9, E2 = { bits: t2.lenbits }, y2 = Wo(1, t2.lens, 0, t2.nlen, t2.lencode, 0, t2.work, E2), t2.lenbits = E2.bits, y2) {
- e2.msg = "invalid literal/lengths set", t2.mode = 30;
- break;
- }
- if (t2.distbits = 6, t2.distcode = t2.distdyn, E2 = { bits: t2.distbits }, y2 = Wo(2, t2.lens, t2.nlen, t2.ndist, t2.distcode, 0, t2.work, E2), t2.distbits = E2.bits, y2) {
- e2.msg = "invalid distances set", t2.mode = 30;
- break;
- }
- if (t2.mode = 20, 6 === d2)
- break e;
- case 20:
- t2.mode = 21;
- case 21:
- if (6 <= n2 && 258 <= h2) {
- e2.next_out = u2, e2.avail_out = h2, e2.next_in = i2, e2.avail_in = n2, t2.hold = o2, t2.bits = r2, xo(e2, g2), u2 = e2.next_out, _2 = e2.output, h2 = e2.avail_out, i2 = e2.next_in, s2 = e2.input, n2 = e2.avail_in, o2 = t2.hold, r2 = t2.bits, 12 === t2.mode && (t2.back = -1);
- break;
- }
- for (t2.back = 0; M2 = (S2 = t2.lencode[o2 & (1 << t2.lenbits) - 1]) >>> 16 & 255, I2 = 65535 & S2, !((c2 = S2 >>> 24) <= r2); ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- if (M2 && 0 == (240 & M2)) {
- for (C2 = c2, T2 = M2, v2 = I2; M2 = (S2 = t2.lencode[v2 + ((o2 & (1 << C2 + T2) - 1) >> C2)]) >>> 16 & 255, I2 = 65535 & S2, !(C2 + (c2 = S2 >>> 24) <= r2); ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- o2 >>>= C2, r2 -= C2, t2.back += C2;
- }
- if (o2 >>>= c2, r2 -= c2, t2.back += c2, t2.length = I2, 0 === M2) {
- t2.mode = 26;
- break;
- }
- if (32 & M2) {
- t2.back = -1, t2.mode = 12;
- break;
- }
- if (64 & M2) {
- e2.msg = "invalid literal/length code", t2.mode = 30;
- break;
- }
- t2.extra = 15 & M2, t2.mode = 22;
- case 22:
- if (t2.extra) {
- for (D2 = t2.extra; r2 < D2; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- t2.length += o2 & (1 << t2.extra) - 1, o2 >>>= t2.extra, r2 -= t2.extra, t2.back += t2.extra;
- }
- t2.was = t2.length, t2.mode = 23;
- case 23:
- for (; M2 = (S2 = t2.distcode[o2 & (1 << t2.distbits) - 1]) >>> 16 & 255, I2 = 65535 & S2, !((c2 = S2 >>> 24) <= r2); ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- if (0 == (240 & M2)) {
- for (C2 = c2, T2 = M2, v2 = I2; M2 = (S2 = t2.distcode[v2 + ((o2 & (1 << C2 + T2) - 1) >> C2)]) >>> 16 & 255, I2 = 65535 & S2, !(C2 + (c2 = S2 >>> 24) <= r2); ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- o2 >>>= C2, r2 -= C2, t2.back += C2;
- }
- if (o2 >>>= c2, r2 -= c2, t2.back += c2, 64 & M2) {
- e2.msg = "invalid distance code", t2.mode = 30;
- break;
- }
- t2.offset = I2, t2.extra = 15 & M2, t2.mode = 24;
- case 24:
- if (t2.extra) {
- for (D2 = t2.extra; r2 < D2; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- t2.offset += o2 & (1 << t2.extra) - 1, o2 >>>= t2.extra, r2 -= t2.extra, t2.back += t2.extra;
- }
- if (t2.offset > t2.dmax) {
- e2.msg = "invalid distance too far back", t2.mode = 30;
- break;
- }
- t2.mode = 25;
- case 25:
- if (0 === h2)
- break e;
- if (t2.offset > (a2 = g2 - h2)) {
- if ((a2 = t2.offset - a2) > t2.whave && t2.sane) {
- e2.msg = "invalid distance too far back", t2.mode = 30;
- break;
- }
- m2 = a2 > t2.wnext ? (a2 -= t2.wnext, t2.wsize - a2) : t2.wnext - a2, a2 > t2.length && (a2 = t2.length), f2 = t2.window;
- } else
- f2 = _2, m2 = u2 - t2.offset, a2 = t2.length;
- for (h2 -= a2 = h2 < a2 ? h2 : a2, t2.length -= a2; _2[u2++] = f2[m2++], --a2; )
- ;
- 0 === t2.length && (t2.mode = 21);
- break;
- case 26:
- if (0 === h2)
- break e;
- _2[u2++] = t2.length, h2--, t2.mode = 21;
- break;
- case 27:
- if (t2.wrap) {
- for (; r2 < 32; ) {
- if (0 === n2)
- break e;
- n2--, o2 |= s2[i2++] << r2, r2 += 8;
- }
- if (g2 -= h2, e2.total_out += g2, t2.total += g2, g2 && (e2.adler = t2.check = (t2.flags ? qo : Fo)(t2.check, _2, g2, u2 - g2)), g2 = h2, (t2.flags ? o2 : Yo(o2)) !== t2.check) {
- e2.msg = "incorrect data check", t2.mode = 30;
- break;
- }
- r2 = o2 = 0;
- }
- t2.mode = 28;
- case 28:
- if (t2.wrap && t2.flags) {
- for (; r2 < 32; ) {
- if (0 === n2)
- break e;
- n2--, o2 += s2[i2++] << r2, r2 += 8;
- }
- if (o2 !== (4294967295 & t2.total)) {
- e2.msg = "incorrect length check", t2.mode = 30;
- break;
- }
- r2 = o2 = 0;
- }
- t2.mode = 29;
- case 29:
- y2 = 1;
- break e;
- case 30:
- y2 = -3;
- break e;
- case 31:
- return -4;
- default:
- return -2;
- }
- return e2.next_out = u2, e2.avail_out = h2, e2.next_in = i2, e2.avail_in = n2, t2.hold = o2, t2.bits = r2, (t2.wsize || g2 !== e2.avail_out && t2.mode < 30 && (t2.mode < 27 || 4 !== d2)) && ir(e2, e2.output, e2.next_out, g2 - e2.avail_out), p2 -= e2.avail_in, g2 -= e2.avail_out, e2.total_in += p2, e2.total_out += g2, t2.total += g2, t2.wrap && g2 && (e2.adler = t2.check = (t2.flags ? qo : Fo)(t2.check, _2, g2, e2.next_out - g2)), e2.data_type = t2.bits + (t2.last ? 64 : 0) + (12 === t2.mode ? 128 : 0) + (20 === t2.mode || 15 === t2.mode ? 256 : 0), y2 = (0 == p2 && 0 === g2 || 4 === d2) && 0 === y2 ? -5 : y2;
-}, inflateEnd: function(e2) {
- if (!e2 || !e2.state)
- return -2;
- var t2 = e2.state;
- return t2.window && (t2.window = null), e2.state = null, 0;
-}, inflateGetHeader: function(e2, t2) {
- var s2;
- return !e2 || !e2.state || 0 == (2 & (s2 = e2.state).wrap) ? -2 : ((s2.head = t2).done = false, 0);
-}, inflateSetDictionary: function(e2, t2) {
- var s2, i2 = t2.length;
- return !e2 || !e2.state || 0 !== (s2 = e2.state).wrap && 11 !== s2.mode ? -2 : 11 === s2.mode && Fo(1, t2, i2, 0) !== s2.check ? -3 : ir(e2, t2, i2, i2) ? (s2.mode = 31, -4) : (s2.havedict = 1, 0);
-}, inflateInfo: "pako inflate (from Nodeca project)" };
-var or = true;
-var rr = true;
-try {
- String.fromCharCode.apply(null, [0]);
-} catch (e2) {
- or = false;
-}
-try {
- String.fromCharCode.apply(null, new Uint8Array(1));
-} catch (e2) {
- rr = false;
-}
-for (ar = new bo.Buf8(256), cr = 0; cr < 256; cr++)
- ar[cr] = 252 <= cr ? 6 : 248 <= cr ? 5 : 240 <= cr ? 4 : 224 <= cr ? 3 : 192 <= cr ? 2 : 1;
-var ar;
-var cr;
-function lr(e2, t2) {
- if (t2 < 65534 && (e2.subarray && rr || !e2.subarray && or))
- return String.fromCharCode.apply(null, bo.shrinkBuf(e2, t2));
- for (var s2 = "", i2 = 0; i2 < t2; i2++)
- s2 += String.fromCharCode(e2[i2]);
- return s2;
-}
-ar[254] = ar[254] = 1;
-var ur = function(e2) {
- for (var t2, s2, i2, n2, o2 = e2.length, r2 = 0, a2 = 0; a2 < o2; a2++)
- 55296 == (64512 & (s2 = e2.charCodeAt(a2))) && a2 + 1 < o2 && 56320 == (64512 & (i2 = e2.charCodeAt(a2 + 1))) && (s2 = 65536 + (s2 - 55296 << 10) + (i2 - 56320), a2++), r2 += s2 < 128 ? 1 : s2 < 2048 ? 2 : s2 < 65536 ? 3 : 4;
- for (t2 = new bo.Buf8(r2), a2 = n2 = 0; n2 < r2; a2++)
- 55296 == (64512 & (s2 = e2.charCodeAt(a2))) && a2 + 1 < o2 && 56320 == (64512 & (i2 = e2.charCodeAt(a2 + 1))) && (s2 = 65536 + (s2 - 55296 << 10) + (i2 - 56320), a2++), s2 < 128 ? t2[n2++] = s2 : (s2 < 2048 ? t2[n2++] = 192 | s2 >>> 6 : (s2 < 65536 ? t2[n2++] = 224 | s2 >>> 12 : (t2[n2++] = 240 | s2 >>> 18, t2[n2++] = 128 | s2 >>> 12 & 63), t2[n2++] = 128 | s2 >>> 6 & 63), t2[n2++] = 128 | 63 & s2);
- return t2;
-};
-var dr = function(e2) {
- for (var t2 = new bo.Buf8(e2.length), s2 = 0, i2 = t2.length; s2 < i2; s2++)
- t2[s2] = e2.charCodeAt(s2);
- return t2;
-};
-var _r = function(e2, t2) {
- for (var s2, i2, n2 = t2 || e2.length, o2 = new Array(2 * n2), r2 = 0, a2 = 0; a2 < n2; )
- if ((s2 = e2[a2++]) < 128)
- o2[r2++] = s2;
- else if (4 < (i2 = ar[s2]))
- o2[r2++] = 65533, a2 += i2 - 1;
- else {
- for (s2 &= 2 === i2 ? 31 : 3 === i2 ? 15 : 7; 1 < i2 && a2 < n2; )
- s2 = s2 << 6 | 63 & e2[a2++], i2--;
- 1 < i2 ? o2[r2++] = 65533 : s2 < 65536 ? o2[r2++] = s2 : (s2 -= 65536, o2[r2++] = 55296 | s2 >> 10 & 1023, o2[r2++] = 56320 | 1023 & s2);
- }
- return lr(o2, r2);
-};
-var hr = function(e2, t2) {
- for (var s2 = (t2 = (t2 = t2 || e2.length) > e2.length ? e2.length : t2) - 1; 0 <= s2 && 128 == (192 & e2[s2]); )
- s2--;
- return !(s2 < 0 || 0 === s2) && s2 + ar[e2[s2]] > t2 ? s2 : t2;
-};
-var pr = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 };
-var gr = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" };
-var mr = function() {
- this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0;
-};
-var fr = function() {
- this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = false;
-};
-var Mr = Object.prototype.toString;
-function Ir(e2) {
- if (!(this instanceof Ir))
- return new Ir(e2);
- this.options = bo.assign({ chunkSize: 16384, windowBits: 0, to: "" }, e2 || {});
- var t2 = this.options, e2 = (t2.raw && 0 <= t2.windowBits && t2.windowBits < 16 && (t2.windowBits = -t2.windowBits, 0 === t2.windowBits && (t2.windowBits = -15)), !(0 <= t2.windowBits && t2.windowBits < 16) || e2 && e2.windowBits || (t2.windowBits += 32), 15 < t2.windowBits && t2.windowBits < 48 && 0 == (15 & t2.windowBits) && (t2.windowBits |= 15), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new mr(), this.strm.avail_out = 0, nr.inflateInit2(this.strm, t2.windowBits));
- if (e2 !== pr.Z_OK)
- throw new Error(gr[e2]);
- if (this.header = new fr(), nr.inflateGetHeader(this.strm, this.header), t2.dictionary && ("string" == typeof t2.dictionary ? t2.dictionary = ur(t2.dictionary) : "[object ArrayBuffer]" === Mr.call(t2.dictionary) && (t2.dictionary = new Uint8Array(t2.dictionary)), t2.raw && (e2 = nr.inflateSetDictionary(this.strm, t2.dictionary)) !== pr.Z_OK))
- throw new Error(gr[e2]);
-}
-function Cr(e2, t2) {
- t2 = new Ir(t2);
- if (t2.push(e2, true), t2.err)
- throw t2.msg || gr[t2.err];
- return t2.result;
-}
-Ir.prototype.push = function(e2, t2) {
- var s2, i2, n2, o2, r2, a2 = this.strm, c2 = this.options.chunkSize, d2 = this.options.dictionary, l2 = false;
- if (this.ended)
- return false;
- i2 = t2 === ~~t2 ? t2 : true === t2 ? pr.Z_FINISH : pr.Z_NO_FLUSH, "string" == typeof e2 ? a2.input = dr(e2) : "[object ArrayBuffer]" === Mr.call(e2) ? a2.input = new Uint8Array(e2) : a2.input = e2, a2.next_in = 0, a2.avail_in = a2.input.length;
- do {
- if (0 === a2.avail_out && (a2.output = new bo.Buf8(c2), a2.next_out = 0, a2.avail_out = c2), (s2 = (s2 = nr.inflate(a2, pr.Z_NO_FLUSH)) === pr.Z_NEED_DICT && d2 ? nr.inflateSetDictionary(this.strm, d2) : s2) === pr.Z_BUF_ERROR && true === l2 && (s2 = pr.Z_OK, l2 = false), s2 !== pr.Z_STREAM_END && s2 !== pr.Z_OK)
- return this.onEnd(s2), !(this.ended = true);
- } while (a2.next_out && (0 !== a2.avail_out && s2 !== pr.Z_STREAM_END && (0 !== a2.avail_in || i2 !== pr.Z_FINISH && i2 !== pr.Z_SYNC_FLUSH) || ("string" === this.options.to ? (n2 = hr(a2.output, a2.next_out), o2 = a2.next_out - n2, r2 = _r(a2.output, n2), a2.next_out = o2, a2.avail_out = c2 - o2, o2 && bo.arraySet(a2.output, a2.output, n2, o2, 0), this.onData(r2)) : this.onData(bo.shrinkBuf(a2.output, a2.next_out)))), 0 === a2.avail_in && 0 === a2.avail_out && (l2 = true), (0 < a2.avail_in || 0 === a2.avail_out) && s2 !== pr.Z_STREAM_END);
- return (i2 = s2 === pr.Z_STREAM_END ? pr.Z_FINISH : i2) === pr.Z_FINISH ? (s2 = nr.inflateEnd(this.strm), this.onEnd(s2), this.ended = true, s2 === pr.Z_OK) : i2 !== pr.Z_SYNC_FLUSH || (this.onEnd(pr.Z_OK), !(a2.avail_out = 0));
-}, Ir.prototype.onData = function(e2) {
- this.chunks.push(e2);
-}, Ir.prototype.onEnd = function(e2) {
- e2 === pr.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = bo.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg;
-};
-var Tr = { Inflate: Ir, inflate: Cr, inflateRaw: function(e2, t2) {
- return (t2 = t2 || {}).raw = true, Cr(e2, t2);
-}, ungzip: Cr };
-var yr = {};
-var vr = ((0, bo.assign)(yr, Tr, pr), yr);
-var Er = class {
- constructor(e2) {
- this._m = e2, this._n = "InflateModule", this._bLogForInflateOK = false, this._bLogForInflateError = false;
- }
- inflate(e2) {
- var e2 = new Uint8Array(e2).slice(4), t2 = Date.now();
- let s2;
- try {
- s2 = vr.inflate(e2, { to: "string" }), this._bLogForInflateOK || (this._bLogForInflateOK = true, new Ti("inflateOK").end());
- } catch (e3) {
- return this._bLogForInflateError ? void 0 : (this._bLogForInflateError = true, void new Ti("inflateError").setMessage(e3).end());
- }
- var e2 = e2.length + 4, i2 = s2.length;
- return Ce.d(`inflate ok. zipped:${e2} unzipped:${i2} compression ratio:${Math.round(100 * (i2 - e2) / i2)}% cost:` + (Date.now() - t2)), s2;
- }
- reset() {
- Ce.l(this._n + ".reset"), this._bLogForInflateOK = false, this._bLogForInflateError = false;
- }
-};
-var Sr = class {
- constructor(s2) {
- const e2 = new Ti("sdkConstruct");
- if (this._n = "ModuleManager", this._isReady = false, this._reason = ei.USER_NOT_LOGGED_IN, this._startLoginTs = 0, this._map = /* @__PURE__ */ new Map(), this._optionalModuleMap = /* @__PURE__ */ new Map(), this._codeMsgForTUIMap = /* @__PURE__ */ new Map(), this._iEmitter = null, this._oEmitter = null, this._checkCount = 0, this._checkTimer = -1, this._map.set(Rs, new vn(this, s2)), this._map.set(Js, new Er(this)), this._map.set(Os, new Un(this)), this._map.set(qs, new No(this)), this._map.set(ws, new yo(this)), this._map.set(bs, new Ao(this)), this._map.set($s, new Lo(this)), this._map.set(ks, new ho(this)), this._map.set(Gs, new To(this)), this._map.set(Ms, new Sn(this)), this._map.set(Is, new Kn(this)), this._map.set(Cs, new Hn(this)), this._map.set(Ys, new Wn(this)), this._map.set(Ks, new Yn(this)), this._map.set(Ts, new yn(this)), this._map.set(ys, new Wi(this)), this._map.set(Ds, new _n(this)), this._map.set(Ss, new mn(this)), this._map.set(Ls, new Rn(this)), this._map.set(Hs, new wo(this)), this._map.set(As, new On(this)), this._map.set(Ns, new $n(this)), this._map.set(Ps, new zn(this)), this._map.set(Us, new jn(this)), this._map.set(Fs, new vo(this)), this._map.set(xs, new Po(this)), this._map.set(js, new Uo(this)), this._map.set(Vs, new Go(this)), this._map.set(Bs, new ko(this)), this._eventThrottleMap = /* @__PURE__ */ new Map(), this._eventThrottling = s2.eventThrottling, this._map.get(Rs).isPartialUpdatedConvs() && (this._eventThrottling = false), be(s2.modules)) {
- let t3;
- Object.keys(s2.modules).forEach((e3) => {
- t3 = s2.modules[e3], "group-module" === e3 ? this._map.set(vs, new t3(this)) : "relationship-module" === e3 ? this._map.set(Es, new t3(this)) : "signaling-module" === e3 ? this._map.set(Ws, new t3(this)) : "follow-module" === e3 ? this._map.set(zs, new t3(this)) : "cloud-search-module" === e3 && this._map.set(Xs, new t3(this)), this._optionalModuleMap.set(e3, 1);
- }), this._map.get(Rs).setUsingChatCore(true);
- } else
- this._map.has(vs) || this._map.get(Rs).setUsingChatCore(true);
- var { instanceID: t2, SDKAppID: i2 } = s2, t2 = `instanceID:${t2} SDKAppID:${i2} isIntl:${this._map.get(Rs).isIntl()} isUsingChatCore:${this._map.get(Rs).isUsingChatCore()} host:${ht()} isIOSWebView:${re} platform:${V} canIUseInflate:${this.canIUseInflate()} workerAvailable:${ie} eventThrottling:${this._eventThrottling} UserAgent:` + q;
- Ti.bindEventStatModule(this._map.get(As)), Ti.bindNetMonitorModule(this._map.get(Os)), e2.setMessage(t2 + " " + function() {
- let t3 = "";
- if (k)
- try {
- var { model: e3, version: s3, system: i3, platform: n2, SDKVersion: o2 } = $.getSystemInfoSync();
- t3 = `model:${e3} version:${s3} system:${i3} platform:${n2} SDKVersion:` + o2;
- } catch (e4) {
- t3 = "";
- }
- return t3;
- }()).end(), Ce.i("SDK " + t2), Qs.prototype._getErrMsg = this.getErrMsg.bind(this), this._readyList = void 0, this._ssoLogForReady = null, this._initReadyList();
- }
- _startTimer() {
- const e2 = this._map.get(bs), t2 = e2.isWorkerEnabled();
- Ce.l(this._n + `.startTimer isWorkerEnabled:${t2} seed:` + this._checkTimer), t2 ? e2.startWorkerTimer() : this._startMainThreadTimer();
- }
- _startMainThreadTimer() {
- this._checkTimer < 0 && (this._checkTimer = setInterval(this.onCheckTimer.bind(this), 1e3)), Ce.l(this._n + "._startMainThreadTimer seed:" + this._checkTimer);
- }
- stopTimer() {
- const e2 = this._map.get(bs), t2 = e2.isWorkerEnabled();
- Ce.l(this._n + `.stopTimer isWorkerEnabled:${t2} seed:` + this._checkTimer), t2 ? e2.stopWorkerTimer() : this._stopMainThreadTimer();
- }
- _stopMainThreadTimer() {
- Ce.l(this._n + "._stopMainThreadTimer"), 0 < this._checkTimer && (clearInterval(this._checkTimer), this._checkTimer = -1, this._checkCount = 0);
- }
- _stopMainThreadSocket() {
- Ce.l(this._n + "._stopMainThreadSocket");
- const e2 = this._map.get(ks);
- e2.setIsWorkerEnabled(true), e2.reConnect();
- }
- _startMainThreadSocket() {
- Ce.l(this._n + "._startMainThreadSocket");
- const e2 = this._map.get(ks);
- e2.setIsWorkerEnabled(false), e2.reConnect();
- }
- onWorkerTimerEnabled() {
- Ce.l(this._n + ".onWorkerTimerEnabled, disable main thread timer and socket"), this._stopMainThreadTimer(), this._stopMainThreadSocket();
- }
- onWorkerTimerDisabled() {
- Ce.l(this._n + ".onWorkerTimerDisabled, enable main thread timer and socket"), this._startMainThreadTimer(), this._startMainThreadSocket();
- }
- onCheckTimer() {
- this._checkCount += 1;
- for (var [, e2] of this._map)
- e2.onCheckTimer && e2.onCheckTimer(this._checkCount);
- }
- _initReadyList() {
- this._readyList = [this._map.get(Ms)], this._readyList.forEach((e2) => {
- e2.ready(() => this._onModuleReady());
- });
- }
- _onModuleReady() {
- let t2 = true;
- if (this._readyList.forEach((e2) => {
- e2.isReady() || (t2 = false);
- }), t2 && !this._isReady) {
- this._isReady = true, this._oEmitter.emit(e.SDK_READY);
- const t3 = Date.now() - this._startLoginTs;
- Ce.w(`SDK is ready. cost ${t3} ms`), this._startLoginTs = Date.now();
- var s2 = this._ssoLogForReady.getStartTs() + he;
- this._ssoLogForReady.setMessage(t3).start(s2).end();
- }
- }
- login() {
- 0 === this._startLoginTs && (ge(), this._startLoginTs = Date.now(), this._startTimer(), this._map.get(Os).start(), this._ssoLogForReady = new Ti("sdkReady"), this._reason = ei.LOGGING_IN);
- }
- onLoginFailed() {
- this._startLoginTs = 0;
- }
- getOEmitInst() {
- return null === this._oEmitter && (this._oEmitter = new kn(), si(this._oEmitter), this._oEmitter._emit = this._oEmitter.emit, this._oEmitter.emit = (function(t2, s2) {
- if (this._canIUseSignaling() && (t2 === e.MESSAGE_RECEIVED && this.get(Ws).onNewMessageList(s2), t2 === e.MESSAGE_MODIFIED && this.get(Ws).onMessageModified(s2)), t2 === e.CONVERSATION_LIST_UPDATED || t2 === e.FRIEND_LIST_UPDATED || t2 === e.GROUP_LIST_UPDATED || t2 === e.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED)
- if (false !== this._eventThrottling)
- if (this._eventThrottleMap.has(t2)) {
- const e2 = Date.now(), s3 = this._eventThrottleMap.get(t2);
- e2 - s3.last <= 1e3 ? (-1 < s3.timeoutID && clearTimeout(s3.timeoutID), s3.timeoutID = setTimeout(() => {
- s3.last = Date.now(), this._oEmitter._emit.apply(this._oEmitter, [t2, { name: t2, data: this._getEventData(t2) }]);
- }, 1e3)) : (s3.last = e2, this._oEmitter._emit.apply(this._oEmitter, [t2, { name: t2, data: this._getEventData(t2) }]));
- } else
- this._eventThrottleMap.set(t2, { last: Date.now(), timeoutID: -1 }), this._oEmitter._emit.apply(this._oEmitter, [t2, { name: t2, data: this._getEventData(t2) }]);
- else
- this._oEmitter._emit.apply(this._oEmitter, [t2, { name: t2, data: this._getEventData(t2) }]);
- else
- this._oEmitter._emit.apply(this._oEmitter, [t2, { name: t2, data: s2 }]);
- }).bind(this)), this._oEmitter;
- }
- _canIUseSignaling() {
- const e2 = this.get(Ws);
- return !!e2 && e2.canIUseSignaling();
- }
- _getEventData(t2) {
- return t2 === e.CONVERSATION_LIST_UPDATED ? this._map.get(Rs).isPartialUpdatedConvs() ? this._map.get(Ds).getPartialUpdatedConvs() : this._map.get(Ds).getLocalConvList() : t2 === e.FRIEND_LIST_UPDATED ? this._map.get(Es).getLocalFriendList(false) : t2 === e.GROUP_LIST_UPDATED ? this._map.get(vs).getLocalGroupList() : t2 === e.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED ? this._map.get(Ds).getTotalUnreadCount() : t2 === e.CONVERSATION_ID_LIST_UPDATED ? this._map.get(Ds).getUpdatedConvIDList() : void 0;
- }
- getIEmitInst() {
- return null === this._iEmitter && (this._iEmitter = new kn(), this._iEmitter._emit = this._iEmitter.emit, this._iEmitter.emit = (function(e2, t2) {
- e2 = be(t2) && t2.data ? [e2, { name: e2, data: t2.data }] : [e2, { name: e2, data: t2 }];
- this._iEmitter._emit.apply(this._iEmitter, e2);
- }).bind(this)), this._iEmitter;
- }
- hasModule(e2) {
- return this._map.has(e2);
- }
- get(e2) {
- return this._map.get(e2);
- }
- canIUseModule(e2) {
- return !this._map.get(Rs).isUsingChatCore() || this._optionalModuleMap.has(e2);
- }
- canIUseInflate() {
- return !!this._map.get(Js);
- }
- isReady() {
- return this._isReady;
- }
- isIntl() {
- return this.get(Rs).isIntl();
- }
- getNotReadyReason() {
- return this._reason;
- }
- setNotReadyReason(e2) {
- this._reason = e2;
- }
- getErrMsg(e2, t2, s2) {
- return this._map.get(Hs).get({ key: e2, replacement1: t2, replacement2: s2, isIntl: this.isIntl() });
- }
- warn(e2, t2, s2) {
- e2 = this.getErrMsg(e2, t2, s2);
- e2 && Ce.w(e2);
- }
- onError(t2) {
- var s2 = `code:${t2.code} message:` + t2.message;
- Ce.w("Oops! " + s2), new Ti("error").setMessage(s2).setLevel("error").end(), this.getOEmitInst().emit(e.ERROR, t2);
- }
- restartTimer() {
- Ce.l(this._n + ".restartTimer"), this.stopTimer(), this._startTimer();
- const e2 = this.get(vs);
- e2 && e2.restartPolling();
- }
- getTimerID() {
- const e2 = this._map.get(bs);
- return e2.isWorkerEnabled() ? e2.getTimerID() : this._checkTimer;
- }
- getPollingTimerID(e2) {
- return this._map.get(vs).getPollingTimerID(e2);
- }
- statTUIKeyFeatures(e2) {
- var { code: e2, msg: t2 = "" } = e2, s2 = e2 + t2;
- this._codeMsgForTUIMap.has(s2) || (this._codeMsgForTUIMap.set(s2, 1), s2 = this.get(Rs).getUIPlatform(), new Ti("tui_key_features").setCode(e2).setMessage(t2).setUIPlatform(s2).end());
- }
- reset() {
- Ce.l(this._n + ".reset"), ge();
- for (const [, e2] of this._map)
- e2.reset && e2.reset();
- this._startLoginTs = 0, this._initReadyList(), this._isReady = false, this.stopTimer(), this._oEmitter.emit(e.SDK_NOT_READY);
- for (const [, e2] of this._eventThrottleMap)
- -1 < e2.timeoutID && clearTimeout(e2.timeoutID);
- this._eventThrottleMap.clear(), this._codeMsgForTUIMap.clear();
- }
-};
-var Dr = class {
- constructor(e2) {
- this._funcMap = /* @__PURE__ */ new Map(), this._m = e2, this._n = "SafetyCallback", this._reportCount = 0;
- }
- defense(e2, t2, s2) {
- if ("string" != typeof e2)
- return null;
- if (0 === e2.length)
- return null;
- if ("function" != typeof t2)
- return null;
- if (this._funcMap.has(e2) && this._funcMap.get(e2).has(t2))
- return this._funcMap.get(e2).get(t2);
- this._funcMap.has(e2) || this._funcMap.set(e2, /* @__PURE__ */ new Map());
- let i2 = null;
- return this._funcMap.get(e2).has(t2) ? i2 = this._funcMap.get(e2).get(t2) : (i2 = this._pack(e2, t2, s2), this._funcMap.get(e2).set(t2, i2)), i2;
- }
- defenseOnce(e2, t2, s2) {
- return "function" != typeof t2 ? null : this._pack(e2, t2, s2);
- }
- find(e2, t2) {
- return "string" != typeof e2 || 0 === e2.length || "function" != typeof t2 ? null : this._funcMap.has(e2) && this._funcMap.get(e2).has(t2) ? this._funcMap.get(e2).get(t2) : (this._m.warn("ListenerFnNotFound", e2), null);
- }
- delete(e2, t2) {
- return "function" == typeof t2 && !!this._funcMap.has(e2) && !!this._funcMap.get(e2).has(t2) && (this._funcMap.get(e2).delete(t2), 0 === this._funcMap.get(e2).size && this._funcMap.delete(e2), true);
- }
- _pack(s2, i2, n2) {
- const o2 = this;
- return function() {
- try {
- i2.apply(n2, Array.from(arguments));
- } catch (t2) {
- const i3 = Object.values(e).indexOf(s2), n3 = "CallbackError";
- if (-1 !== i3) {
- const s3 = Object.keys(e)[i3];
- o2._m.warn(n3, s3, t2);
- }
- o2._reportCount < 5 && (new Ti(n3).setMessage("eventName:" + s2).setMoreMessage(t2.message).end(), o2._reportCount += 1);
- }
- };
- }
- destroy() {
- this._funcMap.clear();
- }
- reset() {
- Ce.l(this._n + ".reset"), this._reportCount = 0;
- }
-};
-var Rr = class {
- constructor(e2) {
- e2 = { SDKAppID: e2.SDKAppID, unlimitedAVChatRoom: e2.unlimitedAVChatRoom || false, scene: e2.scene || "", oversea: e2.oversea || false, instanceID: _t(), devMode: e2.devMode || false, testEnv: e2.testEnv || false, proxyServer: e2.proxyServer || void 0, fileUploadProxy: e2.fileUploadProxy || void 0, fileDownloadProxy: e2.fileDownloadProxy || e2.fileUploadProxy || void 0, eventThrottling: false !== e2.eventThrottling, partialUpdatedConversations: true === e2.partialUpdatedConversations, disableIndependentDomain: true === e2.disableIndependentDomain, modules: e2.modules || void 0 };
- this._m = new Sr(e2), this._safetyCallbackFactory = new Dr(this._m);
- }
- onError(e2) {
- this._m.onError(e2);
- }
- login(e2) {
- return this._m.login(), this._get(Ms).login(e2);
- }
- logout() {
- return this._get(Ms).logout().then((e2) => (this._safetyCallbackFactory.reset(), this._m.reset(), e2));
- }
- getLoginUser() {
- return this._get(Ms).getLoginUser();
- }
- getServerTime() {
- return pe();
- }
- isReady() {
- return this._m.isReady();
- }
- isIntl() {
- return this._m.isIntl();
- }
- getNotReadyReason() {
- return this._m.getNotReadyReason();
- }
- getErrMsg(e2, t2, s2) {
- return this._m.getErrMsg(e2, t2, s2);
- }
- _get(e2) {
- return this._m.get(e2);
- }
- destroy() {
- const t2 = this._get(Rs), s2 = t2.getSDKAppID();
- return Ce.w(`destroy ${s2} ` + t2.getInstanceID()), this.logout().finally(() => {
- this._safetyCallbackFactory.destroy(), this._m.stopTimer(), this._get(bs).terminate(), this._get(ks).dealloc(), this._m.getOEmitInst().emit(e.SDK_DESTROY, { SDKAppID: s2 });
- });
- }
- on(e2, t2, s2) {
- Ce.d("on", "eventName:" + e2), this._m.getOEmitInst().on(e2, this._safetyCallbackFactory.defense(e2, t2, s2), s2);
- }
- once(e2, t2, s2) {
- Ce.d("once", "eventName:" + e2), this._m.getOEmitInst().once(e2, this._safetyCallbackFactory.defenseOnce(e2, t2, s2), s2 || this);
- }
- off(e2, t2, s2, i2) {
- Ce.d("off", "eventName:" + e2);
- var n2 = this._safetyCallbackFactory.find(e2, t2);
- null !== n2 && (this._m.getOEmitInst().off(e2, n2, s2, i2), this._safetyCallbackFactory.delete(e2, t2));
- }
- registerPlugin(e2) {
- ($e(e2["tim-push"]) ? $e(e2["tim-offline-push-plugin"]) ? this._get(Ps) : this._get(xs) : this._get(js)).registerPlugin(e2);
- }
- setLogLevel(e2) {
- if (e2 <= 0) {
- const e3 = this.getErrMsg("TIM_ASCII_ART");
- e3 && console.log(e3);
- var t2 = this.getErrMsg("API_REFER");
- if (t2) {
- const e4 = "IM SDK API ->";
- Et() ? console.log(`%c ${e4} %c`, "background:#ff9d00; padding:1px; border-radius:3px; color: #fff", "background:transparent", t2) : console.log(e4, t2);
- }
- t2 = this.getErrMsg("DOCS_GUIDE"), t2 = (t2 && console.log(t2), this.getErrMsg("IOS_WEBVIEW_WARNING"));
- re && t2 && console.warn(t2);
- }
- Ce.setLevel(e2);
- }
- createTextMessage(e2) {
- return this._get(Is).createTextMessage(e2);
- }
- createTextAtMessage(e2) {
- return this._get(Is).createTextMessage(e2);
- }
- createImageMessage(e2) {
- return this._get(Is).createImageMessage(e2);
- }
- createAudioMessage(e2) {
- return this._get(Is).createAudioMessage(e2);
- }
- createVideoMessage(e2) {
- return this._get(Is).createVideoMessage(e2);
- }
- createCustomMessage(e2) {
- return this._get(Is).createCustomMessage(e2);
- }
- createFaceMessage(e2) {
- return this._get(Is).createFaceMessage(e2);
- }
- createFileMessage(e2) {
- return this._get(Is).createFileMessage(e2);
- }
- createLocationMessage(e2) {
- return this._get(Is).createLocationMessage(e2);
- }
- createMergerMessage(e2) {
- return this._get(Is).createMergerMessage(e2);
- }
- downloadMergerMessage(e2) {
- return e2.type !== t.MSG_MERGER ? ni({ code: ei.MSG_MERGER_TYPE_INVALID }) : Oe(e2.payload.downloadKey) ? ni({ code: ei.MSG_MERGER_KEY_INVALID }) : this._get(Is).downloadMergerMessage(e2).catch((e3) => ni({ code: ei.MSG_MERGER_DOWNLOAD_FAIL }));
- }
- createForwardMessage(e2) {
- return this._get(Is).createForwardMessage(e2);
- }
- sendMessage(e2, t2) {
- return e2 instanceof xi ? this._get(Is).sendMessageInstance(e2, t2) : ni({ code: ei.MSG_INSTANCE_REQUIRED });
- }
- callExperimentalAPI(e2, t2) {
- return "sendComboMessage" === e2 ? this._get(Ks).sendMessage(t2) : "handleGroupInvitation" === e2 ? this._get(vs).handleGroupInvitation(t2) : "isCommercialAbilityEnabled" === e2 ? this._get(qs).isFeatureEnabled(t2) : "isFeatureEnabledForStat" === e2 ? this._get(qs).isFeatureEnabledForStat(t2) : "isIntl" === e2 ? this.isIntl() : "sendTRTCCustomData" === e2 || "sendRoomCustomData" === e2 ? this._get(Bs).sendTRTCCustomData(t2) : "getTimerID" === e2 ? this._m.getTimerID() : "getPollingTimerID" === e2 ? this._m.getPollingTimerID(t2) : "setApplicationID" !== e2 ? "getServerConfig" === e2 ? this._get(ws).getServerConfig(t2) : "canIUseModule" === e2 ? this._m.canIUseModule(t2) : "startMessageLongPolling" === e2 ? this._get(vs).startMessageLongPolling(t2) : "stopMessageLongPolling" === e2 ? this._get(vs).stopMessageLongPolling(t2) : "disableMessagePullOnInvite" === e2 ? this._get(Ds).disableMsgPullOnInvite(t2) : "clearLocalMessage" === e2 ? this._get(Ds).clearMemMsg(t2, false) : "setCustomLoginInfo" === e2 ? this._get(Rs).setCustomLoginInfo(t2) : "statTUIKeyFeatures" === e2 ? this._m.statTUIKeyFeatures(t2) : ni({ code: ei.INVALID_OPERATION }) : (this._get(Rs).setApplicationID(t2), void this._get(Gs).updateProtocolConfig());
- }
- revokeMessage(e2) {
- return this._get(Is).revokeMessage(e2);
- }
- resendMessage(e2, t2) {
- return e2 instanceof xi ? this._get(Is).resendMessage(e2, t2) : ni({ code: ei.MSG_INSTANCE_REQUIRED });
- }
- deleteMessage(e2) {
- return this._get(Is).deleteMessage(e2);
- }
- translateText(e2) {
- return this._get(Is).translateText(e2);
- }
- convertVoiceToText(e2) {
- return this._get(Is).convertVoiceToText(e2);
- }
- setMessageExtensions(e2, t2) {
- return this._get(Cs).setMessageExtensions(e2, t2);
- }
- getMessageExtensions(e2) {
- return this._get(Cs).getMessageExtensions(e2);
- }
- deleteMessageExtensions(e2, t2) {
- return this._get(Cs).deleteMessageExtensions(e2, t2);
- }
- addMessageReaction(e2, t2) {
- return this._get(Ys).addMessageReaction(e2, t2);
- }
- removeMessageReaction(e2, t2) {
- return this._get(Ys).removeMessageReaction(e2, t2);
- }
- getMessageReactions(e2) {
- return this._get(Ys).getMessageReactions(e2);
- }
- getAllUserListOfMessageReaction(e2) {
- return this._get(Ys).getAllUserListOfMessageReaction(e2);
- }
- modifyMessage(e2) {
- return this._get(Is).modifyRemoteMessage(e2);
- }
- getMessageList(e2) {
- return this._get(Ds).getMessageList(e2);
- }
- getMessageListHopping(e2) {
- return this._get(Ds).getMessageListHopping(e2);
- }
- sendMessageReadReceipt(e2) {
- return this._get(Ds).sendReadReceipt(e2);
- }
- getMessageReadReceiptList(e2) {
- return this._get(Ds).getReadReceiptList(e2);
- }
- getGroupMessageReadMemberList(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.getReadReceiptDetail(e2) : ni({ code: ei.NO_MODULE });
- }
- findMessage(e2) {
- return this._get(Ds).findMessage(e2);
- }
- setMessageRead(e2) {
- return this._get(Ds).setMessageRead(e2);
- }
- getConversationList(e2) {
- return this._get(Ds).getConvList(e2);
- }
- getConversationProfile(e2) {
- return this._get(Ds).getConversationProfile(e2);
- }
- deleteConversation(e2) {
- return this._get(Ds).deleteConversation(e2);
- }
- setConversationDraft(e2) {
- return this._get(Ds).setConvDraft(e2);
- }
- clearHistoryMessage(e2) {
- return this._get(Ds).clearHistoryMessage(e2);
- }
- pinConversation(e2) {
- return this._get(Ds).pinConversation(e2);
- }
- setAllMessageRead(e2) {
- return this._get(Ds).setAllMessageRead(e2);
- }
- setMessageRemindType(e2) {
- return this._get(Ds).setMessageRemindType(e2);
- }
- setAllReceiveMessageOpt(e2) {
- return this._get(Ds).setAllRcvMsgOpt(e2);
- }
- getAllReceiveMessageOpt() {
- return this._get(Ds).getAllRcvMsgOpt();
- }
- getTotalUnreadMessageCount() {
- return this._get(Ds).getTotalUnreadCount();
- }
- setConversationCustomData(e2) {
- return this._get(Ds).setConvCustomData(e2);
- }
- markConversation(e2) {
- return this._get(Ds).markConv(e2);
- }
- getConversationGroupList() {
- return this._get(Ds).getConvGroupList();
- }
- createConversationGroup(e2) {
- return this._get(Ds).createConvGroup(e2);
- }
- deleteConversationGroup(e2) {
- return this._get(Ds).deleteConvGroup(e2);
- }
- renameConversationGroup(e2) {
- return this._get(Ds).renameConvGroup(e2);
- }
- addConversationsToGroup(e2) {
- return this._get(Ds).addConvsToGroup(e2);
- }
- deleteConversationsFromGroup(e2) {
- return this._get(Ds).deleteConvsFromGroup(e2);
- }
- searchCloudMessages(e2) {
- const t2 = this._get(Xs);
- return t2 ? t2.searchCloudMessages(e2) : ni({ code: ei.NO_MODULE });
- }
- searchCloudUsers(e2) {
- const t2 = this._get(Xs);
- return t2 ? t2.searchCloudUsers(e2) : ni({ code: ei.NO_MODULE });
- }
- searchCloudGroups(e2) {
- const t2 = this._get(Xs);
- return t2 ? t2.searchCloudGroups(e2) : ni({ code: ei.NO_MODULE });
- }
- searchCloudGroupMembers(e2) {
- const t2 = this._get(Xs);
- return t2 ? t2.searchCloudGroupMembers(e2) : ni({ code: ei.NO_MODULE });
- }
- getMyProfile() {
- return this._get(Ts).getMyProfile();
- }
- getUserProfile(e2) {
- return this._get(Ts).getUserProfile(e2);
- }
- updateMyProfile(e2) {
- return this._get(Ts).updateMyProfile(e2);
- }
- getBlacklist() {
- return this._get(Ts).getLocalBlacklist();
- }
- addToBlacklist(e2) {
- return this._get(Ts).addBlacklist(e2);
- }
- removeFromBlacklist(e2) {
- return this._get(Ts).deleteBlacklist(e2);
- }
- setSelfStatus(e2) {
- return this._get(Ts).setSelfStatus(e2);
- }
- getUserStatus(e2) {
- return this._get(Ts).getUserStatus(e2);
- }
- subscribeUserStatus(e2) {
- return this._get(Ts).subscribeUserStatus(e2);
- }
- unsubscribeUserStatus(e2) {
- return this._get(Ts).unsubscribeUserStatus(e2);
- }
- getFriendList() {
- const e2 = this._get(Es);
- return e2 ? e2.getLocalFriendList() : ni({ code: ei.NO_MODULE });
- }
- addFriend(e2) {
- const t2 = this._get(Es);
- return t2 ? t2.addFriend(e2) : ni({ code: ei.NO_MODULE });
- }
- deleteFriend(e2) {
- const t2 = this._get(Es);
- return t2 ? t2.deleteFriend(e2) : ni({ code: ei.NO_MODULE });
- }
- checkFriend(e2) {
- const t2 = this._get(Es);
- return t2 ? t2.checkFriend(e2) : ni({ code: ei.NO_MODULE });
- }
- getFriendProfile(e2) {
- const t2 = this._get(Es);
- return t2 ? t2.getFriendProfile(e2) : ni({ code: ei.NO_MODULE });
- }
- updateFriend(e2) {
- const t2 = this._get(Es);
- return t2 ? t2.updateFriend(e2) : ni({ code: ei.NO_MODULE });
- }
- getFriendApplicationList() {
- const e2 = this._get(Es);
- return e2 ? e2.getLocalFriendApplicationList() : ni({ code: ei.NO_MODULE });
- }
- acceptFriendApplication(e2) {
- const t2 = this._get(Es);
- return t2 ? t2.acceptFriendApplication(e2) : ni({ code: ei.NO_MODULE });
- }
- refuseFriendApplication(e2) {
- const t2 = this._get(Es);
- return t2 ? t2.refuseFriendApplication(e2) : ni({ code: ei.NO_MODULE });
- }
- deleteFriendApplication(e2) {
- const t2 = this._get(Es);
- return t2 ? t2.deleteFriendApplication(e2) : ni({ code: ei.NO_MODULE });
- }
- setFriendApplicationRead() {
- const e2 = this._get(Es);
- return e2 ? e2.setFriendApplicationRead() : ni({ code: ei.NO_MODULE });
- }
- getFriendGroupList() {
- const e2 = this._get(Es);
- return e2 ? e2.getLocalFriendGroupList() : ni({ code: ei.NO_MODULE });
- }
- createFriendGroup(e2) {
- const t2 = this._get(Es);
- return t2 ? t2.createFriendGroup(e2) : ni({ code: ei.NO_MODULE });
- }
- deleteFriendGroup(e2) {
- const t2 = this._get(Es);
- return t2 ? t2.deleteFriendGroup(e2) : ni({ code: ei.NO_MODULE });
- }
- addToFriendGroup(e2) {
- const t2 = this._get(Es);
- return t2 ? t2.addToFriendGroup(e2) : ni({ code: ei.NO_MODULE });
- }
- removeFromFriendGroup(e2) {
- const t2 = this._get(Es);
- return t2 ? t2.removeFromFriendGroup(e2) : ni({ code: ei.NO_MODULE });
- }
- renameFriendGroup(e2) {
- const t2 = this._get(Es);
- return t2 ? t2.renameFriendGroup(e2) : ni({ code: ei.NO_MODULE });
- }
- followUser(e2) {
- const t2 = this._get(zs);
- return t2 ? t2.followUser(e2) : ni({ code: ei.NO_MODULE });
- }
- unfollowUser(e2) {
- const t2 = this._get(zs);
- return t2 ? t2.unfollowUser(e2) : ni({ code: ei.NO_MODULE });
- }
- getMyFollowersList(e2) {
- const t2 = this._get(zs);
- return t2 ? t2.getMyFollowersList(e2) : ni({ code: ei.NO_MODULE });
- }
- getMyFollowingList(e2) {
- const t2 = this._get(zs);
- return t2 ? t2.getMyFollowingList(e2) : ni({ code: ei.NO_MODULE });
- }
- getMutualFollowersList(e2) {
- const t2 = this._get(zs);
- return t2 ? t2.getMutualFollowersList(e2) : ni({ code: ei.NO_MODULE });
- }
- getUserFollowInfo(e2) {
- const t2 = this._get(zs);
- return t2 ? t2.getUserFollowInfo(e2) : ni({ code: ei.NO_MODULE });
- }
- checkFollowType(e2) {
- const t2 = this._get(zs);
- return t2 ? t2.checkFollowType(e2) : ni({ code: ei.NO_MODULE });
- }
- getGroupList() {
- const e2 = this._get(vs);
- return e2 ? e2.getGroupList() : ni({ code: ei.NO_MODULE });
- }
- getGroupProfile(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.getGroupProfile(e2) : ni({ code: ei.NO_MODULE });
- }
- createGroup(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.createGroup(e2) : ni({ code: ei.NO_MODULE });
- }
- dismissGroup(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.dismissGroup(e2) : ni({ code: ei.NO_MODULE });
- }
- updateGroupProfile(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.updateGroupProfile(e2) : ni({ code: ei.NO_MODULE });
- }
- joinGroup(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.joinGroup(e2) : ni({ code: ei.NO_MODULE });
- }
- quitGroup(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.quitGroup(e2) : ni({ code: ei.NO_MODULE });
- }
- searchGroupByID(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.searchGroupByID(e2) : ni({ code: ei.NO_MODULE });
- }
- getGroupOnlineMemberCount(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.getGroupOnlineMemberCount(e2) : ni({ code: ei.NO_MODULE });
- }
- changeGroupOwner(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.changeGroupOwner(e2) : ni({ code: ei.NO_MODULE });
- }
- getGroupApplicationList() {
- const e2 = this._get(vs);
- return e2 ? e2.getGroupApplicationList() : ni({ code: ei.NO_MODULE });
- }
- handleGroupApplication(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.handleGroupApplication(e2) : ni({ code: ei.NO_MODULE });
- }
- initGroupAttributes(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.initGroupAttributes(e2) : ni({ code: ei.NO_MODULE });
- }
- setGroupAttributes(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.setGroupAttributes(e2) : ni({ code: ei.NO_MODULE });
- }
- deleteGroupAttributes(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.deleteGroupAttributes(e2) : ni({ code: ei.NO_MODULE });
- }
- getGroupAttributes(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.getGroupAttributes(e2) : ni({ code: ei.NO_MODULE });
- }
- setGroupCounters(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.setGroupCounters(e2) : ni({ code: ei.NO_MODULE });
- }
- increaseGroupCounter(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.increaseGroupCounter(e2) : ni({ code: ei.NO_MODULE });
- }
- decreaseGroupCounter(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.decreaseGroupCounter(e2) : ni({ code: ei.NO_MODULE });
- }
- getGroupCounters(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.getGroupCounters(e2) : ni({ code: ei.NO_MODULE });
- }
- getGroupMemberList(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.getGroupMemberList(e2) : ni({ code: ei.NO_MODULE });
- }
- getGroupMemberProfile(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.getGroupMemberProfile(e2) : ni({ code: ei.NO_MODULE });
- }
- addGroupMember(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.addGroupMember(e2) : ni({ code: ei.NO_MODULE });
- }
- deleteGroupMember(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.deleteGroupMember(e2) : ni({ code: ei.NO_MODULE });
- }
- setGroupMemberMuteTime(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.setGroupMemberMuteTime(e2) : ni({ code: ei.NO_MODULE });
- }
- setGroupMemberRole(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.setGroupMemberRole(e2) : ni({ code: ei.NO_MODULE });
- }
- setGroupMemberNameCard(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.setGroupMemberNameCard(e2) : ni({ code: ei.NO_MODULE });
- }
- setGroupMemberCustomField(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.setGroupMemberCustomField(e2) : ni({ code: ei.NO_MODULE });
- }
- markGroupMemberList(e2) {
- const t2 = this._get(vs);
- return t2 ? t2.markGroupMemberList(e2) : ni({ code: ei.NO_MODULE });
- }
- getJoinedCommunityList() {
- return this._get(Ss).getJoinedCommunityList();
- }
- createTopicInCommunity(e2) {
- return this._get(Ss).createTopicInCommunity(e2);
- }
- deleteTopicFromCommunity(e2) {
- return this._get(Ss).deleteTopicFromCommunity(e2);
- }
- updateTopicProfile(e2) {
- return this._get(Ss).updateTopicProfile(e2);
- }
- getTopicList(e2) {
- return this._get(Ss).getTopicList(e2);
- }
- addSignalingListener(e2, t2, s2) {
- const i2 = this._get(Ws);
- i2 && i2.addSignalingListener(e2, this._safetyCallbackFactory.defense(e2, t2, s2), s2);
- }
- removeSignalingListener(e2, t2, s2) {
- var i2 = this._safetyCallbackFactory.find(e2, t2);
- if (null !== i2) {
- const n2 = this._get(Ws);
- n2 && (n2.removeSignalingListener(e2, i2, s2), this._safetyCallbackFactory.delete(e2, t2));
- }
- }
- invite(e2) {
- const t2 = this._get(Ws);
- return t2 ? t2.invite(e2) : ni({ code: ei.NO_MODULE });
- }
- inviteSync(e2, t2, s2) {
- const i2 = this._get(Ws);
- return i2 ? i2.inviteSync(e2, t2, s2) : "";
- }
- inviteInGroup(e2) {
- const t2 = this._get(Ws);
- return t2 ? t2.invite(e2) : ni({ code: ei.NO_MODULE });
- }
- inviteInGroupSync(e2, t2, s2) {
- const i2 = this._get(Ws);
- return i2 ? i2.inviteSync(e2, t2, s2) : "";
- }
- cancel(e2) {
- const t2 = this._get(Ws);
- return t2 ? t2.cancel(e2) : ni({ code: ei.NO_MODULE });
- }
- accept(e2) {
- const t2 = this._get(Ws);
- return t2 ? t2.accept(e2) : ni({ code: ei.NO_MODULE });
- }
- reject(e2) {
- const t2 = this._get(Ws);
- return t2 ? t2.reject(e2) : ni({ code: ei.NO_MODULE });
- }
- getSignalingInfo(e2) {
- const t2 = this._get(Ws);
- return t2 ? t2.getSignalingInfo(e2) : null;
- }
- modifyInvitation(e2) {
- const t2 = this._get(Ws);
- return t2 ? t2.modifyInvitation(e2) : ni({ code: ei.NO_MODULE });
- }
-};
-var Lr = { login: 1, logout: 1, getLoginUser: 1, destroy: 1, on: 1, off: 1, ready: 1, setLogLevel: 1, joinGroup: 1, quitGroup: 1, registerPlugin: 1, getGroupOnlineMemberCount: 1, isReady: 1, addSignalingListener: 1, removeSignalingListener: 1, callExperimentalAPI: 1 };
-function Ar(e2, t2) {
- if (e2.isReady() || 1 === Lr[t2])
- return true;
- var s2 = e2.getNotReadyReason(), s2 = { code: s2, message: e2.getErrMsg(s2) + ` | ${t2} | ` + e2.getErrMsg(ei.SDK_IS_NOT_READY) };
- return e2.onError(s2), s2;
-}
-var Or = {};
-var Nr = { create: function(t2) {
- var i2 = "TencentCloudChat.create";
- let n2 = 0;
- var o2 = t2["SDKAppID"];
- if (Ge(o2))
- n2 = o2;
- else if (n2 = parseInt(o2), isNaN(o2))
- return Ce.e(i2 + " failed. Failed to parse the SDKAppID, please check the arguments"), null;
- if (n2 && Or[n2])
- return Or[n2];
- Ce.l(i2);
- const r2 = new Rr({ ...t2, SDKAppID: n2 });
- r2.on(e.SDK_DESTROY, (e2) => {
- Or[e2.data.SDKAppID] = null, delete Or[e2.data.SDKAppID];
- });
- o2 = function(n3) {
- const e2 = /* @__PURE__ */ Object.create(null);
- return Object.keys(fs).forEach((i3) => {
- if (n3[i3]) {
- const t3 = new s();
- e2[i3] = function() {
- var e3 = Array.from(arguments);
- return t3.use(function(e4, t4) {
- var s2 = Ar(n3, i3);
- return true === s2 ? t4() : ni(s2);
- }).use(function(e4, t4) {
- if (true === Lt(e4, ms[i3], i3))
- return t4();
- }).use(function(e4, t4) {
- return n3[i3].apply(n3, e4);
- }), t3.run(e3);
- };
- }
- }), e2;
- }(r2);
- return Or[n2] = o2, ms.hookGetAPITips(r2.getErrMsg.bind(r2)), Ce.l(i2 + " ok"), o2;
-} };
-Nr.TYPES = t, Nr.EVENT = e, Nr.TSignaling = { NEW_INVITATION_RECEIVED: "newInvitationReceived", INVITEE_ACCEPTED: "ts_invitee_accepted", INVITEE_REJECTED: "ts_invitee_rejected", INVITATION_CANCELLED: "ts_invitation_cancelled", INVITATION_TIMEOUT: "ts_invitation_timeout", INVITATION_MODIFIED: "ts_invitation_modified", ACTION_TYPE_UNKNOWN: 0, ACTION_TYPE_INVITE: 1, ACTION_TYPE_CANCEL_INVITE: 2, ACTION_TYPE_ACCEPT_INVITE: 3, ACTION_TYPE_REJECT_INVITE: 4, ACTION_TYPE_INVITE_TIMEOUT: 5 }, Nr.VERSION = "3.5.2", Ce.l("TencentCloudChat.VERSION:" + Nr.VERSION);
-export {
- Nr as default
-};
-//# sourceMappingURL=@tencentcloud_chat_index__es__js.js.map
diff --git a/service/unpackage/dist/cache/.vite/deps/@tencentcloud_chat_index__es__js.js.map b/service/unpackage/dist/cache/.vite/deps/@tencentcloud_chat_index__es__js.js.map
deleted file mode 100644
index 8a7ba917..00000000
--- a/service/unpackage/dist/cache/.vite/deps/@tencentcloud_chat_index__es__js.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "version": 3,
- "sources": ["../../../../../node_modules/@tencentcloud/chat/index.es.js"],
- "sourcesContent": ["\"use strict\";const e={SDK_READY:\"sdkStateReady\",SDK_NOT_READY:\"sdkStateNotReady\",SDK_DESTROY:\"sdkDestroy\",MESSAGE_RECEIVED:\"onMessageReceived\",ROOM_CUSTOM_DATA_RECEIVED:\"onRoomCustomDataReceived\",MESSAGE_MODIFIED:\"onMessageModified\",MESSAGE_REVOKED:\"onMessageRevoked\",MESSAGE_READ_BY_PEER:\"onMessageReadByPeer\",MESSAGE_READ_RECEIPT_RECEIVED:\"onMessageReadReceiptReceived\",MESSAGE_EXTENSIONS_UPDATED:\"onMessageExtensionsUpdated\",MESSAGE_EXTENSIONS_DELETED:\"onMessageExtensionsDeleted\",MESSAGE_REACTIONS_UPDATED:\"onMessageReactionsUpdated\",CONVERSATION_LIST_UPDATED:\"onConversationListUpdated\",TOTAL_UNREAD_MESSAGE_COUNT_UPDATED:\"onTotalUnreadMessageCountUpdated\",CONVERSATION_GROUP_LIST_UPDATED:\"onConversationGroupListUpdated\",CONVERSATION_IN_GROUP_UPDATED:\"onConversationInGroupUpdated\",GROUP_LIST_UPDATED:\"onGroupListUpdated\",GROUP_ATTRIBUTES_UPDATED:\"groupAttributesUpdated\",GROUP_COUNTER_UPDATED:\"onGroupCounterUpdated\",TOPIC_CREATED:\"onTopicCreated\",TOPIC_DELETED:\"onTopicDeleted\",TOPIC_UPDATED:\"onTopicUpdated\",PROFILE_UPDATED:\"onProfileUpdated\",USER_STATUS_UPDATED:\"onUserStatusUpdated\",BLACKLIST_UPDATED:\"blacklistUpdated\",FRIEND_LIST_UPDATED:\"onFriendListUpdated\",FRIEND_GROUP_LIST_UPDATED:\"onFriendGroupListUpdated\",FRIEND_APPLICATION_LIST_UPDATED:\"onFriendApplicationListUpdated\",MY_FOLLOWERS_LIST_UPDATED:\"onMyFollowersListUpdated\",MY_FOLLOWING_LIST_UPDATED:\"onMyFollowingListUpdated\",MUTUAL_FOLLOWERS_LIST_UPDATED:\"onMutualFollowersListUpdated\",KICKED_OUT:\"kickedOut\",ERROR:\"error\",NET_STATE_CHANGE:\"netStateChange\",ALL_RECEIVE_MESSAGE_OPT_UPDATED:\"onAllReceiveMessageOptUpdated\"},t={MSG_TEXT:\"TIMTextElem\",MSG_IMAGE:\"TIMImageElem\",MSG_SOUND:\"TIMSoundElem\",MSG_AUDIO:\"TIMSoundElem\",MSG_FILE:\"TIMFileElem\",MSG_FACE:\"TIMFaceElem\",MSG_VIDEO:\"TIMVideoFileElem\",MSG_GEO:\"TIMLocationElem\",MSG_LOCATION:\"TIMLocationElem\",MSG_GRP_TIP:\"TIMGroupTipElem\",MSG_GRP_SYS_NOTICE:\"TIMGroupSystemNoticeElem\",MSG_CUSTOM:\"TIMCustomElem\",MSG_MERGER:\"TIMRelayElem\",MSG_PRIORITY_HIGH:\"High\",MSG_PRIORITY_NORMAL:\"Normal\",MSG_PRIORITY_LOW:\"Low\",MSG_PRIORITY_LOWEST:\"Lowest\",CONV_C2C:\"C2C\",CONV_GROUP:\"GROUP\",CONV_TOPIC:\"TOPIC\",CONV_SYSTEM:\"@TIM#SYSTEM\",CONV_AT_ME:1,CONV_AT_ALL:2,CONV_AT_ALL_AT_ME:3,CONV_MARK_TYPE_STAR:1,CONV_MARK_TYPE_UNREAD:2,CONV_MARK_TYPE_FOLD:4,CONV_MARK_TYPE_HIDE:8,GRP_PRIVATE:\"Private\",GRP_WORK:\"Private\",GRP_PUBLIC:\"Public\",GRP_CHATROOM:\"ChatRoom\",GRP_MEETING:\"ChatRoom\",GRP_AVCHATROOM:\"AVChatRoom\",GRP_COMMUNITY:\"Community\",GRP_ROOM:\"Room\",GRP_LIVE:\"Live\",GRP_MBR_ROLE_OWNER:\"Owner\",GRP_MBR_ROLE_ADMIN:\"Admin\",GRP_MBR_ROLE_MEMBER:\"Member\",GRP_MBR_ROLE_CUSTOM:\"Custom\",GRP_TIP_MBR_JOIN:1,GRP_TIP_MBR_QUIT:2,GRP_TIP_MBR_KICKED_OUT:3,GRP_TIP_MBR_SET_ADMIN:4,GRP_TIP_MBR_CANCELED_ADMIN:5,GRP_TIP_GRP_PROFILE_UPDATED:6,GRP_TIP_MBR_PROFILE_UPDATED:7,GRP_TIP_BAN_AVCHATROOM_MEMBER:10,GRP_TIP_UNBAN_AVCHATROOM_MEMBER:11,MSG_REMIND_ACPT_AND_NOTE:\"AcceptAndNotify\",MSG_REMIND_ACPT_NOT_NOTE:\"AcceptNotNotify\",MSG_REMIND_DISCARD:\"Discard\",RECEIVE_WITH_OFFLINE_PUSH_EXCEPT_AT:\"AcceptNotNotifyExceptAt\",NOT_RECEIVE_OFFLINE_PUSH_EXCEPT_AT:\"AcceptNotNotifyExceptAt\",NOT_RECEIVE_MSG_EXCEPT_AT:\"NotReceiveMsgExceptAt\",GENDER_UNKNOWN:\"Gender_Type_Unknown\",GENDER_FEMALE:\"Gender_Type_Female\",GENDER_MALE:\"Gender_Type_Male\",KICKED_OUT_MULT_ACCOUNT:\"multipleAccount\",KICKED_OUT_MULT_DEVICE:\"multipleDevice\",KICKED_OUT_USERSIG_EXPIRED:\"userSigExpired\",KICKED_OUT_REST_API:\"REST_API_Kick\",ALLOW_TYPE_ALLOW_ANY:\"AllowType_Type_AllowAny\",ALLOW_TYPE_NEED_CONFIRM:\"AllowType_Type_NeedConfirm\",ALLOW_TYPE_DENY_ANY:\"AllowType_Type_DenyAny\",FORBID_TYPE_NONE:\"AdminForbid_Type_None\",FORBID_TYPE_SEND_OUT:\"AdminForbid_Type_SendOut\",JOIN_OPTIONS_FREE_ACCESS:\"FreeAccess\",JOIN_OPTIONS_NEED_PERMISSION:\"NeedPermission\",JOIN_OPTIONS_DISABLE_APPLY:\"DisableApply\",JOIN_STATUS_SUCCESS:\"JoinedSuccess\",JOIN_STATUS_ALREADY_IN_GROUP:\"AlreadyInGroup\",JOIN_STATUS_WAIT_APPROVAL:\"WaitAdminApproval\",INVITE_OPTIONS_DISABLE_INVITE:\"DisableInvite\",INVITE_OPTIONS_NEED_PERMISSION:\"NeedPermission\",INVITE_OPTIONS_FREE_ACCESS:\"FreeAccess\",GRP_PROFILE_OWNER_ID:\"ownerID\",GRP_PROFILE_CREATE_TIME:\"createTime\",GRP_PROFILE_LAST_INFO_TIME:\"lastInfoTime\",GRP_PROFILE_MEMBER_NUM:\"memberNum\",GRP_PROFILE_MAX_MEMBER_NUM:\"maxMemberNum\",GRP_PROFILE_JOIN_OPTION:\"joinOption\",GRP_PROFILE_INVITE_OPTION:\"inviteOption\",GRP_PROFILE_INTRODUCTION:\"introduction\",GRP_PROFILE_NOTIFICATION:\"notification\",GRP_PROFILE_MUTE_ALL_MBRS:\"muteAllMembers\",SNS_ADD_TYPE_SINGLE:\"Add_Type_Single\",SNS_ADD_TYPE_BOTH:\"Add_Type_Both\",SNS_DELETE_TYPE_SINGLE:\"Delete_Type_Single\",SNS_DELETE_TYPE_BOTH:\"Delete_Type_Both\",SNS_APPLICATION_TYPE_BOTH:\"Pendency_Type_Both\",SNS_APPLICATION_SENT_TO_ME:\"Pendency_Type_ComeIn\",SNS_APPLICATION_SENT_BY_ME:\"Pendency_Type_SendOut\",SNS_APPLICATION_AGREE:\"Response_Action_Agree\",SNS_APPLICATION_AGREE_AND_ADD:\"Response_Action_AgreeAndAdd\",SNS_CHECK_TYPE_BOTH:\"CheckResult_Type_Both\",SNS_CHECK_TYPE_SINGLE:\"CheckResult_Type_Single\",SNS_TYPE_NO_RELATION:\"CheckResult_Type_NoRelation\",SNS_TYPE_A_WITH_B:\"CheckResult_Type_AWithB\",SNS_TYPE_B_WITH_A:\"CheckResult_Type_BWithA\",SNS_TYPE_BOTH_WAY:\"CheckResult_Type_BothWay\",NET_STATE_CONNECTED:\"connected\",NET_STATE_CONNECTING:\"connecting\",NET_STATE_DISCONNECTED:\"disconnected\",MSG_AT_ALL:\"__kImSDK_MesssageAtALL__\",READ_ALL_C2C_MSG:\"readAllC2CMessage\",READ_ALL_GROUP_MSG:\"readAllGroupMessage\",READ_ALL_MSG:\"readAllMessage\",USER_STATUS_UNKNOWN:0,USER_STATUS_ONLINE:1,USER_STATUS_OFFLINE:2,USER_STATUS_UNLOGINED:3,IOS_OFFLINE_PUSH_NO_SOUND:\"push.no_sound\",IOS_OFFLINE_PUSH_DEFAULT_SOUND:\"default\"};class s{constructor(){this.cache=[],this.options=null}use(e){if(\"function\"!=typeof e)throw\"middleware must be a function\";return this.cache.push(e),this}next(e){if(this.middlewares&&0{const s=i.find(e=>e.key===t);s?s.value!==e&&(s.value=e,n=!0):(i.push({key:t,value:e}),n=!0)}),n}function it(e){if(be(e)&&be(e.webhookInfo)){const t=[];return e.webhookInfo.disableCloudMessagePreHook&&t.push(\"ForbidBeforeSendMsgCallback\"),e.webhookInfo.disableCloudMessagePostHook&&t.push(\"ForbidAfterSendMsgCallback\"),0!==t.length?t:void 0}}const nt=e=>e===t.GRP_AVCHATROOM,ot=({type:e,groupID:s})=>e===t.GRP_COMMUNITY||(\"\"+s).startsWith(Re)&&!(\"\"+s).includes(Le),rt=e=>(\"\"+e).startsWith(Re)&&(\"\"+e).includes(Le),at=e=>ke(e)&&e.slice(0,3)===t.CONV_C2C,ct=e=>ke(e)&&e.slice(0,5)===t.CONV_GROUP,lt=e=>ke(e)&&e===t.CONV_SYSTEM;function ut(t,s){const i={};return Object.keys(t).forEach(e=>{i[e]=s(t[e],e)}),i}function dt(i){return b?Promise.resolve({width:0,height:0}):k?new Promise((t,e)=>{$.getImageInfo({src:i,success(e){t({width:e.width,height:e.height})},fail(){t({width:0,height:0})}})}):Z&&9===Q?Promise.resolve({width:0,height:0}):new Promise((e,t)=>{let s=new Image;s.onload=function(){e({width:this.width,height:this.height}),s=null},s.onerror=function(){e({width:0,height:0}),s=null},s.src=i})}function _t(){function e(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return\"\"+(e()+e())+e()+e()+e()+e()+e()+e()}function ht(){let e=\"unknown\";if(se&&(e=\"mac\"),te&&(e=\"windows\"),W&&(e=\"ios\"),z&&(e=\"android\"),k)try{var t=$.getSystemInfoSync().platform;void 0!==t&&(e=t)}catch(e){}return e}function pt(t,s){t=t.split(\".\"),s=s.split(\".\");const i=Math.max(t.length,s.length);for(;t.lengthn)return 1;if(i{var t=1===s.length?s[0][e]:void 0;o=!!At(t,i[e],n,e)&&o});else if(Fe(i))for(let e=0;eo&&(Ft({api:t,paramName:s,desc:(i=s,n=o,gs(\"MaximumArrayLengthLog\",i,n))}),1)):(Ft({api:t,paramName:s,desc:Ht()}),!1)},hs=function(e,t,s,{allowUndefined:i,min:n,max:o}){return $e(e)?!!i||(Ft({api:t,paramName:s,desc:Vt()}),!1):Ge(e)?Ge(n)&&e_s(e,t,s,{allowUndefined:!0,allowEmpty:!0,maxLength:5})},keywordListExceptMsg:{type:\"Array\",required:!0,validator:(e,t,s)=>_s(e,t,s,{allowUndefined:!1,allowEmpty:!1,maxLength:5})},keywordListMatchType:{type:\"String\",required:!1,validator:(e,t,s)=>!e||\"or\"===e||\"and\"===e||Ft({api:t,paramName:s,desc:e+\" is invalid match type\"})},cursor:{type:\"String\",required:!1},count:{type:\"Number\",required:!1,validator:(e,t,s)=>hs(e,t,s,{allowUndefined:!0,min:1,max:100})},groupTypeList:{type:\"Array\",required:!1,validator:(e,s,i)=>{if(!e)return!0;if(!_s(e,s,i,{allowUndefined:!0,allowEmpty:!0}))return!1;const n=[t.GRP_PUBLIC,t.GRP_COMMUNITY,t.GRP_WORK,t.GRP_MEETING];return!(0-1===n.indexOf(e)).length&&(Ft({api:s,paramName:i,desc:rs(i,\"group\")}),1))}}};let gs=null;const ms={hookGetAPITips:function(e){gs=e},login:{userID:as,userSig:as},addToBlacklist:{userIDList:cs},removeFromBlacklist:{userIDList:cs},on:[{name:\"eventName\",type:\"String\",validator:(e,t,s)=>\"string\"==typeof e&&0!==e.length||(Ft({api:t,paramName:s,desc:qt(s)}),!1)},{name:\"handler\",type:\"Function\",validator:(e,t,s)=>\"function\"!=typeof e?(Ft({api:t,paramName:s,desc:Kt()}),!1):(\"\"===e.name&&Ft({api:t,paramName:s,desc:is()}),!0)}],once:[{name:\"eventName\",type:\"String\",validator:(e,t,s)=>\"string\"==typeof e&&0!==e.length||(Ft({api:t,paramName:s,desc:qt(s)}),!1)},{name:\"handler\",type:\"Function\",validator:(e,t,s)=>\"function\"!=typeof e?(Ft({api:t,paramName:s,desc:Kt()}),!1):(\"\"===e.name&&Ft({api:t,paramName:s,desc:is()}),!0)}],off:[{name:\"eventName\",type:\"String\",validator:(e,t,s)=>\"string\"==typeof e&&0!==e.length||(Ft({api:t,paramName:s,desc:qt(s)}),!1)},{name:\"handler\",type:\"Function\",validator:(e,t,s)=>\"function\"!=typeof e?(Ft({api:t,paramName:s,desc:Kt()}),!1):(\"\"===e.name&&Ft({api:t,paramName:s,desc:is()}),!0)}],sendMessage:[{name:\"message\",...ls}],setMessageExtensions:[{name:\"message\",...ls,validator:(e,t,s)=>e.status===Nt&&!0===e.isSupportExtension||(Ft({api:t,paramName:s,desc:ns()}),!1)},{name:\"extensions\",...cs}],getMessageExtensions:[{name:\"message\",...ls,validator:(e,t,s)=>e.status===Nt&&!0===e.isSupportExtension||(Ft({api:t,paramName:s,desc:ns()}),!1)}],deleteMessageExtensions:[{name:\"message\",...ls,validator:(e,t,s)=>e.status===Nt&&!0===e.isSupportExtension||(Ft({api:t,paramName:s,desc:ns()}),!1)}],addMessageReaction:[{name:\"message\",...ls,validator:(e,t,s)=>e.status===Nt||(Ft({api:t,paramName:s,desc:os()}),!1)},{name:\"reactionID\",...as}],removeMessageReaction:[{name:\"message\",...ls,validator:(e,t,s)=>e.status===Nt||(Ft({api:t,paramName:s,desc:os()}),!1)},{name:\"reactionID\",...as}],getMessageReactions:{messageList:{...cs}},getAllUserListOfMessageReaction:{message:{...ls,validator:(e,t,s)=>e.status===Nt||(Ft({api:t,paramName:s,desc:os()}),!1)},reactionID:{...as},nextSeq:{type:\"Number\"},count:{type:\"Number\"}},getMessageList:{conversationID:{...as,validator:e=>bt(e)},nextReqMessageID:{type:\"String\"},count:{type:\"Number\",validator:(e,t,s)=>!(!$e(e)&&!/^[1-9][0-9]*$/.test(e)&&(Ft({api:t,paramName:s,desc:zt()}),1))}},getMessageListHopping:{conversationID:{...as,validator:e=>bt(e)},sequence:{type:\"Number\"},time:{type:\"Number\"},direction:{type:\"Number\",validator:(e,t,s)=>!(!$e(e)&&0!==e&&1!==e&&(Ft({api:t,paramName:s,desc:gs(\"0Or1RequiredLog\")}),1))},count:{type:\"Number\",validator:(e,t,s)=>!(!$e(e)&&!/^[1-9][0-9]*$/.test(e)&&(Ft({api:t,paramName:s,desc:zt}),1))}},setMessageRead:{conversationID:{...as,validator:e=>bt(e)}},setAllMessageRead:{scope:{type:\"String\",required:!1,validator:(e,s,i)=>!e||-1!==[t.READ_ALL_C2C_MSG,t.READ_ALL_GROUP_MSG,t.READ_ALL_MSG].indexOf(e)||(Ft({api:s,paramName:i,desc:gs(\"ValidScopeRequired\")}),!1)}},getConversationProfile:[{name:\"conversationID\",...as,validator:e=>bt(e)}],clearHistoryMessage:[{name:\"conversationID\",...as,validator:e=>bt(e)}],pinConversation:{conversationID:{...as,validator:e=>bt(e)},isPinned:{...us}},setConversationDraft:{conversationID:{...as,validator:e=>bt(e)},draftText:{type:\"String\",validator:(e,t,s)=>!!ke(e)||(Ft({api:t,paramName:s,desc:$t()}),!1)}},setConversationCustomData:{conversationIDList:{...cs},customData:{type:\"String\",validator:(e,t,s)=>ke(e)?!(256{return Ge(e)?e<=0?(Ft({api:t,paramName:s,desc:Jt(s,0)}),!1):!(e>=Math.pow(2,64)&&(Ft({api:t,paramName:s,desc:(e=s,gs(\"NumberLessThanLog\",e,\"Math.pow(2,64)\"))}),1)):(Ft({api:t,paramName:s,desc:xt()}),!1)}},enableMark:{...us}},createConversationGroup:{conversationIDList:{...cs},groupName:{...as,validator:(e,t,s)=>!(!e||32!(!e||32{let n=!0;return Object.keys(t).forEach(e=>{if(!ke(t[e]))return Ft({api:s,paramName:i,desc:Zt(\"value\")}),n=!1}),n}}},setGroupAttributes:{groupID:as,groupAttributes:{...ls,validator:(t,s,i)=>{let n=!0;return Object.keys(t).forEach(e=>{if(!ke(t[e]))return Ft({api:s,paramName:i,desc:Zt(\"value\")}),n=!1}),n}}},deleteGroupAttributes:{groupID:as,keyList:{type:\"Array\",validator:(e,s,i)=>{if($e(e)||!Fe(e))return Ft({api:s,paramName:i,desc:Ht()}),!1;if(Oe(e))return!0;{let t=!0;return e.forEach(e=>{if(!ke(e))return Ft({api:s,paramName:i,desc:gs(\"StringArrayRequiredLog\")}),t=!1}),t}}}},getGroupAttributes:{groupID:as,keyList:{type:\"Array\",validator:(e,s,i)=>{if($e(e)||!Fe(e))return Ft({api:s,paramName:i,desc:Ht()}),!1;if(Oe(e))return!0;{let t=!0;return e.forEach(e=>{if(!ke(e))return Ft({api:s,paramName:i,desc:Zt(\"key\")}),t=!1}),t}}}},setGroupCounters:{groupID:as,counters:ls},increaseGroupCounter:{groupID:as,key:as,value:ds},decreaseGroupCounter:{groupID:as,key:as,value:ds},getGroupCounters:{groupID:as},getGroupMemberList:{groupID:as,count:{type:\"Number\"}},getGroupMemberProfile:{groupID:as,userIDList:cs,memberCustomFieldFilter:{type:\"Array\"}},addGroupMember:{groupID:as,userIDList:cs},setGroupMemberRole:{groupID:as,userID:as,role:as},setGroupMemberMuteTime:{groupID:as,userID:as,muteTime:{type:\"Number\",validator:e=>0<=e}},setGroupMemberNameCard:{groupID:as,userID:{type:\"String\"},nameCard:{type:\"String\",validator:(e,t,s)=>ke(e)?(e.length,!0):(Ft({api:t,paramName:s,desc:$t()}),!1)}},setGroupMemberCustomField:{groupID:as,userID:{type:\"String\"},memberCustomField:cs},deleteGroupMember:{groupID:as},markGroupMemberList:{groupID:as,markType:{type:\"number\",validator:(e,t,s)=>Ge(e)?!(e<1e3&&(Ft({api:t,paramName:s,desc:Xt(s,1e3)}),1)):(Ft({api:t,paramName:s,desc:xt()}),!1)},userIDList:{...cs},enableMark:{...us}},createTextMessage:{to:as,conversationType:as,payload:{...ls,validator:(e,t,s)=>be(e)?ke(e.text)?0!==e.text.length||(Ft({api:t,paramName:\"payload.text\",desc:es()}),!1):(Ft({api:t,paramName:\"payload.text\",desc:$t()}),!1):(Ft({api:t,paramName:s,desc:Qt()}),!1)}},createTextAtMessage:{to:as,conversationType:as,payload:{...ls,validator:(e,t,s)=>be(e)?ke(e.text)?0===e.text.length?(Ft({api:t,paramName:\"payload.text\",desc:es()}),!1):!(e.atUserList&&!Fe(e.atUserList)&&(Ft({api:t,paramName:\"payload.atUserList\",desc:Ht()}),1)):(Ft({api:t,paramName:\"payload.text\",desc:$t()}),!1):(Ft({api:t,paramName:s,desc:Qt()}),!1)}},createCustomMessage:{to:as,conversationType:as,payload:{...ls,validator:(e,t,s)=>be(e)?e.data&&!ke(e.data)?(Ft({api:t,paramName:\"payload.data\",desc:$t()}),!1):e.description&&!ke(e.description)?(Ft({api:t,paramName:\"payload.description\",desc:$t()}),!1):!(e.extension&&!ke(e.extension)&&(Ft({api:t,paramName:\"payload.extension\",desc:$t()}),1)):(Ft({api:t,paramName:\"payload\",desc:Qt()}),!1)}},createImageMessage:{to:as,conversationType:as,payload:{...ls,validator:(e,t,s)=>{if(!be(e))return Ft({api:t,paramName:s,desc:Qt()}),!1;if($e(e.file))return Ft({api:t,paramName:\"payload.file\",desc:Vt()}),!1;if(F){if(!(e.file instanceof HTMLInputElement||Ue(e.file)))return be(e.file)&&\"undefined\"!=typeof uni?0!==e.file.tempFilePaths.length&&0!==e.file.tempFiles.length||(Ft({api:t,paramName:\"payload.file\",desc:ts()}),!1):(Ft({api:t,paramName:\"payload.file\",desc:Bt()}),!1);if(e.file instanceof HTMLInputElement&&0===e.file.files.length)return Ft({api:t,paramName:\"payload.file\",desc:ts()}),!1}return!0},onProgress:{type:\"Function\",required:!1,validator:(e,t,s)=>($e(e)&&Ft({api:t,paramName:s,desc:Yt()}),!0)}}},createAudioMessage:{to:as,conversationType:as,payload:{...ls,validator:(e,t,s)=>!!be(e)||(Ft({api:t,paramName:s,desc:Qt()}),!1)},onProgress:{type:\"Function\",required:!1,validator:(e,t,s)=>($e(e)&&Ft({api:t,paramName:s,desc:Yt()}),!0)}},createVideoMessage:{to:as,conversationType:as,payload:{...ls,validator:(e,t,s)=>{if(!be(e))return Ft({api:t,paramName:s,desc:Qt()}),!1;if($e(e.file))return Ft({api:t,paramName:\"payload.file\",desc:Vt()}),!1;if(F){if(!(e.file instanceof HTMLInputElement||Ue(e.file)))return be(e.file)&&\"undefined\"!=typeof uni?!!Ue(e.file.tempFile)||(Ft({api:t,paramName:\"payload.file\",desc:ts()}),!1):(Ft({api:t,paramName:\"payload.file\",desc:Bt()}),!1);if(e.file instanceof HTMLInputElement&&0===e.file.files.length)return Ft({api:t,paramName:\"payload.file\",desc:ts()}),!1}return!0}},onProgress:{type:\"Function\",required:!1,validator:(e,t,s)=>($e(e)&&Ft({api:t,paramName:s,desc:Yt()}),!0)}},createFaceMessage:{to:as,conversationType:as,payload:{...ls,validator:(e,t,s)=>be(e)?Ge(e.index)?!!ke(e.data)||(Ft({api:t,paramName:\"payload.data\",desc:$t()}),!1):(Ft({api:t,paramName:\"payload.index\",desc:xt()}),!1):(Ft({api:t,paramName:s,desc:Qt()}),!1)}},createFileMessage:{to:as,conversationType:as,payload:{...ls,validator:(e,t,s)=>{if(!be(e))return Ft({api:t,paramName:s,desc:Qt()}),!1;if($e(e.file))return Ft({api:t,paramName:\"payload.file\",desc:Vt()}),!1;if(F){if(!(e.file instanceof HTMLInputElement||Ue(e.file)))return be(e.file)&&\"undefined\"!=typeof uni?0!==e.file.tempFilePaths.length&&0!==e.file.tempFiles.length||(Ft({api:t,paramName:\"payload.file\",desc:ts()}),!1):(Ft({api:t,paramName:\"payload.file\",desc:Bt()}),!1);if(e.file instanceof HTMLInputElement&&0===e.file.files.length)return Ft({api:t,paramName:\"payload.file\",desc:ts()}),!1}return!0}},onProgress:{type:\"Function\",required:!1,validator:(e,t,s)=>($e(e)&&Ft({api:t,paramName:s,desc:Yt()}),!0)}},createLocationMessage:{to:as,conversationType:as,payload:{...ls,validator:(e,t,s)=>be(e)?ke(e.description)?Ge(e.longitude)?!!Ge(e.latitude)||(Ft({api:t,paramName:\"payload.latitude\",desc:xt()}),!1):(Ft({api:t,paramName:\"payload.longitude\",desc:xt()}),!1):(Ft({api:t,paramName:\"payload.description\",desc:$t()}),!1):(Ft({api:t,paramName:s,desc:Qt()}),!1)}},createMergerMessage:{to:as,conversationType:as,payload:{...ls,validator:(e,t,s)=>{if(Oe(e.messageList))return Ft({api:t,paramName:\"payload.messageList\",desc:Wt()}),!1;if(Oe(e.compatibleText))return Ft({api:t,paramName:\"payload.compatibleText\",desc:qt(\"compatibleText\")}),!1;let i=!1;return e.messageList.forEach(e=>{e.status===Pt&&(i=!0)}),!i||(Ft({api:t,paramName:\"payload.messageList\",desc:gs(\"MergeFailedMessageLog\")}),!1)}}},revokeMessage:[{name:\"message\",...ls,validator:(e,s,i)=>Oe(e)?(Ft({api:s,paramName:i,desc:ss()}),!1):e.conversationType===t.CONV_SYSTEM?(Ft({api:s,paramName:i,desc:gs(\"MessageCanBeRevokedDesc\")}),!1):!0!==e.isRevoked||(Ft({api:s,paramName:i,desc:gs(\"MessageRevokedLog\")}),!1)}],deleteMessage:[{name:\"messageList\",...cs,validator:(e,t,s)=>!Oe(e)||(Ft({api:t,paramName:s,desc:Wt()}),!1)}],translateText:{sourceTextList:cs,sourceLanguage:as,targetLanguage:as},convertVoiceToText:{message:{...ls,validator:(e,s,i)=>Oe(e)?(Ft({api:s,paramName:i,desc:ss()}),!1):e.type===t.MSG_AUDIO&&e.status===Nt||(Ft({api:s,paramName:i,desc:gs(\"AudioMessageRequiredLog\")}),!1)}},modifyMessage:[{name:\"message\",...ls,validator:(e,s,i)=>Oe(e)?(Ft({api:s,paramName:i,desc:ss()}),!1):e.conversationType===t.CONV_SYSTEM?(Ft({api:s,paramName:i,desc:gs(\"MessageCanBeModifiedLog\")}),!1):!0!==e._onlineOnlyFlag||(Ft({api:s,paramName:i,desc:gs(\"OnlineMessageNotSupportLog\")}),!1)}],searchCloudMessages:{keywordList:ps.keywordListForMsg,keywordListMatchType:ps.keywordListMatchType,cursor:ps.cursor,senderUserIDList:{type:\"Array\",required:!1,validator:(e,t,s)=>_s(e,t,s,{allowUndefined:!0,allowEmpty:!0,maxLength:5})},messageTypeList:{type:\"Array\",required:!1,validator:(e,s,i)=>{if(!e)return!0;if(!_s(e,s,i,{allowUndefined:!0,allowEmpty:!0}))return!1;const n=[t.MSG_TEXT,t.MSG_IMAGE,t.MSG_AUDIO,t.MSG_FILE,t.MSG_VIDEO,t.MSG_LOCATION,t.MSG_CUSTOM,t.MSG_MERGER];return!(0-1===n.indexOf(e)).length&&(Ft({api:s,paramName:i,desc:rs(i,\"message\")}),1))}},conversationID:{type:\"String\",required:!1,validator:e=>!e||bt(e)},timePosition:{type:\"number\",required:!1,validator:(e,t,s)=>hs(e,t,s,{allowUndefined:!0,min:0})},timePeriod:{type:\"number\",required:!1,validator:(e,t,s)=>hs(e,t,s,{allowUndefined:!0,min:0})}},searchCloudUsers:{keywordList:ps.keywordListExceptMsg,keywordListMatchType:ps.keywordListMatchType,cursor:ps.cursor,count:ps.count,miniBirthday:{type:\"Number\",required:!1,validator:(e,t,s)=>hs(e,t,s,{allowUndefined:!0,min:0})},maxBirthday:{type:\"Number\",required:!1,validator:(e,t,s)=>hs(e,t,s,{allowUndefined:!0,min:0})},gender:{type:\"String\",required:!1,validator:(e,s,i)=>!e||e===t.GENDER_FEMALE||e===t.GENDER_MALE||Ft({api:s,paramName:i,desc:e+\" is invalid match type\"})}},searchCloudGroups:{keywordList:ps.keywordListExceptMsg,keywordListMatchType:ps.keywordListMatchType,cursor:ps.cursor,count:ps.count,groupTypeList:ps.groupTypeList},searchCloudGroupMembers:{keywordList:ps.keywordListExceptMsg,keywordListMatchType:ps.keywordListMatchType,cursor:ps.cursor,count:ps.count,groupTypeList:ps.groupTypeList,groupIDList:{type:\"Array\",required:!1,validator:(e,t,s)=>_s(e,t,s,{allowUndefined:!0,allowEmpty:!0})}},getUserProfile:{userIDList:{type:\"Array\",validator:(e,t,s)=>Fe(e)?(0===e.length&&Ft({api:t,paramName:s,desc:Wt()}),!0):(Ft({api:t,paramName:s,desc:Ht()}),!1)}},updateMyProfile:{profileCustomField:{type:\"Array\",validator:(e,t,s)=>!!$e(e)||!!Fe(e)||(Ft({api:t,paramName:s,desc:Ht()}),!1)}},setSelfStatus:{customStatus:{type:\"String\",validator:(e,t,s)=>!!ke(e)||(Ft({api:t,paramName:s,desc:$t()}),!1)}},getUserStatus:{userIDList:{type:\"Array\",validator:(e,t,s)=>Fe(e)?0!==e.length||(Ft({api:t,paramName:s,desc:Wt()}),!1):(Ft({api:t,paramName:s,desc:Ht()}),!1)}},subscribeUserStatus:{userIDList:{type:\"Array\",validator:(e,t,s)=>Fe(e)?0!==e.length||(Ft({api:t,paramName:s,desc:Wt()}),!1):(Ft({api:t,paramName:s,desc:Ht()}),!1)}},unsubscribeUserStatus:{userIDList:{type:\"Array\",validator:(e,t,s)=>!e||!!Fe(e)||(Ft({api:t,paramName:s,desc:Ht()}),!1)}},addFriend:{to:as,source:{type:\"String\",required:!0,validator:(e,t,s)=>!!e&&(e.startsWith(\"AddSource_Type_\")?!(8!(ke(e)&&96!(ke(e)&&96{if(e){if(!Fe(e))return Ft({api:s,paramName:i,desc:Ht()}),!1;let t=!0;return e.forEach(e=>ke(e.key)&&-1!==e.key.indexOf(\"Tag_SNS_Custom\")?ke(e.value)?8Fe(e)?0!==e.length||(Ft({api:t,paramName:s,desc:Wt()}),!1):(Ft({api:t,paramName:s,desc:Ht()}),!1)}],getMessageReadReceiptList:[{name:\"messageList\",type:\"Array\",validator:(e,t,s)=>Fe(e)?0!==e.length||(Ft({api:t,paramName:s,desc:Wt()}),!1):(Ft({api:t,paramName:s,desc:Ht()}),!1)}],createTopicInCommunity:{groupID:as,topicName:as},deleteTopicFromCommunity:{groupID:as,topicIDList:{type:\"Array\",validator:(e,t,s)=>!e||!!Fe(e)||(Ft({api:t,paramName:s,desc:Ht()}),!1)}},updateTopicProfile:{groupID:as,topicID:as},getTopicList:{groupID:as,topicIDList:{type:\"Array\",validator:(e,t,s)=>!e||!!Fe(e)||(Ft({api:t,paramName:s,desc:Ht()}),!1)}},followUser:[{name:\"userIDList\",...cs}],unfollowUser:[{name:\"userIDList\",...cs}],getMyFollowingList:[{name:\"startIndex\",...as,required:!1}],getMyFollowersList:[{name:\"startIndex\",...as,required:!1}],getMutualFollowersList:[{name:\"startIndex\",...as,required:!1}],getUserFollowInfo:[{name:\"userIDList\",...cs,required:!1}],checkFollowType:[{name:\"userIDList\",...cs}],addSignalingListener:[{name:\"eventName\",type:\"String\",validator:(e,t,s)=>\"string\"==typeof e&&0!==e.length||(Ft({api:t,paramName:s,desc:qt(s)}),!1)},{name:\"handler\",type:\"Function\",validator:(e,t,s)=>\"function\"!=typeof e?(Ft({api:t,paramName:s,desc:Kt()}),!1):(\"\"===e.name&&Ft({api:t,paramName:s,desc:is()}),!0)}],removeSignalingListener:[{name:\"eventName\",type:\"String\",validator:(e,t,s)=>\"string\"==typeof e&&0!==e.length||(Ft({api:t,paramName:s,desc:qt(s)}),!1)},{name:\"handler\",type:\"Function\",validator:(e,t,s)=>\"function\"!=typeof e?(Ft({api:t,paramName:s,desc:Kt()}),!1):(\"\"===e.name&&Ft({api:t,paramName:s,desc:is()}),!0)}],invite:{userID:as},inviteSync:[{...ls,validator:(e,t,s)=>be(e)?!!ke(e.userID)||(Ft({api:t,paramName:\"options.userID\",desc:$t()}),!1):(Ft({api:t,paramName:\"options\",desc:Qt()}),!1)},{name:\"successCb\",type:\"Function\",required:!1,validator:(e,t,s)=>($e(e)&&Ft({api:t,paramName:s,desc:Kt()}),!0)},{name:\"errorCb\",type:\"Function\",required:!1,validator:(e,t,s)=>($e(e)&&Ft({api:t,paramName:s,desc:Kt()}),!0)}],inviteInGroup:{groupID:as,inviteeList:cs},inviteInGroupSync:[{...ls,validator:(e,t,s)=>be(e)?ke(e.groupID)?!!Fe(e.inviteeList)||(Ft({api:t,paramName:\"options.inviteeList\",desc:Ht()}),!1):(Ft({api:t,paramName:\"options.groupID\",desc:$t()}),!1):(Ft({api:t,paramName:\"options\",desc:Qt()}),!1)},{name:\"successCb\",type:\"Function\",required:!1,validator:(e,t,s)=>($e(e)&&Ft({api:t,paramName:s,desc:Kt()}),!0)},{name:\"errorCb\",type:\"Function\",required:!1,validator:(e,t,s)=>($e(e)&&Ft({api:t,paramName:s,desc:Kt()}),!0)}],accept:{inviteID:as},reject:{inviteID:as},getSignalingInfo:[{name:\"message\",...ls,validator:(e,t,s)=>!Oe(e)||(Ft({api:t,paramName:s,desc:ss()}),!1)}],modifyInvitation:{inviteID:as,data:as}},fs={login:1,logout:1,getLoginUser:1,getServerTime:1,on:1,once:1,off:1,setLogLevel:1,registerPlugin:1,destroy:1,isReady:1,createTextMessage:1,createTextAtMessage:1,createImageMessage:1,createAudioMessage:1,createVideoMessage:1,createCustomMessage:1,createFaceMessage:1,createFileMessage:1,createLocationMessage:1,createMergerMessage:1,downloadMergerMessage:1,createForwardMessage:1,sendMessage:1,resendMessage:1,revokeMessage:1,deleteMessage:1,translateText:1,convertVoiceToText:1,modifyMessage:1,sendMessageReadReceipt:1,getGroupMessageReadMemberList:1,getMessageReadReceiptList:1,setMessageExtensions:1,getMessageExtensions:1,deleteMessageExtensions:1,addMessageReaction:1,removeMessageReaction:1,getMessageReactions:1,getAllUserListOfMessageReaction:1,getMessageList:1,findMessage:1,getMessageListHopping:1,setMessageRead:1,setAllMessageRead:1,getConversationList:1,getConversationProfile:1,deleteConversation:1,setConversationDraft:1,pinConversation:1,getTotalUnreadMessageCount:1,setConversationCustomData:1,markConversation:1,createConversationGroup:1,getConversationGroupList:1,deleteConversationGroup:1,renameConversationGroup:1,addConversationsToGroup:1,deleteConversationsFromGroup:1,clearHistoryMessage:1,setMessageRemindType:1,setAllReceiveMessageOpt:1,getAllReceiveMessageOpt:1,getGroupList:1,getGroupProfile:1,createGroup:1,joinGroup:1,updateGroupProfile:1,quitGroup:1,dismissGroup:1,changeGroupOwner:1,searchGroupByID:1,getGroupApplicationList:1,handleGroupApplication:1,initGroupAttributes:1,setGroupAttributes:1,deleteGroupAttributes:1,getGroupAttributes:1,setGroupCounters:1,increaseGroupCounter:1,decreaseGroupCounter:1,getGroupCounters:1,getJoinedCommunityList:1,createTopicInCommunity:1,deleteTopicFromCommunity:1,updateTopicProfile:1,getTopicList:1,getGroupMemberProfile:1,getGroupMemberList:1,addGroupMember:1,deleteGroupMember:1,setGroupMemberNameCard:1,setGroupMemberMuteTime:1,setGroupMemberRole:1,setGroupMemberCustomField:1,getGroupOnlineMemberCount:1,markGroupMemberList:1,getMyProfile:1,getUserProfile:1,updateMyProfile:1,setSelfStatus:1,getUserStatus:1,subscribeUserStatus:1,unsubscribeUserStatus:1,getBlacklist:1,addToBlacklist:1,removeFromBlacklist:1,searchCloudMessages:1,searchCloudUsers:1,searchCloudGroups:1,searchCloudGroupMembers:1,getFriendList:1,addFriend:1,deleteFriend:1,checkFriend:1,updateFriend:1,getFriendProfile:1,getFriendApplicationList:1,refuseFriendApplication:1,deleteFriendApplication:1,acceptFriendApplication:1,setFriendApplicationRead:1,getFriendGroupList:1,createFriendGroup:1,renameFriendGroup:1,deleteFriendGroup:1,addToFriendGroup:1,removeFromFriendGroup:1,followUser:1,unfollowUser:1,getMyFollowingList:1,getMyFollowersList:1,getMutualFollowersList:1,getUserFollowInfo:1,checkFollowType:1,callExperimentalAPI:1,addSignalingListener:1,removeSignalingListener:1,invite:1,inviteSync:1,inviteInGroup:1,inviteInGroupSync:1,cancel:1,accept:1,reject:1,getSignalingInfo:1,modifyInvitation:1},Ms=1,Is=2,Cs=3,Ts=4,ys=6,vs=7,Es=8,Ss=10,Ds=11,Rs=12,Ls=13,As=14,Os=15,Ns=17,Ps=18,Us=19,Gs=20,ks=21,ws=23,bs=24,Fs=25,$s=26,qs=27,xs=28,Vs=29,Bs=30,Ks=31,Hs=32,Ws=33,Ys=34,zs=35,js=36,Js=37,Xs=38,Zs=function(e){return{code:0,data:e||{}}};class Qs extends Error{constructor(e){super();var{code:e,message:t,data:s}=e;this.code=e,t?this.message=t:this._getErrMsg&&(this.message=this._getErrMsg(this.code)),this.data=s||{}}}const ei={NO_SDKAPPID:2e3,NO_ACCOUNT_TYPE:2001,NO_IDENTIFIER:2002,NO_USERSIG:2003,NO_TINYID:2022,NO_A2KEY:2023,USER_NOT_LOGGED_IN:2024,REPEAT_LOGIN:2025,COS_UNDETECTED:2040,COS_GET_SIG_FAIL:2041,MSG_SEND_FAIL:2100,MSG_SEND_FAIL_NOT_IN_AV:2101,MSG_INSTANCE_REQUIRED:2105,MSG_INVALID_CONV_TYPE:2106,MSG_F_IS_EMPTY:2108,MSG_ONPROGRESS_ERR:2109,MSG_REVOKE_FAIL:2110,MSG_DELETE_FAIL:2111,MSG_UNREAD_ALL_FAIL:2112,READ_RECEIPT_MSG_LIST_EMPTY:2114,MSG_SEND_GRP_WITH_TOPIC_FAIL:2115,CANNOT_DELETE_GRP_SYSTEM_NOTICE:2116,TRANSLATE_TEXT_FAIL:2117,VOICE_TO_TEXT_FAIL:2118,UNSUPPORTED_VOICE_FORMAT:2119,MSG_I_SELECT_F_FIRST:2251,MSG_I_TYPES_LIMIT:2252,MSG_I_SIZE_LIMIT:2253,MSG_A_UPLOAD_FAIL:2300,MSG_A_SIZE_LIMIT:2301,MSG_V_UPLOAD_FAIL:2350,MSG_V_SIZE_LIMIT:2351,MSG_V_TYPES_LIMIT:2352,MSG_F_UPLOAD_FAIL:2400,MSG_F_SELECT_F_FIRST:2401,MSG_F_SIZE_LIMIT:2402,MSG_F_URL_IS_EMPTY:2403,MSG_MERGER_TYPE_INVALID:2450,MSG_MERGER_KEY_INVALID:2451,MSG_MERGER_DOWNLOAD_FAIL:2452,MSG_FORWARD_TYPE_INVALID:2453,MSG_FORWARD_INVALID_ELEMENTS:2454,MSG_MODIFY_CONFLICT:2480,MSG_MODIFY_DISABLED_IN_AV:2481,CONV_NOT_FOUND:2500,USER_OR_GRP_NOT_FOUND:2501,CONV_UN_RECORDED_TYPE:2502,INVALID_CONV_ID:2503,ILLEGAL_GRP_TYPE:2600,ILLEGAL_GRP_ID:2602,CANNOT_FIND_GRP:2603,CANNOT_CHANGE_OWNER_IN_AV:2620,CANNOT_CHANGE_OWNER_TO_SELF:2621,MEMBER_NOT_IN_GRP:2623,JOIN_GRP_FAIL:2660,CANNOT_ADD_MEMBER_IN_AV:2661,CANNOT_JOIN_NON_AV_WITHOUT_LOGIN:2662,NOT_OWNER:2681,INVALID_MEMBER_ROLE:2683,CANNOT_SET_SELF_MEMBER_ROLE:2684,CANNOT_MUTE_SELF:2685,BAN_DURATION_INVALID:2686,OPERATION_NOT_SUPPORTED_IN_AV:2687,NOT_MY_FRIEND:2700,ALREADY_MY_FRIEND:2701,FRIEND_GRP_EXISTED:2710,FRIEND_GRP_NOT_EXIST:2711,FRIEND_APPLICATION_NOT_EXIST:2716,UPDATE_PROFILE_INVALID_PARAM:2721,UPDATE_PROFILE_NO_KEY:2722,CANNOT_ADD_SELF_TO_BLACKLIST:2742,NETWORK_ERROR:2800,NETWORK_TIMEOUT:2801,NO_NETWORK:2805,UNCAUGHT_ERROR:2903,INVALID_OPERATION:2905,INVALID_TRTC_CMD:2995,OVER_FREQUENCY_LIMIT:2996,NO_PROTOCOL:2997,NO_MODULE:2998,SDK_IS_NOT_READY:2999,LOGGING_IN:3e3,LOGIN_FAILED:3001,KICKED_OUT_MULT_DEVICE:3002,KICKED_OUT_MULT_ACCOUNT:3003,KICKED_OUT_USERSIG_EXPIRED:3004,LOGGED_OUT:3005,KICKED_OUT_REST_API:3006,ILLEGAL_TOPIC_ID:3021,NO_USE:3122,PROFANITY_FOUND:3123,OPTIONS_IS_EMPTY:3153,MSG_A2KEY_EXPIRED:20002,ACCOUNT_A2KEY_EXPIRED:70001,HELLO_ANSWER_KICKED_OUT:1002,OPEN_SERVICE_OVERLOAD_ERROR:60022,SIGNALING_INVALID_INVITE_ID:8010,SIGNALING_NO_PERMISSION:8011,SIGNALING_ALREADY_EXISTS:8012,INVALID_CANCEL_MESSAGE:8020};let ti=null;const si=function(e){ti=e},ii=function(e){return Promise.resolve(Zs(e))},ni=function(t,s=!1){if(t instanceof Qs)return s&&null!==ti&&ti.emit(e.ERROR,t),Promise.reject(t);if(t instanceof Error){const t=new Qs({code:ei.UNCAUGHT_ERROR});return s&&null!==ti&&ti.emit(e.ERROR,t),Promise.reject(t)}if($e(t)||$e(t.code))return Promise.reject(new Qs({code:ei.UNCAUGHT_ERROR}));t=new Qs(t);return s&&null!==ti&&ti.emit(e.ERROR,t),Promise.reject(t)};class oi{constructor(e){this._m=e,this._n=\"\"}isLoggedIn(){return this._m.get(Rs).isLoggedIn()}isOversea(){return this._m.get(Rs).isOversea()}isPrivateNetWork(){const e=this._m.get(Rs);return e.isPrivateNetWork()&&!e.getFileDownloadProxy()}getFileDownloadProxy(){return this._m.get(Rs).getFileDownloadProxy()}getDowloadFileAuthKey(){return this._m.get(Rs).getDowloadFileAuthKey()}getMyUserID(){return this._m.get(Rs).getUserID()}getMyTinyID(){return this._m.get(Rs).getTinyID()}getSDKAppID(){return this._m.get(Rs).getSDKAppID()}isIntl(){return this._m.get(Rs).isIntl()}isUsingChatCore(){return this._m.get(Rs).isUsingChatCore()}isDevMode(){return this._m.get(Rs).isDevMode()}get(e){return this._m.get(e)}getPlatform(){return V}getCloudConfig(e){return this._m.get(ws).getCloudConfig(e)}emitOEvt(e,t){this._m.getOEmitInst().emit(e,t)}emitIEvt(e,t){this._m.getIEmitInst().emit(e,t)}getIEmitInst(){return this._m.getIEmitInst()}req(e){return this._m.get(Gs).req(e)}canIUse(e){return this._m.get(qs).canIUse(e)}getErrMsg(e,t,s){return this._m.getErrMsg(e,t,s)}warn(e,t,s){e=this.getErrMsg(e,t,s);e&&Ce.w(e)}noUse(e){var t=ei.NO_USE;return ni({code:t,message:this.getErrMsg(t,e)})}}const ri={LOGIN:\"wslogin\",LOGOUT:\"wslogout\",HELLO:\"wshello\",KICK_OTHER:\"KickOther\",SYNC_UNREAD_MSG:\"getmsg\",SEND_C2C_MSG:\"sendmsg\",SEND_GRP_MSG:\"send_group_msg\",GET_USER_PROFILE:\"portrait_get_all\",UPDATE_MY_PROFILE:\"portrait_set\",GET_BL:\"black_list_get\",ADD_TO_BL:\"black_list_add\",RM_FROM_BL:\"black_list_delete\",GET_FD_LIST:\"friend_get\",GET_FD_PROFILE:\"friend_get_specified\",CHECK_FD:\"friend_check\",DEL_FD:\"friend_delete\",ADD_FD:\"friend_add\",UPDATE_FD:\"friend_update\",RESPOND_FD_APPLICATION:\"friend_response\",GET_FD_APPLICATION_LIST:\"pendency_get\",DEL_FD_APPLICATION:\"pendency_delete\",REFUSE_FD_APPLICATION:\"pendency_refuse\",REPORT_FD_APPLICATION:\"pendency_report\",GET_FD_GRP_LIST:\"group_get\",CREATE_FD_GRP:\"group_add\",DEL_FD_GRP:\"group_delete\",UPDATE_FD_GRP:\"group_update\",REVOKE_C2C_MSG:\"msgwithdraw\",SET_C2C_MSG_READ:\"msgreaded\",SET_C2C_PEER_MUTE_NOTIFICATIONS:\"set_c2c_peer_mute_notifications\",GET_C2C_PEER_MUTE_NOTIFICATIONS:\"get_c2c_peer_mute_notifications\",GET_C2C_ROAMING_MSG:\"getroammsg\",GET_C2C_PEER_READ_TIME:\"get_peer_read_time\",DEL_C2C_MSG:\"delete_c2c_msg_ramble\",MODIFY_C2C_MSG:\"modify_c2c_msg\",MODIFY_C2C_MSG_EXT:\"set_key_values\",GET_C2C_MSG_EXT:\"get_key_values\",ADD_C2C_MSG_REACTION:\"reaction_add\",RM_C2C_MSG_REACTION:\"reaction_del\",GET_C2C_MSG_REACTIONS:\"reaction_multi_stat\",GET_C2C_MSG_REACTION_USER_LIST:\"reaction_iterate\",PAGING_GET_CONV_LIST:\"page_get\",DEL_CONV:\"batch_delete\",CLEAR_HISTORY_MSG:\"clear_msg\",PIN_CONV:\"top\",DEL_GROUP_AT_TIPS:\"deletemsg\",SET_CONV_CUSTOM_DATA:\"set_conv_custom_data\",MARK_CONV:\"mark_contact\",CREATE_CONV_GRP:\"create_contact_group\",DEL_CONV_GRP:\"del_contact_group\",RENAME_CONV_GRP:\"update_contact_group\",ADD_CONV_TO_GRP:\"add_conv_to_group\",DEL_CONV_FROM_GRP:\"del_conv_from_group\",GET_CONV_GRP_LIST:\"get_contact_group\",SEARCH_CONV_GRP_MARK:\"search_contact_group\",GET_GRP_LIST:\"get_joined_group_list\",GET_GRP_PROFILE:\"get_group_self_member_info\",CREATE_GRP:\"create_group\",DISMISS_GRP:\"destroy_group\",UPDATE_GRP_PROFILE:\"modify_group_base_info\",APPLY_JOIN_GRP:\"apply_join_group\",APPLY_JOIN_GRP_NOAUTH:\"apply_join_group_noauth\",QUIT_GRP:\"quit_group\",SEARCH_GRP:\"get_group_public_info\",CHANGE_GRP_OWNER:\"change_group_owner\",HANDLE_GRP_APPLICATION:\"handle_apply_join_group\",HANDLE_INVITE_JOIN_GRP:\"handle_invite_join_permission_group\",HANDLE_GRP_INVITATION:\"handle_invite_join_group\",REVOKE_GRP_MSG:\"group_msg_recall\",SET_GRP_MSG_READ:\"msg_read_report\",SET_ALL_MSG_READ:\"read_all_unread_msg\",GET_GRP_ROAMING_MSG:\"group_msg_get\",GET_READ_RECEIPT:\"get_group_msg_receipt\",SEND_READ_RECEIPT:\"group_msg_receipt\",SEND_C2C_READ_RECEIPT:\"c2c_msg_read_receipt\",GET_READ_RECEIPT_DETAIL:\"get_group_msg_receipt_detail\",GET_GRP_PENDENCY:\"get_pendency\",DEL_GRP_SYSTEM_NOTICE:\"deletemsg\",AV_POLLING:\"get_msg\",AV_NOAUTH_POLLING:\"get_msg_noauth\",GET_ONLINE_MBR_NUM:\"get_online_member_num\",DEL_GRP_MSG:\"delete_group_ramble_msg_by_seq\",MODIFY_GRP_MSG:\"modify_group_msg\",SET_GRP_ATTR:\"set_group_attr\",MODIFY_GRP_ATTR:\"modify_group_attr\",DEL_GRP_ATTR:\"delete_group_attr\",CLEAR_GRP_ATTR:\"clear_group_attr\",GET_GRP_ATTR:\"get_group_attr\",MODIFY_GRP_MSG_EXT:\"group_set_key_values\",GET_GRP_MSG_EXT:\"group_get_key_values\",GET_GRP_NOTIFY:\"batch_get_group_notify\",UPDATE_GRP_COUNTER:\"update_group_counter\",GET_GRP_COUNTER:\"get_group_counter\",ADD_GRP_MSG_REACTION:\"group_reaction_add\",RM_GRP_MSG_REACTION:\"group_reaction_del\",GET_GRP_MSG_REACTIONS:\"group_reaction_multi_stat\",GET_GRP_MSG_REACTION_USER_LIST:\"group_reaction_iterate\",GET_GRP_MBR_LIST:\"get_group_member_info\",GET_AV_MBR_LIST:\"get_members\",GET_GRP_MBR_PROFILE:\"get_specified_group_member_info\",ADD_GRP_MBR:\"add_group_member\",DEL_GRP_MBR:\"delete_group_member\",BAN_AV_MBR:\"ban_group_member\",MODIFY_GRP_MBR_INFO:\"modify_group_member_info\",MARK_AV_MBR_INFO:\"modify_user_info\",COS_SIGN:\"cos\",COS_PRE_SIG:\"pre_sig\",SIMPLE_COS_PRE_SIG:\"simple_sig\",GET_IMAGE_INFO:\"get_imageinfo\",GET_IP:\"get_final_ip\",VIDEO_COVER:\"video_cover\",SSO_STAT:\"tim_web_report_v2\",PING:\"alive\",MSG_PUSH:\"msg_push\",CS:\"query\",GRP_CS:\"query_grp\",MBR_CS:\"query_grp_member\",USER_CS:\"query_user\",MULTI_MSG_PUSH:\"multi_msg_push_ws\",MSG_PUSH_ACK:\"ws_msg_push_ack\",STATUS_FORCE_OFFLINE:\"stat_forceoffline\",UPLOAD_MERGER_MSG:\"save_relay_json_msg\",DOWNLOAD_MERGER_MSG:\"get_relay_json_msg\",FETCH_CLOUD_CTRL_CONFIG:\"fetch_config\",PUSHED_CLOUD_CTRL_CONFIG:\"push_configv2\",FETCH_COMMERCIAL_CONFIG:\"fetch_imsdk_purchase_bitsv2\",PUSHED_COMMERCIAL_CONFIG:\"push_imsdk_purchase_bitsv2\",OVERLOAD_NOTIFY:\"notify2\",CREATE_TOPIC:\"create_topic\",DEL_TOPIC:\"destroy_topic\",UPDATE_TOPIC_PROFILE:\"modify_topic\",GET_TOPIC_LIST:\"get_topic\",SET_SELF_STATUS:\"ws_set_custom_status\",GET_USER_STATUS:\"ws_get_user_status\",SUB_USER_STATUS:\"ws_status_subscribe\",UNSUB_USER_STATUS:\"ws_status_unsubscribe\",STAT_BACKGROUND:\"ws_stat_background\",STAT_FOREGROUND:\"ws_stat_foreground\",SET_TOKEN:\"ws_stat_settoken\",PUSH_REPORT:\"uniapp_sdk_report\",GET_PROFANITY_LIST:\"get_local_words\",TRANSLATE_TEXT:\"ws_batch_trans_text\",VOICE_TO_TEXT:\"ws_sentence_recognition\",FOLLOW:\"follow_add\",UNFOLLOW:\"follow_delete\",GET_FOLLOW:\"follow_get\",GET_FOLLOW_INFO:\"follow_get_info\",CHECK_FOLLOW_TYPE:\"follow_check\",SET_ALL_RECEIVE_MSG_OPT:\"ws_set_do_not_disturb\",GET_ALL_RECEIVE_MSG_OPT:\"ws_get_do_not_disturb\"},ai=\"networkRTT\",ci=\"messageE2EDelay\",li=\"sendMessageC2C\",ui=\"sendMessageGroup\",di=\"sendMessageGroupAV\",_i=\"sendMessageRichMedia\",hi=\"cosUpload\",pi=\"messageReceivedGroup\",gi=\"messageReceivedGroupAVPush\",mi=\"messageReceivedGroupAVPull\",fi={[ai]:2,[ci]:3,[li]:4,[ui]:5,[di]:6,[_i]:7,[pi]:8,[gi]:9,[mi]:10,[hi]:11},Mi={info:4,warning:5,error:6},Ii={wifi:1,\"2g\":2,\"3g\":3,\"4g\":4,\"5g\":5,unknown:6,none:7,online:8},Ci={login:4,plugin_search:16,plugin_translate:16,plugin_voice_to_text:16,plugin_cs:16,plugin_push:16,plugin_bot:16,plugin_emoji_reaction:16,tui_key_features:16};class Ti{constructor(e){this._n=\"SSOLogData\",this.eventType=Ci[e]||0,this.timestamp=0,this.networkType=8,this.code=0,this.message=\"\",this.moreMessage=\"\",this.extension=e,this.costTime=0,this.duplicate=!1,this.level=4,this.uiPlatform=void 0,this._sentFlag=!1,this._startts=pe()}static bindEventStatModule(e){Ti.prototype._eventStatModule=e}static bindNetMonitorModule(e){Ti.prototype._netMonitorModule=e}updateTimeStamp(){this.timestamp=pe()}start(e){return this._startts=e,this}end(e=!1){if(!this._sentFlag){if(this._netMonitorModule){const e=this._netMonitorModule.getNetworkType();this.setNetworkType(e)}var t=pe();0===this.costTime&&(this.costTime=t-this._startts),this.setMoreMessage(`startts:${this._startts} endts:`+t),e?(this._sentFlag=!0,this._eventStatModule&&this._eventStatModule.pushIn(this)):setTimeout(()=>{this._sentFlag=!0,this._eventStatModule&&this._eventStatModule.pushIn(this)},0)}}setError(e){if(!(e instanceof Error))return Ce.w(this._n+\".setError value not instanceof Error, please check!\"),this;if(this._sentFlag)return this;let t=!0;if(t=this._netMonitorModule?this._netMonitorModule.isOnline():t)e.code&&this.setCode(e.code),e.message&&this.setMoreMessage(e.message);else{const e=ei.NO_NETWORK;this.setCode(e)}return this.setLevel(\"error\"),this}setCode(e){return $e(e)||this._sentFlag||(\"ECONNABORTED\"===e&&(this.code=103),Ge(e)?this.code=e:Ce.w(this._n+\".setCode value not a number, please check!\",e,typeof e)),this}setMessage(e){return $e(e)||this._sentFlag||(Ge(e)&&(this.message=e.toString()),ke(e)&&(this.message=e)),this}setCostTime(e){return this.costTime=e,this}setLevel(e){return $e(e)||this._sentFlag||(this.level=Mi[e]),this}setMoreMessage(e){return Oe(this.moreMessage)?this.moreMessage=\"\"+e:this.moreMessage+=\" \"+e,this}setNetworkType(e){return $e(e)?Ce.w(this._n+\".setNetworkType value is undefined, please check!\"):(e=Ii[e.toLowerCase()],$e(e)||(this.networkType=e)),this}getStartTs(){return this._startts}setUIPlatform(e){return this.uiPlatform=e,this}setExtension(e){return this.extension=e,this}setEventType(e){return this.eventType=e,this}}class yi{constructor(e){this.type=t.MSG_TEXT,this.content={text:e.text||\"\"}}setText(e){this.content.text=e}sendable(){return 0!==this.content.text.length}}function vi(t,s,i,n=[]){if(t){let e=t;return s&&(t.startsWith(\"http://\")?e=t.replace(/^http:\\/\\/[^/]+/,s):t.startsWith(\"https://\")&&(e=t.replace(/^https:\\/\\/[^/]+/,s))),e=i&&-1===e.indexOf(\"authKey=\")&&Di(e,n)?-1{Ei(e.messageBody[0].type,e.messageBody)})}return s}function Si(e){if(!e)return e;if(-1===e.indexOf(\"authKey=\"))return e;const t=e.split(\"?\"),s=t[1].split(\"&\");let i=0;for(let e=0;e{switch(e){case\"remarkInfo\":break;case\"groupProfile\":this.content.groupProfile={},this._initGroupProfile(t[e]);break;case\"operatorInfo\":this.content.operatorInfo={},this._initOperatorInfo(t[e]);break;case\"memberInfoList\":case\"msgMemberInfo\":this._updateMemberList(t[e]);break;case\"memberExtraInfo\":case\"onlineMemberInfo\":break;case\"memberNum\":this.content[e]=t[e],this.content.memberCount=t[e];break;case\"newGroupProfile\":this.content.newGroupProfile={},this._initNewGroupProfile(t[e]);break;default:this.content[e]=t[e]}}),this.content.userIDList||(this.content.userIDList=[this.content.operatorID])}_initGroupProfile(t){var s=Object.keys(t);for(let e=0;e{e.forEach(e=>{t.userID===e.userID&&Object.assign(t,e)})})}_initNewGroupProfile(t){var s=Object.keys(t);for(let e=0;e{switch(e){case\"memberInfoList\":break;case\"remarkInfo\":this.content.handleMessage=t[e];break;case\"groupProfile\":this.content.groupProfile={},this._initGroupProfile(t[e]);break;default:this.content[e]=t[e]}})}_initGroupProfile(t){var s=Object.keys(t);for(let e=0;e{!e.imageUrl&&e.url&&(e.imageUrl=e.url,e.sizeType=e.type,1===e.type?e.type=0:3===e.type&&(e.type=1))}):e===t.MSG_VIDEO?!s.remoteVideoUrl&&s.videoUrl&&(s.remoteVideoUrl=s.videoUrl):e===t.MSG_AUDIO?!s.remoteAudioUrl&&s.url&&(s.remoteAudioUrl=s.url):e===t.MSG_FILE&&!s.fileUrl&&s.url&&(s.fileUrl=s.url,s.url=void 0)}_updateRichMediaDownloadUrl(e,s,i,n,o){(i||n)&&(e===t.MSG_IMAGE?s.imageInfoArray.forEach(e=>{e.url=vi(e.url,i,n,o)}):e===t.MSG_VIDEO?(s.videoUrl=vi(s.videoUrl,i,n,o),s.snapshotUrl=vi(s.thumbUrl,i,n,o),s.snapshotHeight=s.thumbHeight,s.snapshotWidth=s.thumbWidth):e===t.MSG_AUDIO?s.url=vi(s.url,i,n,o):e===t.MSG_FILE&&(s.fileUrl=vi(s.fileUrl,i,n,o)))}}var $i=class{constructor(e,s,i,n){if(this.type=t.MSG_MERGER,this.content={downloadKey:\"\",pbDownloadKey:\"\",messageList:[],title:\"\",abstractList:[],compatibleText:\"\",version:0,layersOverLimit:!1},e.downloadKey){const{downloadKey:t,pbDownloadKey:s,title:i,abstractList:n,compatibleText:o,version:r}=e;this.content.downloadKey=t,this.content.pbDownloadKey=s,this.content.title=i,this.content.abstractList=n,this.content.compatibleText=o,this.content.version=r||0}else if(Oe(e.messageList))1===e.layersOverLimit&&(this.content.layersOverLimit=!0);else{const{messageList:t,title:a,abstractList:c,compatibleText:l,version:_}=e,d=[];t.forEach(e=>{Oe(e)||(e=new Fi(e,s,i,n),d.push(e))}),this.content.messageList=d,this.content.title=a,this.content.abstractList=c,this.content.compatibleText=l,this.content.version=_||0}}sendable(){return!Oe(this.content.messageList)||!Oe(this.content.downloadKey)}};const qi={1:t.MSG_PRIORITY_HIGH,2:t.MSG_PRIORITY_NORMAL,3:t.MSG_PRIORITY_LOW,4:t.MSG_PRIORITY_LOWEST};class xi{constructor(e){this.ID=\"\",this.conversationID=e.conversationID||null,this.conversationType=e.conversationType||t.CONV_C2C,this.conversationSubType=e.conversationSubType,this.time=e.time||Math.ceil(Date.now()/1e3),this.sequence=e.sequence||0,this.clientSequence=e.clientSequence||e.sequence||0,this.random=e.random||0===e.random?e.random:je(),this.priority=this._computePriority(e.priority),this.nick=e.nick||\"\",this.avatar=e.avatar||\"\",this.isPeerRead=!1,this.nameCard=\"\",this.hasRiskContent=Rt(e.checkResult),this._elements=[],this.isPlaceMessage=e.isPlaceMessage||0,this.isRevoked=2===e.isPlaceMessage||8===e.msgFlagBits,this.from=e.from||null,this.to=e.to||null,this.flow=\"\",this.isSystemMessage=e.isSystemMessage||!1,this.protocol=e.protocol||\"JSON\",this.isResend=!1,this.isRead=!1,this.status=e.status||Nt,this._onlineOnlyFlag=!1,this._groupAtInfoList=[],this._relayFlag=!1,this.atUserList=[],this.cloudCustomData=e.cloudCustomData||\"\",this.isDeleted=!1,this.isModified=!!e.messageVersion,this._isExcludedFromUnreadCount=!(!e.messageControlInfo||1!==e.messageControlInfo.excludedFromUnreadCount),this._isExcludedFromLastMessage=!(!e.messageControlInfo||1!==e.messageControlInfo.excludedFromLastMessage),this.clientTime=e.clientTime||me()||0,this.senderTinyID=e.senderTinyID||e.tinyID||\"\",this.readReceiptInfo=e.readReceiptInfo||{readCount:void 0,unreadCount:void 0,isPeerRead:void 0,timestamp:0},this.needReadReceipt=!0===e.needReadReceipt||1===e.needReadReceipt,this.version=e.messageVersion||0,this.isBroadcastMessage=e.isBroadcastMessage||!1,this._receiverList=e.receiverList||void 0,this.isSupportExtension=!0===e.isSupportExtension||1===e.isSupportExtension,this._cmConfigID=e.customModerationConfigurationID,this.revoker=e.revokerInfo&&e.revokerInfo.revoker||\"\",this.revokerInfo=e.revokerInfo||{userID:\"\",nick:\"\",avatar:\"\"},this.revokeReason=e.revokeReason||\"\",this.reInitialize(e.currentUser),this.extractGroupInfo(e.groupProfile||null),this.handleGroupAtInfo(e),this.initC2CReadReceiptInfo(e)}get elements(){return this._elements}getElements(){return this._elements}extractGroupInfo(e){null!==e&&(ke(e.nick)&&(this.nick=e.nick),ke(e.avatar)&&(this.avatar=e.avatar),e=e[\"messageFromAccountExtraInformation\"],be(e)&&ke(e.nameCard)&&(this.nameCard=e.nameCard))}handleGroupAtInfo(e){e.payload&&e.payload.atUserList&&e.payload.atUserList.forEach(e=>{e!==t.MSG_AT_ALL?(this._groupAtInfoList.push({groupAtAllFlag:0,groupAtUserID:e}),this.atUserList.push(e)):(this._groupAtInfoList.push({groupAtAllFlag:1}),this.atUserList.push(t.MSG_AT_ALL))}),Fe(e.groupAtInfo)&&e.groupAtInfo.forEach(e=>{0===e.groupAtAllFlag?this.atUserList.push(e.groupAtUserID):1===e.groupAtAllFlag&&this.atUserList.push(t.MSG_AT_ALL)})}getGroupAtInfoList(){return this._groupAtInfoList}_initProxy(){this._elements[0]&&(this.payload=this._elements[0].content,this.type=this._elements[0].type)}reInitialize(e){e&&(this.status=this.from?Nt:Ot,this.from||(this.from=e)),this._initFlow(e),this._initSequence(e),this._concatConversationID(e),this.generateMessageID()}isSendable(){return 0!==this._elements.length&&(!0===this._relayFlag||\"function\"==typeof this._elements[0].sendable&&this._elements[0].sendable())}_initTo(e){this.conversationType===t.CONV_GROUP&&(this.to=e.groupID)}_initSequence(e){0===this.clientSequence&&e&&(this.clientSequence=function(i){if(!i)return!1;if(void 0===Qe[i]){const n=new Date;let e=(\"3\"+n.getHours()).slice(-2),t=(\"0\"+n.getMinutes()).slice(-2),s=(\"0\"+n.getSeconds()).slice(-2);Qe[i]=parseInt([e,t,s,\"0001\"].join(\"\")),e=null,t=null,s=null,Ce.l(\"autoIncrementIndex start index:\"+Qe[i])}return Qe[i]++}(e)),0===this.sequence&&this.conversationType===t.CONV_C2C&&(this.sequence=this.clientSequence)}generateMessageID(){this.from===t.CONV_SYSTEM&&(this.senderTinyID=\"144115198244471703\"),this.ID=`${this.senderTinyID}-${this.clientTime}-`+this.random}_initFlow(e){\"\"!==e&&(e===this.from?(this.flow=\"out\",this.isRead=!0):this.flow=\"in\")}_concatConversationID(e){var s=this[\"to\"],i=this.conversationType;i!==t.CONV_SYSTEM?(e=i===t.CONV_C2C?e===this.from?s:this.from:this.to,this.conversationID=e?\"\"+i+e:null):this.conversationID=t.CONV_SYSTEM}isElement(e){return e instanceof yi||e instanceof Ri||e instanceof Li||e instanceof Ai||e instanceof Gi||e instanceof wi||e instanceof Ni||e instanceof Ui||e instanceof ki||e instanceof bi||e instanceof $i}setElement(s,i,n,o){if(this.isElement(s))return this._elements=[s],void this._initProxy();var r=e=>{if(e.type&&e.content)switch(e.type){case t.MSG_TEXT:this.setTextElement(e.content);break;case t.MSG_IMAGE:this.setImageElement(e.content,i,n,o);break;case t.MSG_AUDIO:this.setAudioElement(e.content,i,n,o);break;case t.MSG_FILE:this.setFileElement(e.content,i,n,o);break;case t.MSG_VIDEO:this.setVideoElement(e.content,i,n,o);break;case t.MSG_CUSTOM:this.setCustomElement(e.content);break;case t.MSG_LOCATION:this.setLocationElement(e.content);break;case t.MSG_GRP_TIP:this.setGroupTipElement(e.content);break;case t.MSG_GRP_SYS_NOTICE:this.setGroupSystemNoticeElement(e.content);break;case t.MSG_FACE:this.setFaceElement(e.content);break;case t.MSG_MERGER:this.setMergerElement(e.content,i,n,o)}};if(Fe(s))for(let e=0;e{e.reason=t})}var{nick:i,avatar:n}=s,i=(ke(i)&&(this.nick=i),ke(n)&&(this.avatar=n),new Ni(e));this._elements.push(i)}setGroupSystemNoticeElement(e){e=new Ui(e);this._elements.push(e)}setFaceElement(e){e=new Li(e);this._elements.push(e)}setMergerElement(e,t,s,i){e=new $i(e,t,s,i);this._elements.push(e)}setIsRead(e){this.isRead=e}setRelayFlag(e){this._relayFlag=e}_computePriority(e){if($e(e))return t.MSG_PRIORITY_NORMAL;if(ke(e)&&-1!==Object.values(qi).indexOf(e))return e;if(Ge(e)){const t=\"\"+e;if(-1!==Object.keys(qi).indexOf(t))return qi[t]}return t.MSG_PRIORITY_NORMAL}setNickAndAvatar(e){var{nick:e,avatar:t}=e;ke(e)&&(this.nick=e),ke(t)&&(this.avatar=t)}setNameCard(e){ke(e)&&(this.nameCard=e)}initC2CReadReceiptInfo(e){var{readReceiptSentByPeer:e,timestamp:s=0}=e;this.conversationType===t.CONV_C2C&&!0===this.needReadReceipt&&(this.readReceiptInfo.isPeerRead=1===e,this.readReceiptInfo.timestamp=s)}}function Vi(e){var t=e.lastIndexOf(\".\");return-1===t?e:e.slice(0,t)}function Bi(e){const{androidInfo:t={},androidOPPOChannelID:s=\"\"}=e,i=t.OPPOChannelID||s,{sound:n=\"\",FCMChannelID:o=\"\",...r}=t;return{...r,Sound:Vi(n),OPPOChannelID:i,GoogleChannelID:o}}function Ki(e){var{apnsInfo:e={},ignoreIOSBadge:t=!1,disableVoipPush:s}=e,t=!0===e.ignoreIOSBadge||!0===t?1:0;let i=void 0;return $e(s)||(i=!1===s?1:0),$e(e.disableVoipPush)||(i=!1===e.disableVoipPush?1:0),{...e,badgeMode:t,isVoipPush:i}}function Hi(e){if(be(e))return{pushFlag:!0===e.disablePush?1:0,title:e.title||\"\",desc:e.description||\"\",ext:e.extension||\"\",apnsInfo:Ki(e),androidInfo:Bi(e)}}class Wi extends oi{constructor(e){super(e),this._n=\"C2CModule\",this._msgFromUnreadDBMap=new Map,this._noticeFromUnreadDBList=[]}onNewMessage(t){var{dataList:t,isInstantMessage:s,C2CRemainingUnreadList:i,C2CPairUnreadList:n,isSyncingEnded:o}=t;s||Ce.l(this._n+\".onNewMessage C2CPairUnreadList:\",n,\"C2CRemainingUnreadList:\",i);const{conversationOptionsList:r,messageList:a,isUnreadC2CMessage:c}=this._assembly({dataList:t,C2CRemainingUnreadList:i,C2CPairUnreadList:n,isInstantMessage:s}),l=Oe(t=a)?[]:t.filter(e=>!0===e.isModified);0!1===e.isModified);s&&0e===\"\"+t.CONV_C2C+r[s].from);n?n.unreadCount=r[s].unreadCount:l.push({conversationID:\"\"+t.CONV_C2C+r[s].from,unreadCount:r[s].unreadCount,type:t.CONV_C2C})}if(Fe(o))for(let s=0,e=o.length;se===\"\"+t.CONV_C2C+o[s].from)||l.push({conversationID:\"\"+t.CONV_C2C+o[s].from,type:t.CONV_C2C,lastMsgTime:o[s].lastMsgTime});return{conversationOptionsList:l,messageList:d,isUnreadC2CMessage:i}}getMessageListFromUnreadDB(){return[...this._msgFromUnreadDBMap.values()]}_isC2CNotice(e){e=e.eventArray;return!(!Fe(e)||10!==e[0].event)}_handleNoticeFromUnreadDB(){var e=this._noticeFromUnreadDBList.length;if(0!==e){Ce.l(this._n+\"._handleNoticeFromUnreadDB count:\"+e);const t=[];this._noticeFromUnreadDBList.forEach(e=>{e.hasOwnProperty(\"c2cMessageRevokedNotify\")&&t.push(e)}),this.onMsgRevoked({dataList:t}),this._noticeFromUnreadDBList.length=0,t.length=0}}onMsgRevoked(s,i){const r=this.get(Ds),a=[];let c;s.dataList.forEach(e=>{if(e.c2cMessageRevokedNotify){const s=e.c2cMessageRevokedNotify[\"revokedInfos\"];$e(s)||s.forEach(e=>{var s=this.getMyUserID()===e.from?\"\"+t.CONV_C2C+e.to:\"\"+t.CONV_C2C+e.from,i=(c=r.revoke(s,e.sequence,e.random),e.revokerInfo&&e.revokerInfo.revoker),n=e.revokerInfo&&e.revokerInfo.reason||\"\";let o;c?o=c:(o={conversationID:s,sequence:e.sequence},e.tinyID&&e.clientTime&&e.random&&(o.ID=`${e.tinyID}-${e.clientTime}-`+e.random),e.time&&(o.time=e.time)),o&&(o.revoker=i,o.revokeReason=n,o.revokerInfo={userID:i,nick:\"\",avatar:\"\"},a.push(o))})}}),0!==a.length&&(Ce.l(`${this._n}.onMsgRevoked count:${a.length} updateUnreadCount:`+i),r.onMessageRevoked(a,i),r.updateRevokerInfo(a).then(t=>{this.emitOEvt(e.MESSAGE_REVOKED,t)}))}onMsgReadReceipt(e){e.dataList.forEach(e=>{if(!Oe(e.c2cMessageReadReceipt)){const n=e.c2cMessageReadReceipt[\"to\"];e.c2cMessageReadReceipt.uinPairReadArray.forEach(e=>{e=e.peerReadTime;Ce.l(`${this._n}.onMsgReadReceipt to:${n} peerReadTime:`+e);const s=\"\"+t.CONV_C2C+n,i=this.get(Ds);i.recordPeerReadTime(s,e),i.updateMsgIsPeerReadProp(s,e)})}})}onMsgReadNotice(e){e.dataList.forEach(e=>{if(!Oe(e.c2cMessageReadNotice)){const i=this.get(Ds);e.c2cMessageReadNotice.uinPairReadArray.forEach(e=>{var{from:e,peerReadTime:s}=e,e=(Ce.l(this._n+`.onMsgReadNotice from:${e} lastReadTime:`+s),\"\"+t.CONV_C2C+e);i.updateIsReadAfterReadReport({conversationID:e,lastMessageTime:s}),i.updateUnreadCount(e)})}})}onMsgModified(e){Ce.l(this._n+\".onMsgModified options:\",e);const s=this.get(Ds);e.dataList.forEach(e=>{s.onMessageModified({...e,conversationType:t.CONV_C2C})})}onReadReceiptList(e){Ce.l(this._n+\".onReadReceiptList options:\",e),this.get(Ds).updateReadReceiptInfo(e.dataList)}sendMessage(e,t){e=this._createC2CMessagePack(e,t);return this.req(e)}_createC2CMessagePack(e,t){let s=null,i=(t&&(t.offlinePushInfo&&(s=t.offlinePushInfo),!0===t.onlineUserOnly&&(s?s.disablePush=!0:s={disablePush:!0})),\"\");ke(e.cloudCustomData)&&0{n.end(),Ce.l(i+\" ok\");const e=this.get(Ds);return e.updateIsReadAfterReadReport({conversationID:t,lastMessageTime:s}),e.updateUnreadCount(t),Zs()}).catch(e=>(n.setError(e).end(),Ce.l(i+\" failed. error:\",e),ni(e)))}getRoamingMessage(e){const c=this._n+\".getRoamingMessage\",{peerAccount:s,conversationID:l,count:i,lastMessageTime:n,messageKey:o}=e,d=`peerAccount:${s} count:${i||15} lastMessageTime:${n||0} messageKey:`+o,_=(Ce.l(c+\" \"+d),new Ti(\"getRoamingMessage\"));return this.req({P:ri.GET_C2C_ROAMING_MSG,data:{peerAccount:s,count:i||15,lastMessageTime:n||0,messageKey:o}}).then(e=>{var{complete:e,messageList:s,messageKey:i,lastMessageTime:n}=e.data;$e(s)?Ce.l(c+` ok. complete:${e} but messageList is undefined!`):Ce.l(c+` ok. complete:${e} count:`+s.length),_.setMessage(d+` complete:${e} length:`+s.length).end();const o=this.get(Ds),r=1===e;r&&o.setCompleted(l);e=[],s=o.onRoamingMessage(s,l,!0,e),o.modifyMessageList(l),o.updateIsRead(l),o.updateRoamingMsgKeyAndTime(l,i,n),i=o.getPeerReadTime(l);if(Ce.l(c+` update isPeerRead property. convID:${l} peerReadTime:`+i),i)o.updateMsgIsPeerReadProp(l,i);else{const e=l.replace(t.CONV_C2C,\"\");this.getRemotePeerReadTime([e]).then(()=>{o.updateMsgIsPeerReadProp(l,o.getPeerReadTime(l))})}let a=\"\";if(0(_.setMessage(d).setError(e).end(),Ce.w(c+\" failed. error:\",e),ni(e)))}getRoamingMessagesHopping(e){const l=this._n+\".getRoamingMessagesHopping\",{peerAccount:s,time:i=0,count:n,direction:d}=e,_=\"\"+t.CONV_C2C+s,u=`peerAccount:${s} count:${n} time:${i} direction:`+d,h=(Ce.l(l+\" \"+u),new Ti(\"getRoamingMessagesHopping\"));return this.req({P:ri.GET_C2C_ROAMING_MSG,data:{peerAccount:s,count:n+1,lastMessageTime:i,direction:d}}).then(e=>{const{complete:s,messageList:i=[],lastMessageTime:n}=e.data,o=`complete:${s} count:`+i.length,r=(Ce.l(l+\" ok. \"+o),h.setMessage(u+\" \"+o).end(),1!==s&&(1===d?i.pop():i.shift()),this.get(Ds)),a=r.onRoamingMessage(i,_,!1);this._modifyMessageList(_,a);var e=this._computeResult({complete:s,lastMessageTime:n,resultList:a}),c=(r.storeHoppingMessageList(e.messageList),r.getPeerReadTime(_));if(Ce.l(l+` update isPeerRead property. convID:${_} peerReadTime:`+c),c)r.updateMsgIsPeerReadProp(_,c);else{const e=_.replace(t.CONV_C2C,\"\");this.getRemotePeerReadTime([e]).then(()=>{r.updateMsgIsPeerReadProp(_,r.getPeerReadTime(_))})}return Zs(e)}).catch(e=>(h.setMessage(u).setError(e).end(),Ce.w(l+\" failed. error:\",e),ni(e)))}_computeResult(e){const{complete:t=0,lastMessageTime:s,resultList:i=[]}=e,n={messageList:[...i],isCompleted:!1,nextMessageTime:\"\"};return 1===t?n.isCompleted=!0:n.nextMessageTime=s,n}_modifyMessageList(t,s){t=this.get(Ds).getLocalConversation(t);if(t){var i=t.userProfile.nick,n=t.userProfile.avatar,t=this.get(Ts).getNickAndAvatarByUserID(this.getMyUserID()),o=t.nick,r=t.avatar;for(let e=s.length-1;0<=e;e--){const t=s[e];\"in\"===t.flow&&(t.nick!==i&&t.setNickAndAvatar({nick:i}),t.avatar!==n&&t.setNickAndAvatar({avatar:n})),\"out\"===t.flow&&(t.nick!==o&&t.setNickAndAvatar({nick:o}),t.avatar!==r&&t.setNickAndAvatar({avatar:r}))}}}getRemotePeerReadTime(o){const r=this._n+\".getRemotePeerReadTime\";if(Oe(o))return Promise.resolve();const a=new Ti(\"getRemotePeerReadTime\");return Ce.l(r+\" userIDList:\"+o),this.req({P:ri.GET_C2C_PEER_READ_TIME,data:{userIDList:o}}).then(e=>{var s=e.data[\"peerReadTimeList\"];Ce.l(r+\" ok. peerReadTimeList:\"+s);let i=\"\";const n=this.get(Ds);for(let e=0;e{a.setError(e).end(),Ce.w(r+\" failed. error:\",e)})}sendReadReceipt(e){const s=e[0].conversationID.replace(t.CONV_C2C,\"\"),i=new Ti(\"sendReadReceipt\"),n=(i.setMessage(\"peerAccount:\"+s),this.getMyUserID()),o=e.filter(e=>e.from!==n&&!0===e.needReadReceipt).map(e=>{var{from:e,to:t,sequence:s,random:i,time:n,clientTime:o}=e;return{fromAccount:e,toAccount:t,sequence:s,random:i,time:n,clientTime:o}});if(0===o.length)return ni({code:ei.READ_RECEIPT_MSG_LIST_EMPTY});const r=this._n+\".sendReadReceipt\";return Ce.l(r+`. peerAccount:${s} length:`+o.length),this.req({P:ri.SEND_C2C_READ_RECEIPT,data:{peerAccount:s,messageInfoList:o}}).then(e=>(i.end(),Ce.l(r+\" ok\"),Zs())).catch(e=>(i.setError(e).end(),Ce.w(r+\" failed. error:\",e),ni(e)))}getReadReceiptList(e){var s=e[0].conversationID.replace(t.CONV_C2C,\"\");return Ce.l(this._n+`.getReadReceiptList peerAccount:${s} msgCount:`+e.length),ii({messageList:e})}getMessageExtensions(e,t){return Ce.l(this._n+\".getMessageExtensions startSequence:\"+t),this.req({P:ri.GET_C2C_MSG_EXT,data:{from:e.from,to:e.to,messageKey:this.getMessageKey(e),startSequence:t}})}modifyMsgExts(e,t,s=1){return Ce.l(this._n+\".modifyMsgExts operateType:\"+s),this.req({P:ri.MODIFY_C2C_MSG_EXT,data:{from:e.from,to:e.to,messageKey:this.getMessageKey(e),extensionList:t,operateType:s}})}getMessageKey(e){var{clientSequence:e,random:t,time:s}=e;return e+`_${t}_`+s}reset(){Ce.l(this._n+\".reset\"),this._msgFromUnreadDBMap.clear(),this._noticeFromUnreadDBList.length=0}}const Yi={A2KEY_AND_TINYID_UPDATED:\"_inner1\",CLOUD_CONFIG:\"_inner2\",PROFILE_UPDATED:\"_inner3\",CONV_SYNC_COMPLETED:\"_inner4\",C2C_UNREAD_HANDLE_COMPLETED:\"_inner5\"};class zi{constructor(e){this._convM=e,this._map=new Map,this._n=\"MsgListHandler\",this._latestMsgSentByPeerMap=new Map,this._latestMsgSentByMeMap=new Map,this._hoppingMsgMap=new Map,this.TOPIC_MSG_LIMIT=1e3,this._convM.getIEmitInst().on(Yi.CLOUD_CONFIG,this._onCloudConfig,this)}_onCloudConfig(){var e=this._convM.getCloudConfig(\"topic_msg_limit\");$e(e)||(this.TOPIC_MSG_LIMIT=Number(e)),Ce.l(this._n+\"._onCloudConfig topicMsgLimit:\"+this.TOPIC_MSG_LIMIT)}onCheckTimer(e){if(e%20==0&&0=this.TOPIC_MSG_LIMIT&&this._convM.clearMemMsg(t,!0)}pushIn(e,t=!1){var s=e[\"conversationID\"];let i=!0;this._map.has(s)||this._map.set(s,new Map);var n=this._getUniqueIDOfMsg(e);if(this._map.get(s).has(n)){const e=this._map.get(s).get(n);if(!t||!0===e.isModified)return i=!1}return this._map.get(s).set(n,e),this._setLatestMsgSentByPeer(s,e),this._setLatestMsgSentByMe(s,e),i}unshift(s,i){let n;if(Fe(s)?0e.sequence);return Math.max(...e)}getLocalMaxTime(e){if(!this.hasLocalMsgList(e))return 0;e=[...this._map.get(e).values()].map(e=>e.time);return Math.max(...e)}hasLocalMsg(e,t){let s=!1;var i=this.getLocalMsgList(e),n=i.length;for(let e=0;ee.startsWith(\"\"+t.CONV_GROUP+s))}onMsgModified(e,t){if(!this._map.has(e)&&!this._hoppingMsgMap.has(e))return{isUpdated:!1,message:null};const s=this._n+\".onMsgModified\",i=this._getUniqueIDOfMsg(t),n=this._getTargetMsg(e,i),o=!!n;if(Ce.l(s+` convID:${e} uniqueID:${i} has:`+o),o){const{messageVersion:e,elements:i,cloudCustomData:o,checkResult:r}=t;return Ce.l(s+` localVersion:${n.version} remoteVersion:`+e),n.version{const e=this._readyQueue;this._readyQueue=[],e&&0{this.profileCustomField.push({key:e.key,value:e.value})}))}validate(s){let i=!0,e=\"\";if(Oe(s))return{valid:!1,tips:\"empty options\"};if(s.profileCustomField){const i=s.profileCustomField.length;let t=null;for(let e=0;e=this.MAX_LENGTH){const e=this.map.entries().next().value[0];this.map.delete(e)}this.map.set(e,1)}has(e){return this.map.has(e)}delete(e){this.has(e)&&this.map.delete(e)}reset(){this.map.clear()}}const on=[\"groupID\",\"name\",\"avatar\",\"type\",\"introduction\",\"notification\",\"ownerID\",\"selfInfo\",\"createTime\",\"infoSequence\",\"lastInfoTime\",\"lastMessage\",\"nextMessageSeq\",\"memberNum\",\"maxMemberNum\",\"memberList\",\"joinOption\",\"groupCustomField\",\"muteAllMembers\",\"isSupportTopic\",\"inviteOption\",\"_lastRevokedTime\"];class rn{constructor(e){this.groupID=\"\",this.name=\"\",this.avatar=\"\",this.type=\"\",this.introduction=\"\",this.notification=\"\",this.ownerID=\"\",this.createTime=\"\",this.infoSequence=\"\",this.lastInfoTime=\"\",this.selfInfo={messageRemindType:\"\",joinTime:\"\",nameCard:\"\",role:\"\",userID:\"\",memberCustomField:void 0,readedSequence:0,excludedUnreadSequenceList:void 0},this.lastMessage={lastTime:\"\",lastSequence:\"\",fromAccount:\"\",messageForShow:\"\"},this.nextMessageSeq=\"\",this.memberNum=\"\",this.memberCount=\"\",this.maxMemberNum=\"\",this.maxMemberCount=\"\",this.joinOption=\"\",this.inviteOption=\"\",this.groupCustomField=[],this.muteAllMembers=!1,this.isSupportTopic=!1,this._lastRevokedTime=0,this._initGroup(e)}set memberNum(e){}set maxMemberNum(e){}get memberNum(){return this.memberCount}get maxMemberNum(){return this.maxMemberCount}_initGroup(e){for(const t in e)on.indexOf(t)<0||(\"selfInfo\"!==t?(\"memberNum\"===t&&(this.memberCount=e[t]),\"maxMemberNum\"===t&&(this.maxMemberCount=e[t]),\"isSupportTopic\"!==t?this[t]=e[t]:this.isSupportTopic=1===e[t]):this.updateSelfInfo(e[t]))}updateGroup(e){e.appid=void 0,e.grossTopicNextMsgSeq=void 0,e.selfInfo&&(e.selfInfo.grossTopicReadSeq=void 0);const t=JSON.parse(JSON.stringify(e));t.lastMsgTime&&(this.lastMessage.lastTime=t.lastMsgTime),$e(t.muteAllMembers)||(\"On\"===t.muteAllMembers?t.muteAllMembers=!0:t.muteAllMembers=!1),t.groupCustomField&&st(this.groupCustomField,t.groupCustomField),$e(t.memberNum)||(this.memberCount=t.memberNum),$e(t.maxMemberNum)||(this.maxMemberCount=t.maxMemberNum),$e(t.isSupportTopic)||(this.isSupportTopic=Ge(t.isSupportTopic)?1===t.isSupportTopic:t.isSupportTopic),We(this,t,[\"members\",\"errorCode\",\"lastMsgTime\",\"groupCustomField\",\"memberNum\",\"maxMemberNum\",\"isSupportTopic\"]),Fe(t.members)&&0{e.userID===this.selfInfo.userID&&We(this.selfInfo,e,[\"sequence\"])})}updateSelfInfo({nameCard:e,joinTime:t,role:s,messageRemindType:i,readedSequence:n,excludedUnreadSequenceList:o}){e={nameCard:e,joinTime:t,role:s,messageRemindType:i,readedSequence:n,excludedUnreadSequenceList:o};We(this.selfInfo,{...e},[],[\"\",null,void 0,0,NaN])}setSelfNameCard(e){this.selfInfo.nameCard=e}}const an=function(e,t,s){return $e(e)?{lastTime:0,lastSequence:0,fromAccount:\"\",messageForShow:\"\",payload:null,type:\"\",isRevoked:!1,cloudCustomData:\"\",onlineOnlyFlag:!1,nick:\"\",nameCard:\"\",version:0,isPeerRead:!1,revoker:null}:s&&e.ID||e instanceof xi?{lastTime:e.time||0,lastSequence:e.sequence||0,fromAccount:e.from||\"\",messageForShow:yt(e.type,e.payload,t),payload:e.payload||null,type:e.type||null,isRevoked:e.isRevoked||!1,cloudCustomData:e.cloudCustomData||\"\",onlineOnlyFlag:e._onlineOnlyFlag||!1,nick:e.nick||\"\",nameCard:e.nameCard||\"\",version:e.version||0,isPeerRead:e.isPeerRead||!1,revoker:e.revoker||null}:{...e,messageForShow:yt(e.type,e.payload,t)}};class cn{constructor(e,t,s=!1){this.conversationID=e.conversationID||\"\",this.unreadCount=e.unreadCount||0,this.type=e.type||\"\",this.lastMessage=an(e.lastMessage,t,s),e.lastMsgTime&&(this.lastMessage.lastTime=e.lastMsgTime),this._isInfoCompleted=!1,this.peerReadTime=e.peerReadTime||0,this.groupAtInfoList=[],this.remark=\"\",this.isPinned=e.isPinned||!1,this.messageRemindType=e.messageRemindType,this.markList=e.markList||[],this.customData=e.customData||\"\",this.conversationGroupList=e.conversationGroupList||[],this.draftText=e.draftText||\"\",this._initProfile(e),this.subType=this.groupProfile?this.groupProfile.type:\"\"}get toAccount(){return this.conversationID.startsWith(t.CONV_C2C)?this.conversationID.replace(t.CONV_C2C,\"\"):this.conversationID.startsWith(t.CONV_GROUP)?this.conversationID.replace(t.CONV_GROUP,\"\"):\"\"}_initProfile(s){Object.keys(s).forEach(e=>{switch(e){case\"userProfile\":this.userProfile=s.userProfile;break;case\"groupProfile\":this.groupProfile=s.groupProfile}}),$e(this.userProfile)&&this.type===t.CONV_C2C?this.userProfile=new sn({userID:s.conversationID.replace(\"C2C\",\"\")}):$e(this.groupProfile)&&this.type===t.CONV_GROUP&&(this.groupProfile=new rn({groupID:s.conversationID.replace(\"GROUP\",\"\")}))}updateUnreadCount(e){var{nextUnreadCount:e,isFromGetConversations:s,isUnreadC2CMessage:i}=e;$e(e)||(nt(this.subType)?this.unreadCount=0:s&&this.type===t.CONV_GROUP||s&&this.type===t.CONV_TOPIC||i&&this.type===t.CONV_C2C?this.unreadCount=e:this.unreadCount=this.unreadCount+e)}updateLastMessage(e){this.lastMessage=an(e)}updateGroupAtInfoList(s){if(!this._isNeedMergeGroupAtInfo(s)){let[...e]=s.groupAtType;-1!==e.indexOf(t.CONV_AT_ME)&&-1!==e.indexOf(t.CONV_AT_ALL)&&(e=[t.CONV_AT_ALL_AT_ME]);s={from:s.from,groupID:s.groupID,topicID:s.topicID,messageSequence:s.sequence,atTypeArray:e,__random:s.__random,__sequence:s.__sequence};this.groupAtInfoList.push(s)}}_isNeedMergeGroupAtInfo(s){const{groupID:e,sequence:i}=s;if(!ot({groupID:e}))return!1;let n=!1;return this.groupAtInfoList.forEach(e=>{e.messageSequence===i&&(-1{Ce.l(s+\" ok. userIDList:\"+t);e=e.data.muteFlagList;this._convM.onC2CMsgRemindTypeFetched(e)}).catch(e=>{Ce.e(s+\" failed. error:\",e)})}set(e){return e.groupID?this._setGroupMsgRemindType(e):Fe(e.userIDList)?this._setC2CMsgRemindType(e):void 0}_setGroupMsgRemindType(t){const s=this._n+\"._setGroupMsgRemindType\",{groupID:e,messageRemindType:i}=t,n=`groupID:${e} messageRemindType:`+i,o=new Ti(\"_setGroupMsgRemindType\"),r=(o.setMessage(n),this._get(vs));return r?r.modifyGroupMemberInfo({groupID:e,messageRemindType:i,userID:this._convM.getMyUserID()}).then(()=>{o.end(),Ce.l(s+\" ok. \"+n);var e=this.onGroupMsgRemindTypeUpdated(t);return this._convM.onTotalUnreadCountUpdate(),Zs(e)}).catch(e=>(o.setError(e).end(),Ce.e(s+\" failed. error:\",e),ni(e))):ni({code:ei.NO_MODULE})}onGroupMsgRemindTypeUpdated(t){var{groupID:s,messageRemindType:i}=t;Ce.l(this._n+`.onGroupMsgRemindTypeUpdated groupID:${s} messageRemindType:`+i);const n=this._get(vs).getLocalGroupProfile(s);if(n&&(n.selfInfo.messageRemindType=i),rt(s)){const t=s,n=Tt(t),o=this._get(Ss).getLocalTopic(n,t);return o&&o.updateSelfInfo({messageRemindType:i})&&this._convM.emitOEvt(e.TOPIC_UPDATED,{groupID:n,topic:o}),{topic:o}}return this._convM.patchMsgRemindType({ID:s,isC2CConversation:!1,messageRemindType:i})&&this._emitConvUpdate(),{group:n}}_setC2CMsgRemindType(e){const r=this._n+\"._setC2CMsgRemindType\",{userIDList:t,messageRemindType:a}=e,c=t.slice(0,30),s=ln[a]||0,l=`userIDList:${c} messageRemindType:`+a,d=new Ti(\"_setC2CMsgRemindType\");return d.setMessage(l),this._convM.req({P:ri.SET_C2C_PEER_MUTE_NOTIFICATIONS,data:{userIDList:c,muteFlag:s}}).then(e=>{d.end();const t=e.data[\"errorList\"],s=[],i=[],n=(Fe(t)&&t.forEach(e=>{s.push(e.userID),i.push({userID:e.userID,code:e.errorCode})}),c.filter(e=>-1===s.indexOf(e)));Ce.l(r+` ok. ${l} successUserIDList:${n} failureUserIDList:`+JSON.stringify(i));let o=0;return n.forEach(e=>{this._convM.patchMsgRemindType({ID:e,isC2CConversation:!0,messageRemindType:a})&&(o+=1)}),1<=o&&this._emitConvUpdate(),c.length=s.length=0,this._convM.onTotalUnreadCountUpdate(),ii({successUserIDList:n.map(e=>({userID:e})),failureUserIDList:i})}).catch(e=>(d.setError(e).end(),Ce.e(r+\" failed. error:\",e),ni(e)))}_get(e){return this._convM.get(e)}_emitConvUpdate(){this._convM.emitConvUpdate(!0,!1)}setAllRcvMsgOpt(e){const s=this._n+\".setAllRcvMsgOpt\",{messageRemindType:i=t.MSG_REMIND_ACPT_NOT_NOTE,isRepeated:n=!0}=e,{startTime:o=0,endTime:r=0}=this._calcStartAndEndTime(e),a=JSON.stringify(e),c=new Ti(\"setAllRcvMsgOpt\");return c.setMessage(a),Ce.l(s+\" options:\"+a),this._convM.req({P:ri.SET_ALL_RECEIVE_MSG_OPT,data:{messageRemindType:ln[i],startTime:o,endTime:r,isRepeated:n?1:0}}).then(e=>(c.end(),Ce.l(s+\" ok.\"),Zs(e))).catch(e=>(c.setError(e).end(),Ce.e(s+\" failed. error:\",e),ni(e)))}_calcStartAndEndTime(e){const{startHour:t=0,startMinute:s=0,startSecond:i=0,duration:n=0,isRepeated:o=!0}=e,r=new Date,a=r.getFullYear(),c=r.getMonth(),d=r.getDate(),l=Math.round(new Date(a,c,d,t,s,i).getTime()/1e3);let _=o&&86400<=n?l+86400:l+n;return{startTime:l,endTime:_}}getAllRcvMsgOpt(){const t=this._n+\".getAllRcvMsgOpt\",s=new Ti(\"getAllRcvMsgOpt\");return this._convM.req({P:ri.GET_ALL_RECEIVE_MSG_OPT,data:{toAccount:this._convM.getMyUserID()}}).then(e=>{e=e.data,s.setMessage(JSON.stringify(e)).end(),Ce.l(t+\" ok. data:\"+JSON.stringify(e)),e=this._handleResult(e);return Zs(e)}).catch(e=>(s.setError(e).end(),Ce.e(t+\" failed. error:\",e),ni(e)))}_handleResult(e){var{messageRemindType:e,startTime:s,endTime:i,isRepeated:n}=e;let o=t.MSG_REMIND_ACPT_AND_NOTE;return 1===e&&(o=t.MSG_REMIND_DISCARD),{messageRemindType:o=2===e?t.MSG_REMIND_ACPT_NOT_NOTE:o,startTime:s,endTime:i,isRepeated:1===n}}reset(){Ce.l(this._n+\".reset\")}}class dn{constructor(e){this._convM=e,this._n=\"ConvGroupHandler\",this._convGroupMap=new Map,this._startIndex=0,this._pagingStatus=Ut}setConvCustomData(e){const s=this._n+\".setConvCustomData\",{conversationIDList:i,customData:o}=e,r=(Ce.l(s+\" options:\",e),new Ti(\"setConvCustomData\")),n=(r.setMessage(JSON.stringify(e)),{fromAccount:this._getMyUserID(),itemList:[]}),a=[],c=[];return i.forEach(e=>{if(!this._hasLocalConv(e))return this._onConvNotFound(c,e),!0;if(!at(e)&&!ct(e))return this._onConvIDInvalid(c,e),!0;const s={operationType:2,contactItem:void 0,customMark:o};at(e)?s.contactItem={type:1,toAccount:e.replace(t.CONV_C2C,\"\")}:ct(e)&&(s.contactItem={type:2,groupID:e.replace(t.CONV_GROUP,\"\")}),n.itemList.push(s)}),c.length===i.length?ii({successConversationIDList:a,failureConversationIDList:c}):this._convM.req({P:ri.SET_CONV_CUSTOM_DATA,data:n}).then(e=>{r.end(),Ce.l(s+\" ok\");const n=e.data[\"resultItem\"];if(Fe(n)){let t,s,i=!1;n.forEach(e=>{t=this._concatConvID(e.contactItem),0===e.resultCode?(a.push(t),(s=this._getLocalConv(t))&&s.customData!==o&&(s.customData=o,i=!0)):c.push({conversationID:t,code:e.resultCode,message:e.resultInfo})}),!0===i&&this._emitConvUpdate()}return Zs({successConversationIDList:a,failureConversationIDList:c})}).catch(e=>(r.setError(e).end(),Ce.e(s+\" failed. error:\",e),ni(e)))}markConv(e){if(!this._convM.canIUse(M.CONV_MARK))return this._convM.noUse(\"markConv\");const s=this._n+\".markConv\",{conversationIDList:i,markType:o,enableMark:r}=e,a=(Ce.l(s+\" options:\",e),new Ti(\"markConv\"));a.setMessage(JSON.stringify(e));let n=void 0,c=void 0;e=this._getFlagBit(o);!0===r?c=[e]:n=[e];const _={fromAccount:this._getMyUserID(),itemList:[]},l=[],d=[];return i.forEach(e=>{if(!this._hasLocalConv(e))return this._onConvNotFound(d,e),!0;if(!at(e)&&!ct(e))return this._onConvIDInvalid(d,e),!0;const s={operationType:1,contactItem:void 0,clearMark:n,setMark:c};at(e)?s.contactItem={type:1,toAccount:e.replace(t.CONV_C2C,\"\")}:ct(e)&&(s.contactItem={type:2,groupID:e.replace(t.CONV_GROUP,\"\")}),_.itemList.push(s)}),d.length===i.length?ii({successConversationIDList:l,failureConversationIDList:d}):this._convM.req({P:ri.MARK_CONV,data:_}).then(e=>{a.end(),Ce.l(s+\" ok\");const n=e.data[\"resultItem\"];if(Fe(n)){let t,s,i=!1;n.forEach(e=>{if(t=this._concatConvID(e.contactItem),0===e.resultCode){if(l.push(t),s=this._getLocalConv(t)){const t=s.markList.indexOf(o);!0===r?-1===t&&(s.markList.push(o),i=!0):-1!==t&&(s.markList.splice(t,1),i=!0)}}else d.push({conversationID:t,code:e.resultCode,message:e.resultInfo})}),!0===i&&this._emitConvUpdate()}return Zs({successConversationIDList:l,failureConversationIDList:d})}).catch(e=>(a.setError(e).end(),Ce.e(s+\" failed. error:\",e),ni(e)))}getLocalConvGroupList(){return Ce.l(this._n+\".getLocalConvGroupList pagingStatus:\"+this._pagingStatus),this._pagingStatus===wt?this.getRemoteConvGroupList().then(()=>Zs([...this._convGroupMap.values()])):ii([...this._convGroupMap.values()])}searchConvGroupAndMark(e,t){const s=this._n+\".searchConvGroupAndMark\",i=[];return e.forEach(e=>{1===t?i.push({type:1,toAccount:e}):2===t&&i.push({type:2,groupID:e})}),Ce.l(s+` type:${t} list:`,e),this._convM.req({P:ri.SEARCH_CONV_GRP_MARK,data:{fromAccount:this._getMyUserID(),contactItem:i}}).then(e=>{var{contactItem:e,groupItem:t}=e.data;Ce.l(s+\" ok. contactItem:\",e,\"groupItem:\",t),this._fillConvGroupMap(t),this._handleContactItem(e),this._emitConvUpdate()}).catch(e=>{Ce.w(s+\" failed. error:\",e)})}_fillConvGroupMap(e){Fe(e)&&e.forEach(e=>{var{convGroupID:e,groupName:t}=e;this._convGroupMap.set(e,t)})}_handleContactItem(e){if(Fe(e)){let o,r;e.forEach(e=>{const t=[],{standardMark:s,customData:i,convGroupIDList:n}=e;Fe(n)&&n.forEach(e=>{this._convGroupMap.has(e)&&t.push(this._convGroupMap.get(e))}),r=this._concatConvID(e),(o=this._getLocalConv(r))&&(o.markList=vt(s),o.customData=i||\"\",o.conversationGroupList=[...t])})}}getRemoteConvGroupList(){const n=this._n+\".getRemoteConvGroupList\";return this._pagingStatus=Gt,this._convM.req({P:ri.GET_CONV_GRP_LIST,data:{fromAccount:this._getMyUserID(),startIndex:this._startIndex}}).then(e=>{var{completeFlag:e,contactItem:t,nextStartIndex:s=0,groupItem:i}=e.data;if(this._startIndex=s,Ce.l(n+` completeFlag:${e} nextStartIndex:${s}, groupItem:`,i,\"contactItem:\",t),this._fillConvGroupMap(i),this._handleContactItem(t),0===e)return this.getRemoteConvGroupList();1===e&&(this._pagingStatus=kt,this._emitConvUpdate(),this._emitConvGroupListUpdate())}).catch(e=>{this._pagingStatus=wt,Ce.w(n+\" failed. error:\",e)})}createConvGroup(e){if(!this._convM.canIUse(M.CONV_GROUP))return this._convM.noUse(\"createConvGroup\");const i=this._n+\".createConvGroup\",o=(Ce.l(i+\" options:\",e),new Ti(\"createConvGroup\")),{groupName:r,conversationIDList:s}=(o.setMessage(JSON.stringify(e)),e),n={fromAccount:this._getMyUserID(),itemList:[{groupName:r,contactItem:[]}]},a=[],c=[];return s.forEach(e=>this._hasLocalConv(e)?at(e)||ct(e)?void(at(e)?n.itemList[0].contactItem.push({type:1,toAccount:e.replace(t.CONV_C2C,\"\")}):ct(e)&&n.itemList[0].contactItem.push({type:2,groupID:e.replace(t.CONV_GROUP,\"\")})):(this._onConvIDInvalid(c,e),!0):(this._onConvNotFound(c,e),!0)),c.length===s.length?ii({successConversationIDList:a,failureConversationIDList:c}):this._convM.req({P:ri.CREATE_CONV_GRP,data:n}).then(e=>{o.end(),Ce.l(i+\" ok\");const t=e.data[\"groupResultItem\"],{groupItem:s,resultItem:n}=t[0];if(be(s)&&(this._convGroupMap.set(s.convGroupID,s.groupName),this._emitConvGroupListUpdate()),Fe(n)){let t,s,i=!1;n.forEach(e=>{t=this._concatConvID(e.contactItem),0===e.resultCode?(a.push(t),(s=this._getLocalConv(t))&&-1===s.conversationGroupList.indexOf(r)&&(s.conversationGroupList.push(r),i=!0)):c.push({conversationID:t,code:e.resultCode,message:e.resultInfo})}),!0===i&&(this._emitConvUpdate(),this._emitConvGroupListUpdate())}return Zs({successConversationIDList:a,failureConversationIDList:c})}).catch(e=>(o.setError(e).end(),Ce.e(i+\" failed. error:\",e),ni(e)))}deleteConvGroup(t){if(!this._convM.canIUse(M.CONV_GROUP))return this._convM.noUse(\"deleteConvGroup\");const i=this._n+\".deleteConvGroup\",n=(Ce.l(i+\" groupName:\"+t),new Ti(\"deleteConvGroup\"));return n.setMessage(t),this._convM.req({P:ri.DEL_CONV_GRP,data:{fromAccount:this._getMyUserID(),groupName:[t]}}).then(e=>{n.end(),Ce.l(i+\" ok\");const s=e.data[\"groupItem\"];if(Fe(s)){let t=!1;s.forEach(e=>{this._convGroupMap.has(e.convGroupID)&&(this._convGroupMap.delete(e.convGroupID),t=!0)}),!0===t&&this._emitConvGroupListUpdate()}this._eraseFromConversationGroupList([t])}).catch(e=>(n.setError(e).end(),Ce.e(i+\" failed. error:\",e),ni(e)))}renameConvGroup(e){if(!this._convM.canIUse(M.CONV_GROUP))return this._convM.noUse(\"renameConvGroup\");const o=this._n+\".renameConvGroup\",r=(Ce.l(o+\" options:\",e),new Ti(\"renameConvGroup\")),{oldName:a,newName:c}=(r.setMessage(JSON.stringify(e)),e);return this._convM.req({P:ri.RENAME_CONV_GRP,data:{fromAccount:this._getMyUserID(),updateType:1,updateGroup:{updateGroupType:1,oldName:a,newName:c}}}).then(e=>{r.end(),Ce.l(o+\" ok\");e=e.data.updateGroupResult,e=e.convGroupID;this._convGroupMap.set(e,c),this._emitConvGroupListUpdate();const t=this._convM.getLocalConvList();let s,i,n=!1;t.forEach(e=>{s=e.conversationGroupList,-1!==(i=s.indexOf(a))&&(s.splice(i,1,c),n=!0)}),!0===n&&this._emitConvUpdate()}).catch(e=>(r.setError(e).end(),Ce.e(o+\" failed. error:\",e),ni(e)))}addConvsToGroup(e){if(!this._convM.canIUse(M.CONV_GROUP))return this._convM.noUse(\"addConvsToGroup\");const s=this._n+\".addConvsToGroup\",i=(Ce.l(s+\" options:\",e),new Ti(\"addConvsToGroup\")),{conversationIDList:n,groupName:o}=(i.setMessage(JSON.stringify(e)),e),r={fromAccount:this._getMyUserID(),updateType:1,updateGroup:{updateGroupType:2,groupName:o,updateItem:[]}},a=[],c=[];return n.forEach(e=>this._hasLocalConv(e)?at(e)||ct(e)?void(at(e)?r.updateGroup.updateItem.push({operationType:1,contactItem:{type:1,toAccount:e.replace(t.CONV_C2C,\"\")}}):ct(e)&&r.updateGroup.updateItem.push({operationType:1,contactItem:{type:2,groupID:e.replace(t.CONV_GROUP,\"\")}})):(this._onConvIDInvalid(c,e),!0):(this._onConvNotFound(c,e),!0)),c.length===n.length?ii({successConversationIDList:a,failureConversationIDList:c}):this._convM.req({P:ri.ADD_CONV_TO_GRP,data:r}).then(e=>{i.end(),Ce.l(s+\" ok\");const n=e.data.updateGroupResult[\"contactResultItem\"];if(Fe(n)){let t,s,i=!1;n.forEach(e=>{t=this._concatConvID(e.contactItem),0===e.resultCode?(s=this._getLocalConv(t))&&-1===s.conversationGroupList.indexOf(o)&&(s.conversationGroupList.push(o),a.push(t),i=!0):c.push({conversationID:t,code:e.resultCode,message:e.resultInfo})}),!0===i&&(this._emitConvUpdate(),this._emitConvInGroupUpdate(o))}return Zs({successConversationIDList:a,failureConversationIDList:c})}).catch(e=>(i.setError(e).end(),Ce.e(s+\" failed. error:\",e),ni(e)))}deleteConvsFromGroup(e){var s=\"deleteConvsFromGroup\";if(!this._convM.canIUse(M.CONV_GROUP))return this._convM.noUse(s);const i=this._n+\".\"+s,o=(Ce.l(i+\" options:\",e),new Ti(s)),{conversationIDList:n,groupName:r}=(o.setMessage(JSON.stringify(e)),e),a={fromAccount:this._getMyUserID(),updateType:1,updateGroup:{updateGroupType:2,groupName:r,updateItem:[]}},c=[],l=[];return n.forEach(e=>this._hasLocalConv(e)?at(e)||ct(e)?void(at(e)?a.updateGroup.updateItem.push({operationType:2,contactItem:{type:1,toAccount:e.replace(t.CONV_C2C,\"\")}}):ct(e)&&a.updateGroup.updateItem.push({operationType:2,contactItem:{type:2,groupID:e.replace(t.CONV_GROUP,\"\")}})):(this._onConvIDInvalid(l,e),!0):(this._onConvNotFound(l,e),!0)),l.length===n.length?ii({successConversationIDList:c,failureConversationIDList:l}):this._convM.req({P:ri.DEL_CONV_FROM_GRP,data:a}).then(e=>{o.end(),Ce.l(i+\" ok\");const n=e.data.updateGroupResult[\"contactResultItem\"];if(Fe(n)){let t,s,i=!1;n.forEach(e=>{if(t=this._concatConvID(e.contactItem),0===e.resultCode){if(s=this._getLocalConv(t)){const e=s.conversationGroupList.indexOf(r);-1!==e&&(s.conversationGroupList.splice(e,1),c.push(t),i=!0)}}else l.push({conversationID:t,code:e.resultCode,message:e.resultInfo})}),!0===i&&(this._emitConvUpdate(),this._emitConvInGroupUpdate(r))}return Zs({successConversationIDList:c,failureConversationIDList:l})}).catch(e=>(o.setError(e).end(),Ce.e(i+\" failed. error:\",e),ni(e)))}onConvMarkUpdated(e){if(!Oe(e)){let n,o,r=(Ce.l(this._n+\".onConvMarkUpdated markItemList:\",e),!1);e.forEach(e=>{var{recentContactItem:e,optType:t,standardMark:s,customMark:i}=e;if(n=this._concatConvID(e),o=this._getLocalConv(n))if(1===t)r=this._diffStandardMark(o,s);else if(2===t)r=this._diffCustomMark(o,i);else if(3===t){const e=this._diffStandardMark(o,s),n=this._diffCustomMark(o,i);r=e||n}}),!0===r&&this._emitConvUpdate()}}_diffStandardMark(e,t){t=vt(t);let s=!1;return!0!==function(s,i){if(s===i)return!0;if(!s||!i)return!1;if(s.length!==i.length)return!1;for(let e=0,t=s.length;e{const{groupID:t,groupName:i}=e.msgGroupItem,n=(this._convGroupMap.get(t)!==i&&(this._convGroupMap.set(t,i),s=!0),e.msgRecentContactItem);if(Fe(n)){let t,s;n.forEach(e=>{t=this._concatConvID(e),(s=this._getLocalConv(t))&&-1===s.conversationGroupList.indexOf(i)&&(s.conversationGroupList.push(i),o=!0)})}}),!0===o&&this._emitConvUpdate(),!0===s&&this._emitConvGroupListUpdate())}onConvGroupDeleted(e){Ce.l(this._n+\".onConvGroupDeleted groupItemList:\",e);const i=[];if(Fe(e)){let s=!1;e.forEach(e=>{var{groupID:e,groupName:t}=e;this._convGroupMap.has(e)&&(this._convGroupMap.delete(e),s=!0,i.push(t))}),!0===s&&this._emitConvGroupListUpdate()}this._eraseFromConversationGroupList(i)}_eraseFromConversationGroupList(t){Oe(t)||(this._convM.getLocalConvList().forEach(e=>{e.conversationGroupList=e.conversationGroupList.filter(e=>!t.includes(e))}),this._emitConvUpdate())}onConvGroupNameUpdated(e){Ce.l(this._n+\".onConvGroupNameUpdated options:\",e);const{groupID:n,groupName:o,oldGroupName:r}=e;if(this._convGroupMap.get(n)!==o){this._convGroupMap.set(n,o),this._emitConvGroupListUpdate();const a=this._convM.getLocalConvList();let t,s,i=!1;a.forEach(e=>{t=e.conversationGroupList,-1!==(s=t.indexOf(r))&&(t.splice(s,1,o),i=!0)}),!0===i&&this._emitConvUpdate()}}onConvInGroupUpdated(e){Ce.l(this._n+\".onConvInGroupUpdated options:\",e);const{oldGroupName:r,recentContactUpdateGroupItem:t}=e;if(Fe(t)){let s,i,n,o=!1;t.forEach(e=>{var{contactOptType:e,recentContactItem:t}=e;s=this._concatConvID(t),(i=this._getLocalConv(s))&&(n=i.conversationGroupList.indexOf(r),1===e?-1===n&&(i.conversationGroupList.push(r),o=!0):2===e&&-1!==n&&(i.conversationGroupList.splice(n,1),o=!0))}),!0===o&&(this._emitConvUpdate(),this._emitConvInGroupUpdate(r))}}onConvAddedToOrDeletedFromGroup(e){Ce.l(this._n+\".onConvAddedToOrDeletedFromGroup options:\",e);const{msgRecentContactItem:t,msgRecentContactUpdateContactItem:n}=e,s=this._concatConvID(t),o=this._getLocalConv(s);if(o&&Fe(n)){let s,i=!1;n.forEach(e=>{var{groupOptType:e,recentContactGroupItem:t}=e,t=t[\"groupName\"];s=o.conversationGroupList.indexOf(t),1===e?-1===s&&(o.conversationGroupList.push(t),i=!0):2===e&&-1!==s&&(o.conversationGroupList.splice(s,1),i=!0),!0===i&&this._emitConvInGroupUpdate(t)}),!0===i&&this._emitConvUpdate()}}onConvGroupListSynced(e){Fe(e)&&0!==e.length&&(Ce.l(this._n+\".onConvGroupListSynced groupItem:\",e),this._fillConvGroupMap(e))}getConvGroupListByID(e){if(!Oe(e)){const t=[];return e.forEach(e=>{this._convGroupMap.has(e)&&t.push(this._convGroupMap.get(e))}),t}}_onConvNotFound(e,t){e.push({conversationID:t,code:ei.CONV_NOT_FOUND,message:this._convM.getErrMsg(ei.CONV_NOT_FOUND)})}_onConvIDInvalid(e,t){e.push({conversationID:t,code:ei.INVALID_CONV_ID,message:this._convM.getErrMsg(ei.INVALID_CONV_ID)})}_getFlagBit(e){var t=e.toString(2),s=t.length;for(let e=s-1;0<=e;e--)if(\"1\"===t[e])return s-e-1}_concatConvID(e){var{type:e,to:s,groupID:i,userID:n}=e;let o;return 1===e?$e(n)?$e(s)||(o=\"\"+t.CONV_C2C+s):o=\"\"+t.CONV_C2C+n:2===e&&(o=\"\"+t.CONV_GROUP+i),o}_getMyUserID(){return this._convM.getMyUserID()}_getLocalConv(e){return this._convM.getLocalConversation(e)}_hasLocalConv(e){return this._convM.hasLocalConversation(e)}_emitConvUpdate(){this._convM.emitConvUpdate(!0,!1)}_emitConvGroupListUpdate(){this._convM.emitOEvt(e.CONVERSATION_GROUP_LIST_UPDATED,[...this._convGroupMap.values()])}_emitConvInGroupUpdate(t){const s={groupName:t,conversationList:[]},i=this._convM.getLocalConvList();s.conversationList=i.filter(e=>e.conversationGroupList.includes(t)),this._convM.emitOEvt(e.CONVERSATION_IN_GROUP_UPDATED,s)}reset(){Ce.l(this._n+\".reset\"),this._convGroupMap.clear(),this._startIndex=0,this._pagingStatus=Ut}}class _n extends oi{constructor(e){super(e),this._n=\"ConvModule\",ji.mixin(this),this._msgListHandler=new zi(this),this._msgRemindHandler=new un(this),this._convGroupHandler=new dn(this),this._sll=new nn(100),this._pagingStatus=Ut,this._pagingTs=0,this._pagingStartIdx=0,this._pagingPinnedTs=0,this._pagingPinnedStartIdx=0,this._pagingConvIDMap=new Map,this._convIDFromUnreadDBMap=new Map,this._convMap=new Map,this._tmpGroupList=[],this._tmpGroupAtTipsList=[],this._peerReadTimeMap=new Map,this._completedMap=new Map,this._roamingMsgKeyAndTimeMap=new Map,this._remoteGroupReadSeqMap=new Map,this._convTotalUnreadCount=0,this._pagingGetCostList=[],this._convMapForDiff=new Map,this._partialUpdatedConvMap=new Map,this._everClearedMap=new Map,this._bPullOnInvite=!0,this._initListeners()}_initListeners(){const e=this.getIEmitInst();e.on(Yi.A2KEY_AND_TINYID_UPDATED,this._init,this),e.on(Yi.PROFILE_UPDATED,this._onProfileUpdated,this),e.on(Yi.CLOUD_CONFIG,this._onCloudConfig,this)}_init(){Ce.l(this._n+\"._init\");var t=this.get(Ls).getItem(\"conversationMap\"),s=this.isIntl(),i=this.isUsingChatCore();if(t){var n=t.length;for(let e=0;e{0[e.conversationID,1])]),this._diffAndDeleteConv(),o&&this.emitIEvt(Yi.C2C_UNREAD_HANDLE_COMPLETED)),0!this._isConvNeedShow(e.conversationID)).length||this.emitConvUpdate()):o&&this.emitIEvt(Yi.C2C_UNREAD_HANDLE_COMPLETED):this.ready(()=>{this._onSendOrRcvMsg(e)})}updateConvGroupProfile(e){if(!Fe(e)||0!==e.length)if(0!==this._convMap.size){let i=!1;e.forEach(e=>{var s=\"\"+t.CONV_GROUP+e.groupID;if(this._convMap.has(s)){i=!0;const t=this._convMap.get(s);t.groupProfile=JSON.parse(JSON.stringify(e)),t.lastMessage.lastSequence{(s=this._convMap.get(e.conversationID))&&(n&&s.reduceUnreadCount()&&(i=s.type!==t.CONV_TOPIC),s.type===t.CONV_TOPIC?o.push(e):s.isLastMessageRevoked({sequence:e.sequence,time:e.time})&&(s.setLastMessageRevoked(!0),s.setLastMessageRevoker(e.revoker),i=!0))}),this.get(Ss).onMessageRevoked(o),i&&this.emitConvUpdate(!0,!1)}}updateRevokerInfo(n){const t=new Set;for(let e=0;e{e.getUserProfile({userIDList:s}).then(e=>{e=e.data;if(!Fe(e)||0===e.length)return i(n);const s={};for(const{userID:n,nick:i,avatar:t}of e)s[n]={nick:i,avatar:t};n.forEach(e=>{var t=e[\"revoker\"];s[t]&&(e.revokerInfo.nick=s[t].nick||\"\",e.revokerInfo.avatar=s[t].avatar||\"\")}),i(n)}).catch(()=>{i(n)})})}isLastMessageRevoked(e){let s=!1;const{conversationID:i,sequence:n,time:o}=e,r=this._convMap.get(i);return r&&(s=r.type===t.CONV_TOPIC?this.get(Ss).isLastMessageRevoked({topicID:i.replace(t.CONV_GROUP,\"\"),sequence:n}):r.isLastMessageRevoked({sequence:n,time:o})),Ce.l(this._n+\".isLastMessageRevoked options:\",e,\"ret:\"+s),s}onMessageDeleted(e){if(0!==e.length){let s=null;e.forEach(e=>{(s=this._msgListHandler.getLocalMsg(e.conversationID,e.ID))&&(s.isDeleted=!0),e!==s&&(e.isDeleted=!0)});const n=e[0].conversationID,o=this._msgListHandler.getLocalMsgList(n);let i={};for(let e=o.length-1;0<=e;e--)if(!o[e].isDeleted){i=o[e];break}const r=this._convMap.get(n);if(r){let e=!1;r.lastMessage.lastSequence===i.sequence&&r.lastMessage.lastTime===i.time||(Oe(i)&&(i=void 0),r.updateLastMessage(i),r.type!==t.CONV_TOPIC&&(e=!0),Ce.l(`${this._n}.onMessageDeleted. update convID:${n} with lastMessage:`,r.lastMessage)),n.startsWith(t.CONV_C2C)&&this.updateUnreadCount(n),e&&this.emitConvUpdate(!0,!1)}}}onMessageModified(s){var i=this._n+\".onMessageModified\",{conversationType:n,from:o,to:r,time:u,sequence:h,elements:a,cloudCustomData:p,messageVersion:c}=s;let l=\"\"+n+r;r===this.getMyUserID()&&n===t.CONV_C2C&&(l=\"\"+n+o);var{isUpdated:n,message:d}=this._msgListHandler.onMsgModified(l,s),_=(!0===n&&this.emitOEvt(e.MESSAGE_MODIFIED,[d]),this._isTopicConv(l));if(null===d?Ce.l(i+\" message is null! options:\",s):Ce.l(i+` isUpdated:${n} isTopicMessage:${_} from:${o} to:${r} sequence:${d.sequence} time:`+d.time),_)this.get(Ss).onMessageModified(s);else{const e=this._convMap.get(l);if(e){const t=e.lastMessage;t&&t.lastTime===u&&t.lastSequence===h&&t.version!==c&&(Ce.l(i+` convID:${l} lastMessage updated`),t.type=a[0].type,t.payload=a[0].content,t.messageForShow=yt(t.type,t.payload,this.isIntl()),t.cloudCustomData=p,t.version=c,this.emitConvUpdate(!0,!1))}}return d}onNewGroupAtTips(e){const t=e.dataList;let s=null;t.forEach(e=>{e.groupAtTips?s=e.groupAtTips:e.elements?s={...e.elements,sync:!0}:e.groupAtType&&(s={...e,sync:!0}),s.__random=e.random,s.__sequence=e.clientSequence,this._tmpGroupAtTipsList.push(s)}),Ce.l(this._n+\".onNewGroupAtTips isReady:\"+this._isReady,this._tmpGroupAtTipsList),this._isReady&&this._handleGroupAtTipsList()}_handleGroupAtTipsList(){if(0!==this._tmpGroupAtTipsList.length){let r=!1;this._tmpGroupAtTipsList.forEach(e=>{const{groupID:s,from:i,topicID:n,sync:o=!1}=e;if(i!==this.getMyUserID())if($e(n)){const i=this._convMap.get(\"\"+t.CONV_GROUP+s);i&&(i.updateGroupAtInfoList(e),r=!0)}else{const r=this._convMap.get(\"\"+t.CONV_GROUP+n);r&&(r.updateGroupAtInfoList(e),this.get(Ss).onAtInfoUpdated({topicID:n,groupAtInfoList:r.groupAtInfoList})),Oe(r)&&o&&(this.updateTopicConversation([{conversationID:\"\"+t.CONV_GROUP+n,type:t.CONV_TOPIC}]),this._convMap.get(\"\"+t.CONV_GROUP+n).updateGroupAtInfoList(e))}}),r&&this.emitConvUpdate(!0,!1),this._tmpGroupAtTipsList.length=0}}_checkNewConv(e){let s=[],i=[];e.forEach(e=>{this._convMap.has(e.conversationID)||(e.type===t.CONV_C2C?s.push(e.conversationID.replace(t.CONV_C2C,\"\")):e.type===t.CONV_GROUP&&i.push(e.conversationID.replace(t.CONV_GROUP,\"\")))}),0e.type===t.CONV_C2C||e.type===t.CONV_GROUP&&e.lastMessage.type!==t.MSG_GRP_TIP).slice(0,20).map(e=>({conversationID:e.conversationID,type:e.type,subType:e.subType,lastMessage:e.lastMessage,groupProfile:e.groupProfile,userProfile:e.userProfile}));this.get(Ls).setItem(\"conversationMap\",s,e)}emitConvUpdate(t=!0,s=!0){var i=this.getLocalConvList();if(s){const e=this.get(vs);e&&e.updateGroupLastMessage(i)}t&&(this.get(Rs).isPartialUpdatedConvs()?(this._diffConvMap(this._convMapForDiff,this._convMap),0this._isConvNeedShow(e.conversationID))}getLocalConversation(e){return this._convMap.get(e)}hasLocalConversation(e){return this._convMap.has(e)}getLocalOldestMessage(e){return this._msgListHandler.getLocalOldestMsg(e)}syncConvList(e=!0){const i=new Ti(\"syncConvList\");return this._pagingStatus===Ut&&this._convMap.clear(),this._pagingGetConvList(e).then(e=>{var t=function(e){if(Fe(e)&&0!==e.length){let t=0;return e.forEach(e=>{t+=e}),(t/e.length).toFixed(0)}}(this._pagingGetCostList),s=function(e){if(Fe(e)&&0!==e.length){let t=0;return e.forEach(e=>{t+=e}),t.toFixed(0)}}(this._pagingGetCostList),s=(this._pagingGetCostList.length=0,this._pagingStatus=kt,this._diffAndDeleteConv(),this.emitConvUpdate(!0,!1),this._setStorageConvList(),this._handleC2CPeerReadTime(),this.emitIEvt(Yi.CONV_SYNC_COMPLETED),`count:${this._convMap.size} sum:${s} avg:`+t);return Ce.l(this._n+\".syncConvList. \"+s),i.setMessage(s).end(),e}).catch(e=>(this._pagingStatus=wt,i.setMessage(this._pagingTs).setError(e).end(),ni(e)))}_diffAndDeleteConv(){if(this._isSyncCompleted()){let s=[];this._convMap.forEach((e,t)=>{!this._pagingConvIDMap.has(t)&&this._convIDFromUnreadDBMap.has(t)&&(this._convMap.delete(t),s.push(t))}),Ce.l(this._n+\"._diffAndDeleteConv list:\"+s),s=null}}_pagingGetConvList(e=!0){const a=this._n+\"._pagingGetConvList\",c=(Ce.l(a+` incrementalPullFlag:${e} ts:${this._pagingTs} startIdx:${this._pagingStartIdx} pinnedTs:${this._pagingPinnedTs} pinnedStartIdx:`+this._pagingPinnedStartIdx),Date.now());return this._pagingStatus=Gt,this.req({P:ri.PAGING_GET_CONV_LIST,data:{fromAccount:this.getMyUserID(),timeStamp:e?this._pagingTs:0,startIndex:e?this._pagingStartIdx:0,pinnedTimeStamp:e?this._pagingPinnedTs:0,pinnedStartIndex:e?this._pagingPinnedStartIdx:0,orderType:1}}).then(e=>{var{completeFlag:e,conversations:t=[],timeStamp:s,startIndex:i,pinnedTimeStamp:n,pinnedStartIndex:o,groupItem:r}=e.data;if(this._pagingGetCostList.push(Dt(c,!1)),Ce.l(a+` ok. completeFlag:${e} count:${t.length} cost:`+Dt(c)),this._convGroupHandler.onConvGroupListSynced(r),0[e.conversationID,1])]),this._updateLocalConvList({conversationOptionsList:e,isFromGetConversations:!0,updateUnreadCount:!0}),this.isLoggedIn()&&this.emitConvUpdate()}if(!this._isReady){if(!this.isLoggedIn())return ii();this.triggerReady()}return this._pagingTs=s,this._pagingStartIdx=i,this._pagingPinnedTs=n,this._pagingPinnedStartIdx=o,1!==e?this._pagingGetConvList():(this._handleGroupAtTipsList(),this._convGroupHandler.getRemoteConvGroupList(),ii())}).catch(e=>{throw this.isLoggedIn()&&(this._isReady||(Ce.w(a+\" failed. error:\",e),this.triggerReady())),e})}_updateLocalConvList(e){var t=e[\"isFromGetConversations\"],s=Date.now(),e=this._getTmpConvListMapping(e)[\"newConvList\"];this._convMap=new Map(this._sortConvList([...this._convMap])),t||this._updateUserOrGroupProfile(e),Ce.l(this._n+\"._updateLocalConvList cost:\"+Dt(s))}_getTmpConvListMapping(i){const{conversationOptionsList:n,isFromGetConversations:o,isInstantMessage:r,isUnreadC2CMessage:h=!1,updateUnreadCount:p}=i,a=[],c=[],l=this.get(vs),d=this.get(Es),g=this.isIntl(),m=this.isUsingChatCore();for(let e=0,s=n.length;e{(!0===e[1].isPinned?Oe(e[1].lastMessage.lastTime)?s:t:Oe(e[1].lastMessage.lastTime)?n:i).push(e)}),t.sort((e,t)=>t[1].lastMessage.lastTime-e[1].lastMessage.lastTime).concat(s).concat(i.sort((e,t)=>t[1].lastMessage.lastTime-e[1].lastMessage.lastTime)).concat(n)}_sortConvListAndEmitEvent(){this._convMap=new Map(this._sortConvList([...this._convMap])),this.emitConvUpdate(!0,!1)}_updateUserOrGroupProfile(e){if(0!==e.length){const s=[],i=[],n=this.get(Ts),o=this.get(vs);e.forEach(e=>{if(e.type===t.CONV_C2C)s.push(e.toAccount);else if(e.type===t.CONV_GROUP){const t=e.toAccount;o.hasLocalGroup(t)?e.groupProfile=o.getLocalGroupProfile(t):i.push(t)}}),Ce.l(`${this._n}._updateUserOrGroupProfile userIDList:${s} groupIDList:`+i),0{Fe(e)?e.forEach(e=>{this._doUpdateUserProfile(\"\"+t.CONV_C2C+e.userID,e)}):this._doUpdateUserProfile(\"\"+t.CONV_C2C+e.userID,e)}),0{let i=!1;e.forEach(e=>{var s=\"\"+t.CONV_GROUP+e.groupID;if(this._convMap.has(s)){const t=this._convMap.get(s);We(t.groupProfile,e,[],[null,void 0,\"\",0,NaN]),!t.subType&&e.type&&(t.subType=e.type),i=!0}}),i&&this.emitConvUpdate()})}}_doUpdateUserProfile(e,t){this.hasLocalConversation(e)&&(this.getLocalConversation(e).userProfile=t,this.emitConvUpdate())}_getConvOptions(e){const i=[],s=e.filter(({type:e,userID:t})=>1===e&&!this._isNonExistentAccount(t)||2===e),n=this.getMyUserID(),o=s.map(e=>{var s;return $e(e.lastMsg)&&(e.lastMsg={elements:[]}),1===e.type?(s={userID:e.userID,nick:e.peerNick,avatar:e.peerAvatar},i.push(s),{conversationID:\"\"+t.CONV_C2C+e.userID,type:t.CONV_C2C,lastMessage:{lastTime:e.time,lastSequence:e.sequence,fromAccount:e.lastC2CMsgFromAccount,type:e.lastMsg.elements[0]?e.lastMsg.elements[0].type:null,payload:e.lastMsg.elements[0]?this._amendLayersOverLimitProp(e.lastMsg.elements[0].content):null,cloudCustomData:e.lastMsg.cloudCustomData||\"\",isRevoked:8===e.lastMessageFlag,onlineOnlyFlag:!1,nick:\"\",nameCard:\"\",version:0,isPeerRead:e.lastC2CMsgFromAccount===n&&e.time<=e.c2cPeerReadTime,revoker:e.lastMsg.revokerInfo?e.lastMsg.revokerInfo.revoker:null},unreadCount:0,userProfile:new sn(s),peerReadTime:e.c2cPeerReadTime,isPinned:1===e.isPinned,customData:e.customMark||\"\",markList:vt(e.standardMark),conversationGroupList:this._convGroupHandler.getConvGroupListByID(e.contactGroupId),remark:e.friendRemark||\"\",messageRemindType:this._transMsgRemindType(e.messageRemindType)}):{conversationID:\"\"+t.CONV_GROUP+e.groupID,type:t.CONV_GROUP,lastMessage:{lastTime:e.time,lastSequence:e.sequence,fromAccount:e.msgGroupFromAccount,...this._patchTypeAndPayload(e),cloudCustomData:e.lastMsg.cloudCustomData||\"\",isRevoked:2===e.lastMessageFlag,onlineOnlyFlag:!1,nick:e.senderNick||\"\",nameCard:e.senderNameCard||\"\",revoker:e.lastMsg.revokerInfo?e.lastMsg.revokerInfo.revoker:null},groupProfile:new rn({groupID:e.groupID,name:e.groupNick,avatar:e.groupImage,type:e.groupType,nextMessageSeq:e.nextMessageSeq}),unreadCount:this._computeGroupUnreadCount(e),peerReadTime:0,isPinned:1===e.isPinned,version:0,customData:e.customMark||\"\",markList:vt(e.standardMark),conversationGroupList:this._convGroupHandler.getConvGroupListByID(e.contactGroupId),messageRemindType:this._transMsgRemindType(e.messageRemindType)}});return 0{var{type:e,userID:s,groupID:i}=e;return 1===e?\"\"+t.CONV_C2C+s:2===e?\"\"+t.CONV_GROUP+i:void 0}),Ce.l(this._n+\".onConvDeleted convIDList:\"+e),this.deleteLocalConvList(e))}onConvPinnedStatus(e,r){if(Fe(e)){let o=!1;e.forEach(e=>{var{type:e,userID:s,groupID:i}=e;let n;1===e?n=this.getLocalConversation(\"\"+t.CONV_C2C+s):2===e&&(n=this.getLocalConversation(\"\"+t.CONV_GROUP+i)),n&&(Ce.l(`${this._n}.onConvPinnedStatus convID:${n.conversationID} localPinned:${n.isPinned} remotePinned:`+r),r?n.isPinned||(n.isPinned=!0,o=!0):n.isPinned&&(n.isPinned=!1,o=!0))}),o&&this._sortConvListAndEmitEvent()}}getMessageList({conversationID:a,nextReqMessageID:e,count:t}){const c=this._n+\".getMessageList\",s=this.getLocalConversation(a);let i=\"\";if(s&&s.groupProfile&&(i=s.groupProfile.type),nt(i))return Ce.l(c+` not available in ${i}. convID:`+a),ii({messageList:[],nextReqMessageID:\"\",isCompleted:!0});($e(t)||15{var{nextReqID:e,storedMessageList:t,assembledMessageList:s,isPullingCompleted:i}=e,n=this._completedMap.has(a);let o=t;0e.isRevoked)||[],s=r.messageList.map(e=>e.sequence);return Ce.l(c+` ret.nextReqMessageID:${r.nextReqMessageID} ret.isCompleted:${r.isCompleted} sequenceList:`,s),Fe(t)&&0!==t.length?this.updateRevokerInfo(t).then(e=>(e.forEach(t=>{const s=t[\"revokerInfo\"];r.messageList=r.messageList.map(e=>(e.ID===t.ID&&s&&(e.revokeReason=s.reason||\"\",e.revokerInfo={userID:s.revoker||e.revoker,nick:s.nick,avatar:s.avatar}),e))}),Zs(r))):Zs(r)});this.modifyMessageList(a);e=this._getMsgListFromMem({conversationID:a,nextReqMessageID:e,count:t});return ii(e)}_isEverCleared(e){return this._everClearedMap.has(e)}_getMsgListFromMem({conversationID:e,nextReqMessageID:t,count:s}){const i=this._n+\"._getMsgListFromMem\",n=this._msgListHandler.getLocalMsgList(e),o=n.length,r=at(e);let a=0;const c={isCompleted:!1,nextReqMessageID:\"\",messageList:[]};t?(a=r?n.findIndex(e=>e.ID===t):n.findIndex(e=>e.sequence+\"\"===t))>s?(c.messageList=n.slice(a-s,a),c.nextReqMessageID=r?n[a-s].ID:n[a-s].sequence+\"\"):(c.messageList=n.slice(0,a),c.isCompleted=!0):se.sequence);return Ce.l(i+` convID:${e} ret.nextReqMessageID:${c.nextReqMessageID} ret.isCompleted:${c.isCompleted} sequenceList:`+s),c}getMessageListHopping(e){let{conversationID:s,sequence:i,time:n,count:o,direction:r=0}=e;if(($e(o)||15e.ID===t):ct(e)&&(n=-1!==t.indexOf(\"-\")?s.findIndex(e=>e.ID===t):s.findIndex(e=>e.sequence+\"\"===t)),n=-1===n?0:n}_needGetHistory({conversationID:e,remainingCount:t,count:s}){var i=this.getLocalConversation(e);let n=\"\";if(i&&i.groupProfile&&(n=i.groupProfile.type),lt(e)||nt(n))return!1;if(this._isEverCleared(e))return!0;i=t<=s&&!this._completedMap.has(e);return Ce.l(this._n+`._needGetHistory convID:${e} ret:`+i),i}_isTopicConv(e){e=e.replace(t.CONV_GROUP,\"\");return rt(e)}getHistoryMessages(n){const{conversationID:o,count:e,nextReqMessageID:r}=n;if(o===t.CONV_SYSTEM)return ii();let a=15,c=(20{d?--a:++a},M=()=>d?a>=c:a{this.clearMemMsg(e)})}deleteGroupRoamingInfo(e){e=\"\"+t.CONV_GROUP+e;0{e=e.data,e=this._handleAllMsgRead(e);return n.setMessage(`scope:${s.scope} failureGroups:`+JSON.stringify(e)).end(),ii()}).catch(e=>(n.setError(e).end(),Ce.w(i+\" failed. error:\",e),ni({code:e&&e.code?e.code:ei.MSG_UNREAD_ALL_FAIL,message:e&&e.message?e.message:void 0})))}setConvCustomData(e){return this._convGroupHandler.setConvCustomData(e)}markConv(e){return this._convGroupHandler.markConv(e)}getConvGroupList(){return this._convGroupHandler.getLocalConvGroupList()}createConvGroup(e){return this._convGroupHandler.createConvGroup(e)}deleteConvGroup(e){return this._convGroupHandler.deleteConvGroup(e)}renameConvGroup(e){return this._convGroupHandler.renameConvGroup(e)}addConvsToGroup(e){return this._convGroupHandler.addConvsToGroup(e)}deleteConvsFromGroup(e){return this._convGroupHandler.deleteConvsFromGroup(e)}onConvMarkUpdated(e){this._convGroupHandler.onConvMarkUpdated(e)}onConvGroupCreated(e){this._convGroupHandler.onConvGroupCreated(e)}onConvGroupDeleted(e){this._convGroupHandler.onConvGroupDeleted(e)}onConvGroupNameUpdated(e){this._convGroupHandler.onConvGroupNameUpdated(e)}onConvInGroupUpdated(e){this._convGroupHandler.onConvInGroupUpdated(e)}onConvAddedToOrDeletedFromGroup(e){this._convGroupHandler.onConvAddedToOrDeletedFromGroup(e)}_getConvLastMessageSeq(e){var t=this._msgListHandler.getLocalLastMsg(e.conversationID);let s=e.lastMessage.lastSequence;return s=t&&s=t&&this._remoteGroupReadSeqMap.delete(e)}}this.updateUnreadCount(n,!1)&&(i+=1)}return i}isRemoteRead(e){const{conversationID:s,sequence:i}=e,n=s.replace(t.CONV_GROUP,\"\");let o=!1;if(this._remoteGroupReadSeqMap.has(n)){const e=this._remoteGroupReadSeqMap.get(n);i<=e&&(o=!0,Ce.l(`${this._n}.isRemoteRead convID:${s} msgSeq:${i} remoteReadSeq:`+e)),i>=e+10&&this._remoteGroupReadSeqMap.delete(n)}return o}updateIsReadAfterReadReport({conversationID:e,lastMessageSeq:s,lastMessageTime:i}){var n=this._msgListHandler.getLocalMsgList(e);if(0!==n.length){let t;for(let e=n.length-1;0<=e;e--)if(t=n[e],!(i&&t.time>i||s&&t.sequence>s)){if(\"in\"===t.flow&&t.isRead)break;t.setIsRead(!0)}}}updateUnreadCount(e,s=!0){let i=!1;const n=this.getLocalConversation(e),o=this._msgListHandler.getLocalMsgList(e);if(n){var r=n.unreadCount,a=o.filter(e=>!e.isRead&&!e._onlineOnlyFlag&&!e.isDeleted).length;if(r!==a&&(n.unreadCount=a,i=!0,Ce.l(this._n+`.updateUnreadCount from ${r} to ${a}, convID:`+e),!0===s&&this.emitConvUpdate(!0,!1)),i&&n.type===t.CONV_TOPIC){const s=n[\"unreadCount\"],i=this.get(Ss),o=e.replace(t.CONV_GROUP,\"\");i.onUnreadCountUpdatedFromConv(o,s)}return i}}clearGroupAtInfoList(e,s=!0){const i=this.getLocalConversation(e);if(i&&0{const{tinyID:s,clientTime:i,random:n,readCount:o,unreadCount:r}=t,a=s+`-${i}-`+n,c=this._msgListHandler.getLocalMsg(e,a)||this._msgListHandler.getHoppingMsg(e,a),l={groupID:d,messageID:a,readCount:0,unreadCount:0};c&&(Ge(o)&&(c.readReceiptInfo.readCount=o,l.readCount=o),Ge(r)&&(c.readReceiptInfo.unreadCount=r,l.unreadCount=r),_.push(l))})}}else{const e=\"\"+t.CONV_C2C+a;i.forEach(t=>{const{tinyID:s,clientTime:i,random:n}=t,o=s+`-${i}-`+n,r=this._msgListHandler.getLocalMsg(e,o)||this._msgListHandler.getHoppingMsg(e,o);if(r&&!r.readReceiptInfo.isPeerRead){r.readReceiptInfo.isPeerRead=!0,r.readReceiptInfo.timestamp=c;const e={userID:a,messageID:o,isPeerRead:!0,timestamp:c};_.push(e)}})}0<_.length&&this.emitOEvt(e.MESSAGE_READ_RECEIPT_RECEIVED,_)}}updateIsRead(e){const i=this.getLocalConversation(e),n=this.getLocalMessageList(e);if(i&&0!==n.length&&!lt(i.type)){const o=[];for(let e=0,t=n.length;ee.isRevoked).length;s=o.length-i.unreadCount-e}else s=o.length-i.unreadCount;for(let e=0;e!e.atTypeArray.includes(t.CONV_AT_ALL))).length)return this.clearGroupAtInfoList(e,!1),Promise.resolve();const a=this.getMyUserID();return this.req({P:ri.DEL_GROUP_AT_TIPS,data:{messageListToDelete:r.map(e=>({from:e.from,to:a,messageSeq:e.__sequence,messageRandom:e.__random,groupID:$e(e.topicID)?e.groupID:e.topicID}))}}).then(()=>(Ce.l(s+\" ok. count:\"+n.length),this.clearGroupAtInfoList(e,!1),Promise.resolve())).catch(e=>(Ce.e(s+\" failed. error:\",e),ni(e)))}appendToMessageList(e){return this._msgListHandler.pushIn(e)}setMessageRandom(e){this._sll.set(e.random)}deleteMessageRandom(e){this._sll.delete(e.random)}pushIntoMessageList(e,t,s){return!(!this._msgListHandler.pushIn(t,s)||this._sll.has(t.random)&&!s||(e.push(t),0))}revoke(e,t,s){return this._msgListHandler.revoke(e,t,s)}getPeerReadTime(e){return this._peerReadTimeMap.get(e)}recordPeerReadTime(e,t){(!this._peerReadTimeMap.has(e)||this._peerReadTimeMap.get(e){i.end();var e=this._getConvList(t);return Zs({conversationList:e,isSyncCompleted:this._isSyncCompleted()})}).catch(e=>(i.setError(e).end(),Ce.e(s+\" failed. error:\",e),ni(e)))}const i=this._getConvList(t);return Ce.l(s+\". returned conversation count:\"+i.length),ii({conversationList:i,isSyncCompleted:this._isSyncCompleted()})}_getConvList(t){if($e(t))return this.getLocalConvList();if(Fe(t))return 0===t.length?[]:this.getLocalConvList().filter(e=>t.includes(e.conversationID));if(be(t)){const{type:s,markType:i,groupName:n,hasUnreadCount:o,hasGroupAtInfo:r}=t;return this.getLocalConvList().filter(e=>this._filterType(e,s)&&this._filterMarkType(e,i)&&this._filterGroupName(e,n)&&this._filterUnreadCount(e,o)&&this._filterGroupAtInfo(e,r))}return[]}_filterType(e,s){return s!==t.CONV_C2C&&s!==t.CONV_GROUP||e.type===s}_filterGroupName(e,t){return!ke(t)||(\"\"===t?0===e.conversationGroupList.length:e.conversationGroupList.includes(t))}_filterMarkType(e,t){return!Ge(t)||(0===t?0===e.markList.length:e.markList.includes(t))}_filterUnreadCount(e,t){let s=!0;return!0===t?s=1<=e.unreadCount:!1===t&&(s=0===e.unreadCount),s}_filterGroupAtInfo(e,t){let s=!0;return!0===t?s=1<=e.groupAtInfoList.length:!1===t&&(s=0===e.groupAtInfoList.length),s}_handleC2CPeerReadTime(){for(var[e,s]of this._convMap)s.type===t.CONV_C2C&&this.recordPeerReadTime(e,s.peerReadTime)}_isPagingGetGroupListCompleted(){const e=this.get(vs);return!e||e.isPagingGetCompleted()}_getLocalGroupCount(){const e=this.get(vs);return e?e.getLocalGroupList().length:0}_hasLocalGroup(e){const s=this.get(vs);return!!s&&s.hasLocalGroup(e.replace(t.CONV_GROUP,\"\"))}getConversationProfile(i){let n,o=!1;if(this._convMap.has(i)?n=this._convMap.get(i):(n=new cn({conversationID:i,type:at(i)?t.CONV_C2C:t.CONV_GROUP},this.isIntl(),this.isUsingChatCore()),o=!0),n._isInfoCompleted||n.type===t.CONV_SYSTEM)return ii({conversation:n});if(ct(i)){if(!this.get(vs))return ni({code:ei.NO_MODULE});if(!this._hasLocalGroup(i))return ii({conversation:n})}const r=this._n+\".getConversationProfile\",a=new Ti(\"getConversationProfile\");return Ce.l(r+`. convID:${i} remark:${n.remark} lastMessage:`,n.lastMessage),this._getUserOrGroupProfile(n).then(e=>{a.setMessage(`convID:${i} unreadCount:`+e.data.conversation.unreadCount).end();const s=this.get(Es);if(s&&n.type===t.CONV_C2C){const o=i.replace(t.CONV_C2C,\"\");if(s.isMyFriend(o)){const t=s.getFriendRemark(o);n.remark!==t&&(n.remark=t,Ce.l(r+`. convID:${i} patch remark:`+n.remark))}}if(Ce.l(r+` ok. isNewConv:${o} convID:`+i),o){if(n.type===t.CONV_C2C)return this._onNewC2CConv([i.replace(t.CONV_C2C,\"\")]).then(()=>ii({conversation:n}));if(n.type===t.CONV_GROUP)return this._onNewGroupConv([i.replace(t.CONV_GROUP,\"\")]).then(()=>ii({conversation:n}))}return e}).catch(e=>(a.setError(e).setMessage(\"convID:\"+i).end(),Ce.e(r+\" failed. error:\",e),ni(e)))}_getUserOrGroupProfile(s){return s.type===t.CONV_C2C?this.get(Ts).getUserProfile({userIDList:[s.toAccount]}).then(e=>{e=e.data;return 0===e.length?ni({code:ei.USER_OR_GRP_NOT_FOUND}):(s.userProfile=e[0],s._isInfoCompleted=!0,this._insertConvAfterTopmost(s),ii({conversation:s}))}):this.get(vs).getGroupProfile({groupID:s.toAccount}).then(e=>(s.groupProfile=e.data.group,s._isInfoCompleted=!0,this._insertConvAfterTopmost(s),ii({conversation:s})))}_insertConvAfterTopmost(e){if(e instanceof cn&&!this._convMap.has(e.conversationID)){const t=[...this._convMap],s=t.findIndex(e=>!1===e[1].isPinned);t.splice(s,0,[e.conversationID,e]),this._convMap=new Map(t),this._setStorageConvList(),this.emitConvUpdate(!0,!1)}}_onProfileUpdated(e){e.data.forEach(e=>{var s=e[\"userID\"];if(s===this.getMyUserID())this._onMyProfileModified({latestNick:e.nick,latestAvatar:e.avatar});else{const i=this._convMap.get(\"\"+t.CONV_C2C+s);i&&(i.userProfile=e)}})}_onCloudConfig(e){\"0\"===this.getCloudConfig(\"pull_on_invite\")&&(this._bPullOnInvite=!1),Ce.l(this._n+\"._onCloudConfig bPullOnInvite:\"+this._bPullOnInvite)}disableMsgPullOnInvite(){this._bPullOnInvite=!1}_isSyncCompleted(){return this._pagingStatus===kt}_errorLog(e,t,s,i){var n=new Error(\"Params validate failed.\"),o=\"\"+this.getErrMsg(\"API_REFER\")+e;throw Ce.w(`[${e}] | ${t} | ${this.getErrMsg(s,i)}, `+o),Ce.e(`[${e}] Invalid ${t}: type check failed for ${t}.`),n}_isValidConvID(e){return at(e)||ct(e)||lt(e)}deleteConversation(e){const t=\"deleteConversation\";return ke(e)||we(e)||this._errorLog(t,\"options\",\"StringOrObjectRequiredLog\"),ke(e)?(this._isValidConvID(e)||this._errorLog(t,\"options\",\"InvalidConversationID\",e),Ce.l(`${this._n}.${t} convID:`+e),this.deleteConvList({conversationIDList:[e],flag:1})):(Fe(e.conversationIDList)||this._errorLog(t,\"conversationIDList\",\"ArrayRequiredLog\"),0===e.conversationIDList.length&&this._errorLog(t,\"conversationIDList\",\"NonEmptyArrayLog\"),e.conversationIDList.forEach(e=>{this._isValidConvID(e)||this._errorLog(t,\"conversationIDList\",\"InvalidConversationID\",e)}),\"clearHistoryMessage\"in e&&\"boolean\"!=typeof e.clearHistoryMessage&&this._errorLog(t,\"clearHistoryMessage\",\"BooleanRequiredLog\"),100{r.end();e=[...e[0],...e[1]];return 0===e.length?ni(new Qs({code:ei.CONV_NOT_FOUND})):(Ce.l(n+\" ok\"),ii(1===i?{conversationID:e[0]}:{conversationIDList:e}))}).catch(e=>(r.setError(e).end(),Ce.e(n+\" failed. error:\",e),ni(e)))}rmLocalOnlyConvList(e){return e.filter(e=>{if(!this._convMap.has(e))return!1;var s=this.getLocalConversation(e).type;return s!==t.CONV_GROUP||this._hasLocalGroup(e)?s===t.CONV_SYSTEM&&(this.get(vs).deleteGroupSystemNotice({messageList:this._msgListHandler.getLocalMsgList(e)}),this.deleteLocalConv(e),!0):(this.deleteLocalConv(e),!0)})}rmLocalAndRemoteConvList(e,s){const i={fromAccount:this.getMyUserID(),conversationList:[],clearHistoryMessage:s?1:0};return e.forEach(e=>{var s;this._convMap.has(e)&&((s=this.getLocalConversation(e).type)===t.CONV_C2C?i.conversationList.push({toAccount:e.replace(s,\"\"),type:1}):s===t.CONV_GROUP&&this._hasLocalGroup(e)&&i.conversationList.push({toGroupID:e.replace(s,\"\"),type:2}))}),0===i.conversationList.length?[]:this.req({P:ri.DEL_CONV,data:i}).then(e=>{const s=[];return 0{0===e.code&&(e=1===e.type?\"\"+t.CONV_C2C+e.to:\"\"+t.CONV_GROUP+e.groupID,s.push(e))}),this.deleteLocalConvList(s),s})}setConvDraft(e){var{conversationID:e,draftText:t}=e,s=this._n+\".setConvDraft\";if(Ce.l(s+` convID:${e} draftText:`+t),!this._convMap.has(e))return ni({code:ei.CONV_NOT_FOUND});const i=this._convMap.get(e);return i.setDraftText(t),this.emitConvUpdate(),ii({code:0,conversation:i})}clearHistoryMessage(s){const e={fromAccount:this.getMyUserID(),toAccount:void 0,type:void 0,toGroupID:void 0};if(!this._convMap.has(s))return ni({code:ei.CONV_NOT_FOUND});var i=this._convMap.get(s).type;if(i===t.CONV_C2C)e.type=1,e.toAccount=s.replace(t.CONV_C2C,\"\");else{if(i!==t.CONV_GROUP)return i===t.CONV_SYSTEM?(this.get(vs).deleteGroupSystemNotice({messageList:this._msgListHandler.getLocalMsgList(s)}),ii({conversationID:s})):ni({code:ei.CONV_UN_RECORDED_TYPE});e.type=2,e.toGroupID=s.replace(t.CONV_GROUP,\"\")}const n=this._n+\".clearHistoryMessage\",o=new Ti(\"clearHistoryMessage\");return o.setMessage(\"convID:\"+s),Ce.l(n+\". convID:\"+s),this.setMessageRead({conversationID:s}).then(()=>this.req({P:ri.CLEAR_HISTORY_MSG,data:e})).then(()=>{o.end(),Ce.l(n+\" ok\"),this.clearMemMsg(s);const e=this.getLocalConversation(s);return e&&(e.updateLastMessage(),this._sortConvListAndEmitEvent()),ii({conversationID:s})}).catch(e=>(o.setError(e).end(),Ce.e(n+\" failed. error:\",e),ni(e)))}pinConversation(e){const{conversationID:s,isPinned:i}=e,n=this.getLocalConversation(s);if(n&&n.isPinned===i)return ii({conversationID:s});if(lt(s))return n&&(n.isPinned=i),this._sortConvListAndEmitEvent(),ii({conversationID:s});let o=null;if(at(s)?o={type:1,toAccount:s.replace(t.CONV_C2C,\"\")}:ct(s)&&(o={type:2,groupID:s.replace(t.CONV_GROUP,\"\")}),null===o)return ni({code:ei.INVALID_CONV_ID});const r=this._n+\".pinConversation\",a=`convID:${s} isPinned:`+i,c=new Ti(\"pinConversation\");return c.setMessage(a),Ce.l(r+\". \"+a),this.req({P:ri.PIN_CONV,data:{fromAccount:this.getMyUserID(),operationType:!0===i?1:2,itemList:[o]}}).then(()=>(c.end(),Ce.l(r+\" ok\"),n?n.isPinned!==i&&(n.isPinned=i):this._convMap.set(s,new cn({conversationID:s,type:at(s)?t.CONV_C2C:t.CONV_GROUP,isPinned:i},this.isIntl(),this.isUsingChatCore())),this._sortConvListAndEmitEvent(),Zs({conversationID:s}))).catch(e=>(c.setError(e).end(),Ce.e(r+\" failed. error:\",e),ni(e)))}setMessageRemindType(e){return this._msgRemindHandler.set(e)}patchMsgRemindType(e){var{ID:s,isC2CConversation:i,messageRemindType:n}=e;let o=!1;const r=this.getLocalConversation(i?\"\"+t.CONV_C2C+s:\"\"+t.CONV_GROUP+s);return r&&r.messageRemindType!==n&&(r.messageRemindType=n,o=!0),Ce.l(this._n+\".patchMsgRemindType options:\",e,\"ret:\"+o),o}onC2CMsgRemindTypeFetched(e){if(Fe(e)&&0{var{userID:e,muteFlag:t}=e,t=this._transMsgRemindType(t);!0===this.patchMsgRemindType({ID:e,isC2CConversation:!0,messageRemindType:t})&&(s+=1)}),Ce.l(this._n+\".onC2CMsgRemindTypeFetched updateCount:\"+s),1<=s&&this.emitConvUpdate(!0,!1)}}onC2CMsgRemindTypeSynced(e){const i=this._n+\".onC2CMsgRemindTypeSynced\";e.dataList.forEach(t=>{if(!Oe(t.muteNotificationsSync)){var{to:t,muteFlag:s}=t.muteNotificationsSync,s=this._transMsgRemindType(s);let e=0;this.patchMsgRemindType({ID:t,isC2CConversation:!0,messageRemindType:s})&&(e+=1),Ce.l(i+\" updateCount:\"+e),1<=e&&this.emitConvUpdate(!0,!1)}})}onGroupMsgRemindTypeUpdated(e){this._msgRemindHandler.onGroupMsgRemindTypeUpdated(e)}deleteLocalConv(e,t=!0){var s=this._convMap.has(e);if(Ce.l(this._n+`.deleteLocalConv convID:${e} has:`+s),s&&(this._convMap.delete(e),this._convMapForDiff.delete(e),this.clearMemMsg(e),this._setStorageConvList(!0),t)){const t=!this._isTopicConv(e);this.emitConvUpdate(t,!1)}}pullMsgOnInvite(i){const n=this.get(vs);if(n){var o=this._n+\".pullMsgOnInvite\";if(Ce.l(o+\" flag:\"+this._bPullOnInvite),this._bPullOnInvite){var r=this.getLocalLastMessage(i),a=this.getLocalSecondLastMessage(i);let e=1,s=1;r&&(e=r.sequence),a&&(s=a.sequence);r=n.getGroupRemoteLastSeq(i.replace(t.CONV_GROUP,\"\"));Ce.l(o+` convID:${i} localLastSeq:${e} localSecondLastSeq:${s} remoteLastSeq:`+r),this.clearMemMsg(i),1{const{messageList:t,isCompleted:s,nextReqMessageID:i}=e.data,n=t.filter(e=>a?e.sequence>l&&e.sequence<=c:e.sequence>l&&e.sequencel&&o.length<60?this._recursiveGetMsgList(o,r,a,c,l,i):this._emitMsgReceived(r,o)})}_emitMsgReceived(t,s){if(0e===s.findIndex(e=>e.sequence===t.sequence)),n=this.hasLocalConversation(t),o=i.map(e=>e.sequence);Ce.l(`${this._n}._emitMsgReceived convID:${t} has:${n} count:${o.length} sequenceList:`,o),this.emitOEvt(e.MESSAGE_RECEIVED,i),n?this.patchConvLastMessage(t,!0):this.getConversationProfile(t).then(()=>{this.patchConvLastMessage(t,!0)})}}deleteLocalConvList(e){let t=!1;e.forEach(e=>{this._convMap.has(e)&&(this.deleteLocalConv(e,!1),t=!0)}),Ce.l(this._n+`.deleteLocalConvList convID:${e} isConvIDExisted:`+t),t&&this.emitConvUpdate(!0,!1)}isMessageSentByCurrentInstance(e){return!(!this._msgListHandler.hasLocalMsg(e.conversationID,e.ID)&&!this._sll.has(e.random))}modifyMessageList(e){var s,i;e.startsWith(t.CONV_C2C)&&this._convMap.has(e)&&(i=this._convMap.get(e),s=Date.now(),this._msgListHandler.modifyMsgSentByPeer({conversationID:e,latestNick:i.userProfile.nick,latestAvatar:i.userProfile.avatar}),i=this.get(Ts).getNickAndAvatarByUserID(this.getMyUserID()),this._msgListHandler.modifyMsgSentByMe({conversationID:e,latestNick:i.nick,latestAvatar:i.avatar}),Ce.l(this._n+`.modifyMessageList convID:${e} cost:`+Dt(s)))}updateUserProfileSpecifiedKey(e){Ce.l(this._n+\".updateUserProfileSpecifiedKey options:\",e);var{conversationID:t,nick:s,avatar:i}=e;if(this._convMap.has(t)){const e=this._convMap.get(t).userProfile;ke(s)&&e.nick!==s&&(e.nick=s),ke(i)&&e.avatar!==i&&(e.avatar=i),this.emitConvUpdate(!0,!1)}}_onMyProfileModified(t){const e=this.getLocalConvList(),s=Date.now();e.forEach(e=>{this.modifyMessageSentByMe({conversationID:e.conversationID,...t})}),Ce.l(this._n+\"._onMyProfileModified. modify all messages sent by me, cost:\"+Dt(s))}modifyMessageSentByMe(e){this._msgListHandler.modifyMsgSentByMe(e)}getLatestMessageSentByMe(e){return this._msgListHandler.getLatestMsgSentByMe(e)}modifyMessageSentByPeer(e){this._msgListHandler.modifyMsgSentByPeer(e)}getLatestMessageSentByPeer(e){return this._msgListHandler.getLatestMsgSentByPeer(e)}pushIntoNoticeResult(e,t){return!(!this._msgListHandler.pushIn(t)||this._sll.has(t.random)||(e.push(t),0))}getLocalLastMessage(e){return this._msgListHandler.getLocalLastMsg(e)}getLocalSecondLastMessage(e){return this._msgListHandler.getLocalSecondLastMsg(e)}checkAndPatchRemark(){const n=this.get(Es);if(0!==this._convMap.size&&n){const e=[...this._convMap.values()].filter(e=>e.type===t.CONV_C2C);if(0!==e.length){let i=0;e.forEach(e=>{var s=e.conversationID.replace(t.CONV_C2C,\"\");if(n.isMyFriend(s)){const t=n.getFriendRemark(s);e.remark!==t&&(e.remark=t,i+=1)}}),Ce.l(`${this._n}.checkAndPatchRemark. c2cConvCount:${e.length} patchedCount:`+i),0{e.type!==t.CONV_SYSTEM&&(\"\"!==e.messageRemindType&&e.messageRemindType!==t.MSG_REMIND_ACPT_AND_NOTE||(s+=e.unreadCount))}),s}onTotalUnreadCountUpdate(){var t=this.getTotalUnreadCount();this._convTotalUnreadCount!==t&&(Ce.l(`${this._n}.onTotalUnreadCountUpdate from ${this._convTotalUnreadCount} to `+t),this._convTotalUnreadCount=t,this.emitOEvt(e.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED))}_isConvNeedShow(e){e=this.getLocalConversation(e);if($e(e))return!0;var s=e.type===t.CONV_TOPIC,i=e.type===t.CONV_GROUP&&e.groupProfile.type===t.GRP_ROOM,e=e.type===t.CONV_GROUP&&e.groupProfile.type===t.GRP_LIVE;return!(s||i||e)}setAllRcvMsgOpt(e){return this._msgRemindHandler.setAllRcvMsgOpt(e)}getAllRcvMsgOpt(){return this._msgRemindHandler.getAllRcvMsgOpt()}onAllRcvMsgOptNotify(e){this._msgRemindHandler.onAllRcvMsgOptNotify(e)}clearUnreadCount(e){const t=this.getLocalConversation(e);t&&0{this._deleteLocalTopic(s,e)}),this.emitOEvt(e.TOPIC_DELETED,t)}onTopicProfileUpdated(t){const{groupID:s,topicID:i}=t,n=this.getLocalTopic(s,i);n&&(n.updateTopic(t),this.emitOEvt(e.TOPIC_UPDATED,{groupID:s,topic:n}))}onTopicLatestMsg(e){const{topicLatestMessage:s,excludedUnreadSequenceList:i}=e||{};if(!Oe(s)){const{topicID:e}=s[\"groupProfile\"],n=(s.conversationType=t.CONV_GROUP,s.to=e,new xi(s));n.setElement(s.elements),this.updateUnreadCountAndLastMsg(e,n,i)}}onMessageRemindTypeUpdated(t){const{groupID:s,topicID:i,messageRemindType:n}=t,o=this.getLocalTopic(s,i);if(o){const t=o.updateSelfInfo({messageRemindType:n});t&&this.emitOEvt(e.TOPIC_UPDATED,{groupID:s,topic:o}),Ce.l(this._n+`.onMessageRemindTypeUpdated topicID:${i} messageRemindType:${n} isUpdated:`+t)}}onAtInfoUpdated(t){const{topicID:s,groupAtInfoList:i}=t,n=Tt(s),o=this.getLocalTopic(n,s);o&&!$e(i)&&(o.updateGroupAtInfoList(i),this.emitOEvt(e.TOPIC_UPDATED,{groupID:n,topic:o}))}onUnreadCountUpdatedFromConv(t,s=0){const i=Tt(t),n=this.getLocalTopic(i,t);n&&n.unreadCount!==s&&(n.updateUnreadCount(s),0===s&&n.updateSelfInfo({readedSequence:n.lastMessage.lastSequence}),this.emitOEvt(e.TOPIC_UPDATED,{groupID:i,topic:n}))}onMessageSent(t){const{groupID:s,topicID:i,lastMessage:n}=t,o=this.getLocalTopic(s,i);if(o){const{sequence:t=0}=n,i=t+1;i>o.nextMessageSeq&&(o.updateNextMessageSeq(i),o.updateLastMessage(n),o.updateSelfInfo({readedSequence:t}),o.updateUnreadCount(0),this.emitOEvt(e.TOPIC_UPDATED,{groupID:s,topic:o}))}}onMessageModified(t){var{to:s,time:i,sequence:n,elements:o,cloudCustomData:r,messageVersion:a}=t,c=Tt(s),l=this.getLocalTopic(c,s);if(l){const d=l.lastMessage;Ce.d(this._n+`.onMessageModified topicID:${s} lastMessage:`,JSON.stringify(d),\"options:\",JSON.stringify(t)),d&&(null===d.payload||d.lastTime===i&&d.lastSequence===n&&d.version!==a)&&(d.type=o[0].type,d.payload=o[0].content,d.messageForShow=yt(d.type,d.payload,this.isIntl()),d.cloudCustomData=r,d.version=a,d.lastSequence=n,d.lastTime=i,this.emitOEvt(e.TOPIC_UPDATED,{groupID:c,topic:l}))}}onMessageRevoked(t){if(0!==t.length){let s=null,i=null,n=!1;t.forEach(e=>{const t=e.to;if(i=Tt(t),s=this.getLocalTopic(i,t)){s.reduceUnreadCount()&&(n=!0),s.isLastMessageRevoked(e)&&(s.setLastMessageRevoked(!0),s.setLastMessageRevoker(e.revoker),n=!0);const t=s.selfInfo.excludedUnreadSequenceList||[];t.push(e.sequence),s.updateSelfInfo({excludedUnreadSequenceList:t})}}),n&&this.emitOEvt(e.TOPIC_UPDATED,{groupID:i,topic:s})}}isLastMessageRevoked(e){const{topicID:t,sequence:s}=e,i=Tt(t),n=this.getLocalTopic(i,t);let o=!1;return o=n?n.isLastMessageRevoked({sequence:s}):o}updateUnreadCountAndLastMsg(i,n,o){const r=Tt(i),a=this.getLocalTopic(r,i);if(a){let s=a.selfInfo.excludedUnreadSequenceList||[];if($e(o)||(s=o),n._isExcludedFromUnreadCount&&s.push(n.sequence),a.updateSelfInfo({excludedUnreadSequenceList:s}),Ce.l(`${this._n}.updateUnreadCountAndLastMsg seq:${n.sequence} lastSeq:`+a.lastMessage.lastSequence),n.sequence>a.lastMessage.lastSequence){a.updateLastMessage(n);const o=n.sequence+1;a.updateNextMessageSeq(o);n=this._computeUnreadCount(a);a.updateUnreadCount(n);const c=this.get(Ds).getLocalConversation(\"\"+t.CONV_GROUP+i);c&&c.updateUnreadCount({nextUnreadCount:n,isFromGetConversations:!0}),this.emitOEvt(e.TOPIC_UPDATED,{groupID:r,topic:a})}}}getJoinedCommunityList(){return this.get(vs).syncCommunityWithTopic()}createTopicInCommunity(t){const s=this._n+\".createTopicInCommunity\",e=t[\"topicID\"];if(!$e(e)&&!rt(e))return ni({code:ei.ILLEGAL_TOPIC_ID});if(t.topicName&&!1===this._filterProfanity(\"topicName\",t))return ni({code:ei.PROFANITY_FOUND});if(t.introduction&&!1===this._filterProfanity(\"introduction\",t))return ni({code:ei.PROFANITY_FOUND});if(t.notification&&!1===this._filterProfanity(\"notification\",t))return ni({code:ei.PROFANITY_FOUND});const i=new Ti(\"createTopicInCommunity\");return this.req({P:ri.CREATE_TOPIC,data:{...t}}).then(e=>{e=e.data.topicID;return i.setMessage(\"topicID:\"+e).end(),Ce.l(s+\" ok. topicID:\"+e),this._updateTopicMap([{...t,topicID:e}]),Zs({topicID:e})}).catch(e=>(i.setError(e).end(),Ce.e(s+\" failed. error:\",e),ni(e)))}deleteTopicFromCommunity(e){const s=this._n+\".deleteTopicFromCommunity\",{groupID:o,topicIDList:t=[]}=e,r=new Ti(\"deleteTopicFromCommunity\");return r.setMessage(`groupID:${o} topicIDList:`+t),this.req({P:ri.DEL_TOPIC,data:{groupID:o,topicIDList:t}}).then(e=>{const{resultList:t=[]}=e.data,i=[],n=[];t.forEach(e=>{var{topicID:e,errorCode:t,errorInfo:s}=e;0===t?i.push({topicID:e}):n.push({topicID:e,code:t,message:s})});e=`success count:${i.length}, fail count:`+n.length;return r.setMoreMessage(e).end(),Ce.l(s+\" ok. \"+e),i.forEach(e=>{this._deleteLocalTopic(o,e.topicID)}),Zs({successTopicList:i,failureTopicList:n})}).catch(e=>(r.setError(e).end(),Ce.e(s+\" failed. error:\",e),ni(e)))}updateTopicProfile(e){const t=this._n+\".updateTopicProfile\";if(Ce.l(t+\" options:\",e),e.topicName&&!1===this._filterProfanity(\"topicName\",e))return ni({code:ei.PROFANITY_FOUND});if(e.introduction&&!1===this._filterProfanity(\"introduction\",e))return ni({code:ei.PROFANITY_FOUND});if(e.notification&&!1===this._filterProfanity(\"notification\",e))return ni({code:ei.PROFANITY_FOUND});const s=new Ti(\"updateTopicProfile\");return s.setMessage(`groupID:${e.groupID} topicID:`+e.topicID),$e(e.muteAllMembers)||(e.muteAllMembers=!0===e.muteAllMembers?\"On\":\"Off\"),this.req({P:ri.UPDATE_TOPIC_PROFILE,data:{...e}}).then(()=>(s.end(),Ce.l(t+\" ok\"),this._updateTopicMap([e]),Zs({topic:this.getLocalTopic(e.groupID,e.topicID)}))).catch(e=>(s.setError(e).end(),Ce.e(t+\" failed. error:\",e),ni(e)))}getTopicList(e){const i=this._n+\".getTopicList\",{groupID:n,topicIDList:t=[]}=e,c=0===t.length,l=new Ti(\"getTopicList\");if(l.setMessage(\"groupID:\"+n),this._getTopicTimeMap.has(n)){const{isGetAll:e,time:s}=this._getTopicTimeMap.get(n);if((e||!e&&!c)&&Date.now()-s<1e3*this.TOPIC_CACHE_TIME){const e=this._getLocalTopicList(n,t);if(c||e.length===t.length)return l.setMoreMessage(\"from cache, topic count:\"+e.length).end(),Ce.l(i+` groupID:${n} from cache, topic count:`+e.length),ii({successTopicList:e,failureTopicList:[]})}}return this.req({P:ri.GET_TOPIC_LIST,data:{groupID:n,topicIDList:t}}).then(e=>{const{topicInfoList:t=[]}=e.data,o=[],r=[],a=[];t.forEach(e=>{var{topic:e,selfInfo:t,errorCode:s,errorInfo:i}=e,n=e[\"topicID\"];0===s?(o.push({...e,selfInfo:t}),r.push(n)):a.push({topicID:n,code:s,message:i})}),this._updateTopicMap(o),this._handleTopicAtInfo(o);e=`success count:${r.length}, fail count:`+a.length;l.setMoreMessage(e).end(),Ce.l(i+` groupID:${n} from remote, `+e);let s=[];return Oe(r)||(this._getTopicTimeMap.set(n,{time:Date.now(),isGetAll:c}),s=this._getLocalTopicList(n,r)),Zs({successTopicList:s,failureTopicList:a})}).catch(e=>(l.setError(e).end(),Ce.e(i+\" failed. error:\",e),ni(e)))}hasLocalTopic(e,t){return!!this._topicMap.has(e)&&this._topicMap.get(e).has(t)}getLocalTopic(e,t){let s=null;return s=this._topicMap.has(e)?this._topicMap.get(e).get(t):s}_getLocalTopicList(e,t=[]){const s=this._topicMap.get(e);let i=[];return s&&(i=[...s.values()]),0===t.length?i:i.filter(e=>t.includes(e.topicID))}_deleteLocalTopic(e,t){this._topicMap.has(e)&&this._topicMap.get(e).has(t)&&(this._topicMap.get(e).delete(t),Ce.l(this._n+`._deleteLocalTopic groupID:${e} topicID:`+t))}_updateTopicMap(e){const o=[];e.forEach(e=>{var{groupID:s,topicID:i}=e;let n=null;this._topicMap.has(s)||this._topicMap.set(s,new Map),this._topicMap.get(s).has(i)?(n=this._topicMap.get(s).get(i)).updateTopic(e):(this._getTopicLastMessage(e),n=new gn(e,this.isIntl()),this._topicMap.get(s).set(i,n));e=this._computeUnreadCount(n);n.updateUnreadCount(e),o.push({conversationID:\"\"+t.CONV_GROUP+i,type:t.CONV_TOPIC,unreadCount:e})}),0{this._getTopicTimeMap.set(e,0)}):this._getTopicTimeMap.set(e,0)}getTopicListOnReconnected(){const e=[...this._topicMap.keys()],i=[],n=this.get(Ds);e.forEach(e=>{const s=[],t=this._getLocalTopicList(e);n.deleteTopicRoamingInfo(e),t.forEach(e=>{var{lastMessage:{lastTime:t=0}}=e;Date.now()-1e3*t<1e3*this.TOPIC_LAST_ACTIVE_TIME&&s.push(e.topicID)}),0{i.end(),this._relayGetTopicList(t)}).catch(e=>{i.setError(e).end(),this._relayGetTopicList(t)})}}_handleTopicAtInfo(e){0!==e.length&&e.forEach(e=>{const{groupID:t,topicID:s,groupAtInfoList:i}=e,n=[];$e(i)||(i.forEach(e=>{n.push({...e,groupID:t,topicID:s})}),this.get(Ds).onNewGroupAtTips({dataList:n}))})}_getTopicLastMessage(e){var t;$e(e.lastMsg)||(t={time:e.lastMsg.time,sequence:e.lastMsg.sequence,from:e.lastMsg.from,payload:e.lastMsg.elements[0]?e.lastMsg.elements[0].content:null,type:e.lastMsg.elements[0]?e.lastMsg.elements[0].type:\"\",nick:e.lastMsg.nick,avatar:e.lastMsg.avatar,version:e.lastMsg.messageVersion,cloudCustomData:e.lastMsg.cloudCustomData,isRevoked:2===e.lastMsg.isPlaceMessage,revoker:Oe(e.lastMsg.revokerInfo)?null:e.lastMsg.revokerInfo.revoker},e.lastMessage=t)}deleteTopicListInCommunity(s){const e=this._getLocalTopicList(s),i=this.get(Ds);e.forEach(e=>{e=e.topicID;this._deleteLocalTopic(s,e),this._getTopicTimeMap.delete(s),i.deleteLocalConv(\"\"+t.CONV_GROUP+e)})}_computeUnreadCount(s){const{excludedUnreadSequenceList:e,readedSequence:i}=s.selfInfo;let n=s.nextMessageSeq-s.selfInfo.readedSequence-1;if(Fe(e)){let t=0;e.forEach(e=>{e>i&&e<=s.nextMessageSeq-1&&(t+=1)}),1<=t&&(n-=t)}return n<0?0:n}_filterProfanity(e,t){const s=this.get(Vs);if(!s)return!0;var{isAllowedToSend:i,modifiedText:n}=s.filterText(t[e],E);return!0===i&&(t[e]=n,!0)}getMessageExtensions(e,t){Ce.l(this._n+\".getMessageExtensions startSequence:\"+t);var s=Tt(e.to);return this.req({P:ri.GET_GRP_MSG_EXT,data:{groupID:s,topicID:e.to,messageSequence:e.sequence,startSequence:t}})}modifyMsgExts(e,t,s=1){Ce.l(this._n+\".modifyMsgExts operateType:\"+s);var i=Tt(e.to);return this.req({P:ri.MODIFY_GRP_MSG_EXT,data:{groupID:i,topicID:e.to,messageSequence:e.sequence,extensionList:t,operateType:s}})}reset(){Ce.l(this._n+\".reset\"),this._topicMap.clear(),this._getTopicTimeMap.clear(),this.TOPIC_CACHE_TIME=300,this.TOPIC_LAST_ACTIVE_TIME=3600}}class fn{constructor(e){this._userM=e,this._n=\"ProfileHandler\",this.TAG=\"profile\",this.accountProfileMap=new Map,this.expirationTime=864e5}setExpirationTime(e){this.expirationTime=e}getUserProfile(e){const t=this._n+\".getUserProfile\",s=e.userIDList,i=(e.fromAccount=this._userM.getMyAccount(),100{a.push({toAccount:e,standardSequence:0,customSequence:0})}),e.userItem=a,new Ti(\"getUserProfile\"));return c.setMessage(5{c.end(),Ce.i(t+\" ok\");e=this._handleResponse(e).concat(n);return Zs(r?e[0]:e)}).catch(e=>(c.setError(e).end(),Ce.e(t+\" failed. error:\",e),ni(e)))}getMyProfile(){var e,t=this._userM.getMyAccount(),s=this._n+\".getMyProfile\";return Ce.l(s+\" myAccount:\"+t),this._fill(),this._contains(t)?(e=this._getProfileFromMap(t),Ce.d(s+\" from cache, myProfile:\"+JSON.stringify(e)),ii(e)):this.getUserProfile({fromAccount:t,userIDList:[t],bFromGetMyProfile:!0})}_handleResponse(s){var i,n=s.data[\"userProfileItem\"];if(!Fe(n))return[];const o=[],r=Date.now();for(let e=0,t=n.length;e{s.push({tag:e.key,value:e.value})}):s.push({tag:ye[e.toUpperCase()],value:n[e]}));if(0===s.length){const e=new Qs({code:ei.UPDATE_PROFILE_NO_KEY});return r.setError(e).end(),Ce.e(o+\" failed. error:\",e),ni(e)}const a=this._userM.getMyAccount();return this._userM.req({P:ri.UPDATE_MY_PROFILE,data:{fromAccount:a,profileItem:s}}).then(t=>{r.end(),Ce.i(o+\" ok\");var{isProfileUpdated:s,latestProfile:i}=this._update(a,n);return!0===s&&this._userM.emitOEvt(e.PROFILE_UPDATED,[i]),ii(i)}).catch(e=>(r.setError(e).end(),Ce.e(o+\" failed. error:\",e),ni(e)))}onProfileModified(t){var s,i=t.dataList;if(!Oe(i)){const n=i.length;Ce.d(`${this._n}.onProfileModified count:${n} dataList:`,t.dataList);const o=[];for(let e=0;e{n.push(this.getUserProfile({userIDList:e}))}),Promise.all(n).then(e=>(e.forEach(e=>{e=e.data.map(({userID:e,nick:t,avatar:s})=>({userID:e,nick:t,avatar:s}));s.push(...e)}),s))}_createUserIDListGroup(e){const t=[];let s=0;for(;s{var{blackListItem:t,startIndex:s}=t.data,i=Oe(t)?0:t.length;o.setMessage(\"count:\"+i).end(),Ce.i(n+\" ok\"),this._startIndex=s,this._handleResponse(t,!0),this._userM.emitOEvt(e.BLACKLIST_UPDATED,[...this._blacklistMap.keys()]),0!==this._startIndex&&this.getBlacklist()}).catch(e=>(o.setError(e).end(),Ce.e(n+\" failed. error:\",e),ni(e)))}addBlacklist(t){const s=new Ti(\"addToBlacklist\"),i=this._n+\".addBlacklist\",n=this._userM.getMyAccount();if(1!==t.userIDList.length||t.userIDList[0]!==n)return t.userIDList.includes(n)&&(t.userIDList=t.userIDList.filter(e=>e!==n)),t.fromAccount=this._userM.getMyAccount(),t.toAccount=t.userIDList,this._userM.req({P:ri.ADD_TO_BL,data:t}).then(e=>(s.setMessage(5(s.setError(e).end(),Ce.e(i+\" failed. error:\",e),ni(e)));{const t=ei.CANNOT_ADD_SELF_TO_BLACKLIST,n=this._userM.getErrMsg(t);s.setCode(t).setMessage(n).end();var e=new Qs({code:t});return Ce.e(i+\" failed. error:\",e),ni(e)}}_handleResponse(o,r){if(!Oe(o)){let s,i,n;for(let e=0,t=o.length;e(i.setMessage(5(i.setError(e).end(),Ce.e(s+\" failed. error:\",e),ni(e)))}onAccountDeleted(s){for(let e=0,t=s.length;e>(-2*s&6))))t=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(t);try{return decodeURIComponent(escape(o))}catch(e){return\"\"}};class Tn{constructor(e){this._userM=e,this._n=\"UserStatusHandler\",this.MAX_QUERY_USER_COUNT=500,this.MAX_SUBSCRIBE_USER_COUNT=100,this.MAX_UNSUBSCRIBE_USER_COUNT=100,this._userM.getIEmitInst().on(Yi.CLOUD_CONFIG,this._onCloudConfig,this)}_onCloudConfig(){var e=this._userM.getCloudConfig(\"status_query_count\"),t=this._userM.getCloudConfig(\"status_sub_count\"),s=this._userM.getCloudConfig(\"status_unsub_count\");Ce.l(this._n+`._onCloudConfig statusQueryCount:${e} statusSubscribeCount:${t} statusUnsubscribeCount:`+s),$e(e)||(this.MAX_QUERY_USER_COUNT=parseInt(e,10)),$e(e)||(this.MAX_SUBSCRIBE_USER_COUNT=parseInt(t,10)),$e(e)||(this.MAX_UNSUBSCRIBE_USER_COUNT=parseInt(s,10))}onUserStatusUpdated(t){const s=t[\"dataList\"],i=this._userM.getMyUserID(),n=this._userM.get(Rs),o=s.map(e=>{var{to:e,statusType:t,customStatus:s}=e,s=Cn(s);return e===i&&n.setCustomStatus(s),{userID:e,statusType:t,customStatus:s}});Ce.l(this._n+\".onUserStatusUpdated list:\"+JSON.stringify(o)),this._userM.emitOEvt(e.USER_STATUS_UPDATED,o)}setSelfStatus(e){const t=this._n+\".setSelfStatus\";if(!1===this._userM.filterProfanity(\"customStatus\",e))return ni({code:ei.PROFANITY_FOUND});const s=new Ti(\"setSelfStatus\"),i=e[\"customStatus\"];return this._userM.req({P:ri.SET_SELF_STATUS,data:{customStatus:i}}).then(e=>(s.setMessage(\"customStatus:\"+i).end(),Ce.l(t+\" ok. customStatus:\"+i),this._userM.get(Rs).setCustomStatus(i),Zs({userID:this._userM.getMyUserID(),statusType:1,customStatus:i}))).catch(e=>(s.setError(e).end(),Ce.e(t+\" failed. error:\",e),ni(e)))}getUserStatus(e){const o=this._n+\".getUserStatus\",{userIDList:r=[]}=e,t=this._userM.getMyUserID();let s=[...r],a=void 0;var i=s.indexOf(t);if(-1this.MAX_QUERY_USER_COUNT&&(Ce.w(o+\" \"+St(this.MAX_QUERY_USER_COUNT)),s=r.slice(0,this.MAX_QUERY_USER_COUNT));const c=new Ti(\"getUserStatus\");return this._userM.req({P:ri.GET_USER_STATUS,data:{userIDList:s}}).then(e=>{const{successUserList:t=[],failureUserList:s=[]}=e.data,i=t.map(e=>{var{userID:e,statusType:t,customStatus:s}=e;return{userID:e,statusType:t,customStatus:Cn(s)}}),n=s.map(e=>{var{userID:e,invalidUserID:t,errorCode:s,errorInfo:i}=e;return{userID:Oe(t)?e:t,code:s,message:i}});$e(a)||i.unshift(a);e=`userID count:${r.length}, success count:${i.length}, fail count:`+n.length;return c.setMessage(e).end(),Ce.l(o+` ok. ${e}.`),Zs({successUserList:i,failureUserList:n})}).catch(e=>(c.setMessage(\"userID count:\"+r.length).setError(e).end(),Ce.e(o+\" failed. error:\",e),ni(e)))}subscribeUserStatus(e){var t=\"subscribeUserStatus\";if(!this._userM.canIUse(M.USER_STATUS))return this._userM.noUse(t);const i=this._n+\".\"+t,{userIDList:s=[]}=e;let n=[...s];n.length>this.MAX_SUBSCRIBE_USER_COUNT&&(Ce.w(i+\" \"+St(this.MAX_SUBSCRIBE_USER_COUNT)),n=s.slice(0,this.MAX_SUBSCRIBE_USER_COUNT));const o=new Ti(t),r=\"userID count:\"+s.length;return Ce.l(i+\" \"+r),this._userM.req({P:ri.SUB_USER_STATUS,data:{userIDList:n}}).then(e=>{const{failureUserList:t=[]}=e.data,s=t.map(e=>{var{userID:e,invalidUserID:t,errorCode:s,errorInfo:i}=e;return{userID:Oe(t)?e:t,code:s,message:i}});return o.setMessage(r+\" fail count:\"+s.length).end(),Ce.l(i+` ok. fail count:${s.length}.`),Zs({failureUserList:s})}).catch(e=>(o.setMessage(r).setError(e).end(),Ce.e(i+\" failed. error:\",e),ni(e)))}unsubscribeUserStatus(e){var t=\"unsubscribeUserStatus\";if(!this._userM.canIUse(M.USER_STATUS))return this._userM.noUse(t);const i=this._n+\".\"+t,{userIDList:s=[]}=e||{};let n=[...s];s.length>this.MAX_UNSUBSCRIBE_USER_COUNT&&(Ce.w(i+\" \"+St(this.MAX_UNSUBSCRIBE_USER_COUNT)),n=s.slice(0,this.MAX_UNSUBSCRIBE_USER_COUNT));const o=new Ti(t),r=\"userID count:\"+s.length,a=(Ce.l(i+\" \"+r),{userIDList:n});return 0===n.length&&(a.userIDList=void 0,a.unsubscribeAll=1),this._userM.req({P:ri.UNSUB_USER_STATUS,data:a}).then(e=>{const{failureUserList:t=[]}=e.data,s=t.map(e=>{var{userID:e,invalidUserID:t,errorCode:s,errorInfo:i}=e;return{userID:Oe(t)?e:t,code:s,message:i}});return o.setMessage(r+\" fail count:\"+s.length).end(),Ce.l(i+` ok. fail count:${s.length}.`),Zs({failureUserList:s})}).catch(e=>(o.setMessage(r).setError(e).end(),Ce.e(i+\" failed. error:\",e),ni(e)))}reset(){this.MAX_QUERY_USER_COUNT=500,this.MAX_SUBSCRIBE_USER_COUNT=100,this.MAX_UNSUBSCRIBE_USER_COUNT=100}}class yn extends oi{constructor(e){super(e),this._n=\"UserModule\",this._profileHandler=new fn(this),this._blacklistHandler=new In(this),this._userStatusHandler=new Tn(this),this.getIEmitInst().on(Yi.A2KEY_AND_TINYID_UPDATED,this.onContextUpdated,this)}onContextUpdated(e){this._profileHandler.getMyProfile(),this._blacklistHandler.getBlacklist()}mockOnNickAvatarModified(e,t){Ce.l(this._n+`._mockOnNickAvatarModified nick:${e} avatar:`+t),this.onProfileModified({dataList:[{pushType:1,userID:this.getMyUserID(),profileList:[{tag:ye.NICK,value:e},{tag:ye.AVATAR,value:t}]}]})}onProfileModified(e){this._profileHandler.onProfileModified(e)}onRelationChainModified(e){const t=e[\"dataList\"];if(!Oe(t)){const s=[],i=(t.forEach(e=>{e.blackListDelAccount&&s.push(...e.blackListDelAccount)}),0{e.blackListAddAccount&&i.push(...e.blackListAddAccount)}),0{this._lastLoginTs=0;var t=Date.now();let s=null;var{a2Key:i,tinyID:n,helloInterval:d,instanceID:o,timeStamp:_,customStatus:r=\"\",purchaseBits:u,authKey:h=\"\"}=e.data,a=1e3*_,c=t-I.getStartTs(),c=a+parseInt(c/2)-t,t=I.getStartTs()+c;I.start(t);{t=a,a=c,he=a;const l=new Date;l.setTime(t),Ce.i(`baseTime from server:${l} offset:`+he)}if(!n)throw s=new Qs({code:ei.NO_TINYID}),I.setError(s).end(),s;if(!i)throw s=new Qs({code:ei.NO_A2KEY}),I.setError(s).end(),s;a=this.get(ks).getSocketID(),t=Cn(r),r=`socketID:${a} scene:${M} helloInterval:${d} instanceID:${o} timeStamp:${_} offset:${c} customStatus:${t} isWebUniapp:`+this._isWebUniapp;Ce.l(C+\" ok. \"+r);let p=\"\",g=\"\";if(S&&xe($.getAccountInfoSync)){const f=$.getAccountInfoSync().miniProgram;f&&(p=f.appId,g=f.envVersion)}I.setMoreMessage(r+` href:${F?window.location.href:\"\"} mpAppId:${p} envVersion:${g} authKey:`+h).end(),f.setA2Key(i),f.setTinyID(n),f.setStatusInstanceID(o),f.setCustomStatus(t),f.setDowloadFileAuthKey(h),u&&this.get(qs).onPushedConfig({errorCode:0,expiredTime:0,purchaseBits:u}),this.get(Gs).updateProtocolConfig(),this.emitIEvt(Yi.A2KEY_AND_TINYID_UPDATED),this._helloInterval=d,this.triggerReady();const m=this.getPushModule();return m&&(uni.setStorageSync(\"timUniAppInstanceID\",o),m.init()),this._fetchCloudControlConfig(),this.get(Vs).init(),e}).catch(e=>(I.setError(e).end(!0),this._m.setNotReadyReason(ei.LOGIN_FAILED),Ce.e(C+\" failed. error:\",e),this._lastLoginTs=0,this._m.onLoginFailed(),ni(e)))}logout(e=0){const t=this._n+\".logout\",s=this.isLoggedIn();return Ce.i(t+` type:${e} isLoggedIn:${s} isWebUniapp:`+this._isWebUniapp),s?(new Ti(\"logout\").setMessage(\"identifier:\"+this.getMyUserID()).end(!0),0===e&&this._m.setNotReadyReason(ei.LOGGED_OUT),this.req({P:ri.LOGOUT,data:{type:e,isWebUniapp:this._isWebUniapp}}).then(()=>(this.resetReady(),ii({}))).catch(e=>(Ce.e(t+\" error:\",e),this.resetReady(),ii({})))):ni({code:ei.USER_NOT_LOGGED_IN})}getLoginUser(){return this.isLoggedIn()?this.getMyUserID():\"\"}_fetchCloudControlConfig(){this.get(ws).fetchConfig()}_getStatusInstanceID(){return uni.getStorageSync(\"timUniAppInstanceID\")||0}_hello(){this._lastWsHelloTs=Date.now(),this.req({P:ri.HELLO,data:{isWebUniapp:this._isWebUniapp}}).catch(e=>{Ce.w(this._n+\"._hello error:\",e)})}getLastWsHelloTs(){return this._lastWsHelloTs}_checkLoginInfo(e){let t=0;return Oe(this.get(Rs).getSDKAppID())?t=ei.NO_SDKAPPID:Oe(e.userID)?t=ei.NO_IDENTIFIER:Oe(e.userSig)&&(t=ei.NO_USERSIG),{code:t}}_isReactUIKit(){return F&&void 0!==window.tencent_cloud_im_csig_react_uikit_23F_xa}onMultipleAccountKickedOut(s){new Ti(\"kickedOut\").setMessage(`type:${t.KICKED_OUT_MULT_ACCOUNT} newInstanceInfo:`+JSON.stringify(s)).end(!0),Ce.w(`${this._n}.onMultipleAccountKickedOut userID:${this.getMyUserID()} newInstanceInfo:`,s),this.logout(1).then(()=>{this.emitOEvt(e.KICKED_OUT,{type:t.KICKED_OUT_MULT_ACCOUNT}),this._m.setNotReadyReason(ei.KICKED_OUT_MULT_ACCOUNT),this._m.reset()})}onMultipleDeviceKickedOut(s){new Ti(\"kickedOut\").setMessage(`type:${t.KICKED_OUT_MULT_DEVICE} newInstanceInfo:`+JSON.stringify(s)).end(!0),Ce.w(`${this._n}.onMultipleDeviceKickedOut userID:${this.getMyUserID()} newInstanceInfo:`,s),this.logout(1).then(()=>{this.emitOEvt(e.KICKED_OUT,{type:t.KICKED_OUT_MULT_DEVICE}),this._m.setNotReadyReason(ei.KICKED_OUT_MULT_DEVICE),this._m.reset()})}onUserSigExpired(){new Ti(\"kickedOut\").setMessage(t.KICKED_OUT_USERSIG_EXPIRED).end(!0),Ce.w(this._n+\".onUserSigExpired userID:\"+this.getMyUserID()),0!==this.get(Rs).getStatusInstanceID()&&(this.emitOEvt(e.KICKED_OUT,{type:t.KICKED_OUT_USERSIG_EXPIRED}),this._m.setNotReadyReason(ei.KICKED_OUT_USERSIG_EXPIRED),this._m.reset())}onRestApiKickedOut(s){new Ti(\"kickedOut\").setMessage(`type:${t.KICKED_OUT_REST_API} newInstanceInfo:`+JSON.stringify(s)).end(!0),Ce.w(`${this._n}.onRestApiKickedOut userID:${this.getMyUserID()} newInstanceInfo:`,s),0!==this.get(Rs).getStatusInstanceID()&&(this.emitOEvt(e.KICKED_OUT,{type:t.KICKED_OUT_REST_API}),this._m.setNotReadyReason(ei.KICKED_OUT_REST_API),this._m.reset(),this.get(ks).onRestApiKickedOut())}reset(){Ce.l(this._n+\".reset\"),this.resetReady(),this._helloInterval=120,this._lastLoginTs=0,this._lastWsHelloTs=0,this._isWebUniapp=0}}function Dn(){return null}class Rn{constructor(e){this._m=e,this._n=\"StorageModule\",this._storageQueue=new Map,this._errorTolerantHandle()}_errorTolerantHandle(){k||\"undefined\"!=typeof window&&this._canIUseCookies()||(this.getItem=Dn,this.setItem=Dn,this.removeItem=Dn,this.clear=Dn)}onCheckTimer(e){e%20==0&&0!==this._storageQueue.size&&this._doFlush()}_doFlush(){try{for(var[e,t]of this._storageQueue)this._setStorageSync(this._getKey(e),t);this._storageQueue.clear()}catch(e){Ce.w(this._n+\"._doFlush error:\",e)}}_getPrefix(){const e=this._m.get(Rs);return`TIM_${e.getSDKAppID()}_${e.getUserID()}_`}_getKey(e){return\"\"+this._getPrefix()+e}getItem(e,t=!0){try{var s=t?this._getKey(e):e;return this.getStorageSync(s)}catch(e){return Ce.w(this._n+\".getItem error:\",e),{}}}setItem(e,t,s=!1,i=!0){if(s){const s=i?this._getKey(e):e;this._setStorageSync(s,t)}else this._storageQueue.set(e,t)}clear(){try{k?$.clearStorageSync():this._canIUseCookies()&&localStorage.clear()}catch(e){Ce.w(this._n+\".clear error:\",e)}}removeItem(e,t=!0){try{var s=t?this._getKey(e):e;this._removeStorageSync(s)}catch(e){Ce.w(this._n+\".removeItem error:\",e)}}getSize(e,t=\"b\"){try{const s={size:0,limitSize:5242880,unit:t};if(Object.defineProperty(s,\"leftSize\",{enumerable:!0,get:()=>s.limitSize-s.size}),k&&(s.limitSize=1024*$.getStorageInfoSync().limitSize),e)s.size=JSON.stringify(this.getItem(e)).length+this._getKey(e).length;else if(k){const e=$.getStorageInfoSync()[\"keys\"];e.forEach(e=>{s.size+=JSON.stringify(this.getStorageSync(e)).length+this._getKey(e).length})}else if(this._canIUseCookies())for(const e in localStorage)localStorage.hasOwnProperty(e)&&(s.size+=localStorage.getItem(e).length+e.length);return this._convertUnit(s)}catch(e){Ce.w(this._n+\" error:\",e)}}_convertUnit(e){const t={},s=e[\"unit\"];t.unit=s;for(const i in e)\"number\"==typeof e[i]&&(\"kb\"===s.toLowerCase()?t[i]=Math.round(e[i]/1024):\"mb\"===s.toLowerCase()?t[i]=Math.round(e[i]/1024/1024):t[i]=e[i]);return t}_setStorageSync(e,t){k?O?my.setStorageSync({key:e,data:t}):$.setStorageSync(e,t):this._canIUseCookies()&&localStorage.setItem(e,JSON.stringify(t))}getStorageSync(e){return k?O?my.getStorageSync({key:e}).data:$.getStorageSync(e):this._canIUseCookies()?JSON.parse(localStorage.getItem(e)):{}}_removeStorageSync(e){k?O?my.removeStorageSync({key:e}):$.removeStorageSync(e):this._canIUseCookies()&&localStorage.removeItem(e)}_canIUseCookies(){return\"undefined\"!=typeof window&&navigator&&navigator.cookieEnabled&&localStorage}reset(){Ce.l(this._n+\".reset\"),this._doFlush()}}class Ln{constructor(e){this._n=\"SSOLogBody\",this._report=[]}pushIn(e){Ce.d(this._n+\".pushIn\",this._report.length,e),this._report.push(e)}backfill(e){Fe(e)&&0!==e.length&&(Ce.d(this._n+\".backfill\",this._report.length,e.length),this._report.unshift(...e))}getLogsNumInMemory(){return this._report.length}isEmpty(){return 0===this._report.length}_reset(){this._report.length=0,this._report=[]}getLogsInMemory(){var e=this._report.slice();return this._reset(),e}}const An=function(e){const t=e.get(Rs);return{SDKType:10,SDKAppID:t.getSDKAppID(),SDKVersion:t.getVersion(),tinyID:Number(t.getTinyID()),userID:t.getUserID(),platform:e.getPlatform(),instanceID:t.getInstanceID(),traceID:pe()}};class On extends oi{constructor(e){super(e),this._n=\"EventStatModule\",this.TAG=\"im-ssolog-event\",this._reportBody=new Ln,this.MIN_THRESHOLD=20,this.MAX_THRESHOLD=100,this.WAITING_TIME=6e4,this.REPORT_LEVEL=[4,5,6],this.REPORT_SDKAPPID_BLACKLIST=[],this.REPORT_TINYID_WHITELIST=[],this._lastReportTime=Date.now();const t=this.getIEmitInst();t.on(Yi.A2KEY_AND_TINYID_UPDATED,this._onLoginSuccess,this),t.on(Yi.CLOUD_CONFIG,this._onCloudConfig,this)}reportAtOnce(){this._report()}_onLoginSuccess(){const e=this.get(Ls),t=e.getItem(this.TAG,!1);!Oe(t)&&xe(t.forEach)&&(Ce.l(this._n+\"._onLoginSuccess. logs count:\"+t.length),t.forEach(e=>{this._reportBody.pushIn(e)}),e.removeItem(this.TAG,!1))}_onCloudConfig(){const e=this.getCloudConfig(\"evt_rpt_threshold\"),t=this.getCloudConfig(\"evt_rpt_waiting\"),s=this.getCloudConfig(\"evt_rpt_level\"),i=this.getCloudConfig(\"evt_rpt_sdkappid_bl\"),n=this.getCloudConfig(\"evt_rpt_tinyid_wl\");$e(e)||(this.MIN_THRESHOLD=Number(e)),$e(t)||(this.WAITING_TIME=Number(t)),$e(s)||(this.REPORT_LEVEL=s.split(\",\").map(e=>Number(e))),$e(i)||(this.REPORT_SDKAPPID_BLACKLIST=i.split(\",\").map(e=>Number(e))),$e(n)||(this.REPORT_TINYID_WHITELIST=n.split(\",\"))}pushIn(e){e instanceof Ti&&(e.updateTimeStamp(),this._reportBody.pushIn(e),this._reportBody.getLogsNumInMemory()>=this.MIN_THRESHOLD&&this._report())}onCheckTimer(){Date.now()this.REPORT_LEVEL.includes(e.level))}_report(){if(!this._reportBody.isEmpty()){const t=this._reportBody.getLogsInMemory(),s=this._filterLogs(t);var e;0!==s.length?(e={header:An(this),event:s},this.req({P:ri.SSO_STAT,data:{...e}}).then(()=>{this._lastReportTime=Date.now()}).catch(e=>{Ce.w(this._n+\"._report failed. error:\",e),this._lastReportTime=Date.now(),this._reportBody.backfill(t),this._reportBody.getLogsNumInMemory()>this.MAX_THRESHOLD&&this._flushAtOnce()})):this._lastReportTime=Date.now()}}_flushAtOnce(){const t=this.get(Ls),s=t.getItem(this.TAG,!1),i=this._reportBody.getLogsInMemory(),n=this._n+\"._flushAtOnce\";if(Oe(s))Ce.l(n+\" count:\"+i.length),t.setItem(this.TAG,i,!0,!1);else{let e=i.concat(s);e.length>this.MAX_THRESHOLD&&(e=e.slice(0,this.MAX_THRESHOLD)),Ce.l(n+\" count:\"+e.length),t.setItem(this.TAG,e,!0,!1)}}reset(){Ce.l(this._n+\".reset\"),this._lastReportTime=0,this._report(),this.REPORT_SDKAPPID_BLACKLIST=[],this.REPORT_TINYID_WHITELIST=[]}}const Nn=\"none\",Pn=\"online\";class Un{constructor(e){this._m=e,this._networkType=Pn,this._n=\"NetMonitorModule\",this._mpNetworkStatusCallback=null,this._webOnlineCallback=null,this._webOfflineCallback=null,this._removeListener=null,this._m.getIEmitInst().on(Yi.A2KEY_AND_TINYID_UPDATED,this._startRN,this)}_startRN(){if(b){const e=this._m.get(Ps).getPlugin(\"chat-network-monitor\");e&&(this._removeListener=e.addEventListener(e=>{var{isConnected:e=!1,type:t}=e;this._networkType!==t&&this._onNetworkStatusChange({isConnected:e,networkType:t})}))}}start(){const t=this._n+\".start\";k?($.getNetworkType({success:e=>{this._networkType=e.networkType||e.subtype||\"\",e.networkType===Nn?Ce.w(t+\" no network, please check!\"):Ce.i(t+\" networkType:\"+e.networkType)}}),this._mpNetworkStatusCallback=this._onNetworkStatusChange.bind(this),$.onNetworkStatusChange(this._mpNetworkStatusCallback)):F&&(this._networkType=Pn,this._webOnlineCallback=this._onWebOnline.bind(this),this._webOfflineCallback=this._onWebOffline.bind(this),window.addEventListener(\"online\",this._webOnlineCallback),window.addEventListener(\"offline\",this._webOfflineCallback))}_onWebOnline(){this._onNetworkStatusChange({isConnected:!0,networkType:Pn})}_onWebOffline(){this._onNetworkStatusChange({isConnected:!1,networkType:Nn})}_onNetworkStatusChange(e){var{isConnected:e,networkType:t}=e,s=this._n+\"._onNetworkStatusChange\";let i=!1;var n=`previous:${this._networkType} current:`+t;e?(Ce.i(s+\" \"+n),this._networkType!==t&&(i=!0,this._networkType=t,this._m.get(ks).reConnect(!0))):this._networkType!==t&&(i=!0,this._networkType=t,Ce.w(s+\" no network, please check!\"),this._m.get(ks).offline()),i&&new Ti(\"networkChange\").setMessage(`isConnected:${e} `+n).end()}isOnline(){return this._networkType!==Nn}getNetworkType(){return this._networkType}reset(){Ce.l(this._n+\".reset\"),k?null!==this._mpNetworkStatusCallback&&($.offNetworkStatusChange&&$.offNetworkStatusChange(this._mpNetworkStatusCallback),this._mpNetworkStatusCallback=null):F?(null!==this._webOnlineCallback&&(window.removeEventListener(\"online\",this._webOnlineCallback),this._webOnlineCallback=null),null!==this._onWebOffline&&(window.removeEventListener(\"offline\",this._webOfflineCallback),this._webOfflineCallback=null)):b&&this._removeListener&&(this._removeListener(),this._removeListener=null)}}function Gn(e,t){return e(t={exports:{}},t.exports),t.exports}var kn=Gn(function(e){var i=Object.prototype.hasOwnProperty,h=\"~\";function s(){}function o(e,t,s){this.fn=e,this.context=t,this.once=s||!1}function n(e,t,s,i,n){if(\"function\"!=typeof s)throw new TypeError(\"The listener must be a function\");s=new o(s,i||e,n),i=h?h+t:t;return e._events[i]?e._events[i].fn?e._events[i]=[e._events[i],s]:e._events[i].push(s):(e._events[i]=s,e._eventsCount++),e}function c(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function t(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(h=!1)),t.prototype.eventNames=function(){var e,t,s=[];if(0===this._eventsCount)return s;for(t in e=this._events)i.call(e,t)&&s.push(h?t.slice(1):t);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},t.prototype.listeners=function(e){var e=h?h+e:e,t=this._events[e];if(!t)return[];if(t.fn)return[t.fn];for(var s=0,i=t.length,n=new Array(i);s{this._fileDNList.includes(e)||this._fileDNList.push(e)})}catch(e){}}_getAuthorizationKey(){const s=this._n+\"._getAuthorizationKey\",i=new Ti(\"_getAuthorizationKey\"),n=Math.ceil(Date.now()/1e3);this.req({P:ri.COS_SIGN,data:{duration:this.expiredTimeLimit}}).then(e=>{var e=e[\"data\"],t=(Ce.l(s+\" ok. data:\",e),e.expiredTime-n);i.setMessage(`requestId:${e.requestId} requestTime:${n} expiredTime:${e.expiredTime} diff:${t}s`).end(),!k&&e.region&&(this.region=e.region),this.appid=e.appid,this.bucketName=e.bucketName,this.ciUrl=e.ciUrl,this.directory=e.directory,this.downloadUrl=e.downloadUrl,this.uploadUrl=e.uploadUrl,this.cosOptions={secretId:e.secretId,secretKey:e.secretKey,sessionToken:e.sessionToken,expiredTime:e.expiredTime},Ce.l(s+` ok. region:${this.region} bucketName:`+this.bucketName),this._initUploaderMethod()}).catch(e=>{i.setError(e).end(),Ce.w(s+\" failed. error:\",e)})}_getCosPreSigUrl(t){const i=this._n+\"._getCosPreSigUrl\",n=Math.ceil(Date.now()/1e3),o=new Ti(\"_getCosPreSigUrl\");let e={uploadMethod:t.uploadMethod,platform:this.getPlatform(),SDKAppID:this.getSDKAppID(),userID:t.userID,conversationType:t.conversationType,uploadConfig:[{fileID:1,fileType:t.fileType,fileName:t.fileName}]},s=ri.SIMPLE_COS_PRE_SIG;return this.isSimpleCos||(e={fileType:t.fileType,fileName:t.fileName,uploadMethod:t.uploadMethod,duration:t.duration},s=ri.COS_PRE_SIG),this.req({P:s,data:e}).then(e=>{this.tryCount=0;var t=e.data||{};Ce.l(`${i} ok. isSimpleCos:${this.isSimpleCos} data:`,t);let s=\"\";if(this.isSimpleCos){const{uploadUrl:e,fileKey:i}=t.preSig[0];s=`uploadIP:${t.uploadIP} uploadUrl:${e} fileKey:${i} cost:`+Dt(n)}else s=`requestId:${t.requestId} expiredTime:${t.expiredTime} diff:${t.expiredTime-n}s`;return o.setMessage(s).end(),t}).catch(e=>(-1===e.code&&(e.code=ei.COS_GET_SIG_FAIL),o.setError(e).end(),Ce.w(i+\" failed. error:\",e),this.tryCount<1?(this.tryCount++,this._getCosPreSigUrl(t)):(this.tryCount=0,ni({code:ei.COS_GET_SIG_FAIL}))))}_initUploaderMethod(){if(this.TIMUploadPlugin)return this.timUploadPlugin=new this.TIMUploadPlugin,void(this._cosUploadMethod=(e,t)=>{this.timUploadPlugin.uploadFile(e,t)});this.appid&&(this.cos=k?new this.COSSDK({ForcePathStyle:!0,getAuthorization:this._getAuthorization.bind(this)}):new this.COSSDK({getAuthorization:this._getAuthorization.bind(this)}),this._cosUploadMethod=k?(e,t)=>{this.cos.postObject(e,t)}:(e,t)=>{this.cos.uploadFiles(e,t)})}onCheckTimer(e){this.COSSDK&&(this.TIMUploadPlugin||this.isLoggedIn()&&e%60==0&&Math.ceil(Date.now()/1e3)>=this.cosOptions.expiredTime-120&&this._getAuthorizationKey())}getFileDNList(){return this._fileDNList}_getAuthorization(e,t){t({TmpSecretId:this.cosOptions.secretId,TmpSecretKey:this.cosOptions.secretKey,XCosSecurityToken:this.cosOptions.sessionToken,ExpiredTime:this.cosOptions.expiredTime})}upload(e){if(!0===e._relayFlag)return Promise.resolve();const s=this.get($s);switch(e.type){case t.MSG_IMAGE:return s.addTotalCount(hi),this._uploadImage(e);case t.MSG_FILE:return s.addTotalCount(hi),this._uploadFile(e);case t.MSG_AUDIO:return s.addTotalCount(hi),this._uploadAudio(e);case t.MSG_VIDEO:return s.addTotalCount(hi),this._uploadVideo(e);default:return Promise.resolve()}}_uploadImage(g){const e=this.get(Is),m=g.getElements()[0],t=e.getMessageOption(g.clientSequence);return this.doUploadImage({file:t.payload.file,to:t.to,message:g,onProgress:e=>{if(m.updatePercent(e),xe(t.onProgress))try{t.onProgress(e)}catch(e){return ni({code:ei.MSG_ONPROGRESS_ERR})}}}).then(t=>{var{location:t,fileType:e,fileSize:d,width:s,height:i,smallImageUrl:n,smallImageWidth:_,smallImageHeight:u,largeImageUrl:o,largeImageWidth:h,largeImageHeight:p,imageInfoArray:r}=t,t=this.isPrivateNetWork()?t:et(t);m.updateImageFormat(e);let a,c,l={size:d,url:t,width:s,height:i};if(r&&0{if(i.updatePercent(e),xe(t.onProgress))try{t.onProgress(e)}catch(e){return ni({code:ei.MSG_ONPROGRESS_ERR})}}}).then(({location:e})=>{let t=e;return this.isPrivateNetWork()||(t=vi(t=et(e),this._fileDownloadProxy,this._authKey,this._fileDNList)),i.updateFileUrl(t),s})}_uploadAudio(t){const e=this.get(Is),s=t.getElements()[0],i=e.getMessageOption(t.clientSequence);return this.doUploadAudio({file:i.payload.file,to:i.to,message:t,onProgress:e=>{if(s.updatePercent(e),xe(i.onProgress))try{i.onProgress(e)}catch(e){return ni({code:ei.MSG_ONPROGRESS_ERR})}}}).then(({location:e})=>{e=this.isPrivateNetWork()?e:et(e);return s.updateAudioUrl(e),t})}_uploadVideo(s){const e=this.get(Is),i=s.getElements()[0],t=e.getMessageOption(s.clientSequence);return this.doUploadVideo({file:t.payload.file,to:t.to,message:s,onProgress:e=>{if(i.updatePercent(e),xe(t.onProgress))try{t.onProgress(e)}catch(e){return ni({code:ei.MSG_ONPROGRESS_ERR})}}}).then(e=>{var{location:e,snapshotInfo:t}=e,e=this.isPrivateNetWork()?e:et(e);return i.updateVideoUrl(e),Oe(t)||i.updateSnapshotInfo(t),s})}_checkSizeError(e){let t=\"\";return\"A\"===e?t=\"audio\":\"I\"===e?t=\"image\":\"V\"===e?t=\"video\":\"F\"===e&&(t=\"file\"),ni({code:ei[`MSG_${e}_SIZE_LIMIT`],message:this.getErrMsg(\"UploadSizeLimit\",t,this.UPLOAD_SIZE_LIMIT[e]/1048576+\"MB\")})}doUploadImage(s){if(!s.file||this._isEmptyFileList(s.file.files))return ni({code:ei.MSG_I_SELECT_F_FIRST});var e=this._checkImageType(s.file);if(!0!==e)return e;e=this._checkImageSize(s.file);if(!0!==e)return e;let i=null;return this._setUploadFileType(Zi),this.uploadByCOS(s).then(e=>{if(i=e,this.isPrivateNetWork())return dt(t);if(Fe(i.imageInfoArray)){const s=i.imageInfoArray.find(e=>3===e.type);if(s)return s}if(b)return{width:s.file.width,height:s.file.height};let t=et(e.location);return dt(t=this.COSSDK?t:vi(t,this._fileDownloadProxy,this._authKey,this._fileDNList))}).then(e=>(i.width=e.width,i.height=e.height,Promise.resolve(i)))}_checkImageType(e){let t=\"\";return t=k?e.url.slice(e.url.lastIndexOf(\".\")+1):b?e.type.split(\"/\")[1]:e.files[0].name.slice(e.files[0].name.lastIndexOf(\".\")+1),0<=Ji.indexOf(t.toLowerCase())||ni({code:ei.MSG_I_TYPES_LIMIT})}_checkImageSize(e){return 0===(e=(k||b?e:e.files[0]).size)?ni({code:ei.MSG_F_IS_EMPTY}):ethis.UPLOAD_SIZE_LIMIT.F?this._checkSizeError(\"F\"):0===e.file.files[0].size?(t={code:ei.MSG_F_IS_EMPTY},ni(t)):(this._setUploadFileType(tn),this.uploadByCOS(e))}doUploadVideo(e){return e.file.videoFile.size>this.UPLOAD_SIZE_LIMIT.V?this._checkSizeError(\"V\"):0===e.file.videoFile.size?ni({code:ei.MSG_F_IS_EMPTY}):-1===Xi.indexOf(e.file.videoFile.type)?ni({code:ei.MSG_V_TYPES_LIMIT}):(this._setUploadFileType(Qi),k||b?this.handleVideoUpload({...e,file:e.file.videoFile}):F?this.handleVideoUpload(e):void 0)}handleVideoUpload(s){return new Promise((t,e)=>{this.uploadByCOS(s).then(e=>{t(e)}).catch(()=>{this.uploadByCOS(s).then(e=>{t(e)}).catch(()=>{e(new Qs({code:ei.MSG_V_UPLOAD_FAIL}))})})})}doUploadAudio(e){return e.file?e.file.size>this.UPLOAD_SIZE_LIMIT.A?this._checkSizeError(\"A\"):0===e.file.size?ni({code:ei.MSG_F_IS_EMPTY}):(this._setUploadFileType(en),this.uploadByCOS(e)):ni({code:ei.MSG_A_UPLOAD_FAIL})}uploadByCOS(t){if(!xe(this._cosUploadMethod))return this.warn(\"PluginUndetected\"),ni({code:ei.COS_UNDETECTED});if(this.timUploadPlugin)return this._uploadWithPreSigUrl(t);const l=new Ti(\"upload\"),d=this._n+\".uploadByCOS\",_=Date.now(),u=this._getFile(t);return new Promise((r,a)=>{const e=k?this._createCosOptionsWXMiniApp(t):this._createCosOptionsWeb(t),c=this;this._cosUploadMethod(e,(e,t)=>{const s=Object.create(null);if(t){if(e||Fe(t.files)&&t.files[0].error){const e=new Qs({code:ei.MSG_F_UPLOAD_FAIL});return l.setError(e).end(),Ce.l(d+\" failed. error:\",t.files[0].error),403===t.files[0].error.statusCode&&this._getAuthorizationKey(),void a(e)}s.fileName=u.name,s.fileSize=u.size,s.fileType=u.type.slice(u.type.indexOf(\"/\")+1).toLowerCase(),s.location=(k?t:t.files[0].data).Location;const i=Date.now()-_,n=`size:${c._formatFileSize(u.size)} time:${i}ms speed:`+c._formatSpeed(1e3*u.size/i),o=(Ce.l(d+` success. name:${u.name} `+n),r(s),this.get($s));return o.addCost(hi,i),o.addFileSize(hi,u.size),void l.setMessage(n).end()}const i=new Qs({code:ei.MSG_F_UPLOAD_FAIL});l.setError(i).end(),Ce.w(d+\" failed. error:\",e),403===e.statusCode&&this._getAuthorizationKey(),a(i)})})}_uploadWithPreSigUrl(e){const g=this._n+\"._uploadWithPreSigUrl\",m=this._getFile(e);return this._createCosOptionsPreSigUrl(e).then(p=>new Promise((c,l)=>{const d=new Ti(\"upload\"),{requestSnapshotUrl:_,...u}=p,h=Date.now();this._cosUploadMethod(u,(e,t)=>{if(e||403===t.statusCode){d.setError(new Qs(e)).end();const m={HttpStatusCode:bn,CostTime:Dt(h,!1),error:e,url:p.url};return t.data&&t.data.uploadIP&&(m.uploadIP=t.data.uploadIP),this._uploadSSOLog(m),Ce.l(g+\" failed, error:\",e),void l(new Qs({code:ei.MSG_F_UPLOAD_FAIL}))}const s=Object.create(null);let i=t.data.location||\"\";this.isPrivateNetWork()||0!==i.indexOf(\"https://\")&&0!==i.indexOf(\"http://\")||(i=i.split(\"//\")[1]),s.fileName=m.name,s.fileSize=m.size,s.fileType=m.type.slice(m.type.indexOf(\"/\")+1).toLowerCase(),s.location=i;var e=Dt(h,!1),n=`size:${this._formatFileSize(m.size)} time:${e}ms speed:${this._formatSpeed(1e3*m.size/e)} res:`+JSON.stringify(t.data);Ce.l(g+` ok. name:${m.name} `+n),d.setMessage(n).end();const o={HttpStatusCode:t.statusCode,FileSize:m.size,CostTime:e,url:p.url},r=(t.data&&t.data.uploadIP&&(o.uploadIP=t.data.uploadIP),this._uploadSSOLog(o),this.get($s)),a=(r.addCost(hi,e),r.addFileSize(hi,m.size),[]);if(u.thumbUrl&&u.largeUrl&&a.push(this._getSmallImageInfoByUrl(u.thumbUrl,s),this._getLargeImageInfoByUrl(u.largeUrl,s)),this.uploadFileType===Zi&&this.isSimpleCos&&!this.isPrivateNetWork()&&(a.push(this._getImageInfoArray(u.downloadUrl,s)),t.data.uploadIP&&a.push(this._getDownloadIP(u.downloadUrl.split(\"//\")[1].split(\"/\")[0],s))),_&&a.push(this._getSnapshotInfoByUrl(_,s)),0{c(s)});c(s)})}))}_getDownloadIP(e,s){const i=this._n+\"._getDownloadIP\",n=Date.now();return this.req({P:ri.GET_IP,data:{domainName:e}}).then(e=>{if(e.data&&e.data.ip){Ce.l(i+` ok. downloadIP:${e.data.ip} cost:`+Dt(n));const t=s.location.split(\"/\");t[0]=e.data.ip,s.location=t.join(\"/\")}}).catch(e=>{})}_getImageInfoArray(t,s){const i=this._n+\"._getImageInfoArray\",n=Date.now();return this.req({P:ri.GET_IMAGE_INFO,data:{imageUrl:t}}).then(e=>{e=e.data||{};return Ce.l(i+` ok. data: ${JSON.stringify(e)} cost:`+Dt(n)),s.imageInfoArray=e.imageInfoArray,e}).catch(e=>{s.imageInfoArray=void 0,this._uploadSSOLog({HttpStatusCode:Fn,CostTime:Dt(n,!1),url:t})})}_uploadSSOLog(t){if(this.isSimpleCos){const s=new Ti;s.setEventType(18),t.error&&s.setError(new Qs(t.error));let e=`HttpStatusCode:${t.HttpStatusCode}|CosRequestId:${t.CosRequestId||\"\"}|FileAlreadyExist:${t.FileAlreadyExist||0}|FileSize:${t.FileSize||0}|CostTime:`+t.CostTime;t.uploadIP&&(e+=\"|FinalIP:\"+t.uploadIP),s.setMessage(\"OK\").setMoreMessage(t.url).setExtension(e).end()}}_getRawOrUploadProxyUrl(e){var t=this.get(Rs).getFileUploadProxy();let s=e;return s=t?e.replace(/^https:\\/\\/[^/]+/,t):s}_getFile(e){return Fe(e.file.files)||Be(e.file.files)?e.file.files[0]:e.file}_formatFileSize(e){return e<1024?e+\"B\":e<1048576?Math.floor(e/1024)+\"KB\":Math.floor(e/1048576)+\"MB\"}_formatSpeed(e){return e<=1048576?Mt(e/1024,1)+\"KB/s\":Mt(e/1048576,1)+\"MB/s\"}_createCosOptionsWeb(t){const e=this._getFile(t),s=e.name,i=s.slice(s.lastIndexOf(\".\")),n=this._genFileName(\"\"+je(999999)+i);return{files:[{Bucket:this.bucketName+\"-\"+this.appid,Region:this.region,Key:this.directory+\"/\"+n,Body:e}],SliceSize:1048576,onProgress:e=>{if(\"function\"==typeof t.onProgress)try{t.onProgress(e.percent)}catch(e){Ce.w(\"onProgress callback error:\",e)}},onFileFinish:(e,t,s)=>{}}}_createCosOptionsWXMiniApp(t){var e=this._getFile(t),s=this._genFileName(e.name),e=e.url;return{Bucket:this.bucketName+\"-\"+this.appid,Region:this.region,Key:this.directory+\"/\"+s,FilePath:e,onProgress:e=>{if(Ce.l(JSON.stringify(e)),\"function\"==typeof t.onProgress)try{t.onProgress(e.percent)}catch(e){Ce.w(\"onProgress callback error:\",e)}}}}_createCosOptionsPreSigUrl(a){let c=\"\",l=\"\",e=0;var s=this._getFile(a);if(k||b){if(a.message.type===t.MSG_FILE){const a=s.name,t=a.slice(a.lastIndexOf(\".\"));c=this._genFileName(\"\"+je(999999)+t)}else c=this._genFileName(s.name);l=s.url,e=1}else{const a=s.name,t=a.slice(a.lastIndexOf(\".\"));c=this._genFileName(\"\"+je(999999)+t),l=s,e=0}return this._getCosPreSigUrl({fileType:this.uploadFileType,fileName:c,uploadMethod:e,duration:this.duration,userID:a.message.from,conversationType:at(a.message.conversationID)?1:2}).then(e=>{var{uploadUrl:t,downloadUrl:s,requestSnapshotUrl:i,thumbUrl:n,largeUrl:o,fileKey:r}=this.isSimpleCos?e.preSig[0]:e,{uploadIP:e=\"\"}=e;return{url:this._getRawOrUploadProxyUrl(t),fileType:this.uploadFileType,fileName:c,resources:l,downloadUrl:s,requestSnapshotUrl:i,thumbUrl:n,largeUrl:o,fileKey:r,uploadIP:!this.isPrivateNetWork()&&e,onProgress:e=>{if(\"function\"==typeof a.onProgress)try{a.onProgress(e.percent)}catch(e){Ce.w(\"onProgress callback error:\",e),Ce.e(e)}}}})}_genFileName(e){return _t()+\"-\"+e}_setUploadFileType(e){this.uploadFileType=e}_getSnapshotInfoByUrl(e,s){const i=\"_getSnapshotInfoByUrl\",n=new Ti(i);return this.req({P:ri.VIDEO_COVER,data:{platform:this.getPlatform(),coverName:this._genFileName(je(99999)),requestSnapshotUrl:e}}).then(e=>{e=(e.data||{}).snapshotUrl;if(Ce.l(`${this._n}.${i} ok. snapshotUrl:`+e),n.setMessage(\"snapshotUrl:\"+e).end(),Oe(e))return{};const t=vi(e,this._fileDownloadProxy,this._authKey,this._fileDNList);return dt(t).then(e=>{s.snapshotInfo={snapshotUrl:t,snapshotWidth:e.width,snapshotHeight:e.height}})}).catch(e=>(Ce.w(`${this._n}.${i} failed. error:`,e),n.setCode(e.errorCode).setMessage(e.errorInfo).end(),{}))}_getSmallImageInfoByUrl(t,s){return dt(vi(t,this._fileDownloadProxy,this._authKey,this._fileDNList)).then(e=>{s.smallImageUrl=t,s.smallImageWidth=e.width,s.smallImageHeight=e.height})}_getLargeImageInfoByUrl(t,s){return dt(vi(t,this._fileDownloadProxy,this._authKey,this._fileDNList)).then(e=>{s.largeImageUrl=t,s.largeImageWidth=e.width,s.largeImageHeight=e.height})}_isEmptyFileList(e){return!(!Be(e)||0!==e.length)}reset(){Ce.l(this._n+\".reset\")}}class qn{constructor(e){this._n=\"MergerMessageHandler\",this._msgM=e}uploadMergerMessage(e,s){const i=this._n+\".uploadMergerMessage\",t=(Ce.d(i+\" message:\",e,\"messageBytes:\"+s),JSON.parse(JSON.stringify(e.payload)))[\"messageList\"],n=t.length,o=this._msgM.get(Ns).getFileDNList(),r=new Ti(\"uploadMergerMessage\");return t.forEach(e=>{Ei(e.messageBody[0].type,e.messageBody,o)}),this._msgM.req({P:ri.UPLOAD_MERGER_MSG,data:{messageList:t}}).then(e=>{Ce.d(i+\" ok. response:\",e.data);var{pbDownloadKey:e,downloadKey:t}=e.data,e={pbDownloadKey:e,downloadKey:t,messageNumber:n};return r.setMessage(n+`-${s}-`+t).end(),e}).catch(e=>{throw Ce.w(i+\" failed. error:\",e),r.setError(e).end(),e})}downloadMergerMessage(n){const o=this._n+\".downloadMergerMessage\",t=(Ce.d(o+\" message:\",n),n.payload)[\"downloadKey\"],r=this._msgM.getFileDownloadProxy(),a=this._msgM.getDowloadFileAuthKey(),c=new Ti(\"downloadMergerMessage\");return c.setMessage(\"downloadKey:\"+t),this._msgM.req({P:ri.DOWNLOAD_MERGER_MSG,data:{downloadKey:t}}).then(e=>{Ce.d(o+\" ok. response:\",e.data);const t=this._msgM.get(Ns).getFileDNList();if(xe(n.clearElement)){const{downloadKey:o,pbDownloadKey:c,messageList:s,...i}=n.payload;n.clearElement(),n.setElement({type:n.type,content:{messageList:e.data.messageList,...i}},r,a,t)}else{const o=[];e.data.messageList.forEach(e=>{Oe(e)||(e=new Fi(e,r,a,t),o.push(e))}),n.payload.messageList=o,n.payload.downloadKey=\"\",n.payload.pbDownloadKey=\"\"}return c.end(),n}).catch(e=>{throw Ce.w(`${o} failed. key:${t} error:`,e),c.setError(e).end(),e})}createMergerMessagePack(e,s,i){return e.conversationType===t.CONV_C2C?this._createC2CMergerMessagePack(e,s,i):this._createGroupMergerMessagePack(e,s,i)}_createC2CMergerMessagePack(e,t,s){let i=null;t&&(t.offlinePushInfo&&(i=t.offlinePushInfo),!0===t.onlineUserOnly&&(i?i.disablePush=!0:i={disablePush:!0}));const n=[];if(be(t)&&be(t.messageControlInfo)){const{excludedFromUnreadCount:e,excludedFromLastMessage:s,excludedFromContentModeration:i}=t.messageControlInfo;!0===e&&n.push(\"NoUnread\"),!0===s&&n.push(\"NoLastMsg\"),!0===i&&n.push(\"NoMsgCheck\")}let o=\"\";ke(e.cloudCustomData)&&0(this._getSendMessageSpecifiedKey(r)===_i&&this.get($s).addSuccessCount(hi),this._guardForGroup(r).then(()=>{if(!r.isSendable())return ni({code:ei.MSG_F_URL_IS_EMPTY});this._addSendMessageTotalCount(r),_=Date.now();var e=function(t){let e=\"utf-8\";F&&document&&(e=document.charset.toLowerCase());let s,i=0,n;if(n=t.length,\"utf-8\"===e||\"utf8\"===e)for(let e=0;e{e=this._mergerMessageHandler.createMergerMessagePack(r,a,e);return this.req(e)}):(l.setMessageRandom(r),s.sendMessage(r,a))}).then(e=>{var{time:e,sequence:s,readReceiptCode:i,messageDropReason:n}=e.data;if(Ge(i)&&0!==i&&(new Ti(\"sendMessageWithReceipt\").setMessage(`from:${r.from} to:${r.to} sequence:${s} readReceiptCode:`+i).end(),Ce.w(c+` readReceiptCode:${i} message:`+this.getErrMsg(i))),n){const t=new Ti(\"messageDropReason\"),a=`from:${r.from} to:${r.to} sequence:${s} messageDropReason:`+n;t.setMessage(a).end(),Ce.w(c+\" \"+a)}if(this._addSendMessageSuccessCount(r,_),this._messageOptionsMap.delete(r.clientSequence),!0===r.isResend){const t=l.findMessage(r.ID);t&&(Ce.l(c+\" resend ok. ID:\"+t.ID),l.deleteLocalMessage(t))}r.status=Nt,r.time=e;let o=!1;if(r.conversationType===t.CONV_GROUP)r.sequence=s;else if(r.conversationType===t.CONV_C2C){const t=l.getLatestMessageSentByMe(r.conversationID);if(t){const{nick:a,avatar:e}=t;a===r.nick&&e===r.avatar||(o=!0)}}if(o&&l.modifyMessageSentByMe({conversationID:r.conversationID,latestNick:r.nick,latestAvatar:r.avatar}),!0===d)r._onlineOnlyFlag=!0;else{l.appendToMessageList(r);let e=r,s=(be(a)&&be(a.messageControlInfo)&&(!0===a.messageControlInfo.excludedFromLastMessage&&(r._isExcludedFromLastMessage=!0,e=\"\"),!0===a.messageControlInfo.excludedFromUnreadCount&&(r._isExcludedFromUnreadCount=!0)),r.conversationType);rt(r.to)&&(s=t.CONV_TOPIC,this.get(Ss).onMessageSent({groupID:Tt(r.to),topicID:r.to,lastMessage:e})),l.onMessageSent({conversationOptionsList:[{conversationID:r.conversationID,unreadCount:0,type:s,subType:r.conversationSubType,lastMessage:e}]})}return r._relayFlag||\"TIMImageElem\"!==r.type||mt(r.payload.imageInfoArray),Zs({message:r})}))).catch(e=>this._onSendMessageFailed(r,e,d))}_guardForGroup(e){if(e.conversationType!==t.CONV_GROUP)return Promise.resolve();const s=this.get(vs);if(!s)return this._onNoModule();if(ot({groupID:e.to})){const t=s.getLocalGroupProfile(e.to);if(t&&t.isSupportTopic)return ni({code:ei.MSG_SEND_GRP_WITH_TOPIC_FAIL})}return s.guardForAVChatRoom(e)}_onSendMessageFailed(e,t,s=!1){var i=this._n+\"._onSendMessageFailed\";e.status=Pt,80001!==t.code&&80004!==t.code||(e.hasRiskContent=!0);const n=this.get(Ds);n.deleteMessageRandom(e);var o=10100<=t.code&&t.code<=10200||120001<=t.code&&t.code<=13e4;s||o||!0===n.appendToMessageList(e)&&Ce.l(i+\" message stored, ID:\"+e.ID),this._addSendMessageFailCountOnUser(e,t);const r=new Ti(\"sendMessage\");let a=`head.seq:${t.data.headSeq} type:${e.type} from:${e.from} to:`+e.to;if(F){if(\"connection\"in navigator){const e=navigator.connection;a+=` downlink:${e.downlink} effectiveType:${e.effectiveType} rtt:`+e.rtt}if(\"memory\"in window.performance){const e=window.performance.memory;a+=` usedJSHeapSize:${e.usedJSHeapSize} totalJSHeapSize:${e.totalJSHeapSize} jsHeapSizeLimit:`+e.jsHeapSizeLimit}}return r.setMessage(a).setError(t).end(),Ce.e(i+` ${a} error:`,t),ni(new Qs({code:t&&t.code?t.code:ei.MSG_SEND_FAIL,message:t&&t.message?t.message:void 0,data:{message:e}}))}_getSendMessageSpecifiedKey(e){if([t.MSG_IMAGE,t.MSG_AUDIO,t.MSG_VIDEO,t.MSG_FILE].includes(e.type))return _i;if(e.conversationType===t.CONV_C2C)return li;if(e.conversationType===t.CONV_GROUP){const t=this.get(vs);if(t){var e=t.getLocalGroupProfile(e.to);if(e)return e=e.type,nt(e)?di:ui}}}_addSendMessageTotalCount(e){e=this._getSendMessageSpecifiedKey(e);e&&this.get($s).addTotalCount(e)}_addSendMessageSuccessCount(e,t){var s=this._getSendMessageSpecifiedKey(e);if(s){const e=this.get($s);e.addSuccessCount(s),e.addCost(s,Dt(t,!1))}}_addSendMessageFailCountOnUser(e,t){const{code:s=-1}=t,i=this.get($s),n=this._getSendMessageSpecifiedKey(e);n===_i&&function(e){let t=!1;return t=Vn.includes(e)?!0:t}(s)?i.addFailedCountOfUserSide(hi):Bn(s)&&n&&i.addFailedCountOfUserSide(n)}resendMessage(e,t){return e.isResend=!0,e.status=Ot,this.sendMessageInstance(e,t)}revokeMessage(s){let e=null;if(s.conversationType===t.CONV_C2C?e=this.get(ys):s.conversationType===t.CONV_GROUP&&(e=this.get(vs)),!e)return this._onNoModule();const i=new Ti(\"revokeMessage\"),n=(i.setMessage(`type:${s.type} from:${s.from} to:`+s.to),this._n+\".revokeMessage\");return e.revokeMessage(s).then(e=>{var t=e.data.recallRetList;if(Oe(t)||0===t[0].retCode)return Ce.i(n+\" ok. ID:\"+s.ID),s.isRevoked=!0,i.end(),this.get(Ds).onMessageRevoked([s]),Zs({message:s});{const e=new Qs({code:t[0].retCode,data:{message:s}});return i.setCode(e.code).setMoreMessage(e.message).end(),ni(e)}}).catch(e=>{i.setError(e).end();var t=new Qs({code:e&&e.code?e.code:ei.MSG_REVOKE_FAIL,message:e&&e.message?e.message:void 0,data:{message:s}});return Ce.w(n+\" failed. error:\",e),ni(t)})}deleteMessage(e){let s=null;const i=e[0],n=i.conversationID;let o=\"\",r=[],a=[];if(i.conversationType===t.CONV_C2C)s=this.get(ys),o=n.replace(t.CONV_C2C,\"\"),e.forEach(e=>{e&&e.status===Nt&&e.conversationID===n&&(e._onlineOnlyFlag||r.push(`${e.sequence}_${e.random}_`+e.time),a.push(e))});else if(i.conversationType===t.CONV_GROUP)s=this.get(vs),o=n.replace(t.CONV_GROUP,\"\"),e.forEach(e=>{e&&e.status===Nt&&e.conversationID===n&&(e._onlineOnlyFlag||r.push(\"\"+e.sequence),a.push(e))});else if(i.conversationType===t.CONV_SYSTEM)return ni({code:ei.CANNOT_DELETE_GRP_SYSTEM_NOTICE});if(!s)return this._onNoModule();if(0===r.length)return this._onMessageDeleted(a);30(c.end(),Ce.i(l+\" ok\"),this._onMessageDeleted(a))).catch(e=>{c.setError(e).end(),Ce.w(l+\" failed. error:\",e);e=new Qs({code:e&&e.code?e.code:ei.MSG_DELETE_FAIL,message:e&&e.message?e.message:void 0});return ni(e)})}_onMessageDeleted(e){return this.get(Ds).onMessageDeleted(e),ii({messageList:e})}translateText(e){const n=this._n+\".translateText\",{sourceTextList:t,sourceLanguage:s,targetLanguage:i}=e,o=new Ti(\"translateText\");return o.setMessage(`sourceLanguage:${s} targetLanguage:`+i),this.req({P:ri.TRANSLATE_TEXT,data:{sourceTextList:t,source:s||\"auto\",target:i,from:this.getMyTinyID(),SDKAppID:this.getSDKAppID()}}).then(e=>{var{error:e,requestID:t,translatedTextList:s}=e.data,i=e[\"code\"];if(0===i)return o.end(),Ce.i(n+\" ok. requestID:\"+t),Zs({translatedTextList:s});throw{...e,requestID:t}}).catch(e=>(o.setCode(e.code).setMoreMessage(e.requestID).end(),Ce.w(n+\" failed. error:\",e),ni({code:ei.TRANSLATE_TEXT_FAIL})))}convertVoiceToText(e){var{message:e,language:t}=e;let s=e.payload.url;e.from===this.getMyUserID()&&\"out\"===e.flow&&(s=e.payload.remoteAudioUrl);const i=/\\.(wav|pcm|ogg-opus|speex|silk|mp3|m4a|aac|amr)/;if(!i.test(s))return ni({code:ei.UNSUPPORTED_VOICE_FORMAT});e=i.exec(s)[1]||\"mp3\";let n=\"16k_zh-PY\";t?\"zh (cmn-Hans-CN)\"===t?n=\"16k_zh\":\"en-US\"===t?n=\"16k_en\":\"yue-Hant-HK\"===t?n=\"16k_yue\":\"ja-JP\"===t&&(n=\"16k_ja\"):n=\"16k_zh-PY\";const o=`serviceType:${n} url:`+s,r=this._n+\".convertVoiceToText\",a=(Ce.i(r+\" \"+o),new Ti(\"convertVoiceToText\"));return a.setMessage(o),this.req({P:ri.VOICE_TO_TEXT,data:{url:s,language:n,SDKAppID:this.getSDKAppID(),format:e}}).then(e=>{var{error:e,requestID:t,result:s}=e.data,i=e[\"code\"];if(0===i)return a.end(),Ce.i(r+\" ok. requestID:\"+t),Zs({result:s});throw{...e,requestID:t}}).catch(e=>(a.setCode(e.code).setMoreMessage(e.requestID||\"\").end(),Ce.w(r+\" failed. error:\",e),ni({code:ei.VOICE_TO_TEXT_FAIL})))}modifyRemoteMessage(s){if(!1===this.get(Vs).filterMessage(s))return s.hasRiskContent=!0,ni({code:ei.PROFANITY_FOUND,data:{message:s}});let e=null;var{conversationType:i,to:n}=s;if(i===t.CONV_C2C)e=this.get(ys);else if(i===t.CONV_GROUP){if(!(e=this.get(vs)))return this._onNoModule();if(e.isMessageFromOrToAVChatroom(n))return ni({code:ei.MSG_MODIFY_DISABLED_IN_AV,data:{message:s}})}const o=new Ti(\"modifyMessage\"),r=(o.setMessage(\"to:\"+n),this._n+\".modifyRemoteMessage\");return e.modifyRemoteMessage(s).then(e=>{o.end(),Ce.i(r+\" ok\");e=this._onModifyRemoteMessageResp(s,e.data);return Zs({message:e})}).catch(e=>{var t;return o.setCode(e.code).setMoreMessage(e.message).end(),Ce.w(r+\" failed. error:\",e),20027===e.code?(t=this._onModifyRemoteMessageResp(s,e.data),ni({code:ei.MSG_MODIFY_CONFLICT,data:{message:t}})):ni({code:e.code,message:e.message,data:{message:s}})})}_onModifyRemoteMessageResp(e,t){Ce.d(this._n+\"._onModifyRemoteMessageResp options:\",t);var{conversationType:e,from:s,to:i,random:n,sequence:o,time:r}=e,{elements:t,messageVersion:a,cloudCustomData:c=\"\"}=t;return this.get(Ds).onMessageModified({conversationType:e,from:s,to:i,time:r,random:n,sequence:o,elements:t,cloudCustomData:c,messageVersion:a})}_generateUUID(e){const t=this.get(Rs);let s=`${t.getSDKAppID()}-${t.getUserID()}-`+function(){let t=\"\";for(let e=32;0{const{extensions:t=[],clearSequence:s}=e;1===i?(l=!0,t.forEach(e=>{a.push({key:e.key,value:e.value})}),this._updateLocalExt(r,t)):2===i?(d=!0,t.forEach(e=>{c.push(e.key)}),this._updateLocalExt(r,t)):3===i&&(d=!0,this._hasLocalExt(r)&&this._getLocalExt(r).forEach((e,t)=>{e.seq<=s&&!Oe(e.value)&&c.push(t)}),this._clearLocalExt(r,s))}),l&&this.emitOEvt(e.MESSAGE_EXTENSIONS_UPDATED,{messageID:r,extensions:a}),d&&this.emitOEvt(e.MESSAGE_EXTENSIONS_DELETED,{messageID:r,keyList:c})}setMessageExtensions(e,t){var s=\"setMessageExtensions\";if(!this.canIUse(M.MSG_EXT))return this.noUse(s);const i=this._n+\".\"+s,{ID:n,conversationID:o,sequence:r,time:d}=e;let a=[...t];20{var{resultList:e,successCount:t,failureCount:s}=e,t=`successCount:${t} failCount:`+s;return l.setMoreMessage(t).end(),Ce.l(i+\" ok. \"+t),Zs({extensions:e})}).catch(e=>(l.setError(e).end(),Ce.e(i+\" failed. error:\",e),ni(e)))}getMessageExtensions(e){var t=\"getMessageExtensions\";if(!this.canIUse(M.MSG_EXT))return this.noUse(t);const s=this._n+\".\"+t,{ID:i,conversationID:n,sequence:o,time:r}=e,a=`convID:${n} messageID:${i} sequence:${o} time:`+r,c=new Ti(t);c.setMessage(a),Ce.l(s+\" \"+a);let l=void 0;return this.getMsgExtsMap.has(i)&&(l=this._getGlobalSeq(i)),this._getMsgExts(e,l).then(e=>(c.end(),Ce.l(s+\" ok. extCount:\"+e.length),$e(l)&&0(c.setError(e).end(),Ce.e(s+\" failed. error:\",e),ni(e)))}deleteMessageExtensions(e,t){var s=\"deleteMessageExtensions\";if(!this.canIUse(M.MSG_EXT))return this.noUse(s);const n=this._n+\".\"+s,i=[];let o=3;Oe(t)||(o=2,t.forEach(e=>{i.push({key:e,value:\"\",seq:0})}));const{ID:r,conversationID:a,sequence:d,time:_}=e,c=`convID:${a} messageID:${r} sequence:${d} time:${_} operateType:`+o,l=new Ti(s);return l.setMessage(c),Ce.l(n+\" \"+c),this._modifyMsgExts(e,i,o).then(e=>{var{resultList:e,successCount:t,failureCount:s}=e;let i=\"\";return 2===o&&(i=`success count:${t} fail count:`+s),l.setMoreMessage(\"\"+i).end(),Ce.l(n+\" ok. \"+i),Zs({extensions:e})}).catch(e=>(l.setError(e).end(),Ce.e(n+\" failed. error:\",e),ni(e)))}_modifyMsgExts(i,e,s=1){var n=rt(i.to)?t.CONV_TOPIC:i.conversationType;let o=void 0,r=(3!==s&&(o=this._getReqExts(i,e)),null);switch(n){case t.CONV_C2C:r=this.get(ys);break;case t.CONV_GROUP:r=this.get(vs);break;case t.CONV_TOPIC:r=this.get(Ss);break;default:return ni({code:ei.NO_MODULE})}return r.modifyMsgExts(i,o,s).then(e=>{let{extensions:t,seq:s}=e.data;const n=[];let o=0,r=0,a=[];return(t=Oe(t)?[]:t).forEach(e=>{var{errorCode:e,extension:t}=e,{key:t,value:s,seq:i}=t;n.push({code:e,key:t,value:s}),0===e?o++:r++,a.push({key:t,value:s,seq:i})}),this._updateGlobalSeq(i.ID,s),0ni(e))}_getReqExts(e,t){const i=[];if(this._hasLocalExt(e.ID)){const n=this._getLocalExt(e.ID);return t.forEach(e=>{var{key:e,value:t}=e;let s=0;n.has(e)&&(s=n.get(e).seq),i.push({key:e,value:t,seq:s})}),i}return t.forEach(e=>{var{key:e,value:t}=e;i.push({key:e,value:t,seq:0})}),i}_getMsgExts(o,e){const r=this._n+\"._getMsgExts\",{ID:a,to:s}=o;let i=null;switch(rt(s)?t.CONV_TOPIC:o.conversationType){case t.CONV_C2C:i=this.get(ys);break;case t.CONV_GROUP:i=this.get(vs);break;case t.CONV_TOPIC:i=this.get(Ss);break;default:return ni({code:ei.NO_MODULE})}return i.getMessageExtensions(o,e).then(e=>{let{extensions:t,completeFlag:s,globalSequence:i,clearSequence:n}=e.data;if(t=Oe(t)?[]:t,Ce.l(r+` ok. completeFlag:${s} globalSequence:${i} clearSequence:${n} count:`+t.length),this._updateLocalExt(a,t),this._clearLocalExt(a,n),this._updateGlobalSeq(a,i),1===s)return this._getLocalExtList(a);{const e=t.slice(-1)[0].seq+1;return this._getMsgExts(o,e)}}).catch(e=>ni(e))}_hasLocalExt(e){return this.msgExtMap.has(e)}_getLocalExt(e){return this.msgExtMap.get(e)}_updateLocalExt(e,t){this._hasLocalExt(e)||this.msgExtMap.set(e,new Map);const i=this._getLocalExt(e);t.forEach(e=>{var{key:e,value:t=\"\",seq:s}=e;i.set(e,{value:t,seq:s})})}_clearLocalExt(e,s){if(!(s<=0)&&this._hasLocalExt(e)){const i=this._getLocalExt(e);i.forEach((e,t)=>{e.seq<=s&&i.delete(t)})}}_getLocalExtList(e){const s=[];return this._hasLocalExt(e)&&this._getLocalExt(e).forEach((e,t)=>{e=e.value;Oe(e)||s.push({key:t,value:e})}),s}_getGlobalSeq(e){return this.globalSeqMap.get(e)}_updateGlobalSeq(e,t){this.globalSeqMap.set(e,t)}reset(){Ce.l(this._n+\".reset\"),this.msgExtMap.clear(),this.globalSeqMap.clear(),this.getMsgExtsMap.clear()}}class Wn extends oi{constructor(e){super(e),this._n=\"MsgReactionModule\",this._reactedByMyselfMap=new Map,this._reactionInfoMap=new Map}onReactionNotifyList(t){const{dataList:s=[]}=t||{};s.forEach(t=>{const{C2CMessageInfo:s={},groupMessageInfo:i={},reactionList:n=[]}=t,{tinyID:o,clientTime:r,random:a}={...s,...i},c=o+`-${r}-`+a,l=[];n.forEach(e=>{$e(e.userIDList)&&(e.userIDList=[],e.count=0),l.push(...e.userIDList)}),Ce.l(this._n+`.onReactionNotifyList messageID:${c} reactionList:`+n.length),this._handleReactionSummary([{messageID:c,reactionList:n}],l).then(t=>{this.emitOEvt(e.MESSAGE_REACTIONS_UPDATED,{...t[0]})})})}onReactionNotify(t){var{C2CMessageInfo:t={},groupMessageInfo:s={},reactionID:i,operateType:n}=t.dataList||{},{tinyID:t,clientTime:s,random:o}={...t,...s},s=t+`-${s}-`+o,o=(Ce.l(this._n+`.onReactionNotify messageID:${s} reactionID:${i} operateType:`+n),1===n?this._addReactedByMyselfMap(s,i):this._removeReactedByMyselfMap(s,i),s+\"-\"+i);if(this._reactionInfoMap.has(o)){const t=this._reactionInfoMap.get(o);t.reactedByMyself=1===n,this.emitOEvt(e.MESSAGE_REACTIONS_UPDATED,{messageID:s,reactionList:[t]})}}addMessageReaction(t,s){var e=\"addMessageReaction\";if(!this.canIUse(M.MSG_REACTION))return this.noUse(e);const i=this._n+\".\"+e,{ID:n,conversationID:o}=t,r=`convID:${o} messageID:${n} reactionID:`+s,a=new Ti(e);a.setMessage(r),Ce.l(i+\" \"+r);e=this._createReactionOperationPack(t,s,1);return this._addReactedByMyselfMap(t.ID,s),this.req(e).then(()=>(a.end(),Ce.l(i+\" ok.\"),Zs())).catch(e=>(this._removeReactedByMyselfMap(t.ID,s),a.setError(e).end(),Ce.e(i+\" failed. error:\",e),ni(e)))}removeMessageReaction(e,t){var s=\"removeMessageReaction\";if(!this.canIUse(M.MSG_REACTION))return this.noUse(s);const i=this._n+\".\"+s,{ID:n,conversationID:o}=e,r=`convID:${o} messageID:${n} reactionID:`+t,a=new Ti(s);a.setMessage(r),Ce.l(i+\" \"+r);s=this._createReactionOperationPack(e,t,2);return this._removeReactedByMyselfMap(e.ID,t),this.req(s).then(()=>(a.end(),Ce.l(i+\" ok.\"),Zs())).catch(e=>(a.setError(e).end(),Ce.e(i+\" failed. error:\",e),ni(e)))}getMessageReactions(e){var t=\"getMessageReactions\";if(!this.canIUse(M.MSG_REACTION))return this.noUse(t);const s=this._n+\".\"+t,{messageList:i,maxUserCountPerReaction:n}=e,o=i[0][\"conversationID\"],r=`convID:${o} maxUserCountPerReaction:${n} msgCount:`+i.length,a=new Ti(t),c=(a.setMessage(r),Ce.l(s+\" \"+r),new Map),l=this._createReactionSummaryPack({...e,messageIDMap:c});return this.req(l).then(e=>{const{resultList:t=[]}=e.data,o=[],r=[];return t.forEach(e=>{const{messageKey:t,messageSequence:s,reactionList:i=[]}=e,n=$e(t)?c.get(s):c.get(t);o.push({messageID:n,reactionList:i}),i.forEach(e=>{r.push(...e.userIDList)})}),this._handleReactionSummary(o,r)}).then(e=>(a.end(),Ce.l(s+\" ok.\"),c.clear(),Zs({resultList:e}))).catch(e=>(a.setError(e).end(),Ce.e(s+\" failed. error:\",e),ni(e)))}getAllUserListOfMessageReaction(e){var t=\"getAllUserListOfMessageReaction\";if(!this.canIUse(M.MSG_REACTION))return this.noUse(t);const s=this._n+\".\"+t,{message:i,reactionID:n,nextSeq:o,count:r}=e,{ID:d,conversationID:_}=i,a=`convID:${_} messageID:${d} reactionID:${n} nextSeq:${o} count:`+r,c=new Ti(t),l=(c.setMessage(a),Ce.l(s+\" \"+a),{userList:[],nextSeq:0,isCompleted:!1}),u=this._createReactionUserListPack(e);return this.req(u).then(e=>{var{userIDList:e=[],nextSeq:t=0}=e.data;return l.nextSeq=t,l.isCompleted=0===t,this.get(Ts).getUserNickAndAvatar(e)}).then(e=>(l.userList=e,c.end(),Ce.l(s+\" ok.\"),Zs(l))).catch(e=>(c.setError(e).end(),Ce.e(s+\" failed. error:\",e),ni(e)))}_createReactionOperationPack(s,e,i){let n=void 0;const o={reactionID:e,userIDList:[this.getMyUserID()]};if(s.conversationType===t.CONV_C2C){const t=this.get(ys);n=1===i?ri.ADD_C2C_MSG_REACTION:ri.RM_C2C_MSG_REACTION,o.from=s.from,o.to=s.to,o.messageKey=t.getMessageKey(s)}if(s.conversationType===t.CONV_GROUP){let e=void 0,t=s.to;rt(s.to)&&(e=s.to,t=Tt(e)),n=1===i?ri.ADD_GRP_MSG_REACTION:ri.RM_GRP_MSG_REACTION,o.groupID=t,o.topicID=e,o.messageSequence=s.sequence}return{P:n,data:o}}_createReactionSummaryPack(s){const{messageList:i,maxUserCountPerReaction:n=10,messageIDMap:o}=s,r=i[0];let a=void 0,c=void 0;if(r.conversationType===t.CONV_C2C){const s=this.get(ys),t=i.map(e=>{var t=s.getMessageKey(e);return o.set(t,e.ID),t});a=ri.GET_C2C_MSG_REACTIONS,c={from:r.from,to:r.to,messageKeyList:t,count:n}}if(r.conversationType===t.CONV_GROUP){let e=void 0,t=r.to;rt(r.to)&&(e=r.to,t=Tt(e));s=i.map(e=>(o.set(e.sequence,e.ID),e.sequence));a=ri.GET_GRP_MSG_REACTIONS,c={groupID:t,topicID:e,messageSequenceList:s,count:n}}return{P:a,data:c}}_createReactionUserListPack(e){var{message:s,reactionID:e,nextSeq:i=0,count:n=100}=e;let o=void 0;const r={reactionID:e,nextSeq:i,count:100{const e=[];return t.forEach(r=>{const a=[];r.reactionList.forEach(e=>{const{reactionID:t,count:s,userIDList:i,reactedByMyself:n}=e,o=[];i.forEach(t=>{c.forEach(e=>{t===e.userID&&o.push(e)})});e={reactionID:t,totalUserCount:s,partialUserList:o,reactedByMyself:this._computeReactedByMyself({reactedByMyself:n,messageID:r.messageID,reactionID:t})};if(a.push(e),$e(n)&&!this._reactedByMyselfMap.has(r.messageID)){const c=r.messageID+\"-\"+t;this._reactionInfoMap.set(c,e)}}),e.push({messageID:r.messageID,reactionList:a})}),e})}_addReactedByMyselfMap(e,t){this._reactedByMyselfMap.has(e)||this._reactedByMyselfMap.set(e,[]);const s=this._reactedByMyselfMap.get(e);-1===s.indexOf(t)&&s.push(t)}_removeReactedByMyselfMap(e,t){if(this._reactedByMyselfMap.has(e)){const s=this._reactedByMyselfMap.get(e),i=s.indexOf(t);-1{var{time:e,sequence:s,readReceiptCode:i}=e.data;Ge(i)&&0!==i&&(new Ti(\"sendMessageWithReceipt\").setMessage(`from:${r.from} to:${r.to} sequence:${s} readReceiptCode:`+i).end(),Ce.w(this._n+`.sendMessage readReceiptCode:${i} message:`+this.getErrMsg(i))),this._addSendMessageSuccessCount(r,a);const n=this.get(Ds);r.status=Nt,r.time=e,r.conversationType===t.CONV_GROUP&&(r.sequence=s),n.appendToMessageList(r);let o=r;return!0===r._isExcludedFromLastMessage&&(o=\"\"),n.onMessageSent({conversationOptionsList:[{conversationID:r.conversationID,unreadCount:0,type:r.conversationType,subType:r.conversationSubType,lastMessage:o}]}),Zs({message:r})}).catch(e=>this._onSendMessageFailed(r,e))}_sendComboMessage(e,s){const i=this._m.get(Gs);let n=\"\";return e.conversationType===t.CONV_C2C&&(n=f.NAME.OPEN_IM+\".\"+ri.SEND_C2C_MSG),e.conversationType===t.CONV_GROUP&&(n=f.NAME.GRP+\".\"+ri.SEND_GRP_MSG),i.sendComboMessage({servcmd:n,data:s})}_createMsg(s){var i=this._n+\"._createMsg\";let n=null;try{const a=this.getMyUserID(),c={};if(c.senderTinyID=this.getMyTinyID(),c.currentUser=a,c.from=s.From_Account||a,s.GroupId?(c.conversationID=\"\"+t.CONV_GROUP+s.GroupId,c.conversationType=t.CONV_GROUP,c.to=s.GroupId):s.To_Account&&(c.conversationID=\"\"+t.CONV_C2C+s.To_Account,c.conversationType=t.CONV_C2C,c.to=s.To_Account),c.time=s.MsgTimeStamp||0,c.random=s.Random||s.MsgRandom||0,c.priority=s.MsgPriority,ke(s.CloudCustomData)&&0{this.plugins[e]=t[e],\"tim-upload-plugin\"===e&&\"function\"==typeof t[e].getVersion&&(s=t[e].getVersion())}),new Ti(\"registerPlugin\").setMessage(\"\"+Object.keys(t)).setMoreMessage(\"version:\"+s).end()}getPlugin(e){return this.plugins[e]}reset(){}}class jn extends oi{constructor(e){super(e),this._n=\"SyncUnreadMsgModule\",this._cookie=\"\",this._onlineSyncFlag=!1,this.getIEmitInst().on(Yi.A2KEY_AND_TINYID_UPDATED,this._init,this)}_init(){this._startSync({cookie:this._cookie,syncFlag:0,isOnlineSync:0})}_startSync(e){const{cookie:t,syncFlag:s,isOnlineSync:i}=e,n=this._n+\"._startSync\",o=(Ce.l(n+\" options:\",e),new Ti(\"syncUnread\"));o.setMessage(JSON.stringify(e)),this.req({P:ri.SYNC_UNREAD_MSG,data:{cookie:t,syncFlag:s,isOnlineSync:i}}).then(e=>{var{cookie:t,syncFlag:s}=e.data,i=`$cookie:${t} syncFlag:`+s;Ce.l(n+\" ok. \"+i),this._cookie=t,o.setMoreMessage(i).end(),Oe(t)||(0===s||1===s?(this._dispatch({...e.data,isSyncingEnded:!1}),this._startSync({cookie:t,syncFlag:s,isOnlineSync:0})):2===s&&this._dispatch({...e.data,isSyncingEnded:!0}))}).catch(e=>{o.setError(e).end(),Ce.e(n+\" failed. error:\",e)})}_dispatch(e){e.eventArray&&this.get(Gs).onMessage({head:{},body:{eventArray:e.eventArray,isInstantMessage:this._onlineSyncFlag,isSyncingEnded:e.isSyncingEnded}}),this.get(ys).onNewMessage({dataList:e.messageList,isInstantMessage:!!e.isSyncingEnded&&this._onlineSyncFlag,C2CRemainingUnreadList:e.C2CRemainingUnreadList,C2CPairUnreadList:e.C2CPairUnreadList,isSyncingEnded:e.isSyncingEnded})}syncOnNeed(){Ce.l(this._n+\".syncOnNeed cookie:\"+this._cookie),this._onlineSyncFlag=!0,this._startSync({cookie:this._cookie,syncFlag:0,isOnlineSync:1})}syncOnReconnected(){Ce.l(this._n+\".syncOnReconnected cookie:\"+this._cookie),this._onlineSyncFlag=!0,this._startSync({cookie:this._cookie,syncFlag:0,isOnlineSync:0})}reset(){Ce.l(this._n+\".reset\"),this._onlineSyncFlag=!1,this._cookie=\"\"}}const Jn={req:{toAccount:\"To_Account\",fromAccount:\"From_Account\",to:\"To_Account\",from:\"From_Account\",groupID:\"GroupId\",groupAtUserID:\"GroupAt_Account\",extension:\"Ext\",data:\"Data\",description:\"Desc\",elements:\"MsgBody\",sizeType:\"Type\",downloadFlag:\"Download_Flag\",thumbUUID:\"ThumbUUID\",videoUUID:\"VideoUUID\",remoteAudioUrl:\"Url\",remoteVideoUrl:\"VideoUrl\",videoUrl:\"\",imageUrl:\"URL\",fileUrl:\"Url\",uuid:\"UUID\",priority:\"MsgPriority\",receiverUserID:\"To_Account\",receiverGroupID:\"GroupId\",messageSender:\"SenderId\",messageReceiver:\"ReceiverId\",nick:\"From_AccountNick\",avatar:\"From_AccountHeadurl\",messageNumber:\"MsgNum\",pbDownloadKey:\"PbMsgKey\",downloadKey:\"JsonMsgKey\",applicationType:\"PendencyType\",userIDList:\"To_Account\",groupNameList:\"GroupName\",userID:\"To_Account\",groupAttributeList:\"GroupAttr\",mainSequence:\"AttrMainSeq\",avChatRoomKey:\"BytesKey\",attributeControl:\"AttrControl\",sequence:\"seq\",messageControlInfo:\"SendMsgControl\",updateSequence:\"UpdateSeq\",clientTime:\"MsgClientTime\",sequenceList:\"MsgSeqList\",topicID:\"TopicId\",customData:\"CustomString\",isSupportTopic:\"SupportTopic\",isWebUniapp:\"is_web_uniapp\",isSupportExtension:\"SupportMessageExtension\",messageSequence:\"MsgSeq\",messageKey:\"MsgKey\",startSequence:\"startSeq\",simplifiedMessage:\"DownsizeFlag\",isRelayMessage:\"IsRelayMsg\",reactionID:\"Reaction\",messageSequenceList:\"MsgSeqList\",messageKeyList:\"MsgKeyList\",cmConfigID:\"CustomModerationConfigID\"},res:{MsgPriority:\"priority\",ThumbUUID:\"thumbUUID\",VideoUUID:\"videoUUID\",Download_Flag:\"downloadFlag\",GroupId:\"groupID\",Member_Account:\"userID\",MsgList:\"messageList\",SyncFlag:\"syncFlag\",To_Account:\"to\",From_Account:\"from\",MsgSeq:\"sequence\",MsgRandom:\"random\",MsgTime:\"time\",MsgTimeStamp:\"time\",MsgContent:\"content\",MsgBody:\"elements\",From_AccountNick:\"nick\",From_AccountHeadurl:\"avatar\",GroupWithdrawInfoArray:\"revokedInfos\",GroupReadInfoArray:\"groupMessageReadNotice\",LastReadMsgSeq:\"lastMessageSeq\",WithdrawC2cMsgNotify:\"c2cMessageRevokedNotify\",C2cWithdrawInfoArray:\"revokedInfos\",C2cReadedReceipt:\"c2cMessageReadReceipt\",ReadC2cMsgNotify:\"c2cMessageReadNotice\",LastReadTime:\"peerReadTime\",MsgRand:\"random\",MsgType:\"type\",MsgShow:\"messageShow\",NextMsgSeq:\"nextMessageSeq\",FaceUrl:\"avatar\",ProfileDataMod:\"profileModify\",Profile_Account:\"userID\",ValueBytes:\"value\",ValueNum:\"value\",NoticeSeq:\"noticeSequence\",NotifySeq:\"notifySequence\",MsgFrom_AccountExtraInfo:\"messageFromAccountExtraInformation\",Operator_Account:\"operatorID\",OpType:\"operationType\",ReportType:\"operationType\",UserId:\"userID\",User_Account:\"userID\",List_Account:\"userIDList\",MsgOperatorMemberExtraInfo:\"operatorInfo\",MsgMemberExtraInfo:\"memberInfoList\",ImageUrl:\"avatar\",NickName:\"nick\",MsgGroupNewInfo:\"newGroupProfile\",MsgAppDefinedData:\"groupCustomField\",Owner_Account:\"ownerID\",GroupFaceUrl:\"avatar\",GroupIntroduction:\"introduction\",GroupNotification:\"notification\",GroupApplyJoinOption:\"joinOption\",MsgKey:\"messageKey\",GroupInfo:\"groupProfile\",ShutupTime:\"muteTime\",Desc:\"description\",Ext:\"extension\",GroupAt_Account:\"groupAtUserID\",MsgNum:\"messageNumber\",PbMsgKey:\"pbDownloadKey\",JsonMsgKey:\"downloadKey\",MsgModifiedFlag:\"isModified\",PendencyItem:\"applicationItem\",PendencyType:\"applicationType\",AddTime:\"time\",AddSource:\"source\",AddWording:\"wording\",ProfileImImage:\"avatar\",PendencyAdd:\"friendApplicationAdded\",FrienPencydDel_Account:\"friendApplicationDeletedUserIDList\",Peer_Account:\"userID\",GroupAttr:\"groupAttributeList\",GroupAttrAry:\"groupAttributeList\",AttrMainSeq:\"mainSequence\",seq:\"sequence\",GroupAttrOption:\"groupAttributeOption\",BytesChangedKeys:\"changedKeyList\",GroupAttrInfo:\"groupAttributeList\",GroupAttrSeq:\"mainSequence\",PushChangedAttrValFlag:\"isWithChangedAttributeInfo\",SubKeySeq:\"sequence\",Val:\"value\",MsgGroupFromCardName:\"senderNameCard\",MsgGroupFromNickName:\"senderNick\",C2cNick:\"peerNick\",C2cImage:\"peerAvatar\",SendMsgControl:\"messageControlInfo\",NoLastMsg:\"excludedFromLastMessage\",NoUnread:\"excludedFromUnreadCount\",UpdateSeq:\"updateSequence\",MuteNotifications:\"muteFlag\",MsgClientTime:\"clientTime\",TinyId:\"tinyID\",GroupMsgReceiptList:\"readReceiptList\",ReadNum:\"readCount\",UnreadNum:\"unreadCount\",TopicId:\"topicID\",MillionGroupFlag:\"communityType\",SupportTopic:\"isSupportTopic\",MsgTopicNewInfo:\"newTopicInfo\",ShutupAll:\"muteAllMembers\",CustomString:\"customData\",TopicFaceUrl:\"avatar\",TopicIntroduction:\"introduction\",TopicNotification:\"notification\",TopicIdArray:\"topicIDList\",MsgVersion:\"messageVersion\",C2cMsgModNotifys:\"c2cMessageModified\",GroupMsgModNotifys:\"groupMessageModified\",ApplyJoinOption:\"joinOption\",MsgFlag:\"messageRemindType\",AtInfoList:\"groupAtInfoList\",AtFlagList:\"groupAtType\",AtMsgSeq:\"sequence\",BanDuration:\"duration\",BanDescription:\"reason\",NotVisible:\"invisible\",BytesTag:\"tag\",BytesValue:\"value\",RptBytesValue:\"value\",LatestSeq:\"globalSequence\",ClearSeq:\"clearSequence\",SupportMessageExtension:\"isSupportExtension\",ExtensionList:\"extensions\",GroupCounter:\"counterList\",Revoker_Account:\"revoker\",MsgExtensionNotify:\"messageExtensionNotify\",ExtensionC2cMsgInfo:\"messageInfo\",ExtensionGroupMsgInfo:\"messageInfo\",MsgOptType:\"operateType\",SetKVInfo:\"operateResultList\",DeleteKVInfo:\"operateResultList\",ClearKVInfo:\"operateResultList\",MsgKeyValue:\"extensions\",ClearMsgSeq:\"clearSequence\",MsgLastSeq:\"globalSequence\",InviteJoinOption:\"inviteOption\",MemberList_Account:\"inviteeList\",MsgMemberExtraInfoList:\"inviteeInfoList\",E:\"event\",GInf:\"groupProfile\",MCT:\"clientTime\",MR:\"random\",MP:\"priority\",MTS:\"time\",GId:\"groupID\",MS:\"sequence\",CCD:\"cloudCustomData\",F_Account:\"from\",F_Hd:\"avatar\",F_NN:\"nick\",GN:\"groupName\",GT:\"groupType\",IsSys:\"isSystemMessage\",OpInf:\"operatorInfo\",Img:\"avatar\",NN:\"nick\",OnlineInf:\"onlineMemberInfo\",ET:\"expireTime\",Num:\"onlineMemberNum\",Opt:\"operationType\",O_Account:\"operatorID\",RT:\"operationType\",UDF:\"userDefinedField\",L_Account:\"userIDList\",IsPlaceMsg:\"isPlaceMessage\",MsgCheckResult:\"checkResult\",Results:\"resultList\",Reaction:\"reactionID\",Reaction_Account:\"userIDList\",MsgReactionNotifyList:\"messageReactionNotifyList\",MsgReactionNotify:\"messageReactionNotify\",MsgReactionSummary:\"reactionList\",C2CMsgInfo:\"C2CMessageInfo\",GroupMsgInfo:\"groupMessageInfo\",int32_err_code:\"errorCode\",str_err_msg:\"errorMsg\",MsgDropReason:\"messageDropReason\",ReactedByMe:\"reactedByMyself\",Level:\"messageRemindType\",PeerReadTime:\"timestamp\",NoUnreadSeqList:\"excludedUnreadSequenceList\",NewMsg:\"topicLatestMessage\"},ignoreKeyWord:[\"C2C\",\"ID\",\"USP\"]};function Xn(e,t){if(\"string\"!=typeof e&&!Array.isArray(e))throw new TypeError(\"Expected the input to be `string | string[]`\");return t=Object.assign({pascalCase:!1},t),0===(e=Array.isArray(e)?e.map(e=>e.trim()).filter(e=>e.length).join(\"-\"):e.trim()).length?\"\":1===e.length?t.pascalCase?e.toUpperCase():e.toLowerCase():(e=e=(e=e!==e.toLowerCase()?Zn(e):e).replace(/^[_.\\- ]+/,\"\").toLowerCase().replace(/[_.\\- ]+(\\w|$)/g,(e,t)=>t.toUpperCase()).replace(/\\d+(\\w|$)/g,e=>e.toUpperCase()),t.pascalCase?e.charAt(0).toUpperCase()+e.slice(1):e)}const Zn=t=>{let s=!1,i=!1,n=!1;for(let e=0;ewe(e)?s(e,n):e),i--,t):we(e)?(t=ut(t=function(s){const i=Object.create(null);return Object.keys(s).forEach(e=>{var t=(t=>{if(!He(t))return!1;if(t!==Xn(t))for(let e=0;eFe(e)||we(e)?s(e,n):e),i--,t):void 0;var t}(e,t)}function eo(e,n){return Fe(e)?e.map(e=>we(e)?eo(e,n):e):we(e)?ut(function(s){const i={};return Object.keys(s).forEach(e=>{var t;i[s[e],t=e,$e(n[t])?Xn(t):n[t]]=s[e]}),i}(e),e=>Fe(e)||we(e)?eo(e,n):e):void 0}const to=String.fromCharCode,so=function(e){let t=0|e.charCodeAt(0);if(55296<=t)if(t<56320){e=0|e.charCodeAt(1);if(56320<=e&&e<=57343){if(65535<(t=(t<<10)+e-56613888|0))return to(240|t>>>18,128|t>>>12&63,128|t>>>6&63,128|63&t)}else t=65533}else t<=57343&&(t=65533);return t<=2047?to(192|t>>>6,128|63&t):to(224|t>>>12,128|t>>>6&63,128|63&t)},io=function(e){const t=void 0===e?\"\":(\"\"+e).replace(/[\\x80-\\uD7ff\\uDC00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]?/g,so),s=0|t.length,i=new Uint8Array(s);let n=0;for(;n{}}),this._socket.onClose(this._onClose.bind(this)),this._socket.onOpen(this._onOpen.bind(this)),this._socket.onMessage(this._onMessage.bind(this)),this._socket.onError(this._onError.bind(this))):(this._socket=new WebSocket(t),this._socket.binaryType=\"arraybuffer\",this._socket.onopen=this._onOpen.bind(this,this._socket.extensions),this._socket.onmessage=this._onMessage.bind(this),this._socket.onclose=this._onClose.bind(this),this._socket.onerror=this._onError.bind(this));this._canIUseBinaryFrame=e.canIUseBinaryFrame()}getID(){return this._id}_onOpen(e){this._handler.onOpen({id:this._id,res:JSON.stringify(e)})}_onClose(e){this._handler.onClose({id:this._id,e:e})}_onMessage(e){e=this._canIUseBinaryFrame?this._isAppCompressedData(e.data)?this._handler.inflate(e.data):function(e){var n=new Uint8Array(e);let o=\"\",r=0;for(var a=n.length;r{}),this._socket.onOpen(()=>{}),this._socket.onMessage(()=>{}),this._socket.onError(()=>{})):(this._socket.onopen=null,this._socket.onmessage=null,this._socket.onclose=null,this._socket.onerror=null),A?this._socket.close({code:e}):this._socket.close(e),this._socket=null)}send(e){this._workerSocket?this._workerSocket.postMessage({cmd:\"sendMessage\",data:this._canIUseBinaryFrame?io(e.data).buffer:e.data}):O?$.sendSocketMessage({data:e.data,fail:()=>{e.fail&&e.requestID&&e.fail(e.requestID)}}):this._socket&&(k?this._socket.send({data:this._canIUseBinaryFrame?io(e.data).buffer:e.data,fail:()=>{e.fail&&e.requestID&&e.fail(e.requestID)}}):this._socket.send(this._canIUseBinaryFrame?io(e.data):e.data))}}const oo=4e3,ro=4001,ao=\"connected\",co=\"connecting\",lo=\"disconnected\";class uo{constructor(e){this._chM=e,this._n=\"SocketHandler\",this._promiseMap=new Map,this._readyState=lo,this._simpleRequestMap=new Map,this.MAX_SIZE=100,this._startSequence=je(),this._startTs=0,this._reConnectFlag=!1,this._nextPingTs=0,this._reConnectCount=0,this.MAX_RECONNECT_COUNT=3,this._socketID=-1,this._random=0,this._socket=null,this._url=\"\",this._onOpenTs=0,this._canIUseBinaryFrame=!0,this._isWorkerEnabled=!0,this._currentSite=c,this._setWebsocketHost(),this._initConnection()}_setWebsocketHost(){const e=this._chM.get(Rs);this._currentSite=c,this._chM.isOversea()&&(this._currentSite=l),e.isSingaporeSite()?this._currentSite=u:e.isKoreaSite()?this._currentSite=d:e.isGermanySite()?this._currentSite=_:e.isIndiaSite()?this._currentSite=h:e.isJapanSite()?this._currentSite=p:e.isUSASite()?this._currentSite=g:e.isIndonesiaSite()&&(this._currentSite=m),f.HOST.setCurrent(this._currentSite)}_initConnection(){var e=this._chM.get(Rs).getSDKAppID()+\"\",t=this._chM.get(Rs).isIndependentDomainDisabled();$e(f.HOST.CURRENT.BACKUP)?this._url=f.HOST.CURRENT.DEFAULT:\"\"===this._url?this._url=t?f.HOST.CURRENT.DEFAULT:f.HOST.CURRENT.DEFAULT0.replace(\"*\",e):-1{const{reject:s,timestamp:i,headSeq:n}=e;let o=15e3;-1!==t.indexOf(ri.LOGIN)?o=9e4:-1!==t.indexOf(ri.PING)&&(o=3e3),Date.now()-i>=o&&(Ce.l(this._n+\"._checkPromiseMap request timeout, delete requestID:\"+t),this._promiseMap.delete(t),s(new Qs({code:ei.NETWORK_TIMEOUT,data:{headSeq:n}})),this._chM.onRequestTimeout())})}_checkNativeAppWS(){P&&!this.isConnected()&&this._reConnect()}onOpen(e){var t,s;this._readyState!==lo&&(this._onOpenTs=Date.now(),{id:e,res:t}=e,this._socketID=e,s=Dt(this._startTs,!1),e=`socketID:${e} res:`+t,Ce.l(this._n+`._onOpen cost:${s} ms. `+e),new Ti(\"wsOnOpen\").setMessage(s).setCostTime(s).setMoreMessage(e).end(),this._readyState=ao,this._reConnectCount=0,this._resend(),!0===this._reConnectFlag&&(this._chM.onReconnected(),this._reConnectFlag=!1),this._chM.onOpen())}onClose(e){const t=new Ti(\"wsOnClose\"),{id:s,e:i}=e,n=`sourceSocketID:${s} currentSocketID:${this._socketID} code:${i.code} reason:`+i.reason;let o=0;0!==this._onOpenTs&&(o=Date.now()-this._onOpenTs),t.setMessage(o).setCostTime(o).setMoreMessage(n).setCode(i.code).end(!0),Ce.l(this._n+`._onClose ${n} onlineTime:`+o),s===this._socketID&&(this._readyState=lo,o<1e3?this._chM.onReconnectFailed():this._chM.onClose())}onError(e){var{id:e,e:t}=e,s=`sourceSocketID:${e} currentSocketID:`+this._socketID;new Ti(\"wsOnError\").setMessage(t.errMsg||JSON.stringify(t,[\"message\",\"code\"])).setMoreMessage(s).setLevel(\"error\").end(!0),Ce.w(this._n+\"._onError\",t,s),e===this._socketID&&(this._readyState=lo,this._chM.onError())}onMessage(t){let s;try{s=JSON.parse(t.data)}catch(e){new Ti(\"jsonParseError\").setMessage(t.data).end()}if(s&&s.head){const i=this._getRequestIDFromHead(s.head);let e=s.body;if(!this._chM.get(Bs).isTRTCCommand(i)){const t=ft(s.head);e=eo(s.body,this._getResKeyMap(t))}if(Ce.d(`${this._n}.onMessage ret:${JSON.stringify(e)} requestID:${i} has:`+this._promiseMap.has(i)),this._setNextPingTs(),this._promiseMap.has(i)){const{resolve:t,reject:s,timestamp:n,headSeq:o}=this._promiseMap.get(i);return this._promiseMap.delete(i),this._calcRTT(n),void(e.errorCode&&0!==e.errorCode?(this._chM.onErrorCodeNotZero(e),s(new Qs({code:e.errorCode,message:e.errorInfo||\"\",data:i.includes(ri.MODIFY_C2C_MSG)||i.includes(ri.MODIFY_GRP_MSG)?{elements:e.elements,messageVersion:e.messageVersion,cloudCustomData:e.cloudCustomData,headSeq:o}:{headSeq:o}}))):t(Zs(e)))}this._chM.onMessage({head:s.head,body:e})}}_calcRTT(e){e=Date.now()-e;this._chM.get($s).addRTT(e)}_connect(){this._readyState!==co&&this._readyState!==ao&&(this._startTs=Date.now(),this._onOpenTs=0,this._readyState=co,this._socket=new no(this),this._socketID=this._socket.getID(),Ce.l(`${this._n}._connect isWorkerEnabled:${this.getIsWorkerEnabled()} socketID:${this._socketID} url:`+this.getURL()),new Ti(\"wsConnect\").setMessage(`socketID:${this._socketID} url:`+this.getURL()).end())}getURL(){this._chM.isDevMode()&&(this._canIUseBinaryFrame=!1);var e=ht();(O||S&&\"windows\"===e||P)&&(this._canIUseBinaryFrame=!1);let t=-1;\"ios\"===e?t=Y||-1:\"android\"===e&&(t=j||-1);const s=this._chM.get(Rs),i=this._chM.getPlatform();let n=`sdkappid=${s.getSDKAppID()}&instanceid=${s.getInstanceID()}&random=${this._getRandom()}&platform=${i}&host=${e}&version=${t}&sdkversion=3.5.2`;return D&&(n+=\"&isminigame=1\"),this._chM.canIUseInflate()&&(n+=\"&compress=gzip\"),this._canIUseBinaryFrame?this._url+\"/binfo?\"+n:this._url+\"/info?\"+n}_closeConnection(e){Ce.l(this._n+\"._closeConnection socketID:\"+this._socketID),this._socket&&(this._socket.close(e),this._socketID=-1,this._socket=null,this._readyState=lo)}_resend(){if(Ce.l(this._n+\"._resend reConnectFlag:\"+this._reConnectFlag,`promiseMap.size:${this._promiseMap.size} simpleRequestMap.size:`+this._simpleRequestMap.size),0{var{uplinkData:e,resolve:s,reject:i}=e;-1!==t.indexOf(ri.AV_POLLING)?this._promiseMap.delete(t):(this._promiseMap.set(t,{resolve:s,reject:i,timestamp:Date.now(),uplinkData:e}),this._execute(t,e))}),0{this._promiseMap.set(n,{resolve:e,reject:t,timestamp:Date.now(),uplinkData:o,headSeq:s.head.seq}),Ce.d(`${this._n}.send uplinkData:${JSON.stringify(i)} requestID:${n} readyState:`+this._readyState),this._readyState!==ao?this._reConnect():(this._execute(n,o),this._chM.get($s).addRequestCount())})}simplySend(e){e.head.seq=this._getSequence(),e.head.reqtime=Math.floor(Date.now()/1e3);const{keyMap:t,...s}=e,i=this._getRequestIDFromHead(e.head),n=JSON.stringify(s);this._readyState!==ao?(this._simpleRequestMap.size>>1^3988292384:i>>>=1}return(4294967295^i)>>>0}close(){Ce.l(this._n+\".close\"),this._closeConnection(oo),this._promiseMap.clear(),this._startSequence=je(),this._readyState=lo,this._simpleRequestMap.clear(),this._reConnectFlag=!1,this._reConnectCount=0,this._onOpenTs=0,this._url=\"\",this._random=0,this._canIUseBinaryFrame=!0,this._isWorkerEnabled=!0}}const _o=function(o,r,a){return new Promise((t,e)=>{var s=\"application/x-www-form-urlencoded;charset=UTF-8\";if(k)$.request({url:r,data:a,method:o,timeout:3e3,header:{\"content-type\":s},success:e=>{e&&e.data&&e.data.NetCheckInfo&&Ce.l(\"getconninfo ok in miniapp. ret:\",e.data),t()},fail:()=>{e(new Qs({code:ei.NETWORK_ERROR}))}});else{const i=new XMLHttpRequest,n=setTimeout(()=>{i.abort(),e(new Qs({code:ei.NETWORK_TIMEOUT}))},3e3);i.onreadystatechange=function(){4===i.readyState&&(n&&clearTimeout(n),200===i.status||304===i.status?(i.responseText&&-1{this._probing=!1}).catch(e=>{this._probing=!1;var s=this.get(Os).isOnline();if(Ce.w(this._n+`._ping failed. bOnline:${s} error:`,e),e&&60002===e.code)return new Ti(\"error\").setMessage(`code:${e.code} message:`+e.message).end(),this._fatalErrorFlag=!0,void this._emitNetStateChangeEvent(t.NET_STATE_DISCONNECTED);s?this.reConnect():this._emitNetStateChangeEvent(t.NET_STATE_DISCONNECTED)}))}_checkNextPing(){this._socketHandler&&this._socketHandler.isConnected()&&Date.now()>=this._socketHandler.getNextPingTs()&&this._ping()}dealloc(){this._socketHandler&&(this._socketHandler.close(),this._socketHandler=null),-1{Ce.w(this._n+\"._diagnoseBySSO failed. error:\",e)}))}_diagnoseByCDN(){const e=this._socketHandler.getURL(),t=`https://boce-cdn.my-imcloud.com/v3/netcheck/getconninfo?${e.slice(e.indexOf(\"info?\")+5)}&reqtime=`+Date.now();_o(\"GET\",t).catch(e=>{Ce.w(this._n+\"._diagnoseByCDN failed. error:\",e)})}reset(){Ce.l(this._n+\".reset\"),this._previousState=t.NET_STATE_CONNECTED,this._probing=!1,this._fatalErrorFlag=!1,this._timerForNotLoggedIn=setInterval(this.onCheckTimer.bind(this),1e3),this._disconnectedTS=0,this._lastDiagnoseTS=0}}class po{constructor(e){this._n=\"PHandler\",this._sessionM=e,this._map=new Map,this._fillMap()}_fillMap(){this._map.clear();var i=this._sessionM.genCommonHead(),e=this._sessionM.genCosSpecifiedHead(),t=this._sessionM.genSSOReportHead();this._map.set(ri.LOGIN,{head:{...i,servcmd:f.NAME.IM_OPEN_STATUS+\".\"+ri.LOGIN},body:{state:\"Online\",isWebUniapp:0,deviceBrand:0,customInfo:\"\"},keyMap:{req:{deviceBrand:\"InstType\"},res:{InstId:\"instanceID\",HelloInterval:\"helloInterval\",RichMsgAuthKey:\"authKey\"}}}),this._map.set(ri.LOGOUT,{head:{...i,servcmd:f.NAME.IM_OPEN_STATUS+\".\"+ri.LOGOUT},body:{type:0,isWebUniapp:0},keyMap:{req:{type:\"wslogout_type\"}}}),this._map.set(ri.HELLO,{head:{...i,servcmd:f.NAME.IM_OPEN_STATUS+\".\"+ri.HELLO},body:{isWebUniapp:0},keyMap:{res:{NewInstInfo:\"newInstanceInfo\"}}}),this._map.set(ri.KICK_OTHER,{head:{...i,servcmd:f.NAME.STAT_SERVICE+\".\"+ri.KICK_OTHER},body:{}}),this._map.set(ri.COS_SIGN,{head:{...e,servcmd:f.NAME.IM_COS_SIGN+\".\"+ri.COS_SIGN},body:{cmd:\"open_im_cos_svc\",subCmd:\"get_cos_token\",duration:300,version:2},keyMap:{req:{userSig:\"usersig\",subCmd:\"sub_cmd\",cmd:\"cmd\",duration:\"duration\",version:\"version\"},res:{expired_time:\"expiredTime\",bucket_name:\"bucketName\",session_token:\"sessionToken\",tmp_secret_id:\"secretId\",tmp_secret_key:\"secretKey\"}}}),this._map.set(ri.COS_PRE_SIG,{head:{...e,servcmd:f.NAME.CUSTOM_UPLOAD+\".\"+ri.COS_PRE_SIG},body:{fileType:void 0,fileName:void 0,uploadMethod:0,duration:900},keyMap:{req:{userSig:\"usersig\",fileType:\"file_type\",fileName:\"file_name\",uploadMethod:\"upload_method\"},res:{expired_time:\"expiredTime\",request_id:\"requestId\",head_url:\"headUrl\",upload_url:\"uploadUrl\",download_url:\"downloadUrl\",ci_url:\"ciUrl\",snapshot_url:\"requestSnapshotUrl\"}}}),this._map.set(ri.SIMPLE_COS_PRE_SIG,{head:{...e,servcmd:f.NAME.CUSTOM_UPLOAD+\".\"+ri.SIMPLE_COS_PRE_SIG},body:{uploadMethod:0,platform:2,SDKAppID:0,userID:\"\",conversationType:1,uploadConfig:[{fileID:1,fileType:1,fileName:\"\"}]},keyMap:{req:{platform:\"uint32_platform\",SDKAppID:\"uint32_sdkappid\",userID:\"str_user_id\",uploadMethod:\"uint32_upload_method\",conversationType:\"uint32_scene\",uploadConfig:\"rpt_upload_object\",fileID:\"uint32_file_id\",fileType:\"uint32_file_type\",fileName:\"str_file_name\"},res:{str_final_ip:\"uploadIP\",rpt_pre_sig:\"preSig\",uint32_file_id:\"fileID\",uint32_exist_flag:\"existFlag\",str_download_url:\"downloadUrl\",str_upload_url:\"uploadUrl\",str_snapshot_url:\"requestSnapshotUrl\",str_file_key:\"fileKey\"}}}),this._map.set(ri.GET_IMAGE_INFO,{head:{...e,servcmd:f.NAME.CUSTOM_UPLOAD+\".\"+ri.GET_IMAGE_INFO},body:{imageUrl:\"\"},keyMap:{req:{imageUrl:\"str_image_url\"},res:{rpt_msg_image_info:\"imageInfoArray\",uint32_image_type:\"type\",str_url:\"url\",uint32_width:\"width\",uint32_height:\"height\",str_image_format:\"imageFormat\"}}}),this._map.set(ri.GET_IP,{head:{...e,servcmd:f.NAME.CUSTOM_UPLOAD+\".\"+ri.GET_IP},body:{domainName:\"\"},keyMap:{req:{domainName:\"str_domain\"},res:{str_final_ip:\"ip\"}}}),this._map.set(ri.VIDEO_COVER,{head:{...e,servcmd:f.NAME.CUSTOM_UPLOAD+\".\"+ri.VIDEO_COVER},body:{version:1,platform:void 0,coverName:void 0,requestSnapshotUrl:void 0},keyMap:{req:{version:\"version\",platform:\"platform\",coverName:\"cover_name\",requestSnapshotUrl:\"snapshot_url\"},res:{error_code:\"errorCode\",error_msg:\"errorInfo\",download_url:\"snapshotUrl\"}}}),this._map.set(ri.FETCH_COMMERCIAL_CONFIG,{head:{...i,servcmd:f.NAME.IM_CONFIG_MANAGER+\".\"+ri.FETCH_COMMERCIAL_CONFIG},body:{SDKAppID:0},keyMap:{req:{SDKAppID:\"uint32_sdkappid\"},res:{int32_error_code:\"errorCode\",str_error_message:\"errorMessage\",str_purchase_bits:\"purchaseBits\",uint32_expired_time:\"expiredTime\"}}}),this._map.set(ri.PUSHED_COMMERCIAL_CONFIG,{head:{...i,servcmd:f.NAME.IM_CONFIG_MANAGER+\".\"+ri.PUSHED_COMMERCIAL_CONFIG},body:{},keyMap:{res:{int32_error_code:\"errorCode\",str_error_message:\"errorMessage\",str_purchase_bits:\"purchaseBits\",uint32_expired_time:\"expiredTime\"}}}),this._map.set(ri.FETCH_CLOUD_CTRL_CONFIG,{head:{...i,servcmd:f.NAME.IM_CONFIG_MANAGER+\".\"+ri.FETCH_CLOUD_CTRL_CONFIG},body:{SDKAppID:0,version:0},keyMap:{req:{SDKAppID:\"uint32_sdkappid\",version:\"uint64_version\"},res:{int32_error_code:\"errorCode\",str_error_message:\"errorMessage\",str_json_config:\"cloudControlConfig\",uint32_expired_time:\"expiredTime\",uint32_sdkappid:\"SDKAppID\",uint64_version:\"version\"}}}),this._map.set(ri.PUSHED_CLOUD_CTRL_CONFIG,{head:{...i,servcmd:f.NAME.IM_CONFIG_MANAGER+\".\"+ri.PUSHED_CLOUD_CTRL_CONFIG},body:{},keyMap:{res:{int32_error_code:\"errorCode\",str_error_message:\"errorMessage\",str_json_config:\"cloudControlConfig\",uint32_expired_time:\"expiredTime\",uint32_sdkappid:\"SDKAppID\",uint64_version:\"version\"}}}),this._map.set(ri.OVERLOAD_NOTIFY,{head:{...i,servcmd:f.NAME.OVERLOAD_PUSH+\".\"+ri.OVERLOAD_NOTIFY},body:{},keyMap:{res:{OverLoadServCmd:\"overloadCommand\",DelaySecs:\"waitingTime\"}}}),this._map.set(ri.SYNC_UNREAD_MSG,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.SYNC_UNREAD_MSG},body:{cookie:\"\",syncFlag:0,needAbstract:1,isOnlineSync:0,needSignaling:1,needCachedMsg:1},keyMap:{req:{fromAccount:\"From_Account\",toAccount:\"To_Account\",from:\"From_Account\",to:\"To_Account\",time:\"MsgTimeStamp\",sequence:\"MsgSeq\",random:\"MsgRandom\",elements:\"MsgBody\"},res:{MsgList:\"messageList\",SyncFlag:\"syncFlag\",To_Account:\"to\",From_Account:\"from\",ClientSeq:\"clientSequence\",MsgSeq:\"sequence\",NoticeSeq:\"noticeSequence\",NotifySeq:\"notifySequence\",MsgRandom:\"random\",MsgTimeStamp:\"time\",MsgContent:\"content\",ToGroupId:\"to\",MsgKey:\"messageKey\",GroupTips:\"groupTips\",MsgBody:\"elements\",MsgType:\"type\",C2CRemainingUnreadCount:\"C2CRemainingUnreadList\",C2CPairUnreadCount:\"C2CPairUnreadList\"}}}),this._map.set(ri.GET_PROFANITY_LIST,{head:{...i,servcmd:f.NAME.IM_MSG_AUDIT_MGR+\".\"+ri.GET_PROFANITY_LIST},body:{version:0,deviceID:\"\",startIndex:void 0},keyMap:{req:{version:\"uint64_version\",deviceID:\"str_device_id\",startIndex:\"uint64_start_index\"},res:{msg_cmd_error_code:\"errorInfo\",str_err_msg:\"errorMessage\",uint32_code:\"errorCode\",msg_scene_ctl_config:\"filterConfig\",uint64_c2c_custom_msg_flag:\"c2c_custom_message\",uint64_c2c_text_msg_flag:\"c2c_text_message\",uint64_group_custom_msg_flag:\"group_custom_message\",uint64_group_text_msg_flag:\"group_text_message\",uint64_group_info_flag:\"group_profile\",uint64_group_member_info_flag:\"group_member_profile\",uint64_relation_chain_flag:\"sns\",uint64_user_info_flag:\"user_profile\",rpt_msg_dirty_word:\"lexicon\",str_dirty_word:\"profanity\",str_replaced_content:\"replacement\",uint64_filter_type:\"filterType\",uint64_id:\"id\",uint64_word_type:\"profanityType\",uint64_complete_flag:\"completeFlag\",uint64_next_start_index:\"nextStartIndex\",uint64_version:\"version\",uint64_expired_time:\"expiredTime\"}}}),this._map.set(ri.SEND_C2C_MSG,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.SEND_C2C_MSG},body:{fromAccount:\"\",toAccount:\"\",msgSeq:0,msgRandom:0,msgBody:[],cloudCustomData:void 0,nick:\"\",avatar:\"\",msgLifeTime:void 0,offlinePushInfo:{pushFlag:0,title:\"\",desc:\"\",ext:\"\",apnsInfo:{sound:\"\",badgeMode:0,isVoipPush:void 0,image:\"\"},androidInfo:{sound:\"\",XiaoMiChannelID:\"\",OPPOChannelID:\"\",GoogleChannelID:\"\",VIVOClassification:1,VIVOCategory:\"\",HuaWeiCategory:\"\",OPPOCategory:\"\",HuaWeiImage:\"\",HonorImage:\"\",GoogleImage:\"\",HonorImportance:\"\"}},messageControlInfo:void 0,clientTime:void 0,needReadReceipt:0,isSupportExtension:0,isRelayMessage:0,cmConfigID:void 0,forbidCallbackControl:void 0},keyMap:{req:{fromAccount:\"From_Account\",toAccount:\"To_Account\",msgTimeStamp:\"MsgTimeStamp\",msgSeq:\"MsgSeq\",msgRandom:\"MsgRandom\",msgBody:\"MsgBody\",count:\"MaxCnt\",lastMessageTime:\"LastMsgTime\",messageKey:\"MsgKey\",peerAccount:\"Peer_Account\",data:\"Data\",description:\"Desc\",extension:\"Ext\",type:\"MsgType\",content:\"MsgContent\",sizeType:\"Type\",uuid:\"UUID\",url:\"\",imageUrl:\"URL\",fileUrl:\"Url\",remoteAudioUrl:\"Url\",remoteVideoUrl:\"VideoUrl\",thumbUUID:\"ThumbUUID\",videoUUID:\"VideoUUID\",videoUrl:\"\",downloadFlag:\"Download_Flag\",nick:\"From_AccountNick\",avatar:\"From_AccountHeadurl\",from:\"From_Account\",time:\"MsgTimeStamp\",messageRandom:\"MsgRandom\",messageSequence:\"MsgSeq\",elements:\"MsgBody\",clientSequence:\"ClientSeq\",payload:\"MsgContent\",messageList:\"MsgList\",messageNumber:\"MsgNum\",abstractList:\"AbstractList\",messageBody:\"MsgBody\",needReadReceipt:\"IsNeedReadReceipt\",GoogleChannelID:\"GoogleChannelID\",XiaoMiChannelID:\"XiaoMiChannelID\",OPPOChannelID:\"OPPOChannelID\",OPPOCategory:\"OPPOCategory\",VIVOClassification:\"VIVOClassification\",VIVOCategory:\"VIVOCategory\",HonorImportance:\"HonorImportance\"}}}),this._map.set(ri.SEND_GRP_MSG,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.SEND_GRP_MSG},body:{fromAccount:\"\",groupID:\"\",random:0,clientSequence:0,priority:\"\",msgBody:[],cloudCustomData:void 0,onlineOnlyFlag:0,offlinePushInfo:{pushFlag:0,title:\"\",desc:\"\",ext:\"\",apnsInfo:{sound:\"\",badgeMode:0,isVoipPush:void 0,image:\"\"},androidInfo:{sound:\"\",XiaoMiChannelID:\"\",OPPOChannelID:\"\",GoogleChannelID:\"\",VIVOClassification:1,VIVOCategory:\"\",HuaWeiCategory:\"\",OPPOCategory:\"\",HuaWeiImage:\"\",HonorImage:\"\",GoogleImage:\"\",HonorImportance:\"\"}},groupAtInfo:[],messageControlInfo:void 0,clientTime:void 0,needReadReceipt:0,topicID:void 0,receiverList:void 0,isSupportExtension:0,isRelayMessage:0,cmConfigID:void 0,forbidCallbackControl:void 0},keyMap:{req:{to:\"GroupId\",extension:\"Ext\",data:\"Data\",description:\"Desc\",random:\"Random\",sequence:\"ReqMsgSeq\",count:\"ReqMsgNumber\",type:\"MsgType\",priority:\"MsgPriority\",content:\"MsgContent\",elements:\"MsgBody\",sizeType:\"Type\",uuid:\"UUID\",url:\"\",imageUrl:\"URL\",fileUrl:\"Url\",remoteAudioUrl:\"Url\",remoteVideoUrl:\"VideoUrl\",thumbUUID:\"ThumbUUID\",videoUUID:\"VideoUUID\",videoUrl:\"\",downloadFlag:\"Download_Flag\",clientSequence:\"ClientSeq\",from:\"From_Account\",time:\"MsgTimeStamp\",messageRandom:\"MsgRandom\",messageSequence:\"MsgSeq\",payload:\"MsgContent\",messageList:\"MsgList\",messageNumber:\"MsgNum\",abstractList:\"AbstractList\",messageBody:\"MsgBody\",needReadReceipt:\"NeedReadReceipt\",receiverList:\"To_Account\",GoogleChannelID:\"GoogleChannelID\",XiaoMiChannelID:\"XiaoMiChannelID\",OPPOChannelID:\"OPPOChannelID\",OPPOCategory:\"OPPOCategory\",VIVOClassification:\"VIVOClassification\",VIVOCategory:\"VIVOCategory\",HonorImportance:\"HonorImportance\"},res:{MsgTime:\"time\",MsgSeq:\"sequence\"}}}),this._map.set(ri.REVOKE_C2C_MSG,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.REVOKE_C2C_MSG},body:{msgInfo:{fromAccount:\"\",toAccount:\"\",msgTimeStamp:0,msgSeq:0,msgRandom:0}},keyMap:{req:{msgInfo:\"MsgInfo\",msgTimeStamp:\"MsgTimeStamp\",msgSeq:\"MsgSeq\",msgRandom:\"MsgRandom\"}}}),this._map.set(ri.REVOKE_GRP_MSG,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.REVOKE_GRP_MSG},body:{groupID:\"\",msgSeqList:void 0,topicID:\"\"},keyMap:{req:{msgSeqList:\"MsgSeqList\",msgSeq:\"MsgSeq\"}}}),this._map.set(ri.GET_C2C_ROAMING_MSG,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.GET_C2C_ROAMING_MSG},body:{peerAccount:\"\",count:15,lastMessageTime:0,messageKey:\"\",withRecalledMessage:1,direction:0},keyMap:{req:{messageKey:\"MsgKey\",peerAccount:\"Peer_Account\",count:\"MaxCnt\",lastMessageTime:\"LastMsgTime\",withRecalledMessage:\"WithRecalledMsg\",direction:\"GetDirection\"},res:{LastMsgTime:\"lastMessageTime\",IsNeedReadReceipt:\"needReadReceipt\",IsPeerRead:\"readReceiptSentByPeer\"}}}),this._map.set(ri.MODIFY_C2C_MSG,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.MODIFY_C2C_MSG},body:{from:\"\",to:\"\",sequence:0,random:0,time:0,version:0,elements:void 0,cloudCustomData:void 0},keyMap:{req:{sequence:\"MsgSeq\",random:\"MsgRandom\",time:\"MsgTime\",version:\"MsgVersion\",type:\"MsgType\",content:\"MsgContent\"}}}),this._map.set(ri.GET_GRP_ROAMING_MSG,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.GET_GRP_ROAMING_MSG},body:{withRecalledMsg:1,groupID:\"\",count:15,sequence:\"\",topicID:void 0},keyMap:{req:{sequence:\"ReqMsgSeq\",count:\"ReqMsgNumber\",withRecalledMessage:\"WithRecalledMsg\"},res:{Random:\"random\",MsgTime:\"time\",MsgSeq:\"sequence\",ReqMsgSeq:\"sequence\",RspMsgList:\"messageList\",IsSystemMsg:\"isSystemMessage\",ToGroupId:\"to\",EnumFrom_AccountType:\"fromAccountType\",EnumTo_AccountType:\"toAccountType\",GroupCode:\"groupCode\",MsgPriority:\"priority\",MsgBody:\"elements\",MsgType:\"type\",MsgContent:\"content\",IsFinished:\"complete\",Download_Flag:\"downloadFlag\",ClientSeq:\"clientSequence\",ThumbUUID:\"thumbUUID\",VideoUUID:\"videoUUID\",ToTopicId:\"topicID\",InvisibleMsgSeq:\"invisibleSequenceList\",NextReqMsgSeq:\"nextSequence\"}}}),this._map.set(ri.SET_C2C_MSG_READ,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.SET_C2C_MSG_READ},body:{C2CMsgReaded:void 0},keyMap:{req:{lastMessageTime:\"LastedMsgTime\"}}}),this._map.set(ri.SET_C2C_PEER_MUTE_NOTIFICATIONS,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.SET_C2C_PEER_MUTE_NOTIFICATIONS},body:{userIDList:void 0,muteFlag:0},keyMap:{req:{userIDList:\"Peer_Account\",muteFlag:\"Mute_Notifications\"}}}),this._map.set(ri.GET_C2C_PEER_MUTE_NOTIFICATIONS,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.GET_C2C_PEER_MUTE_NOTIFICATIONS},body:{toAccount:void 0,userIDList:void 0},keyMap:{req:{userIDList:\"Peer_Account\"},res:{MuteNotificationsList:\"muteFlagList\"}}}),this._map.set(ri.SET_GRP_MSG_READ,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.SET_GRP_MSG_READ},body:{groupID:void 0,messageReadSeq:void 0,topicID:void 0},keyMap:{req:{messageReadSeq:\"MsgReadedSeq\"}}}),this._map.set(ri.SET_ALL_MSG_READ,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.SET_ALL_MSG_READ},body:{readAllC2CMessage:0,groupMessageReadInfoList:[]},keyMap:{req:{readAllC2CMessage:\"C2CReadAllMsg\",groupMessageReadInfoList:\"GroupReadInfo\",messageSequence:\"MsgSeq\"},res:{C2CReadAllMsg:\"readAllC2CMessage\",GroupReadInfoArray:\"groupMessageReadInfoList\"}}}),this._map.set(ri.DEL_C2C_MSG,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.DEL_C2C_MSG},body:{fromAccount:\"\",to:\"\",keyList:void 0},keyMap:{req:{keyList:\"MsgKeyList\"}}}),this._map.set(ri.DEL_GRP_MSG,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.DEL_GRP_MSG},body:{groupID:\"\",deleter:\"\",keyList:void 0,topicID:void 0},keyMap:{req:{deleter:\"Deleter_Account\",keyList:\"Seqs\"}}}),this._map.set(ri.TRANSLATE_TEXT,{head:{...i,servcmd:f.NAME.IM_OPEN_TRANSLATE+\".\"+ri.TRANSLATE_TEXT},body:{sourceTextList:void 0,SDKAppID:0,from:0,source:\"\",target:\"\"},keyMap:{req:{sourceTextList:\"SourceText\",SDKAppID:\"SdkAppId\",from:\"FromAccount\"},res:{TargetText:\"translatedTextList\",RequestId:\"requestID\",CmdErrorCode:\"error\",ErrorCode:\"code\",ErrorInfo:\"message\"}}}),this._map.set(ri.VOICE_TO_TEXT,{head:{...i,servcmd:f.NAME.IM_OPEN_SPEECH+\".\"+ri.VOICE_TO_TEXT},body:{url:\"\",SDKAppID:0,format:\"\",sourceType:0,language:\"\"},keyMap:{req:{url:\"BytesUrl\",SDKAppID:\"Uint32Sdkappid\",format:\"BytesVoiceFormat\",sourceType:\"Uint64SourceType\",language:\"BytesEngServiceType\"},res:{BytesRequestid:\"requestID\",BytesResult:\"result\",CmdErrorCode:\"error\",ErrorCode:\"code\",ErrorInfo:\"message\"}}}),this._map.set(ri.MODIFY_GRP_MSG,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.MODIFY_GRP_MSG},body:{groupID:\"\",topicID:void 0,sequence:0,version:0,elements:void 0,cloudCustomData:void 0},keyMap:{req:{sequence:\"MsgSeq\",version:\"MsgVersion\",type:\"MsgType\",content:\"MsgContent\"}}}),this._map.set(ri.GET_READ_RECEIPT,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.GET_READ_RECEIPT},body:{groupID:\"\",sequenceList:void 0},keyMap:{req:{sequence:\"MsgSeq\"}}}),this._map.set(ri.SEND_C2C_READ_RECEIPT,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.SEND_C2C_READ_RECEIPT},body:{peerAccount:\"\",messageInfoList:void 0},keyMap:{req:{peerAccount:\"Peer_Account\",messageInfoList:\"C2CMsgInfo\",fromAccount:\"From_Account\",toAccount:\"To_Account\",sequence:\"MsgSeq\",random:\"MsgRandom\",time:\"MsgTime\",clientTime:\"MsgClientTime\"}}}),this._map.set(ri.SEND_READ_RECEIPT,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.SEND_READ_RECEIPT},body:{groupID:\"\",sequenceList:void 0},keyMap:{req:{sequenceList:\"MsgSeqList\",sequence:\"MsgSeq\"}}}),this._map.set(ri.GET_READ_RECEIPT_DETAIL,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.GET_READ_RECEIPT_DETAIL},body:{groupID:\"\",sequence:void 0,flag:0,cursor:0,count:0},keyMap:{req:{sequence:\"MsgSeq\",count:\"Num\"},res:{ReadList:\"readUserIDList\",Read_Account:\"userID\",UnreadList:\"unreadUserIDList\",Unread_Account:\"userID\",IsFinish:\"isCompleted\"}}}),this._map.set(ri.MODIFY_C2C_MSG_EXT,{head:{...i,servcmd:f.NAME.OPEN_IM_MSG_EXT+\".\"+ri.MODIFY_C2C_MSG_EXT},body:{from:void 0,to:void 0,messageKey:void 0,operateType:void 0,extensionList:void 0}}),this._map.set(ri.GET_C2C_MSG_EXT,{head:{...i,servcmd:f.NAME.OPEN_IM_MSG_EXT+\".\"+ri.GET_C2C_MSG_EXT},body:{from:void 0,to:void 0,messageKey:void 0,startSequence:void 0}}),this._map.set(ri.MODIFY_GRP_MSG_EXT,{head:{...i,servcmd:f.NAME.OPEN_IM_MSG_EXT+\".\"+ri.MODIFY_GRP_MSG_EXT},body:{groupID:void 0,topicID:void 0,messageSequence:void 0,operateType:void 0,extensionList:void 0}}),this._map.set(ri.GET_GRP_MSG_EXT,{head:{...i,servcmd:f.NAME.OPEN_IM_MSG_EXT+\".\"+ri.GET_GRP_MSG_EXT},body:{groupID:void 0,topicID:void 0,messageSequence:void 0,startSequence:void 0}}),this._map.set(ri.ADD_C2C_MSG_REACTION,{head:{...i,servcmd:f.NAME.OPEN_IM_MSG_EXT+\".\"+ri.ADD_C2C_MSG_REACTION},body:{from:void 0,to:void 0,reactionID:void 0,messageKey:void 0,userIDList:void 0},keyMap:{req:{userIDList:\"Add_Account\"}}}),this._map.set(ri.RM_C2C_MSG_REACTION,{head:{...i,servcmd:f.NAME.OPEN_IM_MSG_EXT+\".\"+ri.RM_C2C_MSG_REACTION},body:{from:void 0,to:void 0,reactionID:void 0,messageKey:void 0,userIDList:void 0},keyMap:{req:{userIDList:\"Del_Account\"}}}),this._map.set(ri.GET_C2C_MSG_REACTIONS,{head:{...i,servcmd:f.NAME.OPEN_IM_MSG_EXT+\".\"+ri.GET_C2C_MSG_REACTIONS},body:{from:void 0,to:void 0,messageKeyList:void 0,count:void 0}}),this._map.set(ri.GET_C2C_MSG_REACTION_USER_LIST,{head:{...i,servcmd:f.NAME.OPEN_IM_MSG_EXT+\".\"+ri.GET_C2C_MSG_REACTION_USER_LIST},body:{from:void 0,to:void 0,reactionID:void 0,messageKey:void 0,count:void 0}}),this._map.set(ri.ADD_GRP_MSG_REACTION,{head:{...i,servcmd:f.NAME.OPEN_IM_MSG_EXT+\".\"+ri.ADD_GRP_MSG_REACTION},body:{groupID:void 0,topicID:void 0,reactionID:void 0,messageSequence:void 0,userIDList:void 0},keyMap:{req:{userIDList:\"Add_Account\"}}}),this._map.set(ri.RM_GRP_MSG_REACTION,{head:{...i,servcmd:f.NAME.OPEN_IM_MSG_EXT+\".\"+ri.RM_GRP_MSG_REACTION},body:{groupID:void 0,topicID:void 0,reactionID:void 0,messageSequence:void 0,userIDList:void 0},keyMap:{req:{userIDList:\"Del_Account\"}}}),this._map.set(ri.GET_GRP_MSG_REACTIONS,{head:{...i,servcmd:f.NAME.OPEN_IM_MSG_EXT+\".\"+ri.GET_GRP_MSG_REACTIONS},body:{groupID:void 0,topicID:void 0,messageSequenceList:void 0,count:void 0},keyMap:{res:{MsgSeq:\"messageSequence\"}}}),this._map.set(ri.GET_GRP_MSG_REACTION_USER_LIST,{head:{...i,servcmd:f.NAME.OPEN_IM_MSG_EXT+\".\"+ri.GET_GRP_MSG_REACTION_USER_LIST},body:{groupID:void 0,topicID:void 0,reactionID:void 0,messageSequence:void 0,nextSeq:void 0,count:void 0}}),this._map.set(ri.GET_C2C_PEER_READ_TIME,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.GET_C2C_PEER_READ_TIME},body:{userIDList:void 0},keyMap:{req:{userIDList:\"To_Account\"},res:{ReadTime:\"peerReadTimeList\"}}}),this._map.set(ri.PAGING_GET_CONV_LIST,{head:{...i,servcmd:f.NAME.RECENT_CONTACT+\".\"+ri.PAGING_GET_CONV_LIST},body:{fromAccount:void 0,timeStamp:void 0,startIndex:void 0,pinnedTimeStamp:void 0,pinnedStartIndex:void 0,orderType:void 0,messageAssistFlag:15,assistFlag:31},keyMap:{req:{messageAssistFlag:\"MsgAssistFlags\",assistFlag:\"AssistFlags\",pinnedTimeStamp:\"TopTimeStamp\",pinnedStartIndex:\"TopStartIndex\"},res:{SessionItem:\"conversations\",ToAccount:\"groupID\",To_Account:\"userID\",UnreadMsgCount:\"unreadCount\",MsgGroupReadedSeq:\"messageReadSeq\",C2cPeerReadTime:\"c2cPeerReadTime\",LastMsgFlags:\"lastMessageFlag\",TopFlags:\"isPinned\",TopTimeStamp:\"pinnedTimeStamp\",TopStartIndex:\"pinnedStartIndex\",GroupId:\"convGroupID\",C2cRemark:\"friendRemark\",MsgRecvOption:\"messageRemindType\",GroupIgnoredUnreadSeqCount:\"noUnreadCount\",GroupNextMsgSeq:\"nextMessageSeq\"}}}),this._map.set(ri.DEL_CONV,{head:{...i,servcmd:f.NAME.RECENT_CONTACT+\".\"+ri.DEL_CONV},body:{fromAccount:\"\",conversationList:void 0,clearHistoryMessage:void 0},keyMap:{req:{toGroupID:\"ToGroupid\",clearHistoryMessage:\"ClearRamble\",conversationList:\"ContactItem\"},res:{ResultItem:\"resultList\",ToGroupid:\"groupID\",ResultCode:\"code\",ResultInfo:\"info\"}}}),this._map.set(ri.CLEAR_HISTORY_MSG,{head:{...i,servcmd:f.NAME.RECENT_CONTACT+\".\"+ri.CLEAR_HISTORY_MSG},body:{fromAccount:\"\",toAccount:void 0,type:1,toGroupID:void 0},keyMap:{req:{toGroupID:\"ToGroupid\"}}}),this._map.set(ri.PIN_CONV,{head:{...i,servcmd:f.NAME.RECENT_CONTACT+\".\"+ri.PIN_CONV},body:{fromAccount:\"\",operationType:1,itemList:void 0},keyMap:{req:{itemList:\"RecentContactItem\"}}}),this._map.set(ri.DEL_GROUP_AT_TIPS,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.DEL_GROUP_AT_TIPS},body:{messageListToDelete:void 0},keyMap:{req:{messageListToDelete:\"DelMsgList\",messageSeq:\"MsgSeq\",messageRandom:\"MsgRandom\"}}}),this._map.set(ri.SET_CONV_CUSTOM_DATA,{head:{...i,servcmd:f.NAME.RECENT_CONTACT+\".\"+ri.MARK_CONV},body:{fromAccount:\"\",itemList:void 0},keyMap:{req:{itemList:\"MarkItem\",operationType:\"OptType\",groupID:\"ToGroupId\"},res:{ToGroupId:\"groupID\",OptType:\"operationType\"}}}),this._map.set(ri.MARK_CONV,{head:{...i,servcmd:f.NAME.RECENT_CONTACT+\".\"+ri.MARK_CONV},body:{fromAccount:\"\",itemList:void 0},keyMap:{req:{itemList:\"MarkItem\",operationType:\"OptType\",groupID:\"ToGroupId\"},res:{ToGroupId:\"groupID\",OptType:\"operationType\"}}}),this._map.set(ri.CREATE_CONV_GRP,{head:{...i,servcmd:f.NAME.RECENT_CONTACT+\".\"+ri.CREATE_CONV_GRP},body:{fromAccount:\"\",itemList:void 0},keyMap:{req:{itemList:\"GroupContactItem\",groupID:\"ToGroupId\"},res:{GroupId:\"convGroupID\",ToGroupId:\"groupID\",OptType:\"operationType\"}}}),this._map.set(ri.DEL_CONV_GRP,{head:{...i,servcmd:f.NAME.RECENT_CONTACT+\".\"+ri.DEL_CONV_GRP},body:{fromAccount:\"\",groupName:void 0},keyMap:{res:{GroupId:\"convGroupID\"}}}),this._map.set(ri.RENAME_CONV_GRP,{head:{...i,servcmd:f.NAME.RECENT_CONTACT+\".\"+ri.RENAME_CONV_GRP},body:{fromAccount:\"\",updateType:void 0,updateGroup:void 0},keyMap:{req:{oldName:\"OldGroupName\",newName:\"NewGroupName\",groupID:\"ToGroupId\",operationType:\"ContactOptType\",groupName:\"OldGroupName\",updateItem:\"ContactUpdateItem\"},res:{ContactOptType:\"operationType\",ToGroupId:\"groupID\",GroupId:\"convGroupID\"}}}),this._map.set(ri.ADD_CONV_TO_GRP,{head:{...i,servcmd:f.NAME.RECENT_CONTACT+\".\"+ri.RENAME_CONV_GRP},body:{fromAccount:\"\",updateType:void 0,updateGroup:{groupName:void 0,updateGroupType:void 0,updateItem:void 0}}}),this._map.set(ri.DEL_CONV_FROM_GRP,{head:{...i,servcmd:f.NAME.RECENT_CONTACT+\".\"+ri.RENAME_CONV_GRP},body:{fromAccount:\"\",updateType:void 0,updateGroup:void 0}}),this._map.set(ri.GET_CONV_GRP_LIST,{head:{...i,servcmd:f.NAME.RECENT_CONTACT+\".\"+ri.GET_CONV_GRP_LIST},body:{fromAccount:\"\",startIndex:void 0},keyMap:{res:{GroupId:\"convGroupID\",ToGroupId:\"groupID\",OptType:\"operationType\",CustomMark:\"customData\",ContactGroupId:\"convGroupIDList\"}}}),this._map.set(ri.SEARCH_CONV_GRP_MARK,{head:{...i,servcmd:f.NAME.RECENT_CONTACT+\".\"+ri.SEARCH_CONV_GRP_MARK},body:{fromAccount:\"\",contactItem:void 0},keyMap:{req:{groupID:\"ToGroupId\"},res:{GroupId:\"convGroupID\",ToGroupId:\"groupID\",OptType:\"operationType\",CustomMark:\"customData\",ContactGroupId:\"convGroupIDList\",ContactResultItem:\"contactItem\"}}}),this._map.set(ri.GET_USER_PROFILE,{head:{...i,servcmd:f.NAME.PROFILE+\".\"+ri.GET_USER_PROFILE},body:{fromAccount:\"\",userItem:[]},keyMap:{req:{toAccount:\"To_Account\",standardSequence:\"StandardSequence\",customSequence:\"CustomSequence\"}}}),this._map.set(ri.UPDATE_MY_PROFILE,{head:{...i,servcmd:f.NAME.PROFILE+\".\"+ri.UPDATE_MY_PROFILE},body:{fromAccount:\"\",profileItem:[{tag:ye.NICK,value:\"\"},{tag:ye.GENDER,value:\"\"},{tag:ye.ALLOWTYPE,value:\"\"},{tag:ye.AVATAR,value:\"\"}]},keyMap:{req:{toAccount:\"To_Account\",standardSequence:\"StandardSequence\",customSequence:\"CustomSequence\"}}}),this._map.set(ri.GET_BL,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.GET_BL},body:{fromAccount:\"\",startIndex:0,maxLimited:30}}),this._map.set(ri.ADD_TO_BL,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.ADD_TO_BL},body:{fromAccount:\"\",toAccount:[]}}),this._map.set(ri.RM_FROM_BL,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.RM_FROM_BL},body:{fromAccount:\"\",toAccount:[]}}),this._map.set(ri.SET_SELF_STATUS,{head:{...i,servcmd:f.NAME.IM_OPEN_STATUS+\".\"+ri.SET_SELF_STATUS},body:{customStatus:\"\"}}),this._map.set(ri.GET_USER_STATUS,{head:{...i,servcmd:f.NAME.IM_OPEN_STATUS+\".\"+ri.GET_USER_STATUS},body:{userIDList:void 0},keyMap:{res:{UserStatusList:\"successUserList\",ErrorList:\"failureUserList\",To_Account:\"userID\",Invalid_Account:\"invalidUserID\",Status:\"statusType\"}}}),this._map.set(ri.SUB_USER_STATUS,{head:{...i,servcmd:f.NAME.IM_OPEN_STATUS+\".\"+ri.SUB_USER_STATUS},body:{userIDList:void 0},keyMap:{res:{ErrorList:\"failureUserList\",To_Account:\"userID\",Invalid_Account:\"invalidUserID\"}}}),this._map.set(ri.UNSUB_USER_STATUS,{head:{...i,servcmd:f.NAME.IM_OPEN_STATUS+\".\"+ri.UNSUB_USER_STATUS},body:{userIDList:void 0,unsubscribeAll:void 0},keyMap:{res:{ErrorList:\"failureUserList\",To_Account:\"userID\",Invalid_Account:\"invalidUserID\"}}}),this._map.set(ri.GET_FD_LIST,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.GET_FD_LIST},body:{fromAccount:\"\",startIndex:0,standardSequence:0,customSequence:0},keyMap:{res:{FriendNum:\"friendCount\",UserDataItem:\"resultList\",ValueItem:\"tagValueList\"}}}),this._map.set(ri.ADD_FD,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.ADD_FD},body:{fromAccount:\"\",addFriendItem:[],type:\"\"},keyMap:{req:{source:\"AddSource\",wording:\"AddWording\",type:\"AddType\"},res:{ResultItem:\"resultList\"}}}),this._map.set(ri.UPDATE_FD,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.UPDATE_FD},body:{fromAccount:\"\",updateItem:void 0},keyMap:{req:{snsItem:\"SnsItem\"},res:{ResultItem:\"resultList\"}}}),this._map.set(ri.DEL_FD,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.DEL_FD},body:{fromAccount:\"\",userIDList:[],type:\"\"},keyMap:{req:{type:\"DeleteType\"},res:{ResultItem:\"resultList\"}}}),this._map.set(ri.GET_FD_PROFILE,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.GET_FD_PROFILE},body:{fromAccount:\"\",userIDList:void 0},keyMap:{res:{InfoItem:\"resultList\",SnsProfileItem:\"tagValueList\"}}}),this._map.set(ri.CHECK_FD,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.CHECK_FD},body:{fromAccount:\"\",userIDList:[],type:\"\"},keyMap:{req:{type:\"CheckType\"},res:{InfoItem:\"resultList\"}}}),this._map.set(ri.GET_FD_APPLICATION_LIST,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.GET_FD_APPLICATION_LIST},body:{fromAccount:\"\",applicationType:\"\",startTime:0,maxLimited:0,lastSequence:0},keyMap:{res:{PendencyItem:\"resultList\",AddSource:\"source\",AddTime:\"time\",AddWording:\"wording\",Image:\"avatar\",UnreadPendencyCount:\"unreadCount\",To_Account:\"userID\",PendencyType:\"type\"}}}),this._map.set(ri.RESPOND_FD_APPLICATION,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.RESPOND_FD_APPLICATION},body:{fromAccount:\"\",responseFriendItem:[]},keyMap:{req:{tag:\"TagName\",action:\"ResponseAction\"},res:{ResultItem:\"resultList\"}}}),this._map.set(ri.DEL_FD_APPLICATION,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.DEL_FD_APPLICATION},body:{fromAccount:\"\",type:\"\",userIDList:void 0},keyMap:{req:{type:\"PendencyType\",userIDList:\"To_Account\"},res:{ResultItem:\"resultList\"}}}),this._map.set(ri.REPORT_FD_APPLICATION,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.REPORT_FD_APPLICATION},body:{fromAccount:\"\",latestTimeStamp:\"\"},keyMap:{req:{latestTimeStamp:\"LatestPendencyTimeStamp\"}}}),this._map.set(ri.CREATE_FD_GRP,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.CREATE_FD_GRP},body:{fromAccount:\"\",groupName:void 0,userIDList:void 0},keyMap:{req:{groupName:\"GroupName\",userIDList:\"To_Account\"},res:{ResultItem:\"resultList\"}}}),this._map.set(ri.DEL_FD_GRP,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.DEL_FD_GRP},body:{fromAccount:\"\",nameList:void 0},keyMap:{req:{nameList:\"GroupName\"}}}),this._map.set(ri.GET_FD_GRP_LIST,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.GET_FD_GRP_LIST},body:{fromAccount:\"\",lastSequence:0,needFriend:\"Need_Friend_Type_Yes\"},keyMap:{res:{ResultItem:\"resultList\",GroupName:\"name\",FriendNumber:\"friendCount\",To_Account:\"userIDList\"}}}),this._map.set(ri.UPDATE_FD_GRP,{head:{...i,servcmd:f.NAME.FD+\".\"+ri.UPDATE_FD_GRP},body:{fromAccount:\"\",oldName:\"\",newName:void 0,updateGroupItem:void 0},keyMap:{req:{oldName:\"GroupOldName\",newName:\"GroupNewName\"},res:{UpdateType:\"type\",ResultItem:\"resultList\"}}}),this._map.set(ri.GET_GRP_LIST,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.GET_GRP_LIST},body:{memberAccount:\"\",limit:void 0,offset:void 0,groupType:void 0,responseFilter:{groupBaseInfoFilter:void 0,selfInfoFilter:void 0},isSupportTopic:0,needAppDefineData:1},keyMap:{req:{memberAccount:\"Member_Account\"},res:{GroupIdList:\"groups\",MsgSeq:\"readedSequence\",LastRecallTime:\"_lastRevokedTime\",AppDefinedData:\"groupCustomField\"}}}),this._map.set(ri.GET_GRP_PROFILE,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.GET_GRP_PROFILE},body:{groupIDList:void 0,responseFilter:{groupBaseInfoFilter:void 0,groupCustomFieldFilter:void 0,memberInfoFilter:void 0,memberCustomFieldFilter:void 0}},keyMap:{req:{groupIDList:\"GroupIdList\",groupCustomField:\"AppDefinedData\",memberCustomField:\"AppMemberDefinedData\",groupCustomFieldFilter:\"AppDefinedDataFilter_Group\",memberCustomFieldFilter:\"AppDefinedDataFilter_GroupMember\"},res:{GroupIdList:\"groups\",AppDefinedData:\"groupCustomField\",AppMemberDefinedData:\"memberCustomField\",AppDefinedDataFilter_Group:\"groupCustomFieldFilter\",AppDefinedDataFilter_GroupMember:\"memberCustomFieldFilter\",InfoSeq:\"infoSequence\",MemberList:\"members\",GroupInfo:\"groups\",ShutUpUntil:\"muteUntil\",ShutUpAllMember:\"muteAllMembers\"}}}),this._map.set(ri.CREATE_GRP,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.CREATE_GRP},body:{type:void 0,name:void 0,groupID:void 0,ownerID:void 0,introduction:void 0,notification:void 0,maxMemberNum:void 0,joinOption:void 0,memberList:void 0,groupCustomField:void 0,memberCustomField:void 0,webPushFlag:1,avatar:\"\",isSupportTopic:void 0,inviteOption:void 0},keyMap:{req:{ownerID:\"Owner_Account\",userID:\"Member_Account\",avatar:\"FaceUrl\",maxMemberNum:\"MaxMemberCount\",joinOption:\"ApplyJoinOption\",groupCustomField:\"AppDefinedData\",memberCustomField:\"AppMemberDefinedData\",inviteOption:\"InviteJoinOption\"},res:{HugeGroupFlag:\"avChatRoomFlag\",OverJoinedGroupLimit_Account:\"overLimitUserIDList\"}}}),this._map.set(ri.DISMISS_GRP,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.DISMISS_GRP},body:{groupID:void 0}}),this._map.set(ri.UPDATE_GRP_PROFILE,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.UPDATE_GRP_PROFILE},body:{groupID:void 0,name:void 0,introduction:void 0,notification:void 0,avatar:void 0,joinOption:void 0,groupCustomField:void 0,muteAllMembers:void 0,inviteOption:void 0},keyMap:{req:{groupCustomField:\"AppDefinedData\",muteAllMembers:\"ShutUpAllMember\",joinOption:\"ApplyJoinOption\",avatar:\"FaceUrl\",inviteOption:\"InviteJoinOption\"},res:{AppDefinedData:\"groupCustomField\",ShutUpAllMember:\"muteAllMembers\"}}}),this._map.set(ri.APPLY_JOIN_GRP,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.APPLY_JOIN_GRP},body:{groupID:void 0,applyMessage:void 0,userDefinedField:void 0,webPushFlag:1,historyMessageFlag:void 0},keyMap:{req:{applyMessage:\"ApplyMsg\",historyMessageFlag:\"HugeGroupHistoryMsgFlag\"},res:{HugeGroupFlag:\"avChatRoomFlag\",AVChatRoomKey:\"avChatRoomKey\",RspMsgList:\"messageList\",ToGroupId:\"to\"}}}),this._map.set(ri.APPLY_JOIN_GRP_NOAUTH,function(){const{a2:e,tinyid:t,...s}=i;return{head:{...s,servcmd:f.NAME.BIG_GRP_NO_AUTH+\".\"+ri.APPLY_JOIN_GRP},body:{groupID:void 0,applyMessage:void 0,userDefinedField:void 0,webPushFlag:1},keyMap:{req:{applyMessage:\"ApplyMsg\"},res:{HugeGroupFlag:\"avChatRoomFlag\"}}}}()),this._map.set(ri.QUIT_GRP,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.QUIT_GRP},body:{groupID:void 0}}),this._map.set(ri.SEARCH_GRP,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.SEARCH_GRP},body:{groupIDList:void 0,responseFilter:{groupBasePublicInfoFilter:[\"Type\",\"Name\",\"Introduction\",\"Notification\",\"FaceUrl\",\"CreateTime\",\"Owner_Account\",\"LastInfoTime\",\"LastMsgTime\",\"NextMsgSeq\",\"MemberNum\",\"MaxMemberNum\",\"ApplyJoinOption\",\"InviteJoinOption\"]}}}),this._map.set(ri.CHANGE_GRP_OWNER,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.CHANGE_GRP_OWNER},body:{groupID:void 0,newOwnerID:void 0},keyMap:{req:{newOwnerID:\"NewOwner_Account\"}}}),this._map.set(ri.HANDLE_GRP_APPLICATION,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.HANDLE_GRP_APPLICATION},body:{groupID:void 0,applicant:void 0,handleAction:void 0,handleMessage:void 0,authentication:void 0,messageKey:void 0,userDefinedField:void 0},keyMap:{req:{applicant:\"Applicant_Account\",handleAction:\"HandleMsg\",handleMessage:\"ApprovalMsg\",messageKey:\"MsgKey\"}}}),this._map.set(ri.HANDLE_INVITE_JOIN_GRP,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.HANDLE_INVITE_JOIN_GRP},body:{groupID:void 0,applicant:void 0,invitee:void 0,handleAction:void 0,handleMessage:void 0,authentication:void 0,userDefinedField:void 0},keyMap:{req:{applicant:\"Applicant_Account\",invitee:\"Invited_Account\",handleAction:\"HandleMsg\",handleMessage:\"ApprovalMsg\"}}}),this._map.set(ri.HANDLE_GRP_INVITATION,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.HANDLE_GRP_INVITATION},body:{groupID:void 0,inviter:void 0,handleAction:void 0,handleMessage:void 0,authentication:void 0,messageKey:void 0,userDefinedField:void 0},keyMap:{req:{inviter:\"Inviter_Account\",handleAction:\"HandleMsg\",handleMessage:\"ApprovalMsg\",messageKey:\"MsgKey\"}}}),this._map.set(ri.GET_GRP_PENDENCY,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.GET_GRP_PENDENCY},body:{startTime:void 0,limit:void 0,handleAccount:void 0},keyMap:{req:{handleAccount:\"Handle_Account\"},res:{To_Account:\"userID\",ApplyInviteMsg:\"note\"}}}),this._map.set(ri.DEL_GRP_SYSTEM_NOTICE,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.DEL_GRP_SYSTEM_NOTICE},body:{messageListToDelete:void 0},keyMap:{req:{messageListToDelete:\"DelMsgList\",messageSeq:\"MsgSeq\",messageRandom:\"MsgRandom\"}}}),this._map.set(ri.AV_POLLING,{head:{...i,servcmd:f.NAME.BIG_GRP_POLLING+\".\"+ri.AV_POLLING},body:{USP:1,startSeq:1,startBroadcastSeq:void 0,holdTime:90,key:void 0,simplifiedMessage:void 0},keyMap:{req:{USP:\"USP\"},res:{ToGroupId:\"groupID\",RspBroadcastMsgList:\"broadcastMessageList\",IsSystemMsg:\"isSystemMessage\"}}}),this._map.set(ri.AV_NOAUTH_POLLING,function(){const{a2:e,tinyid:t,...s}=i;return{head:{...s,servcmd:f.NAME.BIG_GRP_POLLING_NO_AUTH+\".\"+ri.AV_POLLING},body:{USP:1,startSeq:1,holdTime:90,key:void 0,simplifiedMessage:void 0},keyMap:{req:{USP:\"USP\"},res:{ToGroupId:\"groupID\",RspBroadcastMsgList:\"broadcastMessageList\",IsSystemMsg:\"isSystemMessage\"}}}}()),this._map.set(ri.GET_ONLINE_MBR_NUM,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.GET_ONLINE_MBR_NUM},body:{groupID:void 0},keyMap:{res:{OnlineMemberNum:\"memberCount\"}}}),this._map.set(ri.SET_GRP_ATTR,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.SET_GRP_ATTR},body:{groupID:void 0,groupAttributeList:void 0,mainSequence:void 0,avChatRoomKey:void 0,attributeControl:[\"RaceConflict\"]},keyMap:{req:{key:\"key\",value:\"value\"}}}),this._map.set(ri.MODIFY_GRP_ATTR,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.MODIFY_GRP_ATTR},body:{groupID:void 0,groupAttributeList:void 0,mainSequence:void 0,avChatRoomKey:void 0,attributeControl:[\"RaceConflict\"]},keyMap:{req:{key:\"key\",value:\"value\"}}}),this._map.set(ri.DEL_GRP_ATTR,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.DEL_GRP_ATTR},body:{groupID:void 0,groupAttributeList:void 0,mainSequence:void 0,avChatRoomKey:void 0,attributeControl:[\"RaceConflict\"]},keyMap:{req:{key:\"key\"}}}),this._map.set(ri.CLEAR_GRP_ATTR,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.CLEAR_GRP_ATTR},body:{groupID:void 0,mainSequence:void 0,avChatRoomKey:void 0,attributeControl:[\"RaceConflict\"]}}),this._map.set(ri.GET_GRP_ATTR,{head:{...i,servcmd:f.NAME.GRP_ATTR+\".\"+ri.GET_GRP_ATTR},body:{groupID:void 0,avChatRoomKey:void 0,groupType:1},keyMap:{req:{avChatRoomKey:\"Key\",groupType:\"GroupType\"}}}),this._map.set(ri.GET_GRP_NOTIFY,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.GET_GRP_NOTIFY},body:{notifyReqList:[]},keyMap:{req:{notifyReqList:\"NotifyReqList\"},res:{NextMsgTime:\"nextRevokedTime\",NotifyMsgList:\"notifyList\",NotifyRspList:\"notifyRspList\"}}}),this._map.set(ri.UPDATE_GRP_COUNTER,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.UPDATE_GRP_COUNTER},body:{groupID:void 0,counterList:void 0,avChatRoomKey:void 0,mode:void 0},keyMap:{req:{counterList:\"GroupCounter\"}}}),this._map.set(ri.GET_GRP_COUNTER,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.GET_GRP_COUNTER},body:{groupID:void 0,keyList:[],avChatRoomKey:void 0},keyMap:{req:{keyList:\"GroupCounterKeys\"}}}),this._map.set(ri.CREATE_TOPIC,{head:{...i,servcmd:f.NAME.GRP_COMMUNITY+\".\"+ri.CREATE_TOPIC},body:{groupID:void 0,topicName:void 0,avatar:void 0,customData:void 0,topicID:void 0,notification:void 0,introduction:void 0},keyMap:{req:{avatar:\"FaceUrl\"}}}),this._map.set(ri.DEL_TOPIC,{head:{...i,servcmd:f.NAME.GRP_COMMUNITY+\".\"+ri.DEL_TOPIC},body:{groupID:void 0,topicIDList:void 0},keyMap:{req:{topicIDList:\"TopicIdList\"},res:{DestroyResultItem:\"resultList\"}}}),this._map.set(ri.UPDATE_TOPIC_PROFILE,{head:{...i,servcmd:f.NAME.GRP_COMMUNITY+\".\"+ri.UPDATE_TOPIC_PROFILE},body:{groupID:void 0,topicID:void 0,avatar:void 0,customData:void 0,notification:void 0,introduction:void 0,muteAllMembers:void 0,topicName:void 0},keyMap:{req:{avatar:\"FaceUrl\",muteAllMembers:\"ShutUpAllMember\"}}}),this._map.set(ri.GET_TOPIC_LIST,{head:{...i,servcmd:f.NAME.GRP_COMMUNITY+\".\"+ri.GET_TOPIC_LIST},body:{groupID:void 0,topicIDList:void 0,MemberInfoFilter:[\"NoUnreadSeqList\"]},keyMap:{req:{topicIDList:\"TopicIdList\"},res:{TopicAndSelfInfo:\"topicInfoList\",TopicInfo:\"topic\",GroupID:\"groupID\",ShutUpTime:\"muteTime\",ShutUpAllFlag:\"muteAllMembers\",LastMsgTime:\"lastMessageTime\",MsgSeq:\"readedSequence\",LastMsgSeq:\"sequence\"}}}),this._map.set(ri.GET_GRP_MBR_LIST,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.GET_GRP_MBR_LIST},body:{groupID:void 0,limit:0,offset:void 0,next:void 0,memberRoleFilter:void 0,memberInfoFilter:void 0,memberCustomFieldFilter:void 0},keyMap:{req:{memberCustomFieldFilter:\"AppDefinedDataFilter_GroupMember\"},res:{AppMemberDefinedData:\"memberCustomField\",AppDefinedDataFilter_GroupMember:\"memberCustomFieldFilter\",MemberList:\"members\",ShutUpUntil:\"muteUntil\"}}}),this._map.set(ri.GET_AV_MBR_LIST,{head:{...i,servcmd:f.NAME.GRP_AV+\".\"+ri.GET_AV_MBR_LIST},body:{groupID:void 0,offset:void 0,filter:void 0},keyMap:{req:{offset:\"Timestamp\",filter:\"Mark\"},res:{NextTimestamp:\"offset\"}}}),this._map.set(ri.GET_GRP_MBR_PROFILE,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.GET_GRP_MBR_PROFILE},body:{groupID:void 0,userIDList:void 0,memberInfoFilter:void 0,memberCustomFieldFilter:void 0},keyMap:{req:{userIDList:\"Member_List_Account\",memberCustomFieldFilter:\"AppDefinedDataFilter_GroupMember\"},res:{MemberList:\"members\",ShutUpUntil:\"muteUntil\",AppDefinedDataFilter_GroupMember:\"memberCustomFieldFilter\",AppMemberDefinedData:\"memberCustomField\"}}}),this._map.set(ri.ADD_GRP_MBR,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.ADD_GRP_MBR},body:{groupID:void 0,silence:void 0,userIDList:void 0},keyMap:{req:{userID:\"Member_Account\",userIDList:\"MemberList\"},res:{MemberList:\"members\"}}}),this._map.set(ri.DEL_GRP_MBR,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.DEL_GRP_MBR},body:{groupID:void 0,userIDList:void 0,reason:void 0},keyMap:{req:{userIDList:\"MemberToDel_Account\"}}}),this._map.set(ri.BAN_AV_MBR,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.BAN_AV_MBR},body:{groupID:void 0,userIDList:void 0,duration:void 0,reason:\"\"},keyMap:{req:{userIDList:\"Members_Account\",duration:\"Duration\",reason:\"Description\"}}}),this._map.set(ri.MODIFY_GRP_MBR_INFO,{head:{...i,servcmd:f.NAME.GRP+\".\"+ri.MODIFY_GRP_MBR_INFO},body:{groupID:void 0,topicID:void 0,userID:void 0,messageRemindType:void 0,nameCard:void 0,role:void 0,memberCustomField:void 0,muteTime:void 0},keyMap:{req:{userID:\"Member_Account\",memberCustomField:\"AppMemberDefinedData\",muteTime:\"ShutUpTime\",messageRemindType:\"MsgFlag\"}}}),this._map.set(ri.MARK_AV_MBR_INFO,{head:{...i,servcmd:f.NAME.GRP_AV+\".\"+ri.MARK_AV_MBR_INFO},body:{groupID:void 0,operationType:1,memberList:[]},keyMap:{req:{operationType:\"CommandType\",memberList:\"MemberList\",markType:\"Marks\",userID:\"Member_Account\"},res:{CommandType:\"operationType\",Marks:\"markType\",Member_Account:\"userID\"}}}),this._map.set(ri.CS,{head:{...i,servcmd:f.NAME.MSG_SEARCH+\".\"+ri.CS},body:{keywordList:void 0,keywordListMatchType:\"or\",account:void 0,groupID:void 0,count:100,cursor:void 0,messageTypeList:void 0,senderUserIDList:void 0,startTime:void 0,endTime:void 0},keyMap:{req:{keywordListMatchType:\"MatchType\",account:\"PeerAccount\",groupID:\"GroupID\",messageTypeList:\"MsgTypeList\",senderUserIDList:\"SendUserIDList\",keywords:\"Keywords\",keywordMatchType:\"KeywordMatchType\",count:\"Count\",miniBirthday:\"UserBirthStart\",maxBirthday:\"UserBirthEnd\",gender:\"UserGenderType\",groupTypeList:\"GroupType\",groupIDList:\"GroupIdList\"},res:{GroupID:\"groupID\",UserID:\"userID\",ErrorCode:\"code\",ErrorInfo:\"message\",TotalCount:\"totalCount\",Count:\"messageCount\",LastMsgTime:\"lastMessageTime\",ConversationMsgs:\"searchResult\",IsNeedReadReceipt:\"needReadReceipt\",IsPeerRead:\"readReceiptSentByPeer\",MsgSeq:\"sequence\",ReqMsgSeq:\"sequence\",IsSystemMsg:\"isSystemMessage\",ToGroupId:\"to\",EnumFrom_AccountType:\"fromAccountType\",EnumTo_AccountType:\"toAccountType\",GroupCode:\"groupCode\",MsgContent:\"content\",ClientSeq:\"clientSequence\",ToTopicId:\"topicID\",InvisibleMsgSeq:\"invisibleSequenceList\",Users:\"userList\",ProfileItems:\"profileItems\",StrValue:\"value\",IntValue:\"value\",Groups:\"groupList\",GroupFaceUrl:\"avatar\",GroupIntroduction:\"introduction\",GroupOwnerUserID:\"ownerID\",GroupOwnerUserName:\"ownerNick\",GroupOwnerTinyID:\"ownerTinyID\",GroupMemberNum:\"memberNum\",GroupName:\"name\",GroupType:\"type\",GroupMembers:\"groupMemberList\",GroupMemberUserID:\"userID\",GroupMemberTinyID:\"userTinyID\",GroupMemberUserName:\"nick\",GroupMemberNameCard:\"nameCard\"}}}),this._map.set(ri.USER_CS,{head:{...i,servcmd:f.NAME.USER_SEARCH+\".\"+ri.CS},body:{keywords:void 0,keywordMatchType:0,miniBirthday:void 0,maxBirthday:void 0,gender:void 0,count:20,cursor:void 0}}),this._map.set(ri.GRP_CS,{head:{...i,servcmd:f.NAME.GRP_SEARCH+\".\"+ri.CS},body:{keywords:void 0,keywordMatchType:0,groupType:void 0,count:20,cursor:void 0}}),this._map.set(ri.MBR_CS,{head:{...i,servcmd:f.NAME.GRP_MEMBER_SEARCH+\".\"+ri.CS},body:{keywords:void 0,keywordMatchType:0,groupType:void 0,groupIDList:void 0,count:20,cursor:void 0}}),this._map.set(ri.SSO_STAT,{head:{...t,servcmd:f.NAME.IM_OPEN_STAT+\".\"+ri.SSO_STAT},body:{header:{},event:[],quality:[]},keyMap:{req:{SDKType:\"sdk_type\",SDKVersion:\"sdk_version\",deviceType:\"device_type\",platform:\"platform\",instanceID:\"instance_id\",traceID:\"trace_id\",SDKAppID:\"sdk_app_id\",userID:\"user_id\",tinyID:\"tiny_id\",extension:\"extension\",timestamp:\"timestamp\",networkType:\"network_type\",eventType:\"event_type\",code:\"error_code\",message:\"error_message\",moreMessage:\"more_message\",duplicate:\"duplicate\",costTime:\"cost_time\",level:\"level\",qualityType:\"quality_type\",reportIndex:\"report_index\",wholePeriod:\"whole_period\",totalCount:\"total_count\",rttCount:\"success_count_business\",successRateOfRequest:\"percent_business\",countLessThan1Second:\"success_count_business\",percentOfCountLessThan1Second:\"percent_business\",countLessThan3Second:\"success_count_platform\",percentOfCountLessThan3Second:\"percent_platform\",successCountOfBusiness:\"success_count_business\",successRateOfBusiness:\"percent_business\",successCountOfPlatform:\"success_count_platform\",successRateOfPlatform:\"percent_platform\",successCountOfMessageReceived:\"success_count_business\",successRateOfMessageReceived:\"percent_business\",avgRTT:\"average_value\",avgDelay:\"average_value\",avgValue:\"average_value\",uiPlatform:\"ui_platform\"}}}),this._map.set(ri.PING,{head:{...i,servcmd:f.NAME.HEARTBEAT+\".\"+ri.PING},body:{}}),this._map.set(ri.MSG_PUSH,{head:{...i,servcmd:f.NAME.IM_OPEN_PUSH+\".\"+ri.MSG_PUSH},body:{},keyMap:{res:{C2cMsgArray:\"C2CMessageArray\",GroupMsgArray:\"groupMessageArray\",GroupTips:\"groupTips\",C2cNotifyMsgArray:\"C2CNotifyMessageArray\",C2cMsgInfo:\"C2CReadReceiptArray\",ClientSeq:\"clientSequence\",MsgPriority:\"priority\",NoticeSeq:\"noticeSequence\",MsgContent:\"content\",MsgType:\"type\",MsgBody:\"elements\",ToGroupId:\"to\",Desc:\"description\",Ext:\"extension\",IsSyncMsg:\"isSyncMessage\",Flag:\"needSync\",NeedAck:\"needAck\",PendencyAdd_Account:\"userID\",ProfileImNick:\"nick\",PendencyType:\"applicationType\",C2CReadAllMsg:\"readAllC2CMessage\",IsNeedReadReceipt:\"needReadReceipt\",Status:\"statusType\"}}}),this._map.set(ri.MULTI_MSG_PUSH,{head:{...i,servcmd:f.NAME.IM_OPEN_PUSH+\".\"+ri.MULTI_MSG_PUSH},body:{},keyMap:{res:{GroupMsgArray:\"groupMessageArray\",GroupTips:\"groupTips\",ClientSeq:\"clientSequence\",MsgPriority:\"priority\",NoticeSeq:\"noticeSequence\",MsgContent:\"content\",MsgType:\"type\",MsgBody:\"elements\",ToGroupId:\"to\",Desc:\"description\",Ext:\"extension\",IsSyncMsg:\"isSyncMessage\",Flag:\"needSync\",NeedAck:\"needAck\",PendencyType:\"applicationType\"}}}),this._map.set(ri.MSG_PUSH_ACK,{head:{...i,servcmd:f.NAME.OPEN_IM+\".\"+ri.MSG_PUSH_ACK},body:{sessionData:void 0},keyMap:{req:{sessionData:\"SessionData\"}}}),this._map.set(ri.STATUS_FORCE_OFFLINE,{head:{...i,servcmd:f.NAME.IM_OPEN_STATUS+\".\"+ri.STATUS_FORCE_OFFLINE},body:{},keyMap:{res:{C2cNotifyMsgArray:\"C2CNotifyMessageArray\",NoticeSeq:\"noticeSequence\",KickoutMsgNotify:\"kickoutMsgNotify\",NewInstInfo:\"newInstanceInfo\"}}}),this._map.set(ri.DOWNLOAD_MERGER_MSG,{head:{...i,servcmd:f.NAME.IM_LONG_MSG+\".\"+ri.DOWNLOAD_MERGER_MSG},body:{downloadKey:\"\"},keyMap:{res:{Data:\"data\",Desc:\"description\",Ext:\"extension\",Download_Flag:\"downloadFlag\",ThumbUUID:\"thumbUUID\",VideoUUID:\"videoUUID\"}}}),this._map.set(ri.UPLOAD_MERGER_MSG,{head:{...i,servcmd:f.NAME.IM_LONG_MSG+\".\"+ri.UPLOAD_MERGER_MSG},body:{messageList:[]},keyMap:{req:{fromAccount:\"From_Account\",toAccount:\"To_Account\",msgTimeStamp:\"MsgTimeStamp\",msgSeq:\"MsgSeq\",msgRandom:\"MsgRandom\",msgBody:\"MsgBody\",type:\"MsgType\",content:\"MsgContent\",data:\"Data\",description:\"Desc\",extension:\"Ext\",sizeType:\"Type\",uuid:\"UUID\",url:\"\",imageUrl:\"URL\",fileUrl:\"Url\",remoteAudioUrl:\"Url\",remoteVideoUrl:\"VideoUrl\",thumbUUID:\"ThumbUUID\",videoUUID:\"VideoUUID\",videoUrl:\"\",downloadFlag:\"Download_Flag\",from:\"From_Account\",time:\"MsgTimeStamp\",messageRandom:\"MsgRandom\",messageSequence:\"MsgSeq\",elements:\"MsgBody\",clientSequence:\"ClientSeq\",payload:\"MsgContent\",messageList:\"MsgList\",messageNumber:\"MsgNum\",abstractList:\"AbstractList\",messageBody:\"MsgBody\"}}}),this._map.set(ri.FOLLOW,{head:{...i,servcmd:f.NAME.FOLLOW+\".\"+ri.FOLLOW},body:{fromAccount:\"\",userIDList:[]},keyMap:{req:{userIDList:\"FollowItem\"},res:{ResultItem:\"resultList\",To_Account:\"userID\"}}}),this._map.set(ri.UNFOLLOW,{head:{...i,servcmd:f.NAME.FOLLOW+\".\"+ri.UNFOLLOW},body:{fromAccount:\"\",userIDList:[]},keyMap:{req:{userIDList:\"To_Account\"},res:{ResultItem:\"resultList\",To_Account:\"userID\"}}}),this._map.set(ri.GET_FOLLOW_INFO,{head:{...i,servcmd:f.NAME.FOLLOW+\".\"+ri.GET_FOLLOW_INFO},body:{fromAccount:\"\",userIDList:[]},keyMap:{req:{userIDList:\"To_Account\"},res:{FollowInfo:\"followInfoList\",To_Account:\"userID\",FollowerCount:\"followersCount\",FollowingCount:\"followingCount\",MutualFollowingCount:\"mutualFollowersCount\"}}}),this._map.set(ri.GET_FOLLOW,{head:{...i,servcmd:f.NAME.FOLLOW+\".\"+ri.GET_FOLLOW},body:{fromAccount:\"\",type:1,nextCursor:\"\",count:500},keyMap:{req:{type:\"FollowType\",nextCursor:\"StartCursor\",count:\"WantNum\"},res:{FollowItem:\"resultList\",To_Account:\"userID\",ProfileItem:\"profileList\"}}}),this._map.set(ri.CHECK_FOLLOW_TYPE,{head:{...i,servcmd:f.NAME.FOLLOW+\".\"+ri.CHECK_FOLLOW_TYPE},body:{fromAccount:\"\",userIDList:[]},keyMap:{req:{userIDList:\"To_Account\"},res:{ResultItem:\"resultList\",To_Account:\"userID\"}}}),this._map.set(ri.SET_TOKEN,{head:{...i,servcmd:f.NAME.IM_OPEN_STATUS+\".\"+ri.SET_TOKEN},body:{tokenID:\"\",pushMsg:0,sdkAppID:0,businessID:\"\",deviceBrand:\"\",deviceToken:\"\",isTpns:0,isWebUniapp:0,notificationStatus:0,deviceModel:\"\",systemVersion:\"\",pushVersion:\"\"},keyMap:{req:{tokenID:\"TokenID\",pushMsg:\"PushMsg\",sdkAppID:\"EnterVersion\",businessID:\"BusiID\",deviceBrand:\"InstType\",deviceToken:\"VarToken\",isTpns:\"IsTpns\",notificationStatus:\"NotificationStatus\",deviceModel:\"DeviceModel\",systemVersion:\"SystemVersion\",pushVersion:\"PushPluginVersion\"}}}),this._map.set(ri.STAT_FOREGROUND,{head:{...i,servcmd:f.NAME.IM_OPEN_STATUS+\".\"+ri.STAT_FOREGROUND},body:{isWebUniapp:0}}),this._map.set(ri.STAT_BACKGROUND,{head:{...i,servcmd:f.NAME.IM_OPEN_STATUS+\".\"+ri.STAT_BACKGROUND},body:{C2CUnread:0,GroupUnread:0,isWebUniapp:0},keyMap:{req:{c2cUnreadCount:\"C2cUnread\",groupUnreadCount:\"GrpUnread\"}}}),this._map.set(ri.PUSH_REPORT,{head:{...i,servcmd:f.NAME.OFFLINE_PUSH_REPORT+\".\"+ri.PUSH_REPORT},body:{eventList:[]},keyMap:{req:{eventList:\"UinappPushEvents\",type:\"EventType\",time:\"EventTime\",pushId:\"ClickExt\"}}}),this._map.set(ri.SET_ALL_RECEIVE_MSG_OPT,{head:{...i,servcmd:f.NAME.IM_MSG_LOGIC+\".\"+ri.SET_ALL_RECEIVE_MSG_OPT},body:{startTime:0,endTime:0,isRepeated:0,messageRemindType:0},keyMap:{req:{messageRemindType:\"Level\"}}}),this._map.set(ri.GET_ALL_RECEIVE_MSG_OPT,{head:{...i,servcmd:f.NAME.IM_MSG_LOGIC+\".\"+ri.GET_ALL_RECEIVE_MSG_OPT},body:{toAccount:void 0}})}has(e){return this._map.has(e)}get(e){return this._map.get(e)}update(){this._fillMap()}getKeyMap(e){return this.has(e)?this.get(e).keyMap||{}:(Ce.w(this._n+\".getKeyMap unknown P:\"+e),{})}getProtocolData(e){const{P:t,data:s}=e,i=this.get(t);let n=null;if(s){const e=this._simpleDeepCopy(i),t=this._updateService(s,e),o=t.body,r=Object.create(null);for(const i in o)if(Object.prototype.hasOwnProperty.call(o,i)){if(r[i]=o[i],void 0===s[i])continue;r[i]=s[i]}t.body=r,n=this._getUplinkData(t)}else n=this._getUplinkData(i);return n}_getUplinkData(e){const t=this._dataCleaner(e),s=ft(t.head),i=Qn(t.body,this._getReqKeyMap(s));return t.body=i,t}_updateService(i,n){var o=ft(n.head);if(this._isFromGroupRequest(n)){let{type:e,groupID:t,groupIDList:s=[]}=i;$e(t)&&(t=s[0]||\"\"),ot({type:e,groupID:t})&&(n.head.servcmd=f.NAME.GRP_COMMUNITY+\".\"+o)}return n}_isFromGroupRequest(e){return e.head.servcmd.includes(f.NAME.GRP)||e.head.servcmd.includes(f.NAME.GRP_ATTR)}_getReqKeyMap(e){e=this.getKeyMap(e);return{...Jn.req,...e.req}}_dataCleaner(e){const t=Array.isArray(e)?[]:Object.create(null);for(const s in e)Object.prototype.hasOwnProperty.call(e,s)&&He(s)&&null!==e[s]&&void 0!==e[s]&&(\"object\"!=typeof e[s]?t[s]=e[s]:t[s]=this._dataCleaner.bind(this)(e[s]));return t}_simpleDeepCopy(s){const i=Object.keys(s),n={};var o;for(let e=0,t=i.length;e{var t;1===e.isSyncMessage&&(t=e.from,e.from=e.to,e.to=t)}),1===e.needSync&&this._sessionM.get(Us).syncOnNeed(),t.onNewMessage({dataList:e.dataList,isInstantMessage:!0})}_onC2CMsgModified(e){this._sessionM.get(ys).onMsgModified(e)}_onGroupMsgArray(e){const t=this._sessionM.get(vs);t&&t.onNewMessage({event:e.event,dataList:e.dataList,isInstantMessage:!0})}_onGroupMsgModified(e){const t=this._sessionM.get(vs);t&&t.onMsgModified(e)}_onGroupTips(e){const t=this._sessionM.get(vs);if(t){var{event:s,dataList:i,isInstantMessage:n=!0,isSyncingEnded:o}=e;switch(s){case 4:case 6:t.onNewGroupTips({event:s,dataList:i});break;case 5:for(let e=0;e{if(be(e))if(e.hasOwnProperty(\"kickoutMsgNotify\")){const{kickoutMsgNotify:{kickType:t,newInstanceInfo:s={}}}=e;1===t?this._sessionM.onMultipleAccountKickedOut(s):2===t?this._sessionM.onMultipleDeviceKickedOut(s):3===t&&this._sessionM.onRestApiKickedOut(s)}else e.hasOwnProperty(\"c2cMessageRevokedNotify\")?s&&s.onMsgRevoked({dataList:t},!0):e.hasOwnProperty(\"c2cMessageReadReceipt\")?s&&s.onMsgReadReceipt({dataList:t}):e.hasOwnProperty(\"c2cMessageReadNotice\")?s&&s.onMsgReadNotice({dataList:t}):e.hasOwnProperty(\"muteNotificationsSync\")&&this._sessionM.get(Ds).onC2CMsgRemindTypeSynced({dataList:t})})}}_onC2CReadReceiptArray(e){this._sessionM.get(ys).onReadReceiptList(e)}_onProfileModified(e){this._sessionM.get(Ts).onProfileModified({dataList:e.dataList});const t=this._sessionM.get(Es);t&&t.onFriendProfileModified({dataList:e.dataList})}_onRelationChainModified(e){this._sessionM.get(Ts).onRelationChainModified({dataList:e.dataList});const t=this._sessionM.get(Es);t&&t.onRelationChainModified({dataList:e.dataList})}_onRecentContact(e){const t=e[\"dataList\"];if(Fe(t)){const o=this._sessionM.get(Ds);o&&t.forEach(e=>{const t=e[\"pushType\"];if(1===t){const t=e[\"recentContactDeleteItem\"];o.onConvDeleted(t.recentContactList)}else if(2===t){const t=e[\"recentContactTopItem\"];o.onConvPinnedStatus(t.recentContactList,!0)}else if(3===t){const t=e[\"recentContactTopItem\"];o.onConvPinnedStatus(t.recentContactList,!1)}else if(4===t){const t=e[\"recentContactMarkContact\"];o.onConvMarkUpdated(t.recentContactMarkContactItem)}else if(5===t){const t=e[\"recentContactCreateContactGroup\"];o.onConvGroupCreated(t.msgContactGroupContactItem)}else if(6===t){const t=e[\"recentContactDelContactGroup\"];o.onConvGroupDeleted(t.msgGroupItem)}else if(7===t){const t=e[\"recentContactUpdateContactGroup\"],{updateType:s,msgUpdateGroup:i,msgUpdateContact:n}=t;if(1===s){const e=i[\"updateGroupType\"];1===e?o.onConvGroupNameUpdated(i):2===e&&o.onConvInGroupUpdated(i)}else 2===s&&o.onConvAddedToOrDeletedFromGroup(n)}})}}_onAllMsgRead(e){const t=e[\"dataList\"],s=this._sessionM.get(Ds);s&&s.onPushedAllMessageRead(t)}_onUserStatusList(e){this._sessionM.get(Ts).onUserStatusUpdated(e)}_onMsgExtNotify(e){this._sessionM.get(Cs).onMsgExtNotify(e)}_onMsgReactionNotifyList(e){this._sessionM.get(Ys).onReactionNotifyList(e)}_onMsgReactionNotify(e){this._sessionM.get(Ys).onReactionNotify(e)}_onFollowNotify(e){this._sessionM.get(zs).onFollowNotify(e)}_onTopicLatestMsg(e){this._sessionM.get(Ss).onTopicLatestMsg(e)}onMessage(s){var e=s[\"body\"];if(this._filterMsgFromIMOpenPush(s)){var{eventArray:i,isInstantMessage:n,isSyncingEnded:o,needSync:r}=e;if(Fe(i)){var a,c,l;for(let e=0,t=i.length;e-1!==this._keys.indexOf(e));s?(c=14===l?{readAllC2CMessage:a[s],groupMessageReadInfoList:a.groupMessageReadNotice||[]}:16===l?{userID:a.userID,timestamp:a.timestamp,readReceiptList:a[s]}:a[s],this._eventHandlerMap.get(s)({event:l,dataList:c,isInstantMessage:n,isSyncingEnded:o,needSync:r})):Ce.l(this._n+\".onMessage unknown eventItem:\",a)}else this._onTopicLatestMsg(a);else this._onAllRcvMsgOptNotify(a);else this._onRoomCustomData(a.content)}}}_onRoomCustomData(e){this._sessionM.get(Bs).onRoomCustomDataReceived(e),Ce.l(this._n+\"._onRoomCustomData data:\"+e)}_onAllRcvMsgOptNotify(e){this._sessionM.get(Ds).onAllRcvMsgOptNotify(e)}_filterMsgFromIMOpenPush(e){const{head:t,body:s}=e,i=t[\"servcmd\"];let n=!1;if(!(n=$e(i)?n:i.includes(f.NAME.IM_CONFIG_MANAGER)||i.includes(f.NAME.OVERLOAD_PUSH)||i.includes(f.NAME.STAT_SERVICE)))return!0;if(i.includes(ri.PUSHED_CLOUD_CTRL_CONFIG))this._sessionM.get(ws).onPushedConfig(s);else if(i.includes(ri.PUSHED_COMMERCIAL_CONFIG))this._sessionM.get(qs).onPushedConfig(s);else if(i.includes(ri.OVERLOAD_NOTIFY))this._sessionM.onPushedServerOverload(s);else if(i.includes(ri.KICK_OTHER)){const e=Date.now(),t=(this._sessionM.reLoginOnKickOther(),new Ti(\"kickOther\")),s=this._sessionM.get(Ms).getLastWsHelloTs(),i=e-s;t.setMessage(`last wshello time:${s} diff:${i}ms`).end()}return!1}}const fo=[{cmd:ri.GET_GRP_PROFILE,interval:1,count:8},{cmd:ri.UPDATE_GRP_PROFILE,interval:1,count:8},{cmd:ri.GET_AV_MBR_LIST,interval:3,count:1},{cmd:ri.GET_GRP_PENDENCY,interval:1,count:15},{cmd:ri.GET_TOPIC_LIST,interval:1,count:10},{cmd:ri.SET_GRP_ATTR,interval:5,count:10},{cmd:ri.MODIFY_GRP_ATTR,interval:5,count:10},{cmd:ri.DEL_GRP_ATTR,interval:5,count:10},{cmd:ri.CLEAR_GRP_ATTR,interval:5,count:10},{cmd:ri.GET_GRP_ATTR,interval:5,count:20},{cmd:ri.UPDATE_GRP_COUNTER,interval:5,count:20},{cmd:ri.GET_GRP_COUNTER,interval:5,count:20},{cmd:ri.SET_ALL_MSG_READ,interval:1,count:1},{cmd:ri.GET_USER_STATUS,interval:5,count:20},{cmd:ri.SUB_USER_STATUS,interval:5,count:20},{cmd:ri.UNSUB_USER_STATUS,interval:5,count:20},{cmd:ri.CS,interval:5,count:20},{cmd:ri.GRP_CS,interval:5,count:20},{cmd:ri.MBR_CS,interval:5,count:20},{cmd:ri.USER_CS,interval:5,count:20},{cmd:ri.CHECK_FOLLOW_TYPE,interval:5,count:20},{cmd:ri.GET_GRP_ROAMING_MSG,interval:1,count:20},{cmd:ri.GET_C2C_ROAMING_MSG,interval:1,count:20}],Mo=new Map,Io=[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"A\",\"B\",\"C\",\"D\",\"E\",\"F\"];for(let e=0,t=Io.length;e{this._cmdFreqLimitMap.set(e.cmd,{interval:e.interval,count:e.count})})}updateProtocolConfig(){this._pHandler.update()}req(e){Ce.d(this._n+\".req options:\",e);var t=e[\"P\"];if(!this._pHandler.has(t))return Ce.w(this._n+\".req unknown P:\"+t),ni({code:ei.NO_PROTOCOL});var e=this.getProtocolData(e),s=e.head[\"servcmd\"];let i;if(this._isFreqOverLimit(s))return i=ei.OVER_FREQUENCY_LIMIT,ni({code:i,message:this.getErrMsg(i,this._getCmd(s))});if(this._isServerOverload(s))return i=ei.OPEN_SERVICE_OVERLOAD_ERROR,ni({code:i,message:this.getErrMsg(i,this._getCmd(s))});const n=this.get(ks);return go.includes(t)?n.simplySend(e):n.send(e)}getKeyMap(e){return this._pHandler.getKeyMap(e)}genCommonHead(){const e=this.get(Rs);return{ver:\"v4\",platform:this._platform,websdkappid:a,websdkversion:r,a2:e.getA2Key()||void 0,tinyid:e.getTinyID()||void 0,status_instid:e.getStatusInstanceID(),sdkappid:e.getSDKAppID(),contenttype:e.getContentType(),reqtime:0,identifier:e.getA2Key()?void 0:e.getUserID(),usersig:e.getA2Key()?void 0:e.getUserSig(),sdkability:12775283,sdkability_ext:Co(\"\"),cappid:e.getApplicationID(),cs:0}}genCosSpecifiedHead(){const e=this.get(Rs);return{ver:\"v4\",platform:this._platform,websdkappid:a,websdkversion:r,sdkappid:e.getSDKAppID(),contenttype:e.getContentType(),reqtime:0,identifier:e.getUserID(),usersig:e.getUserSig(),status_instid:e.getStatusInstanceID(),sdkability:12775283,sdkability_ext:Co(\"\"),cappid:e.getApplicationID(),cs:0}}genSSOReportHead(){const e=this.get(Rs);return{ver:\"v4\",platform:this._platform,websdkappid:a,websdkversion:r,sdkappid:e.getSDKAppID(),contenttype:\"\",reqtime:0,identifier:\"\",usersig:\"\",status_instid:e.getStatusInstanceID(),sdkability:12775283,sdkability_ext:Co(\"\"),cappid:e.getApplicationID(),cs:0}}getProtocolData(e){return this._pHandler.getProtocolData(e)}trans(e){var{servcmd:e,data:t}=e,e={head:{...this.genCommonHead(),servcmd:e},body:t};return this.get(ks).send(e)}sendComboMessage(e){var{servcmd:e,data:t}=e,e={head:{...this.genCommonHead(),servcmd:e},body:t};return this.get(ks).send(e)}onErrorCodeNotZero(e){const t=e[\"errorCode\"];if(t===ei.HELLO_ANSWER_KICKED_OUT){const{kickType:t,newInstanceInfo:s={}}=e;1===t?this.onMultipleAccountKickedOut(s):2===t?this.onMultipleDeviceKickedOut(s):3===t&&this.onRestApiKickedOut(s)}t!==ei.MSG_A2KEY_EXPIRED&&t!==ei.ACCOUNT_A2KEY_EXPIRED||(this._onUserSigExpired(),this.get(ks).reConnect())}onMessage(e){var t=e[\"body\"],{needAck:t=0,sessionData:s}=t;1===t&&this._sendACK(s),this._msgDispatcher.onMessage(e)}onReconnected(e){this._incrementalPullContactFlag=e<=300,this._reLoginOnReconnected()}reLoginOnKickOther(){Ce.l(this._n+\".reLoginOnKickOther\"),this._reLogin()}_reLoginOnReconnected(){Ce.l(this._n+\"._reLoginOnReconnected\"),this._reLogin()}_reLogin(){const _=this._n+\"._reLogin\";if(this.isLoggedIn()){let e=0;const s=this.get(Ms).getPushModule(),u=(s&&(e=s.getUniAppPlatform()),new Ti(\"reLogin\"));this.req({P:ri.LOGIN,data:{isWebUniapp:e,customInfo:this.get(Rs).getCustomLoginInfo()}}).then(e=>{const{instanceID:s,customStatus:i}=e.data,n=this.get(Rs),o=Cn(i),r=(n.setStatusInstanceID(s),this.get(ks)),a=`socketID:${r.getSocketID()} instanceID:${s} customStatus:`+o,c=(u.setMessage(a).end(!0),Ce.l(_+\" ok. \"+a),n.getCustomStatus()!==o&&this.get(Ts).onUserStatusUpdated({dataList:[{to:this.getMyUserID(),statusType:t.USER_STATUS_ONLINE,customStatus:i}]}),r.diagnose(),this.get(Ds).syncConvList(this._incrementalPullContactFlag).then(()=>{Ce.l(_+\", sync conv list ok.\"),this.get(Fs).start()}),this.get(vs)),l=(c&&c.updateLocalMainSequenceOnReconnected(),this.get(Ss)),d=(l.resetGetTopicTime(),l.getTopicListOnReconnected(),this.get(zs));d&&d.clearCacheOnReconnected()})}}onMultipleAccountKickedOut(e){this.get(Ms).onMultipleAccountKickedOut(e)}onMultipleDeviceKickedOut(e){this.get(Ms).onMultipleDeviceKickedOut(e)}_onUserSigExpired(){this.get(Ms).onUserSigExpired()}onRestApiKickedOut(e){this.get(Ms).onRestApiKickedOut(e)}_sendACK(e){this.req({P:ri.MSG_PUSH_ACK,data:{sessionData:e}})}_isFreqOverLimit(e){e=e.split(\".\")[1];if(!this._cmdFreqLimitMap.has(e))return!1;if(!this._cmdReqInfoMap.has(e))return this._cmdReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1;var{count:t,interval:s}=this._cmdFreqLimitMap.get(e),{startTime:i,requestCount:n}=this._cmdReqInfoMap.get(e);if(Date.now()-i>1e3*s)return this._cmdReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1;this._cmdReqInfoMap.set(e,{startTime:i,requestCount:n+=1});let o=t=this._expiredTime}fetchConfig(){const i=this._n+\".fetchConfig\",e=this._canFetch();if(Ce.l(i+\" canFetch:\"+e),e){const n=new Ti(\"fetchCloudCtrlConfig\"),t=this.get(Rs).getSDKAppID();this._isFetching=!0,this.req({P:ri.FETCH_CLOUD_CTRL_CONFIG,data:{SDKAppID:t,version:this._version}}).then(e=>{this._isFetching=!1;var{version:t,cloudControlConfig:s}=e.data;n.setMessage(`version:${this._version} newVersion:${t} config:`+s).end(),Ce.l(i+\" ok\"),this._parse(e.data)}).catch(e=>{this._isFetching=!1,n.setError(e).end(),Ce.l(i+\" failed. error:\",e),this._setExpiredTime(12e4)})}}onPushedConfig(e){Ce.l(this._n+\".onPushedConfig config:\",e),new Ti(\"pushedCloudCtrlConfig\").setMessage(`newVersion:${e.version} config:`+e.cloudControlConfig).end(),this._parse(e)}onCheckTimer(e){this._canFetch()&&this.fetchConfig()}_parse(e){var s=this._n+\"._parse\",{errorCode:t,errorMessage:i,cloudControlConfig:n,version:o,expiredTime:r}=e;if(0===t){if(this._version!==o){let t=null;try{t=JSON.parse(n)}catch(e){this.isPrivateNetWork()||Ce.e(s+\" failed. config:\",n)}t&&(this._cloudConfig.clear(),Object.keys(t).forEach(e=>{this._cloudConfig.set(e,t[e])}),this._version=o,this.emitIEvt(Yi.CLOUD_CONFIG))}this._setExpiredTime(1e3*r)}else $e(t)?(Ce.l(s+\" failed. Invalid message format:\",e),this._setExpiredTime(36e5)):(Ce.e(s+` errorCode:${t} errorMessage:`+i),this._setExpiredTime(12e4))}_setExpiredTime(e){this._expiredTime=Date.now()+e}reset(){Ce.l(this._n+\".reset\"),this._cloudConfig.clear(),this._expiredTime=0,this._version=0,this._isFetching=!1}}class vo extends oi{constructor(e){super(e),this._n=\"RecoverMsgModule\",this.PULL_LIMIT_COUNT=15}start(){this._recoverGroupChat(),this._recoverC2CChat()}_recoverGroupChat(){const e=this._getLocalConvList().filter(e=>e.type===t.CONV_GROUP&&e.groupProfile.type!==t.GRP_AVCHATROOM),n=this.get(Ds);let o,r,a,c,l;const d=[];e.forEach(e=>{const{conversationID:s,lastMessage:i}=e;r=s.replace(t.CONV_GROUP,\"\"),o=n.getLocalLastMessage(s),i&&0!==i.lastSequence&&o?(c=i.lastSequence,a=o.sequence,l=c-a,0e.type===t.CONV_C2C),s=this.get(Ds);let i,n,o,r;const a=[Promise.resolve()];e.forEach(e=>{var{conversationID:e,lastMessage:t}=e;i=s.getLocalLastMessage(e),t&&0!==t.lastTime&&i&&(o=t.lastTime,n=i.time,r=o-n,0{Ce.l(this._n+\"._recoverC2CChat all done\"),this.get(Us).syncOnReconnected()})}_getLocalConvList(){return this.get(Ds).getLocalConvList()}_recoverGroupMsg(e){const c=this._n+\"._recoverGroupMsg\",{groupID:l,localLastMessageSequence:d,remoteLastMessageSequence:_}=(Ce.l(c+\" options:\",e),e),u=JSON.stringify(e),h=new Ti(\"_recoverGroupMsg\");h.setMessage(u),this._getGroupRoamingMsg({groupID:l,sequence:d}).then(n=>{const{complete:e,messageList:o}=n.data;if(!$e(o)){const n=o[0].sequence,s=o.map(e=>e.sequence),r=u+` complete:${e} sequenceList:`+s,a=(Ce.l(c+\" \"+r),n!==d&&n<_&&2!==e&&this._recoverGroupMsg({groupID:l,localLastMessageSequence:n,remoteLastMessageSequence:_}),h.setMessage(r).end(),this.get(vs));1e.sequence-t.sequence);let i=!1;for(let e=0,s=o.length;e{h.setError(e).end(),Ce.w(c+\" failed. error:\",e)})}_getGroupNotice(s){var e=s.length;if(Ce.l(this._n+\"._getGroupNotice length:\"+e),0!==e){const i=this.get(vs);if(e<=10)i.getNotice(s);else{let t=Math.floor(e/10);5<=t&&(t=5);for(let e=0;e<=t;e++)i.getNotice(s.slice(10*e,10*(e+1)))}}}_getGroupRoamingMsg(e){var{groupID:e,sequence:t}=e;return this.req({P:ri.GET_GRP_ROAMING_MSG,data:{groupID:e,count:this.PULL_LIMIT_COUNT,sequence:t+this.PULL_LIMIT_COUNT-1}})}_recoverC2CMsg(e){const o=this._n+\"._recoverC2CMsg\",{conversationID:r,localLastMessageTime:t,remoteLastMessageTime:a}=(Ce.l(o+\" options:\",e),e),c=JSON.stringify(e),l=new Ti(\"_recoverC2CMsg\");return l.setMessage(c),this._getC2CRoamingMsg({conversationID:r,time:t}).then(e=>{const{complete:t,messageList:s}=e.data;if(!$e(s)){const e=s.length;this.get(ys).onNewMessage({dataList:s,isInstantMessage:!0});var i=s[e-1].time,n=s.map(e=>e.random),n=c+` complete:${t} randomList:`+n;if(Ce.l(o+\" \"+n),l.setMessage(n).end(),i{l.setError(e).end(),Ce.w(o+\" failed. error:\",e)})}_getC2CRoamingMsg(e){const{conversationID:s,time:i}=e;return this.req({P:ri.GET_C2C_ROAMING_MSG,data:{peerAccount:s.replace(t.CONV_C2C,\"\"),count:this.PULL_LIMIT_COUNT+1,lastMessageTime:i,direction:1}})}reset(){Ce.l(this._n+\".reset\")}}class Eo{constructor(){this._n=\"AvgE2EDelay\",this._e2eDelayArray=[]}addMessageDelay(e){e=me()-e;0<=e&&this._e2eDelayArray.push(e)}_calcAvg(e,t){if(0===t)return 0;let s=0;return e.forEach(e=>{s+=e}),Mt(s/t,1)}_calcCountWithLimit(e){const{e2eDelayArray:t,min:s,max:i}=e;return t.filter(e=>s<=e&&et{s+=e}),parseInt(s/t)}_calcMax(){return Math.max(...this._rttArray)}_calcMin(){return Math.min(...this._rttArray)}getStatResult(){var e=this._calcTotalCount(),t=[...this._rttArray];if(0===e)return null;var s=this._calcRTTCount(t),i=this._calcSuccessRateOfRequest(s,e),t=this._calcAvg(t,s);return Ce.l(`${this._n}.getStatResult max:${this._calcMax()} min:${this._calcMin()} avg:`+t),this.reset(),{totalCount:e,rttCount:s,successRateOfRequest:i,avgRTT:t}}reset(){this._requestCount=0,this._rttArray.length=0}}class Do{constructor(){this._map=new Map}initMap(e){e.forEach(e=>{this._map.set(e,{totalCount:0,successCount:0,failedCountOfUserSide:0,costArray:[],fileSizeArray:[]})})}addTotalCount(e){return!($e(e)||!this._map.has(e)||(this._map.get(e).totalCount+=1,0))}addSuccessCount(e){return!($e(e)||!this._map.has(e)||(this._map.get(e).successCount+=1,0))}addFailedCountOfUserSide(e){return!($e(e)||!this._map.has(e)||(this._map.get(e).failedCountOfUserSide+=1,0))}addCost(e,t){return!($e(e)||!this._map.has(e)||(this._map.get(e).costArray.push(t),0))}addFileSize(e,t){return!($e(e)||!this._map.has(e)||(this._map.get(e).fileSizeArray.push(t),0))}_calcSuccessRateOfBusiness(e){if($e(e)||!this._map.has(e))return-1;e=this._map.get(e);let t=Mt(e.successCount/e.totalCount*100,2);return t=100{s+=e}),parseInt(s/t)}_calcAvgSpeed(e){let t=0,s=0;return this._map.get(e).costArray.forEach(e=>{t+=e}),this._map.get(e).fileSizeArray.forEach(e=>{s+=e}),parseInt(1e3*s/t)}getStatResult(e){var t=this._calcTotalCount(e);if(0===t)return null;var s=this._calcSuccessCountOfBusiness(e),i=this._calcSuccessRateOfBusiness(e),n=this._calcSuccessCountOfPlatform(e),o=this._calcSuccessRateOfPlatform(e),r=this._calcAvg(e);return this.reset(e),{totalCount:t,successCountOfBusiness:s,successRateOfBusiness:i,successCountOfPlatform:n,successRateOfPlatform:o,avgValue:r}}reset(e){$e(e)?this._map.clear():this._map.set(e,{totalCount:0,successCount:0,failedCountOfUserSide:0,costArray:[],fileSizeArray:[]})}}class Ro{constructor(){this._lastMap=new Map,this._currentMap=new Map}initMap(e){e.forEach(e=>{this._lastMap.set(e,new Map),this._currentMap.set(e,new Map)})}addMessageSequence(e){const{key:s,message:i}=e;if($e(s)||!this._lastMap.has(s)||!this._currentMap.has(s))return!1;const{conversationID:n,sequence:o}=i,r=n.replace(t.CONV_GROUP,\"\");if(0===this._lastMap.get(s).size)this._addCurrentMap(e);else if(this._lastMap.get(s).has(r)){const t=this._lastMap.get(s).get(r),i=t.length-1;o>t[0]&&o{var e=[...e.values()],s=e.length;i+=e[s-1]-e[0]+1,n+=s}),0===i)return null;let t=Mt(n/i*100,2);return 100{this._statInfoArr.push(e)}),e.removeItem(this.TAG,!1))}_onCloudConfig(){const e=this.getCloudConfig(\"q_rpt_interval\"),t=this.getCloudConfig(\"q_rpt_sdkappid_bl\"),s=this.getCloudConfig(\"q_rpt_tinyid_wl\");$e(e)||(this.REPORT_INTERVAL=Number(e)),$e(t)||(this.REPORT_SDKAPPID_BLACKLIST=t.split(\",\").map(e=>Number(e))),$e(s)||(this.REPORT_TINYID_WHITELIST=s.split(\",\"))}onCheckTimer(e){this.isLoggedIn()&&e%this.REPORT_INTERVAL==0&&(this.wholePeriod=!0,this._report())}addRequestCount(){this._avgRTT.addRequestCount()}addRTT(e){this._avgRTT.addRTT(e)}addMessageDelay(e){this._avgE2EDelay.addMessageDelay(e)}addTotalCount(e){this._rateMessageSent.addTotalCount(e)||Ce.w(this._n+\".addTotalCount invalid key:\",e)}addSuccessCount(e){this._rateMessageSent.addSuccessCount(e)||Ce.w(this._n+\".addSuccessCount invalid key:\",e)}addFailedCountOfUserSide(e){this._rateMessageSent.addFailedCountOfUserSide(e)||Ce.w(this._n+\".addFailedCountOfUserSide invalid key:\",e)}addCost(e,t){this._rateMessageSent.addCost(e,t)||Ce.w(this._n+\".addCost invalid key or cost:\",e,t)}addFileSize(e,t){this._rateMessageSent.addFileSize(e,t)||Ce.w(this._n+\".addFileSize invalid key or size:\",e,t)}addMessageSequence(e){this._rateMessageReceived.addMessageSequence(e)||Ce.w(this._n+\".addMessageSequence invalid key:\",e.key)}_getQualityItem(e){let t={},s=Ii[this.get(Os).getNetworkType()];$e(s)&&(s=8);var i={qualityType:fi[e],timestamp:pe(),networkType:s,extension:\"\"};switch(e){case ai:t=this._avgRTT.getStatResult();break;case ci:t=this._avgE2EDelay.getStatResult();break;case li:case ui:case di:case _i:case hi:t=this._rateMessageSent.getStatResult(e);break;case pi:case gi:case mi:t=this._rateMessageReceived.getStatResult(e)}return null===t?null:{...i,...t}}_report(e){let t=[],s=null;$e(e)?this._qualityItems.forEach(e=>{null!==(s=this._getQualityItem(e))&&(s.reportIndex=this.reportIndex,s.wholePeriod=this.wholePeriod,t.push(s))}):null!==(s=this._getQualityItem(e))&&(s.reportIndex=this.reportIndex,s.wholePeriod=this.wholePeriod,t.push(s)),Ce.d(this._n+\"._report\",t),0{this.reportIndex++,this.wholePeriod=!1}).catch(e=>{Ce.w(this._n+\"._doReport failed. error:\",e),this._statInfoArr=this._statInfoArr.concat(t),this._flushAtOnce()})}_flushAtOnce(){const t=this.get(Ls),s=t.getItem(this.TAG,!1),i=this._statInfoArr,n=this._n+\"._flushAtOnce\";if(Oe(s))Ce.l(n+\" count:\"+i.length),t.setItem(this.TAG,i,!0,!1);else{let e=i.concat(s);10 0) { clearInterval(interval); } interval = setInterval(() => { postMessage(\"\"); }, 1000); postMessage(interval); } else if (event.data === \"stop\") { clearInterval(interval); interval = -1; }};'],{type:\"application/javascript; charset=utf-8\"}));this._workerTimer=new Worker(e);const t=this;this._workerTimer.onmessage=function(e){e.data?(t._timerID=e.data,Ce.l(t._n+\"._init seed:\"+t._timerID)):t._m.onCheckTimer()}}}_onCloudConfig(){var e=this.getCloudConfig(\"enable_worker\");Ce.l(this._n+\"._onCloudConfig enableWorker:\"+e),$e(e)||\"1\"===e?!this._isWorkerEnabled&&ie&&(this._isWorkerEnabled=!0,this.startWorkerTimer(),this._m.onWorkerTimerEnabled()):this._isWorkerEnabled&&ie&&(this._isWorkerEnabled=!1,this.stopWorkerTimer(),this._m.onWorkerTimerDisabled())}terminate(){Ce.l(this._n+\".terminate\"),this._workerTimer&&(this._workerTimer.terminate(),this._workerTimer=null,this._timerID=-1)}getTimerID(){return this._timerID}reset(){Ce.l(this._n+\".reset\")}}class Oo{constructor(e){this._commercialConfigM=e,this._n=\"PurchasedFeatureHandler\",this._isCSPluginReported=!1,this._featureMap=new Map}isValidPurchaseBits(e){return e&&\"string\"==typeof e&&1<=e.length&&e.length<=64&&/[01]{1,64}/.test(e)}parsePurchaseBits(s){if(this.isValidPurchaseBits(s)){this._featureMap.clear();var n;for(let e=s.length-1,t=0;0<=e;e--,t++)n=(t<32?new i(0,Math.pow(2,t)):new i(Math.pow(2,t-32),0)).toString(),\"1\"===s[e]?this._featureMap.set(n,!0):this._featureMap.set(n,!1)}else Ce.w(this._n+\".parsePurchaseBits invalid purchasebits:\"+s)}hasPurchasedFeature(e){return!!this._featureMap.get(e)}isFeatureEnabled(e){const s=parseInt(e).toString(2);let n=void 0,o=!0;for(let e=s.length-1,t=0;0<=e;e--,t++)if(\"1\"===s.charAt(e)&&(n=(t<32?new i(0,Math.pow(2,t)):new i(Math.pow(2,t-32),0)).toString(),!this._featureMap.get(n))){o=!1;break}return Ce.l(`${this._n}.isFeatureEnabled decimalNumber:${e} key:${n} ret:`+o),ii({enabled:o})}isFeatureEnabledForStat(e){const s=parseInt(e).toString(2);let n=void 0;for(let e=s.length-1,t=0;0<=e;e--,t++)if(\"1\"===s.charAt(e)){if(n=(t<32?new i(0,Math.pow(2,t)):new i(Math.pow(2,t-32),0)).toString(),!this._featureMap.get(n))break;{let e=\"\",t=0;if(n===M.PLUGIN_TRANSLATE?(e=\"plugin_translate\",t=16):n===M.PLUGIN_VOICE_TO_TEXT?(e=\"plugin_voice_to_text\",t=17):n===M.PLUGIN_CS?(e=\"plugin_cs\",t=14):n===M.PLUGIN_PUSH?(e=\"plugin_push\",t=13):n===M.PLUGIN_BOT?(e=\"plugin_bot\",t=15):n===M.MSG_REACTION&&(e=\"plugin_emoji_reaction\",t=18),\"\"!==e){const n=this._commercialConfigM.get(Rs).getUIPlatform();new Ti(e).setCode(t).setUIPlatform(n).end(),Ce.l(`${this._n}.isFeatureEnabledForStat ${e} code:${t} uiPlatform:`+n)}}}}isCSPluginEnabled(){var e;this._isCSPluginReported||(e=this._commercialConfigM.get(Rs).getUIPlatform(),new Ti(\"plugin_search\").setCode(6).setUIPlatform(e).end(),this._isCSPluginReported=!0)}clear(){this._featureMap.clear(),this._isCSPluginReported=!1}}class No{constructor(e){this._m=e,this._n=\"CommercialConfigModule\",this._expiredTime=0,this._isFetching=!1,this._purchasedFeatureHandler=new Oo(this)}_canFetch(){return this.get(Rs).isLoggedIn()?!this._isFetching&&Date.now()>=this._expiredTime:(this._expiredTime=Date.now()+2e3,!1)}onCheckTimer(e){this._canFetch()&&this.fetchConfig()}fetchConfig(){const e=this._canFetch(),t=this._n+\".fetchConfig\";if(Ce.l(t+\" canFetch:\"+e),e){const s=new Ti(\"fetchCommercialConfig\"),i=this.get(Rs).getSDKAppID(),n=this.get(Gs);this._isFetching=!0,n.req({P:ri.FETCH_COMMERCIAL_CONFIG,data:{SDKAppID:i}}).then(e=>{s.setMessage(\"purchaseBits:\"+e.data.purchaseBits).end(),Ce.l(t+\" ok.\"),this._parseConfig(e.data),this._isFetching=!1}).catch(e=>{s.setError(e).end(),this._isFetching=!1})}}onPushedConfig(e){var t=this._n+\".onPushedConfig data:\"+JSON.stringify(e);Ce.l(t),new Ti(\"pushedCommercialConfig\").setMessage(\"purchaseBits:\"+e.purchaseBits).end(),this._parseConfig(e)}_parseConfig(e){var t=this._n+\"._parseConfig\",{errorCode:s,errorMessage:i,purchaseBits:n,expiredTime:o}=e;0===s?(this._purchasedFeatureHandler.parsePurchaseBits(n),this._expiredTime=Date.now()+1e3*o):$e(s)?(Ce.l(t+\" failed. Invalid message format:\",e),this._setExpiredTimeOnResponseError(36e5)):(Ce.e(t+` errorCode:${s} errorMessage:`+i),this._setExpiredTimeOnResponseError(12e4))}_setExpiredTimeOnResponseError(e){this._expiredTime=Date.now()+e}canIUse(e){return this._purchasedFeatureHandler.hasPurchasedFeature(e)}isFeatureEnabled(e){return this._purchasedFeatureHandler.isFeatureEnabled(e)}isFeatureEnabledForStat(e){this._purchasedFeatureHandler.isFeatureEnabledForStat(e)}isCSPluginEnabled(){this._purchasedFeatureHandler.isCSPluginEnabled()}get(e){return this._m.get(e)}reset(){Ce.l(this._n+\".reset\"),this._expiredTime=0,this._isFetching=!1,this._purchasedFeatureHandler.clear()}}class Po extends oi{constructor(e){super(e),this._m=e,this._n=\"OfflinePushModule\",this._offlinePushPlugin=void 0,this._androidPushConfig={huaweiPushBussinessId:\"\",xiaomiPushBussinessId:\"\",xiaomiPushAppId:\"\",xiaomiPushAppKey:\"\",meizuPushBussinessId:\"\",meizuPushAppId:\"\",meizuPushAppKey:\"\",vivoPushBussinessId:\"\",fcmPushBussinessId:\"\",oppoPushBussinessId:\"\",oppoPushAppKey:\"\",oppoPushAppSecret:\"\",honorPushBussinessId:\"\"},this._deviceToken=\"\",this._businessID=0,this._iosBusinessID=0,this._c2cUnreadCount=0,this._groupUnreadCount=0,this._isWebUniapp=0}registerPlugin(e){var t,s,i,n,o,r,a,c,l,d,_,u,h;P?(this._offlinePushPlugin=e[\"tim-offline-push-plugin\"],{huaweiBusinessID:t,xiaomiBusinessID:s,xiaomiAppID:i,xiaomiAppKey:n,meizuBusinessID:o,meizuAppID:r,meizuAppKey:a,vivoBusinessID:c,oppoBusinessID:l,oppoAppKey:d,oppoAppSecret:_,honorBusinessID:u,iosBusinessID:h}=e.offlinePushConfig||{},this._androidPushConfig.huaweiPushBussinessId=t,this._androidPushConfig.xiaomiPushBussinessId=s,this._androidPushConfig.xiaomiPushAppId=i,this._androidPushConfig.xiaomiPushAppKey=n,this._androidPushConfig.meizuPushBussinessId=o,this._androidPushConfig.meizuPushAppId=r,this._androidPushConfig.meizuPushAppKey=a,this._androidPushConfig.vivoPushBussinessId=c,this._androidPushConfig.oppoPushBussinessId=l,this._androidPushConfig.oppoPushAppKey=d,this._androidPushConfig.oppoPushAppSecret=_,this._androidPushConfig.honorPushBussinessId=u,new Ti(\"registerPlugin\").setMessage(\"tim-offline-push-plugin\").setMoreMessage(\"isExist:\"+!$e(this._offlinePushPlugin)).end(!0),Ce.l(this._n+\".registerPlugin ok. offlinePushConfig:\"+JSON.stringify(e.offlinePushConfig)),this._iosBusinessID=h,this._setAppShowListener()):this.warn(\"OfflinePushInUniapp\")}init(){this._isWebUniapp=this.getUniAppPlatform(),this._getDeviceToken()}_getDeviceToken(){const a=this._n+\"._getDeviceToken\";if(xe(this._offlinePushPlugin.getDeviceToken)){let r=`androidPushConfig:${JSON.stringify(this._androidPushConfig)}, iosBusinessID:`+this._iosBusinessID;Ce.l(a+\" start. \"+r),new Ti(\"_getDeviceToken\").setMessage(r).end(!0),this._offlinePushPlugin.getDeviceToken(this._androidPushConfig,e=>{const t=new Ti(\"getDeviceTokenRes\"),{code:s,msg:i}=e;if(0===s){const{deviceToken:s,deviceBrand:i,deviceType:n,bussinessId:o}=e.data;this._deviceToken=s,this._businessID=o||this._iosBusinessID,r=`deviceToken:${s}, deviceBrand:${i||n}, businessID:`+this._businessID,Ce.l(a+\" ok. \"+r),t.setMessage(r).end(!0),this._setToken()}else t.setMessage(`code:${s}, msg:`+i).end(!0),Ce.e(a+\" failed. error:\",e)})}else Ce.e(a+\" getDeviceToken is not a function\")}canIUseOfflinePush(){return P&&!$e(this._offlinePushPlugin)}_setAppShowListener(){const t=this._n+\"._setAppShowListener\";$e(this._offlinePushPlugin)?Ce.e(t+\" offlinePushPlugin is undefined\"):xe(this._offlinePushPlugin.setAppShowListener)?(new Ti(\"_setAppShowListener\").end(!0),Ce.l(t+\" start\"),this._offlinePushPlugin.setAppShowListener(e=>{e=(e||{}).appShow;new Ti(\"setAppShowListenerRes\").setMessage(\"appShow:\"+e).end(!0),Ce.l(t+\" ok. appShow:\"+e),this._m.isReady()&&(0===e?(this._getConvUnreadCount(),this._onBackground()):1===e&&this._onForeground())})):Ce.e(t+\" setAppShowListener is not a function\")}getDeviceBrand(){var e;if(!$e(this._offlinePushPlugin)&&xe(this._offlinePushPlugin.getDeviceType))return e=(this._offlinePushPlugin.getDeviceType()||{})[\"deviceType\"],Ce.l(this._n+\".getDeviceBrand ok. deviceType:\"+e),e}_setToken(){const t=this._n+\"._setToken\",e=this.get(Rs);let s,i=1,n=\"\",r=\"\";Oe(this._deviceToken)&&(i=0);var a=this.getUniAppPlatform(),c=this.getDeviceBrand();a===o.IOS||a===o.IPAD||a===o.MAC?r=this._deviceToken:a===o.ANDROID&&(n=this._deviceToken);const l=new Ti(\"offlinePushSetToken\");return s=`deviceToken:${r||n}, businessID:${this._businessID}, deviceBrand:${c}, isWebUniapp:${this._isWebUniapp}, pushMsg:${i}, platform:`+a,l.setMessage(s),Ce.l(t+\" \"+s),this.req({P:ri.SET_TOKEN,data:{tokenID:n,pushMsg:i,sdkAppID:e.getSDKAppID(),businessID:parseInt(this._businessID),deviceBrand:c,deviceToken:r,isWebUniapp:this._isWebUniapp}}).then(e=>(l.end(),Ce.l(t+\" ok\"),e)).catch(e=>(l.setError(e).end(),Ce.e(t+\" failed. error:\",e),ni(e)))}_getConvUnreadCount(){this._c2cUnreadCount=0,this._groupUnreadCount=0,this.get(Ds).getLocalConvList().forEach(e=>{e.type===t.CONV_C2C&&(this._c2cUnreadCount+=e.unreadCount),e.type===t.CONV_GROUP&&(this._groupUnreadCount+=e.unreadCount)})}_onBackground(){const t=this._n+\"._onBackground\",s=new Ti(\"_onBackground\");this.req({P:ri.STAT_BACKGROUND,data:{c2cUnreadCount:this._c2cUnreadCount,groupUnreadCount:this._groupUnreadCount,isWebUniapp:this._isWebUniapp}}).then(e=>(s.setMessage(`c2cUnreadCount: ${this._c2cUnreadCount}, groupUnreadCount: `+this._groupUnreadCount).end(),Ce.l(t+\" ok\"),e)).catch(e=>{s.setError(e).end(),Ce.e(t+\" failed. error:\",e)})}_onForeground(){const t=this._n+\"._onForeground\",s=new Ti(\"_onForeground\");this.req({P:ri.STAT_FOREGROUND,data:{isWebUniapp:this._isWebUniapp}}).then(e=>(s.end(),Ce.l(t+\" ok\"),e)).catch(e=>{s.setError(e).end(),Ce.e(t+\" failed. error:\",e)})}getUniAppPlatform(){var e=uni.getSystemInfoSync().platform,t=this.getDeviceBrand();return\"ios\"===e?o.IOS:\"android\"===e?o.ANDROID:1002===t?o.IPAD:1001===t?o.MAC:void 0}reset(){this._deviceToken=\"\",this._businessID=0,this._c2cUnreadCount=0,this._groupUnreadCount=0,this._isWebUniapp=0,Ce.l(this._n+\".reset\")}}class Uo extends oi{constructor(e){super(e),this._m=e,this._n=\"TIMPushModule\",this._pluginName=\"TIMPush\",this._pushPlugin=void 0,this._androidPushConfig={},this._deviceToken=\"\",this._businessID=0,this._iOSBusinessID=0,this._c2cUnreadCount=0,this._groupUnreadCount=0,this._isWebUniapp=0,this._deviceInfo={notificationStatus:0,deviceModel:\"\",systemVersion:\"\",pushVersion:\"1.0.1\",packageName:\"\"}}registerPlugin(e){var t,s,i;P?(t=this._n+\".registerPlugin\",{androidConfig:s,iOSConfig:i}=(this._pushPlugin=e[\"tim-push\"],this._getDeviceInfo(),e.pushConfig||{}),we(s)&&(this._androidPushConfig=s[this._deviceInfo.packageName]),s=(i||{}).iOSBusinessID,this._iOSBusinessID=s,i=!$e(this._pushPlugin),new Ti(\"registerPlugin\").setMessage(this._pluginName).setMoreMessage(\"isExisted:\"+i).end(!0),Ce.l(t+\" ok. pushConfig:\"+JSON.stringify(e.pushConfig)),i?(this._setAppShowListener(),this._setPushEventReportListener()):Ce.e(t+` ${this._pluginName} is undefined`)):this.warn(\"TIMPushInUniapp\")}init(){this._isWebUniapp=this.getUniAppPlatform(),this._reportEventCacheList(),this._getDeviceToken(),this.get(qs).isFeatureEnabledForStat(Math.pow(2,41))}_reportEventCacheList(){const r=this._n+\"._reportEventCacheList\";xe(this._pushPlugin.getPushEventCacheList)?(new Ti(\"_reportEventCacheList\").end(!0),this._pushPlugin.getPushEventCacheList(e=>{const{code:t,data:{eventList:s}}=e,i=new Ti(\"getPushEventCacheListRes\");if(i.setCode(t),0!==t)i.setMessage(\"res:\"+JSON.stringify(e)).end(!0),Ce.e(r+\" failed. error:\"+JSON.stringify(e));else{var n=s.length<10?\"eventList:\"+JSON.stringify(s):\"eventList.length:\"+s.length;Ce.l(r+\" ok. \"+n),i.setMessage(n).end(!0);const o={...e.data,eventList:[]};for(;0{const{code:t,msg:s}=e,i=new Ti(\"getDeviceTokenRes\");if(i.setCode(t),0===t){const{deviceToken:t,deviceBrand:s,deviceType:n,bussinessId:o}=e.data;return this._deviceToken=t,this._businessID=o||this._iOSBusinessID,r=`deviceToken:${t} deviceBrand:${s||n} businessID:`+this._businessID,Ce.l(a+\" ok. \"+r),i.setMessage(r).end(!0),void this._setToken()}i.setMessage(s).end(!0),Ce.e(a+\" failed. error:\"+JSON.stringify(e))})}else Ce.e(this._pluginName+\".getDeviceToken is not a function\")}_getDeviceInfo(){var e=this._n+\"._getDeviceInfo\";if(xe(this._pushPlugin.getDeviceInfo)){const t=this._pushPlugin.getDeviceInfo(),{code:s,data:i}=t,n=new Ti(\"_getDeviceInfo\");if(n.setCode(s),0===s){this._deviceInfo={...this._deviceInfo,...i},this._deviceInfo.pushVersion||(this._deviceInfo.pushVersion=\"1.0.1\");const t=\"deviceInfo:\"+JSON.stringify(this._deviceInfo);return Ce.l(e+\" ok. \"+t),void n.setMessage(t).end(!0)}n.setMessage(\"deviceInfoRes:\"+JSON.stringify(t)).end(!0),Ce.e(e+\" failed. error:\"+JSON.stringify(t))}else Ce.e(this._pluginName+\".getDeviceInfo is not a function\")}canIUseTIMPush(){return P&&!$e(this._pushPlugin)}_setAppShowListener(){const t=this._n+\"._setAppShowListener\";xe(this._pushPlugin.setAppShowListener)?(new Ti(\"_setAppShowListener\").end(!0),Ce.l(t+\" start\"),this._pushPlugin.setAppShowListener(e=>{e=(e||{}).appShow;new Ti(\"setAppShowListenerRes\").setMessage(\"appShow:\"+e).end(!0),Ce.l(t+\" ok. appShow:\"+e),this._m.isReady()&&(0===e?(this._getConvUnreadCount(),this._onBackground()):1===e&&this._onForeground())})):Ce.e(this._pluginName+\".setAppShowListener is not a function\")}_setPushEventReportListener(){const o=this._n+\"._setPushEventReportListener\";xe(this._pushPlugin.setPushEventReportListener)?(new Ti(\"_setPushEventReportListener\").end(!0),this._pushPlugin.setPushEventReportListener(e=>{const{code:t,data:s}=e,i=s[\"eventList\"],n=new Ti(\"setPushEventReportListenerRes\");if(n.setCode(t),0===t){const e=\"eventList:\"+JSON.stringify(i);return Ce.l(o+\" ok. \"+e),n.setMessage(e).end(!0),void(this._m.isReady()&&Fe(i)&&0{d.end(),Ce.w(t+\" ok\")}).catch(e=>{d.setError(e).end(),Ce.e(t+\" failed. error:\",e),ni(e)})}_getConvUnreadCount(){this._c2cUnreadCount=0,this._groupUnreadCount=0,this.get(Ds).getLocalConvList().forEach(e=>{e.type===t.CONV_C2C&&(this._c2cUnreadCount+=e.unreadCount),e.type===t.CONV_GROUP&&(this._groupUnreadCount+=e.unreadCount)})}_onBackground(){const t=this._n+\"._onBackground\",s=new Ti(\"_onBackground\");this.req({P:ri.STAT_BACKGROUND,data:{c2cUnreadCount:this._c2cUnreadCount,groupUnreadCount:this._groupUnreadCount,isWebUniapp:this._isWebUniapp}}).then(()=>{s.setMessage(`c2cUnreadCount:${this._c2cUnreadCount} groupUnreadCount:`+this._groupUnreadCount).end(),Ce.l(t+\" ok\")}).catch(e=>{s.setError(e).end(),Ce.e(t+\" failed. error:\",e)})}_onForeground(){const t=this._n+\"._onForeground\",s=new Ti(\"_onForeground\");this.req({P:ri.STAT_FOREGROUND,data:{isWebUniapp:this._isWebUniapp}}).then(()=>{s.end(),Ce.l(t+\" ok\")}).catch(e=>{s.setError(e).end(),Ce.e(t+\" failed. error:\",e)})}_pushReport(e){const t=this._n+\"._pushReport\",s=new Ti(\"_pushReport\");this.req({P:ri.PUSH_REPORT,data:{eventList:e.eventList}}).then(()=>{s.end(),this._notifyReportSuccess(e)}).catch(e=>{s.setError(e).end(),Ce.e(t+\" failed. error:\",e)})}_notifyReportSuccess(e){!$e(this._pushPlugin)&&xe(this._pushPlugin.notifyReportSuccess)&&(this._pushPlugin.notifyReportSuccess(e),Ce.l(this._n+\"._notifyReportSuccess ok\"))}getUniAppPlatform(){var e=uni.getSystemInfoSync().platform,t=this.getDeviceBrand();return\"ios\"===e?o.IOS:\"android\"===e?o.ANDROID:1002===t?o.IPAD:1001===t?o.MAC:void 0}reset(){this._deviceToken=\"\",this._businessID=0,this._c2cUnreadCount=0,this._groupUnreadCount=0,this._isWebUniapp=0,Ce.l(this._n+\".reset\")}}class Go extends oi{constructor(e){super(e),this._n=\"ProfanityFilterModule\",this._plugin=null,this._filterConfigMap=new Map,this._startIndex=0,this._version=0,this._canIUseLexicon=!1,this._isFetching=!1,this._expiredTime=0}init(){const e=this.get(Ps).getPlugin(\"tim-profanity-filter-plugin\");e&&(this._plugin=new e({logger:Ce,isArray:Fe,isMap:Ne,isDevMode:this.isDevMode()}),this._getLexicon())}onCheckTimer(){this._plugin&&this._canIUseLexicon&&this.isLoggedIn()&&!this._isFetching&&Date.now()>=this._expiredTime&&this._getLexicon()}filterMessage(e,s){let i=!0;if(!this._plugin||!this._canIUseLexicon)return i;if(s&&s.messageControlInfo&&!0===s.messageControlInfo.excludedFromContentModeration)return i;const{type:n,conversationType:o}=e;if(n!==t.MSG_TEXT&&n!==t.MSG_CUSTOM)return i;const r=this._n+\".filterMessage\";let a;if(Ce.l(\"\"+r),n===t.MSG_TEXT){if(o===t.CONV_C2C?a=I:o===t.CONV_GROUP&&(a=T),!this._isConfigOn(a))return i;const{type:s,modifiedText:n}=this._plugin.filter(e.payload.text);1===s?i=!1:2===s&&(e.payload.text=n)}else if(n===t.MSG_CUSTOM){if(o===t.CONV_C2C?a=C:o===t.CONV_GROUP&&(a=y),!this._isConfigOn(a))return i;const s=this._plugin.filter(e.payload.data),n=this._plugin.filter(e.payload.description),r=this._plugin.filter(e.payload.extension);1===s.type||1===n.type||1===r.type?i=!1:(2===s.type&&(e.payload.data=s.modifiedText),2===n.type&&(e.payload.description=n.modifiedText),2===r.type&&(e.payload.extension=r.modifiedText))}return Ce.l(r+\" done. isAllowedToSend:\"+i),i}filterText(e,t){const s=this._n+\".filterText\",i={isAllowedToSend:!0,modifiedText:e};if(!this._plugin||!this._canIUseLexicon)return i;if(!this._isConfigOn(t))return i;Ce.l(s);var{type:t,modifiedText:e}=this._plugin.filter(e);return 1===t?i.isAllowedToSend=!1:2===t&&(i.modifiedText=e),Ce.l(s+\" done. ret:\",i),i}_getLexicon(){const d=new Ti(\"profanityFilter\"),_=this._n+\"._getLexicon\";this._isFetching=!0,this.req({P:ri.GET_PROFANITY_LIST,data:{startIndex:this._startIndex,version:this._version}}).then(e=>{var{errorInfo:e,filterConfig:t,lexicon:s,strToken:i,completeFlag:n,nextStartIndex:o,version:r,expiredTime:a}=e.data,{errorCode:c,errorMessage:l}=e;return 0!==c?(this._isFetching=!1,Ce.w(_+\" failed. error:\",e),void d.setCode(c).setMessage(l).end()):(this._onFilterConfig(t),this._getToken(i),1===n?(Ce.l(_+` done. version:${r} expiredTime:`+a),this._version=r,this._canIUseLexicon=!0,this._isFetching=!1,this._expiredTime=Date.now()+1e3*a,void this._plugin.onLexiconCompleted(s)):(this._startIndex=o,this._plugin.onLexiconSliced(s),void this._getLexicon()))}).catch(e=>{d.setError(e).end(),this._isFetching=!1,Ce.l(_+\" failed. error:\",e)})}_onFilterConfig(t){Oe(t)||(this._filterConfigMap.clear(),Object.keys(t).forEach(e=>{this._filterConfigMap.set(e,t[e])}),Ce.l(`${this._n}._onFilterConfig. keys:${Array.from(this._filterConfigMap.keys())} values:`+Array.from(this._filterConfigMap.values())))}_isConfigOn(e){return 1===this._filterConfigMap.get(e)}_getToken(s){if(ke(s)){var i=s.length;let t=\"\";if(i%2==0)for(let e=0;e<=i-1;e+=2)t=(t+=s[e+1])+s[e];else{for(let e=0;e{this._TRTCCommandList.includes(e)||this._TRTCCommandList.push(e)}),this._setTRTCCommandMap())}_setTRTCCommandMap(){var s;for(let e=0,t=this._TRTCCommandList.length;e=this.STORAGE_EXPIRES_TIME,t=!t||\"3.5.2\"!==t;return Ce.l(this._n+`._needToUpdate isTimeout:${e} isDifferentVersion:`+t),e||t}_fetch(){if(!this._m.get(Rs).isPrivateNetWork()){const e=\"https://web.sdk.qcloud.com/im/download/error-message/v3/0.0.7/tim-error-message.txt\",t=\"application/x-www-form-urlencoded;charset=UTF-8\",s=this._n+\"._fetch ok in\",i=this;if(k)$.request({url:e,method:\"GET\",timeout:3e3,header:{\"content-type\":t},dataType:\"text\",success:e=>{i._fillAndSave(e.data),Ce.l(s+\" mini program\")},fail:()=>{}});else{const n=new XMLHttpRequest,o=setTimeout(()=>{n.abort()},3e3);n.onreadystatechange=function(){4===n.readyState&&(o&&clearTimeout(o),200!==n.status&&304!==n.status||(Ce.l(s+\" browser\"),i._fillAndSave(n.responseText)))},n.open(\"GET\",e,!0),n.setRequestHeader(\"Content-type\",t),n.send()}}}_fillAndSave(e){this._fillMap(e),this._getStorageModule().setItem(this.TIM_ERROR_ASSISTANCE,JSON.stringify({message:e,localSavedTime:(new Date).getTime(),localSavedVersion:\"3.5.2\"}),!0,!1)}_getStorageModule(){return this._m.get(Ls)}_fillMap(e){this._map.clear();const t=e.split(\";\\n\"),s=t.length;let i,n,o;var r=new RegExp(/'/g);for(let e=0;e>>16&65535|0,r=0;0!==s;){for(s-=r=2e3>>1:s>>>1;e[t]=s}return e}(),qo=function(e,t,s,i){var n=$o,o=i+s;e^=-1;for(var r=i;r>>8^n[255&(e^t[r])];return-1^e},xo=function(e,d){var _,t,s,u,i,h,n=e.state,o=e.next_in,p=e.input,g=o+(e.avail_in-5),r=e.next_out,a=e.output,m=r-(d-e.avail_out),f=r+(e.avail_out-257),M=n.dmax,I=n.wsize,C=n.whave,T=n.wnext,v=n.window,c=n.hold,l=n.bits,y=n.lencode,E=n.distcode,D=(1<>>=t=_>>>24,l-=t,0==(t=_>>>16&255))a[r++]=65535&_;else{if(!(16&t)){if(0==(64&t)){_=y[(65535&_)+(c&(1<>>=t,l-=t),l<15&&(c+=p[o++]<>>=t=_>>>24,l-=t,!(16&(t=_>>>16&255))){if(0==(64&t)){_=E[(65535&_)+(c&(1<M){e.msg=\"invalid distance too far back\",n.mode=30;break e}if(c>>>=t,l-=t,u>(t=r-m)){if((t=u-t)>C&&n.sane){e.msg=\"invalid distance too far back\",n.mode=30;break e}if(h=v,(i=0)===T){if(i+=I-t,t>3,c&=(1<<(l-=s<<3))-1,e.next_in=o,e.next_out=r,e.avail_in=oT?(y=P[U+e[i]],O[L+e[i]]):(y=96,0),t=1<<(v=s-c),n=f=1<>c)+(f-=t)]=v<<24|y<<16|E|0,0!==f;);for(t=1<>=1;if(0!==t?l=(l&t-1)+t:l=0,i++,0==--A[s]){if(s===o)break;s=_[u+e[i]]}if(r>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function zo(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new bo.Buf16(320),this.work=new bo.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function jo(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new bo.Buf32(852),t.distcode=t.distdyn=new bo.Buf32(592),t.sane=1,t.back=-1,0):-2}function Jo(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,jo(e)):-2}function Xo(e,t){var s,i;return e&&e.state?(i=e.state,t<0?(s=0,t=-t):(s=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=e.wsize?(bo.arraySet(e.window,t,s-e.wsize,e.wsize,0),e.wnext=0,e.whave=e.wsize):((n=e.wsize-e.wnext)>i&&(n=i),bo.arraySet(e.window,t,s-i,n,e.wnext),(i-=n)?(bo.arraySet(e.window,t,s-i,i,0),e.wnext=i,e.whave=e.wsize):(e.wnext+=n,e.wnext===e.wsize&&(e.wnext=0),e.whave>>8&255,t.check=qo(t.check,R,2,0),r=o=0,t.mode=2;break}if(t.flags=0,t.head&&(t.head.done=!1),!(1&t.wrap)||(((255&o)<<8)+(o>>8))%31){e.msg=\"incorrect header check\",t.mode=30;break}if(8!=(15&o)){e.msg=\"unknown compression method\",t.mode=30;break}if(r-=4,l=8+(15&(o>>>=4)),0===t.wbits)t.wbits=l;else if(l>t.wbits){e.msg=\"invalid window size\",t.mode=30;break}t.dmax=1<>8&1),512&t.flags&&(R[0]=255&o,R[1]=o>>>8&255,t.check=qo(t.check,R,2,0)),r=o=0,t.mode=3;case 3:for(;r<32;){if(0===n)break e;n--,o+=s[i++]<>>8&255,R[2]=o>>>16&255,R[3]=o>>>24&255,t.check=qo(t.check,R,4,0)),r=o=0,t.mode=4;case 4:for(;r<16;){if(0===n)break e;n--,o+=s[i++]<>8),512&t.flags&&(R[0]=255&o,R[1]=o>>>8&255,t.check=qo(t.check,R,2,0)),r=o=0,t.mode=5;case 5:if(1024&t.flags){for(;r<16;){if(0===n)break e;n--,o+=s[i++]<>>8&255,t.check=qo(t.check,R,2,0)),r=o=0}else t.head&&(t.head.extra=null);t.mode=6;case 6:if(1024&t.flags&&((a=(a=t.length)>n?n:a)&&(t.head&&(l=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Array(t.head.extra_len)),bo.arraySet(t.head.extra,s,i,a,l)),512&t.flags&&(t.check=qo(t.check,s,a,i)),n-=a,i+=a,t.length-=a),t.length))break e;t.length=0,t.mode=7;case 7:if(2048&t.flags){if(0===n)break e;for(a=0;l=s[i+a++],t.head&&l&&t.length<65536&&(t.head.name+=String.fromCharCode(l)),l&&a>9&1,t.head.done=!0),e.adler=t.check=0,t.mode=12;break;case 10:for(;r<32;){if(0===n)break e;n--,o+=s[i++]<>>=7&r,r-=7&r,t.mode=27;break}for(;r<3;){if(0===n)break e;n--,o+=s[i++]<>>=1)){case 0:t.mode=14;break;case 1:if(sr(t),t.mode=20,6!==d)break;o>>>=2,r-=2;break e;case 2:t.mode=17;break;case 3:e.msg=\"invalid block type\",t.mode=30}o>>>=2,r-=2;break;case 14:for(o>>>=7&r,r-=7&r;r<32;){if(0===n)break e;n--,o+=s[i++]<>>16^65535)){e.msg=\"invalid stored block lengths\",t.mode=30;break}if(t.length=65535&o,r=o=0,t.mode=15,6===d)break e;case 15:t.mode=16;case 16:if(a=t.length){if(0===(a=h<(a=n>>=5,r-=5,t.ndist=1+(31&o),o>>>=5,r-=5,t.ncode=4+(15&o),o>>>=4,r-=4,286>>=3,r-=3}for(;t.have<19;)t.lens[O[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,E={bits:t.lenbits},y=Wo(0,t.lens,0,19,t.lencode,0,t.work,E),t.lenbits=E.bits,y){e.msg=\"invalid code lengths set\",t.mode=30;break}t.have=0,t.mode=19;case 19:for(;t.have>>16&255,I=65535&S,!((c=S>>>24)<=r);){if(0===n)break e;n--,o+=s[i++]<>>=c,r-=c,t.lens[t.have++]=I;else{if(16===I){for(D=c+2;r>>=c,r-=c,0===t.have){e.msg=\"invalid bit length repeat\",t.mode=30;break}l=t.lens[t.have-1],a=3+(3&o),o>>>=2,r-=2}else if(17===I){for(D=c+3;r>>=c)),o>>>=3,r=r-c-3}else{for(D=c+7;r>>=c)),o>>>=7,r=r-c-7}if(t.have+a>t.nlen+t.ndist){e.msg=\"invalid bit length repeat\",t.mode=30;break}for(;a--;)t.lens[t.have++]=l}}if(30===t.mode)break;if(0===t.lens[256]){e.msg=\"invalid code -- missing end-of-block\",t.mode=30;break}if(t.lenbits=9,E={bits:t.lenbits},y=Wo(1,t.lens,0,t.nlen,t.lencode,0,t.work,E),t.lenbits=E.bits,y){e.msg=\"invalid literal/lengths set\",t.mode=30;break}if(t.distbits=6,t.distcode=t.distdyn,E={bits:t.distbits},y=Wo(2,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,E),t.distbits=E.bits,y){e.msg=\"invalid distances set\",t.mode=30;break}if(t.mode=20,6===d)break e;case 20:t.mode=21;case 21:if(6<=n&&258<=h){e.next_out=u,e.avail_out=h,e.next_in=i,e.avail_in=n,t.hold=o,t.bits=r,xo(e,g),u=e.next_out,_=e.output,h=e.avail_out,i=e.next_in,s=e.input,n=e.avail_in,o=t.hold,r=t.bits,12===t.mode&&(t.back=-1);break}for(t.back=0;M=(S=t.lencode[o&(1<>>16&255,I=65535&S,!((c=S>>>24)<=r);){if(0===n)break e;n--,o+=s[i++]<>C)])>>>16&255,I=65535&S,!(C+(c=S>>>24)<=r);){if(0===n)break e;n--,o+=s[i++]<>>=C,r-=C,t.back+=C}if(o>>>=c,r-=c,t.back+=c,t.length=I,0===M){t.mode=26;break}if(32&M){t.back=-1,t.mode=12;break}if(64&M){e.msg=\"invalid literal/length code\",t.mode=30;break}t.extra=15&M,t.mode=22;case 22:if(t.extra){for(D=t.extra;r>>=t.extra,r-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=23;case 23:for(;M=(S=t.distcode[o&(1<>>16&255,I=65535&S,!((c=S>>>24)<=r);){if(0===n)break e;n--,o+=s[i++]<>C)])>>>16&255,I=65535&S,!(C+(c=S>>>24)<=r);){if(0===n)break e;n--,o+=s[i++]<>>=C,r-=C,t.back+=C}if(o>>>=c,r-=c,t.back+=c,64&M){e.msg=\"invalid distance code\",t.mode=30;break}t.offset=I,t.extra=15&M,t.mode=24;case 24:if(t.extra){for(D=t.extra;r>>=t.extra,r-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){e.msg=\"invalid distance too far back\",t.mode=30;break}t.mode=25;case 25:if(0===h)break e;if(t.offset>(a=g-h)){if((a=t.offset-a)>t.whave&&t.sane){e.msg=\"invalid distance too far back\",t.mode=30;break}m=a>t.wnext?(a-=t.wnext,t.wsize-a):t.wnext-a,a>t.length&&(a=t.length),f=t.window}else f=_,m=u-t.offset,a=t.length;for(h-=a=h>>6:(s<65536?t[n++]=224|s>>>12:(t[n++]=240|s>>>18,t[n++]=128|s>>>12&63),t[n++]=128|s>>>6&63),t[n++]=128|63&s);return t},dr=function(e){for(var t=new bo.Buf8(e.length),s=0,i=t.length;s>10&1023,o[r++]=56320|1023&s)}return lr(o,r)},hr=function(e,t){for(var s=(t=(t=t||e.length)>e.length?e.length:t)-1;0<=s&&128==(192&e[s]);)s--;return!(s<0||0===s)&&s+ar[e[s]]>t?s:t},pr={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},gr={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"},mr=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0},fr=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1},Mr=Object.prototype.toString;function Ir(e){if(!(this instanceof Ir))return new Ir(e);this.options=bo.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options,e=(t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15{t=s.modules[e],\"group-module\"===e?this._map.set(vs,new t(this)):\"relationship-module\"===e?this._map.set(Es,new t(this)):\"signaling-module\"===e?this._map.set(Ws,new t(this)):\"follow-module\"===e?this._map.set(zs,new t(this)):\"cloud-search-module\"===e&&this._map.set(Xs,new t(this)),this._optionalModuleMap.set(e,1)}),this._map.get(Rs).setUsingChatCore(!0)}else this._map.has(vs)||this._map.get(Rs).setUsingChatCore(!0);var{instanceID:t,SDKAppID:i}=s,t=`instanceID:${t} SDKAppID:${i} isIntl:${this._map.get(Rs).isIntl()} isUsingChatCore:${this._map.get(Rs).isUsingChatCore()} host:${ht()} isIOSWebView:${re} platform:${V} canIUseInflate:${this.canIUseInflate()} workerAvailable:${ie} eventThrottling:${this._eventThrottling} UserAgent:`+q;Ti.bindEventStatModule(this._map.get(As)),Ti.bindNetMonitorModule(this._map.get(Os)),e.setMessage(t+\" \"+function(){let t=\"\";if(k)try{var{model:e,version:s,system:i,platform:n,SDKVersion:o}=$.getSystemInfoSync();t=`model:${e} version:${s} system:${i} platform:${n} SDKVersion:`+o}catch(e){t=\"\"}return t}()).end(),Ce.i(\"SDK \"+t),Qs.prototype._getErrMsg=this.getErrMsg.bind(this),this._readyList=void 0,this._ssoLogForReady=null,this._initReadyList()}_startTimer(){const e=this._map.get(bs),t=e.isWorkerEnabled();Ce.l(this._n+`.startTimer isWorkerEnabled:${t} seed:`+this._checkTimer),t?e.startWorkerTimer():this._startMainThreadTimer()}_startMainThreadTimer(){this._checkTimer<0&&(this._checkTimer=setInterval(this.onCheckTimer.bind(this),1e3)),Ce.l(this._n+\"._startMainThreadTimer seed:\"+this._checkTimer)}stopTimer(){const e=this._map.get(bs),t=e.isWorkerEnabled();Ce.l(this._n+`.stopTimer isWorkerEnabled:${t} seed:`+this._checkTimer),t?e.stopWorkerTimer():this._stopMainThreadTimer()}_stopMainThreadTimer(){Ce.l(this._n+\"._stopMainThreadTimer\"),0{e.ready(()=>this._onModuleReady())})}_onModuleReady(){let t=!0;if(this._readyList.forEach(e=>{e.isReady()||(t=!1)}),t&&!this._isReady){this._isReady=!0,this._oEmitter.emit(e.SDK_READY);const t=Date.now()-this._startLoginTs;Ce.w(`SDK is ready. cost ${t} ms`),this._startLoginTs=Date.now();var s=this._ssoLogForReady.getStartTs()+he;this._ssoLogForReady.setMessage(t).start(s).end()}}login(){0===this._startLoginTs&&(ge(),this._startLoginTs=Date.now(),this._startTimer(),this._map.get(Os).start(),this._ssoLogForReady=new Ti(\"sdkReady\"),this._reason=ei.LOGGING_IN)}onLoginFailed(){this._startLoginTs=0}getOEmitInst(){return null===this._oEmitter&&(this._oEmitter=new kn,si(this._oEmitter),this._oEmitter._emit=this._oEmitter.emit,this._oEmitter.emit=function(t,s){if(this._canIUseSignaling()&&(t===e.MESSAGE_RECEIVED&&this.get(Ws).onNewMessageList(s),t===e.MESSAGE_MODIFIED&&this.get(Ws).onMessageModified(s)),t===e.CONVERSATION_LIST_UPDATED||t===e.FRIEND_LIST_UPDATED||t===e.GROUP_LIST_UPDATED||t===e.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED)if(!1!==this._eventThrottling)if(this._eventThrottleMap.has(t)){const e=Date.now(),s=this._eventThrottleMap.get(t);e-s.last<=1e3?(-1{s.last=Date.now(),this._oEmitter._emit.apply(this._oEmitter,[t,{name:t,data:this._getEventData(t)}])},1e3)):(s.last=e,this._oEmitter._emit.apply(this._oEmitter,[t,{name:t,data:this._getEventData(t)}]))}else this._eventThrottleMap.set(t,{last:Date.now(),timeoutID:-1}),this._oEmitter._emit.apply(this._oEmitter,[t,{name:t,data:this._getEventData(t)}]);else this._oEmitter._emit.apply(this._oEmitter,[t,{name:t,data:this._getEventData(t)}]);else this._oEmitter._emit.apply(this._oEmitter,[t,{name:t,data:s}])}.bind(this)),this._oEmitter}_canIUseSignaling(){const e=this.get(Ws);return!!e&&e.canIUseSignaling()}_getEventData(t){return t===e.CONVERSATION_LIST_UPDATED?this._map.get(Rs).isPartialUpdatedConvs()?this._map.get(Ds).getPartialUpdatedConvs():this._map.get(Ds).getLocalConvList():t===e.FRIEND_LIST_UPDATED?this._map.get(Es).getLocalFriendList(!1):t===e.GROUP_LIST_UPDATED?this._map.get(vs).getLocalGroupList():t===e.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED?this._map.get(Ds).getTotalUnreadCount():t===e.CONVERSATION_ID_LIST_UPDATED?this._map.get(Ds).getUpdatedConvIDList():void 0}getIEmitInst(){return null===this._iEmitter&&(this._iEmitter=new kn,this._iEmitter._emit=this._iEmitter.emit,this._iEmitter.emit=function(e,t){e=be(t)&&t.data?[e,{name:e,data:t.data}]:[e,{name:e,data:t}];this._iEmitter._emit.apply(this._iEmitter,e)}.bind(this)),this._iEmitter}hasModule(e){return this._map.has(e)}get(e){return this._map.get(e)}canIUseModule(e){return!this._map.get(Rs).isUsingChatCore()||this._optionalModuleMap.has(e)}canIUseInflate(){return!!this._map.get(Js)}isReady(){return this._isReady}isIntl(){return this.get(Rs).isIntl()}getNotReadyReason(){return this._reason}setNotReadyReason(e){this._reason=e}getErrMsg(e,t,s){return this._map.get(Hs).get({key:e,replacement1:t,replacement2:s,isIntl:this.isIntl()})}warn(e,t,s){e=this.getErrMsg(e,t,s);e&&Ce.w(e)}onError(t){var s=`code:${t.code} message:`+t.message;Ce.w(\"Oops! \"+s),new Ti(\"error\").setMessage(s).setLevel(\"error\").end(),this.getOEmitInst().emit(e.ERROR,t)}restartTimer(){Ce.l(this._n+\".restartTimer\"),this.stopTimer(),this._startTimer();const e=this.get(vs);e&&e.restartPolling()}getTimerID(){const e=this._map.get(bs);return e.isWorkerEnabled()?e.getTimerID():this._checkTimer}getPollingTimerID(e){return this._map.get(vs).getPollingTimerID(e)}statTUIKeyFeatures(e){var{code:e,msg:t=\"\"}=e,s=e+t;this._codeMsgForTUIMap.has(s)||(this._codeMsgForTUIMap.set(s,1),s=this.get(Rs).getUIPlatform(),new Ti(\"tui_key_features\").setCode(e).setMessage(t).setUIPlatform(s).end())}reset(){Ce.l(this._n+\".reset\"),ge();for(const[,e]of this._map)e.reset&&e.reset();this._startLoginTs=0,this._initReadyList(),this._isReady=!1,this.stopTimer(),this._oEmitter.emit(e.SDK_NOT_READY);for(const[,e]of this._eventThrottleMap)-1(this._safetyCallbackFactory.reset(),this._m.reset(),e))}getLoginUser(){return this._get(Ms).getLoginUser()}getServerTime(){return pe()}isReady(){return this._m.isReady()}isIntl(){return this._m.isIntl()}getNotReadyReason(){return this._m.getNotReadyReason()}getErrMsg(e,t,s){return this._m.getErrMsg(e,t,s)}_get(e){return this._m.get(e)}destroy(){const t=this._get(Rs),s=t.getSDKAppID();return Ce.w(`destroy ${s} `+t.getInstanceID()),this.logout().finally(()=>{this._safetyCallbackFactory.destroy(),this._m.stopTimer(),this._get(bs).terminate(),this._get(ks).dealloc(),this._m.getOEmitInst().emit(e.SDK_DESTROY,{SDKAppID:s})})}on(e,t,s){Ce.d(\"on\",\"eventName:\"+e),this._m.getOEmitInst().on(e,this._safetyCallbackFactory.defense(e,t,s),s)}once(e,t,s){Ce.d(\"once\",\"eventName:\"+e),this._m.getOEmitInst().once(e,this._safetyCallbackFactory.defenseOnce(e,t,s),s||this)}off(e,t,s,i){Ce.d(\"off\",\"eventName:\"+e);var n=this._safetyCallbackFactory.find(e,t);null!==n&&(this._m.getOEmitInst().off(e,n,s,i),this._safetyCallbackFactory.delete(e,t))}registerPlugin(e){($e(e[\"tim-push\"])?$e(e[\"tim-offline-push-plugin\"])?this._get(Ps):this._get(xs):this._get(js)).registerPlugin(e)}setLogLevel(e){if(e<=0){const e=this.getErrMsg(\"TIM_ASCII_ART\");e&&console.log(e);var t=this.getErrMsg(\"API_REFER\");if(t){const e=\"IM SDK API ->\";Et()?console.log(`%c ${e} %c`,\"background:#ff9d00; padding:1px; border-radius:3px; color: #fff\",\"background:transparent\",t):console.log(e,t)}t=this.getErrMsg(\"DOCS_GUIDE\"),t=(t&&console.log(t),this.getErrMsg(\"IOS_WEBVIEW_WARNING\"));re&&t&&console.warn(t)}Ce.setLevel(e)}createTextMessage(e){return this._get(Is).createTextMessage(e)}createTextAtMessage(e){return this._get(Is).createTextMessage(e)}createImageMessage(e){return this._get(Is).createImageMessage(e)}createAudioMessage(e){return this._get(Is).createAudioMessage(e)}createVideoMessage(e){return this._get(Is).createVideoMessage(e)}createCustomMessage(e){return this._get(Is).createCustomMessage(e)}createFaceMessage(e){return this._get(Is).createFaceMessage(e)}createFileMessage(e){return this._get(Is).createFileMessage(e)}createLocationMessage(e){return this._get(Is).createLocationMessage(e)}createMergerMessage(e){return this._get(Is).createMergerMessage(e)}downloadMergerMessage(e){return e.type!==t.MSG_MERGER?ni({code:ei.MSG_MERGER_TYPE_INVALID}):Oe(e.payload.downloadKey)?ni({code:ei.MSG_MERGER_KEY_INVALID}):this._get(Is).downloadMergerMessage(e).catch(e=>ni({code:ei.MSG_MERGER_DOWNLOAD_FAIL}))}createForwardMessage(e){return this._get(Is).createForwardMessage(e)}sendMessage(e,t){return e instanceof xi?this._get(Is).sendMessageInstance(e,t):ni({code:ei.MSG_INSTANCE_REQUIRED})}callExperimentalAPI(e,t){return\"sendComboMessage\"===e?this._get(Ks).sendMessage(t):\"handleGroupInvitation\"===e?this._get(vs).handleGroupInvitation(t):\"isCommercialAbilityEnabled\"===e?this._get(qs).isFeatureEnabled(t):\"isFeatureEnabledForStat\"===e?this._get(qs).isFeatureEnabledForStat(t):\"isIntl\"===e?this.isIntl():\"sendTRTCCustomData\"===e||\"sendRoomCustomData\"===e?this._get(Bs).sendTRTCCustomData(t):\"getTimerID\"===e?this._m.getTimerID():\"getPollingTimerID\"===e?this._m.getPollingTimerID(t):\"setApplicationID\"!==e?\"getServerConfig\"===e?this._get(ws).getServerConfig(t):\"canIUseModule\"===e?this._m.canIUseModule(t):\"startMessageLongPolling\"===e?this._get(vs).startMessageLongPolling(t):\"stopMessageLongPolling\"===e?this._get(vs).stopMessageLongPolling(t):\"disableMessagePullOnInvite\"===e?this._get(Ds).disableMsgPullOnInvite(t):\"clearLocalMessage\"===e?this._get(Ds).clearMemMsg(t,!1):\"setCustomLoginInfo\"===e?this._get(Rs).setCustomLoginInfo(t):\"statTUIKeyFeatures\"===e?this._m.statTUIKeyFeatures(t):ni({code:ei.INVALID_OPERATION}):(this._get(Rs).setApplicationID(t),void this._get(Gs).updateProtocolConfig())}revokeMessage(e){return this._get(Is).revokeMessage(e)}resendMessage(e,t){return e instanceof xi?this._get(Is).resendMessage(e,t):ni({code:ei.MSG_INSTANCE_REQUIRED})}deleteMessage(e){return this._get(Is).deleteMessage(e)}translateText(e){return this._get(Is).translateText(e)}convertVoiceToText(e){return this._get(Is).convertVoiceToText(e)}setMessageExtensions(e,t){return this._get(Cs).setMessageExtensions(e,t)}getMessageExtensions(e){return this._get(Cs).getMessageExtensions(e)}deleteMessageExtensions(e,t){return this._get(Cs).deleteMessageExtensions(e,t)}addMessageReaction(e,t){return this._get(Ys).addMessageReaction(e,t)}removeMessageReaction(e,t){return this._get(Ys).removeMessageReaction(e,t)}getMessageReactions(e){return this._get(Ys).getMessageReactions(e)}getAllUserListOfMessageReaction(e){return this._get(Ys).getAllUserListOfMessageReaction(e)}modifyMessage(e){return this._get(Is).modifyRemoteMessage(e)}getMessageList(e){return this._get(Ds).getMessageList(e)}getMessageListHopping(e){return this._get(Ds).getMessageListHopping(e)}sendMessageReadReceipt(e){return this._get(Ds).sendReadReceipt(e)}getMessageReadReceiptList(e){return this._get(Ds).getReadReceiptList(e)}getGroupMessageReadMemberList(e){const t=this._get(vs);return t?t.getReadReceiptDetail(e):ni({code:ei.NO_MODULE})}findMessage(e){return this._get(Ds).findMessage(e)}setMessageRead(e){return this._get(Ds).setMessageRead(e)}getConversationList(e){return this._get(Ds).getConvList(e)}getConversationProfile(e){return this._get(Ds).getConversationProfile(e)}deleteConversation(e){return this._get(Ds).deleteConversation(e)}setConversationDraft(e){return this._get(Ds).setConvDraft(e)}clearHistoryMessage(e){return this._get(Ds).clearHistoryMessage(e)}pinConversation(e){return this._get(Ds).pinConversation(e)}setAllMessageRead(e){return this._get(Ds).setAllMessageRead(e)}setMessageRemindType(e){return this._get(Ds).setMessageRemindType(e)}setAllReceiveMessageOpt(e){return this._get(Ds).setAllRcvMsgOpt(e)}getAllReceiveMessageOpt(){return this._get(Ds).getAllRcvMsgOpt()}getTotalUnreadMessageCount(){return this._get(Ds).getTotalUnreadCount()}setConversationCustomData(e){return this._get(Ds).setConvCustomData(e)}markConversation(e){return this._get(Ds).markConv(e)}getConversationGroupList(){return this._get(Ds).getConvGroupList()}createConversationGroup(e){return this._get(Ds).createConvGroup(e)}deleteConversationGroup(e){return this._get(Ds).deleteConvGroup(e)}renameConversationGroup(e){return this._get(Ds).renameConvGroup(e)}addConversationsToGroup(e){return this._get(Ds).addConvsToGroup(e)}deleteConversationsFromGroup(e){return this._get(Ds).deleteConvsFromGroup(e)}searchCloudMessages(e){const t=this._get(Xs);return t?t.searchCloudMessages(e):ni({code:ei.NO_MODULE})}searchCloudUsers(e){const t=this._get(Xs);return t?t.searchCloudUsers(e):ni({code:ei.NO_MODULE})}searchCloudGroups(e){const t=this._get(Xs);return t?t.searchCloudGroups(e):ni({code:ei.NO_MODULE})}searchCloudGroupMembers(e){const t=this._get(Xs);return t?t.searchCloudGroupMembers(e):ni({code:ei.NO_MODULE})}getMyProfile(){return this._get(Ts).getMyProfile()}getUserProfile(e){return this._get(Ts).getUserProfile(e)}updateMyProfile(e){return this._get(Ts).updateMyProfile(e)}getBlacklist(){return this._get(Ts).getLocalBlacklist()}addToBlacklist(e){return this._get(Ts).addBlacklist(e)}removeFromBlacklist(e){return this._get(Ts).deleteBlacklist(e)}setSelfStatus(e){return this._get(Ts).setSelfStatus(e)}getUserStatus(e){return this._get(Ts).getUserStatus(e)}subscribeUserStatus(e){return this._get(Ts).subscribeUserStatus(e)}unsubscribeUserStatus(e){return this._get(Ts).unsubscribeUserStatus(e)}getFriendList(){const e=this._get(Es);return e?e.getLocalFriendList():ni({code:ei.NO_MODULE})}addFriend(e){const t=this._get(Es);return t?t.addFriend(e):ni({code:ei.NO_MODULE})}deleteFriend(e){const t=this._get(Es);return t?t.deleteFriend(e):ni({code:ei.NO_MODULE})}checkFriend(e){const t=this._get(Es);return t?t.checkFriend(e):ni({code:ei.NO_MODULE})}getFriendProfile(e){const t=this._get(Es);return t?t.getFriendProfile(e):ni({code:ei.NO_MODULE})}updateFriend(e){const t=this._get(Es);return t?t.updateFriend(e):ni({code:ei.NO_MODULE})}getFriendApplicationList(){const e=this._get(Es);return e?e.getLocalFriendApplicationList():ni({code:ei.NO_MODULE})}acceptFriendApplication(e){const t=this._get(Es);return t?t.acceptFriendApplication(e):ni({code:ei.NO_MODULE})}refuseFriendApplication(e){const t=this._get(Es);return t?t.refuseFriendApplication(e):ni({code:ei.NO_MODULE})}deleteFriendApplication(e){const t=this._get(Es);return t?t.deleteFriendApplication(e):ni({code:ei.NO_MODULE})}setFriendApplicationRead(){const e=this._get(Es);return e?e.setFriendApplicationRead():ni({code:ei.NO_MODULE})}getFriendGroupList(){const e=this._get(Es);return e?e.getLocalFriendGroupList():ni({code:ei.NO_MODULE})}createFriendGroup(e){const t=this._get(Es);return t?t.createFriendGroup(e):ni({code:ei.NO_MODULE})}deleteFriendGroup(e){const t=this._get(Es);return t?t.deleteFriendGroup(e):ni({code:ei.NO_MODULE})}addToFriendGroup(e){const t=this._get(Es);return t?t.addToFriendGroup(e):ni({code:ei.NO_MODULE})}removeFromFriendGroup(e){const t=this._get(Es);return t?t.removeFromFriendGroup(e):ni({code:ei.NO_MODULE})}renameFriendGroup(e){const t=this._get(Es);return t?t.renameFriendGroup(e):ni({code:ei.NO_MODULE})}followUser(e){const t=this._get(zs);return t?t.followUser(e):ni({code:ei.NO_MODULE})}unfollowUser(e){const t=this._get(zs);return t?t.unfollowUser(e):ni({code:ei.NO_MODULE})}getMyFollowersList(e){const t=this._get(zs);return t?t.getMyFollowersList(e):ni({code:ei.NO_MODULE})}getMyFollowingList(e){const t=this._get(zs);return t?t.getMyFollowingList(e):ni({code:ei.NO_MODULE})}getMutualFollowersList(e){const t=this._get(zs);return t?t.getMutualFollowersList(e):ni({code:ei.NO_MODULE})}getUserFollowInfo(e){const t=this._get(zs);return t?t.getUserFollowInfo(e):ni({code:ei.NO_MODULE})}checkFollowType(e){const t=this._get(zs);return t?t.checkFollowType(e):ni({code:ei.NO_MODULE})}getGroupList(){const e=this._get(vs);return e?e.getGroupList():ni({code:ei.NO_MODULE})}getGroupProfile(e){const t=this._get(vs);return t?t.getGroupProfile(e):ni({code:ei.NO_MODULE})}createGroup(e){const t=this._get(vs);return t?t.createGroup(e):ni({code:ei.NO_MODULE})}dismissGroup(e){const t=this._get(vs);return t?t.dismissGroup(e):ni({code:ei.NO_MODULE})}updateGroupProfile(e){const t=this._get(vs);return t?t.updateGroupProfile(e):ni({code:ei.NO_MODULE})}joinGroup(e){const t=this._get(vs);return t?t.joinGroup(e):ni({code:ei.NO_MODULE})}quitGroup(e){const t=this._get(vs);return t?t.quitGroup(e):ni({code:ei.NO_MODULE})}searchGroupByID(e){const t=this._get(vs);return t?t.searchGroupByID(e):ni({code:ei.NO_MODULE})}getGroupOnlineMemberCount(e){const t=this._get(vs);return t?t.getGroupOnlineMemberCount(e):ni({code:ei.NO_MODULE})}changeGroupOwner(e){const t=this._get(vs);return t?t.changeGroupOwner(e):ni({code:ei.NO_MODULE})}getGroupApplicationList(){const e=this._get(vs);return e?e.getGroupApplicationList():ni({code:ei.NO_MODULE})}handleGroupApplication(e){const t=this._get(vs);return t?t.handleGroupApplication(e):ni({code:ei.NO_MODULE})}initGroupAttributes(e){const t=this._get(vs);return t?t.initGroupAttributes(e):ni({code:ei.NO_MODULE})}setGroupAttributes(e){const t=this._get(vs);return t?t.setGroupAttributes(e):ni({code:ei.NO_MODULE})}deleteGroupAttributes(e){const t=this._get(vs);return t?t.deleteGroupAttributes(e):ni({code:ei.NO_MODULE})}getGroupAttributes(e){const t=this._get(vs);return t?t.getGroupAttributes(e):ni({code:ei.NO_MODULE})}setGroupCounters(e){const t=this._get(vs);return t?t.setGroupCounters(e):ni({code:ei.NO_MODULE})}increaseGroupCounter(e){const t=this._get(vs);return t?t.increaseGroupCounter(e):ni({code:ei.NO_MODULE})}decreaseGroupCounter(e){const t=this._get(vs);return t?t.decreaseGroupCounter(e):ni({code:ei.NO_MODULE})}getGroupCounters(e){const t=this._get(vs);return t?t.getGroupCounters(e):ni({code:ei.NO_MODULE})}getGroupMemberList(e){const t=this._get(vs);return t?t.getGroupMemberList(e):ni({code:ei.NO_MODULE})}getGroupMemberProfile(e){const t=this._get(vs);return t?t.getGroupMemberProfile(e):ni({code:ei.NO_MODULE})}addGroupMember(e){const t=this._get(vs);return t?t.addGroupMember(e):ni({code:ei.NO_MODULE})}deleteGroupMember(e){const t=this._get(vs);return t?t.deleteGroupMember(e):ni({code:ei.NO_MODULE})}setGroupMemberMuteTime(e){const t=this._get(vs);return t?t.setGroupMemberMuteTime(e):ni({code:ei.NO_MODULE})}setGroupMemberRole(e){const t=this._get(vs);return t?t.setGroupMemberRole(e):ni({code:ei.NO_MODULE})}setGroupMemberNameCard(e){const t=this._get(vs);return t?t.setGroupMemberNameCard(e):ni({code:ei.NO_MODULE})}setGroupMemberCustomField(e){const t=this._get(vs);return t?t.setGroupMemberCustomField(e):ni({code:ei.NO_MODULE})}markGroupMemberList(e){const t=this._get(vs);return t?t.markGroupMemberList(e):ni({code:ei.NO_MODULE})}getJoinedCommunityList(){return this._get(Ss).getJoinedCommunityList()}createTopicInCommunity(e){return this._get(Ss).createTopicInCommunity(e)}deleteTopicFromCommunity(e){return this._get(Ss).deleteTopicFromCommunity(e)}updateTopicProfile(e){return this._get(Ss).updateTopicProfile(e)}getTopicList(e){return this._get(Ss).getTopicList(e)}addSignalingListener(e,t,s){const i=this._get(Ws);i&&i.addSignalingListener(e,this._safetyCallbackFactory.defense(e,t,s),s)}removeSignalingListener(e,t,s){var i=this._safetyCallbackFactory.find(e,t);if(null!==i){const n=this._get(Ws);n&&(n.removeSignalingListener(e,i,s),this._safetyCallbackFactory.delete(e,t))}}invite(e){const t=this._get(Ws);return t?t.invite(e):ni({code:ei.NO_MODULE})}inviteSync(e,t,s){const i=this._get(Ws);return i?i.inviteSync(e,t,s):\"\"}inviteInGroup(e){const t=this._get(Ws);return t?t.invite(e):ni({code:ei.NO_MODULE})}inviteInGroupSync(e,t,s){const i=this._get(Ws);return i?i.inviteSync(e,t,s):\"\"}cancel(e){const t=this._get(Ws);return t?t.cancel(e):ni({code:ei.NO_MODULE})}accept(e){const t=this._get(Ws);return t?t.accept(e):ni({code:ei.NO_MODULE})}reject(e){const t=this._get(Ws);return t?t.reject(e):ni({code:ei.NO_MODULE})}getSignalingInfo(e){const t=this._get(Ws);return t?t.getSignalingInfo(e):null}modifyInvitation(e){const t=this._get(Ws);return t?t.modifyInvitation(e):ni({code:ei.NO_MODULE})}}const Lr={login:1,logout:1,getLoginUser:1,destroy:1,on:1,off:1,ready:1,setLogLevel:1,joinGroup:1,quitGroup:1,registerPlugin:1,getGroupOnlineMemberCount:1,isReady:1,addSignalingListener:1,removeSignalingListener:1,callExperimentalAPI:1};function Ar(e,t){if(e.isReady()||1===Lr[t])return!0;var s=e.getNotReadyReason(),s={code:s,message:e.getErrMsg(s)+` | ${t} | `+e.getErrMsg(ei.SDK_IS_NOT_READY)};return e.onError(s),s}const Or={},Nr={create:function(t){var i=\"TencentCloudChat.create\";let n=0;var o=t[\"SDKAppID\"];if(Ge(o))n=o;else if(n=parseInt(o),isNaN(o))return Ce.e(i+\" failed. Failed to parse the SDKAppID, please check the arguments\"),null;if(n&&Or[n])return Or[n];Ce.l(i);const r=new Rr({...t,SDKAppID:n});r.on(e.SDK_DESTROY,e=>{Or[e.data.SDKAppID]=null,delete Or[e.data.SDKAppID]});o=function(n){const e=Object.create(null);return Object.keys(fs).forEach(i=>{if(n[i]){const t=new s;e[i]=function(){var e=Array.from(arguments);return t.use(function(e,t){var s=Ar(n,i);return!0===s?t():ni(s)}).use(function(e,t){if(!0===Lt(e,ms[i],i))return t()}).use(function(e,t){return n[i].apply(n,e)}),t.run(e)}}}),e}(r);return Or[n]=o,ms.hookGetAPITips(r.getErrMsg.bind(r)),Ce.l(i+\" ok\"),o}};Nr.TYPES=t,Nr.EVENT=e,Nr.TSignaling={NEW_INVITATION_RECEIVED:\"newInvitationReceived\",INVITEE_ACCEPTED:\"ts_invitee_accepted\",INVITEE_REJECTED:\"ts_invitee_rejected\",INVITATION_CANCELLED:\"ts_invitation_cancelled\",INVITATION_TIMEOUT:\"ts_invitation_timeout\",INVITATION_MODIFIED:\"ts_invitation_modified\",ACTION_TYPE_UNKNOWN:0,ACTION_TYPE_INVITE:1,ACTION_TYPE_CANCEL_INVITE:2,ACTION_TYPE_ACCEPT_INVITE:3,ACTION_TYPE_REJECT_INVITE:4,ACTION_TYPE_INVITE_TIMEOUT:5},Nr.VERSION=\"3.5.2\",Ce.l(\"TencentCloudChat.VERSION:\"+Nr.VERSION);export{Nr as default};"],
- "mappings": "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",
- "names": ["e", "t", "s", "i", "n", "o", "r", "a", "c", "l", "_", "d", "h", "u", "p", "g", "m", "f", "M", "I", "C", "T", "v", "y", "E", "D", "S", "R", "O", "L", "A", "N", "P", "U"]
-}
diff --git a/service/unpackage/dist/cache/.vite/deps/_metadata.json b/service/unpackage/dist/cache/.vite/deps/_metadata.json
index 1b0a59ed..cb0cf448 100644
--- a/service/unpackage/dist/cache/.vite/deps/_metadata.json
+++ b/service/unpackage/dist/cache/.vite/deps/_metadata.json
@@ -1,25 +1,19 @@
{
- "hash": "d7401311",
- "configHash": "b4a96d31",
+ "hash": "a409d935",
+ "configHash": "da5c2bdf",
"lockfileHash": "7b6ef450",
- "browserHash": "b758873c",
+ "browserHash": "8066c8cc",
"optimized": {
- "crypto-js": {
- "src": "../../../../../node_modules/crypto-js/index.js",
- "file": "crypto-js.js",
- "fileHash": "63888f73",
- "needsInterop": true
- },
- "@tencentcloud/chat/index.es.js": {
- "src": "../../../../../node_modules/@tencentcloud/chat/index.es.js",
- "file": "@tencentcloud_chat_index__es__js.js",
- "fileHash": "1c16a284",
- "needsInterop": false
- },
"@tencentcloud/chat": {
"src": "../../../../../node_modules/@tencentcloud/chat/index.js",
"file": "@tencentcloud_chat.js",
- "fileHash": "b4c7d0e4",
+ "fileHash": "0e28df2d",
+ "needsInterop": true
+ },
+ "crypto-js": {
+ "src": "../../../../../node_modules/crypto-js/index.js",
+ "file": "crypto-js.js",
+ "fileHash": "d3e1eda0",
"needsInterop": true
}
},
diff --git a/service/unpackage/dist/cache/.vite/deps/crypto-js.js b/service/unpackage/dist/cache/.vite/deps/crypto-js.js
index 61ac5732..106358f8 100644
--- a/service/unpackage/dist/cache/.vite/deps/crypto-js.js
+++ b/service/unpackage/dist/cache/.vite/deps/crypto-js.js
@@ -16,9 +16,9 @@ var require_crypto = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/core.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/core.js
var require_core = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/core.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/core.js"(exports, module) {
(function(root, factory) {
if (typeof exports === "object") {
module.exports = exports = factory();
@@ -624,9 +624,9 @@ var require_core = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/x64-core.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/x64-core.js
var require_x64_core = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/x64-core.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/x64-core.js"(exports, module) {
(function(root, factory) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core());
@@ -881,9 +881,9 @@ var require_x64_core = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/lib-typedarrays.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/lib-typedarrays.js
var require_lib_typedarrays = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/lib-typedarrays.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/lib-typedarrays.js"(exports, module) {
(function(root, factory) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core());
@@ -926,9 +926,9 @@ var require_lib_typedarrays = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/enc-utf16.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/enc-utf16.js
var require_enc_utf16 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/enc-utf16.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/enc-utf16.js"(exports, module) {
(function(root, factory) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core());
@@ -1044,9 +1044,9 @@ var require_enc_utf16 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/enc-base64.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/enc-base64.js
var require_enc_base64 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/enc-base64.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/enc-base64.js"(exports, module) {
(function(root, factory) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core());
@@ -1152,9 +1152,9 @@ var require_enc_base64 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/enc-base64url.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/enc-base64url.js
var require_enc_base64url = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/enc-base64url.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/enc-base64url.js"(exports, module) {
(function(root, factory) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core());
@@ -1271,9 +1271,9 @@ var require_enc_base64url = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/md5.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/md5.js
var require_md5 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/md5.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/md5.js"(exports, module) {
(function(root, factory) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core());
@@ -1450,9 +1450,9 @@ var require_md5 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/sha1.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/sha1.js
var require_sha1 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/sha1.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/sha1.js"(exports, module) {
(function(root, factory) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core());
@@ -1541,9 +1541,9 @@ var require_sha1 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/sha256.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/sha256.js
var require_sha256 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/sha256.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/sha256.js"(exports, module) {
(function(root, factory) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core());
@@ -1662,9 +1662,9 @@ var require_sha256 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/sha224.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/sha224.js
var require_sha224 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/sha224.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/sha224.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_sha256());
@@ -1707,9 +1707,9 @@ var require_sha224 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/sha512.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/sha512.js
var require_sha512 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/sha512.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/sha512.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_x64_core());
@@ -1989,9 +1989,9 @@ var require_sha512 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/sha384.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/sha384.js
var require_sha384 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/sha384.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/sha384.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_x64_core(), require_sha512());
@@ -2035,9 +2035,9 @@ var require_sha384 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/sha3.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/sha3.js
var require_sha3 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/sha3.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/sha3.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_x64_core());
@@ -2237,9 +2237,9 @@ var require_sha3 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/ripemd160.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/ripemd160.js
var require_ripemd160 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/ripemd160.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/ripemd160.js"(exports, module) {
(function(root, factory) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core());
@@ -2708,9 +2708,9 @@ var require_ripemd160 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/hmac.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/hmac.js
var require_hmac = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/hmac.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/hmac.js"(exports, module) {
(function(root, factory) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core());
@@ -2815,9 +2815,9 @@ var require_hmac = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/pbkdf2.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/pbkdf2.js
var require_pbkdf2 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/pbkdf2.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/pbkdf2.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_sha256(), require_hmac());
@@ -2913,9 +2913,9 @@ var require_pbkdf2 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/evpkdf.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/evpkdf.js
var require_evpkdf = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/evpkdf.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/evpkdf.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_sha1(), require_hmac());
@@ -3004,9 +3004,9 @@ var require_evpkdf = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/cipher-core.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/cipher-core.js
var require_cipher_core = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/cipher-core.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/cipher-core.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_evpkdf());
@@ -3648,9 +3648,9 @@ var require_cipher_core = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/mode-cfb.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/mode-cfb.js
var require_mode_cfb = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/mode-cfb.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/mode-cfb.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_cipher_core());
@@ -3700,9 +3700,9 @@ var require_mode_cfb = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/mode-ctr.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/mode-ctr.js
var require_mode_ctr = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/mode-ctr.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/mode-ctr.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_cipher_core());
@@ -3740,9 +3740,9 @@ var require_mode_ctr = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/mode-ctr-gladman.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/mode-ctr-gladman.js
var require_mode_ctr_gladman = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/mode-ctr-gladman.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/mode-ctr-gladman.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_cipher_core());
@@ -3815,9 +3815,9 @@ var require_mode_ctr_gladman = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/mode-ofb.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/mode-ofb.js
var require_mode_ofb = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/mode-ofb.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/mode-ofb.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_cipher_core());
@@ -3853,9 +3853,9 @@ var require_mode_ofb = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/mode-ecb.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/mode-ecb.js
var require_mode_ecb = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/mode-ecb.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/mode-ecb.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_cipher_core());
@@ -3884,9 +3884,9 @@ var require_mode_ecb = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/pad-ansix923.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/pad-ansix923.js
var require_pad_ansix923 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/pad-ansix923.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/pad-ansix923.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_cipher_core());
@@ -3916,9 +3916,9 @@ var require_pad_ansix923 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/pad-iso10126.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/pad-iso10126.js
var require_pad_iso10126 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/pad-iso10126.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/pad-iso10126.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_cipher_core());
@@ -3944,9 +3944,9 @@ var require_pad_iso10126 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/pad-iso97971.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/pad-iso97971.js
var require_pad_iso97971 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/pad-iso97971.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/pad-iso97971.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_cipher_core());
@@ -3971,9 +3971,9 @@ var require_pad_iso97971 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/pad-zeropadding.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/pad-zeropadding.js
var require_pad_zeropadding = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/pad-zeropadding.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/pad-zeropadding.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_cipher_core());
@@ -4005,9 +4005,9 @@ var require_pad_zeropadding = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/pad-nopadding.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/pad-nopadding.js
var require_pad_nopadding = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/pad-nopadding.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/pad-nopadding.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_cipher_core());
@@ -4028,9 +4028,9 @@ var require_pad_nopadding = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/format-hex.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/format-hex.js
var require_format_hex = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/format-hex.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/format-hex.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_cipher_core());
@@ -4088,9 +4088,9 @@ var require_format_hex = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/aes.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/aes.js
var require_aes = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/aes.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/aes.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_enc_base64(), require_md5(), require_evpkdf(), require_cipher_core());
@@ -4242,9 +4242,9 @@ var require_aes = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/tripledes.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/tripledes.js
var require_tripledes = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/tripledes.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/tripledes.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_enc_base64(), require_md5(), require_evpkdf(), require_cipher_core());
@@ -5023,9 +5023,9 @@ var require_tripledes = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/rc4.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/rc4.js
var require_rc4 = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/rc4.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/rc4.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_enc_base64(), require_md5(), require_evpkdf(), require_cipher_core());
@@ -5106,9 +5106,9 @@ var require_rc4 = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/rabbit.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/rabbit.js
var require_rabbit = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/rabbit.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/rabbit.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_enc_base64(), require_md5(), require_evpkdf(), require_cipher_core());
@@ -5235,9 +5235,9 @@ var require_rabbit = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/rabbit-legacy.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/rabbit-legacy.js
var require_rabbit_legacy = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/rabbit-legacy.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/rabbit-legacy.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_enc_base64(), require_md5(), require_evpkdf(), require_cipher_core());
@@ -5361,9 +5361,9 @@ var require_rabbit_legacy = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/blowfish.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/blowfish.js
var require_blowfish = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/blowfish.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/blowfish.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_enc_base64(), require_md5(), require_evpkdf(), require_cipher_core());
@@ -6550,9 +6550,9 @@ var require_blowfish = __commonJS({
}
});
-// ../../../../document/九亿商城/service/node_modules/crypto-js/index.js
+// ../../../../document/九亿商城/jy/service/node_modules/crypto-js/index.js
var require_crypto_js = __commonJS({
- "../../../../document/九亿商城/service/node_modules/crypto-js/index.js"(exports, module) {
+ "../../../../document/九亿商城/jy/service/node_modules/crypto-js/index.js"(exports, module) {
(function(root, factory, undef) {
if (typeof exports === "object") {
module.exports = exports = factory(require_core(), require_x64_core(), require_lib_typedarrays(), require_enc_utf16(), require_enc_base64(), require_enc_base64url(), require_md5(), require_sha1(), require_sha256(), require_sha224(), require_sha512(), require_sha384(), require_sha3(), require_ripemd160(), require_hmac(), require_pbkdf2(), require_evpkdf(), require_cipher_core(), require_mode_cfb(), require_mode_ctr(), require_mode_ctr_gladman(), require_mode_ofb(), require_mode_ecb(), require_pad_ansix923(), require_pad_iso10126(), require_pad_iso97971(), require_pad_zeropadding(), require_pad_nopadding(), require_format_hex(), require_aes(), require_tripledes(), require_rc4(), require_rabbit(), require_rabbit_legacy(), require_blowfish());
diff --git a/service/vite.config.js b/service/vite.config.js
new file mode 100644
index 00000000..51460a10
--- /dev/null
+++ b/service/vite.config.js
@@ -0,0 +1,41 @@
+import {
+ defineConfig
+} from 'vite';
+import uni from '@dcloudio/vite-plugin-uni';
+
+// let target = 'http://91f.xyz:8080'
+let target = 'http://1a4b9ed1.r24.cpolar.top'
+
+export default defineConfig({
+ plugins: [uni()],
+ server: {
+ host: "0.0.0.0",
+ port: 5173,
+ proxy: {
+ "/system": {
+ target,
+ changeOrigin: true,
+ },
+ "/shopify": {
+ target,
+ changeOrigin: true,
+ },
+ "/user": {
+ target,
+ changeOrigin: true,
+ },
+ "/coreplay": {
+ target,
+ changeOrigin: true,
+ },
+ "/file": {
+ target,
+ changeOrigin: true,
+ },
+ "/video": {
+ target,
+ changeOrigin: true,
+ },
+ }
+ }
+})
\ No newline at end of file