{"version":3,"sources":["webpack:///./node_modules/core-js/library/modules/es6.symbol.js","webpack:///./node_modules/core-js/library/modules/_object-gopn-ext.js","webpack:///./node_modules/core-js/library/modules/_has.js","webpack:///./node_modules/core-js/library/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/library/modules/_an-instance.js","webpack:///./node_modules/core-js/library/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/library/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/library/modules/es6.array.is-array.js","webpack:///./node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/better-scroll/dist/bscroll.esm.js","webpack:///./node_modules/core-js/library/modules/_create-property.js","webpack:///./node_modules/@ks/weblogger/dist/log.common.js","webpack:///./node_modules/core-js/library/modules/_to-object.js","webpack:///./node_modules/@ks/sharp-ui/lib/loading.js","webpack:///./node_modules/core-js/library/modules/es6.promise.js","webpack:///./node_modules/core-js/library/modules/_defined.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/core-js/library/modules/_invoke.js","webpack:///./node_modules/core-js/library/modules/_iter-define.js","webpack:///./node_modules/core-js/library/modules/_html.js","webpack:///./node_modules/core-js/library/modules/_iobject.js","webpack:///./node_modules/core-js/library/modules/_object-pie.js","webpack:///./node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/core-js/library/modules/_to-iobject.js","webpack:///./node_modules/core-js/library/modules/_is-array-iter.js","webpack:///./node_modules/core-js/library/modules/_to-integer.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js","webpack:///./node_modules/core-js/library/modules/es7.promise.finally.js","webpack:///./node_modules/core-js/library/modules/_classof.js","webpack:///./node_modules/core-js/library/modules/_task.js","webpack:///./node_modules/@ks/sharp-ui/lib/icon.js","webpack:///./node_modules/core-js/library/modules/es7.promise.try.js","webpack:///./node_modules/core-js/library/modules/_perform.js","webpack:///./node_modules/core-js/library/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/library/modules/_enum-keys.js","webpack:///./node_modules/core-js/library/modules/_iterators.js","webpack:///./node_modules/core-js/library/modules/_set-species.js","webpack:///./node_modules/core-js/library/modules/_iter-detect.js","webpack:///./node_modules/core-js/library/modules/_iter-step.js","webpack:///./node_modules/core-js/library/modules/_wks.js","webpack:///./node_modules/core-js/library/modules/_object-gpo.js","webpack:///./node_modules/core-js/library/modules/es6.array.from.js","webpack:///./node_modules/core-js/library/fn/is-iterable.js","webpack:///./node_modules/core-js/library/modules/_shared-key.js","webpack:///./node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/core-js/library/modules/_array-includes.js","webpack:///./node_modules/core-js/library/modules/_redefine-all.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js","webpack:///./node_modules/core-js/library/modules/_uid.js","webpack:///./node_modules/@ks/sharp-ui/lib/popup.js","webpack:///./node_modules/@ks/sharp-ui/lib/dialog.js","webpack:///./node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/core-js/library/modules/_new-promise-capability.js","webpack:///./node_modules/core-js/library/modules/_wks-define.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/symbol.js","webpack:///./node_modules/core-js/library/fn/promise.js","webpack:///./node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/core-js/library/modules/_object-gopn.js","webpack:///./node_modules/core-js/library/modules/_cof.js","webpack:///./node_modules/core-js/library/modules/web.dom.iterable.js","webpack:///./node_modules/core-js/library/modules/_string-at.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/typeof.js","webpack:///./node_modules/core-js/library/modules/es7.symbol.observable.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/array/from.js","webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/promise.js","webpack:///./node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/core-js/library/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/library/modules/_object-dps.js","webpack:///./node_modules/core-js/library/modules/_add-to-unscopables.js","webpack:///./node_modules/@ks/sharp-ui/lib/scroll.js","webpack:///./node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/core-js/library/modules/_iter-create.js","webpack:///./node_modules/core-js/library/modules/_is-array.js","webpack:///./node_modules/core-js/library/modules/_redefine.js","webpack:///./node_modules/core-js/library/modules/core.is-iterable.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/core-js/library/modules/_object-gops.js","webpack:///./node_modules/core-js/library/modules/_object-create.js","webpack:///./node_modules/core-js/library/modules/_for-of.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","webpack:///./node_modules/core-js/library/modules/_microtask.js","webpack:///./node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/core-js/library/modules/_iter-call.js","webpack:///./node_modules/core-js/library/modules/_to-length.js","webpack:///./node_modules/@ac/acfun-bridge/dist/@ac/acfun-bridge.js","webpack:///./node_modules/core-js/library/modules/_library.js","webpack:///./node_modules/core-js/library/modules/_user-agent.js","webpack:///./node_modules/core-js/library/modules/_object-gopd.js","webpack:///./node_modules/core-js/library/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/library/modules/_object-keys.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/is-iterable.js","webpack:///./node_modules/core-js/library/modules/_wks-ext.js","webpack:///./node_modules/core-js/library/modules/_promise-resolve.js","webpack:///./node_modules/core-js/library/fn/array/from.js","webpack:///./node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/core-js/library/fn/symbol/iterator.js","webpack:///./node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/core-js/library/modules/_shared.js","webpack:///./node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/core-js/library/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/library/modules/_meta.js","webpack:///./node_modules/core-js/library/modules/_species-constructor.js","webpack:///./node_modules/@ks/sharp-ui/lib/toast.js","webpack:///./node_modules/core-js/library/fn/array/is-array.js","webpack:///./node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/core-js/library/fn/symbol/index.js"],"names":["global","has","DESCRIPTORS","$export","redefine","META","KEY","$fails","shared","setToStringTag","uid","wks","wksExt","wksDefine","enumKeys","isArray","anObject","isObject","toIObject","toPrimitive","createDesc","_create","gOPNExt","$GOPD","$DP","$keys","gOPD","f","dP","gOPN","$Symbol","Symbol","$JSON","JSON","_stringify","stringify","PROTOTYPE","HIDDEN","TO_PRIMITIVE","isEnum","propertyIsEnumerable","SymbolRegistry","AllSymbols","OPSymbols","ObjectProto","Object","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","get","this","value","a","it","key","D","protoDesc","wrap","tag","sym","_k","isSymbol","iterator","$defineProperty","enumerable","$defineProperties","P","keys","i","l","length","$create","undefined","$propertyIsEnumerable","E","call","$getOwnPropertyDescriptor","$getOwnPropertyNames","names","result","push","$getOwnPropertySymbols","IS_OP","TypeError","arguments","$set","configurable","set","name","G","W","F","es6Symbols","split","j","wellKnownSymbols","store","k","S","keyFor","useSetter","useSimple","create","defineProperty","defineProperties","getOwnPropertyDescriptor","getOwnPropertyNames","getOwnPropertySymbols","replacer","$replacer","args","apply","valueOf","Math","toString","windowNames","window","getWindowNames","e","slice","module","exports","hasOwnProperty","toInteger","max","min","index","Constructor","forbiddenField","$at","String","iterated","_t","_i","point","O","done","fn","val","document","is","createElement","spliceOne","list","pop","slicedToArray","sliceIterator","arr","_arr","_n","_d","_e","_s","next","err","Array","toConsumableArray","arr2","from","eventMixin","BScroll","prototype","on","type","context","_events","once","magic","off","count","trigger","events","len","eventsCopy","concat","event","_event","inBrowser","ua","navigator","userAgent","toLowerCase","isWeChatDevTools","test","isAndroid","indexOf","getNow","performance","now","timing","navigationStart","Date","extend","target","_len","rest","_key","source","isUndef","v","getDistance","x","y","sqrt","elementStyle","style","vendor","transformNames","standard","webkit","Moz","ms","prefixStyle","charAt","toUpperCase","substr","addEvent","el","capture","addEventListener","passive","removeEvent","removeEventListener","offset","left","top","offsetLeft","offsetTop","offsetParent","offsetToBody","rect","getBoundingClientRect","pageXOffset","pageYOffset","cssVendor","transform","transition","hasPerspective","hasTouch","hasTransform","hasTransition","transitionTimingFunction","transitionDuration","transitionDelay","transformOrigin","transitionEnd","TOUCH_EVENT","MOUSE_EVENT","eventType","touchstart","touchmove","touchend","mousedown","mousemove","mouseup","getRect","SVGElement","width","height","offsetWidth","offsetHeight","preventDefaultException","exceptions","tap","eventName","ev","createEvent","initEvent","pageX","pageY","dispatchEvent","click","eventSource","changedTouches","posSrc","screenX","screenY","clientX","clientY","bubbles","cancelable","MouseEvent","forwardedTouchEvent","_constructed","dblclick","prepend","firstChild","before","appendChild","parentNode","insertBefore","removeChild","child","DEFAULT_OPTIONS","startX","startY","scrollX","scrollY","freeScroll","directionLockThreshold","eventPassthrough","bounce","bounceTime","momentum","momentumLimitTime","momentumLimitDistance","swipeTime","swipeBounceTime","deceleration","flickLimitTime","flickLimitDistance","resizePolling","probeType","preventDefault","tagName","HWCompositing","useTransition","useTransform","bindToWrapper","disableMouse","disableTouch","observeDOM","autoBlur","wheel","snap","scrollbar","pullDownRefresh","pullUpLoad","mouseWheel","stopPropagation","zoom","infinity","initMixin","_init","options","_handleOptions","directionX","directionY","setScale","_addDOMEvents","_initExtFeatures","_watchTransition","_initDOMObserver","_handleAutoBlur","refresh","scrollTo","enable","scale","lastScale","translateZ","eventOperation","_handleDOMEvents","_removeDOMEvents","wrapper","scroller","_initSnap","_initScrollbar","_initPullUp","_initPullDown","_initWheel","_initMouseWheel","_initZoom","_initInfinite","me","isInTransition","newVal","children","pointerEvents","pulling","activeElement","blur","_this","MutationObserver","timer","observer","mutations","_shouldNotRefresh","immediateRefresh","deferredRefresh","mutation","clearTimeout","setTimeout","config","attributes","childList","subtree","observe","disconnect","_checkDOMUpdate","outsideBoundaries","minScrollX","maxScrollX","minScrollY","maxScrollY","stopFromTransition","scrollerRect","oldWidth","oldHeight","check","destroyed","newWidth","newHeight","_this2","handleEvent","_start","touches","_zoomStart","_zoom","_move","scaled","_zoomEnd","_end","_resize","_transitionEnd","enabled","_onMouseWheel","isWrapperStatic","getComputedStyle","position","wrapperRect","wrapperWidth","wrapperHeight","scrollerWidth","round","scrollerHeight","relativeX","relativeY","items","_checkWheelAllDisabled","itemHeight","selectedIndex","hasHorizontalScroll","hasVerticalScroll","endTime","wrapperOffset","resetPosition","disable","ease","swipe","t","swipeBounce","current","start","time","lowerMargin","upperMargin","wrapperSize","scroll","distance","speed","abs","duration","rate","destination","_findNearestValidWheel","DEFAULT_INTERVAL","noop","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","callback","interval","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","id","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_RIGHT","PROBE_DEBOUNCE","PROBE_REALTIME","warn","msg","console","error","assert","condition","Error","coreMixin","_eventType","button","initiated","moved","distX","distY","movingDirectionX","movingDirectionY","directionLocked","_transitionTime","startTime","stop","absStartX","absStartY","pointX","pointY","deltaX","deltaY","absDistX","absDistY","timestamp","newX","newY","bottom","right","_translate","scrollLeft","documentElement","body","scrollTop","pX","pY","clientWidth","clientHeight","_checkPullDown","_checkClick","flick","momentumX","momentumY","adjustTime","easing","_nearestSnap","currentPage","snapSpeed","preventClick","className","wheelWrapperClass","_offset","_dblclick","dblclickTrigged","lastClickTime","_dblclick$delay","delay","resizeTimeout","_startProbe","probeTimer","probe","pos","getComputedPosition","scrollerStyle","indicators","transitionTime","_transitionTimingFunction","_i2","needReset","_options$wheel$rotate","rotate","deg","_i3","updatePosition","_animate","destX","destY","easingFn","startScale","destScale","destTime","step","isAnimating","newScale","animateTimer","scrollBy","isSilent","_reflow","scrollToElement","offsetX","offsetY","nodeType","querySelector","classList","contains","wheelItemClass","easeing","roundX","roundY","matrix","replace","destroy","snapMixin","loop","cloneNode","querySelectorAll","pages","stepX","stepY","cx","cy","m","n","_checkSnapLoop","initPageX","_loopX","initPageY","_loopY","_goToPage","snapThreshold","threshold","snapThresholdX","snapThresholdY","listenFlick","_children","posX","posY","goToPage","prev","getCurrentPage","wheelMixin","wheelTo","getSelectedIndex","wheelDisabledItemClass","currentIndex","cacheIndex","wheelItemsAllDisabled","INDICATOR_MIN_LEN","scrollbarMixin","_options$scrollbar","_options$scrollbar$fa","fade","_options$scrollbar$in","interactive","indicator","createScrollbar","direction","_insertScrollBar","Indicator","_removeScrollBars","cssText","wrapperStyle","indicatorStyle","visible","opacity","sizeRatioX","sizeRatioY","maxPosX","maxPosY","pullDownMixin","_options$pullDownRefr","_options$pullDownRefr2","_options$pullDownRefr3","finishPullDown","openPullDown","closePullDown","autoPullDownRefresh","_options$pullDownRefr4","_options$pullDownRefr5","_options$pullDownRefr6","pullUpMixin","pullupWatching","_watchPullUp","_checkToEnd","_options$pullUpLoad$t","finishPullUp","openPullUp","closePullUp","mouseWheelMixin","_handleMouseWheelEvent","mouseWheelTimer","mouseWheelEndTimer","firstWheelOpreation","_options$mouseWheel","_options$mouseWheel$s","_options$mouseWheel$i","invert","_options$mouseWheel$e","easeTime","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","detail","needTriggerEnd","zoomMixin","_options$zoom","_options$zoom$start","_options$zoom$min","_options$zoom$max","_zoomTo","originX","originY","zoomTo","_offsetToBody","firstFinger","secondFinger","startDistance","_offsetToBody2","_options$zoom2","_options$zoom2$min","_options$zoom2$max","pow","_options$zoom3","_options$zoom3$min","_options$zoom3$max","_shouldShow","_calculate","hold","fadeTimeout","indicatorHeight","_height","indicatorWidth","_width","lastPointX","lastPointY","_handleMoveEvents","_pos","snapOption","_snapOption$easing","display","RUNWAY_ITEMS","RUNWAY_ITEMS_OPPOSITE","ANIMATION_DURATION_MS","DEFAULT_SCROLL_RUNWAY","infiniteMixin","infiniteScroller","InfiniteScroller","isTombstoneNode","node","createTombstone","fetch","render","firstAttachedItem","lastAttachedItem","anchorScrollTop","anchorItem","tombstoneHeight","tombstoneWidth","tombstones","tombstonesAnimationHandlers","loadedItems","requestInProgress","hasMore","wrapperEl","scrollerEl","onResize","_onResizeHandler","onScroll","forEach","handler","item","delta","_calculateAnchoredItem","lastScreenItem","end","fill","maybeRequestContent","tombstone","attachContent","_this3","itemsNeeded","then","addContent","tombstoneLen","_removeTombstones","curPos","_fixScrollPosition","_setupAnimations","_addItem","data","unusedNodes","_collectUnusedNodes","tombstoneAnimations","_createDOMNodes","_cleanupUnusedNodes","_cacheNodeSize","resetMore","markIndex","itemLen","currentNode","currentData","splice","zIndex","_getTombStone","isTombstone","_this4","animation","_animation","tombstoneNode","tombstoneAnimationsHandler","_animation2","initialAnchor","ceil","floor","Version","object","extendStatics","d","b","setPrototypeOf","__proto__","p","__extends","__","constructor","__assign","assign","s","__rest","__awaiter","thisArg","_arguments","generator","adopt","resolve","Promise","reject","fulfilled","rejected","__generator","g","_","label","sent","trys","ops","verb","op","__spreadArrays","il","r","jl","commonGlobal","globalThis","self","log","setInterval","_WEBLOGGER_MOCKED_WINDOW_","cookie","screen","history","location","hostname","search","href","origin","localStorage","getItem","setItem","descriptor","to","nextSource","nextKey","writable","Function","bind","oThis","aArgs","fToBind","FNOP","fBound","currentThis","searchElement","fromIndex","Infinity","hasDontEnumBug","dontEnums","obj","prop","dontEnums_1","T","kValue","findIndex","predicate","commonjsGlobal","createCommonjsModule","md5","$","safeAdd","lsw","msw","bitRotateLeft","num","cnt","md5cmn","q","md5ff","c","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","input","output","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","hash","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","encodeURIComponent","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw","createCookieString","encode","text","expires","path","domain","toUTCString","secure","parseCookieString","shouldDecode","cookies","decodeValue","decodeURIComponent","cookieParts","cookieName","cookieValue","cookieNameValue","match","substring","ex","cookiesMap","getCookie","useCaches","setCookie","cookieUtils","nanoId","ts","random","randomer","seed","join","resolveTopLevelDomain","ret","didKey","did","generateDID","setFullYear","getFullYear","Base","uuid","page","randomStr","getTime","GlobalConfig","proto","sessionId","isDebug","isBridge","updateConfig","NetworkPackageType","AdditionalSeqIdPackageChannel","Platform","Container","PageType","ElementStatus","PageShowAction","ActionStatus","ActionType","SubAction","Direction","TaskStatus","OperationType","ksOverseaAppList","ksAppList","getLocalStorageItem","parse","setLocalStorageItem","deleteArray","addMonitor","evtTarget","evtName","attachEvent","removeMonitor","detachEvent","leftPad","str","ch","pad","isInApp","inApp","isOversea","fakeRaf","fakeCaf","raf","caf","handle","parseQueryString","queryString","queries","queries_1","query","_a","stringifyQuery","paramsString","params","composedPath","eleList","map","ele","_b","filter","getStringBytes","dataStr","byteLen","Number","NaN","kpnFromUA","rules","tmp","rule","name_1","rRes","exec","getDefaultKpn","kpnInCookie","kpnInUA","getUrlAndQueryFromUrl","url","queryIndex","lastIndexOf","getMappingPage","urlPackage","urlMap","parsed","res","mappingPage","cloneDeep","newObj","supportsPushState","urlChangeEventId","uaParser","undefined$1","LIBVERSION","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","UA_MAX_LENGTH","util","regexes","extensions","mergedRegexes","str1","str2","lowerize","major","version","trim","mapper","rgx","arrays","matches","regex","props","maps","browser","oldSafari","oldEdge","os","windows","cpu","device","engine","UAParser","getResult","_ua","_rgxmap","getBrowser","_browser","getCPU","_cpu","architecture","getDevice","_device","model","getEngine","_engine","getOS","_os","getUA","setUA","BROWSER","CPU","DEVICE","ENGINE","OS","jQuery","Zepto","parser","uastring","uaInfo","getUAInfo","needCompatible","supportsPushState$1","uaUtils","devices","getResolution","resolution","ratio","devicePixelRatio","getGPU","gpu","canvas","glRenderContext","getContext","debugRenderInfo","getExtension","getParameter","UNMASKED_RENDERER_WEBGL","getModel","devices_1","toLocaleLowerCase","isReactNative","GLOBAL","product","ReactNative","NativeModules","TaskOperations","EventTypes","networkType","unknown","UNKNOWN_NETWORK","none","NOT_CONNECTED","wifi","WIFI","MOBILE_4G","MOBILE_3G","MOBILE_2G","ClientCommon","_yoda","LOCAL_INCREAMENT_ID_KEY","LOCAL_CUSTOM_INCREAMENT_ID_KEY","H5_SEQ_ID_KEY","H5_CUSTOM_SEQ_ID_KEY","LOCAL_HTTP_INCREMENT_ID_KEY","V2_INCREMENT_ID_KEY","CHANNEL_INCREMENT_ID_KEY","maxId","runtimeIdMap","genId","Storage","getNomalIncrementId","getCustomIncrementId","getBridgeNormalIncrementId","getBridgeCustomIncrementId","getHttpIncrementId","getChannelIncrementId","channel","getV2EventIncrementId","BASE","device_id","global_id","union_id","user_id","session_id","version_name","package_name","product_name","network_type","container","H5","service_name","sub_biz","need_encrypt","safety_id","experiment","h5_extra_attr","initPackageKeys","validator","Product","TimePackageSyncStatus","yodaNamespace","yodaResolve","yodaAlready","checkYoda","yoda","isInYoda","initYoda","err_1","ready","register","namespace","isSupportBridge","isSupport","canUse","tool","canIUse","getWebviewLoadPerf","webview","sendRadarLog","setClientLog","KSwitchSampling","getKSwitchSampling","kswitchData","host","pathname","getKswitchData","deviceInfo","getDeviceInfo","system","appInfo","getAppInfo","yodaUtils","network","connection","mozConnection","webkitConnection","effectiveType","platform","UNKNOWN_PLATFORM","ANDROID_PHONE_H5","OUTSIDE_ANDROID_H5","IPHONE_H5","OUTSIDE_IOS_H5","PC_WEB","REACT_NATIVE","WEB","mergeOptions","isNeedMerge","getOSVersion","getDefaultUserId","isV2","transformCommonPackage","base","initPackage","identity_package","network_package","app_package","initPackageKeys_1","baseKey","subKey","baseValue","CommonPackage","logConfig","language","version_code","device_package","os_version","sdk_version","checkMustProps","lastDotIndex","mixinOptions","DefaultH5ExtraAttr","app_version_name","setAdditionalSeqIdPackage","additional_seq_id_package","NORMAL","channel_seq_id","custom_type","custom_seq_id","increaseH5SeqId","isCustom","setH5ClientTimestamp","seq_id","client_timestamp","increaseHTTPSeqId","http_seq_id","setChannel","queryStringRes","queryChannel","getVersionName","getChannel","toJSON","json","setBridgeInfo","info","bridge_info","getH5ExtraAttr","update","commonPackage","newValue","innerPackageKeys","innerPackageKeys_1","innerKey","initYodaDeviceInfo","mod","initYodaAppInfo","userId","appver","host_product","sdk_name","commonHideStyle","createIframe","iframe","contentWindow","createForm","form","enctype","method","action","appendDataToForm","sendData","submit","onload","send","timeout","xhr","XMLHttpRequest","open","status","response","ontimeout","onerror","enableBeacon","send$1","sendBeacon","transToFormData","formData","FormData","append","sendData$1","format","forceUseBeacon","ClientEvent","ClientEvent$1","devHost","dataTrackHost","testHost","isDataTrack","xhrGet","getReportUrl","viewHost","reportHost","loggerUrl","getLoggerReportUrl","getCookieReportUrl","webloggerSwitch","sessionStorage","loggerSessionId","loggerHost","handshakeApi","getWebPageReportUrl","Hosts","v2","production","development","v3","Apis","radar","getUrl","env","drained","BatchLog","logQueue","errorQueue","sendingQuery","radarUrl","flush","sendLogs","drain","flushErrorLogs","updateBase","updateUrls","logger","loggerEnv","init","getCommonPackageJSON","buildLogPackage","logs","buildV2Package","buildV3Package","common","callbackFn","errHandler","sendPackage","sender","immediate","getEventType","common_package","batchWaitTimer","wait","sendRadar","radarPackage","logPackage","unshift","merged","currentLog","destory","compensateTimer","initConfig","maxBatchLength","sampleRate","sampleRateFn","sampled","ShowType","TaskEventType","PageCategory","ElementType","ShowActionType","ResultPackageDomain","ClickType","firstLoad","enterTime","ShowEvent","currentUrlPackage","referUrlPackage","_c","beginTime","contentPackage","actionType","auto","commonInfo","UNKNOWN_STATUS","SUCCESS","UNKNOWN_ACTION_TYPE","CLICK","url_package","refer_url_package","sub_action","PAGE_ENTER","actionPB","ENTER","first_load","stay_length","LEAVE","PAGE_LEAVE","RESUME","PAGE_RESUME","PAGE_PAUSE","showType","PAGE_AUTO","PAGE_CUSTOM","PAGE","show_event","time_cost","ELEMENT","element_package","TaskEvent","taskType","operationDirection","click_event","UNKNOWN2","task_event","action2","USER_OPERATION","operation_type","operation_direction","CustomStatEvent","extra","VideoStatEvent","video_stat_event","GMT","timeZoneGMTOffset","getTimezoneOffset","ReportEvent","client_increment_id","event_id","time_zone","genIncrementId","isCustomStatEvent","stat_package","event_package","custom_event","logFactory","eventId","page2","customData","custom_stat_event","UrlPackage","pageType","identity","page_type","NATIVE","MINA","UNKNOWN_PAGE_TYPE","getRealUrlPackage","EventEmitter","emit","pluginIndex","getSessionId","defaultKey","defaultSessionId","isWillClosed","Weblog","_super","SampledPageMap","plugins","beforeUnload","plugin","baseOption","initUrlPackage","commomPackage","addPlugins","initBuildInPlugins","io","getPageSampled","option","updateCurrentUrlPackage","referer","referUrl","referType","referrer","currentUrl","matchedOverAll","level","radar_1","radarConfigs","curLevel","radar_2","overwrite","overall","sort","r1","r2","updateReferUrlPackage","updateCommonPackage","addPluginInstance","pluginInstance","weblog","plug","pluginOptions","unplug","unplugAll","generateLog","factory","generateLogName","getCommonProps","params_1","type_1","pageParams","PV","urlPage","SHOW","action_1","CUSTOM","eventId_1","taskParams","status_1","immediately","isSendSampled","collect","sendImmediately","BasePlugin","_GLOBAL_KS_WEBLOGGER_","autoRegister","Plugin","optionKey","PluginPlaceholder","radarOptions","sampling","samplingControl","defaultOptions","updateInterval","crashThreshold","CrashMonitor","monitorId","historyMoniorInfo","clearInterval","updateIntervalId","removeItem","historyMoniorString","checkHistoryCrash","memory","monitorInfo","limit","jsHeapSizeLimit","total","totalJSHeapSize","used","usedJSHeapSize","defaultOptions$1","decimals","FPSMonitor","fps","fpsTick","fpsTickId","loopBeginTime","loopId","loopEndTime","calculate","during","runCount","toFixed","perf","performanceTiming","getEntriesByType","message","perfMap","dnsLookup","tcpConnection","resourceLoad","jsCost","custom","getEntries","entries","pageTimeInfo","firstJSTimeInfo","initiatorType","domComplete","fetchStart","documentContentLoaded","load","timeToFirstByte","firstScreen","endPoint","whiteScreen","TimingMonitor","perfInfo","costMap","startPoint","mark","allPerf","reduce","navigationTiming","redirectStart","perfNow","RADAR_KEY","LEGACY_RADAR_KEY","ERROR_KEY","domPerfMap","redirect","dns","dns_start","tcp","tcp_start","redirect_count","redirectCount","ssl","secureConnectionStart","connectEnd","ssl_start","ttfb","trans","dom_parse","dom_parse_start","blank","fb","dom_ready","resource","fp","firstPaintInfo","js_cost","tti","protocol","nextHopProtocol","dom_num","all","apiPerfMap","fetch_start","cachedSkip","size","encodedBodySize","noThrottle","file","res_type","cached","transferSize","domainLookupStart","resPerfMap","DEFAULT_IGNORE_LIST","webviewPerfMap","to_webview_page_start","to_webview_page_show","to_webview_pre_create","to_webview_created","to_webview_start_load","to_webview_did_start_load","to_webview_did_end_load","to_navigation_start","to_fetch_start","to_connect_start","to_dom_ready","to_total","to_fmp","loadTimestamp","navigation_start_time","fetch_start_time","dns_start_time","dns_end_time","connect_start_time","ssl_start_time","request_start_time","response_start_time","response_end_time","dom_interactive_time","dom_loading_time","dom_ready_time","load_event_time","fmp_time","PAGELOG_API","isFinal","PerformanceObserver","supportedEntryTypes","includes","buffered","o","persisted","u","timeStamp","visibilityState","isUnloading","hadRecentInput","takeRecords","processingStart","perfMetrics","onFirstInputDelay","entryType","reProtocol","normalizeURL","ignoreList","isInURLWhiteList","domainPath","some","whiteURL","radarCost","radarPoint","costName","collectChromeMetrics","opt","chromeMetric","chromeMetricConfig","collectFn","removeBridgeJsErrorCollect","yodaCollectErrorDataDestroy","radarWarnLog","debug","squashData","loadLog","formatYodaRadarData","commomParams","project_id","h5ExtraAttr","removeStashedLog","sendImmediate","dimension","commonLog","getUAList","uaList","getWebViewType","Yoda","WebViewType","WebView","formatLoadTime","entry","check4Tab","reg","KWAI_KPN","REPORT_THRESSHOLD","RadarRoot","opts","kpn","queueConfig","batchTimer","startedLoadReport","radarSessionId","isInKwai","isUsingBridge","isUsingLegacy","isUsingDetachedReport","isSupportedYodaConcat","customDimension","lastRadarLogId","computedSamplingAgain","realSampledList","observeResource","reportPerformance","asyncReportTiming","observeChromeMetrics","entryTypes","chromeMetricCallback","logCollect","metric","asyncMetricCollectDone","radarCostResult","costItem","beforeFlush","commonLogData","projectId","radar_session_id","sended","httpReportFirst","addRadarStatEvent","serviceName","subBiz","needEncrypt","realtime","queue","isKSwitchSampled","rand","use","ctx","usedPlugin","created","upadteUrlPackage","computedRealSampled","KSwitchSampled","allSample","theSample","loadEventEnd","Utils","throttle","isNaN","EVENT","event_type","src","webViewType","yoda_version","when","onPerfReport","value_1","subDimension","logData","samplingList_1","radarLoadSampling","radarApiSampling","apiSampling","radarErrorSampling","errorSampling","radarResourceSampling","resourceSampling","radarCustomSampling","customSampling","radarEventSampling","eventSampling","decorateLog","kv","lastLoadData","find","empytLoadData","logId","RadarPlugin","Navigation","logSended","saveWebviewEntry","hasReportBase","record","fmp","webviewPerf","loadTimeout","reportOnUnload","reportFirstScreen","sepDimension","LOAD","getWebviewLoadData","userStart","pageStart","timeData","renderTime","webviewEntry","webviewTiming","loadTime","radarFmp","loadReport","play_clicked","play_idr","play_first_screen","Resource","onResError","isScriptError","RES","failed","res_path","lineno","xhook","AFTER","BEFORE","COMMON_EVENTS","FETCH","FIRE","NativeFetch","NativeFormData","NativeXMLHttp","OFF","ON","READY_STATE","UPLOAD_EVENTS","WINDOW","XHookFetchRequest","XHookFormData","XHookHttpRequest","XMLHTTP","convertHeaders","depricatedProp","fakeEvent","mergeObjects","msie","nullify","proxyEvents","useragent","_base","__indexOf","WorkerGlobalScope","parseInt","dst","_error","clone","_has","msieEventObject","createEventObject","Event","nodeStyle","emitter","listeners","legacylistener","listener","_ref","shift","fire","headers","h","dest","header","RegExp","$1","$2","fd","fentries","checked","files","ABORTED","currentState","emitFinal","emitReadyState","facade","hasError","hasErrorHandler","readBody","readHead","request","setReadyState","transiting","writeBody","writeHead","statusText","getAllResponseHeaders","responseType","xml","responseXML","responseText","finalUrl","responseURL","async","hooks","process","hook","onreadystatechange","addWithCredentials","withCredentials","user","pass","headerNames","modk","_j","_len1","_ref1","_len2","_ref2","_ref3","upload","setRequestHeader","userResponse","head","progress","abort","lName","getResponseHeader","overrideMimeType","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","readyState","afterHooks","beforeHooks","Request","getRequest","processAfter","processBefore","Headers","Response","param","amd","xhook_1","interceptors","interceptor","reversedInterceptors","array","promise","requestError","responseError","attach","clear","unregister","validXhook","APIMonitor","logList","perfList","beforeHook","api","requestURLCompletion","afterHook","req","infoStatus","customizeRadarStatus","contentLength","getResponseSize","responseData","judgedResponse","isError","isResponseError","API","mergeAPIPerf","listItem","itemAPI","listItemAPI","perfSize","NATIVE_FORM_DATA","after","ENVIRONMENT_IS_WORKER","importScripts","fetchIntercept","ErrorMonitor","errorTimeInterval","logInfo","error_type","SCRIPT","error_cons_type","reason","stack","filename","line","col","colno","isSameErrorAndReport","onPromiseError","VIDEO","file_1","dimension_1","ERROR","getSameErrorIndex","sameError","MORE_REPORTED","CUSTOM_DIM_KEY","Radar","radarIgnoreList","customReported","validOption","unuseResourcePlugin","unuseAPIPlugin","unuseErrorPlugin","metric_value","metric_name","reportTimePoint","extra_info","webview_type","headlessTestReport","playClicked","playIDR","playBlock","playError","setDimensions","paramKey","hasOtherDim","RadarPlaceHolder","willunload","AutoPV","oldPushState","pushState","oldReplaceState","replaceState","visibilityChange","state","autoPVFilter","proxyPushState","title","urlChange","proxyReplaceState","Weblog$1","autoPV","crash","Factory","default","defined","toStringTag","__esModule","0","1","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","beforeCreate","53","color","$createElement","_self","class","_l","backgroundColor","install","component","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","LIBRARY","classof","aFunction","anInstance","forOf","speciesConstructor","task","microtask","newPromiseCapabilityModule","perform","promiseResolve","PROMISE","versions","v8","$Promise","isNode","empty","newPromiseCapability","FakePromise","PromiseRejectionEvent","isThenable","notify","isReject","chain","_v","ok","run","reaction","exited","fail","_h","onHandleUnhandled","enter","exit","onUnhandled","unhandled","isUnhandled","onunhandledrejection","onrejectionhandled","$reject","_w","$resolve","executor","onFulfilled","onRejected","C","capability","$$reject","iter","iterable","values","remaining","$index","alreadyCalled","race","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","originalRender","existing","that","un","hide","Iterators","$iterCreate","getPrototypeOf","ITERATOR","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","cof","IObject","ArrayProto","asyncGeneratorStep","gen","_next","_throw","arg","_asyncToGenerator","core","R","onFinally","isFunction","ARG","tryGet","B","callee","defer","port","invoke","html","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","ONREADYSTATECHANGE","nextTick","port2","port1","onmessage","postMessage","38","cross","spinner","exclamation","mounted","getElementById","insertAdjacentHTML","computed","classes","attrs","callbackfn","promiseCapability","def","stat","getKeys","gOPS","pIE","getSymbols","symbols","SPECIES","SAFE_CLOSING","riter","skipClosing","safe","USE_SYMBOL","$exports","toObject","IE_PROTO","isArrayIter","toLength","createProperty","getIterFn","arrayLike","aLen","mapfn","mapping","iterFn","__e","toAbsoluteIndex","IS_INCLUDES","$this","px","52","isPopupShow","isPopupBoxShow","show","Boolean","showMask","maskCloseable","disableScroll","showPopupBox","hidePopupBox","$emit","handleTouchMove","handlePopupMaskClick","handlePopupTransitionStart","handlePopupTransitionEnd","popupClasses","watch","directives","rawName","expression","2","3","4","51","components","icon","content","btns","appendTo","$el","beforeDestroy","$_onToggle","$_onShow","$_onHide","$_onClick","close","toggle","domProps","innerHTML","$slots","role","textContent","propsData","$mount","$on","$destroy","confirm","confirmText","cancelText","onConfirm","alert","success","closeAll","own","out","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","expProto","virtual","U","PromiseCapability","$$resolve","hiddenKeys","TO_STRING_TAG","DOMIterables","Collection","TO_STRING","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_toConsumableArray","_typeof2","_typeof","getIteratorMethod","Properties","34","maxDistance","initRadius","minHeadRadius","minTailRadius","initArrowRadius","minArrowRadius","arrowWidth","initCenterX","initCenterY","headCenter","_draw","$refs","bubble","clearRect","_drawBubble","_drawArrow","save","beginPath","arc","PI","quadraticCurveTo","fillStyle","strokeStyle","stroke","restore","lineTo","ref","w","Bubble","scrollEvents","every","refreshDelay","beforePullDown","isPullingDown","isPullUpLoad","pullUpDirty","bubbleY","scrollPos","pullDownStyle","pullDownStop","pullDownHeight","isScrolling","containerCls","pullUpTxt","txt","more","noMore","refreshTxt","finalScrollEvents","finalThreshold","forceUpdate","_bindPullDownEvents","_calculateMinSize","_unbindPullDownEvents","deep","_bindPullUpLoadEvents","_unbindPullUpLoadEvents","activated","enableScroll","deactivated","$nextTick","initScroll","destroyScroll","_bindScrollEvents","_getPullDownEleHeight","_reboundPullDown","_afterPullDown","resetPullUpTxt","_pullDownHandler","_pullDownScrollStartHandler","_pullDownScrollEndHandler","_pullDownScrollHandler","_pullUpHandler","_onClickItem","listWrapper","resetPullDownTimer","stopTime","pulldown","visibility","7","8","isIterable","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","regeneratorRuntime","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","awrap","__await","defineIteratorMethods","AsyncIterator","innerFn","outerFn","tryLocsList","reverse","Context","reset","skipTempReset","_sent","delegate","tryEntries","resetTryEntry","rootEntry","rootRecord","completion","rval","dispatchException","exception","loc","caught","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","abrupt","finallyEntry","complete","afterLoc","finish","thrown","delegateYield","resultName","nextLoc","protoGenerator","_invoke","makeInvokeMethod","tryCatch","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","doneResult","delegateResult","maybeInvokeDelegate","return","pushTryEntry","locs","iteratorMethod","dPs","enumBugKeys","Empty","createDict","iframeDocument","lt","gt","write","BREAK","RETURN","macrotask","Observer","WebKitMutationObserver","last","standalone","createTextNode","characterData","bitmap","modules","installedModules","__webpack_require__","moduleId","getter","property","__g","IE8_DOM_DEFINE","Attributes","instance","_defineProperty","_defineProperty2","_interopRequireDefault","protoProps","staticProps","generateUUID","rc","pattern","generateUUCallbackFunction","_component","_component2","_page","_page2","_system","_system2","_ui","_ui2","_webview","_webview2","_custom","_custom2","_utils","_utils2","ui","utils","acfunBridge","_origin","_origin2","_yoda2","isYodaWebview","isDisabledYoda","_acfunBridge","acfun_bridge_ready","isReady","__yoda__","_stringify2","_keys","_keys2","_assign","_assign2","_classCallCheck2","_classCallCheck3","_createClass2","_createClass3","_package","_package2","_apis","_apis2","readyList","globalObject","Acfun","paramInterceptors","__bridge__","fallbackAction","invokeNative","formatParams","arrayIndexOf","SHARED","mode","copyright","fails","exp","$assign","A","K","$Object","desc","_share","_share2","_login","_login2","_logout","_logout2","_showToast","_showToast2","_showAlert","_showAlert2","share","login","logout","showToast","showAlert","_open","_open2","_setPageInfo","_setPageInfo2","_setHorizonScrollForbid","_setHorizonScrollForbid2","setPageInfo","setHorizonScrollForbid","_getClientInfo","_getClientInfo2","_getSimInfo","_getSimInfo2","getClientInfo","getSimInfo","_setPageTitle","_setPageTitle2","_setTopLeftBtn","_setTopLeftBtn2","setPageTitle","setTopLeftBtn","_exitWebView","_exitWebView2","_popBack","_popBack2","_openNewWebView","_openNewWebView2","_on","_on2","_emit","_emit2","_setNavbarIconVisibility","_setNavbarIconVisibility2","_setNavbarIconCallback","_setNavbarIconCallback2","_setPullDownToRefresh","_setPullDownToRefresh2","_openPayWebView","_openPayWebView2","exitWebView","popBack","openNewWebView","setNavbarIconVisibility","setNavbarIconCallback","setPullDownToRefresh","openPayWebView","_userRenamePage","_userRenamePage2","_inviteFriendModal","_inviteFriendModal2","_startUpload","_startUpload2","_bindPhone","_bindPhone2","_startImgUpload","_startImgUpload2","_verifyIdCard","_verifyIdCard2","userRenamePage","inviteFriendModal","startUpload","bindPhone","startImgUpload","verifyIdCard","_downloadApp","_downloadApp2","_openApp","_openApp2","_hasInstalledApp","_hasInstalledApp2","openApp","downloadApp","hasInstalledApp","_yodaJsSdk","_yodaJsSdk2","NAMESPACE","yodaVersion","_readyResolve","_readyPromise","returnPromise","invokeCallback","callbackId","_callbackId","multiCallback","_callbacks","originInvokeCallback","__yodaBridge__","ownKeys","enumerableOnly","_objectSpread2","getOwnPropertyDescriptors","baseApis","overWriteApis","identifier","__yodaCallbackId__","eventSet","_eventListeners","_addEventListener","listenerId","resPromise","_removeEventListener","already","getApiList","apiList","overWriteApi","__yodaBridgeReady__","setupPlugin","_plugins","_loop","realFn","surfix","beforeName","afterName","_ret","called","_fn","callbackHandler","__yodaBridgeCallback__","addToUnscopables","Arguments","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","fastKey","getWeak","onFreeze","meta","NEED","10","47","showIcon","$_update","updated","$_timer","isShowIcon","_instance","loading"],"mappings":"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","file":"js/chunk-vendors.8e9332ef.js","sourcesContent":["'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function () { return dP(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    } return setSymbolDesc(it, key, D);\n  } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n  return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function (value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n  require('./_object-pie').f = $propertyIsEnumerable;\n  require('./_object-gops').f = $getOwnPropertySymbols;\n\n  if (DESCRIPTORS && !require('./_library')) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  // 19.4.2.1 Symbol.for(key)\n  'for': function (key) {\n    return has(SymbolRegistry, key += '')\n      ? SymbolRegistry[key]\n      : SymbolRegistry[key] = $Symbol(key);\n  },\n  // 19.4.2.5 Symbol.keyFor(sym)\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n  },\n  useSetter: function () { setter = true; },\n  useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  // 19.1.2.2 Object.create(O [, Properties])\n  create: $create,\n  // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n  defineProperty: $defineProperty,\n  // 19.1.2.3 Object.defineProperties(O, Properties)\n  defineProperties: $defineProperties,\n  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  // 19.1.2.7 Object.getOwnPropertyNames(O)\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // 19.1.2.8 Object.getOwnPropertySymbols(O)\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  // MS Edge converts symbol values to JSON as {}\n  // WebKit converts symbol values to JSON as null\n  // V8 throws on boxed symbols\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) args.push(arguments[i++]);\n    $replacer = replacer = args[1];\n    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n    if (!isArray(replacer)) replacer = function (key, value) {\n      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n      if (!isSymbol(value)) return value;\n    };\n    args[1] = replacer;\n    return _stringify.apply($JSON, args);\n  }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n    throw TypeError(name + ': incorrect invocation!');\n  } return it;\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","/*!\n * better-normal-scroll v1.15.2\n * (c) 2016-2019 ustbhuangyi\n * Released under the MIT License.\n */\n// As of V8 6.6, depending on the size of the array, this is anywhere\n// between 1.5-10x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++) {\n    list[index] = list[index + 1];\n  }\n\n  list.pop();\n}\n\nvar slicedToArray = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n\nfunction eventMixin(BScroll) {\n  BScroll.prototype.on = function (type, fn) {\n    var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this;\n\n    if (!this._events[type]) {\n      this._events[type] = [];\n    }\n\n    this._events[type].push([fn, context]);\n  };\n\n  BScroll.prototype.once = function (type, fn) {\n    var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this;\n\n    function magic() {\n      this.off(type, magic);\n\n      fn.apply(context, arguments);\n    }\n    // To expose the corresponding function method in order to execute the off method\n    magic.fn = fn;\n\n    this.on(type, magic);\n  };\n\n  BScroll.prototype.off = function (type, fn) {\n    var _events = this._events[type];\n    if (!_events) {\n      return;\n    }\n\n    var count = _events.length;\n    while (count--) {\n      if (_events[count][0] === fn || _events[count][0] && _events[count][0].fn === fn) {\n        spliceOne(_events, count);\n      }\n    }\n  };\n\n  BScroll.prototype.trigger = function (type) {\n    var events = this._events[type];\n    if (!events) {\n      return;\n    }\n\n    var len = events.length;\n    var eventsCopy = [].concat(toConsumableArray(events));\n    for (var i = 0; i < len; i++) {\n      var event = eventsCopy[i];\n\n      var _event = slicedToArray(event, 2),\n          fn = _event[0],\n          context = _event[1];\n\n      if (fn) {\n        fn.apply(context, [].slice.call(arguments, 1));\n      }\n    }\n  };\n}\n\n// ssr support\nvar inBrowser = typeof window !== 'undefined';\nvar ua = inBrowser && navigator.userAgent.toLowerCase();\nvar isWeChatDevTools = ua && /wechatdevtools/.test(ua);\nvar isAndroid = ua && ua.indexOf('android') > 0;\n\nfunction getNow() {\n  return window.performance && window.performance.now ? window.performance.now() + window.performance.timing.navigationStart : +new Date();\n}\n\nfunction extend(target) {\n  for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    rest[_key - 1] = arguments[_key];\n  }\n\n  for (var i = 0; i < rest.length; i++) {\n    var source = rest[i];\n    for (var key in source) {\n      target[key] = source[key];\n    }\n  }\n  return target;\n}\n\nfunction isUndef(v) {\n  return v === undefined || v === null;\n}\n\nfunction getDistance(x, y) {\n  return Math.sqrt(x * x + y * y);\n}\n\nvar elementStyle = inBrowser && document.createElement('div').style;\n\nvar vendor = function () {\n  if (!inBrowser) {\n    return false;\n  }\n  // first pick up standard to fix #743\n  var transformNames = {\n    standard: 'transform',\n    webkit: 'webkitTransform',\n    Moz: 'MozTransform',\n    O: 'OTransform',\n    ms: 'msTransform'\n  };\n\n  for (var key in transformNames) {\n    if (elementStyle[transformNames[key]] !== undefined) {\n      return key;\n    }\n  }\n\n  return false;\n}();\n\nfunction prefixStyle(style) {\n  if (vendor === false) {\n    return false;\n  }\n\n  if (vendor === 'standard') {\n    if (style === 'transitionEnd') {\n      return 'transitionend';\n    }\n    return style;\n  }\n\n  return vendor + style.charAt(0).toUpperCase() + style.substr(1);\n}\n\nfunction addEvent(el, type, fn, capture) {\n  el.addEventListener(type, fn, { passive: false, capture: !!capture });\n}\n\nfunction removeEvent(el, type, fn, capture) {\n  el.removeEventListener(type, fn, { passive: false, capture: !!capture });\n}\n\nfunction offset(el) {\n  var left = 0;\n  var top = 0;\n\n  while (el) {\n    left -= el.offsetLeft;\n    top -= el.offsetTop;\n    el = el.offsetParent;\n  }\n\n  return {\n    left: left,\n    top: top\n  };\n}\n\nfunction offsetToBody(el) {\n  var rect = el.getBoundingClientRect();\n\n  return {\n    left: -(rect.left + window.pageXOffset),\n    top: -(rect.top + window.pageYOffset)\n  };\n}\n\nvar cssVendor = vendor && vendor !== 'standard' ? '-' + vendor.toLowerCase() + '-' : '';\n\nvar transform = prefixStyle('transform');\nvar transition = prefixStyle('transition');\n\nvar hasPerspective = inBrowser && prefixStyle('perspective') in elementStyle;\n// fix issue #361\nvar hasTouch = inBrowser && ('ontouchstart' in window || isWeChatDevTools);\nvar hasTransform = transform !== false;\nvar hasTransition = inBrowser && transition in elementStyle;\n\nvar style = {\n  transform: transform,\n  transition: transition,\n  transitionTimingFunction: prefixStyle('transitionTimingFunction'),\n  transitionDuration: prefixStyle('transitionDuration'),\n  transitionDelay: prefixStyle('transitionDelay'),\n  transformOrigin: prefixStyle('transformOrigin'),\n  transitionEnd: prefixStyle('transitionEnd')\n};\n\nvar TOUCH_EVENT = 1;\nvar MOUSE_EVENT = 2;\n\nvar eventType = {\n  touchstart: TOUCH_EVENT,\n  touchmove: TOUCH_EVENT,\n  touchend: TOUCH_EVENT,\n\n  mousedown: MOUSE_EVENT,\n  mousemove: MOUSE_EVENT,\n  mouseup: MOUSE_EVENT\n};\n\nfunction getRect(el) {\n  if (el instanceof window.SVGElement) {\n    var rect = el.getBoundingClientRect();\n    return {\n      top: rect.top,\n      left: rect.left,\n      width: rect.width,\n      height: rect.height\n    };\n  } else {\n    return {\n      top: el.offsetTop,\n      left: el.offsetLeft,\n      width: el.offsetWidth,\n      height: el.offsetHeight\n    };\n  }\n}\n\nfunction preventDefaultException(el, exceptions) {\n  for (var i in exceptions) {\n    if (exceptions[i].test(el[i])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction tap(e, eventName) {\n  var ev = document.createEvent('Event');\n  ev.initEvent(eventName, true, true);\n  ev.pageX = e.pageX;\n  ev.pageY = e.pageY;\n  e.target.dispatchEvent(ev);\n}\n\nfunction click(e) {\n  var event = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'click';\n\n  var eventSource = void 0;\n  if (e.type === 'mouseup' || e.type === 'mousecancel') {\n    eventSource = e;\n  } else if (e.type === 'touchend' || e.type === 'touchcancel') {\n    eventSource = e.changedTouches[0];\n  }\n  var posSrc = {};\n  if (eventSource) {\n    posSrc.screenX = eventSource.screenX || 0;\n    posSrc.screenY = eventSource.screenY || 0;\n    posSrc.clientX = eventSource.clientX || 0;\n    posSrc.clientY = eventSource.clientY || 0;\n  }\n  var ev = void 0;\n  var bubbles = true;\n  var cancelable = true;\n  if (typeof MouseEvent !== 'undefined') {\n    try {\n      ev = new MouseEvent(event, extend({\n        bubbles: bubbles,\n        cancelable: cancelable\n      }, posSrc));\n    } catch (e) {\n      createEvent();\n    }\n  } else {\n    createEvent();\n  }\n\n  function createEvent() {\n    ev = document.createEvent('Event');\n    ev.initEvent(event, bubbles, cancelable);\n    extend(ev, posSrc);\n  }\n\n  // forwardedTouchEvent set to true in case of the conflict with fastclick\n  ev.forwardedTouchEvent = true;\n  ev._constructed = true;\n  e.target.dispatchEvent(ev);\n}\n\nfunction dblclick(e) {\n  click(e, 'dblclick');\n}\n\nfunction prepend(el, target) {\n  if (target.firstChild) {\n    before(el, target.firstChild);\n  } else {\n    target.appendChild(el);\n  }\n}\n\nfunction before(el, target) {\n  target.parentNode.insertBefore(el, target);\n}\n\nfunction removeChild(el, child) {\n  el.removeChild(child);\n}\n\nvar DEFAULT_OPTIONS = {\n  startX: 0,\n  startY: 0,\n  scrollX: false,\n  scrollY: true,\n  freeScroll: false,\n  directionLockThreshold: 5,\n  eventPassthrough: '',\n  click: false,\n  tap: false,\n  /**\n   * support any side\n   * bounce: {\n   *   top: true,\n   *   bottom: true,\n   *   left: true,\n   *   right: true\n   * }\n   */\n  bounce: true,\n  bounceTime: 800,\n  momentum: true,\n  momentumLimitTime: 300,\n  momentumLimitDistance: 15,\n  swipeTime: 2500,\n  swipeBounceTime: 500,\n  deceleration: 0.0015,\n  flickLimitTime: 200,\n  flickLimitDistance: 100,\n  resizePolling: 60,\n  probeType: 0,\n  preventDefault: true,\n  preventDefaultException: {\n    tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT|AUDIO)$/\n  },\n  HWCompositing: true,\n  useTransition: true,\n  useTransform: true,\n  bindToWrapper: false,\n  disableMouse: hasTouch,\n  disableTouch: !hasTouch,\n  observeDOM: true,\n  autoBlur: true,\n  /**\n   * for picker\n   * wheel: {\n   *   selectedIndex: 0,\n   *   rotate: 25,\n   *   adjustTime: 400\n   *   wheelWrapperClass: 'wheel-scroll',\n   *   wheelItemClass: 'wheel-item'\n   * }\n   */\n  wheel: false,\n  /**\n   * for slide\n   * snap: {\n   *   loop: false,\n   *   el: domEl,\n   *   threshold: 0.1,\n   *   stepX: 100,\n   *   stepY: 100,\n   *   speed: 400,\n   *   easing: {\n   *     style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n   *     fn: function (t) {\n   *       return t * (2 - t)\n   *     }\n   *   }\n   *   listenFlick: true\n   * }\n   */\n  snap: false,\n  /**\n   * for scrollbar\n   * scrollbar: {\n   *   fade: true,\n   *   interactive: false\n   * }\n   */\n  scrollbar: false,\n  /**\n   * for pull down and refresh\n   * pullDownRefresh: {\n   *   threshold: 50,\n   *   stop: 20\n   * }\n   */\n  pullDownRefresh: false,\n  /**\n   * for pull up and load\n   * pullUpLoad: {\n   *   threshold: 50\n   * }\n   */\n  pullUpLoad: false,\n  /**\n   * for mouse wheel\n   * mouseWheel: {\n   *   speed: 20,\n   *   invert: false,\n   *   easeTime: 300\n   * }\n   */\n  mouseWheel: false,\n  stopPropagation: false,\n  /**\n   * for zoom\n   * zoom: {\n   *   start: 1,\n   *   min: 1,\n   *   max: 4\n   * }\n   */\n  zoom: false,\n  /**\n   * for infinity\n   * infinity: {\n   *   render(item, div) {\n   *   },\n   *   createTombstone() {\n   *   },\n   *   fetch(count) {\n   *   }\n   * }\n   */\n  infinity: false,\n  /**\n   * for double click\n   * dblclick: {\n   *   delay: 300\n   * }\n   */\n  dblclick: false\n};\n\nfunction initMixin(BScroll) {\n  BScroll.prototype._init = function (options) {\n    this._handleOptions(options);\n\n    // init private custom events\n    this._events = {};\n\n    this.x = 0;\n    this.y = 0;\n    this.directionX = 0;\n    this.directionY = 0;\n\n    this.setScale(1);\n\n    this._addDOMEvents();\n\n    this._initExtFeatures();\n\n    this._watchTransition();\n\n    if (this.options.observeDOM) {\n      this._initDOMObserver();\n    }\n\n    if (this.options.autoBlur) {\n      this._handleAutoBlur();\n    }\n\n    this.refresh();\n\n    if (!this.options.snap) {\n      this.scrollTo(this.options.startX, this.options.startY);\n    }\n\n    this.enable();\n  };\n\n  BScroll.prototype.setScale = function (scale) {\n    this.lastScale = isUndef(this.scale) ? scale : this.scale;\n    this.scale = scale;\n  };\n\n  BScroll.prototype._handleOptions = function (options) {\n    this.options = extend({}, DEFAULT_OPTIONS, options);\n\n    this.translateZ = this.options.HWCompositing && hasPerspective ? ' translateZ(0)' : '';\n\n    this.options.useTransition = this.options.useTransition && hasTransition;\n    this.options.useTransform = this.options.useTransform && hasTransform;\n\n    this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault;\n\n    // If you want eventPassthrough I have to lock one of the axes\n    this.options.scrollX = this.options.eventPassthrough === 'horizontal' ? false : this.options.scrollX;\n    this.options.scrollY = this.options.eventPassthrough === 'vertical' ? false : this.options.scrollY;\n\n    // With eventPassthrough we also need lockDirection mechanism\n    this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough;\n    this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold;\n\n    if (this.options.tap === true) {\n      this.options.tap = 'tap';\n    }\n  };\n\n  BScroll.prototype._addDOMEvents = function () {\n    var eventOperation = addEvent;\n    this._handleDOMEvents(eventOperation);\n  };\n\n  BScroll.prototype._removeDOMEvents = function () {\n    var eventOperation = removeEvent;\n    this._handleDOMEvents(eventOperation);\n  };\n\n  BScroll.prototype._handleDOMEvents = function (eventOperation) {\n    var target = this.options.bindToWrapper ? this.wrapper : window;\n    eventOperation(window, 'orientationchange', this);\n    eventOperation(window, 'resize', this);\n\n    if (this.options.click) {\n      eventOperation(this.wrapper, 'click', this, true);\n    }\n\n    if (!this.options.disableMouse) {\n      eventOperation(this.wrapper, 'mousedown', this);\n      eventOperation(target, 'mousemove', this);\n      eventOperation(target, 'mousecancel', this);\n      eventOperation(target, 'mouseup', this);\n    }\n\n    if (hasTouch && !this.options.disableTouch) {\n      eventOperation(this.wrapper, 'touchstart', this);\n      eventOperation(target, 'touchmove', this);\n      eventOperation(target, 'touchcancel', this);\n      eventOperation(target, 'touchend', this);\n    }\n\n    eventOperation(this.scroller, style.transitionEnd, this);\n  };\n\n  BScroll.prototype._initExtFeatures = function () {\n    if (this.options.snap) {\n      this._initSnap();\n    }\n    if (this.options.scrollbar) {\n      this._initScrollbar();\n    }\n    if (this.options.pullUpLoad) {\n      this._initPullUp();\n    }\n    if (this.options.pullDownRefresh) {\n      this._initPullDown();\n    }\n    if (this.options.wheel) {\n      this._initWheel();\n    }\n    if (this.options.mouseWheel) {\n      this._initMouseWheel();\n    }\n    if (this.options.zoom) {\n      this._initZoom();\n    }\n    if (this.options.infinity) {\n      this._initInfinite();\n    }\n  };\n\n  BScroll.prototype._watchTransition = function () {\n    if (typeof Object.defineProperty !== 'function') {\n      return;\n    }\n    var me = this;\n    var isInTransition = false;\n    var key = this.options.useTransition ? 'isInTransition' : 'isAnimating';\n    Object.defineProperty(this, key, {\n      get: function get() {\n        return isInTransition;\n      },\n      set: function set(newVal) {\n        isInTransition = newVal;\n        // fix issue #359\n        var el = me.scroller.children.length ? me.scroller.children : [me.scroller];\n        var pointerEvents = isInTransition && !me.pulling ? 'none' : 'auto';\n        for (var i = 0; i < el.length; i++) {\n          el[i].style.pointerEvents = pointerEvents;\n        }\n      }\n    });\n  };\n\n  BScroll.prototype._handleAutoBlur = function () {\n    this.on('scrollStart', function () {\n      var activeElement = document.activeElement;\n      if (activeElement && (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA')) {\n        activeElement.blur();\n      }\n    });\n  };\n\n  BScroll.prototype._initDOMObserver = function () {\n    var _this = this;\n\n    if (typeof MutationObserver !== 'undefined') {\n      var timer = void 0;\n      var observer = new MutationObserver(function (mutations) {\n        // don't do any refresh during the transition, or outside of the boundaries\n        if (_this._shouldNotRefresh()) {\n          return;\n        }\n        var immediateRefresh = false;\n        var deferredRefresh = false;\n        for (var i = 0; i < mutations.length; i++) {\n          var mutation = mutations[i];\n          if (mutation.type !== 'attributes') {\n            immediateRefresh = true;\n            break;\n          } else {\n            if (mutation.target !== _this.scroller) {\n              deferredRefresh = true;\n              break;\n            }\n          }\n        }\n        if (immediateRefresh) {\n          _this.refresh();\n        } else if (deferredRefresh) {\n          // attributes changes too often\n          clearTimeout(timer);\n          timer = setTimeout(function () {\n            if (!_this._shouldNotRefresh()) {\n              _this.refresh();\n            }\n          }, 60);\n        }\n      });\n      var config = {\n        attributes: true,\n        childList: true,\n        subtree: true\n      };\n      observer.observe(this.scroller, config);\n\n      this.on('destroy', function () {\n        observer.disconnect();\n      });\n    } else {\n      this._checkDOMUpdate();\n    }\n  };\n\n  BScroll.prototype._shouldNotRefresh = function () {\n    var outsideBoundaries = this.x > this.minScrollX || this.x < this.maxScrollX || this.y > this.minScrollY || this.y < this.maxScrollY;\n\n    return this.isInTransition || this.stopFromTransition || outsideBoundaries;\n  };\n\n  BScroll.prototype._checkDOMUpdate = function () {\n    var scrollerRect = getRect(this.scroller);\n    var oldWidth = scrollerRect.width;\n    var oldHeight = scrollerRect.height;\n\n    function check() {\n      if (this.destroyed) {\n        return;\n      }\n      scrollerRect = getRect(this.scroller);\n      var newWidth = scrollerRect.width;\n      var newHeight = scrollerRect.height;\n\n      if (oldWidth !== newWidth || oldHeight !== newHeight) {\n        this.refresh();\n      }\n      oldWidth = newWidth;\n      oldHeight = newHeight;\n\n      next.call(this);\n    }\n\n    function next() {\n      var _this2 = this;\n\n      setTimeout(function () {\n        check.call(_this2);\n      }, 1000);\n    }\n\n    next.call(this);\n  };\n\n  BScroll.prototype.handleEvent = function (e) {\n    switch (e.type) {\n      case 'touchstart':\n      case 'mousedown':\n        this._start(e);\n        if (this.options.zoom && e.touches && e.touches.length > 1) {\n          this._zoomStart(e);\n        }\n        break;\n      case 'touchmove':\n      case 'mousemove':\n        if (this.options.zoom && e.touches && e.touches.length > 1) {\n          this._zoom(e);\n        } else {\n          this._move(e);\n        }\n        break;\n      case 'touchend':\n      case 'mouseup':\n      case 'touchcancel':\n      case 'mousecancel':\n        if (this.scaled) {\n          this._zoomEnd(e);\n        } else {\n          this._end(e);\n        }\n        break;\n      case 'orientationchange':\n      case 'resize':\n        this._resize();\n        break;\n      case 'transitionend':\n      case 'webkitTransitionEnd':\n      case 'oTransitionEnd':\n      case 'MSTransitionEnd':\n        this._transitionEnd(e);\n        break;\n      case 'click':\n        if (this.enabled && !e._constructed) {\n          if (!preventDefaultException(e.target, this.options.preventDefaultException)) {\n            e.preventDefault();\n            e.stopPropagation();\n          }\n        }\n        break;\n      case 'wheel':\n      case 'DOMMouseScroll':\n      case 'mousewheel':\n        this._onMouseWheel(e);\n        break;\n    }\n  };\n\n  BScroll.prototype.refresh = function () {\n    var isWrapperStatic = window.getComputedStyle(this.wrapper, null).position === 'static';\n    var wrapperRect = getRect(this.wrapper);\n    this.wrapperWidth = wrapperRect.width;\n    this.wrapperHeight = wrapperRect.height;\n\n    var scrollerRect = getRect(this.scroller);\n    this.scrollerWidth = Math.round(scrollerRect.width * this.scale);\n    this.scrollerHeight = Math.round(scrollerRect.height * this.scale);\n\n    this.relativeX = scrollerRect.left;\n    this.relativeY = scrollerRect.top;\n\n    if (isWrapperStatic) {\n      this.relativeX -= wrapperRect.left;\n      this.relativeY -= wrapperRect.top;\n    }\n\n    this.minScrollX = 0;\n    this.minScrollY = 0;\n\n    var wheel = this.options.wheel;\n    if (wheel) {\n      this.items = this.scroller.children;\n      // check whether there are all disable items or not when refresh\n      this._checkWheelAllDisabled();\n      this.options.itemHeight = this.itemHeight = this.items.length ? this.scrollerHeight / this.items.length : 0;\n      if (this.selectedIndex === undefined) {\n        this.selectedIndex = wheel.selectedIndex || 0;\n      }\n      this.options.startY = -this.selectedIndex * this.itemHeight;\n\n      this.maxScrollX = 0;\n      this.maxScrollY = -this.itemHeight * (this.items.length - 1);\n    } else {\n      this.maxScrollX = this.wrapperWidth - this.scrollerWidth;\n      if (!this.options.infinity) {\n        this.maxScrollY = this.wrapperHeight - this.scrollerHeight;\n      }\n      if (this.maxScrollX < 0) {\n        this.maxScrollX -= this.relativeX;\n        this.minScrollX = -this.relativeX;\n      } else if (this.scale > 1) {\n        this.maxScrollX = this.maxScrollX / 2 - this.relativeX;\n        this.minScrollX = this.maxScrollX;\n      }\n      if (this.maxScrollY < 0) {\n        this.maxScrollY -= this.relativeY;\n        this.minScrollY = -this.relativeY;\n      } else if (this.scale > 1) {\n        this.maxScrollY = this.maxScrollY / 2 - this.relativeY;\n        this.minScrollY = this.maxScrollY;\n      }\n    }\n\n    this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < this.minScrollX;\n    this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < this.minScrollY;\n\n    if (!this.hasHorizontalScroll) {\n      this.maxScrollX = this.minScrollX;\n      this.scrollerWidth = this.wrapperWidth;\n    }\n\n    if (!this.hasVerticalScroll) {\n      this.maxScrollY = this.minScrollY;\n      this.scrollerHeight = this.wrapperHeight;\n    }\n\n    this.endTime = 0;\n    this.directionX = 0;\n    this.directionY = 0;\n    this.wrapperOffset = offset(this.wrapper);\n\n    this.trigger('refresh');\n\n    !this.scaled && this.resetPosition();\n  };\n\n  BScroll.prototype.enable = function () {\n    this.enabled = true;\n  };\n\n  BScroll.prototype.disable = function () {\n    this.enabled = false;\n  };\n}\n\nvar ease = {\n  // easeOutQuint\n  swipe: {\n    style: 'cubic-bezier(0.23, 1, 0.32, 1)',\n    fn: function fn(t) {\n      return 1 + --t * t * t * t * t;\n    }\n  },\n  // easeOutQuard\n  swipeBounce: {\n    style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n    fn: function fn(t) {\n      return t * (2 - t);\n    }\n  },\n  // easeOutQuart\n  bounce: {\n    style: 'cubic-bezier(0.165, 0.84, 0.44, 1)',\n    fn: function fn(t) {\n      return 1 - --t * t * t * t;\n    }\n  }\n};\n\nfunction momentum(current, start, time, lowerMargin, upperMargin, wrapperSize, options, scroll) {\n  var distance = current - start;\n  var speed = Math.abs(distance) / time;\n\n  var deceleration = options.deceleration,\n      itemHeight = options.itemHeight,\n      swipeBounceTime = options.swipeBounceTime,\n      wheel = options.wheel,\n      swipeTime = options.swipeTime;\n\n  var duration = swipeTime;\n  var rate = wheel ? 4 : 15;\n\n  var destination = current + speed / deceleration * (distance < 0 ? -1 : 1);\n\n  if (wheel && itemHeight) {\n    destination = scroll._findNearestValidWheel(destination).y;\n  }\n\n  if (destination < lowerMargin) {\n    destination = wrapperSize ? Math.max(lowerMargin - wrapperSize / 4, lowerMargin - wrapperSize / rate * speed) : lowerMargin;\n    duration = swipeBounceTime;\n  } else if (destination > upperMargin) {\n    destination = wrapperSize ? Math.min(upperMargin + wrapperSize / 4, upperMargin + wrapperSize / rate * speed) : upperMargin;\n    duration = swipeBounceTime;\n  }\n\n  return {\n    destination: Math.round(destination),\n    duration: duration\n  };\n}\n\nvar DEFAULT_INTERVAL = 100 / 60;\n\nfunction noop() {}\n\nvar requestAnimationFrame = function () {\n  if (!inBrowser) {\n    /* istanbul ignore if */\n    return noop;\n  }\n  return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame ||\n  // if all else fails, use setTimeout\n  function (callback) {\n    return window.setTimeout(callback, (callback.interval || DEFAULT_INTERVAL) / 2); // make interval as precise as possible.\n  };\n}();\n\nvar cancelAnimationFrame = function () {\n  if (!inBrowser) {\n    /* istanbul ignore if */\n    return noop;\n  }\n  return window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || function (id) {\n    window.clearTimeout(id);\n  };\n}();\n\nvar DIRECTION_UP = 1;\nvar DIRECTION_DOWN = -1;\nvar DIRECTION_LEFT = 1;\nvar DIRECTION_RIGHT = -1;\n\nvar PROBE_DEBOUNCE = 1;\n\nvar PROBE_REALTIME = 3;\n\nfunction warn(msg) {\n  console.error('[BScroll warn]: ' + msg);\n}\n\nfunction assert(condition, msg) {\n  if (!condition) {\n    throw new Error('[BScroll] ' + msg);\n  }\n}\n\nfunction coreMixin(BScroll) {\n  BScroll.prototype._start = function (e) {\n    var _eventType = eventType[e.type];\n    if (_eventType !== TOUCH_EVENT) {\n      if (e.button !== 0) {\n        return;\n      }\n    }\n    if (!this.enabled || this.destroyed || this.initiated && this.initiated !== _eventType) {\n      return;\n    }\n    this.initiated = _eventType;\n\n    if (this.options.preventDefault && !preventDefaultException(e.target, this.options.preventDefaultException)) {\n      e.preventDefault();\n    }\n    if (this.options.stopPropagation) {\n      e.stopPropagation();\n    }\n\n    this.moved = false;\n    this.distX = 0;\n    this.distY = 0;\n    this.directionX = 0;\n    this.directionY = 0;\n    this.movingDirectionX = 0;\n    this.movingDirectionY = 0;\n    this.directionLocked = 0;\n\n    this._transitionTime();\n    this.startTime = getNow();\n\n    if (this.options.wheel) {\n      this.target = e.target;\n    }\n\n    this.stop();\n\n    var point = e.touches ? e.touches[0] : e;\n\n    this.startX = this.x;\n    this.startY = this.y;\n    this.absStartX = this.x;\n    this.absStartY = this.y;\n    this.pointX = point.pageX;\n    this.pointY = point.pageY;\n\n    this.trigger('beforeScrollStart');\n  };\n\n  BScroll.prototype._move = function (e) {\n    if (!this.enabled || this.destroyed || eventType[e.type] !== this.initiated) {\n      return;\n    }\n\n    if (this.options.preventDefault) {\n      e.preventDefault();\n    }\n    if (this.options.stopPropagation) {\n      e.stopPropagation();\n    }\n\n    var point = e.touches ? e.touches[0] : e;\n    var deltaX = point.pageX - this.pointX;\n    var deltaY = point.pageY - this.pointY;\n\n    this.pointX = point.pageX;\n    this.pointY = point.pageY;\n\n    this.distX += deltaX;\n    this.distY += deltaY;\n\n    var absDistX = Math.abs(this.distX);\n    var absDistY = Math.abs(this.distY);\n\n    var timestamp = getNow();\n\n    // We need to move at least momentumLimitDistance pixels for the scrolling to initiate\n    if (timestamp - this.endTime > this.options.momentumLimitTime && !this.moved && absDistY < this.options.momentumLimitDistance && absDistX < this.options.momentumLimitDistance) {\n      return;\n    }\n\n    // If you are scrolling in one direction lock the other\n    if (!this.directionLocked && !this.options.freeScroll) {\n      if (absDistX > absDistY + this.options.directionLockThreshold) {\n        this.directionLocked = 'h'; // lock horizontally\n      } else if (absDistY >= absDistX + this.options.directionLockThreshold) {\n        this.directionLocked = 'v'; // lock vertically\n      } else {\n        this.directionLocked = 'n'; // no lock\n      }\n    }\n\n    if (this.directionLocked === 'h') {\n      if (this.options.eventPassthrough === 'vertical') {\n        e.preventDefault();\n      } else if (this.options.eventPassthrough === 'horizontal') {\n        this.initiated = false;\n        return;\n      }\n      deltaY = 0;\n    } else if (this.directionLocked === 'v') {\n      if (this.options.eventPassthrough === 'horizontal') {\n        e.preventDefault();\n      } else if (this.options.eventPassthrough === 'vertical') {\n        this.initiated = false;\n        return;\n      }\n      deltaX = 0;\n    }\n\n    deltaX = this.hasHorizontalScroll ? deltaX : 0;\n    deltaY = this.hasVerticalScroll ? deltaY : 0;\n    this.movingDirectionX = deltaX > 0 ? DIRECTION_RIGHT : deltaX < 0 ? DIRECTION_LEFT : 0;\n    this.movingDirectionY = deltaY > 0 ? DIRECTION_DOWN : deltaY < 0 ? DIRECTION_UP : 0;\n\n    var newX = this.x + deltaX;\n    var newY = this.y + deltaY;\n\n    var top = false;\n    var bottom = false;\n    var left = false;\n    var right = false;\n    // Slow down or stop if outside of the boundaries\n    var bounce = this.options.bounce;\n    if (bounce !== false) {\n      top = bounce.top === undefined ? true : bounce.top;\n      bottom = bounce.bottom === undefined ? true : bounce.bottom;\n      left = bounce.left === undefined ? true : bounce.left;\n      right = bounce.right === undefined ? true : bounce.right;\n    }\n    if (newX > this.minScrollX || newX < this.maxScrollX) {\n      if (newX > this.minScrollX && left || newX < this.maxScrollX && right) {\n        newX = this.x + deltaX / 3;\n      } else {\n        newX = newX > this.minScrollX ? this.minScrollX : this.maxScrollX;\n      }\n    }\n    if (newY > this.minScrollY || newY < this.maxScrollY) {\n      if (newY > this.minScrollY && top || newY < this.maxScrollY && bottom) {\n        newY = this.y + deltaY / 3;\n      } else {\n        newY = newY > this.minScrollY ? this.minScrollY : this.maxScrollY;\n      }\n    }\n\n    if (!this.moved) {\n      this.moved = true;\n      this.trigger('scrollStart');\n    }\n\n    this._translate(newX, newY);\n\n    if (timestamp - this.startTime > this.options.momentumLimitTime) {\n      this.startTime = timestamp;\n      this.startX = this.x;\n      this.startY = this.y;\n\n      if (this.options.probeType === PROBE_DEBOUNCE) {\n        this.trigger('scroll', {\n          x: this.x,\n          y: this.y\n        });\n      }\n    }\n\n    if (this.options.probeType > PROBE_DEBOUNCE) {\n      this.trigger('scroll', {\n        x: this.x,\n        y: this.y\n      });\n    }\n\n    var scrollLeft = document.documentElement.scrollLeft || window.pageXOffset || document.body.scrollLeft;\n    var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;\n\n    var pX = this.pointX - scrollLeft;\n    var pY = this.pointY - scrollTop;\n\n    if (pX > document.documentElement.clientWidth - this.options.momentumLimitDistance || pX < this.options.momentumLimitDistance || pY < this.options.momentumLimitDistance || pY > document.documentElement.clientHeight - this.options.momentumLimitDistance) {\n      this._end(e);\n    }\n  };\n\n  BScroll.prototype._end = function (e) {\n    if (!this.enabled || this.destroyed || eventType[e.type] !== this.initiated) {\n      return;\n    }\n    this.initiated = false;\n\n    if (this.options.preventDefault && !preventDefaultException(e.target, this.options.preventDefaultException)) {\n      e.preventDefault();\n    }\n    if (this.options.stopPropagation) {\n      e.stopPropagation();\n    }\n\n    this.trigger('touchEnd', {\n      x: this.x,\n      y: this.y\n    });\n\n    this.isInTransition = false;\n\n    // ensures that the last position is rounded\n    var newX = Math.round(this.x);\n    var newY = Math.round(this.y);\n\n    var deltaX = newX - this.absStartX;\n    var deltaY = newY - this.absStartY;\n    this.directionX = deltaX > 0 ? DIRECTION_RIGHT : deltaX < 0 ? DIRECTION_LEFT : 0;\n    this.directionY = deltaY > 0 ? DIRECTION_DOWN : deltaY < 0 ? DIRECTION_UP : 0;\n\n    // if configure pull down refresh, check it first\n    if (this.options.pullDownRefresh && this._checkPullDown()) {\n      return;\n    }\n\n    // check if it is a click operation\n    if (this._checkClick(e)) {\n      this.trigger('scrollCancel');\n      return;\n    }\n\n    // reset if we are outside of the boundaries\n    if (this.resetPosition(this.options.bounceTime, ease.bounce)) {\n      return;\n    }\n\n    this._translate(newX, newY);\n\n    this.endTime = getNow();\n    var duration = this.endTime - this.startTime;\n    var absDistX = Math.abs(newX - this.startX);\n    var absDistY = Math.abs(newY - this.startY);\n\n    // flick\n    if (this._events.flick && duration < this.options.flickLimitTime && absDistX < this.options.flickLimitDistance && absDistY < this.options.flickLimitDistance) {\n      this.trigger('flick');\n      return;\n    }\n\n    var time = 0;\n    // start momentum animation if needed\n    if (this.options.momentum && duration < this.options.momentumLimitTime && (absDistY > this.options.momentumLimitDistance || absDistX > this.options.momentumLimitDistance)) {\n      var top = false;\n      var bottom = false;\n      var left = false;\n      var right = false;\n      var bounce = this.options.bounce;\n      if (bounce !== false) {\n        top = bounce.top === undefined ? true : bounce.top;\n        bottom = bounce.bottom === undefined ? true : bounce.bottom;\n        left = bounce.left === undefined ? true : bounce.left;\n        right = bounce.right === undefined ? true : bounce.right;\n      }\n      var wrapperWidth = this.directionX === DIRECTION_RIGHT && left || this.directionX === DIRECTION_LEFT && right ? this.wrapperWidth : 0;\n      var wrapperHeight = this.directionY === DIRECTION_DOWN && top || this.directionY === DIRECTION_UP && bottom ? this.wrapperHeight : 0;\n      var momentumX = this.hasHorizontalScroll ? momentum(this.x, this.startX, duration, this.maxScrollX, this.minScrollX, wrapperWidth, this.options, this) : { destination: newX, duration: 0 };\n      var momentumY = this.hasVerticalScroll ? momentum(this.y, this.startY, duration, this.maxScrollY, this.minScrollY, wrapperHeight, this.options, this) : { destination: newY, duration: 0 };\n      newX = momentumX.destination;\n      newY = momentumY.destination;\n      time = Math.max(momentumX.duration, momentumY.duration);\n      this.isInTransition = true;\n    } else {\n      if (this.options.wheel) {\n        newY = this._findNearestValidWheel(newY).y;\n        time = this.options.wheel.adjustTime || 400;\n      }\n    }\n\n    var easing = ease.swipe;\n    if (this.options.snap) {\n      var snap = this._nearestSnap(newX, newY);\n      this.currentPage = snap;\n      time = this.options.snapSpeed || Math.max(Math.max(Math.min(Math.abs(newX - snap.x), 1000), Math.min(Math.abs(newY - snap.y), 1000)), 300);\n      newX = snap.x;\n      newY = snap.y;\n\n      this.directionX = 0;\n      this.directionY = 0;\n      easing = this.options.snap.easing || ease.bounce;\n    }\n\n    if (newX !== this.x || newY !== this.y) {\n      // change easing function when scroller goes out of the boundaries\n      if (newX > this.minScrollX || newX < this.maxScrollX || newY > this.minScrollY || newY < this.maxScrollY) {\n        easing = ease.swipeBounce;\n      }\n      this.scrollTo(newX, newY, time, easing);\n      return;\n    }\n\n    if (this.options.wheel) {\n      this.selectedIndex = this._findNearestValidWheel(this.y).index;\n    }\n\n    this.trigger('scrollEnd', {\n      x: this.x,\n      y: this.y\n    });\n  };\n\n  BScroll.prototype._checkClick = function (e) {\n    // when in the process of pulling down, it should not prevent click\n    var preventClick = this.stopFromTransition && !this.pulling;\n    this.stopFromTransition = false;\n\n    // we scrolled less than 15 pixels\n    if (!this.moved) {\n      if (this.options.wheel) {\n        if (this.target && this.target.className === this.options.wheel.wheelWrapperClass) {\n          var index = this._findNearestValidWheel(this.y).index;\n          var _offset = Math.round((this.pointY + offsetToBody(this.wrapper).top - this.wrapperHeight / 2) / this.itemHeight);\n          this.target = this.items[index + _offset];\n        }\n        var top = offset(this.target).top;\n        var left = offset(this.target).left;\n        top -= this.wrapperOffset.top;\n        top -= Math.round(this.target.offsetHeight / 2 - this.wrapper.offsetHeight / 2) || 0;\n        left -= this.wrapperOffset.left;\n        left -= Math.round(this.target.offsetWidth / 2 - this.wrapper.offsetWidth / 2) || 0;\n\n        top = this._findNearestValidWheel(top).y;\n        this.scrollTo(left, top, this.options.wheel.adjustTime || 400, ease.swipe);\n        return true;\n      } else {\n        if (!preventClick) {\n          var _dblclick = this.options.dblclick;\n          var dblclickTrigged = false;\n          if (_dblclick && this.lastClickTime) {\n            var _dblclick$delay = _dblclick.delay,\n                delay = _dblclick$delay === undefined ? 300 : _dblclick$delay;\n\n            if (getNow() - this.lastClickTime < delay) {\n              dblclickTrigged = true;\n              dblclick(e);\n            }\n          }\n          if (this.options.tap) {\n            tap(e, this.options.tap);\n          }\n\n          if (this.options.click && !preventDefaultException(e.target, this.options.preventDefaultException)) {\n            click(e);\n          }\n          this.lastClickTime = dblclickTrigged ? null : getNow();\n          return true;\n        }\n        return false;\n      }\n    }\n    return false;\n  };\n\n  BScroll.prototype._resize = function () {\n    var _this = this;\n\n    if (!this.enabled) {\n      return;\n    }\n    // fix a scroll problem under Android condition\n    if (isAndroid) {\n      this.wrapper.scrollTop = 0;\n    }\n    clearTimeout(this.resizeTimeout);\n    this.resizeTimeout = setTimeout(function () {\n      _this.refresh();\n    }, this.options.resizePolling);\n  };\n\n  BScroll.prototype._startProbe = function () {\n    cancelAnimationFrame(this.probeTimer);\n    this.probeTimer = requestAnimationFrame(probe);\n\n    var me = this;\n\n    function probe() {\n      var pos = me.getComputedPosition();\n      me.trigger('scroll', pos);\n      if (!me.isInTransition) {\n        me.trigger('scrollEnd', pos);\n        return;\n      }\n      me.probeTimer = requestAnimationFrame(probe);\n    }\n  };\n\n  BScroll.prototype._transitionTime = function () {\n    var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n    this.scrollerStyle[style.transitionDuration] = time + 'ms';\n\n    if (this.options.wheel) {\n      for (var i = 0; i < this.items.length; i++) {\n        this.items[i].style[style.transitionDuration] = time + 'ms';\n      }\n    }\n\n    if (this.indicators) {\n      for (var _i = 0; _i < this.indicators.length; _i++) {\n        this.indicators[_i].transitionTime(time);\n      }\n    }\n  };\n\n  BScroll.prototype._transitionTimingFunction = function (easing) {\n    this.scrollerStyle[style.transitionTimingFunction] = easing;\n\n    if (this.options.wheel) {\n      for (var i = 0; i < this.items.length; i++) {\n        this.items[i].style[style.transitionTimingFunction] = easing;\n      }\n    }\n\n    if (this.indicators) {\n      for (var _i2 = 0; _i2 < this.indicators.length; _i2++) {\n        this.indicators[_i2].transitionTimingFunction(easing);\n      }\n    }\n  };\n\n  BScroll.prototype._transitionEnd = function (e) {\n    if (e.target !== this.scroller || !this.isInTransition) {\n      return;\n    }\n\n    this._transitionTime();\n    var needReset = !this.pulling || this.movingDirectionY === DIRECTION_UP;\n    if (needReset && !this.resetPosition(this.options.bounceTime, ease.bounce)) {\n      this.isInTransition = false;\n      if (this.options.probeType !== PROBE_REALTIME) {\n        this.trigger('scrollEnd', {\n          x: this.x,\n          y: this.y\n        });\n      }\n    }\n  };\n\n  BScroll.prototype._translate = function (x, y, scale) {\n    assert(!isUndef(x) && !isUndef(y), 'Translate x or y is null or undefined.');\n    if (isUndef(scale)) {\n      scale = this.scale;\n    }\n    if (this.options.useTransform) {\n      this.scrollerStyle[style.transform] = 'translate(' + x + 'px,' + y + 'px) scale(' + scale + ')' + this.translateZ;\n    } else {\n      x = Math.round(x);\n      y = Math.round(y);\n      this.scrollerStyle.left = x + 'px';\n      this.scrollerStyle.top = y + 'px';\n    }\n\n    if (this.options.wheel) {\n      var _options$wheel$rotate = this.options.wheel.rotate,\n          rotate = _options$wheel$rotate === undefined ? 25 : _options$wheel$rotate;\n\n      for (var i = 0; i < this.items.length; i++) {\n        var deg = rotate * (y / this.itemHeight + i);\n        this.items[i].style[style.transform] = 'rotateX(' + deg + 'deg)';\n      }\n    }\n\n    this.x = x;\n    this.y = y;\n    this.setScale(scale);\n\n    if (this.indicators) {\n      for (var _i3 = 0; _i3 < this.indicators.length; _i3++) {\n        this.indicators[_i3].updatePosition();\n      }\n    }\n  };\n\n  BScroll.prototype._animate = function (destX, destY, duration, easingFn) {\n    var me = this;\n    var startX = this.x;\n    var startY = this.y;\n    var startScale = this.lastScale;\n    var destScale = this.scale;\n    var startTime = getNow();\n    var destTime = startTime + duration;\n\n    function step() {\n      var now = getNow();\n\n      if (now >= destTime) {\n        me.isAnimating = false;\n        me._translate(destX, destY, destScale);\n\n        me.trigger('scroll', {\n          x: me.x,\n          y: me.y\n        });\n\n        if (!me.pulling && !me.resetPosition(me.options.bounceTime)) {\n          me.trigger('scrollEnd', {\n            x: me.x,\n            y: me.y\n          });\n        }\n        return;\n      }\n      now = (now - startTime) / duration;\n      var easing = easingFn(now);\n      var newX = (destX - startX) * easing + startX;\n      var newY = (destY - startY) * easing + startY;\n      var newScale = (destScale - startScale) * easing + startScale;\n\n      me._translate(newX, newY, newScale);\n\n      if (me.isAnimating) {\n        me.animateTimer = requestAnimationFrame(step);\n      }\n\n      if (me.options.probeType === PROBE_REALTIME) {\n        me.trigger('scroll', {\n          x: me.x,\n          y: me.y\n        });\n      }\n    }\n\n    this.isAnimating = true;\n    cancelAnimationFrame(this.animateTimer);\n    step();\n  };\n\n  BScroll.prototype.scrollBy = function (x, y) {\n    var time = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n    var easing = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ease.bounce;\n\n    x = this.x + x;\n    y = this.y + y;\n\n    this.scrollTo(x, y, time, easing);\n  };\n\n  BScroll.prototype.scrollTo = function (x, y) {\n    var time = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n    var easing = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ease.bounce;\n    var isSilent = arguments[4];\n\n    if (this.options.wheel) {\n      y = this._findNearestValidWheel(y).y;\n    }\n    if (x === this.x && y === this.y) {\n      return;\n    }\n    this.isInTransition = this.options.useTransition && time > 0 && (this.x !== x || this.y !== y);\n\n    if (!time || this.options.useTransition) {\n      this._transitionTimingFunction(easing.style);\n      this._transitionTime(time);\n      this._translate(x, y);\n\n      if (time && this.options.probeType === PROBE_REALTIME) {\n        this._startProbe();\n      }\n      if (!time && !isSilent) {\n        // don't trigger resetPosition when zoom feature is open, fix #748\n        if (this.options.zoom) return;\n        this.trigger('scroll', {\n          x: x,\n          y: y\n        });\n        // force reflow to put everything in position\n        this._reflow = document.body.offsetHeight;\n        if (!this.resetPosition(this.options.bounceTime, ease.bounce)) {\n          this.trigger('scrollEnd', {\n            x: x,\n            y: y\n          });\n        }\n      }\n\n      if (this.options.wheel) {\n        this.selectedIndex = this._findNearestValidWheel(y).index;\n      }\n    } else {\n      this._animate(x, y, time, easing.fn);\n    }\n  };\n\n  BScroll.prototype.scrollToElement = function (el, time, offsetX, offsetY, easing) {\n    if (!el) {\n      return;\n    }\n    el = el.nodeType ? el : this.scroller.querySelector(el);\n\n    if (this.options.wheel && !el.classList.contains(this.options.wheel.wheelItemClass)) {\n      return;\n    }\n\n    var pos = offset(el);\n    pos.left -= this.wrapperOffset.left;\n    pos.top -= this.wrapperOffset.top;\n\n    // if offsetX/Y are true we center the element to the screen\n    if (offsetX === true) {\n      offsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2);\n    }\n    if (offsetY === true) {\n      offsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2);\n    }\n\n    pos.left -= offsetX || 0;\n    pos.top -= offsetY || 0;\n    pos.left = pos.left > this.minScrollX ? this.minScrollX : pos.left < this.maxScrollX ? this.maxScrollX : pos.left;\n    pos.top = pos.top > this.minScrollY ? this.minScrollY : pos.top < this.maxScrollY ? this.maxScrollY : pos.top;\n\n    if (this.options.wheel) {\n      pos.top = this._findNearestValidWheel(pos.top).y;\n    }\n\n    this.scrollTo(pos.left, pos.top, time, easing);\n  };\n\n  BScroll.prototype.resetPosition = function () {\n    var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    var easeing = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ease.bounce;\n\n    var x = this.x;\n    var roundX = Math.round(x);\n    if (!this.hasHorizontalScroll || roundX > this.minScrollX) {\n      x = this.minScrollX;\n    } else if (roundX < this.maxScrollX) {\n      x = this.maxScrollX;\n    }\n\n    var y = this.y;\n    var roundY = Math.round(y);\n    if (!this.hasVerticalScroll || roundY > this.minScrollY) {\n      y = this.minScrollY;\n    } else if (roundY < this.maxScrollY) {\n      y = this.maxScrollY;\n    }\n\n    if (x === this.x && y === this.y) {\n      return false;\n    }\n\n    this.scrollTo(x, y, time, easeing);\n\n    return true;\n  };\n\n  BScroll.prototype.getComputedPosition = function () {\n    var matrix = window.getComputedStyle(this.scroller, null);\n    var x = void 0;\n    var y = void 0;\n\n    if (this.options.useTransform) {\n      matrix = matrix[style.transform].split(')')[0].split(', ');\n      x = +(matrix[12] || matrix[4]);\n      y = +(matrix[13] || matrix[5]);\n    } else {\n      x = +matrix.left.replace(/[^-\\d.]/g, '');\n      y = +matrix.top.replace(/[^-\\d.]/g, '');\n    }\n\n    return {\n      x: x,\n      y: y\n    };\n  };\n\n  BScroll.prototype.stop = function () {\n    if (this.options.useTransition && this.isInTransition) {\n      this.isInTransition = false;\n      cancelAnimationFrame(this.probeTimer);\n      var pos = this.getComputedPosition();\n      this._translate(pos.x, pos.y);\n      if (this.options.wheel) {\n        this.target = this.items[this._findNearestValidWheel(pos.y).index];\n      } else {\n        this.trigger('scrollEnd', {\n          x: this.x,\n          y: this.y\n        });\n      }\n      this.stopFromTransition = true;\n    } else if (!this.options.useTransition && this.isAnimating) {\n      this.isAnimating = false;\n      cancelAnimationFrame(this.animateTimer);\n      this.trigger('scrollEnd', {\n        x: this.x,\n        y: this.y\n      });\n      this.stopFromTransition = true;\n    }\n  };\n\n  BScroll.prototype.destroy = function () {\n    this.destroyed = true;\n    this.trigger('destroy');\n    if (this.options.useTransition) {\n      cancelAnimationFrame(this.probeTimer);\n    } else {\n      cancelAnimationFrame(this.animateTimer);\n    }\n    this._removeDOMEvents();\n    // remove custom events\n    this._events = {};\n  };\n}\n\nfunction snapMixin(BScroll) {\n  BScroll.prototype._initSnap = function () {\n    var _this = this;\n\n    this.currentPage = {};\n    var snap = this.options.snap;\n\n    if (snap.loop) {\n      var children = this.scroller.children;\n      if (children.length > 1) {\n        prepend(children[children.length - 1].cloneNode(true), this.scroller);\n        this.scroller.appendChild(children[1].cloneNode(true));\n      } else {\n        // Loop does not make any sense if there is only one child.\n        snap.loop = false;\n      }\n    }\n\n    var el = snap.el;\n    if (typeof el === 'string') {\n      el = this.scroller.querySelectorAll(el);\n    }\n\n    this.on('refresh', function () {\n      _this.pages = [];\n\n      if (!_this.wrapperWidth || !_this.wrapperHeight || !_this.scrollerWidth || !_this.scrollerHeight) {\n        return;\n      }\n\n      var stepX = snap.stepX || _this.wrapperWidth;\n      var stepY = snap.stepY || _this.wrapperHeight;\n\n      var x = 0;\n      var y = void 0;\n      var cx = void 0;\n      var cy = void 0;\n      var i = 0;\n      var l = void 0;\n      var m = 0;\n      var n = void 0;\n      var rect = void 0;\n      if (!el) {\n        cx = Math.round(stepX / 2);\n        cy = Math.round(stepY / 2);\n\n        while (x > -_this.scrollerWidth) {\n          _this.pages[i] = [];\n          l = 0;\n          y = 0;\n\n          while (y > -_this.scrollerHeight) {\n            _this.pages[i][l] = {\n              x: Math.max(x, _this.maxScrollX),\n              y: Math.max(y, _this.maxScrollY),\n              width: stepX,\n              height: stepY,\n              cx: x - cx,\n              cy: y - cy\n            };\n\n            y -= stepY;\n            l++;\n          }\n\n          x -= stepX;\n          i++;\n        }\n      } else {\n        l = el.length;\n        n = -1;\n\n        for (; i < l; i++) {\n          rect = getRect(el[i]);\n          if (i === 0 || rect.left <= getRect(el[i - 1]).left) {\n            m = 0;\n            n++;\n          }\n\n          if (!_this.pages[m]) {\n            _this.pages[m] = [];\n          }\n\n          x = Math.max(-rect.left, _this.maxScrollX);\n          y = Math.max(-rect.top, _this.maxScrollY);\n          cx = x - Math.round(rect.width / 2);\n          cy = y - Math.round(rect.height / 2);\n\n          _this.pages[m][n] = {\n            x: x,\n            y: y,\n            width: rect.width,\n            height: rect.height,\n            cx: cx,\n            cy: cy\n          };\n\n          if (x > _this.maxScrollX) {\n            m++;\n          }\n        }\n      }\n\n      _this._checkSnapLoop();\n\n      var initPageX = snap._loopX ? 1 : 0;\n      var initPageY = snap._loopY ? 1 : 0;\n      _this._goToPage(_this.currentPage.pageX || initPageX, _this.currentPage.pageY || initPageY, 0, undefined, true);\n\n      // Update snap threshold if needed.\n      var snapThreshold = snap.threshold;\n      if (snapThreshold % 1 === 0) {\n        _this.snapThresholdX = snapThreshold;\n        _this.snapThresholdY = snapThreshold;\n      } else {\n        _this.snapThresholdX = Math.round(_this.pages[_this.currentPage.pageX][_this.currentPage.pageY].width * snapThreshold);\n        _this.snapThresholdY = Math.round(_this.pages[_this.currentPage.pageX][_this.currentPage.pageY].height * snapThreshold);\n      }\n    });\n\n    this.on('scrollEnd', function () {\n      if (snap.loop) {\n        if (snap._loopX) {\n          if (_this.currentPage.pageX === 0) {\n            _this._goToPage(_this.pages.length - 2, _this.currentPage.pageY, 0, undefined, true);\n          }\n          if (_this.currentPage.pageX === _this.pages.length - 1) {\n            _this._goToPage(1, _this.currentPage.pageY, 0, undefined, true);\n          }\n        } else {\n          if (_this.currentPage.pageY === 0) {\n            _this._goToPage(_this.currentPage.pageX, _this.pages[0].length - 2, 0, undefined, true);\n          }\n          if (_this.currentPage.pageY === _this.pages[0].length - 1) {\n            _this._goToPage(_this.currentPage.pageX, 1, 0, undefined, true);\n          }\n        }\n      }\n    });\n\n    if (snap.listenFlick !== false) {\n      this.on('flick', function () {\n        var time = snap.speed || Math.max(Math.max(Math.min(Math.abs(_this.x - _this.startX), 1000), Math.min(Math.abs(_this.y - _this.startY), 1000)), 300);\n\n        _this._goToPage(_this.currentPage.pageX + _this.directionX, _this.currentPage.pageY + _this.directionY, time);\n      });\n    }\n\n    this.on('destroy', function () {\n      if (snap.loop) {\n        var _children = _this.scroller.children;\n        if (_children.length > 2) {\n          removeChild(_this.scroller, _children[_children.length - 1]);\n          removeChild(_this.scroller, _children[0]);\n        }\n      }\n    });\n  };\n\n  BScroll.prototype._checkSnapLoop = function () {\n    var snap = this.options.snap;\n\n    if (!snap.loop || !this.pages || !this.pages.length) {\n      return;\n    }\n\n    if (this.pages.length > 1) {\n      snap._loopX = true;\n    }\n    if (this.pages[0] && this.pages[0].length > 1) {\n      snap._loopY = true;\n    }\n    if (snap._loopX && snap._loopY) {\n      warn('Loop does not support two direction at the same time.');\n    }\n  };\n\n  BScroll.prototype._nearestSnap = function (x, y) {\n    if (!this.pages.length) {\n      return { x: 0, y: 0, pageX: 0, pageY: 0 };\n    }\n\n    var i = 0;\n    // Check if we exceeded the snap threshold\n    if (Math.abs(x - this.absStartX) <= this.snapThresholdX && Math.abs(y - this.absStartY) <= this.snapThresholdY) {\n      return this.currentPage;\n    }\n\n    if (x > this.minScrollX) {\n      x = this.minScrollX;\n    } else if (x < this.maxScrollX) {\n      x = this.maxScrollX;\n    }\n\n    if (y > this.minScrollY) {\n      y = this.minScrollY;\n    } else if (y < this.maxScrollY) {\n      y = this.maxScrollY;\n    }\n\n    var l = this.pages.length;\n    for (; i < l; i++) {\n      if (x >= this.pages[i][0].cx) {\n        x = this.pages[i][0].x;\n        break;\n      }\n    }\n\n    l = this.pages[i].length;\n\n    var m = 0;\n    for (; m < l; m++) {\n      if (y >= this.pages[0][m].cy) {\n        y = this.pages[0][m].y;\n        break;\n      }\n    }\n\n    if (i === this.currentPage.pageX) {\n      i += this.directionX;\n\n      if (i < 0) {\n        i = 0;\n      } else if (i >= this.pages.length) {\n        i = this.pages.length - 1;\n      }\n\n      x = this.pages[i][0].x;\n    }\n\n    if (m === this.currentPage.pageY) {\n      m += this.directionY;\n\n      if (m < 0) {\n        m = 0;\n      } else if (m >= this.pages[0].length) {\n        m = this.pages[0].length - 1;\n      }\n\n      y = this.pages[0][m].y;\n    }\n\n    return {\n      x: x,\n      y: y,\n      pageX: i,\n      pageY: m\n    };\n  };\n\n  BScroll.prototype._goToPage = function (x) {\n    var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    var time = arguments[2];\n    var easing = arguments[3];\n    var isSilent = arguments[4];\n\n    var snap = this.options.snap;\n\n    if (!snap || !this.pages || !this.pages.length) {\n      return;\n    }\n\n    easing = easing || snap.easing || ease.bounce;\n\n    if (x >= this.pages.length) {\n      x = this.pages.length - 1;\n    } else if (x < 0) {\n      x = 0;\n    }\n\n    if (!this.pages[x]) {\n      return;\n    }\n\n    if (y >= this.pages[x].length) {\n      y = this.pages[x].length - 1;\n    } else if (y < 0) {\n      y = 0;\n    }\n\n    var posX = this.pages[x][y].x;\n    var posY = this.pages[x][y].y;\n\n    time = time === undefined ? snap.speed || Math.max(Math.max(Math.min(Math.abs(posX - this.x), 1000), Math.min(Math.abs(posY - this.y), 1000)), 300) : time;\n\n    this.currentPage = {\n      x: posX,\n      y: posY,\n      pageX: x,\n      pageY: y\n    };\n    this.scrollTo(posX, posY, time, easing, isSilent);\n  };\n\n  BScroll.prototype.goToPage = function (x, y, time, easing) {\n    var snap = this.options.snap;\n    if (!snap || !this.pages || !this.pages.length) {\n      return;\n    }\n\n    if (snap.loop) {\n      var len = void 0;\n      if (snap._loopX) {\n        len = this.pages.length - 2;\n        if (x >= len) {\n          x = len - 1;\n        } else if (x < 0) {\n          x = 0;\n        }\n        x += 1;\n      } else {\n        len = this.pages[0].length - 2;\n        if (y >= len) {\n          y = len - 1;\n        } else if (y < 0) {\n          y = 0;\n        }\n        y += 1;\n      }\n    }\n    this._goToPage(x, y, time, easing);\n  };\n\n  BScroll.prototype.next = function (time, easing) {\n    var snap = this.options.snap;\n    if (!snap) {\n      return;\n    }\n\n    var x = this.currentPage.pageX;\n    var y = this.currentPage.pageY;\n\n    x++;\n    if (x >= this.pages.length && this.hasVerticalScroll) {\n      x = 0;\n      y++;\n    }\n\n    this._goToPage(x, y, time, easing);\n  };\n\n  BScroll.prototype.prev = function (time, easing) {\n    var snap = this.options.snap;\n    if (!snap) {\n      return;\n    }\n\n    var x = this.currentPage.pageX;\n    var y = this.currentPage.pageY;\n\n    x--;\n    if (x < 0 && this.hasVerticalScroll) {\n      x = 0;\n      y--;\n    }\n\n    this._goToPage(x, y, time, easing);\n  };\n\n  BScroll.prototype.getCurrentPage = function () {\n    var snap = this.options.snap;\n    if (!snap) {\n      return null;\n    }\n\n    if (snap.loop) {\n      var currentPage = void 0;\n      if (snap._loopX) {\n        currentPage = extend({}, this.currentPage, {\n          pageX: this.currentPage.pageX - 1\n        });\n      } else {\n        currentPage = extend({}, this.currentPage, {\n          pageY: this.currentPage.pageY - 1\n        });\n      }\n      return currentPage;\n    }\n    return this.currentPage;\n  };\n}\n\nfunction wheelMixin(BScroll) {\n  BScroll.prototype.wheelTo = function () {\n    var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n    if (this.options.wheel) {\n      var y = -index * this.itemHeight;\n      this.scrollTo(0, y);\n    }\n  };\n\n  BScroll.prototype.getSelectedIndex = function () {\n    return this.options.wheel && this.selectedIndex;\n  };\n\n  BScroll.prototype._initWheel = function () {\n    var wheel = this.options.wheel;\n    if (!wheel.wheelWrapperClass) {\n      wheel.wheelWrapperClass = 'wheel-scroll';\n    }\n    if (!wheel.wheelItemClass) {\n      wheel.wheelItemClass = 'wheel-item';\n    }\n    if (!wheel.wheelDisabledItemClass) {\n      wheel.wheelDisabledItemClass = 'wheel-disabled-item';\n    }\n    if (wheel.selectedIndex === undefined) {\n      wheel.selectedIndex = 0;\n    }\n  };\n\n  BScroll.prototype._findNearestValidWheel = function (y) {\n    y = y > 0 ? 0 : y < this.maxScrollY ? this.maxScrollY : y;\n    var wheel = this.options.wheel;\n    var currentIndex = Math.abs(Math.round(-y / this.itemHeight));\n    var cacheIndex = currentIndex;\n    var items = this.items;\n    // Impersonation web native select\n    // first, check whether there is a enable item whose index is smaller than currentIndex\n    // then, check whether there is a enable item whose index is bigger than currentIndex\n    // otherwise, there are all disabled items, just keep currentIndex unchange\n    while (currentIndex >= 0) {\n      if (items[currentIndex].className.indexOf(wheel.wheelDisabledItemClass) === -1) {\n        break;\n      }\n      currentIndex--;\n    }\n\n    if (currentIndex < 0) {\n      currentIndex = cacheIndex;\n      while (currentIndex <= items.length - 1) {\n        if (items[currentIndex].className.indexOf(wheel.wheelDisabledItemClass) === -1) {\n          break;\n        }\n        currentIndex++;\n      }\n    }\n\n    // keep it unchange when all the items are disabled\n    if (currentIndex === items.length) {\n      currentIndex = cacheIndex;\n    }\n    // when all the items are disabled, this.selectedIndex should always be -1\n    return {\n      index: this.wheelItemsAllDisabled ? -1 : currentIndex,\n      y: -currentIndex * this.itemHeight\n    };\n  };\n\n  BScroll.prototype._checkWheelAllDisabled = function () {\n    var wheel = this.options.wheel;\n    var items = this.items;\n    this.wheelItemsAllDisabled = true;\n    for (var i = 0; i < items.length; i++) {\n      if (items[i].className.indexOf(wheel.wheelDisabledItemClass) === -1) {\n        this.wheelItemsAllDisabled = false;\n        break;\n      }\n    }\n  };\n}\n\nvar INDICATOR_MIN_LEN = 8;\n\nfunction scrollbarMixin(BScroll) {\n  BScroll.prototype._initScrollbar = function () {\n    var _this = this;\n\n    var _options$scrollbar = this.options.scrollbar,\n        _options$scrollbar$fa = _options$scrollbar.fade,\n        fade = _options$scrollbar$fa === undefined ? true : _options$scrollbar$fa,\n        _options$scrollbar$in = _options$scrollbar.interactive,\n        interactive = _options$scrollbar$in === undefined ? false : _options$scrollbar$in;\n\n    this.indicators = [];\n    var indicator = void 0;\n\n    if (this.options.scrollX) {\n      indicator = {\n        el: createScrollbar('horizontal'),\n        direction: 'horizontal',\n        fade: fade,\n        interactive: interactive\n      };\n      this._insertScrollBar(indicator.el);\n\n      this.indicators.push(new Indicator(this, indicator));\n    }\n\n    if (this.options.scrollY) {\n      indicator = {\n        el: createScrollbar('vertical'),\n        direction: 'vertical',\n        fade: fade,\n        interactive: interactive\n      };\n      this._insertScrollBar(indicator.el);\n      this.indicators.push(new Indicator(this, indicator));\n    }\n\n    this.on('refresh', function () {\n      for (var i = 0; i < _this.indicators.length; i++) {\n        _this.indicators[i].refresh();\n      }\n    });\n\n    if (fade) {\n      this.on('scrollEnd', function () {\n        for (var i = 0; i < _this.indicators.length; i++) {\n          _this.indicators[i].fade();\n        }\n      });\n\n      this.on('scrollCancel', function () {\n        for (var i = 0; i < _this.indicators.length; i++) {\n          _this.indicators[i].fade();\n        }\n      });\n\n      this.on('scrollStart', function () {\n        for (var i = 0; i < _this.indicators.length; i++) {\n          _this.indicators[i].fade(true);\n        }\n      });\n\n      this.on('beforeScrollStart', function () {\n        for (var i = 0; i < _this.indicators.length; i++) {\n          _this.indicators[i].fade(true, true);\n        }\n      });\n    }\n\n    this.on('destroy', function () {\n      _this._removeScrollBars();\n    });\n  };\n\n  BScroll.prototype._insertScrollBar = function (scrollbar) {\n    this.wrapper.appendChild(scrollbar);\n  };\n\n  BScroll.prototype._removeScrollBars = function () {\n    for (var i = 0; i < this.indicators.length; i++) {\n      this.indicators[i].destroy();\n    }\n  };\n}\n\nfunction createScrollbar(direction) {\n  var scrollbar = document.createElement('div');\n  var indicator = document.createElement('div');\n\n  scrollbar.style.cssText = 'position:absolute;z-index:9999;pointerEvents:none';\n  indicator.style.cssText = 'box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px;';\n\n  indicator.className = 'bscroll-indicator';\n\n  if (direction === 'horizontal') {\n    scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0';\n    indicator.style.height = '100%';\n    scrollbar.className = 'bscroll-horizontal-scrollbar';\n  } else {\n    scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px';\n    indicator.style.width = '100%';\n    scrollbar.className = 'bscroll-vertical-scrollbar';\n  }\n\n  scrollbar.style.cssText += ';overflow:hidden';\n  scrollbar.appendChild(indicator);\n\n  return scrollbar;\n}\n\nfunction Indicator(scroller, options) {\n  this.wrapper = options.el;\n  this.wrapperStyle = this.wrapper.style;\n  this.indicator = this.wrapper.children[0];\n  this.indicatorStyle = this.indicator.style;\n  this.scroller = scroller;\n  this.direction = options.direction;\n  if (options.fade) {\n    this.visible = 0;\n    this.wrapperStyle.opacity = '0';\n  } else {\n    this.visible = 1;\n  }\n\n  this.sizeRatioX = 1;\n  this.sizeRatioY = 1;\n  this.maxPosX = 0;\n  this.maxPosY = 0;\n  this.x = 0;\n  this.y = 0;\n\n  if (options.interactive) {\n    this._addDOMEvents();\n  }\n}\n\nIndicator.prototype.handleEvent = function (e) {\n  switch (e.type) {\n    case 'touchstart':\n    case 'mousedown':\n      this._start(e);\n      break;\n    case 'touchmove':\n    case 'mousemove':\n      this._move(e);\n      break;\n    case 'touchend':\n    case 'mouseup':\n    case 'touchcancel':\n    case 'mousecancel':\n      this._end(e);\n      break;\n  }\n};\n\nIndicator.prototype.refresh = function () {\n  if (this._shouldShow()) {\n    this.transitionTime();\n    this._calculate();\n    this.updatePosition();\n  }\n};\n\nIndicator.prototype.fade = function (visible, hold) {\n  var _this2 = this;\n\n  if (hold && !this.visible) {\n    return;\n  }\n\n  var time = visible ? 250 : 500;\n\n  visible = visible ? '1' : '0';\n\n  this.wrapperStyle[style.transitionDuration] = time + 'ms';\n\n  clearTimeout(this.fadeTimeout);\n  this.fadeTimeout = setTimeout(function () {\n    _this2.wrapperStyle.opacity = visible;\n    _this2.visible = +visible;\n  }, 0);\n};\n\nIndicator.prototype.updatePosition = function () {\n  if (this.direction === 'vertical') {\n    var y = Math.round(this.sizeRatioY * this.scroller.y);\n\n    if (y < 0) {\n      this.transitionTime(500);\n      var height = Math.max(this.indicatorHeight + y * 3, INDICATOR_MIN_LEN);\n      this.indicatorStyle.height = height + 'px';\n      y = 0;\n    } else if (y > this.maxPosY) {\n      this.transitionTime(500);\n      var _height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, INDICATOR_MIN_LEN);\n      this.indicatorStyle.height = _height + 'px';\n      y = this.maxPosY + this.indicatorHeight - _height;\n    } else {\n      this.indicatorStyle.height = this.indicatorHeight + 'px';\n    }\n    this.y = y;\n\n    if (this.scroller.options.useTransform) {\n      this.indicatorStyle[style.transform] = 'translateY(' + y + 'px)' + this.scroller.translateZ;\n    } else {\n      this.indicatorStyle.top = y + 'px';\n    }\n  } else {\n    var x = Math.round(this.sizeRatioX * this.scroller.x);\n\n    if (x < 0) {\n      this.transitionTime(500);\n      var width = Math.max(this.indicatorWidth + x * 3, INDICATOR_MIN_LEN);\n      this.indicatorStyle.width = width + 'px';\n      x = 0;\n    } else if (x > this.maxPosX) {\n      this.transitionTime(500);\n      var _width = Math.max(this.indicatorWidth - (x - this.maxPosX) * 3, INDICATOR_MIN_LEN);\n      this.indicatorStyle.width = _width + 'px';\n      x = this.maxPosX + this.indicatorWidth - _width;\n    } else {\n      this.indicatorStyle.width = this.indicatorWidth + 'px';\n    }\n\n    this.x = x;\n\n    if (this.scroller.options.useTransform) {\n      this.indicatorStyle[style.transform] = 'translateX(' + x + 'px)' + this.scroller.translateZ;\n    } else {\n      this.indicatorStyle.left = x + 'px';\n    }\n  }\n};\n\nIndicator.prototype.transitionTime = function () {\n  var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n  this.indicatorStyle[style.transitionDuration] = time + 'ms';\n};\n\nIndicator.prototype.transitionTimingFunction = function (easing) {\n  this.indicatorStyle[style.transitionTimingFunction] = easing;\n};\n\nIndicator.prototype.destroy = function () {\n  this._removeDOMEvents();\n  this.wrapper.parentNode.removeChild(this.wrapper);\n};\n\nIndicator.prototype._start = function (e) {\n  var point = e.touches ? e.touches[0] : e;\n\n  e.preventDefault();\n  e.stopPropagation();\n\n  this.transitionTime();\n\n  this.initiated = true;\n  this.moved = false;\n  this.lastPointX = point.pageX;\n  this.lastPointY = point.pageY;\n\n  this.startTime = getNow();\n\n  this._handleMoveEvents(addEvent);\n  this.scroller.trigger('beforeScrollStart');\n};\n\nIndicator.prototype._move = function (e) {\n  var point = e.touches ? e.touches[0] : e;\n\n  e.preventDefault();\n  e.stopPropagation();\n\n  if (!this.moved) {\n    this.scroller.trigger('scrollStart');\n  }\n\n  this.moved = true;\n\n  var deltaX = point.pageX - this.lastPointX;\n  this.lastPointX = point.pageX;\n\n  var deltaY = point.pageY - this.lastPointY;\n  this.lastPointY = point.pageY;\n\n  var newX = this.x + deltaX;\n  var newY = this.y + deltaY;\n\n  this._pos(newX, newY);\n};\n\nIndicator.prototype._end = function (e) {\n  if (!this.initiated) {\n    return;\n  }\n  this.initiated = false;\n\n  e.preventDefault();\n  e.stopPropagation();\n\n  this._handleMoveEvents(removeEvent);\n\n  var snapOption = this.scroller.options.snap;\n  if (snapOption) {\n    var speed = snapOption.speed,\n        _snapOption$easing = snapOption.easing,\n        easing = _snapOption$easing === undefined ? ease.bounce : _snapOption$easing;\n\n    var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y);\n\n    var time = speed || Math.max(Math.max(Math.min(Math.abs(this.scroller.x - snap.x), 1000), Math.min(Math.abs(this.scroller.y - snap.y), 1000)), 300);\n\n    if (this.scroller.x !== snap.x || this.scroller.y !== snap.y) {\n      this.scroller.directionX = 0;\n      this.scroller.directionY = 0;\n      this.scroller.currentPage = snap;\n      this.scroller.scrollTo(snap.x, snap.y, time, easing);\n    }\n  }\n\n  if (this.moved) {\n    this.scroller.trigger('scrollEnd', {\n      x: this.scroller.x,\n      y: this.scroller.y\n    });\n  }\n};\n\nIndicator.prototype._pos = function (x, y) {\n  if (x < 0) {\n    x = 0;\n  } else if (x > this.maxPosX) {\n    x = this.maxPosX;\n  }\n\n  if (y < 0) {\n    y = 0;\n  } else if (y > this.maxPosY) {\n    y = this.maxPosY;\n  }\n\n  x = Math.round(x / this.sizeRatioX);\n  y = Math.round(y / this.sizeRatioY);\n\n  this.scroller.scrollTo(x, y);\n  this.scroller.trigger('scroll', {\n    x: this.scroller.x,\n    y: this.scroller.y\n  });\n};\n\nIndicator.prototype._shouldShow = function () {\n  if (this.direction === 'vertical' && this.scroller.hasVerticalScroll || this.direction === 'horizontal' && this.scroller.hasHorizontalScroll) {\n    this.wrapper.style.display = '';\n    return true;\n  }\n  this.wrapper.style.display = 'none';\n  return false;\n};\n\nIndicator.prototype._calculate = function () {\n  if (this.direction === 'vertical') {\n    var wrapperHeight = this.wrapper.clientHeight;\n    this.indicatorHeight = Math.max(Math.round(wrapperHeight * wrapperHeight / (this.scroller.scrollerHeight || wrapperHeight || 1)), INDICATOR_MIN_LEN);\n    this.indicatorStyle.height = this.indicatorHeight + 'px';\n\n    this.maxPosY = wrapperHeight - this.indicatorHeight;\n\n    this.sizeRatioY = this.maxPosY / this.scroller.maxScrollY;\n  } else {\n    var wrapperWidth = this.wrapper.clientWidth;\n    this.indicatorWidth = Math.max(Math.round(wrapperWidth * wrapperWidth / (this.scroller.scrollerWidth || wrapperWidth || 1)), INDICATOR_MIN_LEN);\n    this.indicatorStyle.width = this.indicatorWidth + 'px';\n\n    this.maxPosX = wrapperWidth - this.indicatorWidth;\n\n    this.sizeRatioX = this.maxPosX / this.scroller.maxScrollX;\n  }\n};\n\nIndicator.prototype._addDOMEvents = function () {\n  var eventOperation = addEvent;\n  this._handleDOMEvents(eventOperation);\n};\n\nIndicator.prototype._removeDOMEvents = function () {\n  var eventOperation = removeEvent;\n  this._handleDOMEvents(eventOperation);\n  this._handleMoveEvents(eventOperation);\n};\n\nIndicator.prototype._handleMoveEvents = function (eventOperation) {\n  if (!this.scroller.options.disableTouch) {\n    eventOperation(window, 'touchmove', this);\n  }\n  if (!this.scroller.options.disableMouse) {\n    eventOperation(window, 'mousemove', this);\n  }\n};\n\nIndicator.prototype._handleDOMEvents = function (eventOperation) {\n  if (!this.scroller.options.disableTouch) {\n    eventOperation(this.indicator, 'touchstart', this);\n    eventOperation(window, 'touchend', this);\n  }\n  if (!this.scroller.options.disableMouse) {\n    eventOperation(this.indicator, 'mousedown', this);\n    eventOperation(window, 'mouseup', this);\n  }\n};\n\nfunction pullDownMixin(BScroll) {\n  BScroll.prototype._initPullDown = function () {\n    // must watch scroll in real time\n    this.options.probeType = PROBE_REALTIME;\n  };\n\n  BScroll.prototype._checkPullDown = function () {\n    var _options$pullDownRefr = this.options.pullDownRefresh,\n        _options$pullDownRefr2 = _options$pullDownRefr.threshold,\n        threshold = _options$pullDownRefr2 === undefined ? 90 : _options$pullDownRefr2,\n        _options$pullDownRefr3 = _options$pullDownRefr.stop,\n        stop = _options$pullDownRefr3 === undefined ? 40 : _options$pullDownRefr3;\n\n    // check if a real pull down action\n\n    if (this.directionY !== DIRECTION_DOWN || this.y < threshold) {\n      return false;\n    }\n\n    if (!this.pulling) {\n      this.pulling = true;\n      this.trigger('pullingDown');\n    }\n    this.scrollTo(this.x, stop, this.options.bounceTime, ease.bounce);\n\n    return this.pulling;\n  };\n\n  BScroll.prototype.finishPullDown = function () {\n    this.pulling = false;\n    this.resetPosition(this.options.bounceTime, ease.bounce);\n  };\n\n  BScroll.prototype.openPullDown = function () {\n    var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n    this.options.pullDownRefresh = config;\n    this._initPullDown();\n  };\n\n  BScroll.prototype.closePullDown = function () {\n    this.options.pullDownRefresh = false;\n  };\n\n  BScroll.prototype.autoPullDownRefresh = function () {\n    var _options$pullDownRefr4 = this.options.pullDownRefresh,\n        _options$pullDownRefr5 = _options$pullDownRefr4.threshold,\n        threshold = _options$pullDownRefr5 === undefined ? 90 : _options$pullDownRefr5,\n        _options$pullDownRefr6 = _options$pullDownRefr4.stop,\n        stop = _options$pullDownRefr6 === undefined ? 40 : _options$pullDownRefr6;\n\n\n    if (this.pulling) {\n      return;\n    }\n    this.pulling = true;\n\n    this.scrollTo(this.x, threshold);\n    this.trigger('pullingDown');\n    this.scrollTo(this.x, stop, this.options.bounceTime, ease.bounce);\n  };\n}\n\nfunction pullUpMixin(BScroll) {\n  BScroll.prototype._initPullUp = function () {\n    // must watch scroll in real time\n    this.options.probeType = PROBE_REALTIME;\n\n    this.pullupWatching = false;\n    this._watchPullUp();\n  };\n\n  BScroll.prototype._watchPullUp = function () {\n    if (this.pullupWatching) {\n      return;\n    }\n    this.pullupWatching = true;\n    this.on('scroll', this._checkToEnd);\n  };\n\n  BScroll.prototype._checkToEnd = function (pos) {\n    var _this = this;\n\n    var _options$pullUpLoad$t = this.options.pullUpLoad.threshold,\n        threshold = _options$pullUpLoad$t === undefined ? 0 : _options$pullUpLoad$t;\n\n    if (this.movingDirectionY === DIRECTION_UP && pos.y <= this.maxScrollY + threshold) {\n      // reset pullupWatching status after scroll end.\n      this.once('scrollEnd', function () {\n        _this.pullupWatching = false;\n      });\n      this.trigger('pullingUp');\n      this.off('scroll', this._checkToEnd);\n    }\n  };\n\n  BScroll.prototype.finishPullUp = function () {\n    var _this2 = this;\n\n    if (this.pullupWatching) {\n      this.once('scrollEnd', function () {\n        _this2._watchPullUp();\n      });\n    } else {\n      this._watchPullUp();\n    }\n  };\n\n  BScroll.prototype.openPullUp = function () {\n    var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n    this.options.pullUpLoad = config;\n    this._initPullUp();\n  };\n\n  BScroll.prototype.closePullUp = function () {\n    this.options.pullUpLoad = false;\n    if (!this.pullupWatching) {\n      return;\n    }\n    this.pullupWatching = false;\n    this.off('scroll', this._checkToEnd);\n  };\n}\n\nfunction mouseWheelMixin(BScroll) {\n  BScroll.prototype._initMouseWheel = function () {\n    var _this = this;\n\n    this._handleMouseWheelEvent(addEvent);\n\n    this.on('destroy', function () {\n      clearTimeout(_this.mouseWheelTimer);\n      clearTimeout(_this.mouseWheelEndTimer);\n      _this._handleMouseWheelEvent(removeEvent);\n    });\n\n    this.firstWheelOpreation = true;\n  };\n\n  BScroll.prototype._handleMouseWheelEvent = function (eventOperation) {\n    eventOperation(this.wrapper, 'wheel', this);\n    eventOperation(this.wrapper, 'mousewheel', this);\n    eventOperation(this.wrapper, 'DOMMouseScroll', this);\n  };\n\n  BScroll.prototype._onMouseWheel = function (e) {\n    var _this2 = this;\n\n    if (!this.enabled) {\n      return;\n    }\n    e.preventDefault();\n\n    if (this.options.stopPropagation) {\n      e.stopPropagation();\n    }\n\n    if (this.firstWheelOpreation) {\n      this.trigger('scrollStart');\n    }\n    this.firstWheelOpreation = false;\n\n    var _options$mouseWheel = this.options.mouseWheel,\n        _options$mouseWheel$s = _options$mouseWheel.speed,\n        speed = _options$mouseWheel$s === undefined ? 20 : _options$mouseWheel$s,\n        _options$mouseWheel$i = _options$mouseWheel.invert,\n        invert = _options$mouseWheel$i === undefined ? false : _options$mouseWheel$i,\n        _options$mouseWheel$e = _options$mouseWheel.easeTime,\n        easeTime = _options$mouseWheel$e === undefined ? 300 : _options$mouseWheel$e;\n\n\n    clearTimeout(this.mouseWheelTimer);\n    this.mouseWheelTimer = setTimeout(function () {\n      if (!_this2.options.snap && !easeTime) {\n        _this2.trigger('scrollEnd', {\n          x: _this2.x,\n          y: _this2.y\n        });\n      }\n      _this2.firstWheelOpreation = true;\n    }, 400);\n\n    var wheelDeltaX = void 0;\n    var wheelDeltaY = void 0;\n\n    switch (true) {\n      case 'deltaX' in e:\n        if (e.deltaMode === 1) {\n          wheelDeltaX = -e.deltaX * speed;\n          wheelDeltaY = -e.deltaY * speed;\n        } else {\n          wheelDeltaX = -e.deltaX;\n          wheelDeltaY = -e.deltaY;\n        }\n        break;\n      case 'wheelDeltaX' in e:\n        wheelDeltaX = e.wheelDeltaX / 120 * speed;\n        wheelDeltaY = e.wheelDeltaY / 120 * speed;\n        break;\n      case 'wheelDelta' in e:\n        wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * speed;\n        break;\n      case 'detail' in e:\n        wheelDeltaX = wheelDeltaY = -e.detail / 3 * speed;\n        break;\n      default:\n        return;\n    }\n\n    var direction = invert ? -1 : 1;\n    wheelDeltaX *= direction;\n    wheelDeltaY *= direction;\n\n    if (!this.hasVerticalScroll) {\n      wheelDeltaX = wheelDeltaY;\n      wheelDeltaY = 0;\n    }\n\n    var newX = void 0;\n    var newY = void 0;\n    if (this.options.snap) {\n      newX = this.currentPage.pageX;\n      newY = this.currentPage.pageY;\n\n      if (wheelDeltaX > 0) {\n        newX--;\n      } else if (wheelDeltaX < 0) {\n        newX++;\n      }\n\n      if (wheelDeltaY > 0) {\n        newY--;\n      } else if (wheelDeltaY < 0) {\n        newY++;\n      }\n\n      this._goToPage(newX, newY);\n      return;\n    }\n\n    newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0);\n    newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0);\n\n    this.movingDirectionX = this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0;\n    this.movingDirectionY = this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0;\n\n    if (newX > this.minScrollX) {\n      newX = this.minScrollX;\n    } else if (newX < this.maxScrollX) {\n      newX = this.maxScrollX;\n    }\n\n    if (newY > this.minScrollY) {\n      newY = this.minScrollY;\n    } else if (newY < this.maxScrollY) {\n      newY = this.maxScrollY;\n    }\n\n    var needTriggerEnd = this.y === newY;\n    this.scrollTo(newX, newY, easeTime, ease.swipe);\n    this.trigger('scroll', {\n      x: this.x,\n      y: this.y\n    });\n    clearTimeout(this.mouseWheelEndTimer);\n    if (needTriggerEnd) {\n      this.mouseWheelEndTimer = setTimeout(function () {\n        _this2.trigger('scrollEnd', {\n          x: _this2.x,\n          y: _this2.y\n        });\n      }, easeTime);\n    }\n  };\n}\n\nfunction zoomMixin(BScroll) {\n  BScroll.prototype._initZoom = function () {\n    var _options$zoom = this.options.zoom,\n        _options$zoom$start = _options$zoom.start,\n        start = _options$zoom$start === undefined ? 1 : _options$zoom$start,\n        _options$zoom$min = _options$zoom.min,\n        min = _options$zoom$min === undefined ? 1 : _options$zoom$min,\n        _options$zoom$max = _options$zoom.max,\n        max = _options$zoom$max === undefined ? 4 : _options$zoom$max;\n\n    this.scale = Math.min(Math.max(start, min), max);\n    this.setScale(this.scale);\n    this.scrollerStyle[style.transformOrigin] = '0 0';\n  };\n\n  BScroll.prototype._zoomTo = function (scale, originX, originY, startScale) {\n    this.scaled = true;\n\n    var lastScale = scale / (startScale || this.scale);\n    this.setScale(scale);\n\n    this.refresh();\n\n    var newX = Math.round(this.startX - (originX - this.relativeX) * (lastScale - 1));\n    var newY = Math.round(this.startY - (originY - this.relativeY) * (lastScale - 1));\n\n    if (newX > this.minScrollX) {\n      newX = this.minScrollX;\n    } else if (newX < this.maxScrollX) {\n      newX = this.maxScrollX;\n    }\n\n    if (newY > this.minScrollY) {\n      newY = this.minScrollY;\n    } else if (newY < this.maxScrollY) {\n      newY = this.maxScrollY;\n    }\n\n    if (this.x !== newX || this.y !== newY) {\n      this.scrollTo(newX, newY, this.options.bounceTime);\n    }\n\n    this.scaled = false;\n  };\n\n  BScroll.prototype.zoomTo = function (scale, x, y) {\n    var _offsetToBody = offsetToBody(this.wrapper),\n        left = _offsetToBody.left,\n        top = _offsetToBody.top;\n\n    var originX = x + left - this.x;\n    var originY = y + top - this.y;\n    this._zoomTo(scale, originX, originY);\n  };\n\n  BScroll.prototype._zoomStart = function (e) {\n    var firstFinger = e.touches[0];\n    var secondFinger = e.touches[1];\n    var deltaX = Math.abs(firstFinger.pageX - secondFinger.pageX);\n    var deltaY = Math.abs(firstFinger.pageY - secondFinger.pageY);\n\n    this.startDistance = getDistance(deltaX, deltaY);\n    this.startScale = this.scale;\n\n    var _offsetToBody2 = offsetToBody(this.wrapper),\n        left = _offsetToBody2.left,\n        top = _offsetToBody2.top;\n\n    this.originX = Math.abs(firstFinger.pageX + secondFinger.pageX) / 2 + left - this.x;\n    this.originY = Math.abs(firstFinger.pageY + secondFinger.pageY) / 2 + top - this.y;\n\n    this.trigger('zoomStart');\n  };\n\n  BScroll.prototype._zoom = function (e) {\n    if (!this.enabled || this.destroyed || eventType[e.type] !== this.initiated) {\n      return;\n    }\n\n    if (this.options.preventDefault) {\n      e.preventDefault();\n    }\n\n    if (this.options.stopPropagation) {\n      e.stopPropagation();\n    }\n\n    var firstFinger = e.touches[0];\n    var secondFinger = e.touches[1];\n    var deltaX = Math.abs(firstFinger.pageX - secondFinger.pageX);\n    var deltaY = Math.abs(firstFinger.pageY - secondFinger.pageY);\n    var distance = getDistance(deltaX, deltaY);\n    var scale = distance / this.startDistance * this.startScale;\n\n    this.scaled = true;\n\n    var _options$zoom2 = this.options.zoom,\n        _options$zoom2$min = _options$zoom2.min,\n        min = _options$zoom2$min === undefined ? 1 : _options$zoom2$min,\n        _options$zoom2$max = _options$zoom2.max,\n        max = _options$zoom2$max === undefined ? 4 : _options$zoom2$max;\n\n\n    if (scale < min) {\n      scale = 0.5 * min * Math.pow(2.0, scale / min);\n    } else if (scale > max) {\n      scale = 2.0 * max * Math.pow(0.5, max / scale);\n    }\n\n    var lastScale = scale / this.startScale;\n\n    var x = this.startX - (this.originX - this.relativeX) * (lastScale - 1);\n    var y = this.startY - (this.originY - this.relativeY) * (lastScale - 1);\n\n    this.setScale(scale);\n\n    this.scrollTo(x, y, 0);\n  };\n\n  BScroll.prototype._zoomEnd = function (e) {\n    if (!this.enabled || this.destroyed || eventType[e.type] !== this.initiated) {\n      return;\n    }\n\n    if (this.options.preventDefault) {\n      e.preventDefault();\n    }\n\n    if (this.options.stopPropagation) {\n      e.stopPropagation();\n    }\n\n    this.isInTransition = false;\n    this.isAnimating = false;\n    this.initiated = 0;\n\n    var _options$zoom3 = this.options.zoom,\n        _options$zoom3$min = _options$zoom3.min,\n        min = _options$zoom3$min === undefined ? 1 : _options$zoom3$min,\n        _options$zoom3$max = _options$zoom3.max,\n        max = _options$zoom3$max === undefined ? 4 : _options$zoom3$max;\n\n\n    var scale = this.scale > max ? max : this.scale < min ? min : this.scale;\n\n    this._zoomTo(scale, this.originX, this.originY, this.startScale);\n\n    this.trigger('zoomEnd');\n  };\n}\n\n// import { ease } from '../util/ease'\n\n// Number of items to instantiate beyond current view in the scroll direction.\nvar RUNWAY_ITEMS = 30;\n\n// Number of items to instantiate beyond current view in the opposite direction.\nvar RUNWAY_ITEMS_OPPOSITE = 10;\n\n// The animation interval (in ms) for fading in content from tombstones.\nvar ANIMATION_DURATION_MS = 200;\n\n// The number of pixels of default additional length to allow scrolling to.\nvar DEFAULT_SCROLL_RUNWAY = 2000;\n\nfunction infiniteMixin(BScroll) {\n  BScroll.prototype._initInfinite = function () {\n    this.options.probeType = 3;\n    this.maxScrollY = -DEFAULT_SCROLL_RUNWAY;\n    this.infiniteScroller = new InfiniteScroller(this, this.options.infinity);\n  };\n}\n\nfunction isTombstoneNode(node) {\n  if (node && node.classList) {\n    return node.classList.contains('tombstone');\n  }\n}\n\nfunction InfiniteScroller(scroller, options) {\n  var _this = this;\n\n  this.options = options;\n  assert(typeof this.options.createTombstone === 'function', 'Infinite scroll need createTombstone Function to create tombstone');\n\n  assert(typeof this.options.fetch === 'function', 'Infinite scroll need fetch Function to fetch new data.');\n\n  assert(typeof this.options.render === 'function', 'Infinite scroll need render Function to render each item.');\n\n  this.firstAttachedItem = 0;\n  this.lastAttachedItem = 0;\n\n  this.anchorScrollTop = 0;\n  this.anchorItem = {\n    index: 0,\n    offset: 0\n  };\n  this.tombstoneHeight = 0;\n  this.tombstoneWidth = 0;\n  this.tombstones = [];\n  this.tombstonesAnimationHandlers = [];\n\n  this.items = [];\n  this.loadedItems = 0;\n  this.requestInProgress = false;\n  this.hasMore = true;\n\n  this.scroller = scroller;\n  this.wrapperEl = this.scroller.wrapper;\n  this.scrollerEl = this.scroller.scroller;\n\n  this.scroller.on('resize', function () {\n    _this.onResize();\n  });\n  this.scroller.on('destroy', function () {\n    _this.destroy();\n  });\n\n  // wait scroll core init\n  this._onResizeHandler = setTimeout(function () {\n    _this.onResize();\n\n    // must wait tombstoneHeight has size\n    _this.scroller.on('scroll', function () {\n      _this.onScroll();\n    });\n  });\n}\n\nInfiniteScroller.prototype.destroy = function () {\n  var _this2 = this;\n\n  // In extreme scene, destroy is triggered before _onResizeHandler\n  clearTimeout(this._onResizeHandler);\n  this.tombstonesAnimationHandlers.forEach(function (handler) {\n    clearTimeout(handler);\n  });\n  this.tombstonesAnimationHandlers = null;\n  this.items.forEach(function (item) {\n    if (item.node) {\n      _this2.scrollerEl.removeChild(item.node);\n      item.node = null;\n    }\n  });\n  this.scroller.infiniteScroller = null;\n  this.scroller = null;\n  this.wrapperEl = null;\n  this.scrollerEl = null;\n  this.items = null;\n  this.tombstones = null;\n};\n\nInfiniteScroller.prototype.onScroll = function () {\n  var scrollTop = -this.scroller.y;\n  var delta = scrollTop - this.anchorScrollTop;\n  if (scrollTop === 0) {\n    this.anchorItem = {\n      index: 0,\n      offset: 0\n    };\n  } else {\n    this.anchorItem = this._calculateAnchoredItem(this.anchorItem, delta);\n  }\n\n  this.anchorScrollTop = scrollTop;\n  var lastScreenItem = this._calculateAnchoredItem(this.anchorItem, this.scroller.wrapperHeight);\n\n  var start = this.anchorItem.index;\n  var end = lastScreenItem.index;\n  if (delta < 0) {\n    start -= RUNWAY_ITEMS;\n    end += RUNWAY_ITEMS_OPPOSITE;\n  } else {\n    start -= RUNWAY_ITEMS_OPPOSITE;\n    end += RUNWAY_ITEMS;\n  }\n  this.fill(start, end);\n  this.maybeRequestContent();\n};\n\nInfiniteScroller.prototype.onResize = function () {\n  var tombstone = this.options.createTombstone();\n  tombstone.style.position = 'absolute';\n  this.scrollerEl.appendChild(tombstone);\n  tombstone.style.display = '';\n  this.tombstoneHeight = tombstone.offsetHeight;\n  this.tombstoneWidth = tombstone.offsetWidth;\n  this.scrollerEl.removeChild(tombstone);\n\n  for (var i = 0; i < this.items.length; i++) {\n    this.items[i].height = this.items[i].width = 0;\n  }\n\n  this.onScroll();\n};\n\nInfiniteScroller.prototype.fill = function (start, end) {\n  this.firstAttachedItem = Math.max(0, start);\n  if (!this.hasMore) {\n    end = Math.min(end, this.items.length);\n  }\n  this.lastAttachedItem = end;\n  this.attachContent();\n};\n\nInfiniteScroller.prototype.maybeRequestContent = function () {\n  var _this3 = this;\n\n  if (this.requestInProgress || !this.hasMore) {\n    return;\n  }\n  var itemsNeeded = this.lastAttachedItem - this.loadedItems;\n  if (itemsNeeded <= 0) {\n    return;\n  }\n  this.requestInProgress = true;\n  this.options.fetch(itemsNeeded).then(function (items) {\n    _this3.requestInProgress = false;\n    if (items) {\n      _this3.addContent(items);\n    } else {\n      _this3.hasMore = false;\n      var tombstoneLen = _this3._removeTombstones();\n      var curPos = 0;\n      if (_this3.anchorItem.index <= _this3.items.length) {\n        curPos = _this3._fixScrollPosition();\n        _this3._setupAnimations({}, curPos);\n        _this3.scroller.resetPosition(_this3.scroller.options.bounceTime);\n      } else {\n        _this3.anchorItem.index -= tombstoneLen;\n        curPos = _this3._fixScrollPosition();\n        _this3._setupAnimations({}, curPos);\n        _this3.scroller.stop();\n        _this3.scroller.resetPosition();\n        _this3.onScroll();\n      }\n    }\n  });\n};\n\nInfiniteScroller.prototype.addContent = function (items) {\n  for (var i = 0; i < items.length; i++) {\n    if (this.items.length <= this.loadedItems) {\n      this._addItem();\n    }\n    this.items[this.loadedItems++].data = items[i];\n  }\n  this.attachContent();\n  this.maybeRequestContent();\n};\n\nInfiniteScroller.prototype.attachContent = function () {\n  var unusedNodes = this._collectUnusedNodes();\n  var tombstoneAnimations = this._createDOMNodes(unusedNodes);\n  this._cleanupUnusedNodes(unusedNodes);\n  this._cacheNodeSize();\n  var curPos = this._fixScrollPosition();\n  this._setupAnimations(tombstoneAnimations, curPos);\n};\n\nInfiniteScroller.prototype.resetMore = function () {\n  this.hasMore = true;\n};\n\nInfiniteScroller.prototype._removeTombstones = function () {\n  var markIndex = void 0;\n  var tombstoneLen = 0;\n  var itemLen = this.items.length;\n  for (var i = 0; i < itemLen; i++) {\n    var currentNode = this.items[i].node;\n    var currentData = this.items[i].data;\n    if ((!currentNode || isTombstoneNode(currentNode)) && !currentData) {\n      // 0 should be excluded\n      if (markIndex === void 0) {\n        markIndex = i;\n      }\n      if (currentNode) {\n        this.scrollerEl.removeChild(currentNode);\n      }\n    }\n  }\n  tombstoneLen = itemLen - markIndex;\n  this.items.splice(markIndex);\n  this.lastAttachedItem = Math.min(this.lastAttachedItem, this.items.length);\n  return tombstoneLen;\n};\n\nInfiniteScroller.prototype._collectUnusedNodes = function () {\n  var unusedNodes = [];\n  for (var i = 0; i < this.items.length; i++) {\n    // Skip the items which should be visible.\n    if (i === this.firstAttachedItem) {\n      i = this.lastAttachedItem - 1;\n      continue;\n    }\n    var currentNode = this.items[i].node;\n    if (currentNode) {\n      if (isTombstoneNode(currentNode)) {\n        // Cache tombstones for reuse\n        this.tombstones.push(currentNode);\n        this.tombstones[this.tombstones.length - 1].style.display = 'none';\n      } else {\n        unusedNodes.push(currentNode);\n      }\n    }\n    this.items[i].node = null;\n  }\n  return unusedNodes;\n};\n\nInfiniteScroller.prototype._createDOMNodes = function (unusedNodes) {\n  var tombstoneAnimations = {};\n  for (var i = this.firstAttachedItem; i < this.lastAttachedItem; i++) {\n    while (this.items.length <= i) {\n      this._addItem();\n    }\n    var currentNode = this.items[i].node;\n    var currentData = this.items[i].data;\n    if (currentNode) {\n      if (isTombstoneNode(currentNode) && currentData) {\n        currentNode.style.zIndex = 1;\n        tombstoneAnimations[i] = [currentNode, this.items[i].top - this.anchorScrollTop];\n        this.items[i].node = null;\n      } else {\n        continue;\n      }\n    }\n    var node = currentData ? this.options.render(currentData, unusedNodes.pop()) : this._getTombStone();\n    node.style.position = 'absolute';\n    this.items[i].top = -1;\n    this.scrollerEl.appendChild(node);\n    this.items[i].node = node;\n  }\n  return tombstoneAnimations;\n};\n\nInfiniteScroller.prototype._cleanupUnusedNodes = function (unusedNodes) {\n  while (unusedNodes.length) {\n    this.scrollerEl.removeChild(unusedNodes.pop());\n  }\n};\n\nInfiniteScroller.prototype._cacheNodeSize = function () {\n  for (var i = this.firstAttachedItem; i < this.lastAttachedItem; i++) {\n    var item = this.items[i];\n    // Only cache the height if we have the real contents, not a placeholder.\n    if (item.data && !item.height) {\n      var isTombstone = isTombstoneNode(item.node);\n      item.height = isTombstone ? this.tombstoneHeight : item.node.offsetHeight;\n      item.width = isTombstone ? this.tombstoneWidth : item.node.offsetWidth;\n    }\n  }\n};\n\nInfiniteScroller.prototype._fixScrollPosition = function () {\n  this.anchorScrollTop = 0;\n  for (var _i = 0; _i < this.anchorItem.index; _i++) {\n    this.anchorScrollTop += this.items[_i].height || this.tombstoneHeight;\n  }\n  this.anchorScrollTop += this.anchorItem.offset;\n\n  // Position all nodes.\n  var curPos = this.anchorScrollTop - this.anchorItem.offset;\n  var i = this.anchorItem.index;\n  while (i > this.firstAttachedItem) {\n    curPos -= this.items[i - 1].height || this.tombstoneHeight;\n    i--;\n  }\n\n  return curPos;\n};\n\nInfiniteScroller.prototype._setupAnimations = function (tombstoneAnimations, curPos) {\n  var _this4 = this;\n\n  for (var i in tombstoneAnimations) {\n    var animation = tombstoneAnimations[i];\n    this.items[i].node.style[style.transform] = 'translateY(' + (this.anchorScrollTop + animation[1]) + 'px) scale(' + this.tombstoneWidth / this.items[i].width + ', ' + this.tombstoneHeight / this.items[i].height + ')';\n    // Call offsetTop on the nodes to be animated to force them to apply current transforms.\n    /* eslint-disable no-unused-expressions */\n    this.items[i].node.offsetTop;\n    animation[0].offsetTop;\n    this.items[i].node.style[style.transition] = cssVendor + 'transform ' + ANIMATION_DURATION_MS + 'ms';\n  }\n\n  for (var _i2 = this.firstAttachedItem; _i2 < this.lastAttachedItem; _i2++) {\n    var _animation = tombstoneAnimations[_i2];\n    if (_animation) {\n      var tombstoneNode = _animation[0];\n      tombstoneNode.style[style.transition] = cssVendor + 'transform ' + ANIMATION_DURATION_MS + 'ms, opacity ' + ANIMATION_DURATION_MS + 'ms';\n      tombstoneNode.style[style.transform] = 'translateY(' + curPos + 'px) scale(' + this.items[_i2].width / this.tombstoneWidth + ', ' + this.items[_i2].height / this.tombstoneHeight + ')';\n      tombstoneNode.style.opacity = 0;\n    }\n    if (curPos !== this.items[_i2].top) {\n      if (!_animation) {\n        this.items[_i2].node.style[style.transition] = '';\n      }\n      this.items[_i2].node.style[style.transform] = 'translateY(' + curPos + 'px)';\n    }\n    this.items[_i2].top = curPos;\n    curPos += this.items[_i2].height || this.tombstoneHeight;\n  }\n\n  this.scroller.maxScrollY = -(curPos - this.scroller.wrapperHeight + (this.hasMore ? DEFAULT_SCROLL_RUNWAY : 0));\n\n  var tombstoneAnimationsHandler = setTimeout(function () {\n    for (var _i3 in tombstoneAnimations) {\n      var _animation2 = tombstoneAnimations[_i3];\n      _animation2[0].style.display = 'none';\n      // Tombstone can be recycled now.\n      _this4.tombstones.push(_animation2[0]);\n    }\n  }, ANIMATION_DURATION_MS);\n\n  this.tombstonesAnimationHandlers.push(tombstoneAnimationsHandler);\n};\n\nInfiniteScroller.prototype._getTombStone = function () {\n  var tombstone = this.tombstones.pop();\n  if (tombstone) {\n    tombstone.style.display = '';\n    tombstone.style.opacity = 1;\n    tombstone.style[style.transform] = '';\n    tombstone.style[style.transition] = '';\n    return tombstone;\n  }\n  return this.options.createTombstone();\n};\n\nInfiniteScroller.prototype._addItem = function () {\n  this.items.push({\n    data: null,\n    node: null,\n    height: 0,\n    width: 0,\n    top: 0\n  });\n};\n\nInfiniteScroller.prototype._calculateAnchoredItem = function (initialAnchor, delta) {\n  if (delta === 0) {\n    return initialAnchor;\n  }\n  var i = initialAnchor.index;\n  var tombstones = 0;\n\n  delta += initialAnchor.offset;\n  if (delta < 0) {\n    while (delta < 0 && i > 0 && this.items[i - 1].height) {\n      delta += this.items[i - 1].height;\n      i--;\n    }\n    tombstones = Math.max(-i, Math.ceil(Math.min(delta, 0) / this.tombstoneHeight));\n  } else {\n    while (delta > 0 && i < this.items.length && this.items[i].height && this.items[i].height < delta) {\n      delta -= this.items[i].height;\n      i++;\n    }\n    if (i >= this.items.length || !this.items[i].height) {\n      tombstones = Math.floor(Math.max(delta, 0) / this.tombstoneHeight);\n    }\n  }\n  i += tombstones;\n  delta -= tombstones * this.tombstoneHeight;\n\n  return {\n    index: i,\n    offset: delta\n  };\n};\n\nfunction BScroll(el, options) {\n  this.wrapper = typeof el === 'string' ? document.querySelector(el) : el;\n  if (!this.wrapper) {\n    warn('Can not resolve the wrapper DOM.');\n  }\n  this.scroller = this.wrapper.children[0];\n  if (!this.scroller) {\n    warn('The wrapper need at least one child element to be scroller.');\n  }\n  // cache style for better performance\n  this.scrollerStyle = this.scroller.style;\n\n  this._init(options);\n}\n\ninitMixin(BScroll);\ncoreMixin(BScroll);\neventMixin(BScroll);\nsnapMixin(BScroll);\nwheelMixin(BScroll);\nscrollbarMixin(BScroll);\npullDownMixin(BScroll);\npullUpMixin(BScroll);\nmouseWheelMixin(BScroll);\nzoomMixin(BScroll);\ninfiniteMixin(BScroll);\n\nBScroll.Version = '1.15.2';\n\nexport default BScroll;\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nfunction __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\n\n/**\r\n * 兼容 SSR、react native、worker 等非浏览器场景\r\n */\r\nvar commonGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\r\n(function () {\r\n    if (typeof commonGlobal.window === 'undefined') {\r\n        console.log('weblogger is running in non-browser env');\r\n        commonGlobal.window = {\r\n            addEventListener: function () { },\r\n            removeEventListener: function () { },\r\n            setTimeout: function () { },\r\n            setInterval: function () { },\r\n            _WEBLOGGER_MOCKED_WINDOW_: true,\r\n            global: commonGlobal\r\n        };\r\n    }\r\n    if (typeof commonGlobal.document === 'undefined') {\r\n        commonGlobal.document = commonGlobal.window.document || {\r\n            cookie: '',\r\n            addEventListener: function () { },\r\n            removeEventListener: function () { },\r\n            querySelector: function () { },\r\n            querySelectorAll: function () { },\r\n        };\r\n        if (typeof commonGlobal.window.document === 'undefined') {\r\n            commonGlobal.window.document = commonGlobal.document;\r\n        }\r\n    }\r\n    if (typeof commonGlobal.navigator === 'undefined') {\r\n        commonGlobal.navigator = commonGlobal.window.navigator || {\r\n            userAgent: ''\r\n        };\r\n        if (typeof commonGlobal.window.navigator === 'undefined') {\r\n            commonGlobal.window.navigator = commonGlobal.navigator;\r\n        }\r\n    }\r\n    if (typeof commonGlobal.screen === 'undefined') {\r\n        commonGlobal.screen = commonGlobal.window.screen || {};\r\n        if (typeof commonGlobal.window.screen === 'undefined') {\r\n            commonGlobal.window.screen = commonGlobal.screen;\r\n        }\r\n    }\r\n    if (typeof commonGlobal.history === 'undefined') {\r\n        commonGlobal.history = commonGlobal.window.history || {};\r\n        if (typeof commonGlobal.window.history === 'undefined') {\r\n            commonGlobal.window.history = commonGlobal.history;\r\n        }\r\n    }\r\n    if (typeof commonGlobal.location === 'undefined') {\r\n        commonGlobal.location = commonGlobal.window.location || {\r\n            hostname: '',\r\n            search: '',\r\n            href: '',\r\n            origin: ''\r\n        };\r\n        if (typeof commonGlobal.window.location === 'undefined') {\r\n            commonGlobal.window.location = commonGlobal.location;\r\n        }\r\n    }\r\n    try {\r\n        if (typeof commonGlobal.localStorage === 'undefined') {\r\n            commonGlobal.localStorage = commonGlobal.window.localStorage || {\r\n                getItem: function () { },\r\n                setItem: function () { }\r\n            };\r\n            if (typeof commonGlobal.window.localStorage === 'undefined') {\r\n                commonGlobal.window.localStorage = commonGlobal.localStorage;\r\n            }\r\n        }\r\n    }\r\n    catch (err) { }\r\n})();\n\n/**\r\n * Object.defineProperty 容错暂时处理\r\n */\r\nif (!Object.defineProperty) {\r\n    Object.defineProperty = function (target, key, descriptor) {\r\n        target[key] = Object.prototype.toString.call(descriptor) === '[object Object]'\r\n            && descriptor.hasOwnProperty('value')\r\n            ? descriptor.value\r\n            : descriptor;\r\n    };\r\n}\r\n/**\r\n * Object.assign polyfill\r\n */\r\nif (!Object.assign) {\r\n    // Must be writable: true, enumerable: false, configurable: true\r\n    Object.defineProperty(Object, 'assign', {\r\n        value: function (target) {\r\n            if (target === null) { // TypeError if undefined or null\r\n                throw new TypeError('Cannot convert undefined or null to object');\r\n            }\r\n            var to = Object(target);\r\n            for (var index = 1; index < arguments.length; index++) {\r\n                var nextSource = arguments[index];\r\n                if (nextSource !== null) { // Skip over if undefined or null\r\n                    for (var nextKey in nextSource) {\r\n                        // Avoid bugs when hasOwnProperty is shadowed\r\n                        if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n                            to[nextKey] = nextSource[nextKey];\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return to;\r\n        },\r\n        writable: true,\r\n        configurable: true,\r\n    });\r\n}\r\n/**\r\n * bind polyfill\r\n */\r\nif (!Function.prototype.bind) {\r\n    Function.prototype.bind = function (oThis) {\r\n        if (typeof this !== 'function') {\r\n            // closest thing possible to the ECMAScript 5\r\n            // internal IsCallable function\r\n            throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\r\n        }\r\n        var aArgs = Array.prototype.slice.call(arguments, 1);\r\n        /* tslint:disable no-this-assignment */\r\n        var fToBind = this;\r\n        /* tslint:enable */\r\n        var FNOP = /** @class */ (function () {\r\n            function FNOP() {\r\n            }\r\n            return FNOP;\r\n        }());\r\n        var fBound = function () {\r\n            var currentThis = this instanceof FNOP\r\n                ? this\r\n                : oThis;\r\n            // this instanceof FNOP === true时,说明返回的fBound被当做new的构造函数调用\r\n            return fToBind.apply(currentThis, \r\n            // 获取调用时(fBound)的传参.bind 返回的函数入参往往是这么传递的\r\n            aArgs.concat(Array.prototype.slice.call(arguments)));\r\n        };\r\n        // 维护原型关系\r\n        if (this.prototype) {\r\n            // Function.prototype doesn't have a prototype property\r\n            FNOP.prototype = this.prototype;\r\n        }\r\n        // 下行的代码使fBound.prototype是FNOP的实例,因此\r\n        // 返回的fBound若作为new的构造函数,new生成的新对象作为this传入fBound,新对象的__proto__就是FNOP的实例\r\n        fBound.prototype = new FNOP();\r\n        return fBound;\r\n    };\r\n}\r\n/**\r\n * indexOf polyfill\r\n */\r\n// Production steps of ECMA-262, Edition 5, 15.4.4.14\r\n// Reference: http://es5.github.io/#x15.4.4.14\r\nif (!Array.prototype.indexOf) {\r\n    Array.prototype.indexOf = function (searchElement, fromIndex) {\r\n        var k;\r\n        // 1. Let O be the result of calling ToObject passing\r\n        //    the this value as the argument.\r\n        if (this == null) {\r\n            throw new TypeError('\"this\" is null or not defined');\r\n        }\r\n        var O = Object(this);\r\n        // 2. Let lenValue be the result of calling the Get\r\n        //    internal method of O with the argument \"length\".\r\n        // 3. Let len be ToUint32(lenValue).\r\n        var len = O.length >>> 0;\r\n        // 4. If len is 0, return -1.\r\n        if (len === 0) {\r\n            return -1;\r\n        }\r\n        // 5. If argument fromIndex was passed let n be\r\n        //    ToInteger(fromIndex); else let n be 0.\r\n        var n = +fromIndex || 0;\r\n        if (Math.abs(n) === Infinity) {\r\n            n = 0;\r\n        }\r\n        // 6. If n >= len, return -1.\r\n        if (n >= len) {\r\n            return -1;\r\n        }\r\n        // 7. If n >= 0, then Let k be n.\r\n        // 8. Else, n<0, Let k be len - abs(n).\r\n        //    If k is less than 0, then let k be 0.\r\n        k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\r\n        // 9. Repeat, while k < len\r\n        while (k < len) {\r\n            // a. Let Pk be ToString(k).\r\n            //   This is implicit for LHS operands of the in operator\r\n            // b. Let kPresent be the result of calling the\r\n            //    HasProperty internal method of O with argument Pk.\r\n            //   This step can be combined with c\r\n            // c. If kPresent is true, then\r\n            //    i.  Let elementK be the result of calling the Get\r\n            //        internal method of O with the argument ToString(k).\r\n            //   ii.  Let same be the result of applying the\r\n            //        Strict Equality Comparison Algorithm to\r\n            //        searchElement and elementK.\r\n            //  iii.  If same is true, return k.\r\n            if (k in O && O[k] === searchElement) {\r\n                return k;\r\n            }\r\n            k++;\r\n        }\r\n        return -1;\r\n    };\r\n}\r\nif (!Object.keys) {\r\n    Object.keys = (function () {\r\n        var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n        var hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');\r\n        var dontEnums = [\r\n            'toString',\r\n            'toLocaleString',\r\n            'valueOf',\r\n            'hasOwnProperty',\r\n            'isPrototypeOf',\r\n            'propertyIsEnumerable',\r\n            'constructor',\r\n        ];\r\n        return function (obj) {\r\n            if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) {\r\n                throw new TypeError('Object.keys called on non-object');\r\n            }\r\n            var result = [];\r\n            for (var prop in obj) {\r\n                if (hasOwnProperty.call(obj, prop))\r\n                    result.push(prop);\r\n            }\r\n            if (hasDontEnumBug) {\r\n                for (var _i = 0, dontEnums_1 = dontEnums; _i < dontEnums_1.length; _i++) {\r\n                    var key = dontEnums_1[_i];\r\n                    if (hasOwnProperty.call(obj, key)) {\r\n                        result.push(key);\r\n                    }\r\n                }\r\n            }\r\n            return result;\r\n        };\r\n    })();\r\n}\r\n// Production steps of ECMA-262, Edition 5, 15.4.4.18\r\n// Reference: http://es5.github.io/#x15.4.4.18\r\nif (!Array.prototype.forEach) {\r\n    Array.prototype.forEach = function (callback, thisArg) {\r\n        var T;\r\n        var k;\r\n        if (this == null) {\r\n            throw new TypeError(' this is null or not defined');\r\n        }\r\n        // 1. Let O be the result of calling toObject() passing the\r\n        // |this| value as the argument.\r\n        var O = Object(this);\r\n        // 2. Let lenValue be the result of calling the Get() internal\r\n        // method of O with the argument \"length\".\r\n        // 3. Let len be toUint32(lenValue).\r\n        var len = O.length >>> 0;\r\n        // 4. If isCallable(callback) is false, throw a TypeError exception.\r\n        // See: http://es5.github.com/#x9.11\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError(callback + ' is not a function');\r\n        }\r\n        // 5. If thisArg was supplied, let T be thisArg; else let\r\n        // T be undefined.\r\n        if (arguments.length > 1) {\r\n            T = thisArg;\r\n        }\r\n        // 6. Let k be 0\r\n        k = 0;\r\n        // 7. Repeat, while k < len\r\n        while (k < len) {\r\n            var kValue = void 0;\r\n            // a. Let Pk be ToString(k).\r\n            //    This is implicit for LHS operands of the in operator\r\n            // b. Let kPresent be the result of calling the HasProperty\r\n            //    internal method of O with argument Pk.\r\n            //    This step can be combined with c\r\n            // c. If kPresent is true, then\r\n            if (k in O) {\r\n                // i. Let kValue be the result of calling the Get internal\r\n                // method of O with argument Pk.\r\n                kValue = O[k];\r\n                // ii. Call the Call internal method of callback with T as\r\n                // the this value and argument list containing kValue, k, and O.\r\n                callback.call(T, kValue, k, O);\r\n            }\r\n            // d. Increase k by 1.\r\n            k++;\r\n        }\r\n        // 8. return undefined\r\n    };\r\n}\r\n/**\r\n *\r\n * findindex pollify\r\n */\r\nif (!Array.prototype.findIndex) {\r\n    Array.prototype.findIndex = function (predicate) {\r\n        if (this === null) {\r\n            throw new TypeError('Array.prototype.findIndex called on null or undefined');\r\n        }\r\n        if (typeof predicate !== 'function') {\r\n            throw new TypeError('predicate must be a function');\r\n        }\r\n        var list = Object(this);\r\n        var length = list.length >>> 0;\r\n        var thisArg = arguments[1];\r\n        var value;\r\n        for (var i = 0; i < length; i++) {\r\n            value = list[i];\r\n            if (predicate.call(thisArg, value, i, list)) {\r\n                return i;\r\n            }\r\n        }\r\n        return -1;\r\n    };\r\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar md5 = createCommonjsModule(function (module) {\n(function ($) {\n\n  /**\n   * Add integers, wrapping at 2^32.\n   * This uses 16-bit operations internally to work around bugs in interpreters.\n   *\n   * @param {number} x First integer\n   * @param {number} y Second integer\n   * @returns {number} Sum\n   */\n  function safeAdd(x, y) {\n    var lsw = (x & 0xffff) + (y & 0xffff);\n    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n    return (msw << 16) | (lsw & 0xffff)\n  }\n\n  /**\n   * Bitwise rotate a 32-bit number to the left.\n   *\n   * @param {number} num 32-bit number\n   * @param {number} cnt Rotation count\n   * @returns {number} Rotated number\n   */\n  function bitRotateLeft(num, cnt) {\n    return (num << cnt) | (num >>> (32 - cnt))\n  }\n\n  /**\n   * Basic operation the algorithm uses.\n   *\n   * @param {number} q q\n   * @param {number} a a\n   * @param {number} b b\n   * @param {number} x x\n   * @param {number} s s\n   * @param {number} t t\n   * @returns {number} Result\n   */\n  function md5cmn(q, a, b, x, s, t) {\n    return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)\n  }\n  /**\n   * Basic operation the algorithm uses.\n   *\n   * @param {number} a a\n   * @param {number} b b\n   * @param {number} c c\n   * @param {number} d d\n   * @param {number} x x\n   * @param {number} s s\n   * @param {number} t t\n   * @returns {number} Result\n   */\n  function md5ff(a, b, c, d, x, s, t) {\n    return md5cmn((b & c) | (~b & d), a, b, x, s, t)\n  }\n  /**\n   * Basic operation the algorithm uses.\n   *\n   * @param {number} a a\n   * @param {number} b b\n   * @param {number} c c\n   * @param {number} d d\n   * @param {number} x x\n   * @param {number} s s\n   * @param {number} t t\n   * @returns {number} Result\n   */\n  function md5gg(a, b, c, d, x, s, t) {\n    return md5cmn((b & d) | (c & ~d), a, b, x, s, t)\n  }\n  /**\n   * Basic operation the algorithm uses.\n   *\n   * @param {number} a a\n   * @param {number} b b\n   * @param {number} c c\n   * @param {number} d d\n   * @param {number} x x\n   * @param {number} s s\n   * @param {number} t t\n   * @returns {number} Result\n   */\n  function md5hh(a, b, c, d, x, s, t) {\n    return md5cmn(b ^ c ^ d, a, b, x, s, t)\n  }\n  /**\n   * Basic operation the algorithm uses.\n   *\n   * @param {number} a a\n   * @param {number} b b\n   * @param {number} c c\n   * @param {number} d d\n   * @param {number} x x\n   * @param {number} s s\n   * @param {number} t t\n   * @returns {number} Result\n   */\n  function md5ii(a, b, c, d, x, s, t) {\n    return md5cmn(c ^ (b | ~d), a, b, x, s, t)\n  }\n\n  /**\n   * Calculate the MD5 of an array of little-endian words, and a bit length.\n   *\n   * @param {Array} x Array of little-endian words\n   * @param {number} len Bit length\n   * @returns {Array<number>} MD5 Array\n   */\n  function binlMD5(x, len) {\n    /* append padding */\n    x[len >> 5] |= 0x80 << len % 32;\n    x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n    var i;\n    var olda;\n    var oldb;\n    var oldc;\n    var oldd;\n    var a = 1732584193;\n    var b = -271733879;\n    var c = -1732584194;\n    var d = 271733878;\n\n    for (i = 0; i < x.length; i += 16) {\n      olda = a;\n      oldb = b;\n      oldc = c;\n      oldd = d;\n\n      a = md5ff(a, b, c, d, x[i], 7, -680876936);\n      d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n      c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n      b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n      a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n      d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n      c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n      b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n      a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n      d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n      c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n      b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n      a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n      d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n      c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n      b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n      a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n      d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n      c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n      b = md5gg(b, c, d, a, x[i], 20, -373897302);\n      a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n      d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n      c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n      b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n      a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n      d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n      c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n      b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n      a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n      d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n      c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n      b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n      a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n      d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n      c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n      b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n      a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n      d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n      c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n      b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n      a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n      d = md5hh(d, a, b, c, x[i], 11, -358537222);\n      c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n      b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n      a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n      d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n      c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n      b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n      a = md5ii(a, b, c, d, x[i], 6, -198630844);\n      d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n      c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n      b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n      a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n      d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n      c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n      b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n      a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n      d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n      c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n      b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n      a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n      d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n      c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n      b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n      a = safeAdd(a, olda);\n      b = safeAdd(b, oldb);\n      c = safeAdd(c, oldc);\n      d = safeAdd(d, oldd);\n    }\n    return [a, b, c, d]\n  }\n\n  /**\n   * Convert an array of little-endian words to a string\n   *\n   * @param {Array<number>} input MD5 Array\n   * @returns {string} MD5 string\n   */\n  function binl2rstr(input) {\n    var i;\n    var output = '';\n    var length32 = input.length * 32;\n    for (i = 0; i < length32; i += 8) {\n      output += String.fromCharCode((input[i >> 5] >>> i % 32) & 0xff);\n    }\n    return output\n  }\n\n  /**\n   * Convert a raw string to an array of little-endian words\n   * Characters >255 have their high-byte silently ignored.\n   *\n   * @param {string} input Raw input string\n   * @returns {Array<number>} Array of little-endian words\n   */\n  function rstr2binl(input) {\n    var i;\n    var output = [];\n    output[(input.length >> 2) - 1] = undefined;\n    for (i = 0; i < output.length; i += 1) {\n      output[i] = 0;\n    }\n    var length8 = input.length * 8;\n    for (i = 0; i < length8; i += 8) {\n      output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32;\n    }\n    return output\n  }\n\n  /**\n   * Calculate the MD5 of a raw string\n   *\n   * @param {string} s Input string\n   * @returns {string} Raw MD5 string\n   */\n  function rstrMD5(s) {\n    return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))\n  }\n\n  /**\n   * Calculates the HMAC-MD5 of a key and some data (raw strings)\n   *\n   * @param {string} key HMAC key\n   * @param {string} data Raw input string\n   * @returns {string} Raw MD5 string\n   */\n  function rstrHMACMD5(key, data) {\n    var i;\n    var bkey = rstr2binl(key);\n    var ipad = [];\n    var opad = [];\n    var hash;\n    ipad[15] = opad[15] = undefined;\n    if (bkey.length > 16) {\n      bkey = binlMD5(bkey, key.length * 8);\n    }\n    for (i = 0; i < 16; i += 1) {\n      ipad[i] = bkey[i] ^ 0x36363636;\n      opad[i] = bkey[i] ^ 0x5c5c5c5c;\n    }\n    hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n    return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))\n  }\n\n  /**\n   * Convert a raw string to a hex string\n   *\n   * @param {string} input Raw input string\n   * @returns {string} Hex encoded string\n   */\n  function rstr2hex(input) {\n    var hexTab = '0123456789abcdef';\n    var output = '';\n    var x;\n    var i;\n    for (i = 0; i < input.length; i += 1) {\n      x = input.charCodeAt(i);\n      output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f);\n    }\n    return output\n  }\n\n  /**\n   * Encode a string as UTF-8\n   *\n   * @param {string} input Input string\n   * @returns {string} UTF8 string\n   */\n  function str2rstrUTF8(input) {\n    return unescape(encodeURIComponent(input))\n  }\n\n  /**\n   * Encodes input string as raw MD5 string\n   *\n   * @param {string} s Input string\n   * @returns {string} Raw MD5 string\n   */\n  function rawMD5(s) {\n    return rstrMD5(str2rstrUTF8(s))\n  }\n  /**\n   * Encodes input string as Hex encoded string\n   *\n   * @param {string} s Input string\n   * @returns {string} Hex encoded string\n   */\n  function hexMD5(s) {\n    return rstr2hex(rawMD5(s))\n  }\n  /**\n   * Calculates the raw HMAC-MD5 for the given key and data\n   *\n   * @param {string} k HMAC key\n   * @param {string} d Input string\n   * @returns {string} Raw MD5 string\n   */\n  function rawHMACMD5(k, d) {\n    return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))\n  }\n  /**\n   * Calculates the Hex encoded HMAC-MD5 for the given key and data\n   *\n   * @param {string} k HMAC key\n   * @param {string} d Input string\n   * @returns {string} Raw MD5 string\n   */\n  function hexHMACMD5(k, d) {\n    return rstr2hex(rawHMACMD5(k, d))\n  }\n\n  /**\n   * Calculates MD5 value for a given string.\n   * If a key is provided, calculates the HMAC-MD5 value.\n   * Returns a Hex encoded string unless the raw argument is given.\n   *\n   * @param {string} string Input string\n   * @param {string} [key] HMAC key\n   * @param {boolean} [raw] Raw output switch\n   * @returns {string} MD5 output\n   */\n  function md5(string, key, raw) {\n    if (!key) {\n      if (!raw) {\n        return hexMD5(string)\n      }\n      return rawMD5(string)\n    }\n    if (!raw) {\n      return hexHMACMD5(key, string)\n    }\n    return rawHMACMD5(key, string)\n  }\n\n  if ( module.exports) {\n    module.exports = md5;\n  } else {\n    $.md5 = md5;\n  }\n})(commonjsGlobal);\n});\n\n/**\r\n * @file webLogger工具函数\r\n * @author <zhangshen@kuaishou.com>\r\n * @author 天翔Skyline(skyline0705@gmail.com)\r\n */\r\n/**\r\n * 创建一个cookie字符串，可被赋值给document.cookie.\r\n * @param {string} name cookie名称.\r\n * @param {string} value cookie值.\r\n * @param {boolean} encode 是否对值进行编码.\r\n * @param {Object} options (Optional) 配置项.\r\n * @return {string} 返回 cookie 字符串.\r\n */\r\nfunction createCookieString(name, value, encode, options) {\r\n    if (options === void 0) { options = {}; }\r\n    var text = encodeURIComponent(name) + \"=\" + (encode ? encodeURIComponent(value) : value);\r\n    var expires = options.expires;\r\n    var path = options.path || '/';\r\n    var domain = options.domain || '';\r\n    if (expires instanceof Date) {\r\n        text += \"; expires=\" + expires.toUTCString();\r\n    }\r\n    if (typeof expires === 'number') {\r\n        text += \"; max-age==\" + expires;\r\n    }\r\n    if (path !== '') {\r\n        text += \"; path=\" + path;\r\n    }\r\n    if (domain !== '') {\r\n        text += \"; domain=\" + domain;\r\n    }\r\n    if (options.secure === true) {\r\n        text += '; secure';\r\n    }\r\n    return text;\r\n}\r\n/**\r\n * 将cookie序列化成对象.\r\n * @param {string} text cookie值.\r\n * @param {boolean=} shouldDecode cookie是否需要被解码. 默认为true.\r\n * @param {object=} options 如何读取cookie的配置.\r\n * @return {object} 可访问cookie的序列化结果\r\n */\r\nfunction parseCookieString(text, shouldDecode, options) {\r\n    var cookies = {};\r\n    if (text.length > 0) {\r\n        var decodeValue = !shouldDecode\r\n            ? function (s) {\r\n                return s;\r\n            }\r\n            : decodeURIComponent;\r\n        var cookieParts = text.split(/;\\s/g);\r\n        var cookieName = null;\r\n        var cookieValue = null;\r\n        var cookieNameValue = null;\r\n        for (var i = 0, len = cookieParts.length; i < len; i++) {\r\n            cookieNameValue = cookieParts[i].match(/([^=]+)=/i);\r\n            if (cookieNameValue !== null) {\r\n                try {\r\n                    cookieName = decodeURIComponent(cookieNameValue[1]);\r\n                    cookieValue = decodeValue(cookieParts[i].substring(cookieNameValue[1].length + 1));\r\n                }\r\n                catch (ex) {\r\n                    // 忽略\r\n                }\r\n            }\r\n            else {\r\n                // cookie 中没有 \"=\", 当成布尔值\r\n                cookieName = decodeURIComponent(cookieParts[i]);\r\n                cookieValue = '';\r\n            }\r\n            if (cookieName !== null) {\r\n                // 默认后面的cookie覆盖前面的\r\n                cookies[cookieName] = cookieValue;\r\n            }\r\n        }\r\n    }\r\n    return cookies;\r\n}\r\nvar cookiesMap = {};\r\n/**\r\n * 获取cookie值.\r\n * @param {string} name cookie名称.\r\n * @param {object=} options 配置项\r\n *                    raw: 是否进行编码，true则是未编码\r\n * @return {*} 不存在返回null.\r\n */\r\nfunction getCookie(name, options, useCaches) {\r\n    if (options === void 0) { options = {}; }\r\n    if (useCaches === void 0) { useCaches = false; }\r\n    try {\r\n        if (typeof document === 'undefined' || !document.cookie) {\r\n            return null;\r\n        }\r\n        if (useCaches && name in cookiesMap) {\r\n            return cookiesMap[name];\r\n        }\r\n        var cookies = parseCookieString(document.cookie, !options.raw, options);\r\n        cookiesMap = cookies;\r\n        var cookie = cookies[name];\r\n        if (cookie === void 0) {\r\n            return null;\r\n        }\r\n        return cookie;\r\n    }\r\n    catch (err) {\r\n        return null;\r\n    }\r\n}\r\n/**\r\n * 给定的键值设置cookie\r\n * @param {string} name 名称.\r\n * @param {*} value cookie值.\r\n * @param {object=} options (Optional) 配置项:\r\n *      path 路径\r\n *      domain 域名\r\n *      expires 过期时间，一个Date对象\r\n *      secure 是否安全cookie\r\n *      raw (true/false). Setting raw to true indicates that the cookie should not be URI encoded before being set.\r\n */\r\nfunction setCookie(name, value, options) {\r\n    if (options === void 0) { options = {}; }\r\n    try {\r\n        document.cookie = createCookieString(name, value, !options.raw, options);\r\n        return true;\r\n    }\r\n    catch (err) {\r\n        return false;\r\n    }\r\n}\r\nvar cookieUtils = {\r\n    getCookie: getCookie,\r\n    setCookie: setCookie,\r\n    parseCookieString: parseCookieString\r\n};\n\n/**\r\n * 生成nano id\r\n * @return {string} 16长度的字符串\r\n */\r\nfunction nanoId() {\r\n    var ts = ((Math.random() * 1e9) >>> 0);\r\n    var randomer = [];\r\n    var seed = '0123456789ABCDEF';\r\n    for (var i = 0; i < 7; i++) {\r\n        randomer.push(seed.charAt(Math.random() * 16));\r\n    }\r\n    return ts + randomer.join('');\r\n}\r\n/**\r\n * 提取顶级域名\r\n * @param {?string=} hostname\r\n * @return {string} 返回顶级域名\r\n */\r\nfunction resolveTopLevelDomain(hostname) {\r\n    if (hostname === void 0) { hostname = typeof location !== 'undefined' ? location.hostname : ''; }\r\n    if (!hostname) {\r\n        return '';\r\n    }\r\n    var ret = hostname.split('.');\r\n    var len = ret.length;\r\n    return (len <= 2 ? '' : \".\" + ret[len - 2] + \".\" + ret[len - 1]);\r\n}\r\nvar didKey = 'did';\r\nvar did = '';\r\n/**\r\n * 生成did\r\n * @return {string}\r\n */\r\nfunction generateDID() {\r\n    if (did)\r\n        return did;\r\n    try {\r\n        // 兼容一下原下发的did逻辑，如果能从did获取，那么就走did\r\n        // 如果不能，那就通过log sdk自行维护的_did来搞\r\n        did = getCookie(didKey) || getCookie('_did');\r\n        if (!did) {\r\n            did = \"web_\" + nanoId();\r\n            var expires = new Date();\r\n            expires.setFullYear(expires.getFullYear() + 1);\r\n            setCookie('_did', did, {\r\n                expires: expires,\r\n                domain: resolveTopLevelDomain(),\r\n                path: '/',\r\n            });\r\n        }\r\n        return did;\r\n    }\r\n    catch (err) {\r\n        return '';\r\n    }\r\n}\r\n/**\r\n * 生成唯一UUID\r\n */\r\nvar uuid = function (page) {\r\n    var randomStr = page + new Date().getTime() + generateDID() + nanoId();\r\n    var hash = md5(randomStr);\r\n    return hash;\r\n};\n\nvar GlobalConfig = {\r\n    proto: 'v3',\r\n    sessionId: '',\r\n    isDebug: false,\r\n    isBridge: false,\r\n    get isV2() { return GlobalConfig.proto === 'v2'; },\r\n};\r\nvar updateConfig = function (key, value) {\r\n    GlobalConfig[key] = value;\r\n};\n\n/**\r\n * v2、v3 PB 相同部分\r\n */\r\nvar Base;\r\n(function (Base) {\r\n    // 网络信息\r\n    var NetworkPackageType;\r\n    (function (NetworkPackageType) {\r\n        NetworkPackageType[NetworkPackageType[\"UNKNOWN_NETWORK\"] = 0] = \"UNKNOWN_NETWORK\";\r\n        NetworkPackageType[NetworkPackageType[\"NOT_CONNECTED\"] = 1] = \"NOT_CONNECTED\";\r\n        NetworkPackageType[NetworkPackageType[\"WIFI\"] = 2] = \"WIFI\";\r\n        NetworkPackageType[NetworkPackageType[\"MOBILE_4G\"] = 3] = \"MOBILE_4G\";\r\n        NetworkPackageType[NetworkPackageType[\"MOBILE_3G\"] = 4] = \"MOBILE_3G\";\r\n        NetworkPackageType[NetworkPackageType[\"MOBILE_2G\"] = 5] = \"MOBILE_2G\";\r\n        NetworkPackageType[NetworkPackageType[\"MOBILE_UNKNOWN\"] = 6] = \"MOBILE_UNKNOWN\";\r\n        NetworkPackageType[NetworkPackageType[\"MOBILE_5G\"] = 7] = \"MOBILE_5G\";\r\n    })(NetworkPackageType = Base.NetworkPackageType || (Base.NetworkPackageType = {}));\r\n    var AdditionalSeqIdPackageChannel;\r\n    (function (AdditionalSeqIdPackageChannel) {\r\n        AdditionalSeqIdPackageChannel[AdditionalSeqIdPackageChannel[\"UNKNOWN1\"] = 0] = \"UNKNOWN1\";\r\n        AdditionalSeqIdPackageChannel[AdditionalSeqIdPackageChannel[\"REALTIME\"] = 1] = \"REALTIME\";\r\n        AdditionalSeqIdPackageChannel[AdditionalSeqIdPackageChannel[\"HIGH_FREQ\"] = 2] = \"HIGH_FREQ\";\r\n        AdditionalSeqIdPackageChannel[AdditionalSeqIdPackageChannel[\"NORMAL\"] = 3] = \"NORMAL\";\r\n    })(AdditionalSeqIdPackageChannel = Base.AdditionalSeqIdPackageChannel || (Base.AdditionalSeqIdPackageChannel = {}));\r\n    // 平台类型\r\n    var Platform;\r\n    (function (Platform) {\r\n        Platform[Platform[\"UNKNOWN_PLATFORM\"] = 0] = \"UNKNOWN_PLATFORM\";\r\n        Platform[Platform[\"ANDROID_PHONE\"] = 1] = \"ANDROID_PHONE\";\r\n        Platform[Platform[\"ANDROID_PAD\"] = 2] = \"ANDROID_PAD\";\r\n        Platform[Platform[\"IPHONE\"] = 3] = \"IPHONE\";\r\n        Platform[Platform[\"IPAD\"] = 4] = \"IPAD\";\r\n        Platform[Platform[\"WINDOWS_PC\"] = 5] = \"WINDOWS_PC\";\r\n        // 注: 同上\r\n        Platform[Platform[\"ANDROID_PHONE_H5\"] = 6] = \"ANDROID_PHONE_H5\";\r\n        Platform[Platform[\"IPHONE_H5\"] = 7] = \"IPHONE_H5\";\r\n        Platform[Platform[\"OUTSIDE_ANDROID_H5\"] = 8] = \"OUTSIDE_ANDROID_H5\";\r\n        Platform[Platform[\"OUTSIDE_IOS_H5\"] = 9] = \"OUTSIDE_IOS_H5\";\r\n        Platform[Platform[\"PC_WEB\"] = 10] = \"PC_WEB\";\r\n    })(Platform = Base.Platform || (Base.Platform = {}));\r\n    // 容器类型\r\n    var Container;\r\n    (function (Container) {\r\n        Container[\"NATIVE\"] = \"NATIVE\";\r\n        Container[\"REACT_NATIVE\"] = \"REACT_NATIVE\";\r\n        Container[\"H5\"] = \"H5\";\r\n        Container[\"MP_WECHAT\"] = \"MP_WECHAT\";\r\n        Container[\"MP_ALIPAY\"] = \"MP_ALIPAY\";\r\n        Container[\"MP_BAIDU\"] = \"MP_BAIDU\";\r\n        Container[\"WEB\"] = \"WEB\";\r\n    })(Container = Base.Container || (Base.Container = {}));\r\n    var PageType;\r\n    (function (PageType) {\r\n        PageType[PageType[\"UNKNOWN_PAGE_TYPE\"] = 0] = \"UNKNOWN_PAGE_TYPE\";\r\n        PageType[PageType[\"NATIVE\"] = 1] = \"NATIVE\";\r\n        PageType[PageType[\"H5\"] = 2] = \"H5\";\r\n        PageType[PageType[\"MINA\"] = 3] = \"MINA\";\r\n    })(PageType = Base.PageType || (Base.PageType = {}));\r\n    var ElementStatus;\r\n    (function (ElementStatus) {\r\n        ElementStatus[ElementStatus[\"UNKNOWN_STATUS\"] = 0] = \"UNKNOWN_STATUS\";\r\n        ElementStatus[ElementStatus[\"CHECKED\"] = 1] = \"CHECKED\";\r\n        ElementStatus[ElementStatus[\"UNCHECKED\"] = 2] = \"UNCHECKED\";\r\n    })(ElementStatus = Base.ElementStatus || (Base.ElementStatus = {}));\r\n    // 页面曝光动作\r\n    var PageShowAction;\r\n    (function (PageShowAction) {\r\n        PageShowAction[PageShowAction[\"UNKNOWN_ACTION\"] = 0] = \"UNKNOWN_ACTION\";\r\n        PageShowAction[PageShowAction[\"ENTER\"] = 1] = \"ENTER\";\r\n        PageShowAction[PageShowAction[\"LEAVE\"] = 2] = \"LEAVE\";\r\n        PageShowAction[PageShowAction[\"RESUME\"] = 3] = \"RESUME\";\r\n    })(PageShowAction = Base.PageShowAction || (Base.PageShowAction = {}));\r\n    var ActionStatus;\r\n    (function (ActionStatus) {\r\n        ActionStatus[ActionStatus[\"UNKNOWN_STATUS\"] = 0] = \"UNKNOWN_STATUS\";\r\n        ActionStatus[ActionStatus[\"SUCCESS\"] = 1] = \"SUCCESS\";\r\n        ActionStatus[ActionStatus[\"FAIL\"] = 2] = \"FAIL\";\r\n    })(ActionStatus = Base.ActionStatus || (Base.ActionStatus = {}));\r\n    var ActionType;\r\n    (function (ActionType) {\r\n        ActionType[ActionType[\"UNKNOWN_ACTION_TYPE\"] = 0] = \"UNKNOWN_ACTION_TYPE\";\r\n        ActionType[ActionType[\"CLICK\"] = 1] = \"CLICK\";\r\n        ActionType[ActionType[\"LEFT_PULL\"] = 2] = \"LEFT_PULL\";\r\n        ActionType[ActionType[\"RIGHT_PULL\"] = 3] = \"RIGHT_PULL\";\r\n        ActionType[ActionType[\"UP_PULL\"] = 4] = \"UP_PULL\";\r\n        ActionType[ActionType[\"DOWN_PULL\"] = 5] = \"DOWN_PULL\";\r\n    })(ActionType = Base.ActionType || (Base.ActionType = {}));\r\n    var SubAction;\r\n    (function (SubAction) {\r\n        SubAction[SubAction[\"UNKNOWN_SUB_ACTION\"] = 0] = \"UNKNOWN_SUB_ACTION\";\r\n        SubAction[SubAction[\"PAGE_ENTER\"] = 1] = \"PAGE_ENTER\";\r\n        SubAction[SubAction[\"PAGE_LEAVE\"] = 2] = \"PAGE_LEAVE\";\r\n        SubAction[SubAction[\"PAGE_RESUME\"] = 3] = \"PAGE_RESUME\";\r\n        SubAction[SubAction[\"PAGE_PAUSE\"] = 4] = \"PAGE_PAUSE\";\r\n    })(SubAction = Base.SubAction || (Base.SubAction = {}));\r\n    // 操作方向\r\n    var Direction;\r\n    (function (Direction) {\r\n        Direction[Direction[\"UNKNOWN2\"] = 0] = \"UNKNOWN2\";\r\n        Direction[Direction[\"UP\"] = 1] = \"UP\";\r\n        Direction[Direction[\"DOWN\"] = 2] = \"DOWN\";\r\n        Direction[Direction[\"LEFT\"] = 3] = \"LEFT\";\r\n        Direction[Direction[\"RIGHT\"] = 4] = \"RIGHT\";\r\n    })(Direction = Base.Direction || (Base.Direction = {}));\r\n    var TaskStatus;\r\n    (function (TaskStatus) {\r\n        TaskStatus[TaskStatus[\"UNKNOWN_STATUS\"] = 0] = \"UNKNOWN_STATUS\";\r\n        TaskStatus[TaskStatus[\"START\"] = 1] = \"START\";\r\n        TaskStatus[TaskStatus[\"RETRY\"] = 2] = \"RETRY\";\r\n        TaskStatus[TaskStatus[\"PAUSE\"] = 3] = \"PAUSE\";\r\n        TaskStatus[TaskStatus[\"RESUME\"] = 4] = \"RESUME\";\r\n        TaskStatus[TaskStatus[\"PENDING\"] = 5] = \"PENDING\";\r\n        TaskStatus[TaskStatus[\"PROCESSING\"] = 6] = \"PROCESSING\";\r\n        TaskStatus[TaskStatus[\"SUCCESS\"] = 7] = \"SUCCESS\";\r\n        TaskStatus[TaskStatus[\"FAIL\"] = 8] = \"FAIL\";\r\n        TaskStatus[TaskStatus[\"CANCEL\"] = 9] = \"CANCEL\";\r\n        TaskStatus[TaskStatus[\"FINISH\"] = 10] = \"FINISH\";\r\n    })(TaskStatus = Base.TaskStatus || (Base.TaskStatus = {}));\r\n    var OperationType;\r\n    (function (OperationType) {\r\n        OperationType[OperationType[\"UNKNOWN_OPERATION\"] = 0] = \"UNKNOWN_OPERATION\";\r\n        OperationType[OperationType[\"CLICK\"] = 1] = \"CLICK\";\r\n        OperationType[OperationType[\"DOUBLE_CLICK\"] = 2] = \"DOUBLE_CLICK\";\r\n        OperationType[OperationType[\"TRIPLE_CLICK\"] = 3] = \"TRIPLE_CLICK\";\r\n        OperationType[OperationType[\"LONG_PRESS\"] = 4] = \"LONG_PRESS\";\r\n        OperationType[OperationType[\"PULL\"] = 5] = \"PULL\";\r\n        OperationType[OperationType[\"DRAG\"] = 6] = \"DRAG\";\r\n        OperationType[OperationType[\"SCALE\"] = 7] = \"SCALE\";\r\n        OperationType[OperationType[\"PULL_DOWN\"] = 8] = \"PULL_DOWN\";\r\n        OperationType[OperationType[\"PULL_UP\"] = 9] = \"PULL_UP\";\r\n        OperationType[OperationType[\"RIGHT_CLICK\"] = 10] = \"RIGHT_CLICK\";\r\n        OperationType[OperationType[\"AUTO\"] = 10] = \"AUTO\";\r\n    })(OperationType = Base.OperationType || (Base.OperationType = {}));\r\n})(Base || (Base = {}));\n\n/**\r\n * 快手系应用UA标示\r\n */\r\n// TODO 海外 APP List 要求不区分大小写判断\r\nvar ksOverseaAppList = ['UVideo', 'Vstatus', 'Kwaigo', 'MvMaster'];\r\n// TODO这么加没个完了，后面想办法搞成自行传入吧\r\nvar ksAppList = [\r\n    'Kwai',\r\n    'Kwai_Lite',\r\n    'Kwai_Pro',\r\n    'livemate',\r\n    'ksthanos',\r\n    'ksNebula',\r\n    'ksnebula',\r\n    'kwaiying',\r\n    'pearl',\r\n    'kinder',\r\n    'm2u',\r\n    'LOLita',\r\n    'XFunCore',\r\n    'ACVideoCore',\r\n    'ZIKZAK',\r\n].concat(ksOverseaAppList);\n\n/**\r\n * @file webLogger工具函数\r\n * @author <zhangshen@kuaishou.com>\r\n * @author 天翔Skyline(skyline0705@gmail.com)\r\n */\r\n/**\r\n * 获取 localStorage 缓存\r\n */\r\nfunction getLocalStorageItem(key) {\r\n    try {\r\n        if (window && window.localStorage) {\r\n            var value = window.localStorage.getItem(key);\r\n            if (value) {\r\n                try {\r\n                    return JSON.parse(value);\r\n                }\r\n                catch (err) {\r\n                    return value;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    catch (err) {\r\n        return null;\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * 设置 localStorage 缓存\r\n */\r\nfunction setLocalStorageItem(key, value) {\r\n    try {\r\n        if (window && window.localStorage) {\r\n            window.localStorage.setItem(key, JSON.stringify(value));\r\n            return true;\r\n        }\r\n    }\r\n    catch (err) {\r\n        return false;\r\n    }\r\n    return false;\r\n}\r\n/**\r\n * 从目标arr中删除item\r\n * @param {*} arr  目标数组\r\n * @param {*} item  item\r\n */\r\nfunction deleteArray(arr, item) {\r\n    var index = arr.indexOf(item);\r\n    if (index > -1) {\r\n        arr.splice(index, 1);\r\n    }\r\n}\r\n/**\r\n * 事件监听兼容处理\r\n * @param {*} evtTarget  事件监听目标\r\n * @param {*} evtName   事件名\r\n * @param {*} callback  回调函数\r\n * @param {*} options  相关参数设置\r\n */\r\nfunction addMonitor(evtTarget, evtName, callback, options) {\r\n    if ('attachEvent' in evtTarget) {\r\n        return evtTarget.attachEvent('on' + evtName, callback);\r\n    }\r\n    return evtTarget.addEventListener(evtName, callback, options);\r\n}\r\n/**\r\n * 事件监听解绑兼容处理\r\n * @param {*} evtTarget  事件监听目标\r\n * @param {*} evtName   事件名\r\n * @param {*} callback  事件回调\r\n */\r\nfunction removeMonitor(evtTarget, evtName, callback, options) {\r\n    if ('attachEvent' in evtTarget) {\r\n        return evtTarget.detachEvent('on' + evtName, callback);\r\n    }\r\n    return evtTarget.removeEventListener(evtName, callback, options);\r\n}\r\nfunction leftPad(str, len, ch) {\r\n    if (ch === void 0) { ch = ' '; }\r\n    len = len - str.length;\r\n    if (len <= 0) {\r\n        return str;\r\n    }\r\n    var pad = '';\r\n    while (len) {\r\n        if (len & 1) {\r\n            pad += ch;\r\n        }\r\n        len >>= 1;\r\n        ch += ch;\r\n    }\r\n    return pad + str;\r\n}\r\n/**\r\n * 是否是快手系APP\r\n */\r\nvar isInApp = (function () {\r\n    // 防止SSR出问题，所以需要给出方法而不是直接属性\r\n    var inApp = null;\r\n    return function () {\r\n        try {\r\n            if (inApp === null) {\r\n                for (var i = 0; i < ksAppList.length; i++) {\r\n                    var isOversea = ksOverseaAppList.indexOf(ksAppList[i]) > -1;\r\n                    if (isOversea) {\r\n                        if (window.navigator.userAgent.toLowerCase().indexOf(ksAppList[i].toLowerCase()) > -1) {\r\n                            inApp = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    else {\r\n                        if (window.navigator.userAgent.indexOf(ksAppList[i]) > -1) {\r\n                            inApp = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return inApp;\r\n        }\r\n        catch (err) {\r\n            return false;\r\n        }\r\n    };\r\n})();\r\nfunction fakeRaf(callback) {\r\n    return setTimeout(callback, 1000 / 16);\r\n}\r\nvar fakeCaf = clearTimeout;\r\nvar raf = function (callback) {\r\n    var fn = window.requestAnimationFrame\r\n        || window.mozRequestAnimationFrame\r\n        || window.webkitRequestAnimationFrame\r\n        || fakeRaf;\r\n    return fn.call(this, callback);\r\n};\r\nvar caf = function (handle) {\r\n    var fn = window.cancelAnimationFrame\r\n        || window.mozCancelAnimationFrame\r\n        || window.webkitCancelAnimationFrame\r\n        || fakeCaf;\r\n    return fn.call(this, handle);\r\n};\r\nfunction parseQueryString(queryString) {\r\n    var result = {};\r\n    var queries = queryString.split('&');\r\n    for (var _i = 0, queries_1 = queries; _i < queries_1.length; _i++) {\r\n        var query = queries_1[_i];\r\n        var _a = query.split('='), key = _a[0], value = _a[1];\r\n        if (!(key in result)) {\r\n            result[key] = value;\r\n            continue;\r\n        }\r\n        if (result[key] instanceof Array) {\r\n            result[key].push(value);\r\n            continue;\r\n        }\r\n        result[key] = [result[key], value];\r\n    }\r\n    return result;\r\n}\r\nfunction stringifyQuery(paramsString) {\r\n    var params = typeof paramsString === 'string' ? JSON.parse(paramsString) : paramsString;\r\n    var queries = [];\r\n    Object.keys(params).forEach(function (key) {\r\n        if (params[key] instanceof Array) {\r\n            for (var _i = 0, _a = params[key]; _i < _a.length; _i++) {\r\n                var val = _a[_i];\r\n                queries.push(key + \"=\" + val);\r\n            }\r\n        }\r\n        else if (typeof params[key] === 'object' && params[key] !== null) {\r\n            queries.push(key + \"=\" + JSON.stringify(params[key]));\r\n        }\r\n        else {\r\n            queries.push(key + \"=\" + params[key]);\r\n        }\r\n    });\r\n    return queries.join('&');\r\n}\r\n// 处理 DOM 路径，获取可读性强的列表\r\nfunction composedPath(path) {\r\n    // 兼容下低版本安卓机报错问题。。\r\n    if (!Array.isArray(path))\r\n        return '';\r\n    var eleList = path.map(function (ele) {\r\n        var _a = ele.tagName, tagName = _a === void 0 ? '' : _a, id = ele.id, _b = ele.className, className = _b === void 0 ? '' : _b;\r\n        var item = tagName.toLowerCase();\r\n        if (id)\r\n            item += \"#\" + id;\r\n        if (className)\r\n            item += className.split(' ').map(function (v) { return \".\" + v; }).join('');\r\n        return item;\r\n    });\r\n    // window 取不出来，感觉意义不大，直接过滤掉吧\r\n    return eleList.filter(function (v) { return v; }).join(',');\r\n}\r\n// 参考：https://codereview.stackexchange.com/questions/37512/count-byte-length-of-string\r\nfunction getStringBytes(data) {\r\n    var dataStr = '';\r\n    // Force string type\r\n    if (typeof data === 'string') {\r\n        dataStr = data;\r\n    }\r\n    else {\r\n        try {\r\n            dataStr = JSON.stringify(data);\r\n        }\r\n        catch (e) {\r\n            dataStr = String(data);\r\n        }\r\n    }\r\n    var byteLen = 0;\r\n    for (var i = 0; i < dataStr.length; i++) {\r\n        var c = dataStr.charCodeAt(i);\r\n        byteLen += c < (1 << 7) ? 1 :\r\n            c < (1 << 11) ? 2 :\r\n                c < (1 << 16) ? 3 :\r\n                    c < (1 << 21) ? 4 :\r\n                        c < (1 << 26) ? 5 :\r\n                            c < (1 << 31) ? 6 : Number.NaN;\r\n    }\r\n    return byteLen;\r\n}\r\n/**\r\n * http://git.corp.kuaishou.com/ks-frontend/modules/web-util/blob/master/src/device.js\r\n */\r\nvar kpnFromUA = (function () {\r\n    return function () {\r\n        if (typeof window === 'undefined')\r\n            return '';\r\n        var ua = window.navigator.userAgent;\r\n        // 注意顺序很重要\r\n        var rules = [\r\n            [/ wxwork\\//, 'workWechat'],\r\n            [/ MicroMessenger\\//, 'wechat'],\r\n            [/ Kwai\\//, 'KUAISHOU'],\r\n            [/ ksthanos\\//, 'THANOS'],\r\n            [/ ksNebula\\//i, 'NEBULA'],\r\n            [/ QQ\\//, 'qq'],\r\n            [/__weibo__([^_]+)/, 'weibo'],\r\n            [/ livemate\\//, 'livemate'],\r\n            [/ baiduboxapp\\//, 'baidu'],\r\n            [/ MQQBrowser\\//, 'qqBrowser'],\r\n            [/\\(MSIE ([^;]+);/, 'ie'],\r\n        ];\r\n        for (var i = 0; i < rules.length; i++) {\r\n            var tmp = rules[i];\r\n            var rule = tmp[0];\r\n            var name_1 = tmp[1];\r\n            var rRes = rule.exec(ua);\r\n            if (rRes) {\r\n                return name_1;\r\n            }\r\n        }\r\n        return '';\r\n    };\r\n})();\r\n/**\r\n * 获取默认的 KPN\r\n */\r\nfunction getDefaultKpn() {\r\n    var kpnInCookie = getCookie('kpn');\r\n    var kpnInUA = kpnFromUA();\r\n    return kpnInCookie || kpnInUA || '';\r\n}\r\nfunction getUrlAndQueryFromUrl(url) {\r\n    if (url === void 0) { url = location.href; }\r\n    var queryIndex = url.lastIndexOf('?');\r\n    if (queryIndex === -1) {\r\n        return {\r\n            page: url\r\n        };\r\n    }\r\n    var page = url.slice(0, queryIndex);\r\n    var queryString = url.slice(queryIndex + 1);\r\n    return {\r\n        page: page,\r\n        params: parseQueryString(queryString),\r\n    };\r\n}\r\nvar getMappingPage = function (urlPackage, urlMap) {\r\n    var url = urlPackage.url, page = urlPackage.page, params = urlPackage.params;\r\n    if (!page && typeof url === 'string') {\r\n        var parsed = getUrlAndQueryFromUrl(url);\r\n        page = parsed.page;\r\n        params = parsed.params;\r\n    }\r\n    if (typeof urlMap === 'function') {\r\n        try {\r\n            var res = urlMap({ url: url, page: page, params: params });\r\n            if (typeof res === 'string') {\r\n                page = res;\r\n            }\r\n            else if (typeof res === 'object') {\r\n                if (res.page) {\r\n                    page = res.page;\r\n                }\r\n                if (res.params) {\r\n                    params = res.params;\r\n                }\r\n            }\r\n        }\r\n        catch (err) { }\r\n    }\r\n    else if (typeof urlMap === 'object') {\r\n        var mappingPage = '';\r\n        for (var key in urlMap) {\r\n            if ((url || page || '').indexOf(key) > -1) {\r\n                mappingPage = urlMap[key];\r\n                break;\r\n            }\r\n        }\r\n        if (mappingPage) {\r\n            page = mappingPage;\r\n        }\r\n    }\r\n    return {\r\n        page: page,\r\n        params: params\r\n    };\r\n};\r\nfunction cloneDeep(obj) {\r\n    if (typeof obj !== 'object')\r\n        return {};\r\n    var newObj = obj instanceof Array ? [] : {};\r\n    for (var key in obj) {\r\n        if (obj.hasOwnProperty(key)) {\r\n            // @ts-ignore\r\n            newObj[key] = typeof obj[key] === 'object' ? cloneDeep(obj[key]) : obj[key];\r\n        }\r\n    }\r\n    return newObj;\r\n}\r\nfunction supportsPushState() {\r\n    var ua = window.navigator.userAgent;\r\n    if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1)\r\n        && ua.indexOf('Mobile Safari') !== -1\r\n        && ua.indexOf('Chrome') === -1\r\n        && ua.indexOf('Windows Phone') === -1) {\r\n        return false;\r\n    }\r\n    return typeof window !== 'undefined' && window.history && 'pushState' in window.history;\r\n}\r\nvar urlChangeEventId = supportsPushState() ? 'popstate' : 'hashchange';\n\nvar uaParser = createCommonjsModule(function (module, exports) {\n/*!@license\r\n * UAParser.js v0.7.26\r\n * Lightweight JavaScript-based User-Agent string parser\r\n * https://github.com/faisalman/ua-parser-js\r\n *\r\n * Copyright © 2012-2021 Faisal Salman <f@faisalman.com>\r\n * Licensed under MIT License\r\n */\r\n\r\n(function (window, undefined$1) {\r\n\r\n    //////////////\r\n    // Constants\r\n    /////////////\r\n\r\n\r\n    var LIBVERSION  = '0.7.26',\r\n        EMPTY       = '',\r\n        UNKNOWN     = '?',\r\n        FUNC_TYPE   = 'function',\r\n        UNDEF_TYPE  = 'undefined',\r\n        OBJ_TYPE    = 'object',\r\n        STR_TYPE    = 'string',\r\n        MAJOR       = 'major', // deprecated\r\n        MODEL       = 'model',\r\n        NAME        = 'name',\r\n        TYPE        = 'type',\r\n        VENDOR      = 'vendor',\r\n        VERSION     = 'version',\r\n        ARCHITECTURE= 'architecture',\r\n        CONSOLE     = 'console',\r\n        MOBILE      = 'mobile',\r\n        TABLET      = 'tablet',\r\n        SMARTTV     = 'smarttv',\r\n        WEARABLE    = 'wearable',\r\n        EMBEDDED    = 'embedded',\r\n        UA_MAX_LENGTH = 255;\r\n\r\n\r\n    ///////////\r\n    // Helper\r\n    //////////\r\n\r\n\r\n    var util = {\r\n        extend : function (regexes, extensions) {\r\n            var mergedRegexes = {};\r\n            for (var i in regexes) {\r\n                if (extensions[i] && extensions[i].length % 2 === 0) {\r\n                    mergedRegexes[i] = extensions[i].concat(regexes[i]);\r\n                } else {\r\n                    mergedRegexes[i] = regexes[i];\r\n                }\r\n            }\r\n            return mergedRegexes;\r\n        },\r\n        has : function (str1, str2) {\r\n            return typeof str1 === STR_TYPE ? str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1 : false;\r\n        },\r\n        lowerize : function (str) {\r\n            return str.toLowerCase();\r\n        },\r\n        major : function (version) {\r\n            return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined$1;\r\n        },\r\n        trim : function (str, len) {\r\n            str = str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n            return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\r\n        }\r\n    };\r\n\r\n\r\n    ///////////////\r\n    // Map helper\r\n    //////////////\r\n\r\n\r\n    var mapper = {\r\n\r\n        rgx : function (ua, arrays) {\r\n\r\n            var i = 0, j, k, p, q, matches, match;\r\n\r\n            // loop through all regexes maps\r\n            while (i < arrays.length && !matches) {\r\n\r\n                var regex = arrays[i],       // even sequence (0,2,4,..)\r\n                    props = arrays[i + 1];   // odd sequence (1,3,5,..)\r\n                j = k = 0;\r\n\r\n                // try matching uastring with regexes\r\n                while (j < regex.length && !matches) {\r\n\r\n                    matches = regex[j++].exec(ua);\r\n\r\n                    if (!!matches) {\r\n                        for (p = 0; p < props.length; p++) {\r\n                            match = matches[++k];\r\n                            q = props[p];\r\n                            // check if given property is actually array\r\n                            if (typeof q === OBJ_TYPE && q.length > 0) {\r\n                                if (q.length == 2) {\r\n                                    if (typeof q[1] == FUNC_TYPE) {\r\n                                        // assign modified match\r\n                                        this[q[0]] = q[1].call(this, match);\r\n                                    } else {\r\n                                        // assign given value, ignore regex match\r\n                                        this[q[0]] = q[1];\r\n                                    }\r\n                                } else if (q.length == 3) {\r\n                                    // check whether function or regex\r\n                                    if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\r\n                                        // call function (usually string mapper)\r\n                                        this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined$1;\r\n                                    } else {\r\n                                        // sanitize match using given regex\r\n                                        this[q[0]] = match ? match.replace(q[1], q[2]) : undefined$1;\r\n                                    }\r\n                                } else if (q.length == 4) {\r\n                                        this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined$1;\r\n                                }\r\n                            } else {\r\n                                this[q] = match ? match : undefined$1;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                i += 2;\r\n            }\r\n        },\r\n\r\n        str : function (str, map) {\r\n\r\n            for (var i in map) {\r\n                // check if array\r\n                if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\r\n                    for (var j = 0; j < map[i].length; j++) {\r\n                        if (util.has(map[i][j], str)) {\r\n                            return (i === UNKNOWN) ? undefined$1 : i;\r\n                        }\r\n                    }\r\n                } else if (util.has(map[i], str)) {\r\n                    return (i === UNKNOWN) ? undefined$1 : i;\r\n                }\r\n            }\r\n            return str;\r\n        }\r\n    };\r\n\r\n\r\n    ///////////////\r\n    // String map\r\n    //////////////\r\n\r\n\r\n    var maps = {\r\n\r\n        browser : {\r\n            // Safari < 3.0\r\n            oldSafari : {\r\n                version : {\r\n                    '1.0'   : '/8',\r\n                    '1.2'   : '/1',\r\n                    '1.3'   : '/3',\r\n                    '2.0'   : '/412',\r\n                    '2.0.2' : '/416',\r\n                    '2.0.3' : '/417',\r\n                    '2.0.4' : '/419',\r\n                    '?'     : '/'\r\n                }\r\n            },\r\n            oldEdge : {\r\n                version : {\r\n                    '0.1'   : '12.',\r\n                    '21'    : '13.',\r\n                    '31'    : '14.',\r\n                    '39'    : '15.',\r\n                    '41'    : '16.',\r\n                    '42'    : '17.',\r\n                    '44'    : '18.'\r\n                }\r\n            }\r\n        },\r\n\r\n        os : {\r\n            windows : {\r\n                version : {\r\n                    'ME'        : '4.90',\r\n                    'NT 3.11'   : 'NT3.51',\r\n                    'NT 4.0'    : 'NT4.0',\r\n                    '2000'      : 'NT 5.0',\r\n                    'XP'        : ['NT 5.1', 'NT 5.2'],\r\n                    'Vista'     : 'NT 6.0',\r\n                    '7'         : 'NT 6.1',\r\n                    '8'         : 'NT 6.2',\r\n                    '8.1'       : 'NT 6.3',\r\n                    '10'        : ['NT 6.4', 'NT 10.0'],\r\n                    'RT'        : 'ARM'\r\n                }\r\n            }\r\n        }\r\n    };\r\n\r\n\r\n    //////////////\r\n    // Regex map\r\n    /////////////\r\n\r\n\r\n    var regexes = {\r\n\r\n        browser : [[\r\n\r\n            /\\b(?:crmo|crios)\\/([\\w\\.]+)/i                                      // Chrome for Android/iOS\r\n            ], [VERSION, [NAME, 'Chrome']], [\r\n            /(?:edgios|edga|edg)\\/([\\w\\.]+)/i                                   // Microsoft Edge\r\n            ], [VERSION, [NAME, 'Edge']], [\r\n            /edge\\/([\\w\\.]+)/i                                                  // Old Edge (Trident)\r\n            ], [[VERSION, mapper.str, maps.browser.oldEdge.version], [NAME, 'Edge']], [\r\n\r\n            // Presto based\r\n            /(opera\\smini)\\/([\\w\\.-]+)/i,                                       // Opera Mini\r\n            /(opera\\s[mobiletab]{3,6})\\b.+version\\/([\\w\\.-]+)/i,                // Opera Mobi/Tablet\r\n            /(opera).+version\\/([\\w\\.]+)/i,                                     // Opera > 9.80\r\n            /(opera)[\\/\\s]+([\\w\\.]+)/i                                          // Opera < 9.80\r\n            ], [NAME, VERSION], [\r\n            /opios[\\/\\s]+([\\w\\.]+)/i                                            // Opera mini on iphone >= 8.0\r\n            ], [VERSION, [NAME, 'Opera Mini']], [\r\n            /\\sopr\\/([\\w\\.]+)/i                                                 // Opera Webkit\r\n            ], [VERSION, [NAME, 'Opera']], [\r\n\r\n            // Mixed\r\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\r\n            /(lunascape|maxthon|netfront|jasmine|blazer|instagram)[\\/\\s]?([\\w\\.]*)/i,  // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Instagram\r\n            // Trident based\r\n            /(avant\\s|iemobile|slim)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,             // Avant/IEMobile/SlimBrowser\r\n            /(ba?idubrowser)[\\/\\s]?([\\w\\.]+)/i,                                 // Baidu Browser\r\n            /(?:ms|\\()(ie)\\s([\\w\\.]+)/i,                                        // Internet Explorer\r\n\r\n            // Webkit/KHTML based\r\n            /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon)\\/([\\w\\.-]+)/i,\r\n                                                                                // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\r\n            /(rekonq|puffin|brave|whale|qqbrowserlite|qq)\\/([\\w\\.]+)/i,         // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\r\n            /(weibo)__([\\d\\.]+)/i                                               // Weibo\r\n            ], [NAME, VERSION], [\r\n            /(?:[\\s\\/]uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i           // UCBrowser\r\n            ], [VERSION, [NAME, 'UCBrowser']], [\r\n            /(?:windowswechat)?\\sqbcore\\/([\\w\\.]+)\\b.*(?:windowswechat)?/i      // WeChat Desktop for Windows Built-in Browser\r\n            ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [\r\n            /micromessenger\\/([\\w\\.]+)/i                                        // WeChat\r\n            ], [VERSION, [NAME, 'WeChat']], [\r\n            /konqueror\\/([\\w\\.]+)/i                                             // Konqueror\r\n            ], [VERSION, [NAME, 'Konqueror']], [\r\n            /trident.+rv[:\\s]([\\w\\.]{1,9})\\b.+like\\sgecko/i                     // IE11\r\n            ], [VERSION, [NAME, 'IE']], [\r\n            /yabrowser\\/([\\w\\.]+)/i                                             // Yandex\r\n            ], [VERSION, [NAME, 'Yandex']], [\r\n            /(avast|avg)\\/([\\w\\.]+)/i                                           // Avast/AVG Secure Browser\r\n            ], [[NAME, /(.+)/, '$1 Secure Browser'], VERSION], [\r\n            /focus\\/([\\w\\.]+)/i                                                 // Firefox Focus\r\n            ], [VERSION, [NAME, 'Firefox Focus']], [\r\n            /opt\\/([\\w\\.]+)/i                                                   // Opera Touch\r\n            ], [VERSION, [NAME, 'Opera Touch']], [\r\n            /coc_coc_browser\\/([\\w\\.]+)/i                                       // Coc Coc Browser\r\n            ], [VERSION, [NAME, 'Coc Coc']], [\r\n            /dolfin\\/([\\w\\.]+)/i                                                // Dolphin\r\n            ], [VERSION, [NAME, 'Dolphin']], [\r\n            /coast\\/([\\w\\.]+)/i                                                 // Opera Coast\r\n            ], [VERSION, [NAME, 'Opera Coast']],\r\n            [/xiaomi\\/miuibrowser\\/([\\w\\.]+)/i                                  // MIUI Browser\r\n            ], [VERSION, [NAME, 'MIUI Browser']], [\r\n            /fxios\\/([\\w\\.-]+)/i                                                // Firefox for iOS\r\n            ], [VERSION, [NAME, 'Firefox']], [\r\n            /(qihu|qhbrowser|qihoobrowser|360browser)/i                         // 360\r\n            ], [[NAME, '360 Browser']], [\r\n            /(oculus|samsung|sailfish)browser\\/([\\w\\.]+)/i\r\n            ], [[NAME, /(.+)/, '$1 Browser'], VERSION], [                       // Oculus/Samsung/Sailfish Browser\r\n            /(comodo_dragon)\\/([\\w\\.]+)/i                                       // Comodo Dragon\r\n            ], [[NAME, /_/g, ' '], VERSION], [\r\n            /m?(qqbrowser|baiduboxapp|2345Explorer)[\\/\\s]?([\\w\\.]+)/i           // QQBrowser/Baidu App/2345 Browser\r\n            ], [NAME, VERSION], [\r\n            /(MetaSr)[\\/\\s]?([\\w\\.]+)/i,                                        // SouGouBrowser\r\n            /(LBBROWSER)/i                                                      // LieBao Browser\r\n            ], [NAME], [\r\n\r\n            // WebView\r\n            /;fbav\\/([\\w\\.]+);/i                                                // Facebook App for iOS & Android with version\r\n            ], [VERSION, [NAME, 'Facebook']], [            \r\n            /FBAN\\/FBIOS|FB_IAB\\/FB4A/i                                         // Facebook App for iOS & Android without version\r\n            ], [[NAME, 'Facebook']], [\r\n            /\\s(electron)\\/([\\w\\.]+)\\ssafari/i,                                 // Electron-based App\r\n            /safari\\s(line)\\/([\\w\\.]+)/i,                                       // Line App for iOS\r\n            /\\b(line)\\/([\\w\\.]+)\\/iab/i                                         // Line App for Android\r\n            ], [NAME, VERSION], [\r\n            /\\bgsa\\/([\\w\\.]+)\\s.*safari\\//i                                     // Google Search Appliance on iOS\r\n            ], [VERSION, [NAME, 'GSA']], [\r\n\r\n            /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i                                 // Chrome Headless\r\n            ], [VERSION, [NAME, 'Chrome Headless']], [\r\n\r\n            /\\swv\\).+(chrome)\\/([\\w\\.]+)/i                                      // Chrome WebView\r\n            ], [[NAME, 'Chrome WebView'], VERSION], [\r\n\r\n            /droid.+\\sversion\\/([\\w\\.]+)\\b.+(?:mobile\\ssafari|safari)/i         // Android Browser\r\n            ], [VERSION, [NAME, 'Android Browser']], [\r\n\r\n            /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i      // Chrome/OmniWeb/Arora/Tizen/Nokia\r\n            ], [NAME, VERSION], [\r\n\r\n            /version\\/([\\w\\.]+)\\s.*mobile\\/\\w+\\s(safari)/i                      // Mobile Safari\r\n            ], [VERSION, [NAME, 'Mobile Safari']], [\r\n            /version\\/([\\w\\.]+)\\s.*(mobile\\s?safari|safari)/i                   // Safari & Safari Mobile\r\n            ], [VERSION, NAME], [\r\n            /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i                     // Safari < 3.0\r\n            ], [NAME, [VERSION, mapper.str, maps.browser.oldSafari.version]], [\r\n\r\n            /(webkit|khtml)\\/([\\w\\.]+)/i\r\n            ], [NAME, VERSION], [\r\n\r\n            // Gecko based\r\n            /(navigator|netscape)\\/([\\w\\.-]+)/i                                 // Netscape\r\n            ], [[NAME, 'Netscape'], VERSION], [\r\n            /(swiftfox)/i,                                                      // Swiftfox\r\n            /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\r\n                                                                                // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\r\n            /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\r\n                                                                                // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\r\n            /(firefox)\\/([\\w\\.]+)\\s[\\w\\s\\-]+\\/[\\w\\.]+$/i,                       // Other Firefox-based\r\n            /(mozilla)\\/([\\w\\.]+)\\s.+rv\\:.+gecko\\/\\d+/i,                        // Mozilla\r\n\r\n            // Other\r\n            /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\r\n                                                                                // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\r\n            /(links)\\s\\(([\\w\\.]+)/i,                                            // Links\r\n            /(gobrowser)\\/?([\\w\\.]*)/i,                                         // GoBrowser\r\n            /(ice\\s?browser)\\/v?([\\w\\._]+)/i,                                   // ICE Browser\r\n            /(mosaic)[\\/\\s]([\\w\\.]+)/i                                          // Mosaic\r\n            ], [NAME, VERSION]\r\n        ],\r\n\r\n        cpu : [[\r\n\r\n            /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i                     // AMD64 (x64)\r\n            ], [[ARCHITECTURE, 'amd64']], [\r\n\r\n            /(ia32(?=;))/i                                                      // IA32 (quicktime)\r\n            ], [[ARCHITECTURE, util.lowerize]], [\r\n\r\n            /((?:i[346]|x)86)[;\\)]/i                                            // IA32 (x86)\r\n            ], [[ARCHITECTURE, 'ia32']], [\r\n\r\n            /\\b(aarch64|armv?8e?l?)\\b/i                                         // ARM64\r\n            ], [[ARCHITECTURE, 'arm64']], [\r\n\r\n            /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i                                   // ARMHF\r\n            ], [[ARCHITECTURE, 'armhf']], [\r\n\r\n            // PocketPC mistakenly identified as PowerPC\r\n            /windows\\s(ce|mobile);\\sppc;/i\r\n            ], [[ARCHITECTURE, 'arm']], [\r\n\r\n            /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i                           // PowerPC\r\n            ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\r\n\r\n            /(sun4\\w)[;\\)]/i                                                    // SPARC\r\n            ], [[ARCHITECTURE, 'sparc']], [\r\n\r\n            /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?:64|(?=v(?:[1-7]|[5-7]1)l?|;|eabi))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\r\n                                                                                // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\r\n            ], [[ARCHITECTURE, util.lowerize]]\r\n        ],\r\n\r\n        device : [[\r\n            \r\n            //////////////////////\r\n            // MOBILES & TABLETS\r\n            /////////////////////\r\n            \r\n            // Samsung\r\n            /\\b(sch-i[89]0\\d|shw-m380s|sm-p(?:605|610|587)|sm-t\\w+|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus\\s10)/i,\r\n            ], [MODEL, [VENDOR, 'Samsung'], [TYPE, TABLET]], [\r\n            /(s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+)/i,\r\n            /\\ssamsung[\\s-]([\\w-]+)/i,\r\n            /sec-(sgh\\w+)/i\r\n            ], [MODEL, [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\r\n\r\n            // Apple\r\n            /\\((ip(?:hone|od)[\\s\\w]*);/i                                        // iPod/iPhone\r\n            ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\r\n            /\\((ipad);[\\w\\s\\),;-]+(apple)/i                                     // iPad\r\n            ], [MODEL, VENDOR, [TYPE, TABLET]], [\r\n            /applecoremedia\\/[\\w\\.]+\\s\\((ipad)/i\r\n            ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\r\n\r\n            // Huawei\r\n            /d\\/huawei([\\w\\s-]+)[;\\)]/i,\r\n            /\\b(nexus\\s6p|vog-[at]?l\\d\\d|ane-[at]?l[x\\d]\\d|eml-a?l\\d\\da?|lya-[at]?l\\d[\\dc]|clt-a?l\\d\\di?|ele-l\\d\\d)/i,\r\n            /\\b(\\w{2,4}-[atu][ln][01259][019])[;\\)\\s]/i\r\n            ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\r\n            /\\b(bah2?-a?[lw]\\d{2})/i                                            // Huawei MediaPad\r\n            ], [MODEL, [VENDOR, 'Huawei'], [TYPE, TABLET]], [\r\n\r\n            // Xiaomi\r\n            /\\b(poco[\\s\\w]+)(?:\\sbuild|\\))/i,                                                 // Xiaomi POCO\r\n            /\\b;\\s(\\w+)\\s+build\\/hm\\1/i,                                        // Xiaomi Hongmi 'numeric' models\r\n            /\\b(hm[\\s\\-_]?note?[\\s_]?(?:\\d\\w)?)\\sbuild/i,                       // Xiaomi Hongmi\r\n            /\\b(redmi[\\s\\-_]?(?:note|k)?[\\w\\s_]+)(?:\\sbuild|\\))/i,              // Xiaomi Redmi\r\n            /\\b(mi[\\s\\-_]?(?:a\\d|one|one[\\s_]plus|note lte)?[\\s_]?(?:\\d?\\w?)[\\s_]?(?:plus)?)\\sbuild/i  // Xiaomi Mi\r\n            ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\r\n            /\\b(mi[\\s\\-_]?(?:pad)(?:[\\w\\s_]+))(?:\\sbuild|\\))/i                  // Mi Pad tablets\r\n            ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\r\n\r\n            // OPPO\r\n            /;\\s(\\w+)\\sbuild.+\\soppo/i,\r\n            /\\s(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007)\\b/i\r\n            ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\r\n\r\n            // Vivo\r\n            /\\svivo\\s(\\w+)(?:\\sbuild|\\))/i,\r\n            /\\s(v[12]\\d{3}\\w?[at])(?:\\sbuild|;)/i\r\n            ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\r\n            \r\n            // Realme\r\n            /\\s(rmx[12]\\d{3})(?:\\sbuild|;)/i\r\n            ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\r\n\r\n            // Motorola\r\n            /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)\\b[\\w\\s]+build\\//i,\r\n            /\\smot[\\s-](\\w*)/i,\r\n            /(moto[\\s\\w\\(\\)]+(?=\\sbuild|\\)))/i,\r\n            /(xt\\d{3,4})\\sbuild\\//i,\r\n            /(nexus\\s6)/i\r\n            ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\r\n            /\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\r\n            ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\r\n\r\n            // LG\r\n            /((?=lg)?[vl]k\\-?\\d{3})\\s+build|\\s3\\.[\\s\\w;-]{10}lg?-([06cv9]{3,4})/i\r\n            ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\r\n            /(nexus\\s[45])/i,\r\n            /lg[e;\\s\\/-]+((?!browser|netcast)\\w+)/i,\r\n            /\\blg(\\-?[\\d\\w]+)\\s+build/i\r\n            ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\r\n\r\n            // Lenovo\r\n            /(ideatab[\\w\\-\\s]+)/i,\r\n            /lenovo\\s?(s(?:5000|6000)(?:[\\w-]+)|tab(?:[\\s\\w]+)|[\\w-]+)/i        // Lenovo tablets\r\n            ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\r\n\r\n            // Nokia\r\n            /(?:maemo|nokia).*(n900|lumia\\s\\d+)/i,\r\n            /nokia[\\s_-]?([\\w\\.-]*)/i\r\n            ], [MODEL, [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\r\n\r\n            // Google\r\n            /droid.+;\\s(pixel\\sc)[\\s)]/i                                        // Google Pixel C\r\n            ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\r\n            /droid.+;\\s(pixel[\\s\\daxl]{0,6})(?:\\sbuild|\\))/i                    // Google Pixel\r\n            ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\r\n\r\n            // Sony\r\n            /droid.+\\s([c-g]\\d{4}|so[-l]\\w+|xq-a\\w[4-7][12])(?=\\sbuild\\/|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\r\n            ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\r\n            /sony\\stablet\\s[ps]\\sbuild\\//i,\r\n            /(?:sony)?sgp\\w+(?:\\sbuild\\/|\\))/i\r\n            ], [[MODEL, 'Xperia Tablet'], [VENDOR, 'Sony'], [TYPE, TABLET]], [\r\n\r\n            // OnePlus\r\n            /\\s(kb2005|in20[12]5|be20[12][59])\\b/i,\r\n            /\\ba000(1)\\s+build/i,                                               // OnePlus\r\n            /\\boneplus\\s(a\\d{4})[\\s)]/i\r\n            ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\r\n\r\n            // Amazon\r\n            /(alexa)webm/i,\r\n            /(kf[a-z]+)(\\sbuild\\/|\\)).+silk\\//i                                 // Kindle Fire HD\r\n            ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\r\n            /(sd|kf)[0349hijorstuw]+(\\sbuild\\/|\\)).+silk\\//i                    // Fire Phone\r\n            ], [[MODEL, 'Fire Phone'], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\r\n\r\n            // BlackBerry\r\n            /\\((playbook);[\\w\\s\\),;-]+(rim)/i                                   // BlackBerry PlayBook\r\n            ], [MODEL, VENDOR, [TYPE, TABLET]], [\r\n            /\\(bb10;\\s(\\w+)/i                                                   // BlackBerry 10\r\n            ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\r\n            \r\n            // Asus\r\n            /\\b(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus\\s7|padfone|p00c)/i\r\n            ], [MODEL, [VENDOR, 'ASUS'], [TYPE, TABLET]], [\r\n            /\\s(z[es]6[027][01][km][ls]|zenfone\\s\\d\\w?)\\b/i\r\n            ], [MODEL, [VENDOR, 'ASUS'], [TYPE, MOBILE]], [\r\n\r\n            // HTC\r\n            /(nexus\\s9)/i                                                       // HTC Nexus 9\r\n            ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\r\n            /(htc)[;_\\s-]{1,2}([\\w\\s]+(?=\\)|\\sbuild)|\\w+)/i,                    // HTC\r\n\r\n            // ZTE\r\n            /(zte)-(\\w*)/i,\r\n            /(alcatel|geeksphone|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\r\n            ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\r\n\r\n            // Acer\r\n            /droid[x\\d\\.\\s;]+\\s([ab][1-7]\\-?[0178a]\\d\\d?)/i\r\n            ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\r\n\r\n            // Meizu\r\n            /droid.+;\\s(m[1-5]\\snote)\\sbuild/i,\r\n            /\\bmz-([\\w-]{2,})/i\r\n            ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\r\n\r\n            // MIXED\r\n            /(blackberry)[\\s-]?(\\w+)/i,                                         // BlackBerry\r\n            /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\r\n                                                                                // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\r\n            /(hp)\\s([\\w\\s]+\\w)/i,                                               // HP iPAQ\r\n            /(asus)-?(\\w+)/i,                                                   // Asus\r\n            /(microsoft);\\s(lumia[\\s\\w]+)/i,                                    // Microsoft Lumia\r\n            /(lenovo)[_\\s-]?([\\w-]+)/i,                                         // Lenovo\r\n            /linux;.+(jolla);/i,                                                // Jolla\r\n            /droid.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i                              // OPPO\r\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n\r\n            /(archos)\\s(gamepad2?)/i,                                           // Archos\r\n            /(hp).+(touchpad)/i,                                                // HP TouchPad\r\n            /(hp).+(tablet)/i,                                                  // HP Tablet\r\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\r\n            /\\s(nook)[\\w\\s]+build\\/(\\w+)/i,                                     // Nook\r\n            /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i,                                 // Dell Streak\r\n            /[;\\/]\\s?(le[\\s\\-]+pan)[\\s\\-]+(\\w{1,9})\\sbuild/i,                   // Le Pan Tablets\r\n            /[;\\/]\\s?(trinity)[\\-\\s]*(t\\d{3})\\sbuild/i,                         // Trinity Tablets\r\n            /\\b(gigaset)[\\s\\-]+(q\\w{1,9})\\sbuild/i,                             // Gigaset Tablets\r\n            /\\b(vodafone)\\s([\\w\\s]+)(?:\\)|\\sbuild)/i                            // Vodafone\r\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\r\n\r\n            /\\s(surface\\sduo)\\s/i                                               // Surface Duo\r\n            ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, TABLET]], [\r\n            /\\s(u304aa)\\sbuild/i                                                // AT&T\r\n            ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\r\n            /sie-(\\w*)/i                                                        // Siemens\r\n            ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\r\n            /[;\\/]\\s?(rct\\w+)\\sbuild/i                                          // RCA Tablets\r\n            ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\r\n            /[;\\/\\s](venue[\\d\\s]{2,7})\\sbuild/i                                 // Dell Venue Tablets\r\n            ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\r\n            /[;\\/]\\s?(q(?:mv|ta)\\w+)\\sbuild/i                                   // Verizon Tablet\r\n            ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\r\n            /[;\\/]\\s(?:barnes[&\\s]+noble\\s|bn[rt])([\\w\\s\\+]*)\\sbuild/i          // Barnes & Noble Tablet\r\n            ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\r\n            /[;\\/]\\s(tm\\d{3}\\w+)\\sbuild/i\r\n            ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\r\n            /;\\s(k88)\\sbuild/i                                                  // ZTE K Series Tablet\r\n            ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\r\n            /;\\s(nx\\d{3}j)\\sbuild/i                                             // ZTE Nubia\r\n            ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\r\n            /[;\\/]\\s?(gen\\d{3})\\sbuild.*49h/i                                   // Swiss GEN Mobile\r\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\r\n            /[;\\/]\\s?(zur\\d{3})\\sbuild/i                                        // Swiss ZUR Tablet\r\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\r\n            /[;\\/]\\s?((zeki)?tb.*\\b)\\sbuild/i                                   // Zeki Tablets\r\n            ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\r\n            /[;\\/]\\s([yr]\\d{2})\\sbuild/i,\r\n            /[;\\/]\\s(dragon[\\-\\s]+touch\\s|dt)(\\w{5})\\sbuild/i                   // Dragon Touch Tablet\r\n            ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\r\n            /[;\\/]\\s?(ns-?\\w{0,9})\\sbuild/i                                     // Insignia Tablets\r\n            ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\r\n            /[;\\/]\\s?((nxa|Next)-?\\w{0,9})\\sbuild/i                             // NextBook Tablets\r\n            ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\r\n            /[;\\/]\\s?(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05]))\\sbuild/i\r\n            ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [                    // Voice Xtreme Phones\r\n            /[;\\/]\\s?(lvtel\\-)?(v1[12])\\sbuild/i                                // LvTel Phones\r\n            ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\r\n            /;\\s(ph-1)\\s/i\r\n            ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [                // Essential PH-1\r\n            /[;\\/]\\s?(v(100md|700na|7011|917g).*\\b)\\sbuild/i                    // Envizen Tablets\r\n            ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\r\n            /[;\\/]\\s?(trio[\\s\\w\\-\\.]+)\\sbuild/i                                 // MachSpeed Tablets\r\n            ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\r\n            /[;\\/]\\s?tu_(1491)\\sbuild/i                                         // Rotor Tablets\r\n            ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\r\n            /(shield[\\w\\s]+)\\sbuild/i                                           // Nvidia Shield Tablets\r\n            ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\r\n            /(sprint)\\s(\\w+)/i                                                  // Sprint Phones\r\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\r\n            /(kin\\.[onetw]{3})/i                                                // Microsoft Kin\r\n            ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\r\n            /droid\\s[\\d\\.]+;\\s(cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i     // Zebra\r\n            ], [MODEL, [VENDOR, 'Zebra'], [TYPE, TABLET]], [\r\n            /droid\\s[\\d\\.]+;\\s(ec30|ps20|tc[2-8]\\d[kx])\\)/i\r\n            ], [MODEL, [VENDOR, 'Zebra'], [TYPE, MOBILE]], [\r\n\r\n            ///////////////////\r\n            // CONSOLES\r\n            ///////////////////\r\n\r\n            /\\s(ouya)\\s/i,                                                      // Ouya\r\n            /(nintendo)\\s([wids3utch]+)/i                                       // Nintendo\r\n            ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\r\n            /droid.+;\\s(shield)\\sbuild/i                                        // Nvidia\r\n            ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\r\n            /(playstation\\s[345portablevi]+)/i                                  // Playstation\r\n            ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\r\n            /[\\s\\(;](xbox(?:\\sone)?(?!;\\sxbox))[\\s\\);]/i                        // Microsoft Xbox\r\n            ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\r\n\r\n            ///////////////////\r\n            // SMARTTVS\r\n            ///////////////////\r\n\r\n            /smart-tv.+(samsung)/i                                              // Samsung\r\n            ], [VENDOR, [TYPE, SMARTTV], MODEL], [\r\n            /hbbtv.+maple;(\\d+)/i\r\n            ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\r\n            /linux;\\snetcast.+smarttv/i,                                        // LG SmartTV\r\n            /lg\\snetcast\\.tv-201\\d/i\r\n            ], [[VENDOR, 'LG'], MODEL, [TYPE, SMARTTV]], [\r\n            /(apple)\\s?tv/i                                                     // Apple TV\r\n            ], [VENDOR, [MODEL, 'Apple TV'], [TYPE, SMARTTV]], [\r\n            /crkey/i                                                            // Google Chromecast\r\n            ], [[MODEL, 'Chromecast'], [VENDOR, 'Google'], [TYPE, SMARTTV]], [\r\n            /droid.+aft([\\w])(\\sbuild\\/|\\))/i                                   // Fire TV\r\n            ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [\r\n            /\\(dtv[\\);].+(aquos)/i                                              // Sharp\r\n            ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\r\n            /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i            // HbbTV devices\r\n            ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\r\n            /[\\s\\/\\(](android\\s|smart[-\\s]?|opera\\s)tv[;\\)\\s]/i                 // SmartTV from Unidentified Vendors\r\n            ], [[TYPE, SMARTTV]], [\r\n\r\n            ///////////////////\r\n            // WEARABLES\r\n            ///////////////////\r\n\r\n            /((pebble))app\\/[\\d\\.]+\\s/i                                         // Pebble\r\n            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\r\n            /droid.+;\\s(glass)\\s\\d/i                                            // Google Glass\r\n            ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\r\n            /droid\\s[\\d\\.]+;\\s(wt63?0{2,3})\\)/i\r\n            ], [MODEL, [VENDOR, 'Zebra'], [TYPE, WEARABLE]], [\r\n\r\n            ////////////////////\r\n            // MIXED (GENERIC)\r\n            ///////////////////\r\n\r\n            /droid .+?; ([^;]+?)(?: build|\\) applewebkit).+? mobile safari/i    // Android Phones from Unidentified Vendors\r\n            ], [MODEL, [TYPE, MOBILE]], [\r\n            /droid .+?;\\s([^;]+?)(?: build|\\) applewebkit).+?(?! mobile) safari/i  // Android Tablets from Unidentified Vendors\r\n            ], [MODEL, [TYPE, TABLET]], [\r\n            /\\s(tablet|tab)[;\\/]/i,                                             // Unidentifiable Tablet\r\n            /\\s(mobile)(?:[;\\/]|\\ssafari)/i                                     // Unidentifiable Mobile\r\n            ], [[TYPE, util.lowerize]], [\r\n            /(android[\\w\\.\\s\\-]{0,9});.+build/i                                 // Generic Android Device\r\n            ], [MODEL, [VENDOR, 'Generic']], [\r\n            /(phone)/i\r\n            ], [[TYPE, MOBILE]]\r\n        ],\r\n\r\n        engine : [[\r\n\r\n            /windows.+\\sedge\\/([\\w\\.]+)/i                                       // EdgeHTML\r\n            ], [VERSION, [NAME, 'EdgeHTML']], [\r\n\r\n            /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i                         // Blink\r\n            ], [VERSION, [NAME, 'Blink']], [\r\n\r\n            /(presto)\\/([\\w\\.]+)/i,                                             // Presto\r\n            /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i,\r\n                                                                                // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\r\n            /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i,                          // KHTML/Tasman/Links\r\n            /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i                                      // iCab\r\n            ], [NAME, VERSION], [\r\n\r\n            /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i                                     // Gecko\r\n            ], [VERSION, NAME]\r\n        ],\r\n\r\n        os : [[\r\n\r\n            // Windows\r\n            /microsoft\\s(windows)\\s(vista|xp)/i                                 // Windows (iTunes)\r\n            ], [NAME, VERSION], [\r\n            /(windows)\\snt\\s6\\.2;\\s(arm)/i,                                     // Windows RT\r\n            /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i,                   // Windows Phone\r\n            /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)(?!.+xbox)/i\r\n            ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\r\n            /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\r\n            ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\r\n\r\n            // iOS/macOS\r\n            /ip[honead]{2,4}\\b(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i,          // iOS\r\n            /cfnetwork\\/.+darwin/i\r\n            ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\r\n            /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\r\n            /(macintosh|mac(?=_powerpc)\\s)(?!.+haiku)/i                         // Mac OS\r\n            ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\r\n\r\n            // Mobile OSes\r\n            /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|sailfish|contiki)[\\/\\s-]?([\\w\\.]*)/i,\r\n                                                                                // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki/Sailfish OS\r\n            /(blackberry)\\w*\\/([\\w\\.]*)/i,                                      // Blackberry\r\n            /(tizen|kaios)[\\/\\s]([\\w\\.]+)/i                                     // Tizen/KaiOS\r\n            ], [NAME, VERSION], [\r\n            /\\(bb(10);/i                                                        // BlackBerry 10\r\n            ], [VERSION, [NAME, 'BlackBerry']], [\r\n            /(?:symbian\\s?os|symbos|s60(?=;)|series60)[\\/\\s-]?([\\w\\.]*)/i       // Symbian\r\n            ], [VERSION, [NAME, 'Symbian']], [\r\n            /\\((series40);/i                                                    // Series 40\r\n            ], [NAME], [\r\n            /mozilla.+\\(mobile;.+gecko.+firefox/i                               // Firefox OS\r\n            ], [[NAME, 'Firefox OS']], [\r\n            /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i                              // WebOS\r\n            ], [VERSION, [NAME, 'webOS']], [\r\n\r\n            // Google Chromecast\r\n            /crkey\\/([\\d\\.]+)/i                                                 // Google Chromecast\r\n            ], [VERSION, [NAME, 'Chromecast']], [\r\n\r\n            // Console\r\n            /(nintendo|playstation)\\s([wids345portablevuch]+)/i,                // Nintendo/Playstation\r\n            /(xbox);\\s+xbox\\s([^\\);]+)/i,                                       // Microsoft Xbox (360, One, X, S, Series X, Series S)\r\n\r\n            // GNU/Linux based\r\n            /(mint)[\\/\\s\\(\\)]?(\\w*)/i,                                          // Mint\r\n            /(mageia|vectorlinux)[;\\s]/i,                                       // Mageia/VectorLinux\r\n            /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?=\\slinux)|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus|raspbian)(?:\\sgnu\\/linux)?(?:\\slinux)?[\\/\\s-]?(?!chrom|package)([\\w\\.-]*)/i,\r\n                                                                                // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\r\n                                                                                // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\r\n            /(hurd|linux)\\s?([\\w\\.]*)/i,                                        // Hurd/Linux\r\n            /(gnu)\\s?([\\w\\.]*)/i                                                // GNU\r\n            ], [NAME, VERSION], [\r\n\r\n            /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i                                       // Chromium OS\r\n            ], [[NAME, 'Chromium OS'], VERSION],[\r\n\r\n            // Solaris\r\n            /(sunos)\\s?([\\w\\.\\d]*)/i                                            // Solaris\r\n            ], [[NAME, 'Solaris'], VERSION], [\r\n\r\n            // BSD based\r\n            /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i                    // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\r\n            ], [NAME, VERSION],[\r\n\r\n            /(haiku)\\s(\\w+)/i                                                   // Haiku\r\n            ], [NAME, VERSION],[\r\n\r\n            // Other\r\n            /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i,                             // Solaris\r\n            /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i,                                // AIX\r\n            /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms|fuchsia)/i,\r\n                                                                                // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS/Fuchsia\r\n            /(unix)\\s?([\\w\\.]*)/i                                               // UNIX\r\n            ], [NAME, VERSION]\r\n        ]\r\n    };\r\n\r\n\r\n    /////////////////\r\n    // Constructor\r\n    ////////////////\r\n    var UAParser = function (ua, extensions) {\r\n\r\n        if (typeof ua === 'object') {\r\n            extensions = ua;\r\n            ua = undefined$1;\r\n        }\r\n    \r\n        if (!(this instanceof UAParser)) {\r\n            return new UAParser(ua, extensions).getResult();\r\n        }\r\n    \r\n        var _ua = ua || ((typeof window !== 'undefined' && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\r\n        var _rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\r\n\r\n        this.getBrowser = function () {\r\n            var _browser = { name: undefined$1, version: undefined$1 };\r\n            mapper.rgx.call(_browser, _ua, _rgxmap.browser);\r\n            _browser.major = util.major(_browser.version); // deprecated\r\n            return _browser;\r\n        };\r\n        this.getCPU = function () {\r\n            var _cpu = { architecture: undefined$1 };\r\n            mapper.rgx.call(_cpu, _ua, _rgxmap.cpu);\r\n            return _cpu;\r\n        };\r\n        this.getDevice = function () {\r\n            var _device = { vendor: undefined$1, model: undefined$1, type: undefined$1 };\r\n            mapper.rgx.call(_device, _ua, _rgxmap.device);\r\n            return _device;\r\n        };\r\n        this.getEngine = function () {\r\n            var _engine = { name: undefined$1, version: undefined$1 };\r\n            mapper.rgx.call(_engine, _ua, _rgxmap.engine);\r\n            return _engine;\r\n        };\r\n        this.getOS = function () {\r\n            var _os = { name: undefined$1, version: undefined$1 };\r\n            mapper.rgx.call(_os, _ua, _rgxmap.os);\r\n            return _os;\r\n        };\r\n        this.getResult = function () {\r\n            return {\r\n                ua      : this.getUA(),\r\n                browser : this.getBrowser(),\r\n                engine  : this.getEngine(),\r\n                os      : this.getOS(),\r\n                device  : this.getDevice(),\r\n                cpu     : this.getCPU()\r\n            };\r\n        };\r\n        this.getUA = function () {\r\n            return _ua;\r\n        };\r\n        this.setUA = function (ua) {\r\n            _ua = ua.length > UA_MAX_LENGTH ? util.trim(ua, UA_MAX_LENGTH) : ua;\r\n            return this;\r\n        };\r\n        this.setUA(_ua);\r\n        return this;\r\n    };\r\n\r\n    UAParser.VERSION = LIBVERSION;\r\n    UAParser.BROWSER = {\r\n        NAME    : NAME,\r\n        MAJOR   : MAJOR, // deprecated\r\n        VERSION : VERSION\r\n    };\r\n    UAParser.CPU = {\r\n        ARCHITECTURE : ARCHITECTURE\r\n    };\r\n    UAParser.DEVICE = {\r\n        MODEL   : MODEL,\r\n        VENDOR  : VENDOR,\r\n        TYPE    : TYPE,\r\n        CONSOLE : CONSOLE,\r\n        MOBILE  : MOBILE,\r\n        SMARTTV : SMARTTV,\r\n        TABLET  : TABLET,\r\n        WEARABLE: WEARABLE,\r\n        EMBEDDED: EMBEDDED\r\n    };\r\n    UAParser.ENGINE = {\r\n        NAME    : NAME,\r\n        VERSION : VERSION\r\n    };\r\n    UAParser.OS = {\r\n        NAME    : NAME,\r\n        VERSION : VERSION\r\n    };\r\n\r\n    ///////////\r\n    // Export\r\n    //////////\r\n\r\n\r\n    // check js environment\r\n    {\r\n        // nodejs env\r\n        if ( module.exports) {\r\n            exports = module.exports = UAParser;\r\n        }\r\n        exports.UAParser = UAParser;\r\n    }\r\n\r\n    // jQuery/Zepto specific (optional)\r\n    // Note:\r\n    //   In AMD env the global scope should be kept clean, but jQuery is an exception.\r\n    //   jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\r\n    //   and we should catch that.\r\n    var $ = typeof window !== 'undefined' && (window.jQuery || window.Zepto);\r\n    if ($ && !$.ua) {\r\n        var parser = new UAParser();\r\n        $.ua = parser.getResult();\r\n        $.ua.get = function () {\r\n            return parser.getUA();\r\n        };\r\n        $.ua.set = function (uastring) {\r\n            parser.setUA(uastring);\r\n            var result = parser.getResult();\r\n            for (var prop in result) {\r\n                $.ua[prop] = result[prop];\r\n            }\r\n        };\r\n    }\r\n\r\n})(typeof window === 'object' ? window : commonjsGlobal);\n});\nvar uaParser_1 = uaParser.UAParser;\n\nif (typeof window !== 'undefined' && typeof window.UAParser === 'undefined') {\r\n    window.UAParser = uaParser;\r\n}\r\nvar uaInfo = null;\r\nvar getUAInfo = function () {\r\n    if (!uaInfo) {\r\n        // @ts-ignore\r\n        uaInfo = new uaParser().getResult();\r\n    }\r\n    return uaInfo;\r\n};\r\n/**\r\n * 判断是否当前浏览器环境是否是ie8/ie9来做cors兼容\r\n */\r\nfunction needCompatible() {\r\n    var uaInfo = getUAInfo();\r\n    if (uaInfo.browser.name !== 'IE') {\r\n        return false;\r\n    }\r\n    return uaInfo.browser.major && +uaInfo.browser.major <= 9;\r\n}\r\n// 从vue-router里面拿的……\r\nfunction supportsPushState$1() {\r\n    var ua = window.navigator.userAgent;\r\n    if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1)\r\n        && ua.indexOf('Mobile Safari') !== -1\r\n        && ua.indexOf('Chrome') === -1\r\n        && ua.indexOf('Windows Phone') === -1) {\r\n        return false;\r\n    }\r\n    return window.history && 'pushState' in window.history;\r\n}\r\nvar uaUtils = {\r\n    needCompatible: needCompatible,\r\n    supportsPushState: supportsPushState$1,\r\n    getUAInfo: getUAInfo\r\n};\n\nvar devices = [\r\n    ['a7', '640x1136', ['iPhone 5', 'iPhone 5s']],\r\n    ['a7', '1536x2048', ['iPad Air', 'iPad Mini 2', 'iPad Mini 3']],\r\n    ['a8', '640x1136', ['iPod touch (6th gen)']],\r\n    ['a8', '750x1334', ['iPhone 6']],\r\n    ['a8', '1242x2208', ['iPhone 6 Plus']],\r\n    ['a8', '1536x2048', ['iPad Air 2', 'iPad Mini 4']],\r\n    ['a9', '640x1136', ['iPhone SE']],\r\n    ['a9', '750x1334', ['iPhone 6s']],\r\n    ['a9', '1242x2208', ['iPhone 6s Plus']],\r\n    ['a9x', '1536x2048', ['iPad Pro (1st gen 9.7-inch)']],\r\n    ['a9x', '2048x2732', ['iPad Pro (1st gen 12.9-inch)']],\r\n    ['a10', '750x1334', ['iPhone 7']],\r\n    ['a10', '1242x2208', ['iPhone 7 Plus']],\r\n    ['a10x', '1668x2224', ['iPad Pro (2th gen 10.5-inch)']],\r\n    ['a10x', '2048x2732', ['iPad Pro (2th gen 12.9-inch)']],\r\n    ['a11', '750x1334', ['iPhone 8']],\r\n    ['a11', '1242x2208', ['iPhone 8 Plus']],\r\n    ['a11', '1125x2436', ['iPhone X']],\r\n    ['a12', '828x1792', ['iPhone Xr']],\r\n    ['a12', '1125x2436', ['iPhone Xs']],\r\n    ['a12', '1242x2688', ['iPhone Xs Max']],\r\n    ['a12x', '1668x2388', ['iPad Pro (3rd gen 11-inch)']],\r\n    ['a12x', '2048x2732', ['iPad Pro (3rd gen 12.9-inch)']],\r\n];\r\nvar getResolution = (function () {\r\n    var resolution = '';\r\n    return function () {\r\n        if (resolution) {\r\n            return resolution;\r\n        }\r\n        try {\r\n            var ratio = window.devicePixelRatio || 1;\r\n            var width = Math.floor(Math.min(screen.width, screen.height) * ratio); // 有的devicePixelRatio为小数，在此转为整数\r\n            var height = Math.floor(Math.max(screen.width, screen.height) * ratio);\r\n            resolution = width + \"x\" + height;\r\n            return resolution;\r\n        }\r\n        catch (err) {\r\n            return '';\r\n        }\r\n    };\r\n})();\r\nvar getGPU = (function () {\r\n    var gpu = '';\r\n    return function () {\r\n        if (gpu) {\r\n            return gpu;\r\n        }\r\n        try {\r\n            var canvas = document.createElement('canvas');\r\n            var glRenderContext = canvas.getContext('webgl');\r\n            if (glRenderContext) {\r\n                var debugRenderInfo = glRenderContext.getExtension('WEBGL_debug_renderer_info');\r\n                gpu = debugRenderInfo\r\n                    ? glRenderContext.getParameter(debugRenderInfo.UNMASKED_RENDERER_WEBGL)\r\n                    : 'unknown';\r\n            }\r\n            else {\r\n                gpu = 'unknown';\r\n            }\r\n            return gpu;\r\n        }\r\n        catch (err) {\r\n            return 'unknown';\r\n        }\r\n    };\r\n})();\r\nvar getModel = (function () {\r\n    var model = '';\r\n    return function () {\r\n        if (model) {\r\n            return model;\r\n        }\r\n        try {\r\n            var uaInfo = getUAInfo();\r\n            var inApp = isInApp();\r\n            // 非iOS设备走ua判断\r\n            // iOS端内也有问题= =妈的，傻逼苹果！应该是UIWebView特有的坑\r\n            // 链接:https://www.jianshu.com/p/bae4db1f08b2\r\n            if (uaInfo.os.name !== 'iOS' || inApp) {\r\n                return uaInfo.device.model || 'unknown';\r\n            }\r\n            var gpu = getGPU();\r\n            var resolution = getResolution();\r\n            var matches = gpu.match(/^apple\\s+([_a-z0-9-]+)\\s+gpu$/i);\r\n            if (!matches) {\r\n                model = 'unknown';\r\n                return model;\r\n            }\r\n            for (var _i = 0, devices_1 = devices; _i < devices_1.length; _i++) {\r\n                var device = devices_1[_i];\r\n                if (matches[1].toLocaleLowerCase() === device[0] && resolution === device[1]) {\r\n                    model = device[2].join(' or ');\r\n                    break;\r\n                }\r\n            }\r\n            model = model || uaInfo.device.model || 'unknown';\r\n            return model;\r\n        }\r\n        catch (err) {\r\n            return 'unknown';\r\n        }\r\n    };\r\n})();\r\nfunction isReactNative() {\r\n    var GLOBAL = typeof globalThis !== 'undefined' ? globalThis : (typeof window !== 'undefined' ? window : null);\r\n    return GLOBAL && GLOBAL.navigator && GLOBAL.navigator.product === 'ReactNative'\r\n        || GLOBAL && GLOBAL.ReactNative && GLOBAL.ReactNative.NativeModules;\r\n}\n\n/**\r\n * 事件\r\n */\r\n// 网络类型\r\nvar networkType = {\r\n    unknown: Base.NetworkPackageType.UNKNOWN_NETWORK,\r\n    none: Base.NetworkPackageType.NOT_CONNECTED,\r\n    wifi: Base.NetworkPackageType.WIFI,\r\n    '4g': Base.NetworkPackageType.MOBILE_4G,\r\n    '3g': Base.NetworkPackageType.MOBILE_3G,\r\n    '2g': Base.NetworkPackageType.MOBILE_2G,\r\n    'slow-2g': Base.NetworkPackageType.MOBILE_2G,\r\n};\r\n// 任务事件类型\r\nvar TaskOperations;\r\n(function (TaskOperations) {\r\n    TaskOperations[\"CLICK\"] = \"CLICK\";\r\n    TaskOperations[\"DOUBLE_CLICK\"] = \"DOUBLE_CLICK\";\r\n    TaskOperations[\"TRIPLE_CLICK\"] = \"TRIPLE_CLICK\";\r\n    TaskOperations[\"LONG_PRESS\"] = \"LONG_PRESS\";\r\n    TaskOperations[\"PULL\"] = \"PULL\";\r\n    TaskOperations[\"DRAG\"] = \"DRAG\";\r\n    TaskOperations[\"SCALE\"] = \"SCALE\";\r\n    TaskOperations[\"PULL_DOWN\"] = \"PULL_DOWN\";\r\n    TaskOperations[\"PULL_UP\"] = \"PULL_UP\";\r\n    // VIDEO = 'VIDEO',\r\n})(TaskOperations || (TaskOperations = {}));\r\n// 事件类型\r\nvar EventTypes;\r\n(function (EventTypes) {\r\n    EventTypes[\"PV\"] = \"PV\";\r\n    EventTypes[\"SHOW\"] = \"SHOW\";\r\n    // Costume\r\n    EventTypes[\"CUSTOM\"] = \"CUSTOM\";\r\n    EventTypes[\"RADAR\"] = \"RADAR\";\r\n})(EventTypes || (EventTypes = {}));\n\n// 常规业务事件自增 id key\r\nvar LOCAL_INCREAMENT_ID_KEY = 'WEBLOGGER_INCREAMENT_ID_KEY';\r\n// 自定义事件自增 id key\r\nvar LOCAL_CUSTOM_INCREAMENT_ID_KEY = 'WEBLOGGER_CUSTOM_INCREAMENT_ID_KEY';\r\n// Bridge 常规事件自增 id 本地缓存 key\r\nvar H5_SEQ_ID_KEY = 'WEBLOGGER_H5_SEQ_ID';\r\n// Bridge 自定义事件自增 id 本地缓存 key\r\nvar H5_CUSTOM_SEQ_ID_KEY = 'WEBLOGGER_H5_CUSTOM_SEQ_ID';\r\n// http 请求自增 id 本地缓存 key\r\nvar LOCAL_HTTP_INCREMENT_ID_KEY = 'WEBLOGGER_HTTP_SEQ_ID';\r\n// v2 自增 id 本地缓存 key\r\nvar V2_INCREMENT_ID_KEY = 'WEBLOGGER_V2_SEQ_ID';\r\nvar CHANNEL_INCREMENT_ID_KEY = 'WEBLOGGER_CHANNEL_SEQ_ID';\r\n// 自增 id 最大值\r\nvar maxId = 1e8;\r\n// 如果没有 localStorage 则使用运行时自增 id，用于非浏览器场景，比如 React Native\r\nvar runtimeIdMap = {};\r\nvar genId = function (key) {\r\n    try {\r\n        if (window && window.localStorage && typeof Storage !== 'undefined' && window.localStorage instanceof Storage) {\r\n            var id = Number(getLocalStorageItem(key)) || 0;\r\n            if (id + 1 > maxId) {\r\n                id = 0;\r\n            }\r\n            setLocalStorageItem(key, id + 1);\r\n            return id;\r\n        }\r\n    }\r\n    catch (err) { }\r\n    if (!runtimeIdMap[key]) {\r\n        runtimeIdMap[key] = 0;\r\n    }\r\n    return runtimeIdMap[key]++;\r\n};\r\n/**\r\n * 常规事件自增 id\r\n */\r\nvar getNomalIncrementId = function () {\r\n    return genId(LOCAL_INCREAMENT_ID_KEY);\r\n};\r\n/**\r\n * 自定义事件自增 id\r\n */\r\nvar getCustomIncrementId = function () {\r\n    return genId(LOCAL_CUSTOM_INCREAMENT_ID_KEY);\r\n};\r\n/**\r\n * 桥接常规事件自增 id\r\n */\r\nvar getBridgeNormalIncrementId = function () {\r\n    return genId(H5_SEQ_ID_KEY);\r\n};\r\n/**\r\n * 桥接自定义事件自增 id\r\n */\r\nvar getBridgeCustomIncrementId = function () {\r\n    return genId(H5_CUSTOM_SEQ_ID_KEY);\r\n};\r\n/**\r\n * http 请求自增 id\r\n */\r\nvar getHttpIncrementId = function () {\r\n    return genId(LOCAL_HTTP_INCREMENT_ID_KEY);\r\n};\r\n/**\r\n * v2 channel 自增 id\r\n */\r\nvar getChannelIncrementId = function (channel) {\r\n    if (channel === void 0) { channel = ''; }\r\n    return genId(CHANNEL_INCREMENT_ID_KEY + \"_\" + channel);\r\n};\r\n/**\r\n * v2 事件自增 id\r\n */\r\nvar getV2EventIncrementId = function (event) {\r\n    return genId(V2_INCREMENT_ID_KEY + \"_\" + event);\r\n};\n\nvar BASE = {\r\n    device_id: '',\r\n    global_id: '',\r\n    union_id: '',\r\n    user_id: '',\r\n    session_id: '',\r\n    product: 0,\r\n    channel: '',\r\n    version_name: '',\r\n    package_name: '',\r\n    product_name: '',\r\n    network_type: 'unknown',\r\n    container: Base.Container.H5,\r\n    service_name: '',\r\n    sub_biz: '',\r\n    need_encrypt: false,\r\n    safety_id: '',\r\n    experiment: [],\r\n    h5_extra_attr: {},\r\n};\r\nvar initPackageKeys = [\r\n    {\r\n        keys: ['identity_package', 'device_id'],\r\n        type: 'string',\r\n        validator: function (val) { return typeof val === 'string'; },\r\n    },\r\n    {\r\n        keys: ['identity_package', 'user_id'],\r\n        type: 'string',\r\n        validator: function (val) { return typeof val === 'string'; },\r\n    },\r\n    {\r\n        keys: ['identity_package', 'union_id'],\r\n        type: 'string',\r\n        validator: function (val) { return typeof val === 'string'; },\r\n    },\r\n    {\r\n        keys: ['identity_package', 'global_id'],\r\n        type: 'string',\r\n        validator: function (val) { return typeof val === 'string'; },\r\n    },\r\n    {\r\n        keys: ['app_package', 'product'],\r\n        type: 'number',\r\n        validator: function (val) { return typeof val === 'number'; },\r\n    },\r\n    {\r\n        keys: ['app_package', 'channel'],\r\n        type: 'string',\r\n        validator: function (val) { return typeof val === 'string'; },\r\n    },\r\n    {\r\n        keys: ['app_package', 'version_name'],\r\n        type: 'string',\r\n        validator: function (val) { return typeof val === 'string'; },\r\n    },\r\n    {\r\n        keys: ['app_package', 'package_name'],\r\n        type: 'string',\r\n        validator: function (val) { return typeof val === 'string'; },\r\n    },\r\n    {\r\n        keys: ['app_package', 'product_name'],\r\n        type: 'string',\r\n        validator: function (val) { return typeof val === 'string'; },\r\n    },\r\n    {\r\n        keys: ['app_package', 'platform'],\r\n        type: 'number',\r\n        validator: function (val) { return typeof val === 'number'; },\r\n    },\r\n    {\r\n        keys: ['experiment'],\r\n        type: 'Array',\r\n        validator: function (val) { return val instanceof Array; },\r\n    },\r\n    {\r\n        keys: ['service_name'],\r\n        type: 'string',\r\n        validator: function (val) { return typeof val === 'string'; },\r\n    },\r\n    {\r\n        keys: ['sub_biz'],\r\n        type: 'string',\r\n        validator: function (val) { return typeof val === 'string'; },\r\n    },\r\n    {\r\n        keys: ['need_encrypt'],\r\n        type: 'boolean',\r\n        validator: function (val) { return typeof val === 'boolean'; },\r\n    },\r\n    {\r\n        keys: ['safety_id'],\r\n        type: 'string',\r\n        validator: function (val) { return typeof val === 'string'; },\r\n    },\r\n    {\r\n        keys: ['h5_extra_attr'],\r\n        type: 'Object',\r\n        validator: function (val) { return val instanceof Object; },\r\n    },\r\n];\n\nvar ClientCommon;\r\n(function (ClientCommon) {\r\n    var Product;\r\n    (function (Product) {\r\n        Product[Product[\"UNKNOWN1\"] = 0] = \"UNKNOWN1\";\r\n        Product[Product[\"KUAISHOU\"] = 1] = \"KUAISHOU\";\r\n        Product[Product[\"KUAISHOU_GAME_EXTENSION\"] = 2] = \"KUAISHOU_GAME_EXTENSION\";\r\n        Product[Product[\"KUAISHOU_LIVE_MATE\"] = 3] = \"KUAISHOU_LIVE_MATE\";\r\n        Product[Product[\"KUAISHOU_VIDEO_EDITOR\"] = 4] = \"KUAISHOU_VIDEO_EDITOR\";\r\n        Product[Product[\"KWAI\"] = 5] = \"KWAI\";\r\n        Product[Product[\"KUAISHOU_H5\"] = 6] = \"KUAISHOU_H5\";\r\n        Product[Product[\"KWAI_LITE\"] = 7] = \"KWAI_LITE\";\r\n        Product[Product[\"KWAI_GO\"] = 8] = \"KWAI_GO\";\r\n        Product[Product[\"KUAISHOU_LIVE_MATE_WP\"] = 9] = \"KUAISHOU_LIVE_MATE_WP\";\r\n        Product[Product[\"WECHAT_SMALL_APP\"] = 12] = \"WECHAT_SMALL_APP\";\r\n        Product[Product[\"NEBULA\"] = 13] = \"NEBULA\";\r\n        Product[Product[\"KWAI_GAME_LIVE_PLUGIN\"] = 14] = \"KWAI_GAME_LIVE_PLUGIN\";\r\n        Product[Product[\"ACFUN_GAME_CENTER\"] = 15] = \"ACFUN_GAME_CENTER\";\r\n        Product[Product[\"GAME_DIANDIANXIAO\"] = 16] = \"GAME_DIANDIANXIAO\";\r\n        Product[Product[\"THANOS\"] = 17] = \"THANOS\";\r\n        Product[Product[\"UVIDEO\"] = 18] = \"UVIDEO\";\r\n        Product[Product[\"GAME_ZONE\"] = 19] = \"GAME_ZONE\";\r\n        Product[Product[\"KWAI_GO_BRAZIL\"] = 20] = \"KWAI_GO_BRAZIL\";\r\n        Product[Product[\"KWAI_GO_COMICS\"] = 21] = \"KWAI_GO_COMICS\";\r\n        Product[Product[\"KUAISHOU_ANTMAN\"] = 22] = \"KUAISHOU_ANTMAN\";\r\n        Product[Product[\"UVIDEO_V2\"] = 23] = \"UVIDEO_V2\";\r\n        Product[Product[\"KWAI_BULLDOG\"] = 24] = \"KWAI_BULLDOG\";\r\n        Product[Product[\"LOLITA_GLOBAL\"] = 25] = \"LOLITA_GLOBAL\";\r\n        Product[Product[\"KUAISHOU_NEBULA_ANTMAN\"] = 26] = \"KUAISHOU_NEBULA_ANTMAN\";\r\n        Product[Product[\"ZIKZAK\"] = 27] = \"ZIKZAK\";\r\n        Product[Product[\"KS_TV\"] = 28] = \"KS_TV\";\r\n        Product[Product[\"UVIDEO_LITE\"] = 29] = \"UVIDEO_LITE\";\r\n        Product[Product[\"KUAISHOU_VISION\"] = 30] = \"KUAISHOU_VISION\";\r\n    })(Product = ClientCommon.Product || (ClientCommon.Product = {}));\r\n    var TimePackageSyncStatus;\r\n    (function (TimePackageSyncStatus) {\r\n        TimePackageSyncStatus[TimePackageSyncStatus[\"UNSYNCHROIZED\"] = 0] = \"UNSYNCHROIZED\";\r\n        TimePackageSyncStatus[TimePackageSyncStatus[\"SYNCHROIZED\"] = 1] = \"SYNCHROIZED\";\r\n    })(TimePackageSyncStatus = ClientCommon.TimePackageSyncStatus || (ClientCommon.TimePackageSyncStatus = {}));\r\n})(ClientCommon || (ClientCommon = {}));\n\nvar _yoda;\r\nvar yodaNamespace = 'tool';\r\nvar yodaResolve = null;\r\nvar yodaAlready = false;\r\n/**\r\n * 检查 yoda 环境\r\n */\r\nvar checkYoda = function (yoda) {\r\n    if (yoda === void 0) { yoda = _yoda || typeof window !== 'undefined' && window.yoda; }\r\n    if (_yoda && _yoda.isInYoda)\r\n        return _yoda;\r\n    if (yoda && yoda.isInYoda) {\r\n        _yoda = yoda;\r\n        return _yoda;\r\n    }\r\n    return null;\r\n};\r\n/**\r\n * 初始化 yoda\r\n * @param namespace\r\n */\r\nvar initYoda = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n    var err_1;\r\n    return __generator(this, function (_a) {\r\n        switch (_a.label) {\r\n            case 0:\r\n                if (!_yoda || yodaAlready)\r\n                    return [2 /*return*/];\r\n                _a.label = 1;\r\n            case 1:\r\n                _a.trys.push([1, 6, , 7]);\r\n                if (!yodaResolve) return [3 /*break*/, 3];\r\n                return [4 /*yield*/, yodaResolve];\r\n            case 2:\r\n                _a.sent();\r\n                return [3 /*break*/, 5];\r\n            case 3:\r\n                yodaResolve = _yoda.ready();\r\n                return [4 /*yield*/, yodaResolve];\r\n            case 4:\r\n                _a.sent();\r\n                _yoda.register({\r\n                    namespace: 'webview',\r\n                    name: 'getPageLoadData',\r\n                });\r\n                _yoda.register({\r\n                    namespace: 'tool',\r\n                    name: 'setClientLog',\r\n                });\r\n                _yoda.register({\r\n                    namespace: 'tool',\r\n                    name: 'sendRadarLog',\r\n                });\r\n                _yoda.register({\r\n                    namespace: 'tool',\r\n                    name: 'getKswitchData',\r\n                });\r\n                _a.label = 5;\r\n            case 5:\r\n                yodaResolve = null;\r\n                yodaAlready = true;\r\n                return [3 /*break*/, 7];\r\n            case 6:\r\n                err_1 = _a.sent();\r\n                console.log('initYoda err', err_1);\r\n                return [3 /*break*/, 7];\r\n            case 7: return [2 /*return*/];\r\n        }\r\n    });\r\n}); };\r\n/**\r\n * 判断是否支持桥接接口\r\n * @param name\r\n * @param namespace\r\n */\r\nvar isSupportBridge = function (name, namespace) {\r\n    if (name === void 0) { name = 'setClientLog'; }\r\n    if (namespace === void 0) { namespace = yodaNamespace; }\r\n    return __awaiter(void 0, void 0, void 0, function () {\r\n        var isSupport, canUse, e_1;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    isSupport = false;\r\n                    _a.label = 1;\r\n                case 1:\r\n                    _a.trys.push([1, 6, , 7]);\r\n                    if (!_yoda) return [3 /*break*/, 5];\r\n                    if (!!yodaAlready) return [3 /*break*/, 3];\r\n                    return [4 /*yield*/, initYoda()];\r\n                case 2:\r\n                    _a.sent();\r\n                    _a.label = 3;\r\n                case 3: return [4 /*yield*/, _yoda.tool.canIUse({\r\n                        namespace: namespace,\r\n                        name: name,\r\n                    })];\r\n                case 4:\r\n                    canUse = (_a.sent()).canUse;\r\n                    isSupport = canUse;\r\n                    _a.label = 5;\r\n                case 5: return [3 /*break*/, 7];\r\n                case 6:\r\n                    e_1 = _a.sent();\r\n                    return [3 /*break*/, 7];\r\n                case 7: return [2 /*return*/, isSupport];\r\n            }\r\n        });\r\n    });\r\n};\r\n/**\r\n * 获取 webview 信息\r\n */\r\nvar getWebviewLoadPerf = function (options) {\r\n    if (options === void 0) { options = {}; }\r\n    return __awaiter(void 0, void 0, void 0, function () {\r\n        var err_2;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    if (!_yoda)\r\n                        return [2 /*return*/];\r\n                    _a.label = 1;\r\n                case 1:\r\n                    _a.trys.push([1, 5, , 6]);\r\n                    if (!!yodaAlready) return [3 /*break*/, 3];\r\n                    return [4 /*yield*/, initYoda()];\r\n                case 2:\r\n                    _a.sent();\r\n                    _a.label = 3;\r\n                case 3: return [4 /*yield*/, _yoda.webview['getPageLoadData'](options)];\r\n                case 4: return [2 /*return*/, _a.sent()];\r\n                case 5:\r\n                    err_2 = _a.sent();\r\n                    return [3 /*break*/, 6];\r\n                case 6: return [2 /*return*/];\r\n            }\r\n        });\r\n    });\r\n};\r\n/**\r\n * 发送雷达事件\r\n */\r\nvar sendRadarLog = function (options) {\r\n    if (options === void 0) { options = {}; }\r\n    return __awaiter(void 0, void 0, void 0, function () {\r\n        var err_3;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    if (!_yoda)\r\n                        return [2 /*return*/];\r\n                    _a.label = 1;\r\n                case 1:\r\n                    _a.trys.push([1, 5, , 6]);\r\n                    if (!!yodaAlready) return [3 /*break*/, 3];\r\n                    return [4 /*yield*/, initYoda()];\r\n                case 2:\r\n                    _a.sent();\r\n                    _a.label = 3;\r\n                case 3: return [4 /*yield*/, _yoda.tool['sendRadarLog'](options)];\r\n                case 4: return [2 /*return*/, _a.sent()];\r\n                case 5:\r\n                    err_3 = _a.sent();\r\n                    return [3 /*break*/, 6];\r\n                case 6: return [2 /*return*/];\r\n            }\r\n        });\r\n    });\r\n};\r\n/**\r\n * 发送业务事件\r\n * @param type\r\n * @param data\r\n */\r\nvar setClientLog = function (type, data) { return __awaiter(void 0, void 0, void 0, function () {\r\n    var err_4;\r\n    return __generator(this, function (_a) {\r\n        switch (_a.label) {\r\n            case 0:\r\n                if (!_yoda)\r\n                    return [2 /*return*/];\r\n                _a.label = 1;\r\n            case 1:\r\n                _a.trys.push([1, 5, , 6]);\r\n                if (!!yodaAlready) return [3 /*break*/, 3];\r\n                return [4 /*yield*/, initYoda()];\r\n            case 2:\r\n                _a.sent();\r\n                _a.label = 3;\r\n            case 3: return [4 /*yield*/, _yoda.tool['setClientLog']({\r\n                    type: type,\r\n                    data: data\r\n                })];\r\n            case 4: return [2 /*return*/, _a.sent()];\r\n            case 5:\r\n                err_4 = _a.sent();\r\n                return [3 /*break*/, 6];\r\n            case 6: return [2 /*return*/];\r\n        }\r\n    });\r\n}); };\r\n/**\r\n * 采样配置：\r\n * undefined 表示还未获取到配置；\r\n * null 表示没有配置\r\n */\r\nvar KSwitchSampling = undefined;\r\n/**\r\n * 获取 Kswitch 采样配置\r\n */\r\nvar getKSwitchSampling = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n    var canUse, res, kswitchData, data, host, pathname, err_5;\r\n    return __generator(this, function (_a) {\r\n        switch (_a.label) {\r\n            case 0:\r\n                if (!_yoda) {\r\n                    KSwitchSampling = null;\r\n                    return [2 /*return*/, KSwitchSampling];\r\n                }\r\n                if (typeof KSwitchSampling !== 'undefined')\r\n                    return [2 /*return*/, KSwitchSampling];\r\n                _a.label = 1;\r\n            case 1:\r\n                _a.trys.push([1, 6, , 7]);\r\n                if (!!yodaAlready) return [3 /*break*/, 3];\r\n                return [4 /*yield*/, initYoda()];\r\n            case 2:\r\n                _a.sent();\r\n                _a.label = 3;\r\n            case 3: return [4 /*yield*/, _yoda.tool.canIUse({\r\n                    namespace: 'tool',\r\n                    name: 'getKswitchData'\r\n                })];\r\n            case 4:\r\n                canUse = (_a.sent()).canUse;\r\n                if (!canUse) {\r\n                    KSwitchSampling = null;\r\n                    return [2 /*return*/, KSwitchSampling];\r\n                }\r\n                return [4 /*yield*/, _yoda.tool.getKswitchData({\r\n                        keys: [\r\n                            {\r\n                                key: 'webloggerSampling'\r\n                            }\r\n                        ]\r\n                    })];\r\n            case 5:\r\n                res = _a.sent();\r\n                if (res && res.data) {\r\n                    kswitchData = res.data[0];\r\n                    if (typeof kswitchData === 'string') {\r\n                        kswitchData = JSON.parse(kswitchData);\r\n                    }\r\n                    data = kswitchData ? kswitchData.value : null;\r\n                    if (data) {\r\n                        if (typeof data === 'string') {\r\n                            data = JSON.parse(data);\r\n                        }\r\n                        host = typeof location !== 'undefined' ? location.host : '*';\r\n                        for (pathname in data) {\r\n                            if (pathname === '*' || pathname.indexOf(host) !== -1) {\r\n                                if (!KSwitchSampling)\r\n                                    KSwitchSampling = {};\r\n                                KSwitchSampling[pathname] = data[pathname];\r\n                            }\r\n                        }\r\n                        if (KSwitchSampling)\r\n                            return [2 /*return*/, KSwitchSampling];\r\n                    }\r\n                }\r\n                return [3 /*break*/, 7];\r\n            case 6:\r\n                err_5 = _a.sent();\r\n                return [3 /*break*/, 7];\r\n            case 7:\r\n                KSwitchSampling = null;\r\n                return [2 /*return*/, KSwitchSampling];\r\n        }\r\n    });\r\n}); };\r\nvar deviceInfo = null;\r\nvar getDeviceInfo = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n    var enable, err_6;\r\n    return __generator(this, function (_a) {\r\n        switch (_a.label) {\r\n            case 0:\r\n                if (!_yoda)\r\n                    return [2 /*return*/, null];\r\n                return [4 /*yield*/, isSupportBridge('getDeviceInfo', 'system')];\r\n            case 1:\r\n                enable = _a.sent();\r\n                if (!enable) return [3 /*break*/, 5];\r\n                _a.label = 2;\r\n            case 2:\r\n                _a.trys.push([2, 4, , 5]);\r\n                return [4 /*yield*/, _yoda.system.getDeviceInfo()];\r\n            case 3:\r\n                deviceInfo = _a.sent();\r\n                return [2 /*return*/, deviceInfo];\r\n            case 4:\r\n                err_6 = _a.sent();\r\n                return [2 /*return*/, null];\r\n            case 5: return [2 /*return*/];\r\n        }\r\n    });\r\n}); };\r\nvar appInfo = null;\r\nvar getAppInfo = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n    var enable, err_7;\r\n    return __generator(this, function (_a) {\r\n        switch (_a.label) {\r\n            case 0:\r\n                if (!_yoda)\r\n                    return [2 /*return*/, null];\r\n                return [4 /*yield*/, isSupportBridge('getAppInfo', 'system')];\r\n            case 1:\r\n                enable = _a.sent();\r\n                if (!enable) return [3 /*break*/, 5];\r\n                _a.label = 2;\r\n            case 2:\r\n                _a.trys.push([2, 4, , 5]);\r\n                return [4 /*yield*/, _yoda.system.getAppInfo()];\r\n            case 3:\r\n                appInfo = _a.sent();\r\n                return [2 /*return*/, appInfo];\r\n            case 4:\r\n                err_7 = _a.sent();\r\n                return [2 /*return*/, null];\r\n            case 5: return [2 /*return*/];\r\n        }\r\n    });\r\n}); };\r\nvar yodaUtils = {\r\n    isSupportBridge: isSupportBridge,\r\n    getWebviewLoadPerf: getWebviewLoadPerf,\r\n    sendRadarLog: sendRadarLog,\r\n    setClientLog: setClientLog,\r\n    yodaAlready: yodaAlready,\r\n};\n\nfunction network() {\r\n    try {\r\n        var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;\r\n        if (!connection) {\r\n            // 不支持connection的全部为UNKNOWN_NETWORK\r\n            return networkType.unknown;\r\n        }\r\n        var type = connection.type;\r\n        var effectiveType = connection.effectiveType;\r\n        return networkType[type] || networkType[effectiveType] || networkType.unknown;\r\n    }\r\n    catch (err) {\r\n        return networkType.unknown;\r\n    }\r\n}\r\nfunction platform() {\r\n    try {\r\n        var uaInfo = getUAInfo();\r\n        if (!uaInfo.os.name) {\r\n            return Base.Platform.UNKNOWN_PLATFORM;\r\n        }\r\n        var inApp = isInApp();\r\n        if (uaInfo.os.name === 'Android') {\r\n            return inApp\r\n                ? Base.Platform.ANDROID_PHONE_H5\r\n                : Base.Platform.OUTSIDE_ANDROID_H5;\r\n        }\r\n        if (uaInfo.os.name === 'iOS') {\r\n            return inApp\r\n                ? Base.Platform.IPHONE_H5\r\n                : Base.Platform.OUTSIDE_IOS_H5;\r\n        }\r\n        return Base.Platform.PC_WEB;\r\n    }\r\n    catch (err) {\r\n        return Base.Platform.UNKNOWN_PLATFORM;\r\n    }\r\n}\r\nfunction container() {\r\n    if (isReactNative()) {\r\n        return Base.Container.REACT_NATIVE;\r\n    }\r\n    if (platform() === Base.Platform.PC_WEB) {\r\n        return Base.Container.WEB;\r\n    }\r\n    return Base.Container.H5;\r\n}\r\nfunction mergeOptions(target, options) {\r\n    if (!options) {\r\n        return;\r\n    }\r\n    Object.keys(options).forEach(function (key) {\r\n        var value = options[key];\r\n        var isNeedMerge = key !== 'h5_extra_attr';\r\n        if (typeof value === 'object' && isNeedMerge && target[key] !== undefined) {\r\n            mergeOptions(target[key], value);\r\n        }\r\n        else if (value) {\r\n            target[key] = value;\r\n        }\r\n    });\r\n}\r\nvar getOSVersion = function () {\r\n    try {\r\n        return getUAInfo().os.version || 'unknown';\r\n    }\r\n    catch (err) {\r\n        return 'unknown';\r\n    }\r\n};\r\nvar getDefaultUserId = function () { return getCookie('userId') || getCookie('userName') || (GlobalConfig.isV2 ? '0' : ''); };\r\nfunction transformCommonPackage(base, config) {\r\n    var initPackage = {\r\n        identity_package: {},\r\n        network_package: {},\r\n        app_package: {},\r\n        experiment: [],\r\n        service_name: '',\r\n        safety_id: '',\r\n    };\r\n    if (GlobalConfig.isV2 || GlobalConfig.isBridge) {\r\n        if (!base.product) {\r\n            base.product = ClientCommon.Product[base.product_name || getCookie('kpn')] || 1;\r\n        }\r\n        delete base.product_name;\r\n    }\r\n    else {\r\n        if (!base.product_name) {\r\n            base.product_name = getCookie('kpn') || 'KUAISHOU';\r\n        }\r\n        delete base.product;\r\n    }\r\n    if (!base.user_id) {\r\n        base.user_id = getDefaultUserId();\r\n    }\r\n    if (!base.device_id) {\r\n        base.device_id = generateDID();\r\n    }\r\n    if (!base.global_id) {\r\n        base.global_id = isInApp() && getCookie('egid') || '';\r\n    }\r\n    for (var _i = 0, initPackageKeys_1 = initPackageKeys; _i < initPackageKeys_1.length; _i++) {\r\n        var _a = initPackageKeys_1[_i], keys = _a.keys, validator = _a.validator, type = _a.type;\r\n        var baseKey = keys[0], subKey = keys[1];\r\n        var baseValue = base[subKey || baseKey];\r\n        if (!subKey) {\r\n            initPackage[baseKey] = base[baseKey];\r\n        }\r\n        else {\r\n            initPackage[baseKey][subKey] = base[subKey];\r\n        }\r\n        if (typeof baseValue !== 'undefined' && !validator(baseValue)) {\r\n            console.error(\"There is an error init value on '\" + (subKey || baseKey) + \"', \", \"the type should be '\" + type + \"', \", \"but your type is '\" + typeof baseValue + \"'\");\r\n        }\r\n    }\r\n    if (base.network_type) {\r\n        initPackage.network_package.type =\r\n            networkType[base.network_type] ||\r\n                networkType.unknown;\r\n    }\r\n    else {\r\n        delete initPackage.network_package;\r\n    }\r\n    return new CommonPackage(initPackage, config);\r\n}\r\nvar CommonPackage = /** @class */ (function () {\r\n    function CommonPackage(options, logConfig) {\r\n        this.identity_package = {\r\n            device_id: '',\r\n            global_id: '',\r\n            user_id: '',\r\n        };\r\n        this.app_package = {\r\n            product: undefined,\r\n            language: navigator.language,\r\n            platform: platform(),\r\n            container: container(),\r\n            package_name: '',\r\n            product_name: undefined,\r\n            version_name: getCookie('appver', undefined, true) || '',\r\n            channel: '',\r\n            version_code: 0,\r\n        };\r\n        this.device_package = {\r\n            os_version: getOSVersion(),\r\n            model: getModel(),\r\n            ua: navigator.userAgent,\r\n        };\r\n        this.need_encrypt = false;\r\n        this.network_package = {\r\n            type: network(),\r\n        };\r\n        this.sdk_version = GlobalConfig.isV2 ? undefined : '3.8.16';\r\n        mergeOptions(this, options);\r\n        this.checkMustProps();\r\n        if (this.app_package.version_name) {\r\n            var lastDotIndex = this.app_package.version_name.lastIndexOf('.');\r\n            this.app_package.version_code = +this.app_package.version_name.slice(lastDotIndex + 1) || 0;\r\n        }\r\n        // TODO: 这块参数有些混乱，options 和 logConfig 都可能传 h5_extra_attr 和 product_name 进来\r\n        var mixinOptions = __assign(__assign({}, options), logConfig);\r\n        this.h5_extra_attr = __assign(__assign(__assign({}, CommonPackage.DefaultH5ExtraAttr), mixinOptions.h5_extra_attr), { app_version_name: this.app_package.version_name, product_name: mixinOptions.product_name });\r\n    }\r\n    /**\r\n     * 检查必填参数\r\n     */\r\n    CommonPackage.prototype.checkMustProps = function () {\r\n        if (GlobalConfig.isV2 || GlobalConfig.isBridge) {\r\n            if (typeof this.app_package.product !== 'number') {\r\n                console.error('请设置有效的 product 值!');\r\n            }\r\n        }\r\n        else {\r\n            if (typeof this.app_package.product_name !== 'string') {\r\n                console.error('请设置有效的 product_name 值!');\r\n            }\r\n        }\r\n    };\r\n    CommonPackage.prototype.setAdditionalSeqIdPackage = function (eventType) {\r\n        this.additional_seq_id_package = {\r\n            channel: Base.AdditionalSeqIdPackageChannel.NORMAL,\r\n            channel_seq_id: getChannelIncrementId('NORMAL'),\r\n            custom_type: eventType,\r\n            custom_seq_id: getV2EventIncrementId(eventType),\r\n        };\r\n    };\r\n    // h5 id 自增，用在 Bridge 模式下验证 Bridge 丢失率\r\n    CommonPackage.prototype.increaseH5SeqId = function (isCustom) {\r\n        this.setH5ClientTimestamp();\r\n        this.h5_extra_attr.seq_id = isCustom ? getBridgeCustomIncrementId() : getBridgeNormalIncrementId();\r\n    };\r\n    // 在 bridge 模式下生成时间戳\r\n    CommonPackage.prototype.setH5ClientTimestamp = function () {\r\n        this.h5_extra_attr.client_timestamp = new Date().valueOf();\r\n    };\r\n    // HTTP 自增 id，每次发起请求连续递增，验证 http 请求丢失\r\n    CommonPackage.prototype.increaseHTTPSeqId = function () {\r\n        this.setH5ClientTimestamp();\r\n        this.h5_extra_attr.http_seq_id = getHttpIncrementId();\r\n    };\r\n    CommonPackage.prototype.setChannel = function () {\r\n        // for radar_channel\r\n        // parseQueryString 居然需要自己去掉问号。。\r\n        if (this.app_package.channel) {\r\n            this.h5_extra_attr.channel = this.app_package.channel;\r\n            return;\r\n        }\r\n        var search = window && window.location && window.location.search || '';\r\n        var queryStringRes = parseQueryString(search.slice(1));\r\n        var queryChannel = queryStringRes ? queryStringRes.channel : '';\r\n        this.h5_extra_attr.channel = queryChannel || getCookie('channel') || '';\r\n    };\r\n    CommonPackage.prototype.getVersionName = function () {\r\n        return this.app_package.version_name;\r\n    };\r\n    CommonPackage.prototype.getChannel = function () {\r\n        return this.h5_extra_attr.channel;\r\n    };\r\n    CommonPackage.prototype.toJSON = function () {\r\n        if (!this.identity_package.user_id) {\r\n            this.identity_package.user_id = getDefaultUserId();\r\n        }\r\n        var json = __assign(__assign({}, cloneDeep(this)), { \r\n            // 埋点上报时，h5_extra_attr 要处理成字符串\r\n            // @ts-ignore\r\n            h5_extra_attr: JSON.stringify(this.h5_extra_attr) });\r\n        return json;\r\n    };\r\n    // 设置 bridge 信息\r\n    CommonPackage.prototype.setBridgeInfo = function (info) {\r\n        if (info) {\r\n            this.h5_extra_attr.bridge_info = info;\r\n        }\r\n    };\r\n    CommonPackage.prototype.getH5ExtraAttr = function () {\r\n        return this.h5_extra_attr;\r\n    };\r\n    CommonPackage.prototype.update = function (options) {\r\n        var _this = this;\r\n        if (typeof options !== 'object')\r\n            return;\r\n        var commonPackage = this;\r\n        Object.keys(options).forEach(function (key) {\r\n            var newValue = options[key];\r\n            // hasOwnProperty 只检测属性\r\n            if (_this.hasOwnProperty(key)) {\r\n                // 对于 newValue 是对象\r\n                if (typeof commonPackage[key] === 'object' && typeof newValue === 'object'\r\n                    && !(Array.isArray(commonPackage[key]) && newValue)) {\r\n                    newValue = __assign(__assign({}, commonPackage[key]), newValue);\r\n                }\r\n                commonPackage[key] = newValue;\r\n            }\r\n            else {\r\n                var innerPackageKeys = ['identity_package', 'app_package', 'device_package'];\r\n                for (var _i = 0, innerPackageKeys_1 = innerPackageKeys; _i < innerPackageKeys_1.length; _i++) {\r\n                    var innerKey = innerPackageKeys_1[_i];\r\n                    if (key in commonPackage[innerKey]) {\r\n                        commonPackage[innerKey][key] = newValue;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    };\r\n    CommonPackage.prototype.initYodaDeviceInfo = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var info;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0: return [4 /*yield*/, getDeviceInfo()];\r\n                    case 1:\r\n                        info = _a.sent();\r\n                        if (info && info.mod) {\r\n                            this.device_package.model = info.mod;\r\n                        }\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    CommonPackage.prototype.initYodaAppInfo = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var info;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0: return [4 /*yield*/, getAppInfo()];\r\n                    case 1:\r\n                        info = _a.sent();\r\n                        if (info) {\r\n                            info.did && (this.identity_package.device_id = info.did);\r\n                            info.userId && !this.identity_package.user_id && (this.identity_package.user_id = info.userId);\r\n                            info.appver && (this.app_package.version_name = info.appver);\r\n                        }\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    // 默认 H5 附加信息\r\n    CommonPackage.DefaultH5ExtraAttr = {\r\n        host_product: getDefaultKpn(),\r\n        app_version_name: getCookie('appver', undefined, true) || '',\r\n        resolution: getResolution(),\r\n        domain: window && window.location && window.location.origin || '',\r\n        sdk_name: 'webLogger',\r\n        sdk_version: '3.8.16',\r\n    };\r\n    return CommonPackage;\r\n}());\n\n/**\r\n * @file iframe发送log\r\n *\r\n * @author 天翔Skyline(skyline0705@gmail.com)\r\n * May 14, 2019\r\n */\r\nvar commonHideStyle = [\r\n    'display: none;',\r\n    'position: absolute;',\r\n    'top: -9999px',\r\n    'left: -9999px',\r\n].join('');\r\nfunction createIframe(target) {\r\n    var iframe = document.createElement('iframe');\r\n    document.body.appendChild(iframe);\r\n    iframe.contentWindow.name = target;\r\n    iframe.style.cssText = commonHideStyle;\r\n    return iframe;\r\n}\r\nfunction createForm(target, url) {\r\n    var form = document.createElement('form');\r\n    document.body.appendChild(form);\r\n    form.target = target;\r\n    form.enctype = 'multipart/form-data';\r\n    form.method = 'POST';\r\n    form.action = url;\r\n    form.style.cssText = commonHideStyle;\r\n    return form;\r\n}\r\nfunction appendDataToForm(form, data) {\r\n    for (var key in data) {\r\n        if (data.hasOwnProperty(key)) {\r\n            var input = document.createElement('input');\r\n            input.name = key;\r\n            input.value = JSON.stringify(data[key]);\r\n            form.appendChild(input);\r\n        }\r\n    }\r\n}\r\nfunction sendData(_a, callback) {\r\n    var url = _a.url, data = _a.data;\r\n    var target = \"iframe_\" + nanoId();\r\n    var iframe = createIframe(target);\r\n    var form = createForm(target, url);\r\n    appendDataToForm(form, data);\r\n    try {\r\n        form.submit();\r\n    }\r\n    catch (e) {\r\n        return callback && callback(e);\r\n    }\r\n    iframe.onload = function () {\r\n        document.body.removeChild(iframe);\r\n        document.body.removeChild(form);\r\n        iframe = null;\r\n        form = null;\r\n    };\r\n    callback && callback();\r\n}\n\nfunction send(_a, callback) {\r\n    var url = _a.url, data = _a.data, timeout = _a.timeout;\r\n    var xhr = new XMLHttpRequest();\r\n    // async 同步情况会报错，而且影响性能，取消使用同步\r\n    xhr.open('POST', url);\r\n    if (timeout) {\r\n        xhr.timeout = timeout;\r\n    }\r\n    xhr.onload = function () {\r\n        var err;\r\n        if (xhr.status < 200 || (xhr.status >= 300 && xhr.status !== 304)) {\r\n            err = xhr.response || xhr.status || 'unknonw error';\r\n        }\r\n        callback && callback(err);\r\n    };\r\n    xhr.ontimeout = xhr.onerror = function (e) {\r\n        callback && callback(e);\r\n    };\r\n    xhr.send(data);\r\n}\n\nvar enableBeacon = false;\r\n(function () {\r\n    try {\r\n        var uaInfo = getUAInfo();\r\n        var forceUseBeacon = uaInfo.browser.name === 'Chrome'\r\n            && +(uaInfo.browser.major || 0) > 77;\r\n        enableBeacon = forceUseBeacon && typeof window !== 'undefined' && typeof window.navigator !== 'undefined' && typeof window.navigator.sendBeacon === 'function';\r\n    }\r\n    catch (err) { }\r\n})();\r\nfunction send$1(_a) {\r\n    var url = _a.url, data = _a.data;\r\n    if (!enableBeacon)\r\n        return false;\r\n    return navigator.sendBeacon(url, data);\r\n}\n\n/**\r\n * @file IO工具函数\r\n *\r\n * @author 天翔Skyline(skyline0705@gmail.com)\r\n * May 15, 2019\r\n */\r\nfunction transToFormData(data) {\r\n    var formData = new FormData();\r\n    for (var key in data) {\r\n        if (data.hasOwnProperty(key)) {\r\n            formData.append(key, JSON.stringify(data[key]));\r\n        }\r\n    }\r\n    return formData;\r\n}\n\nfunction sendData$1(_a, callback) {\r\n    var url = _a.url, data = _a.data, timeout = _a.timeout, format = _a.format;\r\n    // 使用 iframe 发送\r\n    if (needCompatible()) {\r\n        return sendData({ url: url, data: data }, callback);\r\n    }\r\n    data = format && format === 'string' ? JSON.stringify(data) : transToFormData(data);\r\n    // 优先走 sendBeacon，如果成功把数据添加到 beacon 通道，则认为发送成功\r\n    if (send$1({ url: url, data: data })) {\r\n        return callback && callback();\r\n    }\r\n    send({ url: url, data: data, timeout: timeout }, callback);\r\n}\n\n// 测试环境 url\r\nvar devHost = 'https://webapi.test.gifshow.com/';\r\nvar dataTrackHost = 'https://data-track.corp.kuaishou.com';\r\nvar testHost = dataTrackHost + '/';\r\nvar isDataTrack = function (host) { return host.indexOf('data-track.corp') !== -1; };\r\nvar xhrGet = function (url) {\r\n    try {\r\n        var xhr = new XMLHttpRequest();\r\n        xhr.open('GET', url);\r\n        xhr.send();\r\n    }\r\n    catch (err) { }\r\n};\r\nvar getReportUrl = function (viewHost, reportHost, sessionId) {\r\n    if (sessionId === void 0) { sessionId = generateDID(); }\r\n    var loggerUrl = isDataTrack(reportHost) ? dataTrackHost + \"/v3/#/logger/index?sessionId=\" + sessionId : viewHost + \"/#/home?sessionId=\" + sessionId;\r\n    console.log(\"%c\\u65E5\\u5FD7\\u6293\\u5305\\u6821\\u9A8C: %c\" + loggerUrl, 'color:#1abf89;font-size:1.4em;line-height:2.4em;', 'font-size:1.2em;');\r\n    return reportHost + \"/\" + sessionId + \"/\";\r\n};\r\n/**\r\n * logger 平台上报 url\r\n */\r\nvar getLoggerReportUrl = function () {\r\n    var did = generateDID();\r\n    xhrGet(dataTrackHost + \"/rest/\" + did);\r\n    return getReportUrl('', dataTrackHost + \"/rest\", did);\r\n};\r\n/**\r\n * 端内环境根据cookie值切换发送地址\r\n */\r\nvar getCookieReportUrl = function () {\r\n    try {\r\n        var webloggerSwitch = getCookie('weblogger_switch') ||\r\n            typeof sessionStorage !== 'undefined' && sessionStorage.getItem('weblogger_switch');\r\n        if (!webloggerSwitch)\r\n            return;\r\n        var _a = JSON.parse(webloggerSwitch), loggerSessionId = _a.loggerSessionId, reportHost = _a.reportHost, loggerHost = _a.loggerHost, handshakeApi = _a.handshakeApi;\r\n        // 若cookie内存在loggerSessionId，则会自动切换发送路径到测试地址，否则返回空，代表不切换地址\r\n        if (!loggerSessionId || !isDataTrack(reportHost)) {\r\n            return '';\r\n        }\r\n        xhrGet(handshakeApi || reportHost + \"/\" + loggerSessionId);\r\n        return getReportUrl(loggerHost, reportHost, loggerSessionId);\r\n    }\r\n    catch (err) {\r\n        return '';\r\n    }\r\n};\r\n/**\r\n * 端外H5 or pc页面根据当前的url参数切换发送地址\r\n */\r\nvar getWebPageReportUrl = function (url) {\r\n    if (url === void 0) { url = location.href; }\r\n    var queryIndex = url.lastIndexOf('?');\r\n    if (queryIndex === -1) {\r\n        return '';\r\n    }\r\n    var queryString = url.slice(queryIndex + 1);\r\n    var webloggerSwitch = parseQueryString(queryString).webloggerSwitch;\r\n    if (!webloggerSwitch) {\r\n        return '';\r\n    }\r\n    try {\r\n        var data = decodeURIComponent(webloggerSwitch);\r\n        var _a = JSON.parse(data), loggerSessionId = _a.loggerSessionId, reportHost = _a.reportHost, loggerHost = _a.loggerHost, handshakeApi = _a.handshakeApi;\r\n        if (!loggerSessionId || !isDataTrack(reportHost)) {\r\n            return '';\r\n        }\r\n        // 存到 sessionStorage 中使同域名页面都可以调试\r\n        if (typeof sessionStorage !== 'undefined') {\r\n            sessionStorage.setItem('weblogger_switch', data);\r\n        }\r\n        xhrGet(handshakeApi || reportHost + \"/\" + loggerSessionId);\r\n        return getReportUrl(loggerHost, reportHost, loggerSessionId);\r\n    }\r\n    catch (err) {\r\n        return '';\r\n    }\r\n};\r\n// 不同环境的接口\r\nvar Hosts = {\r\n    v2: {\r\n        // 正式环境随机域名分流\r\n        production: ['https://wlog.ksapisrv.com/', 'https://wlog.gifshow.com/'][Math.round(Math.random())],\r\n        development: devHost,\r\n        test: testHost\r\n    },\r\n    v3: {\r\n        production: 'https://log-sdk.ksapisrv.com/',\r\n        development: devHost,\r\n        test: testHost\r\n    }\r\n};\r\nvar Apis = {\r\n    v2: 'rest/kd/log/collect?_json=1&biz=',\r\n    v3: 'rest/wd/common/log/collect/misc2',\r\n    // 雷达都上报到 v3\r\n    radar: 'rest/wd/common/log/collect/radar'\r\n};\r\nvar getUrl = function (env, radar, proto) {\r\n    if (env === void 0) { env = 'production'; }\r\n    if (radar === void 0) { radar = false; }\r\n    if (proto === void 0) { proto = GlobalConfig.proto; }\r\n    if (['production', 'test', 'development'].indexOf(env) === -1) {\r\n        return env + Apis[proto];\r\n    }\r\n    if (radar) {\r\n        return Hosts.v3[env] + Apis.radar;\r\n    }\r\n    return Hosts[proto][env] + Apis[proto];\r\n};\r\n// 是否未排干日志队列\r\nvar drained = false;\r\nvar BatchLog = /** @class */ (function () {\r\n    function BatchLog() {\r\n        var _this = this;\r\n        // 存储待发送的消息\r\n        this.logQueue = [];\r\n        // 存储失败或者超时的数据\r\n        this.errorQueue = [];\r\n        this.sendingQuery = {};\r\n        this.url = '';\r\n        this.radarUrl = '';\r\n        /**\r\n         * 清空当前日志队列\r\n         * @param callback\r\n         */\r\n        this.flush = function (callback) {\r\n            _this.sendLogs(_this.logQueue, callback);\r\n            _this.logQueue = [];\r\n        };\r\n        /**\r\n         * 页面关闭前排干所有未发送的和发送失败的日志\r\n         */\r\n        this.drain = function () {\r\n            _this.flush();\r\n            _this.flushErrorLogs();\r\n            drained = true;\r\n            // 处理 beforunload 中断，实际页面未退出的情况\r\n            setTimeout(function () {\r\n                drained = false;\r\n            }, 1000);\r\n            /* 会导致重复率升高，春节后再看服务端去重后处理\r\n                const logPackages = this.errorQueue.slice(0)\r\n                this.errorQueue = [];\r\n                this.sendingQuery = {};\r\n                if (this.logQueue.length) {\r\n                    logPackages.unshift(this.buildLogPackage(this.logQueue));\r\n                    this.logQueue = [];\r\n                }\r\n                const unSendLogPackages: LogPackage[] = [];\r\n                logPackages.forEach(logPackage => {\r\n                    this.beforeStore(logPackage);\r\n                    unSendLogPackages.push(logPackage);\r\n                });\r\n                // 不支持 sendBeacon 或者添加到 beacon 失败的日志则存到本地\r\n                if (unSendLogPackages.length) {\r\n                    storeLogs(unSendLogPackages.concat(\r\n                        Object.keys(this.sendingQuery).map(key => this.sendingQuery[key])\r\n                    ));\r\n                }\r\n            */\r\n        };\r\n    }\r\n    /*\r\n    constructor() {\r\n        this.compensateLogs();\r\n    }\r\n    */\r\n    BatchLog.prototype.updateBase = function (commonPackage) {\r\n        this.commonPackage = commonPackage;\r\n    };\r\n    /**\r\n     * 根据配置生成上报的 url 地址\r\n     */\r\n    BatchLog.prototype.updateUrls = function () {\r\n        var _a = this.config, env = _a.env, logger = _a.logger;\r\n        var url = getCookieReportUrl() || getWebPageReportUrl();\r\n        if (url) {\r\n            this.radarUrl = this.url = getUrl(url);\r\n            GlobalConfig.isDebug = true;\r\n        }\r\n        else if (logger || env === 'logger') {\r\n            var loggerEnv = getLoggerReportUrl();\r\n            this.url = getUrl(loggerEnv);\r\n            this.radarUrl = this.url.indexOf(Apis.v2) !== -1 ? this.url.replace(Apis.v2, Apis.radar) : this.url.replace(Apis.v3, Apis.radar);\r\n            GlobalConfig.isDebug = true;\r\n        }\r\n        else if (env && /^(https?:)?\\/\\//.test(env)) {\r\n            this.url = env;\r\n            this.radarUrl = this.url.replace(Apis.v3, Apis.radar);\r\n        }\r\n        else {\r\n            this.url = getUrl(env);\r\n            this.radarUrl = getUrl(env, true);\r\n        }\r\n    };\r\n    BatchLog.prototype.init = function (config, commonPackage) {\r\n        this.config = (__assign(__assign({}, this.config), config));\r\n        this.updateUrls();\r\n        this.updateBase(commonPackage);\r\n    };\r\n    /**\r\n     * 之所以使用 JSON 而不是 commonPackage 对象，是因为对象可能会变化，而 JSON 则是当时的一个快照，一旦生成不会变化\r\n     */\r\n    BatchLog.prototype.getCommonPackageJSON = function () {\r\n        if (!GlobalConfig.isV2) {\r\n            this.commonPackage.increaseHTTPSeqId();\r\n        }\r\n        return this.commonPackage.toJSON();\r\n    };\r\n    /**\r\n     * 每个 logPackage 包含了所有上报所需的信息，上报地址和上报数据\r\n     * @param logs\r\n     * @param url\r\n     */\r\n    BatchLog.prototype.buildLogPackage = function (logs, url) {\r\n        if (url === void 0) { url = this.url; }\r\n        if (GlobalConfig.isV2) {\r\n            return this.buildV2Package(logs, url);\r\n        }\r\n        return this.buildV3Package(logs, url);\r\n    };\r\n    BatchLog.prototype.buildV2Package = function (logs, url) {\r\n        if (url === void 0) { url = this.url; }\r\n        return {\r\n            url: url,\r\n            data: {\r\n                log: {\r\n                    event: logs\r\n                }\r\n            },\r\n            format: 'string',\r\n        };\r\n    };\r\n    BatchLog.prototype.buildV3Package = function (logs, url) {\r\n        if (url === void 0) { url = this.url; }\r\n        return {\r\n            url: url,\r\n            data: {\r\n                common: this.getCommonPackageJSON(),\r\n                logs: {\r\n                    // 格式对应PB定义中RawBatchReportEvent\r\n                    event: logs,\r\n                },\r\n            },\r\n            format: 'formdata',\r\n        };\r\n    };\r\n    /**\r\n     * 批量发送日志\r\n     * @param logs\r\n     * @param callback\r\n     */\r\n    BatchLog.prototype.sendLogs = function (logs, callback) {\r\n        var _this = this;\r\n        if (!logs || !logs.length) {\r\n            return typeof callback === 'function' && callback();\r\n        }\r\n        var data = this.buildLogPackage(logs);\r\n        // 如果已经调过 drained 方法应该直接走 drain 逻辑，但是在浏览器中会造成重复\r\n        // if (drained) {\r\n        //     this.beforeStore(data);\r\n        //     return storeLogs([data]);\r\n        // }\r\n        // data.seqid = seqid ++;\r\n        var callbackFn = function (error) {\r\n            // if (typeof data.seqid !== 'undefined') {\r\n            //     delete this.sendingQuery[data.seqid];\r\n            // }\r\n            // 如果网络异常，日志发送失败，则将错误日志缓存，在网络恢复时清空一次错误队列\r\n            if (error) {\r\n                _this.errHandler(data);\r\n            }\r\n            else {\r\n                _this.flushErrorLogs();\r\n            }\r\n            typeof callback === 'function' && callback(error);\r\n        };\r\n        // this.sendingQuery[data.seqid] = data;\r\n        this.sendPackage(data, callbackFn);\r\n    };\r\n    /**\r\n     * 直接发送一个数据包，包含 url 和 日志\r\n     * @param data\r\n     * @param callback\r\n     */\r\n    BatchLog.prototype.sendPackage = function (data, callback) {\r\n        var _a = this.config, timeout = _a.timeout, sender = _a.sender;\r\n        try {\r\n            // 如果业务方配置了 sender\r\n            if (typeof sender === 'function') {\r\n                sender(data, callback);\r\n            }\r\n            else {\r\n                sendData$1(__assign(__assign({}, data), { timeout: timeout }), callback);\r\n            }\r\n        }\r\n        catch (err) {\r\n            typeof callback === 'function' && callback(err);\r\n        }\r\n    };\r\n    /**\r\n     * 日志存储前标识处理\r\n     * @param logPackage\r\n     */\r\n    /* 会导致重复率升高，春节后再看服务端去重后处理\r\n    beforeStore(logPackage: LogPackage) {\r\n        // 使用 puppeteer 测试 sendBeacon 页面关闭前请求成功率低，这里使用 sendBeacon 发送，同时保存本地\r\n        this.sendPackage(logPackage);\r\n        // 标记日志是否来自存储\r\n        if ((logPackage as ClientLogV3.ReportPackage).data.common) {\r\n            (logPackage as ClientLogV3.ReportPackage).data.common.h5_extra_attr.stored = true;\r\n        } else {\r\n            (logPackage as ClientLogV2.ReportPackage).data.log.event.forEach(log => log.common_package.h5_extra_attr.stored = true);\r\n        }\r\n    }\r\n    */\r\n    BatchLog.prototype.send = function (data, immediate, callback) {\r\n        var _this = this;\r\n        if (immediate === void 0) { immediate = false; }\r\n        // v2 是每个 log 都有 common_package\r\n        if (GlobalConfig.isV2) {\r\n            // v2 log 的自增 id 是存在 common 信息中\r\n            this.commonPackage.setAdditionalSeqIdPackage(data.getEventType());\r\n            data.common_package = this.getCommonPackageJSON();\r\n        }\r\n        // 立即发送马上插入发送队列\r\n        // 立即上报可以设置回调函数，延迟上报没有\r\n        if (immediate || drained) {\r\n            this.sendLogs([data], callback);\r\n            return;\r\n        }\r\n        this.logQueue.push(data);\r\n        // 积攒超过最大\r\n        if (this.logQueue.length >= 50) {\r\n            this.flush();\r\n            return;\r\n        }\r\n        // debounce逻辑\r\n        clearTimeout(this.batchWaitTimer);\r\n        this.batchWaitTimer = setTimeout(function () {\r\n            _this.flush();\r\n        }, this.config.wait);\r\n    };\r\n    /**\r\n     * 雷达专用上报（雷达上报接口和其他事件上报接口做了区分，用于分流统计）\r\n     * @param radar\r\n     */\r\n    BatchLog.prototype.sendRadar = function (radar) {\r\n        var radarPackage = this.buildV3Package([radar], this.radarUrl);\r\n        this.sendPackage(radarPackage);\r\n    };\r\n    /**\r\n     * 日志上报出错处理，一般为网络异常\r\n     * @param logPackage\r\n     */\r\n    BatchLog.prototype.errHandler = function (logPackage) {\r\n        var _a;\r\n        if (GlobalConfig.isV2) {\r\n            this.errorQueue.unshift(logPackage);\r\n            return;\r\n        }\r\n        var data = logPackage.data;\r\n        if (!data.logs.event.length)\r\n            return;\r\n        // http_seq_id 和 client_timestamp 不是必须的，合并时删除\r\n        delete data.common.h5_extra_attr.http_seq_id;\r\n        delete data.common.h5_extra_attr.client_timestamp;\r\n        // 尝试合并相同 url 和 common 的请求\r\n        var merged = false;\r\n        for (var i = 0; i < this.errorQueue.length; i++) {\r\n            var currentLog = this.errorQueue[i];\r\n            if (currentLog.url === logPackage.url &&\r\n                currentLog.data.logs.event.length + data.logs.event.length <= 100 &&\r\n                JSON.stringify(currentLog.data.common) === JSON.stringify(data.common)) {\r\n                merged = true;\r\n                (_a = currentLog.data.logs.event).push.apply(_a, data.logs.event);\r\n                break;\r\n            }\r\n        }\r\n        if (!merged) {\r\n            // 先进后出\r\n            // 最大错误数量限制为 5\r\n            if (this.errorQueue.length >= 5) {\r\n                this.errorQueue.pop();\r\n            }\r\n            this.errorQueue.unshift(logPackage);\r\n        }\r\n    };\r\n    // 当网络恢复时尝试一次上报\r\n    BatchLog.prototype.flushErrorLogs = function () {\r\n        var _this = this;\r\n        this.errorQueue.forEach(function (logPackage) {\r\n            _this.sendPackage(logPackage);\r\n        });\r\n        this.errorQueue = [];\r\n    };\r\n    /**\r\n     * 补报本地存的日志，本地可能存在多个，根据时间顺序取出上报\r\n     */\r\n    /* 会导致重复率升高，春节后再看服务端去重后处理\r\n    compensateLogs(secs: number = 1500) {\r\n        this.compensateTimer = setTimeout(() => {\r\n            const logPackages = getStoredLogs();\r\n            if (!logPackages || !logPackages.length) return;\r\n            logPackages.forEach((logPackage: LogPackage) => {\r\n                sendData(logPackage);\r\n            });\r\n        }, secs);\r\n    }\r\n    */\r\n    BatchLog.prototype.destory = function () {\r\n        this.batchWaitTimer && clearTimeout(this.batchWaitTimer);\r\n        this.compensateTimer && clearTimeout(this.compensateTimer);\r\n    };\r\n    return BatchLog;\r\n}());\n\nvar initConfig = (function (options) {\r\n    var logConfig = __assign({ env: 'production', proto: 'v3', timeout: 30000, wait: 1000, maxBatchLength: 50, sampleRate: 1, \r\n        // 尝试从全局中获取 yoda\r\n        yoda: typeof window !== 'undefined' && window.yoda }, (options || {}));\r\n    // 业务方采样配置\r\n    if (options && (typeof options.sampleRateFn === 'function' || typeof options.sampleRate !== 'undefined')) {\r\n        try {\r\n            var sampled = options.sampleRateFn ? options.sampleRateFn() : Math.random() < Number(options.sampleRate);\r\n            updateConfig('sampled', sampled);\r\n        }\r\n        catch (err) {\r\n            updateConfig('sampled', false);\r\n        }\r\n    }\r\n    updateConfig('proto', logConfig.proto || 'v3');\r\n    return logConfig;\r\n});\n\nvar ClientEvent;\r\n(function (ClientEvent) {\r\n    // 曝光类型\r\n    var ShowType;\r\n    (function (ShowType) {\r\n        ShowType[ShowType[\"UNKNOWN_TYPE\"] = 0] = \"UNKNOWN_TYPE\";\r\n        ShowType[ShowType[\"PAGE_AUTO\"] = 10] = \"PAGE_AUTO\";\r\n        ShowType[ShowType[\"PAGE_CUSTOM\"] = 11] = \"PAGE_CUSTOM\";\r\n        ShowType[ShowType[\"ELEMENT\"] = 12] = \"ELEMENT\";\r\n    })(ShowType = ClientEvent.ShowType || (ClientEvent.ShowType = {}));\r\n    var TaskEventType;\r\n    (function (TaskEventType) {\r\n        TaskEventType[TaskEventType[\"UNKNOWN_TYPE\"] = 0] = \"UNKNOWN_TYPE\";\r\n        TaskEventType[TaskEventType[\"USER_OPERATION\"] = 1] = \"USER_OPERATION\";\r\n        TaskEventType[TaskEventType[\"STAY_LENGTH_STAT_EVENT\"] = 2] = \"STAY_LENGTH_STAT_EVENT\";\r\n        TaskEventType[TaskEventType[\"BACKGROUND_TASK_EVENT\"] = 3] = \"BACKGROUND_TASK_EVENT\";\r\n    })(TaskEventType = ClientEvent.TaskEventType || (ClientEvent.TaskEventType = {}));\r\n})(ClientEvent || (ClientEvent = {}));\n\nvar ClientEvent$1;\r\n(function (ClientEvent) {\r\n    // 页面分类\r\n    var PageCategory;\r\n    (function (PageCategory) {\r\n        PageCategory[PageCategory[\"UNKNOWN1\"] = 0] = \"UNKNOWN1\";\r\n        PageCategory[PageCategory[\"APP\"] = 1] = \"APP\";\r\n        PageCategory[PageCategory[\"HOME\"] = 2] = \"HOME\";\r\n        PageCategory[PageCategory[\"USER\"] = 3] = \"USER\";\r\n        PageCategory[PageCategory[\"VIDEO\"] = 4] = \"VIDEO\";\r\n        PageCategory[PageCategory[\"LIVE_STREAM\"] = 5] = \"LIVE_STREAM\";\r\n        PageCategory[PageCategory[\"PAY\"] = 6] = \"PAY\";\r\n        PageCategory[PageCategory[\"ADS\"] = 7] = \"ADS\";\r\n        PageCategory[PageCategory[\"SEARCH\"] = 8] = \"SEARCH\";\r\n        PageCategory[PageCategory[\"IMAGE\"] = 9] = \"IMAGE\";\r\n    })(PageCategory = ClientEvent.PageCategory || (ClientEvent.PageCategory = {}));\r\n    var ElementType;\r\n    (function (ElementType) {\r\n        ElementType[ElementType[\"UNKNOWN1\"] = 0] = \"UNKNOWN1\";\r\n        ElementType[ElementType[\"BUTTON\"] = 1] = \"BUTTON\";\r\n        ElementType[ElementType[\"LABEL\"] = 2] = \"LABEL\";\r\n        ElementType[ElementType[\"ICON\"] = 3] = \"ICON\";\r\n        ElementType[ElementType[\"IMAGE\"] = 4] = \"IMAGE\";\r\n        ElementType[ElementType[\"MENU\"] = 5] = \"MENU\";\r\n        ElementType[ElementType[\"LINK\"] = 6] = \"LINK\";\r\n        ElementType[ElementType[\"TAB\"] = 7] = \"TAB\";\r\n        ElementType[ElementType[\"INPUT_BOX\"] = 8] = \"INPUT_BOX\";\r\n        ElementType[ElementType[\"OPTION_BOX\"] = 9] = \"OPTION_BOX\";\r\n        ElementType[ElementType[\"NOTIFICATION\"] = 10] = \"NOTIFICATION\";\r\n        ElementType[ElementType[\"CARD\"] = 11] = \"CARD\";\r\n        ElementType[ElementType[\"VIEW\"] = 12] = \"VIEW\";\r\n        ElementType[ElementType[\"PAGE\"] = 13] = \"PAGE\";\r\n        ElementType[ElementType[\"VIDEO\"] = 14] = \"VIDEO\";\r\n        ElementType[ElementType[\"CELL\"] = 15] = \"CELL\";\r\n        ElementType[ElementType[\"BANNER\"] = 16] = \"BANNER\";\r\n        ElementType[ElementType[\"BUBBLE\"] = 17] = \"BUBBLE\";\r\n        ElementType[ElementType[\"POPUP_WINDOW\"] = 18] = \"POPUP_WINDOW\";\r\n    })(ElementType = ClientEvent.ElementType || (ClientEvent.ElementType = {}));\r\n    var ShowType;\r\n    (function (ShowType) {\r\n        ShowType[ShowType[\"UNKNOWN2\"] = 0] = \"UNKNOWN2\";\r\n        ShowType[ShowType[\"PAGE\"] = 1] = \"PAGE\";\r\n        ShowType[ShowType[\"SUB_PAGE\"] = 2] = \"SUB_PAGE\";\r\n        ShowType[ShowType[\"ITEM\"] = 3] = \"ITEM\";\r\n        ShowType[ShowType[\"DIALOG\"] = 4] = \"DIALOG\";\r\n        ShowType[ShowType[\"BANNER\"] = 5] = \"BANNER\";\r\n        ShowType[ShowType[\"BUTTON\"] = 6] = \"BUTTON\";\r\n        ShowType[ShowType[\"BUBBLE\"] = 7] = \"BUBBLE\";\r\n        ShowType[ShowType[\"VIDEO\"] = 8] = \"VIDEO\";\r\n        ShowType[ShowType[\"LIVE\"] = 9] = \"LIVE\";\r\n        ShowType[ShowType[\"POPUP_WINDOW\"] = 10] = \"POPUP_WINDOW\";\r\n    })(ShowType = ClientEvent.ShowType || (ClientEvent.ShowType = {}));\r\n    var ShowActionType;\r\n    (function (ShowActionType) {\r\n        ShowActionType[ShowActionType[\"UNKNOWN4\"] = 0] = \"UNKNOWN4\";\r\n        ShowActionType[ShowActionType[\"CLICK\"] = 1] = \"CLICK\";\r\n        ShowActionType[ShowActionType[\"LEFT_PULL\"] = 2] = \"LEFT_PULL\";\r\n        ShowActionType[ShowActionType[\"RIGHT_PULL\"] = 3] = \"RIGHT_PULL\";\r\n        ShowActionType[ShowActionType[\"BACK_CLICK\"] = 4] = \"BACK_CLICK\";\r\n        ShowActionType[ShowActionType[\"UP_SLIDE\"] = 5] = \"UP_SLIDE\";\r\n        ShowActionType[ShowActionType[\"DOWN_SLIDE\"] = 6] = \"DOWN_SLIDE\";\r\n        ShowActionType[ShowActionType[\"DOWN_PULL\"] = 7] = \"DOWN_PULL\";\r\n        ShowActionType[ShowActionType[\"CLICK_HOME\"] = 8] = \"CLICK_HOME\";\r\n        ShowActionType[ShowActionType[\"CLICK_SYS_BACK\"] = 9] = \"CLICK_SYS_BACK\";\r\n        ShowActionType[ShowActionType[\"CLICK_UPLEFT_ICON\"] = 10] = \"CLICK_UPLEFT_ICON\";\r\n        ShowActionType[ShowActionType[\"COLD_LAUNCH\"] = 11] = \"COLD_LAUNCH\";\r\n    })(ShowActionType = ClientEvent.ShowActionType || (ClientEvent.ShowActionType = {}));\r\n    // 任务结果分组\r\n    var ResultPackageDomain;\r\n    (function (ResultPackageDomain) {\r\n        ResultPackageDomain[ResultPackageDomain[\"UNKNOWN2\"] = 0] = \"UNKNOWN2\";\r\n        ResultPackageDomain[ResultPackageDomain[\"HTTP\"] = 1] = \"HTTP\";\r\n        ResultPackageDomain[ResultPackageDomain[\"SYSTEM\"] = 2] = \"SYSTEM\";\r\n        ResultPackageDomain[ResultPackageDomain[\"KUAISHOU\"] = 3] = \"KUAISHOU\";\r\n        ResultPackageDomain[ResultPackageDomain[\"KINGSOFT_LIVE_PUSH\"] = 4] = \"KINGSOFT_LIVE_PUSH\";\r\n        ResultPackageDomain[ResultPackageDomain[\"KINGSOFT_LIVE_PLAY\"] = 5] = \"KINGSOFT_LIVE_PLAY\";\r\n    })(ResultPackageDomain = ClientEvent.ResultPackageDomain || (ClientEvent.ResultPackageDomain = {}));\r\n    var ClickType;\r\n    (function (ClickType) {\r\n        ClickType[ClickType[\"UNKNOWN1\"] = 0] = \"UNKNOWN1\";\r\n        ClickType[ClickType[\"CLICK\"] = 1] = \"CLICK\";\r\n        ClickType[ClickType[\"DOUBLE_CLICK\"] = 2] = \"DOUBLE_CLICK\";\r\n        ClickType[ClickType[\"TRIPLE_CLICK\"] = 3] = \"TRIPLE_CLICK\";\r\n        ClickType[ClickType[\"LONG_PRESS\"] = 4] = \"LONG_PRESS\";\r\n        ClickType[ClickType[\"PULL\"] = 5] = \"PULL\";\r\n        ClickType[ClickType[\"DRAG\"] = 6] = \"DRAG\";\r\n        ClickType[ClickType[\"SCALE\"] = 7] = \"SCALE\";\r\n        ClickType[ClickType[\"PULL_DOWN\"] = 8] = \"PULL_DOWN\";\r\n        ClickType[ClickType[\"PULL_UP\"] = 9] = \"PULL_UP\";\r\n        ClickType[ClickType[\"RIGHT_CLICK\"] = 10] = \"RIGHT_CLICK\";\r\n        ClickType[ClickType[\"AUTO\"] = 11] = \"AUTO\";\r\n    })(ClickType = ClientEvent.ClickType || (ClientEvent.ClickType = {}));\r\n})(ClientEvent$1 || (ClientEvent$1 = {}));\n\nvar firstLoad = true;\r\nvar enterTime = new Date().valueOf();\r\nvar ShowEvent = (function (options) {\r\n    var _a, _b;\r\n    var type = options.type, currentUrlPackage = options.currentUrlPackage, referUrlPackage = options.referUrlPackage, _c = options.name, name = _c === void 0 ? '' : _c, action = options.action, beginTime = options.beginTime, params = options.params, contentPackage = options.contentPackage, status = options.status, actionType = options.actionType, // 这值目前似乎没传进来\r\n    auto = options.auto;\r\n    var commonInfo = (_a = {\r\n            status: status ? (Base.ActionStatus[status] || Base.ActionStatus.UNKNOWN_STATUS) : Base.ActionStatus.SUCCESS\r\n        },\r\n        _a[GlobalConfig.isV2 ? 'show_type' : 'action_type'] = actionType ? (Base.ActionType[actionType] || Base.ActionType.UNKNOWN_ACTION_TYPE) : Base.ActionType.CLICK,\r\n        _a.url_package = currentUrlPackage,\r\n        _a.refer_url_package = referUrlPackage,\r\n        _a[GlobalConfig.isV2 ? 'content_wrapper' : 'content_package'] = contentPackage,\r\n        _a);\r\n    if (type === 'PV') {\r\n        var sub_action = Base.SubAction.PAGE_ENTER;\r\n        var actionPB = Base.PageShowAction.ENTER;\r\n        var first_load = firstLoad;\r\n        var stay_length = 0;\r\n        firstLoad = false;\r\n        switch (action) {\r\n            case 'leave':\r\n                actionPB = Base.PageShowAction.LEAVE;\r\n                sub_action = Base.SubAction.PAGE_LEAVE;\r\n                stay_length = new Date().valueOf() - (beginTime || enterTime);\r\n                break;\r\n            case 'enter':\r\n                actionPB = Base.PageShowAction.ENTER;\r\n                sub_action = Base.SubAction.PAGE_ENTER;\r\n                enterTime = new Date().valueOf();\r\n                break;\r\n            case 'visible':\r\n                actionPB = Base.PageShowAction.RESUME;\r\n                sub_action = Base.SubAction.PAGE_RESUME;\r\n                enterTime = new Date().valueOf();\r\n                break;\r\n            case 'hidden':\r\n                actionPB = Base.PageShowAction.LEAVE;\r\n                sub_action = Base.SubAction.PAGE_PAUSE;\r\n                stay_length = new Date().valueOf() - (beginTime || enterTime);\r\n                break;\r\n        }\r\n        var showType = auto ? ClientEvent.ShowType.PAGE_AUTO : ClientEvent.ShowType.PAGE_CUSTOM;\r\n        if (GlobalConfig.isV2) {\r\n            first_load = undefined;\r\n            showType = ClientEvent$1.ShowType.PAGE;\r\n        }\r\n        return {\r\n            show_event: __assign({ action: actionPB, sub_action: sub_action, type: showType, first_load: first_load, time_cost: 0, stay_length: stay_length }, commonInfo)\r\n        };\r\n    }\r\n    return {\r\n        show_event: __assign({ action: GlobalConfig.isV2 ? 0 : Base.PageShowAction.ENTER, \r\n            // @ts-ignore\r\n            type: GlobalConfig.isV2 ? 0 : ClientEvent.ShowType.ELEMENT, sub_action: GlobalConfig.isV2 ? 0 : Base.SubAction.PAGE_ENTER, element_package: (_b = {},\r\n                _b[GlobalConfig.isV2 ? 'action2' : 'action'] = name,\r\n                _b.params = JSON.stringify(params),\r\n                _b) }, commonInfo)\r\n    };\r\n});\n\nvar TaskEvent = (function (options) {\r\n    var _a, _b;\r\n    var sessionId = options.sessionId, currentUrlPackage = options.currentUrlPackage, referUrlPackage = options.referUrlPackage, name = options.name, params = options.params, type = options.type, contentPackage = options.contentPackage, status = options.status, taskType = options.taskType, operationDirection = options.operationDirection;\r\n    var commonInfo = (_a = {\r\n            url_package: currentUrlPackage,\r\n            refer_url_package: referUrlPackage,\r\n            element_package: (_b = {},\r\n                _b[GlobalConfig.isV2 ? 'action2' : 'action'] = name,\r\n                _b.params = JSON.stringify(params),\r\n                _b)\r\n        },\r\n        _a[GlobalConfig.isV2 ? 'content_wrapper' : 'content_package'] = contentPackage,\r\n        _a);\r\n    if (GlobalConfig.isV2) {\r\n        // v2 click_event 是一个单独的事件类型，v3 则属于 task_event\r\n        if (type === 'CLICK') {\r\n            return {\r\n                click_event: __assign({ type: taskType && ClientEvent$1.ClickType[taskType] || ClientEvent$1.ClickType.CLICK, direction: operationDirection && Base.Direction[operationDirection] || Base.Direction.UNKNOWN2 }, commonInfo)\r\n            };\r\n        }\r\n        return {\r\n            task_event: __assign({ action2: type, status: status && Base.TaskStatus[status] || Base.TaskStatus.UNKNOWN_STATUS }, commonInfo)\r\n        };\r\n    }\r\n    return {\r\n        task_event: __assign({ type: taskType && ClientEvent.TaskEventType[taskType] || ClientEvent.TaskEventType.USER_OPERATION, status: status && Base.TaskStatus[status] || Base.TaskStatus.UNKNOWN_STATUS, operation_type: Base.OperationType[type] || Base.OperationType.CLICK, operation_direction: operationDirection && Base.Direction[operationDirection] || Base.Direction.UNKNOWN2, session_id: sessionId }, commonInfo)\r\n    };\r\n});\n\n/**\r\n * 自定义事件上报\r\n */\r\nvar CustomStatEvent = (function (options) {\r\n    var name = options.name, params = options.params, currentUrlPackage = options.currentUrlPackage, referUrlPackage = options.referUrlPackage, extra = __rest(options, [\"name\", \"params\", \"currentUrlPackage\", \"referUrlPackage\"]);\r\n    return {\r\n        key: name,\r\n        value: JSON.stringify(__assign(__assign({ url_package: currentUrlPackage, refer_url_package: referUrlPackage }, params), extra))\r\n    };\r\n});\n\nvar VideoStatEvent = (function (params) {\r\n    var currentUrlPackage = params.currentUrlPackage, referUrlPackage = params.referUrlPackage, options = params.options;\r\n    return {\r\n        video_stat_event: __assign(__assign({}, options), { url_package: currentUrlPackage, refer_url_package: referUrlPackage }),\r\n    };\r\n});\n\nvar GMT = (function () {\r\n    var timeZoneGMTOffset = (new Date()).getTimezoneOffset() / 60;\r\n    return timeZoneGMTOffset <= 0\r\n        ? \"GMT+\" + leftPad(-timeZoneGMTOffset + '', 2, '0') + \":00\"\r\n        : \"GMT-\" + leftPad(timeZoneGMTOffset + '', 2, '0') + \":00\";\r\n})();\r\n// 为防止每个传出都带common_package，所以用base保留大多数信息\r\n// 部分信息放到每个消息体内维护，比如client_timestamp\r\nvar ReportEvent = /** @class */ (function () {\r\n    function ReportEvent(options) {\r\n        // uint64 客户端时间, Event或Stat发生时的时间, 而不是上传时的时间\r\n        this.client_timestamp = new Date().valueOf();\r\n        // uint64 客户端自增Id, 每新增一条日志+1, 必须是连续的, 用于校检数据完整性\r\n        this.client_increment_id = 0;\r\n        // string 会话id，设备冷启动或者切到后台超过5分钟再切回前台时，重新生成一个id\r\n        // 端内页面不可缺省\r\n        this.session_id = GlobalConfig.sessionId;\r\n        // 埋点唯一主键， PB 中已不推荐使用\r\n        this.event_id = '';\r\n        // v2 没有 time_zone 字段\r\n        if (!GlobalConfig.isV2) {\r\n            this.time_zone = GMT;\r\n        }\r\n        Object.assign(this, options);\r\n        this.genIncrementId();\r\n    }\r\n    // 设置自增 id，自定义事件和常规事件使用不同的 localStorage key\r\n    ReportEvent.prototype.genIncrementId = function () {\r\n        this.client_increment_id = this.isCustomStatEvent() ? getCustomIncrementId() : getNomalIncrementId();\r\n    };\r\n    // 是否是自定义事件\r\n    ReportEvent.prototype.isCustomStatEvent = function () {\r\n        return !!(this.stat_package && 'custom_stat_event' in this.stat_package);\r\n    };\r\n    // 获取埋点事件类型\r\n    ReportEvent.prototype.getEventType = function () {\r\n        if (this.event_package) {\r\n            var _a = this.event_package, task_event = _a.task_event, show_event = _a.show_event, click_event = _a.click_event, custom_event = _a.custom_event;\r\n            if (show_event)\r\n                return 'showEvent';\r\n            if (click_event)\r\n                return 'clickEvent';\r\n            if (task_event)\r\n                return 'taskEvent';\r\n            if (custom_event)\r\n                return 'customEvent';\r\n        }\r\n        return 'customEvent';\r\n    };\r\n    return ReportEvent;\r\n}());\r\n// tslint:enable\r\nfunction logFactory(type, data) {\r\n    var event_id = data.eventId, currentUrlPackage = data.currentUrlPackage, referUrlPackage = data.referUrlPackage, contentPackage = data.contentPackage, name = data.name, params = data.params;\r\n    if (GlobalConfig.isV2 && type !== 'RADAR' && type !== 'CUSTOM') {\r\n        if (currentUrlPackage) {\r\n            // @ts-ignore\r\n            currentUrlPackage.page2 = currentUrlPackage.page;\r\n            delete currentUrlPackage.page;\r\n        }\r\n        if (referUrlPackage) {\r\n            // @ts-ignore\r\n            referUrlPackage.page2 = referUrlPackage.page;\r\n            delete referUrlPackage.page;\r\n        }\r\n    }\r\n    switch (type) {\r\n        case 'PV':\r\n        case 'SHOW':\r\n            return new ReportEvent({\r\n                event_package: ShowEvent({\r\n                    type: type,\r\n                    status: data.status,\r\n                    currentUrlPackage: currentUrlPackage,\r\n                    referUrlPackage: referUrlPackage,\r\n                    action: data.type,\r\n                    beginTime: data.beginTime,\r\n                    name: name,\r\n                    params: params,\r\n                    contentPackage: contentPackage,\r\n                    operationDirection: data.operationDirection,\r\n                    auto: data.auto,\r\n                }),\r\n                event_id: event_id,\r\n            });\r\n        case 'CUSTOM':\r\n            var customData = CustomStatEvent({\r\n                name: name,\r\n                params: params,\r\n                currentUrlPackage: currentUrlPackage,\r\n                referUrlPackage: referUrlPackage,\r\n            });\r\n            return new ReportEvent(GlobalConfig.isV2 ?\r\n                {\r\n                    event_package: {\r\n                        custom_event: customData,\r\n                    },\r\n                    event_id: event_id,\r\n                }\r\n                :\r\n                    {\r\n                        stat_package: {\r\n                            custom_stat_event: customData,\r\n                        },\r\n                        event_id: event_id,\r\n                    });\r\n        case 'RADAR':\r\n            return new ReportEvent({\r\n                stat_package: {\r\n                    custom_stat_event: CustomStatEvent({\r\n                        name: name,\r\n                        params: params,\r\n                        currentUrlPackage: currentUrlPackage,\r\n                        referUrlPackage: referUrlPackage,\r\n                    }),\r\n                },\r\n                event_id: event_id,\r\n            });\r\n        case 'VIDEO':\r\n            if (GlobalConfig.isV2) {\r\n                return new ReportEvent({\r\n                    stat_package: VideoStatEvent({\r\n                        currentUrlPackage: currentUrlPackage,\r\n                        referUrlPackage: referUrlPackage,\r\n                        options: params.params,\r\n                    }),\r\n                });\r\n            }\r\n            return new ReportEvent({\r\n                event_package: TaskEvent({\r\n                    type: type,\r\n                    status: data.status,\r\n                    taskType: data.taskType,\r\n                    sessionId: GlobalConfig.sessionId,\r\n                    currentUrlPackage: currentUrlPackage,\r\n                    referUrlPackage: referUrlPackage,\r\n                    name: name,\r\n                    params: params.params,\r\n                    contentPackage: contentPackage,\r\n                }),\r\n                event_id: event_id,\r\n            });\r\n        default:\r\n            return new ReportEvent({\r\n                event_package: TaskEvent({\r\n                    type: type,\r\n                    status: data.status,\r\n                    taskType: data.taskType,\r\n                    sessionId: GlobalConfig.sessionId,\r\n                    currentUrlPackage: currentUrlPackage,\r\n                    referUrlPackage: referUrlPackage,\r\n                    name: name,\r\n                    params: params,\r\n                    contentPackage: contentPackage,\r\n                }),\r\n                event_id: event_id,\r\n            });\r\n    }\r\n}\n\nvar PageType;\r\n(function (PageType) {\r\n    // 未知\r\n    PageType[PageType[\"UNKNOWN_PAGE_TYPE\"] = 0] = \"UNKNOWN_PAGE_TYPE\";\r\n    // native页面\r\n    PageType[PageType[\"NATIVE\"] = 1] = \"NATIVE\";\r\n    // h5页面\r\n    PageType[PageType[\"H5\"] = 2] = \"H5\";\r\n    // 小程序页面\r\n    PageType[PageType[\"MINA\"] = 3] = \"MINA\";\r\n})(PageType || (PageType = {}));\r\n// tslint:disable variable-name\r\nvar UrlPackage = /** @class */ (function () {\r\n    function UrlPackage(url, pageType, urlMap) {\r\n        if (pageType === void 0) { pageType = 'web'; }\r\n        // 一级页面。参考埋点需求填写即可\r\n        this.page = '';\r\n        // 实例的全局唯一标识，使用UUID即可\r\n        this.identity = '';\r\n        switch (pageType) {\r\n            case 'web':\r\n                this.page_type = PageType.H5;\r\n                break;\r\n            case 'native':\r\n                this.page_type = PageType.NATIVE;\r\n                break;\r\n            case 'mina':\r\n                this.page_type = PageType.MINA;\r\n                break;\r\n            default:\r\n                this.page_type = PageType.UNKNOWN_PAGE_TYPE;\r\n        }\r\n        if (typeof url === 'string') {\r\n            // TODO: 避免兼容问题，暂不处理\r\n            // try {\r\n            //     url = window.decodeURIComponent(url);\r\n            // } catch (err) {}\r\n            var obj = getUrlAndQueryFromUrl(url);\r\n            this.page = obj.page;\r\n            this.params = obj.params;\r\n        }\r\n        else {\r\n            this.page = (url || {}).page || '';\r\n            this.params = (url || {}).params || undefined;\r\n        }\r\n        this.identity = uuid(this.page);\r\n        if (urlMap && typeof url === 'string') {\r\n            this.init(url, urlMap);\r\n        }\r\n    }\r\n    UrlPackage.prototype.init = function (url, urlMap) {\r\n        if (urlMap === void 0) { urlMap = {}; }\r\n        var _a = getMappingPage({ url: url, page: this.page, params: this.params }, urlMap), page = _a.page, params = _a.params;\r\n        this.update(page, params);\r\n    };\r\n    UrlPackage.prototype.update = function (page, params) {\r\n        if (page === void 0) { page = ''; }\r\n        if (page && page !== this.page) {\r\n            this.page = page;\r\n            this.identity = uuid(page);\r\n        }\r\n        if (params) {\r\n            if (!this.params)\r\n                this.params = {};\r\n            Object.assign(this.params, params);\r\n        }\r\n    };\r\n    UrlPackage.prototype.toJSON = function () {\r\n        return {\r\n            page: this.page,\r\n            identity: this.identity,\r\n            page_type: this.page_type,\r\n            params: JSON.stringify(this.params)\r\n        };\r\n    };\r\n    /**\r\n     * 获取真实的 url 信息，并与 PV 上报的通过参数做关联\r\n     */\r\n    UrlPackage.prototype.getRealUrlPackage = function () {\r\n        var _a = getUrlAndQueryFromUrl(location.href), page = _a.page, params = _a.params;\r\n        return {\r\n            page: page,\r\n            params: JSON.stringify({\r\n                url: location.href,\r\n                page: this.page,\r\n                query: params\r\n            }),\r\n            page_type: this.page_type,\r\n            identity: this.identity\r\n        };\r\n    };\r\n    return UrlPackage;\r\n}());\r\n// tslint:enable\n\n// 为了减少点代码体积，自己搞一个简易的EventEmitter\r\nvar EventEmitter = /** @class */ (function () {\r\n    function EventEmitter() {\r\n        this.events = {};\r\n    }\r\n    EventEmitter.prototype.on = function (eventName, callback) {\r\n        if (callback && typeof callback === 'function') {\r\n            this.events[eventName] = this.events[eventName] || [];\r\n            this.events[eventName].push(callback);\r\n        }\r\n    };\r\n    EventEmitter.prototype.off = function (eventName, callback) {\r\n        if (!this.events[eventName]) {\r\n            return;\r\n        }\r\n        if (callback && typeof callback === 'function') {\r\n            deleteArray(this.events[eventName], callback);\r\n        }\r\n        if (!callback) {\r\n            this.events[eventName] = [];\r\n        }\r\n    };\r\n    EventEmitter.prototype.emit = function (eventName) {\r\n        var args = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            args[_i - 1] = arguments[_i];\r\n        }\r\n        if (!this.events[eventName]) {\r\n            return;\r\n        }\r\n        this.events[eventName].forEach(function (callback) {\r\n            callback.apply(void 0, args);\r\n        });\r\n    };\r\n    return EventEmitter;\r\n}());\n\nvar pluginIndex = 0;\r\n// session_id 用来串联在一次打开 App 期间跳转不同页面的用户行为\r\nvar getSessionId = function () {\r\n    var sessionId = '';\r\n    var defaultKey = 'session_id';\r\n    // const customKey = 'weblogger_session_id';\r\n    sessionId = getCookie(defaultKey) || getCookie('sid'); // 端内从 cookie 中获取客户端传来的 session_id\r\n    if (sessionId)\r\n        return sessionId;\r\n    var defaultSessionId = \"weblogger_\" + uuid('weblogger');\r\n    // try {\r\n    //     if (typeof window !== 'undefined' && window.sessionStorage) {\r\n    //         sessionId = window.sessionStorage.getItem(defaultKey) // 尝试获取服务端传来的 session_id\r\n    //             || window.sessionStorage.getItem(customKey) || ''; // 如果都没设置，则获取 weblogger 生成的 session_id;\r\n    //         if (sessionId) return sessionId;\r\n    //         // 如果没有获取到 session_id 则生成一个，并设置到 sessionStorage 中。\r\n    //         window.sessionStorage.setItem(customKey, defaultSessionId);\r\n    //     }\r\n    // } catch (err) { }\r\n    return defaultSessionId;\r\n};\r\nvar isWillClosed = false;\r\nvar Weblog = /** @class */ (function (_super) {\r\n    __extends(Weblog, _super);\r\n    /**\r\n     * @param {?object} logConfig Logger初始化配置\r\n     * @param {object=} options 额外配置参数\r\n     *                    - base 公参的覆盖\r\n     */\r\n    function Weblog(logConfig, base) {\r\n        var _this = _super.call(this) || this;\r\n        _this.version = '3.8.16';\r\n        _this.yoda = null;\r\n        _this.SampledPageMap = {};\r\n        // 核心日志发送\r\n        _this.logger = new BatchLog();\r\n        // 插件\r\n        _this.plugins = {};\r\n        _this.flush = function () {\r\n            _this.logger.flush();\r\n        };\r\n        _this.beforeUnload = function (event) {\r\n            if (isWillClosed)\r\n                return;\r\n            _this.logger.drain();\r\n            for (var key in _this.plugins) {\r\n                var plugin = _this.plugins[key];\r\n                if (typeof plugin.beforeUnload === 'function') {\r\n                    plugin.beforeUnload(event);\r\n                }\r\n            }\r\n            isWillClosed = true;\r\n            setTimeout(function () {\r\n                isWillClosed = false;\r\n            }, 2000);\r\n        };\r\n        // 设置全局 session_id\r\n        updateConfig('sessionId', base && base.session_id || getSessionId());\r\n        _this.baseOption = __assign(__assign({}, BASE), base);\r\n        _this.logConfig = initConfig(logConfig);\r\n        _this.initUrlPackage();\r\n        // 构建 common_package 信息\r\n        _this.commomPackage = transformCommonPackage(_this.baseOption, _this.logConfig);\r\n        _this.logger.init(_this.logConfig, _this.commomPackage);\r\n        _this.initYoda();\r\n        _this.addPlugins();\r\n        if (typeof _this.initBuildInPlugins === 'function') {\r\n            _this.initBuildInPlugins();\r\n        }\r\n        // 事件绑定\r\n        if (typeof window !== 'undefined') {\r\n            addMonitor(window, 'pagehide', _this.beforeUnload);\r\n            addMonitor(window, 'beforeunload', _this.beforeUnload);\r\n        }\r\n        return _this;\r\n    }\r\n    Object.defineProperty(Weblog.prototype, \"Utils\", {\r\n        get: function () {\r\n            return {\r\n                yoda: this.yoda && yodaUtils,\r\n                cookie: cookieUtils,\r\n                ua: uaUtils,\r\n                io: {\r\n                    sendData: sendData$1,\r\n                },\r\n            };\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(Weblog.prototype, \"sessionId\", {\r\n        get: function () {\r\n            return GlobalConfig.sessionId;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Weblog.prototype.initYoda = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var _a;\r\n            var _this = this;\r\n            return __generator(this, function (_b) {\r\n                switch (_b.label) {\r\n                    case 0:\r\n                        if (this.logConfig.yoda && !this.yoda) {\r\n                            this.yoda = checkYoda(this.logConfig.yoda);\r\n                        }\r\n                        _a = this.yoda;\r\n                        if (!_a) return [3 /*break*/, 2];\r\n                        return [4 /*yield*/, initYoda()];\r\n                    case 1:\r\n                        _a = (_b.sent());\r\n                        _b.label = 2;\r\n                    case 2:\r\n                        getKSwitchSampling().then(function () {\r\n                            // yoda 初始化后更新采样配置\r\n                            if (_this.currentUrlPackage)\r\n                                _this.currentUrlPackage.sampled = _this.getPageSampled();\r\n                        });\r\n                        this.commomPackage.initYodaDeviceInfo();\r\n                        this.commomPackage.initYodaAppInfo();\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    // tslint:disable-next-line:no-empty\r\n    Weblog.prototype.initBuildInPlugins = function (option) { };\r\n    // 初始化 url 信息\r\n    Weblog.prototype.initUrlPackage = function () {\r\n        // 初始化 url 信息\r\n        this.updateCurrentUrlPackage();\r\n        var referer = this.logConfig.referer;\r\n        var referUrl = '';\r\n        var referType = 'web';\r\n        if (referer) {\r\n            referUrl = referer.value;\r\n            referType = referer.type && referer.type || referType;\r\n        }\r\n        else if (typeof document !== 'undefined' && document.referrer) {\r\n            referUrl = document.referrer;\r\n        }\r\n        if (referUrl) {\r\n            this.referUrlPackage = new UrlPackage(referUrl, referType, this.logConfig.urlMap);\r\n        }\r\n    };\r\n    Object.defineProperty(Weblog.prototype, \"isKSwitchSampled\", {\r\n        /**\r\n         * 是否已获取到 kswitch 采样配置\r\n         */\r\n        get: function () {\r\n            return typeof KSwitchSampling !== undefined;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    /**\r\n     * 获取页面级配置\r\n     */\r\n    Weblog.prototype.getPageSampled = function () {\r\n        // 如果不是 yoda 环境，或者没从 kswitch 中获取到采样结果\r\n        if (!this.yoda || !KSwitchSampling) {\r\n            return typeof GlobalConfig.sampled === 'boolean' ? GlobalConfig.sampled : true;\r\n        }\r\n        var currentUrl = typeof location !== 'undefined' ? location.href.replace(/https?:\\/\\//, '').split('?')[0] : '*';\r\n        if (typeof this.SampledPageMap[currentUrl] !== 'undefined') {\r\n            return this.SampledPageMap[currentUrl];\r\n        }\r\n        if (KSwitchSampling) {\r\n            var matchedOverAll = void 0;\r\n            var level = 0;\r\n            var radar_1 = null;\r\n            var radarConfigs = [];\r\n            // 找出当前页面的采样配置\r\n            for (var path in KSwitchSampling) {\r\n                if (KSwitchSampling.hasOwnProperty(path)) {\r\n                    var curLevel = 0;\r\n                    if (path === '*') {\r\n                        // * 权重为 1\r\n                        curLevel = 1;\r\n                    }\r\n                    else if (currentUrl.indexOf(path) === 0) {\r\n                        if (path === currentUrl) {\r\n                            // 相等的权重为 100\r\n                            curLevel = 100;\r\n                        }\r\n                        else if (path[path.length - 1] === '/') {\r\n                            // 包含的权重为 10\r\n                            curLevel = 10 + 1 - 1 / path.length;\r\n                        }\r\n                    }\r\n                    if (!curLevel)\r\n                        continue;\r\n                    var _a = KSwitchSampling[path], radar_2 = _a.radar, overwrite = _a.overwrite, overall = _a.overall;\r\n                    curLevel = curLevel + (overwrite ? 1000 : 0);\r\n                    if (radar_2) {\r\n                        radarConfigs.push({\r\n                            radar: radar_2,\r\n                            level: curLevel,\r\n                        });\r\n                    }\r\n                    if (curLevel > level) {\r\n                        level = curLevel;\r\n                        matchedOverAll = overall;\r\n                    }\r\n                }\r\n            }\r\n            // 先判定整体采样\r\n            if (level) {\r\n                radar_1 = {};\r\n                radarConfigs.sort(function (r1, r2) { return r1.level - r2.level; }).forEach(function (r) {\r\n                    Object.assign(radar_1, r.radar);\r\n                });\r\n            }\r\n            var sampled = void 0;\r\n            // 有 overwrite 或业务方没有配置采样时，使用 kswitch 采样配置\r\n            if (level > 1000 || typeof GlobalConfig.sampled === 'undefined') {\r\n                sampled = Math.random() < Number(matchedOverAll) && (radar_1 ? { radar: radar_1 } : true);\r\n            }\r\n            else {\r\n                sampled = typeof GlobalConfig.sampled === 'boolean' ? GlobalConfig.sampled : true;\r\n            }\r\n            this.SampledPageMap[currentUrl] = sampled;\r\n        }\r\n        return this.SampledPageMap[currentUrl];\r\n    };\r\n    Object.defineProperty(Weblog.prototype, \"currentUrl\", {\r\n        get: function () {\r\n            var _a = this.currentUrlPackage, page = _a.page, params = _a.params;\r\n            return params && typeof params === 'object'\r\n                ? page + \"?\" + stringifyQuery(params)\r\n                : page;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(Weblog.prototype, \"referUrl\", {\r\n        get: function () {\r\n            if (!this.referUrlPackage) {\r\n                return '';\r\n            }\r\n            var _a = this.referUrlPackage, page = _a.page, params = _a.params;\r\n            return params && typeof params === 'object'\r\n                ? page + \"?\" + stringifyQuery(params)\r\n                : page;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    /**\r\n     * 更新当前 url 信息\r\n     * @param url\r\n     * @param type\r\n     */\r\n    Weblog.prototype.updateCurrentUrlPackage = function (url, type) {\r\n        if (url === void 0) { url = typeof location !== 'undefined' ? location.href : ''; }\r\n        if (type === void 0) { type = 'web'; }\r\n        // 该接口不改变 refer 信息\r\n        // this.referUrlPackage = this.currentUrlPackage;\r\n        if (typeof url === 'object' && url.page) {\r\n            if (this.currentUrlPackage && url.page === this.currentUrlPackage.page) {\r\n                return this.currentUrlPackage.update(url.page, url.params);\r\n            }\r\n        }\r\n        this.currentUrlPackage = new UrlPackage(url, type, this.logConfig.urlMap);\r\n        this.currentUrlPackage.sampled = this.getPageSampled();\r\n    };\r\n    /**\r\n     * 更新 refer url 信息\r\n     * @param url\r\n     * @param type\r\n     */\r\n    Weblog.prototype.updateReferUrlPackage = function (url, type) {\r\n        if (url === void 0) { url = this.currentUrlPackage; }\r\n        if (type === void 0) { type = 'web'; }\r\n        if (url instanceof UrlPackage) {\r\n            this.referUrlPackage = url;\r\n        }\r\n        else {\r\n            this.referUrlPackage = new UrlPackage(url, type, this.logConfig.urlMap);\r\n        }\r\n    };\r\n    /**\r\n     * 重设 common_package 信息\r\n     * @param base\r\n     */\r\n    Weblog.prototype.updateBase = function (base) {\r\n        this.logger.updateBase(transformCommonPackage(__assign(__assign({}, this.baseOption), base), this.logConfig));\r\n    };\r\n    /**\r\n     * 更新现有 common_package 信息\r\n     */\r\n    Weblog.prototype.updateCommonPackage = function (options) {\r\n        if (typeof options !== 'object')\r\n            return;\r\n        if (!this.commomPackage)\r\n            return;\r\n        this.commomPackage.update(options);\r\n    };\r\n    /**\r\n     * 初始化插件\r\n     * @param plugins\r\n     */\r\n    Weblog.prototype.addPlugins = function () {\r\n        var _this = this;\r\n        if (!this.logConfig.plugins || !this.logConfig.plugins.length)\r\n            return;\r\n        // 类似 webpack plugins 的实例数组\r\n        this.logConfig.plugins.forEach(function (plugin) {\r\n            if (typeof plugin === 'object' && typeof plugin.apply === 'function') {\r\n                _this.addPluginInstance(plugin);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * 加载插件实例\r\n     */\r\n    Weblog.prototype.addPluginInstance = function (pluginInstance) {\r\n        if (pluginInstance) {\r\n            var key = pluginInstance.key || pluginInstance.constructor && pluginInstance.constructor.key || \"plugin_auto_key_\" + pluginIndex++;\r\n            if (typeof pluginInstance.apply === 'function'\r\n                && (!pluginInstance.weblog || pluginInstance.weblog !== this)) {\r\n                pluginInstance.apply(this);\r\n            }\r\n            this.plugins[key] = pluginInstance;\r\n        }\r\n    };\r\n    /**\r\n     * 加载插件构造函数\r\n     * @param plugin\r\n     * @param pluginOptions\r\n     */\r\n    Weblog.prototype.plug = function (plugin, pluginOptions) {\r\n        if (this.plugins[plugin.key]) {\r\n            throw new Error(\"There is a duplex plugin called \" + plugin.key);\r\n        }\r\n        this.addPluginInstance(new plugin(this, pluginOptions));\r\n    };\r\n    Weblog.prototype.unplug = function (name) {\r\n        var plugin = this.plugins[name];\r\n        if (plugin) {\r\n            plugin.destroy();\r\n            delete this.plugins[name];\r\n        }\r\n    };\r\n    Weblog.prototype.unplugAll = function () {\r\n        for (var key in this.plugins) {\r\n            if (this.plugins[key]) {\r\n                this.unplug(key);\r\n            }\r\n        }\r\n    };\r\n    Weblog.prototype.generateLog = function (type, name, params, contentPackage, factory) {\r\n        var _this = this;\r\n        if (type === void 0) { type = TaskOperations.CLICK; }\r\n        if (factory === void 0) { factory = logFactory; }\r\n        if (typeof type !== 'string') {\r\n            type = type.type;\r\n        }\r\n        type = type.toUpperCase();\r\n        var generateLogName = name;\r\n        var getCommonProps = function (name) {\r\n            var currentUrlPackage = null;\r\n            if (typeof generateLogName === 'object') {\r\n                currentUrlPackage = generateLogName.currentUrlPackage;\r\n                contentPackage =\r\n                    generateLogName.contentPackage\r\n                        || contentPackage;\r\n            }\r\n            if (currentUrlPackage) {\r\n                var page = currentUrlPackage.page, identity = currentUrlPackage.identity, params_1 = currentUrlPackage.params;\r\n                currentUrlPackage = {\r\n                    identity: identity || uuid(page || ''),\r\n                    page: page,\r\n                    params: typeof params_1 === 'object' ? JSON.stringify(params_1) : params_1,\r\n                };\r\n            }\r\n            else {\r\n                currentUrlPackage = _this.currentUrlPackage.toJSON();\r\n            }\r\n            if (contentPackage) {\r\n                contentPackage = typeof contentPackage === 'string' ? contentPackage : JSON.stringify(contentPackage);\r\n            }\r\n            return {\r\n                name: name,\r\n                // 传入的 url_package 信息不应该是可变的对象，会导致延时的 log page 信息变更\r\n                currentUrlPackage: currentUrlPackage,\r\n                referUrlPackage: _this.referUrlPackage ? _this.referUrlPackage.toJSON() : undefined,\r\n                contentPackage: contentPackage,\r\n            };\r\n        };\r\n        if (typeof name === 'object') {\r\n            if (type === 'PV') {\r\n                // PV 类型\r\n                var _a = name, type_1 = _a.type, page = _a.page, pageParams = _a.params;\r\n                this.currentUrlPackage.update(page, pageParams);\r\n                return factory(EventTypes.PV, __assign(__assign(__assign({}, name), { type: type_1 }), getCommonProps('PV')));\r\n            }\r\n            // 如果参数中带有 urlPage 则更新 page 信息\r\n            var urlPage = name.urlPage;\r\n            urlPage && this.currentUrlPackage.update(urlPage.page);\r\n            if (type === EventTypes.SHOW) {\r\n                // SHOW 类型\r\n                var action_1 = name.action;\r\n                return factory(type, __assign(__assign({}, name), getCommonProps(action_1)));\r\n            }\r\n            // Radar 日志特殊处理\r\n            if (type === 'RADAR') {\r\n                return factory(type, name);\r\n            }\r\n            if (type === EventTypes.CUSTOM) {\r\n                // CUSTOM 类型\r\n                var _b = name, key = _b.key, value = _b.value, eventId_1 = _b.eventId;\r\n                return factory(type, __assign({ params: value, eventId: eventId_1 }, getCommonProps(key)));\r\n            }\r\n            if (type === 'VIDEO') {\r\n                return factory(type, __assign({ params: name }, getCommonProps('video')));\r\n            }\r\n            // TASK 类型\r\n            var _c = name, action = _c.action, taskParams = _c.params, status_1 = _c.status, taskType = _c.type, eventId = _c.eventId;\r\n            return factory(type, __assign(__assign(__assign({}, name), { params: taskParams, status: status_1,\r\n                taskType: taskType,\r\n                eventId: eventId }), getCommonProps(action)));\r\n        }\r\n        if (type === 'PV') {\r\n            this.currentUrlPackage.update(name, params);\r\n        }\r\n        return factory(type, __assign({ params: params }, getCommonProps(name)));\r\n    };\r\n    Object.defineProperty(Weblog.prototype, \"isSendSampled\", {\r\n        get: function () {\r\n            return this.currentUrlPackage && this.currentUrlPackage.sampled || GlobalConfig.isDebug;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Weblog.prototype.send = function (type, name, params, contentPackage, immediately) {\r\n        if (type === void 0) { type = TaskOperations.CLICK; }\r\n        // 如果该用户不被采样，则所有日志都不会上报\r\n        if (!this.isSendSampled) {\r\n            return;\r\n        }\r\n        var log = this.generateLog(type, name, params, contentPackage);\r\n        // 雷达日志单独处理\r\n        if (type === 'RADAR') {\r\n            return this.logger.sendRadar(log);\r\n        }\r\n        var callback = typeof name === 'object' && name.callback || undefined;\r\n        return this.logger.send(log, !!immediately, callback);\r\n    };\r\n    Weblog.prototype.collect = function (type, name, params, contentPackage) {\r\n        if (type === void 0) { type = TaskOperations.CLICK; }\r\n        return this.send(type, name, params, contentPackage, false);\r\n    };\r\n    Weblog.prototype.sendImmediately = function (type, name, params, contentPackage) {\r\n        if (type === void 0) { type = TaskOperations.CLICK; }\r\n        return this.send(type, name, params, contentPackage, true);\r\n    };\r\n    Weblog.prototype.sendPackage = function (data, callback) {\r\n        this.logger.sendPackage(data, callback);\r\n    };\r\n    Weblog.prototype.destroy = function () {\r\n        this.unplugAll();\r\n        if (typeof window !== 'undefined') {\r\n            removeMonitor(window, 'pagehide', this.beforeUnload);\r\n            removeMonitor(window, 'beforeunload', this.beforeUnload);\r\n        }\r\n    };\r\n    return Weblog;\r\n}(EventEmitter));\n\nvar BasePlugin = /** @class */ (function (_super) {\r\n    __extends(BasePlugin, _super);\r\n    function BasePlugin() {\r\n        var _this = _super !== null && _super.apply(this, arguments) || this;\r\n        // @ts-ignore\r\n        _this.weblog = typeof window !== 'undefined' && window._GLOBAL_KS_WEBLOGGER_ && window._GLOBAL_KS_WEBLOGGER_.weblog;\r\n        return _this;\r\n    }\r\n    BasePlugin.prototype.apply = function (weblog) {\r\n        this.weblog = weblog;\r\n    };\r\n    return BasePlugin;\r\n}(EventEmitter));\r\n/**\r\n * 在 bootstrap 环境下自动注册插件\r\n * @param Plugin\r\n * @param optionKey\r\n */\r\nvar autoRegister = function (Plugin, optionKey, PluginPlaceholder) {\r\n    if (typeof window === 'undefined' ||\r\n        typeof window._GLOBAL_KS_WEBLOGGER_ === 'undefined' ||\r\n        typeof Plugin !== 'function')\r\n        return;\r\n    var _a = window._GLOBAL_KS_WEBLOGGER_, weblog = _a.weblog, config = _a.config;\r\n    var option = optionKey && config.plugins[optionKey] ? config.plugins[optionKey].options : undefined;\r\n    if (optionKey === 'radar') {\r\n        // 雷达插件采样特殊处理\r\n        var radarOptions = option || weblog.logConfig[optionKey];\r\n        if (!radarOptions)\r\n            return;\r\n        if (!radarOptions.sampling || !Plugin.samplingControl(radarOptions)) {\r\n            return weblog.plug(PluginPlaceholder);\r\n        }\r\n    }\r\n    weblog.addPluginInstance(new Plugin(option));\r\n};\n\n/**\r\n * @file crash-monitor.js\r\n * @author kevin (lanlazy@163.com)\r\n * beforeunload触发条件:正常关闭标签,刷新,关闭浏览器\r\n * @created 2018-08-08\r\n */\r\nvar defaultOptions = {\r\n    updateInterval: 20 * 1000,\r\n    crashThreshold: 10 * 1000,\r\n};\r\nvar CrashMonitor = /** @class */ (function (_super) {\r\n    __extends(CrashMonitor, _super);\r\n    /**\r\n     * 兼容写法，如果在 Weblog 初始化设置 plugins 时，不需要设置 weblog\r\n     * @param weblog\r\n     */\r\n    function CrashMonitor(weblog) {\r\n        var _this = _super.call(this) || this;\r\n        _this.eventName = 'onpagehide' in window ? 'pagehide' : 'beforeunload';\r\n        _this.options = __assign({}, defaultOptions);\r\n        _this.monitorId = '@ks.monitor.crash';\r\n        _this.historyMoniorInfo = null;\r\n        /**\r\n         * 停止监控过程\r\n         * 1.在页面正常卸载时自动调用\r\n         * 2.需要手动卸载时手动调用\r\n         */\r\n        _this.stop = function () {\r\n            clearInterval(_this.updateIntervalId);\r\n            try {\r\n                localStorage.removeItem(_this.monitorId);\r\n            }\r\n            catch (e) {\r\n                // nothing\r\n            }\r\n        };\r\n        try {\r\n            var historyMoniorString = localStorage.getItem(_this.monitorId);\r\n            _this.historyMoniorInfo = JSON.parse(historyMoniorString) || {};\r\n        }\r\n        catch (e) {\r\n            // nothing\r\n        }\r\n        if (weblog && weblog.logger) {\r\n            _this.apply(weblog);\r\n        }\r\n        addMonitor(window, _this.eventName, _this.stop);\r\n        return _this;\r\n    }\r\n    CrashMonitor.prototype.apply = function (weblog) {\r\n        var _this = this;\r\n        if (!weblog)\r\n            return;\r\n        this.weblog = weblog;\r\n        this.on('crash', function (info) {\r\n            _this.weblog.sendImmediately('CUSTOM', 'crash', info);\r\n        });\r\n        this.start();\r\n    };\r\n    CrashMonitor.prototype.destroy = function () {\r\n        this.stop();\r\n        this.off('crash');\r\n        removeMonitor(window, this.eventName, this.stop);\r\n    };\r\n    CrashMonitor.prototype.checkHistoryCrash = function () {\r\n        var now = new Date().valueOf();\r\n        if (this.historyMoniorInfo\r\n            && now - this.historyMoniorInfo.time > this.options.crashThreshold) {\r\n            this.emit('crash', this.historyMoniorInfo);\r\n        }\r\n    };\r\n    /**\r\n     * 开始定时更新快照\r\n     */\r\n    CrashMonitor.prototype.start = function () {\r\n        var _this = this;\r\n        this.checkHistoryCrash();\r\n        this.updateIntervalId = window.setInterval(function () {\r\n            _this.update();\r\n        }, this.options.updateInterval);\r\n        this.update();\r\n    };\r\n    /**\r\n     * 更新监控快照\r\n     * @param {*} data 外部追加额外的快照信息\r\n     */\r\n    CrashMonitor.prototype.update = function () {\r\n        // TODO，非标准api后续可能会需要更新\r\n        if (!window.performance || !window.performance.memory) {\r\n            return;\r\n        }\r\n        // TODO后面看看需要补其他什么信息\r\n        var monitorInfo = {\r\n            time: new Date().valueOf(),\r\n            memory: {\r\n                limit: window.performance.memory.jsHeapSizeLimit / 1024,\r\n                total: window.performance.memory.totalJSHeapSize / 1024,\r\n                used: window.performance.memory.usedJSHeapSize / 1024,\r\n            },\r\n        };\r\n        try {\r\n            localStorage.setItem(this.monitorId, JSON.stringify(monitorInfo));\r\n        }\r\n        catch (e) {\r\n            // nothing\r\n        }\r\n    };\r\n    CrashMonitor.key = 'crachMonitor';\r\n    return CrashMonitor;\r\n}(BasePlugin));\n\n/**\r\n * @file fps.js\r\n * @author kevin (lanlazy@163.com)\r\n * @created 2018-08-25\r\n */\r\nvar defaultOptions$1 = {\r\n    // 更新间隔\r\n    interval: 10 * 1000,\r\n    // 浮点精度 0 取整\r\n    decimals: 2,\r\n};\r\nvar FPSMonitor = /** @class */ (function (_super) {\r\n    __extends(FPSMonitor, _super);\r\n    function FPSMonitor(weblog, options) {\r\n        var _this = _super.call(this) || this;\r\n        _this.options = __assign({}, defaultOptions$1);\r\n        _this.count = 0;\r\n        if (options) ;\r\n        else if (weblog) {\r\n            if (weblog.logger) {\r\n                _this.apply(weblog);\r\n            }\r\n        }\r\n        Object.assign(_this.options, options);\r\n        _this.on('performance', function (fps) {\r\n            _this.weblog.collect('CUSTOM', 'fps', { fps: fps });\r\n        });\r\n        _this.start();\r\n        return _this;\r\n    }\r\n    FPSMonitor.prototype.destroy = function () {\r\n        this.off('performance');\r\n        this.stop();\r\n    };\r\n    FPSMonitor.prototype.start = function () {\r\n        this.loop();\r\n        this.fpsTick();\r\n    };\r\n    FPSMonitor.prototype.fpsTick = function () {\r\n        var _this = this;\r\n        this.fpsTickId = raf(function () {\r\n            _this.count++;\r\n            _this.fpsTick();\r\n        });\r\n    };\r\n    FPSMonitor.prototype.loop = function () {\r\n        var _this = this;\r\n        this.loopBeginTime = new Date().valueOf();\r\n        this.loopId = window.setTimeout(function () {\r\n            _this.loopEndTime = new Date().valueOf();\r\n            var fps = _this.calculate();\r\n            _this.emit('performance', fps);\r\n            _this.count = 0;\r\n            _this.loop();\r\n        }, this.options.interval);\r\n    };\r\n    FPSMonitor.prototype.stop = function () {\r\n        caf(this.fpsTickId);\r\n        window.clearTimeout(this.loopId);\r\n    };\r\n    FPSMonitor.prototype.calculate = function () {\r\n        var during = this.loopEndTime - this.loopBeginTime;\r\n        // raf执行次数\r\n        var runCount = during / this.count;\r\n        return +(1000 / runCount).toFixed(this.options.decimals);\r\n    };\r\n    FPSMonitor.key = 'fpsMonitor';\r\n    return FPSMonitor;\r\n}(BasePlugin));\n\nvar perf = typeof window !== 'undefined'\r\n    ? window.performance\r\n    : null;\r\nvar performanceTiming = perf && perf.timing || null;\r\nvar performanceNavigationTiming = perf\r\n    && perf.getEntriesByType\r\n    && perf.getEntriesByType('navigation')[0]\r\n    || null;\n\nfunction warn(message) {\r\n    if (console && console.warn) {\r\n        console.warn(message);\r\n    }\r\n}\r\nfunction error(message) {\r\n    if (console && console.error) {\r\n        console.error(message);\r\n    }\r\n}\n\n// TODO页面停留时间先依赖一个全局副作用来搞，毕竟要侵入SPA模式下比较蛋疼……\r\nvar perfMap = {\r\n    // DNS查找时间\r\n    dnsLookup: {\r\n        end: 'domainLookupEnd',\r\n        start: 'domainLookupStart',\r\n    },\r\n    // TCP建连时间\r\n    tcpConnection: {\r\n        end: 'connectEnd',\r\n        start: 'connectStart',\r\n    },\r\n    // 静态资源加载时间\r\n    resourceLoad: {\r\n        end: 'responseEnd',\r\n        start: 'requestStart',\r\n    },\r\n    // 首屏JS耗时……暂时先这么对付了，具体JS的耗时后面再提供吧\r\n    // 计算的时候以第一个script开始时间点为起始，一直到DOM Complete完成\r\n    // 这样看起来应该是可被定义为JS耗时了……\r\n    jsCost: {\r\n        custom: function () {\r\n            if (typeof performance.getEntries !== 'function') {\r\n                return 0;\r\n            }\r\n            var entries = performance.getEntries();\r\n            var pageTimeInfo = entries[0];\r\n            var firstJSTimeInfo = entries\r\n                .filter(function (item) { return item.initiatorType === 'script'; })[0];\r\n            if (firstJSTimeInfo) {\r\n                return pageTimeInfo.domComplete - firstJSTimeInfo.fetchStart;\r\n            }\r\n            return 0;\r\n        },\r\n    },\r\n    // DOM加载完毕时间\r\n    documentContentLoaded: {\r\n        end: 'domComplete',\r\n        start: 'fetchStart',\r\n    },\r\n    // 页面加载完毕时间\r\n    load: {\r\n        end: 'loadEventEnd',\r\n        start: 'fetchStart',\r\n    },\r\n    timeToFirstByte: {\r\n        end: 'loadEventEnd',\r\n        start: 'fetchStart',\r\n    },\r\n    // 首屏时间，依靠主动打点\r\n    firstScreen: {\r\n        custom: function (key, options) {\r\n            var endPoint = (options || {}).endPoint;\r\n            var end = typeof endPoint !== 'undefined' ? endPoint : new Date().valueOf();\r\n            return performanceTiming && (end - performanceTiming.fetchStart) || 0;\r\n        },\r\n    },\r\n    // 白屏时间，依靠主动打点\r\n    whiteScreen: {\r\n        custom: function (key, options) {\r\n            var endPoint = (options || {}).endPoint;\r\n            var end = typeof endPoint !== 'undefined' ? endPoint : new Date().valueOf();\r\n            return performanceTiming && (end - performanceTiming.fetchStart) || 0;\r\n        },\r\n    },\r\n};\r\nvar TimingMonitor = /** @class */ (function (_super) {\r\n    __extends(TimingMonitor, _super);\r\n    /**\r\n     * 兼容写法，如果在 Weblog 初始化设置 plugins 时，不需要设置 weblog\r\n     * @param weblog\r\n     */\r\n    function TimingMonitor(weblog) {\r\n        var _this = _super.call(this) || this;\r\n        _this.load = function () {\r\n            // 严格意义上来说类似的时间对于onload计算，都是等到window.onload执行完毕才开始计算\r\n            // 所以页面加载完毕时间使用的是loadEventEnd事件，所以手动进入下一个event loop\r\n            // 确保获取loadEventEnd事件\r\n            setTimeout(function () {\r\n                var perfInfo = _this.collect();\r\n                if (!perfInfo) {\r\n                    return;\r\n                }\r\n                [\r\n                    'load',\r\n                    'documentContentLoaded',\r\n                    'dnsLookup',\r\n                    'tcpConnection',\r\n                    'jsCost',\r\n                    'timeToFirstByte',\r\n                ].forEach(function (key) {\r\n                    var _a;\r\n                    // TODO后面做一个支持度list来维护，现在先手动过滤一下\r\n                    if (key === 'jsCost' && perfInfo[key] === 0) {\r\n                        return;\r\n                    }\r\n                    _this.weblog.collect('CUSTOM', costMap[key], (_a = {},\r\n                        _a[costMap[key]] = perfInfo[key],\r\n                        _a));\r\n                });\r\n            });\r\n        };\r\n        if (!performanceTiming) {\r\n            error('The Timing Monitor need performance APIs to Support!');\r\n            return _this;\r\n        }\r\n        if (weblog) {\r\n            _this.apply(weblog);\r\n        }\r\n        return _this;\r\n    }\r\n    TimingMonitor.prototype.apply = function (weblog) {\r\n        var _this = this;\r\n        this.weblog = weblog;\r\n        addMonitor(window, 'load', this.load);\r\n        this.on('perf', function (_a) {\r\n            var _b;\r\n            var key = _a.key, data = _a.data;\r\n            _this.weblog.collect('CUSTOM', costMap[key], (_b = {},\r\n                _b[costMap[key]] = data[key],\r\n                _b));\r\n        });\r\n    };\r\n    TimingMonitor.prototype.destroy = function () {\r\n        removeMonitor(window, 'load', this.load);\r\n        this.off('perf');\r\n    };\r\n    TimingMonitor.prototype.calculate = function (key, options) {\r\n        var perf = perfMap[key];\r\n        if (!perf) {\r\n            throw new Error('The perf key is not correct!');\r\n        }\r\n        if (typeof perf.custom === 'function') {\r\n            return perf.custom(key, options);\r\n        }\r\n        var endPoint = performanceTiming[perfMap[key].end];\r\n        var startPoint = performanceTiming[perfMap[key].start];\r\n        return endPoint - startPoint;\r\n    };\r\n    // 目前只针对这两个需要手动打点;\r\n    TimingMonitor.prototype.mark = function (key, options) {\r\n        var data = this.collect(key, options);\r\n        this.emit('perf', {\r\n            key: key,\r\n            data: data,\r\n        });\r\n    };\r\n    TimingMonitor.prototype.collect = function (key, options) {\r\n        var _a;\r\n        var _this = this;\r\n        // 如果不支持timing api的话，就直接不上报了，免得数据污染\r\n        if (!performanceTiming) {\r\n            return;\r\n        }\r\n        if (key) {\r\n            return _a = {},\r\n                _a[key] = this.calculate(key, options),\r\n                _a;\r\n        }\r\n        var allPerf = {};\r\n        return Object.keys(perfMap).reduce(function (map, key) {\r\n            map[key] = _this.calculate(key, options);\r\n            return map;\r\n        }, allPerf);\r\n    };\r\n    TimingMonitor.key = 'timingMonitor';\r\n    return TimingMonitor;\r\n}(BasePlugin));\r\n// 优先使用pagehide 其次使用beforeunload;\r\nvar costMap = {\r\n    load: 'total_download_cost',\r\n    documentContentLoaded: 'operational_cost',\r\n    dnsLookup: 'dns_query_cost',\r\n    tcpConnection: 'tcp_cost',\r\n    jsCost: 'js_cost',\r\n    whiteScreen: 'white_screen_cost',\r\n    firstScreen: 'first_screen_cost',\r\n    timeToFirstByte: 'ttfb_cost',\r\n};\r\n/**\r\n * 如果使用了 bootstrap 则自动注册插件\r\n */\r\nautoRegister(TimingMonitor);\n\n// TODO下面这个暂时不能这么用，因为计量方式和perfirmanceTiming不一样\r\n// export default performanceNavigationTiming || performanceTiming || null;\r\nvar navigationTiming = (function () {\r\n    var perf = typeof window !== 'undefined'\r\n        ? window.performance\r\n        : null;\r\n    if (perf && perf.timing) {\r\n        if (typeof perf.timing.toJSON === 'function') {\r\n            var performanceTiming = perf.timing.toJSON();\r\n            if (performanceTiming && !performanceTiming.redirectStart) {\r\n                performanceTiming.redirectStart = performanceTiming.navigationStart;\r\n            }\r\n            return performanceTiming;\r\n        }\r\n        return perf.timing;\r\n    }\r\n    return null;\r\n});\r\nfunction perfNow(time) {\r\n    var perf = typeof window !== 'undefined'\r\n        ? window.performance\r\n        : null;\r\n    if (!perf)\r\n        return { value: null };\r\n    // 用户传入时间戳则使用用户的传入\r\n    if (time != null) {\r\n        return {\r\n            value: time - perf.timing.navigationStart,\r\n            detail: {\r\n                start: 'navigationStart',\r\n                startPoint: perf.timing.navigationStart,\r\n                end: 'customTime',\r\n                endPoint: time,\r\n            },\r\n        };\r\n    }\r\n    if (typeof perf.now === 'function') {\r\n        return {\r\n            value: perf.now(),\r\n            detail: {\r\n                start: 'navigationStart',\r\n                startPoint: perf.timing.navigationStart,\r\n                end: 'perfNowAPI',\r\n                endPoint: perf.now(),\r\n            },\r\n        };\r\n    }\r\n    var now = Date.now();\r\n    return {\r\n        value: now - perf.timing.navigationStart,\r\n        detail: {\r\n            start: 'navigationStart',\r\n            startPoint: perf.timing.navigationStart,\r\n            end: 'dateNow',\r\n            endPoint: now,\r\n        },\r\n    };\r\n}\n\n// 统一的 custom_key\r\nvar KEY = 'radar_log';\r\nvar RADAR_KEY;\r\n(function (RADAR_KEY) {\r\n    // 页面加载监控\r\n    RADAR_KEY[\"LOAD\"] = \"load\";\r\n    // 静态资源监控\r\n    RADAR_KEY[\"RES\"] = \"resource\";\r\n    // API 性能监控\r\n    RADAR_KEY[\"API\"] = \"api\";\r\n    // 异常\r\n    RADAR_KEY[\"ERROR\"] = \"error\";\r\n    // 脚本自身上报异常\r\n    RADAR_KEY[\"SDK_ERROR\"] = \"sdk_error\";\r\n    // 用户自定义性能监控\r\n    RADAR_KEY[\"CUSTOM\"] = \"custom\";\r\n    // 批量日志，用于处理批量情况\r\n    RADAR_KEY[\"BATCH\"] = \"batch\";\r\n    // 事件\r\n    RADAR_KEY[\"EVENT\"] = \"event\";\r\n})(RADAR_KEY || (RADAR_KEY = {}));\r\nvar LEGACY_RADAR_KEY;\r\n(function (LEGACY_RADAR_KEY) {\r\n    // 页面加载监控\r\n    LEGACY_RADAR_KEY[\"LOAD\"] = \"load_statistics\";\r\n    // 静态资源监控\r\n    LEGACY_RADAR_KEY[\"RES\"] = \"resource_statistics\";\r\n    // API 性能监控\r\n    LEGACY_RADAR_KEY[\"API\"] = \"api_statistics\";\r\n    // 异常\r\n    LEGACY_RADAR_KEY[\"ERROR\"] = \"error_statistics\";\r\n    // 脚本自身上报异常\r\n    LEGACY_RADAR_KEY[\"SDK_ERROR\"] = \"sdk_error\";\r\n    // 用户自定义性能监控\r\n    LEGACY_RADAR_KEY[\"CUSTOM\"] = \"custom_statistics\";\r\n})(LEGACY_RADAR_KEY || (LEGACY_RADAR_KEY = {}));\r\nvar ERROR_KEY;\r\n(function (ERROR_KEY) {\r\n    // 脚本异常\r\n    ERROR_KEY[\"SCRIPT\"] = \"script\";\r\n    // 资源加载异常\r\n    ERROR_KEY[\"RES\"] = \"res\";\r\n    // 接口请求异常\r\n    ERROR_KEY[\"API\"] = \"api\";\r\n    // 视频异常\r\n    ERROR_KEY[\"VIDEO\"] = \"video\";\r\n})(ERROR_KEY || (ERROR_KEY = {}));\r\nvar domPerfMap = {\r\n    redirect: {\r\n        end: 'fetchStart',\r\n        start: 'navigationStart',\r\n    },\r\n    // DNS查找时间\r\n    dns: {\r\n        end: 'domainLookupEnd',\r\n        start: 'domainLookupStart',\r\n    },\r\n    dns_start: {\r\n        end: 'domainLookupEnd',\r\n        start: 'navigationStart',\r\n    },\r\n    // TCP建连时间\r\n    tcp: {\r\n        end: 'connectEnd',\r\n        start: 'connectStart',\r\n    },\r\n    // TCP建连时间\r\n    tcp_start: {\r\n        end: 'connectEnd',\r\n        start: 'navigationStart',\r\n    },\r\n    redirect_count: {\r\n        custom: function (key, perf) {\r\n            // @ts-ignore\r\n            return perf.redirectCount;\r\n        },\r\n    },\r\n    // ssl 安全连接耗时\r\n    ssl: {\r\n        // 有可能不是 https，导致这里上报异常\r\n        custom: function (key, perf) {\r\n            if (perf.secureConnectionStart === 0)\r\n                return 0;\r\n            return perf.connectEnd - perf.secureConnectionStart;\r\n        },\r\n    },\r\n    ssl_start: {\r\n        // 有可能不是 https，导致这里上报异常\r\n        custom: function (key, perf) {\r\n            if (perf.secureConnectionStart === 0)\r\n                return 0;\r\n            return perf.secureConnectionStart - perf.redirectStart;\r\n        },\r\n    },\r\n    // 首字节事件，Time to First Byte\r\n    ttfb: {\r\n        end: 'responseStart',\r\n        start: 'requestStart',\r\n    },\r\n    // 数据传输耗时\r\n    trans: {\r\n        end: 'responseEnd',\r\n        start: 'responseStart',\r\n    },\r\n    // DOM 解析耗时\r\n    dom_parse: {\r\n        end: 'domInteractive',\r\n        start: 'responseEnd',\r\n    },\r\n    dom_parse_start: {\r\n        end: 'domInteractive',\r\n        start: 'navigationStart',\r\n    },\r\n    // 白屏耗时\r\n    // （(domInteractive || domLoading) - fetchStart）\r\n    blank: {\r\n        end: 'domLoading',\r\n        start: 'navigationStart',\r\n    },\r\n    // 首字节\r\n    fb: {\r\n        end: 'responseStart',\r\n        start: 'navigationStart',\r\n    },\r\n    // DOM-ready\r\n    dom_ready: {\r\n        end: 'domContentLoadedEventEnd',\r\n        start: 'navigationStart',\r\n    },\r\n    // 完整 loading 时间\r\n    total: {\r\n        end: 'loadEventStart',\r\n        start: 'navigationStart',\r\n    },\r\n    // 页面中的同步加载耗时\r\n    resource: {\r\n        end: 'loadEventStart',\r\n        start: 'domContentLoadedEventEnd',\r\n    },\r\n    // 首次渲染，可以用 entries 里面的 first_paint\r\n    fp: {\r\n        custom: function () {\r\n            if (typeof performance.getEntries !== 'function') {\r\n                return null;\r\n            }\r\n            var entries = performance.getEntries();\r\n            var firstPaintInfo = entries\r\n                .filter(function (item) { return item.name === 'first-paint'; })[0];\r\n            if (firstPaintInfo) {\r\n                return Math.ceil(firstPaintInfo.startTime + firstPaintInfo.duration);\r\n            }\r\n            return null;\r\n        },\r\n    },\r\n    // 首屏JS耗时……暂时先这么对付了，具体JS的耗时后面再提供吧\r\n    // 计算的时候以第一个script开始时间点为起始，一直到DOM Complete完成\r\n    // 这样看起来应该是可被定义为JS耗时了……\r\n    js_cost: {\r\n        custom: function () {\r\n            if (typeof performance.getEntries !== 'function') {\r\n                return null;\r\n            }\r\n            var timing = navigationTiming();\r\n            var entries = performance.getEntries();\r\n            var pageTimeInfo = performance.getEntries()\r\n                .filter(function (item) { return item.initiatorType === 'navigation'; })[0];\r\n            var firstJSTimeInfo = entries\r\n                .filter(function (item) { return item.initiatorType === 'script'; })[0];\r\n            // 有的浏览器 getEntries 里没有 navigation\r\n            var domComplete = pageTimeInfo ? pageTimeInfo.domComplete :\r\n                timing.domComplete - timing.navigationStart;\r\n            if (firstJSTimeInfo && domComplete) {\r\n                return domComplete - firstJSTimeInfo.fetchStart;\r\n            }\r\n            return null;\r\n        },\r\n    },\r\n    // 可交互时间，这个不确定，粗略加个默认的，让用户可以自定义\r\n    tti: {\r\n        end: 'domInteractive',\r\n        start: 'navigationStart',\r\n    },\r\n    // 这里 load performance 如果可以的话也能拿到\r\n    protocol: {\r\n        custom: function (key, perf) {\r\n            return perf.nextHopProtocol;\r\n        },\r\n    },\r\n    dom_num: {\r\n        custom: function () {\r\n            return typeof document !== 'undefined' ? document.all.length : null;\r\n        }\r\n    }\r\n};\r\nvar apiPerfMap = {\r\n    // fetchStart，记录资源的 fetchStart，记录其跟页面加载的偏移量\r\n    fetch_start: {\r\n        custom: function (key, perf) {\r\n            return Math.round(perf.fetchStart);\r\n        },\r\n    },\r\n    // DNS查找时间\r\n    dns: {\r\n        end: 'domainLookupEnd',\r\n        start: 'domainLookupStart',\r\n        cachedSkip: true,\r\n    },\r\n    // TCP建连时间\r\n    tcp: {\r\n        end: 'connectEnd',\r\n        start: 'connectStart',\r\n        cachedSkip: true,\r\n    },\r\n    // ssl 安全连接耗时\r\n    ssl: {\r\n        cachedSkip: true,\r\n        // 有可能不是 https，导致这里上报异常\r\n        custom: function (key, perf) {\r\n            if (perf.secureConnectionStart === 0)\r\n                return 0;\r\n            return perf.connectEnd - perf.secureConnectionStart;\r\n        },\r\n    },\r\n    // 首字节事件，Time to First Byte\r\n    ttfb: {\r\n        end: 'responseStart',\r\n        start: 'requestStart',\r\n        cachedSkip: true,\r\n    },\r\n    // 数据传输耗时\r\n    trans: {\r\n        end: 'responseEnd',\r\n        start: 'responseStart',\r\n        cachedSkip: true,\r\n    },\r\n    // 首字节\r\n    fb: {\r\n        end: 'responseStart',\r\n        start: 'fetchStart',\r\n        cachedSkip: true,\r\n    },\r\n    total: {\r\n        end: 'responseEnd',\r\n        start: 'fetchStart',\r\n    },\r\n    // 计算逻辑与total一致\r\n    duration: {\r\n        end: 'responseEnd',\r\n        start: 'fetchStart',\r\n    },\r\n    // 体积\r\n    size: {\r\n        cachedSkip: true,\r\n        custom: function (key, perf) {\r\n            return perf.encodedBodySize;\r\n        },\r\n        noThrottle: true,\r\n    },\r\n    // 首次渲染，可以用 entries 里面的 first_paint\r\n    protocol: {\r\n        custom: function (key, perf) {\r\n            return perf.nextHopProtocol;\r\n        },\r\n    },\r\n    // file 静态资源地址\r\n    file: {\r\n        custom: function (key, perf) {\r\n            return perf.name;\r\n        },\r\n        noThrottle: true,\r\n    },\r\n    res_type: {\r\n        custom: function (key, perf) {\r\n            return perf.initiatorType;\r\n        },\r\n    },\r\n    // 是否缓存\r\n    cached: {\r\n        custom: function (key, perf) {\r\n            if (perf.transferSize === 0)\r\n                return true;\r\n            // safari 没有实现 transferSize，因此用 domainLookupStart 来判断\r\n            if (perf.transferSize == null && perf.domainLookupStart === 0)\r\n                return true;\r\n            return false;\r\n        },\r\n        noThrottle: true,\r\n    }\r\n};\r\nvar resPerfMap = {\r\n    // fetchStart，记录资源的 fetchStart，记录其跟页面加载的偏移量\r\n    fetch_start: {\r\n        custom: function (key, perf) {\r\n            return Math.round(perf.fetchStart);\r\n        },\r\n        noThrottle: true,\r\n    },\r\n    // DNS查找时间\r\n    dns: {\r\n        end: 'domainLookupEnd',\r\n        start: 'domainLookupStart',\r\n        cachedSkip: true,\r\n    },\r\n    // TCP建连时间\r\n    tcp: {\r\n        end: 'connectEnd',\r\n        start: 'connectStart',\r\n        cachedSkip: true,\r\n    },\r\n    // ssl 安全连接耗时\r\n    ssl: {\r\n        cachedSkip: true,\r\n        // 有可能不是 https，导致这里上报异常\r\n        custom: function (key, perf) {\r\n            if (perf.secureConnectionStart === 0)\r\n                return 0;\r\n            return perf.connectEnd - perf.secureConnectionStart;\r\n        },\r\n    },\r\n    // 首字节事件，Time to First Byte\r\n    ttfb: {\r\n        end: 'responseStart',\r\n        start: 'requestStart',\r\n        cachedSkip: true,\r\n    },\r\n    // 数据传输耗时\r\n    trans: {\r\n        end: 'responseEnd',\r\n        start: 'responseStart',\r\n        cachedSkip: true,\r\n    },\r\n    // 首字节\r\n    fb: {\r\n        end: 'responseStart',\r\n        start: 'fetchStart',\r\n        cachedSkip: true,\r\n    },\r\n    total: {\r\n        end: 'responseEnd',\r\n        start: 'fetchStart',\r\n    },\r\n    // 计算逻辑与total一致\r\n    duration: {\r\n        end: 'responseEnd',\r\n        start: 'fetchStart',\r\n    },\r\n    // 体积\r\n    size: {\r\n        cachedSkip: true,\r\n        custom: function (key, perf) {\r\n            return perf.encodedBodySize;\r\n        },\r\n        noThrottle: true,\r\n    },\r\n    // 首次渲染，可以用 entries 里面的 first_paint\r\n    protocol: {\r\n        custom: function (key, perf) {\r\n            return perf.nextHopProtocol;\r\n        },\r\n    },\r\n    // file 静态资源地址\r\n    file: {\r\n        custom: function (key, perf) {\r\n            return perf.name;\r\n        },\r\n        noThrottle: true,\r\n    },\r\n    res_type: {\r\n        custom: function (key, perf) {\r\n            return perf.initiatorType;\r\n        },\r\n    },\r\n    // 是否缓存\r\n    cached: {\r\n        custom: function (key, perf) {\r\n            if (perf.transferSize === 0)\r\n                return true;\r\n            // safari 没有实现 transferSize，因此用 domainLookupStart 来判断\r\n            if (perf.transferSize == null && perf.domainLookupStart === 0)\r\n                return true;\r\n            return false;\r\n        },\r\n        noThrottle: true,\r\n    }\r\n};\r\nvar DEFAULT_IGNORE_LIST = [\r\n    '//wlog.kuaishou.com/rest/n/log/web/collect',\r\n    // v3\r\n    '/rest/wd/common/log/collect/misc2',\r\n    // v3 radar\r\n    '/rest/wd/common/log/collect/radar',\r\n    // v2\r\n    '/rest/kd/log/collect',\r\n];\r\n// userStart: 1603074007776, // 外部传入打点WebView初始时间戳，比如调用JSBridge时间戳，客户端入口点击时间戳等。\r\n// \tpageStart: 1603074007776, // Yoda收到任务的起始时间戳\r\n// \tpageShow: 1603074007776, // Loading图显示时间\r\n// \tpreCreate: 1603074007776, // Yoda即将启动创建WebView实例的时间戳\r\n// \tcreated: 1603074007776, // WebView对象创建完毕时间戳\r\n// \tstartLoad: 1603074007776, // WebView开始加载URL时间戳\r\n// \tdidStartLoad: 1603074007776, // WebView 加载URL后首个回调时间戳\r\n// \tdidEndLoad: 1603074007776, // WebView加载完毕时间戳\r\nvar webviewPerfMap = {\r\n    to_webview_page_start: {\r\n        end: 'pageStart',\r\n        start: 'userStart',\r\n    },\r\n    to_webview_page_show: {\r\n        end: 'pageShow',\r\n        start: 'userStart',\r\n    },\r\n    to_webview_pre_create: {\r\n        end: 'preCreate',\r\n        start: 'userStart',\r\n    },\r\n    to_webview_created: {\r\n        end: 'created',\r\n        start: 'userStart',\r\n    },\r\n    to_webview_start_load: {\r\n        end: 'startLoad',\r\n        start: 'userStart',\r\n    },\r\n    to_webview_did_start_load: {\r\n        end: 'didStartLoad',\r\n        start: 'userStart',\r\n    },\r\n    to_webview_did_end_load: {\r\n        end: 'didEndLoad',\r\n        start: 'userStart',\r\n    },\r\n    to_navigation_start: {\r\n        end: 'navigationStart',\r\n        start: 'userStart',\r\n    },\r\n    to_fetch_start: {\r\n        end: 'fetchStart',\r\n        start: 'userStart',\r\n    },\r\n    to_connect_start: {\r\n        end: 'connectStart',\r\n        start: 'userStart',\r\n    },\r\n    to_dom_ready: {\r\n        end: 'domContentLoadedEventEnd',\r\n        start: 'userStart',\r\n    },\r\n    to_total: {\r\n        end: 'loadEventStart',\r\n        start: 'userStart',\r\n    },\r\n    to_fmp: {\r\n        end: 'radarFmp',\r\n        start: 'userStart'\r\n    }\r\n};\r\n// load信息也需要上报时间戳了 这里提供一个rename的map\r\nvar loadTimestamp = {\r\n    navigation_start_time: 'navigationStart',\r\n    fetch_start_time: 'fetchStart',\r\n    dns_start_time: 'domainLookupStart',\r\n    dns_end_time: 'domainLookupEnd',\r\n    connect_start_time: 'connect_start',\r\n    ssl_start_time: 'secureConnectionStart',\r\n    request_start_time: 'requestStart',\r\n    response_start_time: 'responseStart',\r\n    response_end_time: 'responseEnd',\r\n    dom_interactive_time: 'domInteractive',\r\n    dom_loading_time: 'domLoading',\r\n    dom_ready_time: 'domContentLoadedEventEnd',\r\n    load_event_time: 'loadEventStart',\r\n    fmp_time: 'radarFmp'\r\n};\n\n/**\r\n * bridge实现方法\r\n */\r\nvar PAGELOG_API = 'sendRadarLog';\n\nvar t,n,e=function(){return \"\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12)},i=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return {name:t,value:n,delta:0,entries:[],id:e(),isFinal:!1}},a=function(t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){var e=new PerformanceObserver((function(t){return t.getEntries().map(n)}));return e.observe({type:t,buffered:!0}),e}}catch(t){}},r=!1,o=!1,s=function(t){r=!t.persisted;},u=function(){addEventListener(\"pagehide\",s),addEventListener(\"beforeunload\",(function(){}));},c=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];o||(u(),o=!0),addEventListener(\"visibilitychange\",(function(n){var e=n.timeStamp;\"hidden\"===document.visibilityState&&t({timeStamp:e,isUnloading:r});}),{capture:!0,once:n});},l=function(t,n,e,i){var a;return function(){e&&n.isFinal&&e.disconnect(),n.value>=0&&(i||n.isFinal||\"hidden\"===document.visibilityState)&&(n.delta=n.value-(a||0),(n.delta||n.isFinal||void 0===a)&&(t(n),a=n.value));}},p=function(t){var n,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=i(\"CLS\",0),o=function(t){t.hadRecentInput||(r.value+=t.value,r.entries.push(t),n());},s=a(\"layout-shift\",o);s&&(n=l(t,r,s,e),c((function(t){var e=t.isUnloading;s.takeRecords().map(o),e&&(r.isFinal=!0),n();})));},d=function(){return void 0===t&&(t=\"hidden\"===document.visibilityState?0:1/0,c((function(n){var e=n.timeStamp;return t=e}),!0)),{get timeStamp(){return t}}},f=function(t){var n=i(\"FID\"),e=d(),r=function(t){t.startTime<e.timeStamp&&(n.value=t.processingStart-t.startTime,n.entries.push(t),n.isFinal=!0,s());},o=a(\"first-input\",r),s=l(t,n,o);o?c((function(){o.takeRecords().map(r),o.disconnect();}),!0):window.perfMetrics&&window.perfMetrics.onFirstInputDelay&&window.perfMetrics.onFirstInputDelay((function(t,i){i.timeStamp<e.timeStamp&&(n.value=t,n.isFinal=!0,n.entries=[{entryType:\"first-input\",name:i.type,target:i.target,cancelable:i.cancelable,startTime:i.timeStamp,processingStart:i.timeStamp+t}],s());}));},m=function(){return n||(n=new Promise((function(t){return [\"scroll\",\"keydown\",\"pointerdown\"].map((function(n){addEventListener(n,t,{once:!0,passive:!0,capture:!0});}))}))),n},g=function(t){var n,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=i(\"LCP\"),o=d(),s=function(t){var e=t.startTime;e<o.timeStamp?(r.value=e,r.entries.push(t)):r.isFinal=!0,n();},u=a(\"largest-contentful-paint\",s);if(u){n=l(t,r,u,e);var p=function(){r.isFinal||(u.takeRecords().map(s),r.isFinal=!0,n());};m().then(p),c(p,!0);}};\n\nvar reProtocol = /^(https?:)?\\/\\//;\r\nfunction normalizeURL(ignoreList) {\r\n    if (ignoreList === void 0) { ignoreList = []; }\r\n    var list = ignoreList.concat(DEFAULT_IGNORE_LIST);\r\n    // 把协议头剃掉，防止出现协议头不一致\r\n    return list.map(function (url) { return url.replace(reProtocol, ''); });\r\n}\r\nfunction isInURLWhiteList(url, ignoreList) {\r\n    if (!url)\r\n        return false;\r\n    var domainPath = url.replace(reProtocol, '');\r\n    return ignoreList.some(function (whiteURL) {\r\n        return domainPath.indexOf(whiteURL) >= 0;\r\n    });\r\n}\r\n// 计算雷达自身耗时\r\nvar radarCost = {};\r\n// 保留拓展能力\r\nfunction radarPoint(name, open) {\r\n    // if (!open) {\r\n    //     // 默认关闭 需要业务方手动开启\r\n    //     return\r\n    // }\r\n    var costName = radarCost[name];\r\n    if (!costName) {\r\n        radarCost[name] = { startTime: new Date().getTime() };\r\n    }\r\n    else if (!costName.endTime) {\r\n        costName.endTime = new Date().getTime();\r\n        costName.duration = costName.endTime - costName.startTime;\r\n        delete costName.startTime;\r\n        delete costName.endTime;\r\n    }\r\n}\r\n/**\r\n    * 收集chrome指标 比如lcp cls fid等\r\n    * 会在unload事件里统一合并上报\r\n    */\r\nfunction collectChromeMetrics(opt) {\r\n    Object.assign(chromeMetric, opt);\r\n}\r\nvar chromeMetric = {};\r\nvar chromeMetricConfig = [\r\n    { name: 'fid', collectFn: f },\r\n    { name: 'lcp', collectFn: g },\r\n    { name: 'cls', collectFn: p }\r\n];\r\n// 取消通过客户端注入脚本来收集错误\r\nvar removeBridgeJsErrorCollect = function () {\r\n    if (typeof window !== 'undefined') {\r\n        window.yodaCollectErrorDataDestroy && window.yodaCollectErrorDataDestroy();\r\n    }\r\n};\r\n// 雷达通用debug函数\r\nvar radarWarnLog = function (type, value) {\r\n    var query = parseQueryString(location.search.slice(1));\r\n    if (+getCookie('debug') === 1 || +query.debug === 1) {\r\n        console.warn(\"[radar] \" + type + \": \", value);\r\n    }\r\n};\r\n/**\r\n * @file 对 radar 的数据进行预处理\r\n */\r\nfunction squashData(data) {\r\n    var loadLog = null;\r\n    var j = 0;\r\n    var i = 0;\r\n    // @ts-ignore\r\n    for (; i < data.length; i++) {\r\n        if (data[i].key === 'load') {\r\n            loadLog = data[i];\r\n        }\r\n        else {\r\n            data[j++] = data[i];\r\n        }\r\n    }\r\n    data.length = j;\r\n    return loadLog;\r\n}\r\nfunction formatYodaRadarData(options) {\r\n    if (!options.value)\r\n        return options;\r\n    var params = options.value;\r\n    // 过滤出最后一条load数据\r\n    var loadLog = squashData(params.data);\r\n    var commomParams = {\r\n        project_id: params.project_id,\r\n        app_version_name: params.app_version_name,\r\n        url_package: params.url_package,\r\n        // 统一传下划线格式\r\n        h5_extra_attr: options.h5ExtraAttr,\r\n    };\r\n    return {\r\n        loadLog: loadLog ? {\r\n            removeStashedLog: [],\r\n            sendImmediate: loadLog.dimension.sendImmediate,\r\n            customData: __assign({ data: [loadLog] }, commomParams),\r\n        } : null,\r\n        commonLog: {\r\n            removeStashedLog: [],\r\n            sendImmediate: true,\r\n            customData: __assign({ data: params.data }, commomParams),\r\n        },\r\n    };\r\n}\r\nvar getUAList = function () {\r\n    var ua = window.navigator.userAgent;\r\n    var uaList = {};\r\n    ua.split(' ').map(function (item) {\r\n        var arr = item.split('/');\r\n        uaList[arr[0]] = arr[1];\r\n    });\r\n    return uaList;\r\n};\r\n// 获取webview_type\r\nvar getWebViewType = function () {\r\n    var ua = window.navigator.userAgent;\r\n    if (ua.indexOf('Android') !== -1) {\r\n        return 'WebView';\r\n    }\r\n    if (ua.indexOf('iPhone') !== -1) {\r\n        var uaList = getUAList();\r\n        if (uaList.Yoda && uaList.WebViewType === 'WK') {\r\n            return 'YodaWKWebView';\r\n        }\r\n        if (!uaList.Yoda && uaList.WebView === 'WKWebView') {\r\n            return 'WKWebView';\r\n        }\r\n        return 'UIWebView';\r\n    }\r\n    return '';\r\n};\r\nvar formatLoadTime = function (timing, entry) {\r\n    var res = {};\r\n    Object.keys(entry).forEach(function (item) {\r\n        if (timing[entry[item]] > 0) {\r\n            res[item] = timing[entry[item]];\r\n        }\r\n    });\r\n    return res;\r\n};\r\n// 判断是否在第四tab环境下\r\nvar check4Tab = function () {\r\n    var ua = window.navigator.userAgent;\r\n    // tbht不等于0\r\n    var reg = /tbht\\/([\\w]+)/i;\r\n    var res = ua.match(reg);\r\n    return res && res[1] !== '0';\r\n};\n\nvar KWAI_KPN = ['KUAISHOU', 'THANOS', 'NEBULA'];\r\nvar REPORT_THRESSHOLD = 60 * 1000;\r\nvar RadarRoot = /** @class */ (function (_super) {\r\n    __extends(RadarRoot, _super);\r\n    function RadarRoot(weblog, options) {\r\n        var _this = _super.call(this) || this;\r\n        _this.kpn = getDefaultKpn();\r\n        _this.plugins = [];\r\n        _this.logQueue = [];\r\n        _this.queueConfig = {\r\n            // 每1s清空一次queue\r\n            wait: 1000,\r\n            maxBatchLength: 200,\r\n        };\r\n        _this.eventName = 'onpagehide' in window ? 'pagehide' : 'beforeunload';\r\n        _this.batchTimer = 0;\r\n        _this.startedLoadReport = false;\r\n        _this.radarSessionId = '';\r\n        _this.chromeMetric = chromeMetricConfig;\r\n        _this.isInKwai = KWAI_KPN.indexOf(_this.kpn) >= 0;\r\n        _this.isUsingBridge = null;\r\n        _this.isUsingLegacy = null;\r\n        _this.isUsingDetachedReport = null;\r\n        _this.isSupportedYodaConcat = null;\r\n        _this.customDimension = {};\r\n        // 默认忽略列表\r\n        _this.ignoreList = ['https://web-trace.ksapisrv.com/ktrace/collect'];\r\n        _this.lastRadarLogId = '';\r\n        // 当初始化时没获取到kswitch数据时 为true 表示需要在flush时重新计算采样率\r\n        _this.computedSamplingAgain = true;\r\n        _this.realSampledList = [];\r\n        _this.observeResource = function (perf) {\r\n            perf.getEntriesByType('resource')\r\n                .forEach(function (v) { return _this.reportPerformance(v); });\r\n        };\r\n        _this.asyncReportTiming = function () {\r\n            // onload之后的调用会影响该时间戳\r\n            radarPoint('radarCreatedToOnload');\r\n            radarPoint('onloadToFirstReport');\r\n            setTimeout(function () {\r\n                // 雷达自身的时间戳 不受影响\r\n                radarPoint('asyncReportTiming');\r\n                _this.reportPerformance(navigationTiming());\r\n                _this.startedLoadReport = true;\r\n                try {\r\n                    // 先上报一部分已经生成的 entries 数据\r\n                    _this.observeResource(performance);\r\n                    // 收集lcp等数据信息\r\n                    _this.observeChromeMetrics(_this.chromeMetric);\r\n                    new PerformanceObserver(_this.observeResource)\r\n                        .observe({ entryTypes: ['resource'] });\r\n                }\r\n                catch (e) {\r\n                    warn('[Radar] 由于不支持 Performance API Level 2，只进行请求监控和异常监控');\r\n                }\r\n                // 注册radar-第一次上报的时间\r\n                // created-firstReport = async-report + register-1\r\n                // new weblog之后 至 onload + unload 至 firstReport\r\n                radarPoint('radarCreatedToFirstReport');\r\n                radarPoint('onloadToFirstReport');\r\n                radarPoint('asyncReportTiming');\r\n            }, 1000); // 延迟一秒上报，确保不阻塞 fmp 和 total 等性能数据\r\n        };\r\n        _this.chromeMetricCallback = function (opt) {\r\n            var _a, _b;\r\n            var name = opt.name, value = opt.value;\r\n            name = name.toLocaleLowerCase();\r\n            _this.logCollect({\r\n                key: RADAR_KEY.CUSTOM,\r\n                value: (_a = {},\r\n                    _a[name] = value,\r\n                    _a)\r\n            });\r\n            radarPoint(name + \"Collect\");\r\n            collectChromeMetrics((_b = {}, _b[name] = value, _b));\r\n        };\r\n        _this.observeChromeMetrics = function (arr) {\r\n            // 默认配置几项可收集指标\r\n            var options = _this.options;\r\n            // 判断默认不主动上报，由业务进行配置\r\n            arr.forEach(function (metric) {\r\n                // 收集数据\r\n                var name = metric.name;\r\n                if (!options || options[name]) {\r\n                    radarPoint(name + \"Collect\");\r\n                    metric.collectFn(_this.chromeMetricCallback);\r\n                }\r\n            });\r\n        };\r\n        // 监听异步指标耗时上报情况，确保耗时数据完善\r\n        // 通过unload事件上报\r\n        _this.asyncMetricCollectDone = function () {\r\n            // 格式 key:duration⬇️\r\n            var radarCostResult = {};\r\n            Object.keys(radarCost).forEach(function (radar) {\r\n                var costItem = radarCost[radar];\r\n                if (!costItem.duration && costItem.startTime) {\r\n                    // 防止有部分指标在unload的时候未收集完毕，默认置0\r\n                    costItem.duration = 0;\r\n                    delete costItem.startTime;\r\n                }\r\n                radarCostResult[radar] = costItem.duration;\r\n            });\r\n            _this.logCollect({\r\n                key: RADAR_KEY.CUSTOM,\r\n                value: radarCostResult\r\n            });\r\n            _this.flush();\r\n            _this.weblog.flush();\r\n            // 上报完毕删除监听\r\n            removeMonitor(window, _this.eventName, _this.asyncMetricCollectDone);\r\n        };\r\n        _this.flush = function () {\r\n            _this.beforeFlush();\r\n            if (!_this.options) {\r\n                return;\r\n            }\r\n            if (_this.logQueue.length <= 0) {\r\n                return;\r\n            }\r\n            // 初次上报之前都暂时存一下比较稳妥\r\n            if (!_this.startedLoadReport) {\r\n                return;\r\n            }\r\n            var h5_extra_attr = JSON.stringify(__assign(__assign({}, _this.weblog.commomPackage.getH5ExtraAttr()), { \r\n                // radar自定义新增非value字段可以加在这里\r\n                // 获取客户端版本\r\n                app_version_name: _this.weblog.commomPackage.getVersionName(), url: location.href }));\r\n            // 判断端环境\r\n            // \b数据侧在业务设置了pagename的时候无法获取到真实的url，雷达这块重新写一次忽略pagename的逻辑比较复杂 故提供一个新的字段\r\n            // radar_h5_extra_attr和radar_custom_extra_attr 共有字段app_version_name\r\n            // 上报位置 custom_stat_event.value和h5_extra_attr\r\n            var commonLogData = {\r\n                project_id: _this.options.projectId,\r\n                radar_session_id: _this.radarSessionId,\r\n                h5_extra_attr: h5_extra_attr\r\n            };\r\n            var _a = _this.weblog.commomPackage, service_name = _a.service_name, sub_biz = _a.sub_biz, need_encrypt = _a.need_encrypt, app_package = _a.app_package;\r\n            // @ts-ignore\r\n            var currentUrlPackage = _this.currentUrlPackage && _this.currentUrlPackage.toJSON();\r\n            // const key = this.isUsingLegacy ? LEGACY_KEY : KEY;\r\n            // 尝试先直接桥接上报\r\n            var sended = null;\r\n            // 如果配置了优先http上报则不使用bridge上报数据\r\n            if (!_this.options.httpReportFirst) {\r\n                sended = _this.addRadarStatEvent({\r\n                    key: KEY,\r\n                    value: __assign(__assign({}, commonLogData), { data: _this.logQueue, \r\n                        // @ts-ignore\r\n                        url_package: currentUrlPackage, app_version_name: app_package.version_name }),\r\n                    serviceName: service_name || '',\r\n                    subBiz: sub_biz || '',\r\n                    needEncrypt: need_encrypt || false,\r\n                    container: app_package.container,\r\n                    realtime: false,\r\n                    // 统一改成下划线格式\r\n                    h5ExtraAttr: h5_extra_attr\r\n                });\r\n            }\r\n            // 桥接上报失败使用 weblogger 自定义事件上报\r\n            if (!sended || _this.options.httpReportFirst) {\r\n                _this.weblog.collect('RADAR', {\r\n                    name: KEY,\r\n                    params: __assign(__assign({}, commonLogData), { data: _this.logQueue }),\r\n                    currentUrlPackage: currentUrlPackage,\r\n                    // @ts-ignore\r\n                    referUrlPackage: _this.referUrlPackage && _this.referUrlPackage.toJSON(),\r\n                });\r\n            }\r\n            _this.logQueue = [];\r\n        };\r\n        // 兼容处理\r\n        var opts;\r\n        if (options) {\r\n            opts = options;\r\n        }\r\n        if (weblog) {\r\n            if (weblog.logger) {\r\n                _this.apply(weblog);\r\n            }\r\n            else {\r\n                opts = weblog;\r\n            }\r\n        }\r\n        radarPoint('radarCreatedToFirstReport');\r\n        radarPoint('radarCreatedToOnload');\r\n        _this.options = opts;\r\n        _this.queueConfig = __assign(__assign({}, _this.queueConfig), (_this.options ? _this.options.queue : {}));\r\n        // FIXME\r\n        _this.ignoreList = _this.ignoreList.concat(normalizeURL(_this.options && _this.options.ignoreList));\r\n        return _this;\r\n    }\r\n    Object.defineProperty(RadarRoot.prototype, \"KSwitchSampled\", {\r\n        get: function () {\r\n            // @ts-ignore\r\n            return this.weblog.currentUrlPackage.sampled;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(RadarRoot.prototype, \"isKSwitchSampled\", {\r\n        get: function () {\r\n            // @ts-ignore\r\n            return this.weblog.isKSwitchSampled;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    // 采样控制 迁移自radar.ts 子类重写该方法\r\n    RadarRoot.prototype.samplingControl = function (options) {\r\n        if (!options) {\r\n            return false;\r\n        }\r\n        // 计算随机数\r\n        var rand = Math.random();\r\n        if (typeof options === 'number') {\r\n            // 传入的是单一模块采样率 无需从options中取值\r\n            return rand < options;\r\n        }\r\n        // radar整体采样率逻辑\r\n        var sampling = options.sampling;\r\n        return rand < sampling;\r\n    };\r\n    RadarRoot.prototype.use = function (plugin, ctx) {\r\n        var usedPlugin = new plugin(ctx, this.options);\r\n        this.plugins.push(usedPlugin);\r\n        // 如果是旧式引用，use 是在 apply 之后调用。\r\n        if (this.weblog) {\r\n            usedPlugin.created();\r\n        }\r\n    };\r\n    RadarRoot.prototype.apply = function (weblog) {\r\n        this.weblog = weblog;\r\n        this.upadteUrlPackage();\r\n        this.register();\r\n        this.ignoreList.push(this.weblog.logger.url);\r\n        // 业务侧new Radar时 是不会传入weblog对象的 apply方法在weblogger插件内调用 并传入weblogger对象\r\n        // 业务侧传入radar时，weblogger通过plug方法实例化radar并传入weblogger对象 此时由雷达自身调用apply方法\r\n        // 结论：在调用apply方法时一定会存在weblogger对象\r\n        this.created();\r\n    };\r\n    RadarRoot.prototype.created = function () {\r\n        // 通过apply调用created，旧式引用时 plugins 为空\r\n        this.plugins.forEach(function (plugin) {\r\n            plugin.created();\r\n        });\r\n    };\r\n    RadarRoot.prototype.destroy = function () {\r\n        removeMonitor(window, 'load', this.asyncReportTiming);\r\n        this.plugins.forEach(function (plugin) {\r\n            plugin.destroy();\r\n        });\r\n    };\r\n    RadarRoot.prototype.computedRealSampled = function (sampling, type) {\r\n        // 请求kswitch后｜通过h5上报\r\n        if (this.isKSwitchSampled) {\r\n            var KSwitchSampling = void 0;\r\n            if (typeof this.KSwitchSampled === 'object' && this.KSwitchSampled['radar']) {\r\n                var allSample = this.KSwitchSampled['radar']['all'];\r\n                allSample = typeof allSample !== 'number' ? 1 : allSample;\r\n                var theSample = this.KSwitchSampled['radar'][type];\r\n                // load等采样率和all是相乘关系\r\n                KSwitchSampling = typeof theSample !== 'number' ? allSample : (theSample * allSample);\r\n            }\r\n            else {\r\n                // if (typeof this.KSwitchSampled === 'boolean') 只有这两种情况\r\n                KSwitchSampling = this.KSwitchSampled ? 1 : 0;\r\n            }\r\n            return KSwitchSampling * sampling;\r\n        }\r\n        else {\r\n            return 1;\r\n            // bridge没有返回 先按全量收集，flush的时候在重新检测\r\n        }\r\n    };\r\n    /**\r\n     * 通过 perf level 2 注册监听事件\r\n     * 实际测试需要处理几个 case：\r\n     * 1. 部分浏览器只支持 level 1\r\n     * 2. 部分浏览器在 PerformanceObserver 时没有 navigation 事件\r\n     */\r\n    RadarRoot.prototype.register = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var yoda, _a, _b;\r\n            return __generator(this, function (_c) {\r\n                switch (_c.label) {\r\n                    case 0:\r\n                        // 不支持 level 1\r\n                        if (!navigationTiming()) {\r\n                            warn('[Radar] 由于不支持 Performance API，只进行请求监控和异常监控');\r\n                            return [2 /*return*/];\r\n                        }\r\n                        // 鉴于部分浏览器虽然支持 level2，但 observer 时没有 navigation 事件\r\n                        // 因此这里直接上报 level1 的数据（反正不需要高精度数据）\r\n                        // remove js注入的 error事件 后续会通过radar收集上报\r\n                        removeBridgeJsErrorCollect();\r\n                        // 兼容业务在onload之后实例化雷达 所以手动调用一次上报方法\r\n                        if (performance.timing.loadEventEnd > 0) {\r\n                            this.asyncReportTiming();\r\n                        }\r\n                        else {\r\n                            addMonitor(window, 'load', this.asyncReportTiming);\r\n                        }\r\n                        if (this.options && this.options.radarCost) {\r\n                            // 默认不上报雷达自身耗时\r\n                            addMonitor(window, this.eventName, this.asyncMetricCollectDone);\r\n                        }\r\n                        // beforeunload时清空当前logqueue\r\n                        addMonitor(window, this.eventName, this.flush);\r\n                        yoda = this.weblog.Utils.yoda;\r\n                        if (!!yoda) return [3 /*break*/, 1];\r\n                        this.isUsingBridge = false;\r\n                        this.isSupportedYodaConcat = false;\r\n                        this.isUsingLegacy = false;\r\n                        return [3 /*break*/, 6];\r\n                    case 1:\r\n                        if (!(this.isUsingBridge == null)) return [3 /*break*/, 3];\r\n                        _a = this;\r\n                        return [4 /*yield*/, yoda.isSupportBridge()];\r\n                    case 2:\r\n                        _a.isUsingBridge = _c.sent();\r\n                        _c.label = 3;\r\n                    case 3:\r\n                        if (!(this.isSupportedYodaConcat == null)) return [3 /*break*/, 5];\r\n                        _b = this;\r\n                        return [4 /*yield*/, yoda.isSupportBridge(PAGELOG_API)];\r\n                    case 4:\r\n                        _b.isSupportedYodaConcat = _c.sent();\r\n                        _c.label = 5;\r\n                    case 5:\r\n                        this.isUsingLegacy = this.isUsingBridge && !this.isSupportedYodaConcat;\r\n                        _c.label = 6;\r\n                    case 6:\r\n                        //  生成唯一sessionid\r\n                        this.radarSessionId = this.nanoId();\r\n                        // 这里需要注意：在客户端内，而且不支持 bridge，或者支持 bridge 但不支持 yodaConcat\r\n                        this.isUsingDetachedReport = (this.isInKwai && !this.isUsingBridge) || this.isUsingLegacy;\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    /**\r\n     * 处理上报超出阈值的情况\r\n     */\r\n    RadarRoot.prototype.throttle = function (value, perf, key, detail) {\r\n        if (detail === void 0) { detail = {}; }\r\n        if (perf.noThrottle || typeof value !== 'number')\r\n            return value;\r\n        var startPoint = detail.startPoint, endPoint = detail.endPoint;\r\n        // 间隔超过一定阈值，认为上报的有问题，不上报并记录日志\r\n        // NaN数据也算作一种异常情况 不上报\r\n        // 雷达的异常数据采样10%\r\n        if (value > REPORT_THRESSHOLD || value < 0 || isNaN(value)) {\r\n            if ((Math.random() < 0.1)) {\r\n                var msg = \"[\" + key + \" \\u5F02\\u5E38]: \" + value + \"\\uFF0C\\u539F\\u59CB\\u6570\\u636E\\u4E3A\\uFF1A\" + perf.end + \": \" + endPoint + \" - \" + perf.start + \": \" + startPoint;\r\n                this.logCollect({\r\n                    key: RADAR_KEY.EVENT,\r\n                    value: null,\r\n                    dimension: {\r\n                        name: '雷达数据异常',\r\n                        event_type: 'radar_error',\r\n                        message: msg,\r\n                        src: location.href,\r\n                        webViewType: getWebViewType(),\r\n                        yoda_version: getUAList().yoda_version || '',\r\n                    }\r\n                });\r\n            }\r\n            return null;\r\n        }\r\n        return Math.round(value);\r\n    };\r\n    RadarRoot.prototype.reportPerformance = function (entry) {\r\n        this.plugins.forEach(function (plugin) {\r\n            if (!plugin.when(entry)) {\r\n                return;\r\n            }\r\n            plugin.onPerfReport(entry);\r\n        });\r\n    };\r\n    // 处理上报计算逻辑\r\n    RadarRoot.prototype.calculate = function (key, perfMap, timing) {\r\n        var perf = perfMap[key];\r\n        if (!perf) {\r\n            error(\"perf key \" + key + \" is unexpected!\");\r\n            return;\r\n        }\r\n        // 当资源有缓存时，好多数据为 0，不进行无意义的上报\r\n        if (perf.cachedSkip) {\r\n            var cached = this.calculate('cached', perfMap, timing);\r\n            if (cached)\r\n                return;\r\n        }\r\n        if (typeof perf.custom === 'function') {\r\n            var value_1 = perf.custom(key, timing);\r\n            return this.throttle(value_1, perf, key);\r\n        }\r\n        var end = perf.end, start = perf.start;\r\n        // 由于webview数据上报的时候 不会带上performance.time导致timing['fmp']之类的数据为NaN无法计算\r\n        //计算webview指标时 timing[end as keyof PerfTime] 可能为undefined 故兼容一下\r\n        // @ts-ignore\r\n        var endPoint = +timing[end] || performance.timing[end];\r\n        // @ts-ignore\r\n        var startPoint = +timing[start] || performance.timing[start];\r\n        // console.log(`[info] ${key} –> ${end}: ${endPoint} - ${start}: ${startPoint} = ${endPoint - startPoint}`);\r\n        var value = endPoint - startPoint;\r\n        // 间隔超过一定阈值，认为上报的有问题，不上报并记录日志\r\n        return this.throttle(value, perf, key, { startPoint: startPoint, endPoint: endPoint });\r\n    };\r\n    // FIXME\r\n    RadarRoot.prototype.generateLog = function (perfMap, timing) {\r\n        var _this = this;\r\n        var allPerf = {};\r\n        // 批量处理日志生成\r\n        Object.keys(perfMap).forEach(function (k) {\r\n            var key = k;\r\n            var value = _this.calculate(key, perfMap, timing);\r\n            // 可能存在一些值取不到的情况，取不到的话就不上报\r\n            if (value != null) {\r\n                // @ts-ignore\r\n                allPerf[key] = value;\r\n            }\r\n        });\r\n        return allPerf;\r\n    };\r\n    RadarRoot.prototype.subDimension = function (logData) {\r\n        if (this.customDimension) {\r\n            if (!logData.dimension) {\r\n                logData.dimension = {};\r\n            }\r\n            Object.assign(logData.dimension, this.customDimension);\r\n        }\r\n    };\r\n    /**\r\n     * 生成nano id\r\n     * 目前radarsessionid生成逻辑与weblog相同，防止weblog修改，雷达自身保存一份\r\n     * @return {string} 16长度的字符串\r\n     */\r\n    RadarRoot.prototype.nanoId = function () {\r\n        var ts = ((Math.random() * 1e9) >>> 0);\r\n        var randomer = [];\r\n        var seed = '0123456789ABCDEF';\r\n        for (var i = 0; i < 7; i++) {\r\n            randomer.push(seed.charAt(Math.random() * 16));\r\n        }\r\n        return ts + randomer.join('');\r\n    };\r\n    // flush上报之前重新探测一下采样率的问题\r\n    RadarRoot.prototype.beforeFlush = function () {\r\n        // 这里不关心weblogger的采样率\r\n        var _this = this;\r\n        if (this.computedSamplingAgain) {\r\n            // 第一次flush\r\n            var samplingList_1 = {\r\n                radarLoadSampling: { sampling: 1, type: 'load' },\r\n                radarApiSampling: { sampling: this.options && this.options.apiSampling || 1, type: 'api' },\r\n                radarErrorSampling: { sampling: this.options && this.options.errorSampling || 1, type: 'error' },\r\n                radarResourceSampling: { sampling: this.options && this.options.resourceSampling || 0.1, type: 'resource' },\r\n                radarCustomSampling: { sampling: this.options && this.options.customSampling || 1, type: 'custom' },\r\n                radarEventSampling: { sampling: this.options && this.options.eventSampling || 1, type: 'event' },\r\n            };\r\n            this.realSampledList = [];\r\n            Object.keys(samplingList_1).forEach(function (item) {\r\n                // 计算出每个模块的采样率\r\n                var sampling = _this.isKSwitchSampled ?\r\n                    // 初始化的时候 kswitch没有返回且 flush时 发现kswitch有返回了 重新计算\r\n                    // load默认为1 其他根据业务配置取值\r\n                    _this.samplingControl(_this.computedRealSampled(samplingList_1[item]['sampling'], samplingList_1[item]['type']))\r\n                    // 采样率为用户配置的采样率\r\n                    : _this.samplingControl(samplingList_1[item]);\r\n                if (sampling) {\r\n                    _this.realSampledList.push(samplingList_1[item]['type']);\r\n                }\r\n            });\r\n            if (this.isKSwitchSampled) {\r\n                this.computedSamplingAgain = false;\r\n            }\r\n        }\r\n        // 把没采样的数据从logqueue中洗出来。。。。。\r\n        this.logQueue = this.logQueue.filter(function (log) { return _this.realSampledList.indexOf(log.key) !== -1; });\r\n    };\r\n    RadarRoot.prototype.upadteUrlPackage = function () {\r\n        if (!this.weblog)\r\n            return;\r\n        this.computedSamplingAgain = true;\r\n        // 通过 toJSON 确保 page 和 params 是日志产生时的信息\r\n        // @ts-ignore\r\n        this.currentUrlPackage = this.weblog.currentUrlPackage;\r\n        // @ts-ignore\r\n        this.referUrlPackage = this.weblog.referUrlPackage;\r\n    };\r\n    RadarRoot.prototype.decorateLog = function (kv) {\r\n        if (!this.currentUrlPackage) {\r\n            this.upadteUrlPackage();\r\n        }\r\n        if (this.customDimension) {\r\n            this.subDimension(kv);\r\n        }\r\n        // if (this.isUsingLegacy) {\r\n        //     // @ts-ignore\r\n        //     kv.key = kv.key + '_statistics';\r\n        // }\r\n        // 由于 url 是日志公参，因此 url 发生变化时直接冲刷日志\r\n        if (this.currentUrlPackage && this.currentUrlPackage.page !== this.weblog.currentUrlPackage.page) {\r\n            this.flush();\r\n            this.upadteUrlPackage();\r\n        }\r\n    };\r\n    RadarRoot.prototype.logCollect = function (kv) {\r\n        var _this = this;\r\n        radarWarnLog('radarLog', kv);\r\n        if (!this.options) {\r\n            return;\r\n        }\r\n        // 不再防抖 改为节流\r\n        // if (this.batchTimer) {\r\n        //     clearTimeout(this.batchTimer);\r\n        // }\r\n        this.decorateLog(kv);\r\n        // 当已经收集到load数据时 不会继续push 防止同时收集到多条load数据 适用于bridge和http上报\r\n        if (kv.key === 'load') {\r\n            var lastLoadData = this.logQueue.find(function (v) { return v.key === 'load'; });\r\n            lastLoadData ? Object.assign(lastLoadData, kv) : this.logQueue.push(kv);\r\n        }\r\n        else {\r\n            this.logQueue.push(kv);\r\n        }\r\n        // 上报窗口期内 不再创建定时器 只压入队列\r\n        // flush判断当前情况是否可上报 包括采样，空队列等情况\r\n        if (this.batchTimer) {\r\n            return;\r\n        }\r\n        if (this.logQueue.length > this.queueConfig.maxBatchLength) {\r\n            this.flush();\r\n            return;\r\n        }\r\n        // 每隔wait秒上报一次数据 并在pagehide时上报所有logqueue里的数据\r\n        this.batchTimer = window.setTimeout(function () {\r\n            _this.flush();\r\n            clearTimeout(_this.batchTimer);\r\n            _this.batchTimer = 0;\r\n        }, this.queueConfig.wait);\r\n    };\r\n    RadarRoot.prototype.addRadarStatEvent = function (log) {\r\n        var _this = this;\r\n        try {\r\n            var yoda = this.weblog.Utils.yoda;\r\n            if (!yoda) {\r\n                return false;\r\n            }\r\n            var _a = formatYodaRadarData(log), loadLog = _a.loadLog, commonLog = _a.commonLog;\r\n            if (loadLog) {\r\n                if (this.lastRadarLogId) {\r\n                    loadLog.removeStashedLog = [this.lastRadarLogId];\r\n                    // 如果报进来的是一条sendImmediate为true的数据 且在之前已经上报过一条 load数据\r\n                    // 则需要覆盖掉上一条load 保证客户端在destory的时候只上报一次load数据\r\n                    if (loadLog.sendImmediate) {\r\n                        // 当本条load数据是sendImmediate = true时 清除上一条false的数据\r\n                        var empytLoadData = {\r\n                            removeStashedLog: [this.lastRadarLogId],\r\n                            sendImmediate: false,\r\n                            custom: { \"\": \"\" }\r\n                        };\r\n                        yoda.sendRadarLog(empytLoadData).then(function (res) {\r\n                            if (res && res.logId) {\r\n                                _this.lastRadarLogId = res.logId;\r\n                            }\r\n                        });\r\n                    }\r\n                }\r\n                yoda.sendRadarLog(loadLog).then(function (res) {\r\n                    if (res && res.logId) {\r\n                        _this.lastRadarLogId = res.logId;\r\n                    }\r\n                });\r\n            }\r\n            if (commonLog) {\r\n                yoda.sendRadarLog(commonLog);\r\n            }\r\n            return true;\r\n        }\r\n        catch (err) {\r\n            return false;\r\n        }\r\n    };\r\n    return RadarRoot;\r\n}(BasePlugin));\n\n/**\r\n * @file 对于每个 Plugin 的共性，使用一个抽象类来描述\r\n */\r\nvar RadarPlugin = /** @class */ (function () {\r\n    function RadarPlugin(radar, options) {\r\n        this.radar = radar;\r\n        this.options = options;\r\n    }\r\n    return RadarPlugin;\r\n}());\n\nvar Navigation = /** @class */ (function (_super) {\r\n    __extends(Navigation, _super);\r\n    function Navigation() {\r\n        var _this = _super !== null && _super.apply(this, arguments) || this;\r\n        _this.key = 'navigation';\r\n        _this.eventName = 'onpagehide' in window ? 'pagehide' : 'beforeunload';\r\n        _this.logData = {};\r\n        _this.logSended = false;\r\n        _this.saveWebviewEntry = {};\r\n        _this.hasReportBase = false;\r\n        _this.record = {\r\n            fmp: false,\r\n            base: false,\r\n            webviewPerf: false\r\n        };\r\n        // 端外延迟2s的timeout\r\n        _this.loadTimeout = null;\r\n        // 按照苗老师处理页面离开行为的思路来进行页面性能上报\r\n        _this.reportOnUnload = function (flush) {\r\n            // 走 yoda 通道的不额外上报\r\n            if (_this.logSended || _this.radar.isSupportedYodaConcat)\r\n                return;\r\n            _this.logSended = true;\r\n            // FIXME: 上报差值，有点丑\r\n            _this.reportFirstScreen(Object.assign(_this.logData, chromeMetric));\r\n            _this.radar.logCollect(_this.data);\r\n            if (flush !== 'noflash') {\r\n                _this.radar.flush();\r\n                _this.radar.weblog.flush();\r\n            }\r\n        };\r\n        return _this;\r\n    }\r\n    Object.defineProperty(Navigation.prototype, \"sendImmediate\", {\r\n        // 立即上报\r\n        get: function () {\r\n            return this.record.fmp && this.record.base && this.record.webviewPerf && !!check4Tab();\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(Navigation.prototype, \"data\", {\r\n        get: function () {\r\n            return this.sepDimension({\r\n                key: RADAR_KEY.LOAD,\r\n                value: this.logData,\r\n            });\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Navigation.prototype.created = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            return __generator(this, function (_a) {\r\n                return [2 /*return*/];\r\n            });\r\n        });\r\n    };\r\n    Navigation.prototype.when = function (entry) {\r\n        // 接受 fmp/play_clicked/play_idr 三个自定义指标\r\n        if (entry.custom) {\r\n            var key = (entry.entry || {}).key;\r\n            if (['fmp', 'play_clicked', 'play_idr', 'webViewPerf'].indexOf(key) > -1) {\r\n                return true;\r\n            }\r\n            return false;\r\n        }\r\n        // 接受 level1 和 level2\r\n        return !entry.entryType\r\n            || entry.entryType === 'navigation';\r\n    };\r\n    Navigation.prototype.getWebviewLoadData = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var yoda, webviewPerf, _a, _b, userStart, pageStart;\r\n            return __generator(this, function (_c) {\r\n                switch (_c.label) {\r\n                    case 0:\r\n                        if (this.record.webviewPerf) {\r\n                            // 禁止重复获取\r\n                            return [2 /*return*/];\r\n                        }\r\n                        yoda = this.radar.weblog.Utils.yoda;\r\n                        _a = yoda;\r\n                        if (!_a) return [3 /*break*/, 2];\r\n                        return [4 /*yield*/, yoda.getWebviewLoadPerf()];\r\n                    case 1:\r\n                        _a = (_c.sent());\r\n                        _c.label = 2;\r\n                    case 2:\r\n                        webviewPerf = _a;\r\n                        // 调用成功后更改状态 如果第一次调用失败 会在unload之前再调用一次\r\n                        // 兼容旧版本客户端webviewPerf是一个空对象的问题\r\n                        if (webviewPerf && webviewPerf.timeData) {\r\n                            // 没有获取到就不上报\r\n                            this.record.webviewPerf = true;\r\n                            _b = webviewPerf.timeData, userStart = _b.userStart, pageStart = _b.pageStart;\r\n                            if (!userStart) {\r\n                                webviewPerf.timeData.userStart = pageStart;\r\n                            }\r\n                            this.onPerfReport({\r\n                                custom: true,\r\n                                entry: {\r\n                                    key: 'webViewPerf',\r\n                                    // 客户端返回数据为\r\n                                    /**\r\n                                      {\r\n                                      result:number\r\n                                      timeData:{string:number}\r\n                                      }\r\n                                     */\r\n                                    value: webviewPerf.timeData,\r\n                                },\r\n                            });\r\n                        }\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    Navigation.prototype.onPerfReport = function (entry) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var data, key, value, renderTime, loadTime, webviewTiming, webviewEntry, webviewTiming, logData, loadTime;\r\n            var _a;\r\n            var _this = this;\r\n            return __generator(this, function (_b) {\r\n                if (entry.custom) {\r\n                    data = entry.entry;\r\n                    if (data) {\r\n                        key = data.key, value = data.value;\r\n                        renderTime = entry.renderTime;\r\n                        if (key === 'fmp') {\r\n                            //  fmp晚于load上报时 为了得到fmo_time数据 需要重新计算一次loadtime，随着fmp上报\r\n                            performance.timing.radarFmp = renderTime;\r\n                            this.record.fmp = true;\r\n                            loadTime = formatLoadTime(performance.timing, loadTimestamp);\r\n                            Object.assign(this.logData, (_a = {}, _a[key] = value, _a), loadTime);\r\n                            this.getWebviewLoadData();\r\n                            if (this.record.webviewPerf) {\r\n                                webviewTiming = this.radar.generateLog(webviewPerfMap, this.saveWebviewEntry);\r\n                                Object.assign(this.logData, webviewTiming);\r\n                            }\r\n                        }\r\n                        if (key === 'webViewPerf') {\r\n                            webviewEntry = data.value;\r\n                            if (!webviewEntry) {\r\n                                // 说明没有收集到webview指标\r\n                                return [2 /*return*/];\r\n                            }\r\n                            this.saveWebviewEntry = webviewEntry;\r\n                            webviewTiming = this.radar.generateLog(webviewPerfMap, webviewEntry);\r\n                            Object.assign(this.logData, webviewTiming);\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    logData = this.radar.generateLog(domPerfMap, entry);\r\n                    loadTime = formatLoadTime(performance.timing, loadTimestamp);\r\n                    // 无重复字段 不会覆盖\r\n                    Object.assign(this.logData, logData, loadTime);\r\n                    this.record.base = true;\r\n                }\r\n                // yoda 通道每次收到自定义数据都合并上报一次\r\n                // yodaAlready用于兼容radar.bridge  使用非桥接上报版本优先通过桥接上报 如果fmp上报先于yodaready,需要在这里做一个兜底,否则会丢数据\r\n                if (this.radar.isSupportedYodaConcat) {\r\n                    /**\r\n                     * 目前有三个位置可以调用此方法\r\n                     * 1。onload事件\r\n                     * 2。fmp上报\r\n                     * 3. webviewPerf\r\n                     * 端内分几种情况：\r\n                     * 1. onload +webviewPerf = to_fmp为NaN 客户端侧上报为Null 清洗侧为0 其他正常\r\n                     * 2. onload +fmp 不会上报to_fmp等字段  清洗侧为null\r\n                     * 3. onload +fmp+webviewperf 正常上报\r\n                     */\r\n                    // 防止上报的fmp上报之后 yoda没有ready 所以每次上报都会调用一次 如果bridge之前调用成功过，则不会继续调用bridge\r\n                    this.getWebviewLoadData();\r\n                    this.radar.logCollect(this.data);\r\n                }\r\n                else if (this.radar.isUsingDetachedReport && this.record.webviewPerf && this.record.fmp && this.record.base) {\r\n                    // 这里是为了覆盖客户端版本过低 对bridge支持不好的情况\r\n                    // 端内对 unload 支持很差，先弄成三个信息都有就强制上报（可能无需上报webviewperf 由数据侧根据时间戳计算）\r\n                    // 没有yoda 无法获取webview信息 \r\n                    // 上报之前需要合并webviewtiming\r\n                    this.reportOnUnload('noflash');\r\n                }\r\n                else if (this.record.fmp && this.record.base && !this.hasReportBase) {\r\n                    // 端外有这两个数据就立即上报\r\n                    // 这里应用于fmp先于load被收集的场景  或\r\n                    // load被收集2s内收集到fmp的场景 此时hasReportBase为false\r\n                    /**\r\n                     * 端外有两种情况\r\n                     * 1.fmp先于load\r\n                     * 2.load先于fmp\r\n                     */\r\n                    clearTimeout(this.loadTimeout);\r\n                    this.loadTimeout = null;\r\n                    this.loadReport();\r\n                }\r\n                else if (!this.hasReportBase && this.record.base) {\r\n                    // 端外收集到load数据后延迟2s上报等待fmp数据 \r\n                    // 这里应用于load先于fmp被收集的场景\r\n                    this.loadTimeout = setTimeout(function () {\r\n                        _this.loadReport();\r\n                        _this.hasReportBase = true;\r\n                    }, 2000);\r\n                }\r\n                return [2 /*return*/];\r\n            });\r\n        });\r\n    };\r\n    Navigation.prototype.destroy = function () {\r\n        clearTimeout(this.delay);\r\n        removeMonitor(window, this.eventName, this.reportOnUnload);\r\n    };\r\n    Navigation.prototype.sepDimension = function (kv) {\r\n        var key = kv.key;\r\n        var _a = kv.value, protocol = _a.protocol, value = __rest(_a, [\"protocol\"]);\r\n        var dimension = { protocol: protocol, sendImmediate: this.sendImmediate };\r\n        return { key: key, value: value, dimension: dimension };\r\n    };\r\n    // FIXME：处理一下上报差值\r\n    Navigation.prototype.reportFirstScreen = function (data) {\r\n        if (data.play_clicked && data.play_idr) {\r\n            var firstScreen = data.play_idr - data.play_clicked;\r\n            if (firstScreen > 0 && firstScreen < 60000) {\r\n                this.logData.play_first_screen = firstScreen;\r\n            }\r\n        }\r\n    };\r\n    // 强制上报当前收集到的数据\r\n    Navigation.prototype.loadReport = function () {\r\n        // 加入lcp数据\r\n        Object.assign(this.logData, chromeMetric);\r\n        this.radar.logCollect(this.data);\r\n        this.radar.flush();\r\n        this.radar.weblog.flush();\r\n    };\r\n    return Navigation;\r\n}(RadarPlugin));\n\n// const LOAD_REPORT_DELAY = 15 * 1000; // 加载上报日志\r\nvar Resource = /** @class */ (function (_super) {\r\n    __extends(Resource, _super);\r\n    function Resource() {\r\n        var _this = _super !== null && _super.apply(this, arguments) || this;\r\n        _this.key = 'resource';\r\n        // 劫持 window.addEventListener('error')\r\n        _this.onResError = function (e) {\r\n            var isScriptError = _this.isScriptError(e);\r\n            if (!isScriptError) {\r\n                // resource报错 需要遵循resource插件的采样逻辑\r\n                // 非脚本报错\r\n                _this.radar.logCollect(_this.sepDimension({\r\n                    key: RADAR_KEY.RES,\r\n                    value: {\r\n                        failed: true,\r\n                        file: e.target.src,\r\n                        // cached: false,\r\n                        // @ts-ignore\r\n                        res_path: composedPath(e.path || (e.composedPath && e.composedPath())),\r\n                    },\r\n                }));\r\n            }\r\n        };\r\n        return _this;\r\n    }\r\n    Resource.prototype.created = function () {\r\n        // Nothing\r\n        addMonitor(window, 'error', this.onResError, true);\r\n    };\r\n    Resource.prototype.when = function (entry) {\r\n        if (isInURLWhiteList(entry.name, this.radar.ignoreList)) {\r\n            return false;\r\n        }\r\n        // load 这里可以接受自定义指标\r\n        return entry.entryType === 'resource' && (entry.initiatorType !== 'fetch' && entry.initiatorType !== 'xmlhttprequest');\r\n    };\r\n    // 劫持 window onerror\r\n    Resource.prototype.isScriptError = function (e) {\r\n        // 有 message 基本上认为是脚本异常了\r\n        return e.message || e.lineno != null;\r\n    };\r\n    Resource.prototype.onPerfReport = function (entry) {\r\n        var logData = this.radar.generateLog(resPerfMap, entry);\r\n        this.radar.logCollect(this.sepDimension({\r\n            key: RADAR_KEY.RES,\r\n            value: logData,\r\n        }));\r\n    };\r\n    Resource.prototype.destroy = function () {\r\n        // Nothing\r\n        removeMonitor(window, 'error', this.onResError, true);\r\n    };\r\n    Resource.prototype.sepDimension = function (kv) {\r\n        var key = kv.key;\r\n        var _a = kv.value, protocol = _a.protocol, file = _a.file, cached = _a.cached, res_path = _a.res_path, failed = _a.failed, res_type = _a.res_type, value = __rest(_a, [\"protocol\", \"file\", \"cached\", \"res_path\", \"failed\", \"res_type\"]);\r\n        var dimension = { protocol: protocol, file: file, cached: cached, failed: failed, res_path: res_path, res_type: res_type };\r\n        return { key: key, value: value, dimension: dimension };\r\n    };\r\n    return Resource;\r\n}(RadarPlugin));\n\nvar xhook = createCommonjsModule(function (module) {\n// XHook - v1.4.9 - https://github.com/jpillora/xhook\n// Jaime Pillora <dev@jpillora.com> - MIT Copyright 2021\n(function(window,undefined$1) {\nvar AFTER, BEFORE, COMMON_EVENTS, EventEmitter, FETCH, FIRE, FormData, NativeFetch, NativeFormData, NativeXMLHttp, OFF, ON, READY_STATE, UPLOAD_EVENTS, WINDOW, XHookFetchRequest, XHookFormData, XHookHttpRequest, XMLHTTP, convertHeaders, depricatedProp, document, fakeEvent, mergeObjects, msie, nullify, proxyEvents, slice, useragent, xhook, _base,\n  __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\nWINDOW = null;\n\nif (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) {\n  WINDOW = self;\n} else if (typeof commonjsGlobal !== 'undefined') {\n  WINDOW = commonjsGlobal;\n} else {\n  WINDOW = window;\n}\n\ndocument = WINDOW.document;\n\nBEFORE = 'before';\n\nAFTER = 'after';\n\nREADY_STATE = 'readyState';\n\nON = 'addEventListener';\n\nOFF = 'removeEventListener';\n\nFIRE = 'dispatchEvent';\n\nXMLHTTP = 'XMLHttpRequest';\n\nFETCH = 'fetch';\n\nFormData = 'FormData';\n\nUPLOAD_EVENTS = ['load', 'loadend', 'loadstart'];\n\nCOMMON_EVENTS = ['progress', 'abort', 'error', 'timeout'];\n\nuseragent = typeof navigator !== 'undefined' && navigator['useragent'] ? navigator.userAgent : '';\n\nmsie = parseInt((/msie (\\d+)/.exec(useragent.toLowerCase()) || [])[1]);\n\nif (isNaN(msie)) {\n  msie = parseInt((/trident\\/.*; rv:(\\d+)/.exec(useragent.toLowerCase()) || [])[1]);\n}\n\n(_base = Array.prototype).indexOf || (_base.indexOf = function(item) {\n  var i, x, _i, _len;\n  for (i = _i = 0, _len = this.length; _i < _len; i = ++_i) {\n    x = this[i];\n    if (x === item) {\n      return i;\n    }\n  }\n  return -1;\n});\n\nslice = function(o, n) {\n  return Array.prototype.slice.call(o, n);\n};\n\ndepricatedProp = function(p) {\n  return p === \"returnValue\" || p === \"totalSize\" || p === \"position\";\n};\n\nmergeObjects = function(src, dst) {\n  var k, v;\n  for (k in src) {\n    v = src[k];\n    if (depricatedProp(k)) {\n      continue;\n    }\n    try {\n      dst[k] = src[k];\n    } catch (_error) {}\n  }\n  return dst;\n};\n\nnullify = function(res) {\n  if (res === void 0) {\n    return null;\n  }\n  return res;\n};\n\nproxyEvents = function(events, src, dst) {\n  var event, p, _i, _len;\n  p = function(event) {\n    return function(e) {\n      var clone, k, val;\n      clone = {};\n      for (k in e) {\n        if (depricatedProp(k)) {\n          continue;\n        }\n        val = e[k];\n        clone[k] = val === src ? dst : val;\n      }\n      return dst[FIRE](event, clone);\n    };\n  };\n  for (_i = 0, _len = events.length; _i < _len; _i++) {\n    event = events[_i];\n    if (dst._has(event)) {\n      src[\"on\" + event] = p(event);\n    }\n  }\n};\n\nfakeEvent = function(type) {\n  var msieEventObject;\n  if (document && (document.createEventObject != null)) {\n    msieEventObject = document.createEventObject();\n    msieEventObject.type = type;\n    return msieEventObject;\n  } else {\n    try {\n      return new Event(type);\n    } catch (_error) {\n      return {\n        type: type\n      };\n    }\n  }\n};\n\nEventEmitter = function(nodeStyle) {\n  var emitter, events, listeners;\n  events = {};\n  listeners = function(event) {\n    return events[event] || [];\n  };\n  emitter = {};\n  emitter[ON] = function(event, callback, i) {\n    events[event] = listeners(event);\n    if (events[event].indexOf(callback) >= 0) {\n      return;\n    }\n    i = i === undefined$1 ? events[event].length : i;\n    events[event].splice(i, 0, callback);\n  };\n  emitter[OFF] = function(event, callback) {\n    var i;\n    if (event === undefined$1) {\n      events = {};\n      return;\n    }\n    if (callback === undefined$1) {\n      events[event] = [];\n    }\n    i = listeners(event).indexOf(callback);\n    if (i === -1) {\n      return;\n    }\n    listeners(event).splice(i, 1);\n  };\n  emitter[FIRE] = function() {\n    var args, event, i, legacylistener, listener, _i, _len, _ref;\n    args = slice(arguments);\n    event = args.shift();\n    if (!nodeStyle) {\n      args[0] = mergeObjects(args[0], fakeEvent(event));\n    }\n    legacylistener = emitter[\"on\" + event];\n    if (legacylistener) {\n      legacylistener.apply(emitter, args);\n    }\n    _ref = listeners(event).concat(listeners(\"*\"));\n    for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {\n      listener = _ref[i];\n      listener.apply(emitter, args);\n    }\n  };\n  emitter._has = function(event) {\n    return !!(events[event] || emitter[\"on\" + event]);\n  };\n  if (nodeStyle) {\n    emitter.listeners = function(event) {\n      return slice(listeners(event));\n    };\n    emitter.on = emitter[ON];\n    emitter.off = emitter[OFF];\n    emitter.fire = emitter[FIRE];\n    emitter.once = function(e, fn) {\n      var fire;\n      fire = function() {\n        emitter.off(e, fire);\n        return fn.apply(null, arguments);\n      };\n      return emitter.on(e, fire);\n    };\n    emitter.destroy = function() {\n      return events = {};\n    };\n  }\n  return emitter;\n};\n\nxhook = EventEmitter(true);\n\nxhook.EventEmitter = EventEmitter;\n\nxhook[BEFORE] = function(handler, i) {\n  if (handler.length < 1 || handler.length > 2) {\n    throw \"invalid hook\";\n  }\n  return xhook[ON](BEFORE, handler, i);\n};\n\nxhook[AFTER] = function(handler, i) {\n  if (handler.length < 2 || handler.length > 3) {\n    throw \"invalid hook\";\n  }\n  return xhook[ON](AFTER, handler, i);\n};\n\nxhook.enable = function() {\n  WINDOW[XMLHTTP] = XHookHttpRequest;\n  if (typeof XHookFetchRequest === \"function\") {\n    WINDOW[FETCH] = XHookFetchRequest;\n  }\n  if (NativeFormData) {\n    WINDOW[FormData] = XHookFormData;\n  }\n};\n\nxhook.disable = function() {\n  WINDOW[XMLHTTP] = xhook[XMLHTTP];\n  WINDOW[FETCH] = xhook[FETCH];\n  if (NativeFormData) {\n    WINDOW[FormData] = NativeFormData;\n  }\n};\n\nconvertHeaders = xhook.headers = function(h, dest) {\n  var header, headers, k, name, v, value, _i, _len, _ref;\n  if (dest == null) {\n    dest = {};\n  }\n  switch (typeof h) {\n    case \"object\":\n      headers = [];\n      for (k in h) {\n        v = h[k];\n        name = k.toLowerCase();\n        headers.push(\"\" + name + \":\\t\" + v);\n      }\n      return headers.join('\\n') + '\\n';\n    case \"string\":\n      headers = h.split('\\n');\n      for (_i = 0, _len = headers.length; _i < _len; _i++) {\n        header = headers[_i];\n        if (/([^:]+):\\s*(.+)/.test(header)) {\n          name = (_ref = RegExp.$1) != null ? _ref.toLowerCase() : void 0;\n          value = RegExp.$2;\n          if (dest[name] == null) {\n            dest[name] = value;\n          }\n        }\n      }\n      return dest;\n  }\n};\n\nNativeFormData = WINDOW[FormData];\n\nXHookFormData = function(form) {\n  var entries;\n  this.fd = form ? new NativeFormData(form) : new NativeFormData();\n  this.form = form;\n  entries = [];\n  Object.defineProperty(this, 'entries', {\n    get: function() {\n      var fentries;\n      fentries = !form ? [] : slice(form.querySelectorAll(\"input,select\")).filter(function(e) {\n        var _ref;\n        return ((_ref = e.type) !== 'checkbox' && _ref !== 'radio') || e.checked;\n      }).map(function(e) {\n        return [e.name, e.type === \"file\" ? e.files : e.value];\n      });\n      return fentries.concat(entries);\n    }\n  });\n  this.append = (function(_this) {\n    return function() {\n      var args;\n      args = slice(arguments);\n      entries.push(args);\n      return _this.fd.append.apply(_this.fd, args);\n    };\n  })(this);\n};\n\nif (NativeFormData) {\n  xhook[FormData] = NativeFormData;\n  WINDOW[FormData] = XHookFormData;\n}\n\nNativeXMLHttp = WINDOW[XMLHTTP];\n\nxhook[XMLHTTP] = NativeXMLHttp;\n\nXHookHttpRequest = WINDOW[XMLHTTP] = function() {\n  var ABORTED, currentState, emitFinal, emitReadyState, event, facade, hasError, hasErrorHandler, readBody, readHead, request, response, setReadyState, status, transiting, writeBody, writeHead, xhr, _i, _len, _ref;\n  ABORTED = -1;\n  xhr = new xhook[XMLHTTP]();\n  request = {};\n  status = null;\n  hasError = void 0;\n  transiting = void 0;\n  response = void 0;\n  readHead = function() {\n    var key, name, val, _ref;\n    response.status = status || xhr.status;\n    if (!(status === ABORTED && msie < 10)) {\n      response.statusText = xhr.statusText;\n    }\n    if (status !== ABORTED) {\n      _ref = convertHeaders(xhr.getAllResponseHeaders());\n      for (key in _ref) {\n        val = _ref[key];\n        if (!response.headers[key]) {\n          name = key.toLowerCase();\n          response.headers[name] = val;\n        }\n      }\n    }\n  };\n  readBody = function() {\n    if (!xhr.responseType || xhr.responseType === \"text\") {\n      response.text = xhr.responseText;\n      response.data = xhr.responseText;\n      try {\n        response.xml = xhr.responseXML;\n      } catch (_error) {\n\n      }\n    } else if (xhr.responseType === \"document\") {\n      response.xml = xhr.responseXML;\n      response.data = xhr.responseXML;\n    } else {\n      response.data = xhr.response;\n    }\n    if (\"responseURL\" in xhr) {\n      response.finalUrl = xhr.responseURL;\n    }\n  };\n  writeHead = function() {\n    facade.status = response.status;\n    facade.statusText = response.statusText;\n  };\n  writeBody = function() {\n    if ('text' in response) {\n      facade.responseText = response.text;\n    }\n    if ('xml' in response) {\n      facade.responseXML = response.xml;\n    }\n    if ('data' in response) {\n      facade.response = response.data;\n    }\n    if ('finalUrl' in response) {\n      facade.responseURL = response.finalUrl;\n    }\n  };\n  emitReadyState = function(n, event) {\n    while (n > currentState && currentState < 4) {\n      facade[READY_STATE] = ++currentState;\n      if (currentState === 1) {\n        facade[FIRE](\"loadstart\", {});\n      }\n      if (currentState === 2) {\n        writeHead();\n      }\n      if (currentState === 4) {\n        writeHead();\n        writeBody();\n      }\n      facade[FIRE](\"readystatechange\", event || {});\n      if (currentState === 4) {\n        if (request.async === false) {\n          emitFinal();\n        } else {\n          setTimeout(emitFinal, 0);\n        }\n      }\n    }\n  };\n  emitFinal = function() {\n    if (!hasError) {\n      facade[FIRE](\"load\", {});\n    }\n    facade[FIRE](\"loadend\", {});\n    if (hasError) {\n      facade[READY_STATE] = 0;\n    }\n  };\n  currentState = 0;\n  setReadyState = function(n, event) {\n    var hooks, process;\n    if (n !== 4) {\n      emitReadyState(n, event);\n      return;\n    }\n    hooks = xhook.listeners(AFTER);\n    process = function() {\n      var hook;\n      if (!hooks.length) {\n        return emitReadyState(4, event);\n      }\n      hook = hooks.shift();\n      if (hook.length === 2) {\n        hook(request, response);\n        return process();\n      } else if (hook.length === 3 && request.async) {\n        return hook(request, response, process);\n      } else {\n        return process();\n      }\n    };\n    process();\n  };\n  facade = request.xhr = EventEmitter();\n  xhr.onreadystatechange = function(event) {\n    try {\n      if (xhr[READY_STATE] === 2) {\n        readHead();\n      }\n    } catch (_error) {}\n    if (xhr[READY_STATE] === 4) {\n      transiting = false;\n      readHead();\n      readBody();\n    }\n    setReadyState(xhr[READY_STATE], event);\n  };\n  hasErrorHandler = function() {\n    hasError = true;\n  };\n  facade[ON]('error', hasErrorHandler);\n  facade[ON]('timeout', hasErrorHandler);\n  facade[ON]('abort', hasErrorHandler);\n  facade[ON]('progress', function() {\n    if (currentState < 3) {\n      setReadyState(3);\n    } else {\n      facade[FIRE](\"readystatechange\", {});\n    }\n  });\n  if ('withCredentials' in xhr || xhook.addWithCredentials) {\n    facade.withCredentials = false;\n  }\n  facade.status = 0;\n  _ref = COMMON_EVENTS.concat(UPLOAD_EVENTS);\n  for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n    event = _ref[_i];\n    facade[\"on\" + event] = null;\n  }\n  facade.open = function(method, url, async, user, pass) {\n    currentState = 0;\n    hasError = false;\n    transiting = false;\n    request.headers = {};\n    request.headerNames = {};\n    request.status = 0;\n    response = {};\n    response.headers = {};\n    request.method = method;\n    request.url = url;\n    request.async = async !== false;\n    request.user = user;\n    request.pass = pass;\n    setReadyState(1);\n  };\n  facade.send = function(body) {\n    var hooks, k, modk, process, send, _j, _len1, _ref1;\n    _ref1 = ['type', 'timeout', 'withCredentials'];\n    for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n      k = _ref1[_j];\n      modk = k === \"type\" ? \"responseType\" : k;\n      if (modk in facade) {\n        request[k] = facade[modk];\n      }\n    }\n    request.body = body;\n    send = function() {\n      var header, value, _k, _len2, _ref2, _ref3;\n      proxyEvents(COMMON_EVENTS, xhr, facade);\n      if (facade.upload) {\n        proxyEvents(COMMON_EVENTS.concat(UPLOAD_EVENTS), xhr.upload, facade.upload);\n      }\n      transiting = true;\n      xhr.open(request.method, request.url, request.async, request.user, request.pass);\n      _ref2 = ['type', 'timeout', 'withCredentials'];\n      for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n        k = _ref2[_k];\n        modk = k === \"type\" ? \"responseType\" : k;\n        if (k in request) {\n          xhr[modk] = request[k];\n        }\n      }\n      _ref3 = request.headers;\n      for (header in _ref3) {\n        value = _ref3[header];\n        if (header) {\n          xhr.setRequestHeader(header, value);\n        }\n      }\n      if (request.body instanceof XHookFormData) {\n        request.body = request.body.fd;\n      }\n      xhr.send(request.body);\n    };\n    hooks = xhook.listeners(BEFORE);\n    process = function() {\n      var done, hook;\n      if (!hooks.length) {\n        return send();\n      }\n      done = function(userResponse) {\n        if (typeof userResponse === 'object' && (typeof userResponse.status === 'number' || typeof response.status === 'number')) {\n          mergeObjects(userResponse, response);\n          if (__indexOf.call(userResponse, 'data') < 0) {\n            userResponse.data = userResponse.response || userResponse.text;\n          }\n          setReadyState(4);\n          return;\n        }\n        process();\n      };\n      done.head = function(userResponse) {\n        mergeObjects(userResponse, response);\n        return setReadyState(2);\n      };\n      done.progress = function(userResponse) {\n        mergeObjects(userResponse, response);\n        return setReadyState(3);\n      };\n      hook = hooks.shift();\n      if (hook.length === 1) {\n        return done(hook(request));\n      } else if (hook.length === 2 && request.async) {\n        return hook(request, done);\n      } else {\n        return done();\n      }\n    };\n    process();\n  };\n  facade.abort = function() {\n    status = ABORTED;\n    if (transiting) {\n      xhr.abort();\n    } else {\n      facade[FIRE]('abort', {});\n    }\n  };\n  facade.setRequestHeader = function(header, value) {\n    var lName, name;\n    lName = header != null ? header.toLowerCase() : void 0;\n    name = request.headerNames[lName] = request.headerNames[lName] || header;\n    if (request.headers[name]) {\n      value = request.headers[name] + ', ' + value;\n    }\n    request.headers[name] = value;\n  };\n  facade.getResponseHeader = function(header) {\n    var name;\n    name = header != null ? header.toLowerCase() : void 0;\n    return nullify(response.headers[name]);\n  };\n  facade.getAllResponseHeaders = function() {\n    return nullify(convertHeaders(response.headers));\n  };\n  if (xhr.overrideMimeType) {\n    facade.overrideMimeType = function() {\n      return xhr.overrideMimeType.apply(xhr, arguments);\n    };\n  }\n  if (xhr.upload) {\n    facade.upload = request.upload = EventEmitter();\n  }\n  facade.UNSENT = 0;\n  facade.OPENED = 1;\n  facade.HEADERS_RECEIVED = 2;\n  facade.LOADING = 3;\n  facade.DONE = 4;\n  facade.response = '';\n  facade.responseText = '';\n  facade.responseXML = null;\n  facade.readyState = 0;\n  facade.statusText = '';\n  return facade;\n};\n\nif (typeof WINDOW[FETCH] === \"function\") {\n  NativeFetch = WINDOW[FETCH];\n  xhook[FETCH] = NativeFetch;\n  XHookFetchRequest = WINDOW[FETCH] = function(url, options) {\n    var afterHooks, beforeHooks, request;\n    if (options == null) {\n      options = {\n        headers: {}\n      };\n    }\n    options.url = url;\n    request = null;\n    if (url instanceof Request) {\n      request = url;\n      options.url = request.url;\n      options.headers = request.headers;\n    }\n    beforeHooks = xhook.listeners(BEFORE);\n    afterHooks = xhook.listeners(AFTER);\n    return new Promise(function(resolve, reject) {\n      var done, getRequest, processAfter, processBefore, send;\n      getRequest = function() {\n        if (options.body instanceof XHookFormData) {\n          options.body = options.body.fd;\n        }\n        if (options.headers) {\n          options.headers = new Headers(options.headers);\n        }\n        if (!request) {\n          request = new Request(options.url, options);\n        }\n        return mergeObjects(options, request);\n      };\n      processAfter = function(response) {\n        var hook;\n        if (!afterHooks.length) {\n          return resolve(response);\n        }\n        hook = afterHooks.shift();\n        if (hook.length === 2) {\n          hook(getRequest(), response);\n          return processAfter(response);\n        } else if (hook.length === 3) {\n          return hook(getRequest(), response, processAfter);\n        } else {\n          return processAfter(response);\n        }\n      };\n      done = function(userResponse) {\n        var response;\n        if (userResponse !== void 0) {\n          response = new Response(userResponse.body || userResponse.text, userResponse);\n          resolve(response);\n          processAfter(response);\n          return;\n        }\n        processBefore();\n      };\n      processBefore = function() {\n        var hook, param;\n        if (!beforeHooks.length) {\n          send();\n          return;\n        }\n        hook = beforeHooks.shift();\n        if (hook.length === 1) {\n          param = options;\n          if (url instanceof Request) {\n            param = url;\n          }\n          return done(hook(param));\n        } else if (hook.length === 2) {\n          return hook(getRequest(), done);\n        }\n      };\n      send = function() {\n        return NativeFetch(url, options).then(function(response) {\n          return processAfter(response);\n        })[\"catch\"](function(err) {\n          processAfter(err);\n          return reject(err);\n        });\n      };\n      processBefore();\n    });\n  };\n}\n\nXHookHttpRequest.UNSENT = 0;\n\nXHookHttpRequest.OPENED = 1;\n\nXHookHttpRequest.HEADERS_RECEIVED = 2;\n\nXHookHttpRequest.LOADING = 3;\n\nXHookHttpRequest.DONE = 4;\n\nif (typeof undefined$1 === \"function\" && undefined$1.amd) {\n  undefined$1(\"xhook\", [], function() {\n    return xhook;\n  });\n} else if ( module.exports) {\n  module.exports = {\n    xhook: xhook\n  };\n} else if (WINDOW) {\n  WINDOW.xhook = xhook;\n}\n\n}.call(commonjsGlobal,window));\n});\nvar xhook_1 = xhook.xhook;\n\n// @ts-nocheck\r\nvar interceptors = [];\r\nfunction interceptor(fetch) {\r\n    var args = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        args[_i - 1] = arguments[_i];\r\n    }\r\n    var reversedInterceptors = interceptors.reduce(function (array, interceptor) { return [interceptor].concat(array); }, []);\r\n    var promise = Promise.resolve(args);\r\n    // Register request interceptors\r\n    reversedInterceptors.forEach(function (_a) {\r\n        var request = _a.request, requestError = _a.requestError;\r\n        if (request || requestError) {\r\n            promise = promise.then(function (args) { return request.apply(void 0, args); }, requestError);\r\n        }\r\n    });\r\n    // Register fetch call\r\n    promise = promise.then(function (args) { return fetch.apply(void 0, args); });\r\n    // Register response interceptors\r\n    reversedInterceptors.forEach(function (_a) {\r\n        var response = _a.response, responseError = _a.responseError;\r\n        if (response || responseError) {\r\n            promise = promise.then(response, responseError);\r\n        }\r\n    });\r\n    return promise;\r\n}\r\nfunction attach(env) {\r\n    // Make sure fetch is available in the given environment\r\n    if (typeof env.fetch !== 'function') {\r\n        return null;\r\n    }\r\n    // replace fetch in env (window)\r\n    env.fetch = (function (fetch) {\r\n        return function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            return interceptor.apply(void 0, __spreadArrays([fetch], args));\r\n        };\r\n    })(env.fetch);\r\n    return {\r\n        register: function (interceptor) {\r\n            interceptors.push(interceptor);\r\n            // return unregister function\r\n            return function () {\r\n                var index = interceptors.indexOf(interceptor);\r\n                if (index >= 0) {\r\n                    interceptors.splice(index, 1);\r\n                }\r\n            };\r\n        },\r\n        clear: function () {\r\n            interceptors = [];\r\n        },\r\n    };\r\n}\n\n/**\r\n * @file 劫持 XMLHttpRequest，自动记录请求成功、失败打点\r\n * @author Malcolm Yu\r\n * @created 2019-11-16\r\n *\r\n * 由于发现了一个好用的 hook，这里就不闷头开发了：https://github.com/jpillora/xhook\r\n */\r\nvar validXhook = xhook_1.xhook || xhook_1;\r\n// 引入后先关闭，默认会替换 FormData\r\nvalidXhook.disable();\r\nvar unregister;\r\nvar APIMonitor = /** @class */ (function (_super) {\r\n    __extends(APIMonitor, _super);\r\n    function APIMonitor() {\r\n        var _this = _super !== null && _super.apply(this, arguments) || this;\r\n        _this.queue = [];\r\n        // private xhrLog: APIPerf[] = [];\r\n        _this.key = 'api';\r\n        _this.logList = [];\r\n        _this.perfList = [];\r\n        _this.beforeHook = function (request) {\r\n            // 禁 止 套 娃\r\n            if (!isInURLWhiteList(request.url, _this.radar.ignoreList)) {\r\n                var info = {\r\n                    api: _this.requestURLCompletion(request.url),\r\n                    method: request.method,\r\n                    request: request,\r\n                    startTime: Date.now(),\r\n                };\r\n                _this.queue.push(info);\r\n            }\r\n        };\r\n        // TODO fetch的改动没问题后删除\r\n        // xhook重写了fetch函数，看起来会导致headers前后不相同\r\n        // https://github.com/jpillora/xhook/blob/gh-pages/src/xhook.coffee#L524\r\n        _this.afterHook = function (request, response) {\r\n            var req = _this.queue.filter(function (v) {\r\n                return v.request === request;\r\n            })[0];\r\n            if (!req)\r\n                return;\r\n            // @ts-ignore\r\n            delete req.request;\r\n            var startTime = req.startTime, rest = __rest(req, [\"startTime\"]);\r\n            var infoStatus = response.status;\r\n            // 如果用户有配置status，则使用用户配置的，返回为0则为异常\r\n            if (typeof _this.options.customizeRadarStatus === 'function') {\r\n                infoStatus = _this.options.customizeRadarStatus(response);\r\n            }\r\n            var contentLength = getResponseSize(response.headers);\r\n            var info = __assign({ duration: Date.now() - startTime, \r\n                // 字段兼容\r\n                total: Date.now() - startTime, status: infoStatus, size: +contentLength }, rest);\r\n            if (typeof response.text === 'string') {\r\n                info.responseData = response.text;\r\n            }\r\n            // 重新定义一个response，然后进行错误判断\r\n            var judgedResponse = __assign(__assign({}, response), { status: infoStatus });\r\n            var isError = _this.isResponseError(judgedResponse);\r\n            // TODO: 兼容性处理可以更优秀一点\r\n            if (isError) {\r\n                _this.radar.logCollect(_this.sepDimension({\r\n                    key: RADAR_KEY.API,\r\n                    value: info,\r\n                }));\r\n            }\r\n            else {\r\n                _this.logList.push(info);\r\n                _this.mergeAPIPerf(null, info);\r\n            }\r\n            // 过滤掉这个 request，防止内存堆积\r\n            // 由于req的request删了，所以要判断v.request是否存在\r\n            _this.queue = _this.queue.filter(function (v) { return v.request && v.request !== request; });\r\n        };\r\n        return _this;\r\n    }\r\n    APIMonitor.prototype.when = function (entry) {\r\n        if (isInURLWhiteList(entry.name, this.radar.ignoreList)) {\r\n            return false;\r\n        }\r\n        return entry.entryType === 'resource' && (entry.initiatorType === 'fetch' || entry.initiatorType === 'xmlhttprequest');\r\n    };\r\n    APIMonitor.prototype.onPerfReport = function (entry) {\r\n        var logData = this.radar.generateLog(apiPerfMap, entry);\r\n        this.perfList.push(logData);\r\n        this.mergeAPIPerf(__assign(__assign({}, logData), { api: logData.file }));\r\n    };\r\n    APIMonitor.prototype.mergeAPIPerf = function (allPerf, info) {\r\n        var item = allPerf || info;\r\n        var list = allPerf ? this.logList : this.perfList;\r\n        if (!item)\r\n            return;\r\n        var index = -1;\r\n        // TODO fetch的改动没问题后删除\r\n        // 每次只处理一个item且fetch请求不会被xhook获取 所以可以单独处理一下fetch\r\n        // 但是上报的信息没有xhr全面。后续有方案了可以补全\r\n        // if (item.res_type === 'fetch') {\r\n        //     delete item.file;\r\n        //     this.radar.logCollect(this.sepDimension({\r\n        //         key: RADAR_KEY.API,\r\n        //         value: item,\r\n        //     }));\r\n        //     return;\r\n        // }\r\n        // xhr需要沿用原有方案\r\n        for (var i = 0, len = list.length; i < len; i++) {\r\n            var listItem = list[i];\r\n            var itemAPI = (item.api || '').replace(/\\?.+$/, '');\r\n            var listItemAPI = (listItem.api || '').replace(/\\?.+$/, '');\r\n            var perfSize = item.size;\r\n            if (itemAPI === listItemAPI) {\r\n                Object.assign(item, listItem);\r\n                // 这里 file 与 api 重复了\r\n                delete item.file;\r\n                // perf api 中的 size 更精确一些\r\n                if (perfSize) {\r\n                    item.size = perfSize;\r\n                }\r\n                // 依然没有得到 size，尝试计算 responseText 体积\r\n                if (!item.size && item.responseData) {\r\n                    item.size = getStringBytes(item.responseData);\r\n                }\r\n                delete item.responseData;\r\n                index = i;\r\n            }\r\n        }\r\n        if (index !== -1) {\r\n            list.splice(index, 1);\r\n            // 这里如果找不到匹配 API，还不如不报\r\n            this.radar.logCollect(this.sepDimension({\r\n                key: RADAR_KEY.API,\r\n                value: item,\r\n            }));\r\n        }\r\n    };\r\n    APIMonitor.prototype.sepDimension = function (kv) {\r\n        var key = kv.key;\r\n        var _a = kv.value, protocol = _a.protocol, cached = _a.cached, status = _a.status, api = _a.api, method = _a.method, value = __rest(_a, [\"protocol\", \"cached\", \"status\", \"api\", \"method\"]);\r\n        var dimension = { protocol: protocol, api: api, status: status, cached: cached, method: method };\r\n        return { key: key, value: value, dimension: dimension };\r\n    };\r\n    APIMonitor.prototype.requestURLCompletion = function (url) {\r\n        var _a = document.location, protocol = _a.protocol, host = _a.host;\r\n        if (url.indexOf('//') === 0) {\r\n            return protocol + url;\r\n        }\r\n        if (url.indexOf('/') === 0) {\r\n            return protocol + \"//\" + host + url;\r\n        }\r\n        return url;\r\n    };\r\n    APIMonitor.prototype.isResponseError = function (response) {\r\n        // 在 hook 的加持下，可以拿到异常的返回，这里 status 指定为 0\r\n        return response.status === 0;\r\n    };\r\n    APIMonitor.prototype.created = function () {\r\n        validXhook.disable();\r\n        var NATIVE_FORM_DATA = window.FormData;\r\n        validXhook.before(this.beforeHook);\r\n        validXhook.after(this.afterHook);\r\n        validXhook.enable();\r\n        window.FormData = NATIVE_FORM_DATA;\r\n        // @ts-ignore\r\n        var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';\r\n        var fetchIntercept = attach(ENVIRONMENT_IS_WORKER ? self : window);\r\n        unregister = fetchIntercept && fetchIntercept.register({\r\n            request: function (url, config) {\r\n                // 在afterHook里面得到的request和beforeHook中的不一致的原因:\r\n                // 如果fetch传入的参数是url+config而不是一个Request对象\r\n                // 那么在beforeHook中，xhook会将url+config的形式转化为Request对象\r\n                // https://github.com/jpillora/xhook/blob/gh-pages/src/xhook.coffee#L552\r\n                // 在这里的解法是在fetch请求传入xhook之前，将url+config的形式转化为Request对象，那么前后对比就一致了\r\n                if (!(url instanceof Request)) {\r\n                    url = new Request(url, config);\r\n                }\r\n                return [url, config];\r\n            },\r\n        });\r\n    };\r\n    APIMonitor.prototype.destroy = function () {\r\n        validXhook.disable();\r\n        unregister && unregister();\r\n    };\r\n    return APIMonitor;\r\n}(RadarPlugin));\r\nfunction getResponseSize(headers) {\r\n    if (!headers) {\r\n        // fix: 接口504可能导致取不到header 会报错\r\n        return 0;\r\n    }\r\n    if (typeof headers.get === 'function') {\r\n        return +headers.get('Content-Length') || 0;\r\n    }\r\n    return +headers['content-length'] || 0;\r\n}\n\nvar ErrorMonitor = /** @class */ (function (_super) {\r\n    __extends(ErrorMonitor, _super);\r\n    function ErrorMonitor() {\r\n        var _this = _super !== null && _super.apply(this, arguments) || this;\r\n        _this.key = 'error';\r\n        // 用于存储页面报错信息，去重，合并上报\r\n        _this.errorQueue = [];\r\n        _this.errorTimeInterval = 2000;\r\n        // 劫持 window.addEventListener('error')\r\n        _this.onResError = function (e) {\r\n            var isScriptError = _this.isScriptError(e);\r\n            var error = e.error;\r\n            if (isScriptError) {\r\n                // 脚本报错\r\n                var logInfo = {\r\n                    error_type: ERROR_KEY.SCRIPT,\r\n                    error_cons_type: e.type,\r\n                    msg: e.message || e.reason,\r\n                    stack: error ? error.stack : null,\r\n                    file: e.filename,\r\n                    line: e.lineno,\r\n                    col: e.colno,\r\n                };\r\n                _this.isSameErrorAndReport(logInfo);\r\n            }\r\n        };\r\n        _this.onPromiseError = function (e) {\r\n            var msg = e.reason && e.reason.message || '';\r\n            var logInfo = {\r\n                error_type: ERROR_KEY.SCRIPT,\r\n                error_cons_type: e.type,\r\n                msg: msg,\r\n            };\r\n            _this.collect(logInfo);\r\n        };\r\n        return _this;\r\n    }\r\n    // error 监听不响应 performance.observe\r\n    ErrorMonitor.prototype.when = function (entry) {\r\n        // 接受 fmp/play_clicked/play_idr 三个自定义指标\r\n        if (entry.custom) {\r\n            var key = (entry.entry || {}).key;\r\n            if (['play_block', 'play_error'].indexOf(key) > -1) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n    // error 监听不响应 performance.observe\r\n    ErrorMonitor.prototype.onPerfReport = function (entry) {\r\n        // Nothing\r\n        if (entry.custom) {\r\n            var _a = entry.entry || {}, key = _a.key, value = _a.value;\r\n            this.collect({\r\n                error_type: ERROR_KEY.VIDEO,\r\n                error_cons_type: key,\r\n                msg: value,\r\n            });\r\n        }\r\n    };\r\n    ErrorMonitor.prototype.sepDimension = function (kv) {\r\n        var key = kv.key;\r\n        if (key === 'error') {\r\n            var _a = kv.value, file_1 = _a.file, error_cons_type = _a.error_cons_type, error_type = _a.error_type, msg = _a.msg, col = _a.col, line = _a.line, stack = _a.stack, value_1 = __rest(_a, [\"file\", \"error_cons_type\", \"error_type\", \"msg\", \"col\", \"line\", \"stack\"]);\r\n            var dimension_1 = { error_cons_type: error_cons_type, file: file_1, error_type: error_type, msg: msg, col: col, line: line, stack: stack };\r\n            return { key: key, value: value_1, dimension: dimension_1 };\r\n        }\r\n        // 资源异常的处理\r\n        var _b = kv.value, protocol = _b.protocol, file = _b.file, cached = _b.cached, res_path = _b.res_path, failed = _b.failed, res_type = _b.res_type, value = __rest(_b, [\"protocol\", \"file\", \"cached\", \"res_path\", \"failed\", \"res_type\"]);\r\n        var dimension = { protocol: protocol, file: file, cached: cached, failed: failed, res_path: res_path, res_type: res_type };\r\n        return { key: key, value: value, dimension: dimension };\r\n    };\r\n    ErrorMonitor.prototype.collect = function (logInfo) {\r\n        this.radar.logCollect(this.sepDimension({\r\n            key: RADAR_KEY.ERROR,\r\n            value: logInfo,\r\n        }));\r\n    };\r\n    // 劫持 window onerror\r\n    ErrorMonitor.prototype.isScriptError = function (e) {\r\n        // 有 message 基本上认为是脚本异常了\r\n        return e.message || e.lineno != null;\r\n    };\r\n    ErrorMonitor.prototype.isSameErrorAndReport = function (error) {\r\n        /**\r\n         * collect之前进行筛选\r\n         * 策略是：相同的错误短时间内多次触发算作一条日志\r\n         * 一般认为 同一文件，同一行，同一列的报错为同一错误 不重复收集\r\n         *\r\n         */\r\n        // 判断是否是同一错误\r\n        // const index = this.errorQueue.findIndex(e => {\r\n        //     const sameError = e.file === error.file && e.line === error.line && e.col === error.col\r\n        //     return sameError\r\n        // })\r\n        var _this = this;\r\n        if (this.getSameErrorIndex(error) >= 0) {\r\n            return;\r\n        } // 是同一错误则不进行收集\r\n        this.errorQueue.push(error);\r\n        this.collect(error);\r\n        setTimeout(function () {\r\n            // 超过阙值则重置\r\n            // 重新计算他在队列中的位置\r\n            _this.errorQueue.splice(_this.getSameErrorIndex(error), 1);\r\n        }, this.errorTimeInterval);\r\n    };\r\n    /**\r\n     *\r\n     * @param error 错误信息\r\n     * @returns\r\n     */\r\n    ErrorMonitor.prototype.getSameErrorIndex = function (error) {\r\n        return this.errorQueue.findIndex(function (e) {\r\n            var sameError = e.file === error.file && e.line === error.line && e.col === error.col;\r\n            return sameError;\r\n        });\r\n    };\r\n    ErrorMonitor.prototype.created = function () {\r\n        // 这里会上报重复，感觉没必要\r\n        // window.onerror = (...args) => {\r\n        //     if (typeof this.preWindowErrorHandler === 'function') {\r\n        //         this.preWindowErrorHandler(...args);\r\n        //     }\r\n        //     this.onError(...args);\r\n        // };\r\n        addMonitor(window, 'error', this.onResError, true);\r\n        addMonitor(window, 'unhandledrejection', this.onPromiseError);\r\n    };\r\n    ErrorMonitor.prototype.destroy = function () {\r\n        // window.onerror = this.preWindowErrorHandler;\r\n        removeMonitor(window, 'error', this.onResError, true);\r\n        removeMonitor(window, 'unhandledrejection', this.onPromiseError);\r\n    };\r\n    return ErrorMonitor;\r\n}(RadarPlugin));\n\n/**\r\n * @file Radar 核心部件，负责插件组合、上报日志处理\r\n * @author Malcolm Yu\r\n */\r\nvar MORE_REPORTED = ['play_block', 'play_error'];\r\nvar CUSTOM_DIM_KEY = ['c_dimension1', 'c_dimension2', 'c_dimension3'];\r\nvar Radar = /** @class */ (function (_super) {\r\n    __extends(Radar, _super);\r\n    function Radar(weblog, options) {\r\n        var _this = \r\n        // this.currentUrlPackage.sampled \r\n        //\r\n        _super.call(this, weblog, options) || this;\r\n        _this.radarIgnoreList = ['https://web-trace.ksapisrv.com/ktrace/collect'];\r\n        // public ignoreList: string[];\r\n        _this.radarFmp = 0;\r\n        _this.customReported = [];\r\n        if (!_this.validOption()) {\r\n            return _this;\r\n        }\r\n        _this.use(Navigation, _this);\r\n        if (!_this.options || !_this.options.unuseResourcePlugin) {\r\n            _this.use(Resource, _this);\r\n        }\r\n        if (!_this.options || !_this.options.unuseAPIPlugin) {\r\n            _this.use(APIMonitor, _this);\r\n        }\r\n        if (!_this.options || !_this.options.unuseErrorPlugin) {\r\n            _this.use(ErrorMonitor, _this);\r\n        }\r\n        return _this;\r\n    }\r\n    // 采样控制 对外暴露调用\r\n    Radar.samplingControl = function (options) {\r\n        if (!options) {\r\n            return false;\r\n        }\r\n        // 计算随机数\r\n        var rand = Math.random();\r\n        if (typeof options === 'number') {\r\n            // 传入的是单一模块采样率 无需从options中取值\r\n            return rand < options;\r\n        }\r\n        // radar整体采样率逻辑\r\n        var sampling = options.sampling;\r\n        return rand < sampling;\r\n    };\r\n    Radar.prototype.collect = function (key, duration) {\r\n        if (key.indexOf('c_') !== 0) {\r\n            error(\"[Radar] \\u4F20\\u5165\\u7684\\u81EA\\u5B9A\\u4E49\\u6307\\u6807 \" + key + \" \\u5FC5\\u987B\\u4E3A c_ \\u5F00\\u5934\");\r\n            return;\r\n        }\r\n        // 支持 performance API 的可以直接用 performance now\r\n        this.logCollect({\r\n            key: RADAR_KEY.CUSTOM,\r\n            value: {\r\n                metric_value: duration,\r\n            },\r\n            dimension: {\r\n                metric_name: key,\r\n            },\r\n        });\r\n    };\r\n    Radar.prototype.reportTimePoint = function (key, time) {\r\n        if (this.customReported.indexOf(key) > -1) {\r\n            return null;\r\n        }\r\n        // 这两个是可以上报多次的\r\n        if (MORE_REPORTED.indexOf(key) === -1) {\r\n            this.customReported.push(key);\r\n        }\r\n        var value = time;\r\n        if (typeof time !== 'string') {\r\n            // 支持 performance API 的可以直接用 performance now\r\n            var detail = perfNow(time);\r\n            // 没有 performance API 的暂不记录了\r\n            if (detail.value == null)\r\n                return;\r\n            value = this.throttle(detail.value, detail.detail, 'fmp', detail.detail);\r\n        }\r\n        if (value == null)\r\n            return;\r\n        this.reportPerformance({\r\n            custom: true,\r\n            entry: {\r\n                key: key,\r\n                value: value,\r\n            },\r\n            renderTime: time\r\n        });\r\n        return value;\r\n    };\r\n    // 用户自定义系列指标\r\n    Radar.prototype.fmp = function (time) {\r\n        // 记录一下业务上报的fmp的时间戳\r\n        this.radarFmp = time || Date.now();\r\n        var fmp = this.reportTimePoint('fmp', this.radarFmp);\r\n        if (fmp) {\r\n            try {\r\n                // @ts-ignore\r\n                if (performance.timing) {\r\n                    // 获取fmp的时候 添加时间戳到timing上 方便后续计算\r\n                    performance.timing.fmp = fmp;\r\n                    performance.timing.radarFmp = this.radarFmp;\r\n                }\r\n                ;\r\n            }\r\n            catch (e) {\r\n                // do nothing，防止部分机型报错\r\n            }\r\n            // debug模式下记录log\r\n            radarWarnLog('fmp', fmp);\r\n            this.logCollect({\r\n                key: RADAR_KEY.CUSTOM,\r\n                value: {\r\n                    fmp: fmp,\r\n                    fmp_time: this.radarFmp,\r\n                    // 自定义上报是否合并到load表\r\n                    'merge': true\r\n                },\r\n            });\r\n        }\r\n    };\r\n    // 用户定义的事件\r\n    Radar.prototype.event = function (dimension, value) {\r\n        var uaList = getUAList();\r\n        // 处理extra_info\r\n        if (dimension.extra_info && dimension.extra_info instanceof Object) {\r\n            dimension.extra_info = JSON.stringify(dimension.extra_info);\r\n        }\r\n        // 处理yoda_version\r\n        if (dimension.yoda_version === undefined) {\r\n            dimension.yoda_version = uaList.Yoda || '';\r\n        }\r\n        // 处理webview_type\r\n        if (dimension.webview_type === undefined) {\r\n            dimension.webview_type = getWebViewType();\r\n        }\r\n        this.logCollect({\r\n            key: RADAR_KEY.EVENT,\r\n            value: value,\r\n            dimension: dimension,\r\n        });\r\n    };\r\n    // 用于无头浏览器环境手动模拟onload事件内容进行perf数据收集\r\n    Radar.prototype.headlessTestReport = function () {\r\n        var ua = window.navigator.userAgent;\r\n        if (ua.indexOf('headless')) {\r\n            this.asyncReportTiming();\r\n            return;\r\n        }\r\n        console.warn('[radar] report: ', '禁止在正常浏览器中使用手动上报功能');\r\n    };\r\n    Radar.prototype.playClicked = function (time) {\r\n        this.reportTimePoint('play_clicked', time);\r\n    };\r\n    Radar.prototype.playIDR = function (time) {\r\n        this.reportTimePoint('play_idr', time);\r\n    };\r\n    Radar.prototype.playBlock = function (time) {\r\n        this.reportTimePoint('play_block', time);\r\n    };\r\n    Radar.prototype.playError = function (time) {\r\n        this.reportTimePoint('play_error', time);\r\n    };\r\n    Radar.prototype.setDimensions = function (param) {\r\n        var _this = this;\r\n        var paramKey = Object.keys(param);\r\n        var hasOtherDim = paramKey.some(function (key) { return CUSTOM_DIM_KEY.indexOf(key) === -1; });\r\n        if (hasOtherDim) {\r\n            error(\"[Radar] \\u4F20\\u5165\\u7684\\u81EA\\u5B9A\\u4E49\\u7EF4\\u5EA6\\u53EA\\u80FD\\u4E3A \" + CUSTOM_DIM_KEY.join('、') + \"\\uFF0C\\u76EE\\u524D\\u4F20\\u5165\\u7684\\u662F\\uFF1A\" + paramKey.join('、'));\r\n        }\r\n        paramKey.forEach(function (key) {\r\n            var k = key;\r\n            if (param[k] == null) {\r\n                delete _this.customDimension[k];\r\n            }\r\n            else {\r\n                _this.customDimension[k] = param[k];\r\n            }\r\n        });\r\n    };\r\n    Radar.prototype.validOption = function () {\r\n        if (!this.options) {\r\n            // 未传入参数默认不开启\r\n            return false;\r\n        }\r\n        var _a = this.options, sampling = _a.sampling, projectId = _a.projectId;\r\n        if (typeof projectId !== 'string') {\r\n            error('[Radar] 必须配置 projectId 属性');\r\n            return false;\r\n        }\r\n        if (sampling > 1 || sampling < 0) {\r\n            error('[Radar] 采样率 sampling 必须在 0~1 之间');\r\n            return false;\r\n        }\r\n        return true;\r\n    };\r\n    Radar.key = 'radar';\r\n    return Radar;\r\n}(RadarRoot));\n\nvar RadarPlaceHolder = /** @class */ (function (_super) {\r\n    __extends(RadarPlaceHolder, _super);\r\n    function RadarPlaceHolder() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    RadarPlaceHolder.prototype.fmp = function () {\r\n        // do nothing\r\n    };\r\n    RadarPlaceHolder.prototype.event = function () {\r\n        // do nothing\r\n    };\r\n    RadarPlaceHolder.prototype.headlessTestReport = function () {\r\n        // do nothing\r\n    };\r\n    RadarPlaceHolder.prototype.playClicked = function () { };\r\n    RadarPlaceHolder.prototype.playIDR = function () { };\r\n    RadarPlaceHolder.prototype.playBlock = function () { };\r\n    RadarPlaceHolder.prototype.playError = function () { };\r\n    RadarPlaceHolder.prototype.setDimensions = function () { };\r\n    RadarPlaceHolder.prototype.destroy = function () {\r\n        // do nothing\r\n    };\r\n    RadarPlaceHolder.key = 'radar';\r\n    return RadarPlaceHolder;\r\n}(BasePlugin));\n\nif (!performanceTiming) {\r\n    console.warn('Your browser don\\'t support performance API, the auto pv duration may not correct');\r\n}\r\nvar willunload = false;\r\nvar AutoPV = /** @class */ (function (_super) {\r\n    __extends(AutoPV, _super);\r\n    function AutoPV(weblog, options) {\r\n        var _this = _super.call(this) || this;\r\n        _this.oldPushState = history.pushState;\r\n        _this.oldReplaceState = history.replaceState;\r\n        _this.beginTime = performanceTiming && performanceTiming.fetchStart\r\n            || new Date().valueOf();\r\n        _this.visibilityChange = function () {\r\n            var state = document.visibilityState;\r\n            if (state === 'visible') {\r\n                willunload = false;\r\n            }\r\n            // 页面关闭也会触发 hidden 事件，这种情况下不再上报事件\r\n            if (!_this.weblog || willunload)\r\n                return;\r\n            if (_this.autoPVFilter(location.href, null, state)) {\r\n                if (state === 'hidden' || state === 'visible') {\r\n                    _this.weblog.collect('PV', {\r\n                        type: state,\r\n                        beginTime: _this.beginTime,\r\n                        auto: true,\r\n                    });\r\n                    if (state === 'visible') {\r\n                        // 更新新页面 enter 时间\r\n                        _this.beginTime = new Date().valueOf();\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        _this.proxyPushState = function (data, title, url) {\r\n            _this.urlChange();\r\n            return _this.oldPushState.call(history, data, title, url);\r\n        };\r\n        _this.proxyReplaceState = function (data, title, url) {\r\n            _this.urlChange();\r\n            return _this.oldReplaceState.call(history, data, title, url);\r\n        };\r\n        _this.urlChange = function () {\r\n            setTimeout(function () {\r\n                if (!_this.weblog)\r\n                    return;\r\n                var _a = getMappingPage({ url: location.href }, _this.weblog.logConfig.urlMap), page = _a.page, params = _a.params;\r\n                if (page && page === _this.weblog.currentUrlPackage.page) {\r\n                    _this.weblog.currentUrlPackage.update(page, params);\r\n                    return;\r\n                }\r\n                if (_this.autoPVFilter(location.href, _this.weblog.currentUrl, 'leave')) {\r\n                    // 触发旧页面离开\r\n                    _this.weblog.collect('PV', {\r\n                        type: 'leave',\r\n                        beginTime: _this.beginTime,\r\n                        auto: true\r\n                    });\r\n                }\r\n                if (_this.autoPVFilter(location.href, _this.weblog.currentUrl, 'enter')) {\r\n                    // 更新当前页面信息\r\n                    _this.weblog.updateReferUrlPackage();\r\n                    _this.weblog.updateCurrentUrlPackage(location.href);\r\n                    // 更新新页面 enter 时间\r\n                    _this.beginTime = new Date().valueOf();\r\n                    _this.weblog.collect('PV', {\r\n                        type: 'enter',\r\n                        auto: true,\r\n                    });\r\n                }\r\n            });\r\n        };\r\n        _this.beforeUnload = function () {\r\n            willunload = true;\r\n            if (!_this.weblog || !_this.autoPVFilter('', _this.weblog.currentUrl, 'leave')) {\r\n                return;\r\n            }\r\n            _this.weblog.sendImmediately('PV', {\r\n                type: 'leave',\r\n                beginTime: document.visibilityState === 'hidden' ? new Date().valueOf() : _this.beginTime,\r\n                auto: true,\r\n            });\r\n        };\r\n        _this.autoPVFilter = function () { return true; };\r\n        // 兼容处理\r\n        if (weblog) {\r\n            if (typeof weblog === 'function') {\r\n                _this.autoPVFilter = weblog;\r\n            }\r\n            else if ('logger' in weblog && weblog.logger) {\r\n                if (options === null || options === void 0 ? void 0 : options.autoPVFilter) {\r\n                    _this.autoPVFilter = options.autoPVFilter;\r\n                }\r\n                _this.apply(weblog);\r\n            }\r\n            else if ('autoPVFilter' in weblog && weblog.autoPVFilter) {\r\n                _this.autoPVFilter = weblog.autoPVFilter;\r\n            }\r\n        }\r\n        if (options && typeof options.autoPVFilter === 'function') {\r\n            _this.autoPVFilter = options.autoPVFilter;\r\n        }\r\n        return _this;\r\n    }\r\n    AutoPV.prototype.apply = function (weblog) {\r\n        var _this = this;\r\n        if (!weblog || !weblog.logger)\r\n            return;\r\n        this.weblog = weblog;\r\n        setTimeout(function () {\r\n            if (_this.autoPVFilter(location.href, null, 'enter')) {\r\n                _this.weblog.collect('PV', {\r\n                    type: 'enter',\r\n                    beginTime: _this.beginTime,\r\n                    auto: true\r\n                });\r\n            }\r\n        });\r\n        history.pushState = this.proxyPushState;\r\n        history.replaceState = this.proxyReplaceState;\r\n        addMonitor(window, urlChangeEventId, this.urlChange);\r\n        addMonitor(document, 'visibilitychange', this.visibilityChange);\r\n    };\r\n    AutoPV.prototype.destroy = function () {\r\n        removeMonitor(window, urlChangeEventId, this.urlChange);\r\n        removeMonitor(document, 'visibilitychange', this.visibilityChange);\r\n        history.pushState = this.oldPushState;\r\n        history.replaceState = this.oldReplaceState;\r\n    };\r\n    AutoPV.key = 'autoPV';\r\n    return AutoPV;\r\n}(BasePlugin));\n\n/**\r\n * 浏览器版本，只有 HTTP 上报，兼容旧版本包含了插件\r\n */\r\nvar Weblog$1 = /** @class */ (function (_super) {\r\n    __extends(Weblog, _super);\r\n    function Weblog() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    Weblog.prototype.initBuildInPlugins = function () {\r\n        var _a = this.logConfig, autoPV = _a.autoPV, radar = _a.radar, fps = _a.fps, timing = _a.timing, crash = _a.crash, autoPVFilter = _a.autoPVFilter;\r\n        if (fps || typeof fps === 'undefined') {\r\n            this.plug(FPSMonitor);\r\n        }\r\n        if (timing || typeof timing === 'undefined') {\r\n            this.plug(TimingMonitor);\r\n        }\r\n        if (crash || typeof crash === 'undefined') {\r\n            this.plug(CrashMonitor);\r\n        }\r\n        if (autoPV || typeof autoPV === 'undefined') {\r\n            this.plug(AutoPV, { autoPVFilter: autoPVFilter });\r\n        }\r\n        if (radar) {\r\n            if (radar.sampling && Radar.samplingControl(radar)) {\r\n                this.plug(Radar, radar);\r\n            }\r\n            else {\r\n                this.plug(RadarPlaceHolder);\r\n            }\r\n        }\r\n    };\r\n    return Weblog;\r\n}(Weblog));\r\n// 注册到全局对象\r\nif (typeof window !== 'undefined') {\r\n    if (typeof window._GLOBAL_KS_WEBLOGGER_ !== 'undefined') {\r\n        window._GLOBAL_KS_WEBLOGGER_.Factory = Weblog$1;\r\n    }\r\n    else {\r\n        // @ts-ignore\r\n        window.Weblog = Weblog$1;\r\n    }\r\n}\n\nexports.BasePlugin = BasePlugin;\nexports.Weblog = Weblog$1;\nexports.default = Weblog$1;\n//# sourceMappingURL=log.common.js.map\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=53)}({0:function(e,t,n){\"use strict\";n.d(t,\"a\",function(){return r});var r=\"sp\"},1:function(e,t,n){\"use strict\";function r(e,t,n,r,o,i,s,u){var a,c=\"function\"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),r&&(c.functional=!0),i&&(c._scopeId=\"data-v-\"+i),s?(a=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},c._ssrRegister=a):o&&(a=u?function(){o.call(this,this.$root.$options.shadowRoot)}:o),a)if(c.functional){c._injectStyles=a;var l=c.render;c.render=function(e,t){return a.call(t),l(e,t)}}else{var f=c.beforeCreate;c.beforeCreate=f?[].concat(f,a):[a]}return{exports:e,options:c}}n.d(t,\"a\",function(){return r})},53:function(e,t,n){\"use strict\";n.r(t);var r=n(0).a+\"-loading\",o={name:r,props:{size:{type:Number,default:40},color:{type:String,default:\"currentColor\"}},data:function(){return{count:12}},beforeCreate:function(){this.className=r}},i=n(1),s=Object(i.a)(o,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{class:e.className},[n(\"span\",{class:e.className+\"__spinners\",style:{height:e.size+\"px\",width:e.size+\"px\"}},e._l(e.count,function(t,r){return n(\"i\",{key:r,class:e.className+\"__spinner\",style:{backgroundColor:e.color}})}),0)])},[],!1,null,null,null).exports;s.install=function(e){e.component(s.name,s)};t.default=s}});","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n  try {\n    // correct subclassing with @@species support\n    var promise = $Promise.resolve(1);\n    var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n      exec(empty, empty);\n    };\n    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n    return (isNode || typeof PromiseRejectionEvent == 'function')\n      && promise.then(empty) instanceof FakePromise\n      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n      // we can't detect it synchronously, so just check versions\n      && v8.indexOf('6.6') !== 0\n      && userAgent.indexOf('Chrome/66') === -1;\n  } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n  if (promise._n) return;\n  promise._n = true;\n  var chain = promise._c;\n  microtask(function () {\n    var value = promise._v;\n    var ok = promise._s == 1;\n    var i = 0;\n    var run = function (reaction) {\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (promise._h == 2) onHandleUnhandled(promise);\n            promise._h = 1;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // may throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (e) {\n        if (domain && !exited) domain.exit();\n        reject(e);\n      }\n    };\n    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n    promise._c = [];\n    promise._n = false;\n    if (isReject && !promise._h) onUnhandled(promise);\n  });\n};\nvar onUnhandled = function (promise) {\n  task.call(global, function () {\n    var value = promise._v;\n    var unhandled = isUnhandled(promise);\n    var result, handler, console;\n    if (unhandled) {\n      result = perform(function () {\n        if (isNode) {\n          process.emit('unhandledRejection', value, promise);\n        } else if (handler = global.onunhandledrejection) {\n          handler({ promise: promise, reason: value });\n        } else if ((console = global.console) && console.error) {\n          console.error('Unhandled promise rejection', value);\n        }\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n    } promise._a = undefined;\n    if (unhandled && result.e) throw result.v;\n  });\n};\nvar isUnhandled = function (promise) {\n  return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n  task.call(global, function () {\n    var handler;\n    if (isNode) {\n      process.emit('rejectionHandled', promise);\n    } else if (handler = global.onrejectionhandled) {\n      handler({ promise: promise, reason: promise._v });\n    }\n  });\n};\nvar $reject = function (value) {\n  var promise = this;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  promise._v = value;\n  promise._s = 2;\n  if (!promise._a) promise._a = promise._c.slice();\n  notify(promise, true);\n};\nvar $resolve = function (value) {\n  var promise = this;\n  var then;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    if (then = isThenable(value)) {\n      microtask(function () {\n        var wrapper = { _w: promise, _d: false }; // wrap\n        try {\n          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n        } catch (e) {\n          $reject.call(wrapper, e);\n        }\n      });\n    } else {\n      promise._v = value;\n      promise._s = 1;\n      notify(promise, false);\n    }\n  } catch (e) {\n    $reject.call({ _w: promise, _d: false }, e); // wrap\n  }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n  // 25.4.3.1 Promise(executor)\n  $Promise = function Promise(executor) {\n    anInstance(this, $Promise, PROMISE, '_h');\n    aFunction(executor);\n    Internal.call(this);\n    try {\n      executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n    } catch (err) {\n      $reject.call(this, err);\n    }\n  };\n  // eslint-disable-next-line no-unused-vars\n  Internal = function Promise(executor) {\n    this._c = [];             // <- awaiting reactions\n    this._a = undefined;      // <- checked in isUnhandled reactions\n    this._s = 0;              // <- state\n    this._d = false;          // <- done\n    this._v = undefined;      // <- value\n    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n    this._n = false;          // <- notify\n  };\n  Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n    then: function then(onFulfilled, onRejected) {\n      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = isNode ? process.domain : undefined;\n      this._c.push(reaction);\n      if (this._a) this._a.push(reaction);\n      if (this._s) notify(this, false);\n      return reaction.promise;\n    },\n    // 25.4.5.1 Promise.prototype.catch(onRejected)\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    this.promise = promise;\n    this.resolve = ctx($resolve, promise, 1);\n    this.reject = ctx($reject, promise, 1);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === $Promise || C === Wrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n  // 25.4.4.5 Promise.reject(r)\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    var $$reject = capability.reject;\n    $$reject(r);\n    return capability.promise;\n  }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n  // 25.4.4.6 Promise.resolve(x)\n  resolve: function resolve(x) {\n    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n  }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n  $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n  // 25.4.4.1 Promise.all(iterable)\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var values = [];\n      var index = 0;\n      var remaining = 1;\n      forOf(iterable, false, function (promise) {\n        var $index = index++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        C.resolve(promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[$index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  },\n  // 25.4.4.4 Promise.race(iterable)\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      forOf(iterable, false, function (promise) {\n        C.resolve(promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  }\n});\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functioal component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n  var un = that === undefined;\n  switch (args.length) {\n    case 0: return un ? fn()\n                      : fn.call(that);\n    case 1: return un ? fn(args[0])\n                      : fn.call(that, args[0]);\n    case 2: return un ? fn(args[0], args[1])\n                      : fn.call(that, args[0], args[1]);\n    case 3: return un ? fn(args[0], args[1], args[2])\n                      : fn.call(that, args[0], args[1], args[2]);\n    case 4: return un ? fn(args[0], args[1], args[2], args[3])\n                      : fn.call(that, args[0], args[1], args[2], args[3]);\n  } return fn.apply(that, args);\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","exports.f = {}.propertyIsEnumerable;\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","import _Promise from \"../../core-js/promise\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    _Promise.resolve(value).then(_next, _throw);\n  }\n}\n\nexport default function _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new _Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n  var C = speciesConstructor(this, core.Promise || global.Promise);\n  var isFunction = typeof onFinally == 'function';\n  return this.then(\n    isFunction ? function (x) {\n      return promiseResolve(C, onFinally()).then(function () { return x; });\n    } : onFinally,\n    isFunction ? function (e) {\n      return promiseResolve(C, onFinally()).then(function () { throw e; });\n    } : onFinally\n  );\n} });\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n  var id = +this;\n  // eslint-disable-next-line no-prototype-builtins\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\nvar listener = function (event) {\n  run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n  setTask = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) args.push(arguments[i++]);\n    queue[++counter] = function () {\n      // eslint-disable-next-line no-new-func\n      invoke(typeof fn == 'function' ? fn : Function(fn), args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clearTask = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (require('./_cof')(process) == 'process') {\n    defer = function (id) {\n      process.nextTick(ctx(run, id, 1));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(ctx(run, id, 1));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  } else if (MessageChannel) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = ctx(port.postMessage, port, 1);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n    defer = function (id) {\n      global.postMessage(id + '', '*');\n    };\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in cel('script')) {\n    defer = function (id) {\n      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run.call(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(ctx(run, id, 1), 0);\n    };\n  }\n}\nmodule.exports = {\n  set: setTask,\n  clear: clearTask\n};\n","module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"/dist/\",r(r.s=38)}({0:function(e,t,r){\"use strict\";r.d(t,\"a\",function(){return n});var n=\"sp\"},1:function(e,t,r){\"use strict\";function n(e,t,r,n,i,a,o,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=r,u._compiled=!0),n&&(u.functional=!0),a&&(u._scopeId=\"data-v-\"+a),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},u._ssrRegister=l):i&&(l=s?function(){i.call(this,this.$root.$options.shadowRoot)}:i),l)if(u.functional){u._injectStyles=l;var f=u.render;u.render=function(e,t){return l.call(t),f(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}r.d(t,\"a\",function(){return n})},38:function(e,t,r){\"use strict\";r.r(t);var n=r(0),i={cross:'<svg viewBox=\"0 0 512 512\"><path d=\"M111.104 91.136L256 236.032 400.896 91.136l19.968 19.968L275.968 256l144.896 144.896-19.968 19.968L256 275.968 111.104 420.864l-19.968-19.968L236.032 256 91.136 111.104l19.968-19.968z\"/></svg>',right:'<svg viewBox=\"0 0 670 512\"><path d=\"M222.793 371.595L55.698 204.5-.001 260.198l222.793 222.793L640.529 65.254 584.831 9.555 222.793 371.593z\"/><path d=\"M55.699 232.35L27.85 260.199l194.944 194.944L612.682 65.255l-27.849-27.849-362.038 362.038L55.7 232.349z\"/></svg>',\"circle-cross\":'<svg viewBox=\"0 0 512 512\"><title/><path d=\"M256 29.696C131.072 29.696 29.696 131.072 29.696 256S131.072 482.304 256 482.304 482.304 380.928 482.304 256 380.928 29.696 256 29.696zm90.112 296.448l-19.968 19.968L256 275.968l-70.144 70.144-19.968-19.968L236.032 256l-70.144-70.144 19.968-19.968L256 236.032l70.144-70.144 19.968 19.968L275.968 256l70.144 70.144z\"/></svg>',\"circle-right\":'<svg viewBox=\"0 0 512 512\"><path d=\"M256 29.696C131.072 29.696 29.696 131.072 29.696 256S131.072 482.304 256 482.304 482.304 380.928 482.304 256 380.928 29.696 256 29.696zm-22.528 304.64l.512.512-19.968 19.968L128 268.8l19.968-19.968 65.536 65.536 145.92-145.92 19.968 19.968-145.92 145.92z\"/></svg>',spinner:'<svg viewBox=\"0 0 100 100\" preserveAspectRatio=\"xMidYMid\" style=\"background:0 0\"><rect x=\"46.5\" y=\"15.5\" rx=\"12.09\" ry=\"4.03\" width=\"7\" height=\"17\" fill=\"#eee\"><animate attributeName=\"opacity\" values=\"1;0\" dur=\"1s\" begin=\"-0.9166666666666666s\" repeatCount=\"indefinite\"/></rect><rect x=\"46.5\" y=\"15.5\" rx=\"12.09\" ry=\"4.03\" width=\"7\" height=\"17\" fill=\"#eee\" transform=\"rotate(30 50 50)\"><animate attributeName=\"opacity\" values=\"1;0\" dur=\"1s\" begin=\"-0.8333333333333334s\" repeatCount=\"indefinite\"/></rect><rect x=\"46.5\" y=\"15.5\" rx=\"12.09\" ry=\"4.03\" width=\"7\" height=\"17\" fill=\"#eee\" transform=\"rotate(60 50 50)\"><animate attributeName=\"opacity\" values=\"1;0\" dur=\"1s\" begin=\"-0.75s\" repeatCount=\"indefinite\"/></rect><rect x=\"46.5\" y=\"15.5\" rx=\"12.09\" ry=\"4.03\" width=\"7\" height=\"17\" fill=\"#eee\" transform=\"rotate(90 50 50)\"><animate attributeName=\"opacity\" values=\"1;0\" dur=\"1s\" begin=\"-0.6666666666666666s\" repeatCount=\"indefinite\"/></rect><rect x=\"46.5\" y=\"15.5\" rx=\"12.09\" ry=\"4.03\" width=\"7\" height=\"17\" fill=\"#eee\" transform=\"rotate(120 50 50)\"><animate attributeName=\"opacity\" values=\"1;0\" dur=\"1s\" begin=\"-0.5833333333333334s\" repeatCount=\"indefinite\"/></rect><rect x=\"46.5\" y=\"15.5\" rx=\"12.09\" ry=\"4.03\" width=\"7\" height=\"17\" fill=\"#eee\" transform=\"rotate(150 50 50)\"><animate attributeName=\"opacity\" values=\"1;0\" dur=\"1s\" begin=\"-0.5s\" repeatCount=\"indefinite\"/></rect><rect x=\"46.5\" y=\"15.5\" rx=\"12.09\" ry=\"4.03\" width=\"7\" height=\"17\" fill=\"#eee\" transform=\"rotate(180 50 50)\"><animate attributeName=\"opacity\" values=\"1;0\" dur=\"1s\" begin=\"-0.4166666666666667s\" repeatCount=\"indefinite\"/></rect><rect x=\"46.5\" y=\"15.5\" rx=\"12.09\" ry=\"4.03\" width=\"7\" height=\"17\" fill=\"#eee\" transform=\"rotate(210 50 50)\"><animate attributeName=\"opacity\" values=\"1;0\" dur=\"1s\" begin=\"-0.3333333333333333s\" repeatCount=\"indefinite\"/></rect><rect x=\"46.5\" y=\"15.5\" rx=\"12.09\" ry=\"4.03\" width=\"7\" height=\"17\" fill=\"#eee\" transform=\"rotate(240 50 50)\"><animate attributeName=\"opacity\" values=\"1;0\" dur=\"1s\" begin=\"-0.25s\" repeatCount=\"indefinite\"/></rect><rect x=\"46.5\" y=\"15.5\" rx=\"12.09\" ry=\"4.03\" width=\"7\" height=\"17\" fill=\"#eee\" transform=\"rotate(270 50 50)\"><animate attributeName=\"opacity\" values=\"1;0\" dur=\"1s\" begin=\"-0.16666666666666666s\" repeatCount=\"indefinite\"/></rect><rect x=\"46.5\" y=\"15.5\" rx=\"12.09\" ry=\"4.03\" width=\"7\" height=\"17\" fill=\"#eee\" transform=\"rotate(300 50 50)\"><animate attributeName=\"opacity\" values=\"1;0\" dur=\"1s\" begin=\"-0.08333333333333333s\" repeatCount=\"indefinite\"/></rect><rect x=\"46.5\" y=\"15.5\" rx=\"12.09\" ry=\"4.03\" width=\"7\" height=\"17\" fill=\"#eee\" transform=\"rotate(330 50 50)\"><animate attributeName=\"opacity\" values=\"1;0\" dur=\"1s\" begin=\"0s\" repeatCount=\"indefinite\"/></rect></svg>',\"tick-success\":'<svg viewBox=\"0 0 80 80\"><g fill=\"none\" fill-rule=\"evenodd\"><path d=\"m1.07527771 44.7765929c-1.28592269-1.3080299-1.43400438-3.5644608-.34053756-5.0267899l.49702126-.6646828c1.09784899-1.4681896 3.17214063-1.7662626 4.64489653-.6568485l17.73304846 13.3581501c.9044588.6813209 2.3485643.6515684 3.2267607-.0674866l47.5103537-38.9008136c1.4251697-1.166909 3.6518173-1.0729991 4.9739677.2103469l-.3142553-.3050321c1.3218769 1.2830804 1.3218563 3.3597539-.0014456 4.639734l-51.3644444 49.6828919c-1.3226752 1.279374-3.4337005 1.2598679-4.7232844-.0518861z\" fill=\"#fff\"/><path d=\"m0 0h80v80h-80z\" fill-rule=\"nonzero\"/></g></svg>',exclamation:'<svg viewBox=\"0 0 80 80\"><g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g transform=\"translate(-3178.000000, -855.000000)\"><g transform=\"translate(3108.000000, 811.000000)\"><g transform=\"translate(70.000000, 44.000000)\"><path d=\"M39.3723995,4 L40.1245489,4 C43.8568459,4 46.704134,7.01732429 46.48361,10.7393824 L43.9787879,53.0163859 C43.8490446,55.2062258 41.9519063,57 39.7427673,57 C37.5381235,57 35.6374814,55.2164752 35.5076046,53.0163859 L33.011887,10.7393824 C32.7923574,7.02059079 35.639863,4 39.3723995,4 Z M39.7427673,76 C36.4290588,76 33.7427673,73.3137085 33.7427673,70 C33.7427673,66.6862915 36.4290588,64 39.7427673,64 C43.0564758,64 45.7427673,66.6862915 45.7427673,70 C45.7427673,73.3137085 43.0564758,76 39.7427673,76 Z\" fill=\"#FFFFFF\"></path><rect fill-rule=\"nonzero\" x=\"0\" y=\"0\" width=\"80\" height=\"80\"></rect></g></g></g></g></svg>',\"smooth-spinner\":'<svg viewBox=\"0 0 80 80\"><defs><path d=\"M4.20977065,14.3511213 C1.53595391,18.8384342 0,24.0825795 0,29.685466 C0,46.2540085 13.4314575,59.685466 30,59.685466 C46.5685425,59.685466 60,46.2540085 60,29.685466 C60,17.2197701 52.3969545,6.5298606 41.5751261,2\" id=\"path-1\"></path><filter x=\"-28.3%\" y=\"-30.5%\" width=\"156.7%\" height=\"160.0%\" filterUnits=\"objectBoundingBox\"><feMorphology radius=\"2\" operator=\"dilate\" in=\"SourceAlpha\" result=\"shadowSpreadOuter1\"></feMorphology><feOffset dx=\"0\" dy=\"0\" in=\"shadowSpreadOuter1\" result=\"shadowOffsetOuter1\"></feOffset><feMorphology radius=\"2\" operator=\"erode\" in=\"SourceAlpha\" result=\"shadowInner\"></feMorphology><feOffset dx=\"0\" dy=\"0\" in=\"shadowInner\" result=\"shadowInner\"></feOffset><feComposite in=\"shadowOffsetOuter1\" in2=\"shadowInner\" operator=\"out\" result=\"shadowOffsetOuter1\"></feComposite><feGaussianBlur stdDeviation=\"5\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"></feGaussianBlur><feColorMatrix values=\"0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.12 0\" type=\"matrix\" in=\"shadowBlurOuter1\"></feColorMatrix></filter></defs><g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" stroke-linecap=\"round\"><g transform=\"translate(-286.000000, -872.000000)\"><g transform=\"translate(216.000000, 827.000000)\"><g transform=\"translate(54.000000, 45.000000)\"><g transform=\"translate(26.000000, 10.000000)\"><g><use fill=\"black\" fill-opacity=\"1\" filter=\"url(#filter-2)\" xlink:href=\"#path-1\"></use><use stroke=\"#FFFFFF\" stroke-width=\"4\" xlink:href=\"#path-1\"></use></g></g></g></g></g></g></svg>'},a=n.a+\"-icon\",o={name:a,props:{name:{type:String,default:\"\"},size:{type:String,default:\"md\"},color:{type:String,default:\"\"}},beforeCreate:function(){this.className=a},mounted:function(){if(document){var e=document.getElementById(\"__SVG_SPRITE_NODE__\"),t=document.body;e||t.insertAdjacentHTML(\"afterbegin\",'\\n            <svg\\n                xmlns=\"http://www.w3.org/2000/svg\"\\n                xmlns:xlink=\"http://www.w3.org/1999/xlink\"\\n                id=\"__SVG_SPRITE_NODE__\"\\n                style=\"position:absolute;width:0;height:0\"\\n            >\\n                <defs>\\n                    '+Object.keys(i).map(function(e){return\"<symbol id=\"+e+i[e].split(\"svg\")[1]+\"symbol>\"}).join(\"\")+\"\\n                </defs>\\n            </svg>\\n        \")}},computed:{classes:function(){var e=this.className,t=this.size;return[e,e+\"-\"+this.name,e+\"--\"+t]}}},s=r(1),l=Object(s.a)(o,function(){var e=this.$createElement,t=this._self._c||e;return this.name?t(\"svg\",{class:this.classes,style:{fill:this.color}},[t(\"use\",{attrs:{\"xlink:href\":\"#\"+this.name}})]):this._e()},[],!1,null,null,null).exports;l.install=function(e){e.component(l.name,l)};t.default=l}});","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n  var promiseCapability = newPromiseCapability.f(this);\n  var result = perform(callbackfn);\n  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n  return promiseCapability.promise;\n} });\n","module.exports = function (exec) {\n  try {\n    return { e: false, v: exec() };\n  } catch (e) {\n    return { e: true, v: e };\n  }\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n  } return result;\n};\n","module.exports = {};\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function () { return this; }\n  });\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n    var O = toObject(arrayLike);\n    var C = typeof this == 'function' ? this : Array;\n    var aLen = arguments.length;\n    var mapfn = aLen > 1 ? arguments[1] : undefined;\n    var mapping = mapfn !== undefined;\n    var index = 0;\n    var iterFn = getIterFn(O);\n    var length, result, step, iterator;\n    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n    // if object isn't iterable or it's array with default iterator - use simple case\n    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n      }\n    } else {\n      length = toLength(O.length);\n      for (result = new C(length); length > index; index++) {\n        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n      }\n    }\n    result.length = index;\n    return result;\n  }\n});\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","var core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n  for (var key in src) {\n    if (safe && target[key]) target[key] = src[key];\n    else hide(target, key, src[key]);\n  } return target;\n};\n","module.exports = require(\"core-js/library/fn/symbol/iterator\");","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports=function(e){var t={};function o(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,o),i.l=!0,i.exports}return o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)o.d(n,i,function(t){return e[t]}.bind(null,i));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,\"a\",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p=\"/dist/\",o(o.s=52)}({0:function(e,t,o){\"use strict\";o.d(t,\"a\",function(){return n});var n=\"sp\"},1:function(e,t,o){\"use strict\";function n(e,t,o,n,i,s,r,a){var u,p=\"function\"==typeof e?e.options:e;if(t&&(p.render=t,p.staticRenderFns=o,p._compiled=!0),n&&(p.functional=!0),s&&(p._scopeId=\"data-v-\"+s),r?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},p._ssrRegister=u):i&&(u=a?function(){i.call(this,this.$root.$options.shadowRoot)}:i),u)if(p.functional){p._injectStyles=u;var l=p.render;p.render=function(e,t){return u.call(t),l(e,t)}}else{var h=p.beforeCreate;p.beforeCreate=h?[].concat(h,u):[u]}return{exports:e,options:p}}o.d(t,\"a\",function(){return n})},52:function(e,t,o){\"use strict\";o.r(t);var n=o(0).a+\"-popup\",i={name:n,model:{prop:\"show\",event:\"toggle\"},data:function(){return{isPopupShow:!1,isPopupBoxShow:!1,isAnimating:!1}},props:{show:{type:Boolean,default:!1},showMask:{type:Boolean,default:!0},maskCloseable:{type:Boolean,default:!0},position:{type:String,default:\"center\"},transition:{type:String,default:function(){switch(this.position){case\"top\":return\"slide-down\";case\"right\":return\"slide-left\";case\"bottom\":return\"slide-up\";case\"left\":return\"slide-right\";case\"fade-grow\":return\"fade-grow\";default:return\"fade\"}}},disableScroll:{type:Boolean,default:!1}},beforeCreate:function(){this.className=n},mounted:function(){this.show&&this.showPopupBox()},methods:{showPopupBox:function(){this.isPopupShow=!0,this.isAnimating=!0,this.isPopupBoxShow=!0},hidePopupBox:function(){this.isAnimating=!0,this.isPopupBoxShow=!1,this.$emit(\"toggle\",!1)},handleTouchMove:function(e){this.disableScroll&&e.preventDefault()},handlePopupMaskClick:function(){this.maskCloseable&&(this.hidePopupBox(),this.$emit(\"mask-click\"))},handlePopupTransitionStart:function(){this.isPopupBoxShow?this.$emit(\"before-show\"):this.$emit(\"before-hide\")},handlePopupTransitionEnd:function(){this.isAnimating&&(this.isPopupBoxShow?this.$emit(\"show\"):(this.isPopupShow=!1,this.$emit(\"hide\")),this.isAnimating=!1)}},computed:{popupClasses:function(){var e=this.className,t=this.showMask;return[e,\"is-\"+this.position,{\"is-mask-show\":t}]}},watch:{show:function(e){e?this.showPopupBox():this.hidePopupBox()}}},s=o(1),r=Object(s.a)(i,function(){var e=this,t=e.$createElement,o=e._self._c||t;return o(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.isPopupShow,expression:\"isPopupShow\"}],class:e.popupClasses},[o(\"transition\",{attrs:{name:\"fade\"}},[o(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.showMask&&e.isPopupBoxShow,expression:\"showMask && isPopupBoxShow\"}],class:e.className+\"__mask\",on:{click:e.handlePopupMaskClick,touchmove:e.handleTouchMove}})]),e._v(\" \"),o(\"transition\",{attrs:{name:e.transition},on:{\"before-enter\":e.handlePopupTransitionStart,\"before-leave\":e.handlePopupTransitionStart,\"after-enter\":e.handlePopupTransitionEnd,\"after-leave\":e.handlePopupTransitionEnd}},[o(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.isPopupBoxShow,expression:\"isPopupBoxShow\"}],class:[e.className+\"__box\",e.transition],on:{touchmove:e.handleTouchMove}},[e._t(\"default\")],2)])],1)},[],!1,null,null,null).exports;r.install=function(e){e.component(r.name,r)};t.default=r}});","module.exports=function(t){var e={};function n(o){if(e[o])return e[o].exports;var r=e[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)n.d(o,r,function(e){return t[e]}.bind(null,r));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"/dist/\",n(n.s=51)}({0:function(t,e,n){\"use strict\";n.d(e,\"a\",function(){return o});var o=\"sp\"},1:function(t,e,n){\"use strict\";function o(t,e,n,o,r,i,s,a){var c,l=\"function\"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),i&&(l._scopeId=\"data-v-\"+i),s?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),r&&r.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(s)},l._ssrRegister=c):r&&(c=a?function(){r.call(this,this.$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(t,e){return c.call(e),u(t,e)}}else{var f=l.beforeCreate;l.beforeCreate=f?[].concat(f,c):[c]}return{exports:t,options:l}}n.d(e,\"a\",function(){return o})},2:function(t,e){t.exports=require(\"vue\")},3:function(t,e){t.exports=require(\"./popup\")},4:function(t,e,n){\"use strict\";e.a=function(){}},51:function(t,e,n){\"use strict\";n.r(e);var o,r=n(2),i=n.n(r),s=n(4),a=n(0),c=n(3),l=n.n(c),u=a.a+\"-dialog\",f={name:u,model:{prop:\"show\",event:\"toggle\"},components:(o={},o[l.a.name]=l.a,o),beforeCreate:function(){this.className=u},props:{show:{type:Boolean,default:!1},title:{type:String,default:\"\"},icon:{type:String,default:\"\"},content:{type:String,default:\"\"},btns:{type:Array,default:function(){return[]}},appendTo:{default:function(){return document&&document.body}},showMask:{type:Boolean,default:!0},maskCloseable:{type:Boolean,default:!0},position:{type:String,default:\"center\"},transition:{type:String,default:\"fade-grow\"},disableScroll:{type:Boolean,default:!1}},mounted:function(){this.appendTo&&this.appendTo.appendChild(this.$el)},beforeDestroy:function(){this.appendTo&&this.appendTo.removeChild(this.$el)},methods:{$_onToggle:function(t){this.$emit(\"toggle\",t)},$_onShow:function(){this.$emit(\"show\")},$_onHide:function(){this.$emit(\"hide\")},$_onClick:function(t){\"function\"==typeof t.handler?t.handler.call(null):this.close()},close:function(){this.$emit(\"toggle\",!1)}}},d=n(1),p=Object(d.a)(f,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{class:t.className},[n(\"sp-popup\",{attrs:{show:t.show,showMask:t.showMask,maskCloseable:t.maskCloseable,position:t.position,transition:t.transition,disableScroll:t.disableScroll},on:{toggle:t.$_onToggle,show:t.$_onShow,hide:t.$_onHide}},[n(\"div\",{class:t.className+\"__content\"},[n(\"h2\",{class:t.className+\"__title\"},[t._v(\"\\n                \"+t._s(t.title)+\"\\n            \")]),t._v(\" \"),t.content?n(\"div\",{class:t.className+\"__body\",domProps:{innerHTML:t._s(t.content)}}):t.$slots.default?n(\"div\",{class:t.className+\"__body\"},[t._t(\"default\")],2):t._e(),t._v(\" \"),n(\"footer\",{class:t.className+\"__actions\"},t._l(t.btns,function(e,o){return n(\"a\",{key:o,attrs:{role:\"button\"},domProps:{textContent:t._s(e.text)},on:{click:function(n){t.$_onClick(e)}}})}),0)])])],1)},[],!1,null,null,null).exports;function h(){return(h=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t}).apply(this,arguments)}var _=i.a.extend(p),m=[],v=function(t){void 0===t&&(t={});var e=new _({propsData:h({show:!0},t)}).$mount();return m.push(e),e.$on(\"toggle\",function(t){t||(e.show=!1)}),e.$on(\"hide\",function(){var t=m.indexOf(e);t>=0&&m.splice(t,1),e.$destroy()}),e};p.confirm=function(t){void 0===t&&(t={}),t=h({confirmText:\"确定\",cancelText:\"取消\",onConfirm:s.a},t);var e=v(h({btns:[{text:t.cancelText,handler:function(){return e.close()}},{text:t.confirmText,handler:function(){!1!==t.onConfirm()&&e.close()}}]},t));return e},p.alert=function(t){void 0===t&&(t={}),t=h({confirmText:\"确定\",onConfirm:s.a},t);var e=v(h({btns:[{text:t.confirmText,handler:function(){!1!==t.onConfirm()&&e.close()}}]},t));return e},p.success=function(t){return void 0===t&&(t={}),t.icon=\"circle-right\",p.confirm(t)},p.fail=function(t){return void 0===t&&(t={}),t.icon=\"circle-cross\",p.confirm(t)},p.closeAll=function(){m.forEach(function(t){t.close()})},p.install=function(t){t.component(p.name,p)};e.default=p}});","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && has(exports, key)) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","module.exports = require(\"core-js/library/fn/symbol\");","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","require('./_wks-define')('asyncIterator');\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n  'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n  var NAME = DOMIterables[i];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n  Iterators[NAME] = Iterators.Array;\n}\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","import _Array$isArray from \"../../core-js/array/is-array\";\nexport default function _arrayWithoutHoles(arr) {\n  if (_Array$isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  }\n}","import _Array$from from \"../../core-js/array/from\";\nimport _isIterable from \"../../core-js/is-iterable\";\nexport default function _iterableToArray(iter) {\n  if (_isIterable(Object(iter)) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return _Array$from(iter);\n}","export default function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","import _Symbol$iterator from \"../../core-js/symbol/iterator\";\nimport _Symbol from \"../../core-js/symbol\";\n\nfunction _typeof2(obj) { if (typeof _Symbol === \"function\" && typeof _Symbol$iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n  if (typeof _Symbol === \"function\" && _typeof2(_Symbol$iterator) === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return _typeof2(obj);\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : _typeof2(obj);\n    };\n  }\n\n  return _typeof(obj);\n}","require('./_wks-define')('observable');\n","module.exports = require(\"core-js/library/fn/array/from\");","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = require(\"core-js/library/fn/promise\");","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","module.exports = function () { /* empty */ };\n","module.exports=function(t){var l={};function i(e){if(l[e])return l[e].exports;var n=l[e]={i:e,l:!1,exports:{}};return t[e].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=l,i.d=function(t,l,e){i.o(t,l)||Object.defineProperty(t,l,{enumerable:!0,get:e})},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},i.t=function(t,l){if(1&l&&(t=i(t)),8&l)return t;if(4&l&&\"object\"==typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(i.r(e),Object.defineProperty(e,\"default\",{enumerable:!0,value:t}),2&l&&\"string\"!=typeof t)for(var n in t)i.d(e,n,function(l){return t[l]}.bind(null,n));return e},i.n=function(t){var l=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(l,\"a\",l),l},i.o=function(t,l){return Object.prototype.hasOwnProperty.call(t,l)},i.p=\"/dist/\",i(i.s=34)}({0:function(t,l,i){\"use strict\";i.d(l,\"a\",function(){return e});var e=\"sp\"},1:function(t,l,i){\"use strict\";function e(t,l,i,e,n,s,r,o){var a,u=\"function\"==typeof t?t.options:t;if(l&&(u.render=l,u.staticRenderFns=i,u._compiled=!0),e&&(u.functional=!0),s&&(u._scopeId=\"data-v-\"+s),r?(a=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(r)},u._ssrRegister=a):n&&(a=o?function(){n.call(this,this.$root.$options.shadowRoot)}:n),a)if(u.functional){u._injectStyles=a;var h=u.render;u.render=function(t,l){return a.call(l),h(t,l)}}else{var c=u.beforeCreate;u.beforeCreate=c?[].concat(c,a):[a]}return{exports:t,options:u}}i.d(l,\"a\",function(){return e})},34:function(t,l,i){\"use strict\";i.r(l);var e,n=i(0),s=i(7),r=i.n(s),o={props:{y:{type:Number,default:0}},data:function(){return{width:50,height:60}},computed:{distance:function(){return Math.max(0,Math.min(this.y*this.ratio,this.maxDistance))},style:function(){return\"width:\"+this.width/this.ratio+\"px; height:\"+this.height/this.ratio+\"px; vertical-align: middle;\"}},mounted:function(){this.ratio=window&&window.devicePixelRatio,this.width*=this.ratio,this.height*=this.ratio,this.initRadius=18*this.ratio,this.minHeadRadius=12*this.ratio,this.minTailRadius=5*this.ratio,this.initArrowRadius=10*this.ratio,this.minArrowRadius=6*this.ratio,this.arrowWidth=3*this.ratio,this.maxDistance=30*this.ratio,this.initCenterX=25*this.ratio,this.initCenterY=25*this.ratio,this.headCenter={x:this.initCenterX,y:this.initCenterY},this._draw()},methods:{_draw:function(){var t=this.$refs.bubble,l=t.getContext(\"2d\");l.clearRect(0,0,t.width,t.height),this._drawBubble(l),this._drawArrow(l)},_drawBubble:function(t){t.save(),t.beginPath();var l=this.distance/this.maxDistance,i=this.initRadius-(this.initRadius-this.minHeadRadius)*l;this.headCenter.y=this.initCenterY-(this.initRadius-this.minHeadRadius)*l,t.arc(this.headCenter.x,this.headCenter.y,i,0,Math.PI,!0);var e=this.initRadius-(this.initRadius-this.minTailRadius)*l,n={x:this.headCenter.x,y:this.headCenter.y+this.distance},s={x:n.x-e,y:n.y},r={x:s.x,y:s.y-this.distance/2};t.quadraticCurveTo(r.x,r.y,s.x,s.y),t.arc(n.x,n.y,e,Math.PI,0,!0);var o={x:this.headCenter.x+i,y:this.headCenter.y},a={x:n.x+e,y:o.y+this.distance/2};t.quadraticCurveTo(a.x,a.y,o.x,o.y),t.fillStyle=\"rgb(170,170,170)\",t.fill(),t.strokeStyle=\"rgb(153,153,153)\",t.stroke(),t.restore()},_drawArrow:function(t){t.save(),t.beginPath();var l=this.distance/this.maxDistance,i=this.initArrowRadius-(this.initArrowRadius-this.minArrowRadius)*l;t.arc(this.headCenter.x,this.headCenter.y,i-(this.arrowWidth-l),-Math.PI/2,0,!0),t.arc(this.headCenter.x,this.headCenter.y,i,0,3*Math.PI/2,!1),t.lineTo(this.headCenter.x,this.headCenter.y-i-this.arrowWidth/2+l),t.lineTo(this.headCenter.x+2*this.arrowWidth-2*l,this.headCenter.y-i+this.arrowWidth/2),t.lineTo(this.headCenter.x,this.headCenter.y-i+3*this.arrowWidth/2-l),t.fillStyle=\"rgb(255,255,255)\",t.fill(),t.strokeStyle=\"rgb(170,170,170)\",t.stroke(),t.restore()}},watch:{y:function(){this._draw()}}},a=i(1),u=Object(a.a)(o,function(){var t=this.$createElement;return(this._self._c||t)(\"canvas\",{ref:\"bubble\",style:this.style,attrs:{width:this.width,height:this.height}})},[],!1,null,null,null).exports,h=i(8),c=i.n(h);function d(){return(d=Object.assign||function(t){for(var l=1;l<arguments.length;l++){var i=arguments[l];for(var e in i)Object.prototype.hasOwnProperty.call(i,e)&&(t[e]=i[e])}return t}).apply(this,arguments)}var p=n.a+\"-scroll\",f=[\"scroll\",\"before-scroll-start\",\"scroll-end\"],w={observeDOM:!0,click:!0,probeType:1,scrollbar:!1,pullDownRefresh:!1,pullUpLoad:!1},_={name:p,components:(e={},e[r.a.name]=r.a,e.Bubble=u,e),beforeCreate:function(){this.className=p},props:{data:{type:Array,default:function(){return[]}},options:{type:Object,default:function(){return{}}},direction:{type:String,default:\"vertical\",validator:function(t){return-1!==[\"vertical\",\"horizontal\"].indexOf(t)}},scrollEvents:{type:Array,default:function(){return[]},validator:function(t){return t.every(function(t){return-1!==f.indexOf(t)})}},refreshDelay:{type:Number,default:20}},data:function(){return{beforePullDown:!0,isPullingDown:!1,isPullUpLoad:!1,pullUpDirty:!0,bubbleY:0,scrollPos:{x:0,y:0},pullDownStyle:\"\",pullDownStop:0,pullDownHeight:0,isScrolling:!1}},computed:{containerCls:function(){var t;return(t={})[\"\"+this.className]=!0,t},pullDownRefresh:function(){var t=this.options.pullDownRefresh;return t?(!0===t&&(t={}),d({stop:this.pullDownStop},t)):t},pullUpLoad:function(){return this.options.pullUpLoad},pullUpTxt:function(){var t=this.pullUpLoad,l=t&&t.txt,i=l&&l.more||\"\",e=l&&l.noMore||\"\";return this.pullUpDirty?i:e},refreshTxt:function(){var t=this.pullDownRefresh;return t&&t.txt||\"Refresh success\"},finalScrollEvents:function(){var t=this.scrollEvents.slice();return t},finalThreshold:function(){return this.pullDownRefresh.threshold||90}},watch:{data:function(){var t=this;setTimeout(function(){t.forceUpdate(!0)},this.refreshDelay)},pullDownRefresh:{handler:function(t,l){this.scroll&&(t&&(this.scroll.openPullDown(t),l||(this._bindPullDownEvents(),this._calculateMinSize())),!t&&l&&(this.scroll.closePullDown(),this._unbindPullDownEvents(),this._calculateMinSize()))},deep:!0},pullUpLoad:{handler:function(t,l){this.scroll&&(t&&(this.scroll.openPullUp(t),l||(this._bindPullUpLoadEvents(),this._calculateMinSize())),!t&&l&&(this.scroll.closePullUp(),this._unbindPullUpLoadEvents(),this._calculateMinSize()))},deep:!0}},activated:function(){this.enableScroll()},deactivated:function(){this.disableScroll()},mounted:function(){var t=this;this.$nextTick(function(){t.initScroll()})},beforeDestroy:function(){this.destroyScroll()},methods:{initScroll:function(){if(this.$refs.wrapper){this._calculateMinSize();var t=d({},w,{scrollY:\"vertical\"===this.direction,scrollX:\"horizontal\"===this.direction,probeType:-1!==this.finalScrollEvents.indexOf(\"scroll\")?3:1},this.options,{pullDownRefresh:this.pullDownRefresh});this.scroll=new c.a(this.$refs.wrapper,t),this._bindScrollEvents(),this.pullDownRefresh&&(this._getPullDownEleHeight(),this._bindPullDownEvents()),this.pullUpLoad&&this._bindPullUpLoadEvents()}},disableScroll:function(){this.scroll&&this.scroll.disable()},enableScroll:function(){this.scroll&&this.scroll.enable()},refresh:function(){this._calculateMinSize(),this.scroll&&this.scroll.refresh()},destroyScroll:function(){this.scroll&&this.scroll.destroy(),this.scroll=null},scrollTo:function(){this.scroll&&this.scroll.scrollTo.apply(this.scroll,arguments)},scrollToElement:function(){this.scroll&&this.scroll.scrollToElement.apply(this.scroll,arguments)},forceUpdate:function(t){var l=this;void 0===t&&(t=!1),this.pullDownRefresh&&this.isPullingDown?(this.isPullingDown=!1,this._reboundPullDown(function(){l._afterPullDown(t)})):this.pullUpLoad&&this.isPullUpLoad?(this.isPullUpLoad=!1,this.scroll.finishPullUp(),this.pullUpDirty=t,t&&this.refresh()):(this.isPullingDown=!1,this.isPullUpLoad=!1,t&&this.refresh())},resetPullUpTxt:function(){this.pullUpDirty=!0},_bindScrollEvents:function(){var t=this;this.finalScrollEvents.forEach(function(l){var i;t.scroll.on((i=l,(i=String(i)).replace(/-(\\w)/g,function(t,l){return l?l.toUpperCase():\"\"})),function(){for(var i=arguments.length,e=new Array(i),n=0;n<i;n++)e[n]=arguments[n];t.$emit.apply(t,[l].concat(e))})})},_bindPullDownEvents:function(){this.scroll.on(\"pullingDown\",this._pullDownHandler),this.scroll.on(\"scrollStart\",this._pullDownScrollStartHandler),this.scroll.on(\"scrollEnd\",this._pullDownScrollEndHandler),this.scroll.on(\"scroll\",this._pullDownScrollHandler)},_unbindPullDownEvents:function(){this.scroll.off(\"pullingDown\",this._pullDownHandler),this.scroll.off(\"scrollStart\",this._pullDownScrollStartHandler),this.scroll.off(\"scrollEnd\",this._pullDownScrollEndHandler),this.scroll.off(\"scroll\",this._pullDownScrollHandler)},_bindPullUpLoadEvents:function(){this.scroll.on(\"pullingUp\",this._pullUpHandler)},_unbindPullUpLoadEvents:function(){this.scroll.off(\"pullingUp\",this._pullUpHandler)},_onClickItem:function(t){this.$emit(\"click\",t)},_calculateMinSize:function(){if(this.$refs.listWrapper){var t=\"\",l=0;switch(this.direction){case\"horizontal\":t=\"minWidth\",l=this.$refs.wrapper.offsetWidth,this.$refs.content.style.display=\"inline-block\";break;case\"vertical\":t=\"minHeight\",l=this.$refs.wrapper.offsetHeight}var i=this.pullDownRefresh||this.pullUpLoad?l+1:l;this.$refs.listWrapper.style[t]=i+\"px\"}},_pullDownHandler:function(){this.resetPullDownTimer&&clearTimeout(this.resetPullDownTimer),this.beforePullDown=!1,this.isPullingDown=!0,this.$emit(\"pulling-down\")},_pullDownScrollHandler:function(t){0===this.pullDownHeight&&this._getPullDownEleHeight(),this.scrollPos=t,this.beforePullDown?(this.bubbleY=t.y-this.pullDownHeight,this.pullDownStyle=\"top: \"+(t.y-this.pullDownHeight)+\"px\"):(this.bubbleY=0,this.pullDownStyle=\"top: \"+(t.y-this.pullDownStop)+\"px\")},_pullDownScrollStartHandler:function(){this.isScrolling=!0},_pullDownScrollEndHandler:function(){this.isScrolling=!1},_pullUpHandler:function(){this.isPullUpLoad||(this.isPullUpLoad=!0,this.$emit(\"pulling-up\"))},_reboundPullDown:function(t){var l=this,i=this.pullDownRefresh.stopTime;setTimeout(function(){l.scroll.finishPullDown(),t()},void 0===i?600:i)},_afterPullDown:function(t){var l=this;this.resetPullDownTimer=setTimeout(function(){l.pullDownStyle=\"top: -\"+l.pullDownHeight+\"px\",l.beforePullDown=!0,t&&l.refresh()},this.scroll.options.bounceTime)},_getPullDownEleHeight:function(){var t=this,l=this.$refs.pulldown.firstChild;this.pullDownHeight=l.offsetHeight,this.beforePullDown=!1,this.isPullingDown=!0,this.$nextTick(function(){t.pullDownStop=l.offsetHeight,t.beforePullDown=!0,t.isPullingDown=!1})}}},v=Object(a.a)(_,function(){var t=this,l=t.$createElement,i=t._self._c||l;return i(\"div\",{ref:\"wrapper\",class:t.containerCls},[i(\"div\",{ref:\"content\",class:t.className+\"__content\"},[i(\"div\",{ref:\"listWrapper\",class:t.className+\"__list-wrapper\"},[t._t(\"default\",[i(\"ul\",{class:t.className+\"__list\"},t._l(t.data,function(l,e){return i(\"li\",{key:e,class:t.className+\"__item\",on:{click:function(i){t._onClickItem(l)}}},[t._v(\"\\n                        \"+t._s(l)+\"\\n                    \")])}),0)])],2),t._v(\" \"),t._t(\"pullup\",[t.pullUpLoad?i(\"div\",{class:t.className+\"__pullup-wrapper\"},[t.isPullUpLoad?i(\"div\",{class:t.className+\"__pullup-after-trigger\"},[i(\"sp-loading\",{attrs:{size:20}})],1):i(\"div\",{class:t.className+\"__pullup-before-trigger\"},[i(\"span\",[t._v(t._s(t.pullUpTxt))])])]):t._e()],{pullUpLoad:t.pullUpLoad,isPullUpLoad:t.isPullUpLoad})],2),t._v(\" \"),t.pullDownRefresh?i(\"div\",{ref:\"pulldown\",class:t.className+\"__pulldown\",style:{visibility:t.isScrolling?\"visible\":\"hidden\"}},[t._t(\"pulldown\",[i(\"div\",{class:t.className+\"__pulldown-wrapper\",style:t.pullDownStyle},[i(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.beforePullDown,expression:\"beforePullDown\"}],class:t.className+\"__pulldown-before-trigger\"},[i(\"bubble\",{attrs:{y:t.bubbleY}})],1),t._v(\" \"),i(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:!t.beforePullDown,expression:\"!beforePullDown\"}],class:t.className+\"__pulldown-after-trigger\"},[i(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isPullingDown,expression:\"isPullingDown\"}],class:t.className+\"__pulldown-loading\"},[i(\"sp-loading\",{attrs:{size:20}})],1),t._v(\" \"),i(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:!t.isPullingDown,expression:\"!isPullingDown\"}],class:t.className+\"__pulldown-loaded\"},[i(\"span\",[t._v(t._s(t.refreshTxt))])])])])],{pullDownRefresh:t.pullDownRefresh,pullDownStyle:t.pullDownStyle,beforePullDown:t.beforePullDown,isPullingDown:t.isPullingDown,bubbleY:t.bubbleY,scrollPos:t.scrollPos,threshold:t.finalThreshold})],2):t._e()])},[],!1,null,null,null).exports;v.install=function(t){t.component(v.name,v)};l.default=v},7:function(t,l){t.exports=require(\"./loading\")},8:function(t,l){t.exports=require(\"better-scroll\")}});","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n","module.exports = require('./_hide');\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n  var O = Object(it);\n  return O[ITERATOR] !== undefined\n    || '@@iterator' in O\n    // eslint-disable-next-line no-prototype-builtins\n    || Iterators.hasOwnProperty(classof(O));\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  var inModule = typeof module === \"object\";\n  var runtime = global.regeneratorRuntime;\n  if (runtime) {\n    if (inModule) {\n      // If regeneratorRuntime is defined globally and we're in a module,\n      // make the exports object identical to regeneratorRuntime.\n      module.exports = runtime;\n    }\n    // Don't bother evaluating the rest of this file if the runtime was\n    // already defined globally.\n    return;\n  }\n\n  // Define the runtime globally (as expected by generated code) as either\n  // module.exports (if we're in a module) or a new, empty object.\n  runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  runtime.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  IteratorPrototype[iteratorSymbol] = function () {\n    return this;\n  };\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n  GeneratorFunctionPrototype[toStringTagSymbol] =\n    GeneratorFunction.displayName = \"GeneratorFunction\";\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      prototype[method] = function(arg) {\n        return this._invoke(method, arg);\n      };\n    });\n  }\n\n  runtime.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  runtime.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      if (!(toStringTagSymbol in genFun)) {\n        genFun[toStringTagSymbol] = \"GeneratorFunction\";\n      }\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  runtime.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return Promise.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return Promise.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration. If the Promise is rejected, however, the\n          // result for this iteration will be rejected with the same\n          // reason. Note that rejections of yielded Promises are not\n          // thrown back into the generator function, as is the case\n          // when an awaited Promise is rejected. This difference in\n          // behavior between yield and await is important, because it\n          // allows the consumer to decide what to do with the yielded\n          // rejection (swallow it and continue, manually .throw it back\n          // into the generator, abandon iteration, whatever). With\n          // await, by contrast, there is no opportunity to examine the\n          // rejection reason outside the generator function, so the\n          // only option is to throw it from the await expression, and\n          // let the generator function handle the exception.\n          result.value = unwrapped;\n          resolve(result);\n        }, reject);\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new Promise(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n    return this;\n  };\n  runtime.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList)\n    );\n\n    return runtime.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        if (delegate.iterator.return) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  Gp[toStringTagSymbol] = \"Generator\";\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  Gp[iteratorSymbol] = function() {\n    return this;\n  };\n\n  Gp.toString = function() {\n    return \"[object Generator]\";\n  };\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  runtime.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  runtime.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n})(\n  // In sloppy mode, unbound `this` refers to the global object, fallback to\n  // Function constructor if we're in global strict mode. That is sadly a form\n  // of indirect eval which violates Content Security Policy.\n  (function() { return this })() || Function(\"return this\")()\n);\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n  var f = ctx(fn, that, entries ? 2 : 1);\n  var index = 0;\n  var length, step, iterator, result;\n  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n  // fast case for arrays with default iterator\n  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n    if (result === BREAK || result === RETURN) return result;\n  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n    result = call(iterator, f, step.value, entries);\n    if (result === BREAK || result === RETURN) return result;\n  }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","module.exports = require(\"core-js/library/fn/array/is-array\");","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n  var head, last, notify;\n\n  var flush = function () {\n    var parent, fn;\n    if (isNode && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (e) {\n        if (head) notify();\n        else last = undefined;\n        throw e;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // Node.js\n  if (isNode) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n  } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n    var toggle = true;\n    var node = document.createTextNode('');\n    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    var promise = Promise.resolve(undefined);\n    notify = function () {\n      promise.then(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    notify = function () {\n      // strange IE + webpack dev server bug - use .call(global)\n      macrotask.call(global, flush);\n    };\n  }\n\n  return function (fn) {\n    var task = { fn: fn, next: undefined };\n    if (last) last.next = task;\n    if (!head) {\n      head = task;\n      notify();\n    } last = task;\n  };\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","/**\n * ===============================================================\n *  Acfun-Bridge - Javascript Library\n *\n *  Copyright (c) 2018\n *  JasonFang and other contributors in KuaiShou.\n *\n *  acfun-bridge.js 2.0.0 build at Fri Oct 09 2020 15:26:23 GMT+0800 (GMT+08:00) .\n *\n * ===============================================================\n */\n\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 21);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(2)(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(3);\nvar core = __webpack_require__(0);\nvar ctx = __webpack_require__(38);\nvar hide = __webpack_require__(40);\nvar has = __webpack_require__(10);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && has(exports, key)) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(25), __esModule: true };\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(8);\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(27);\nvar enumBugKeys = __webpack_require__(36);\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(12);\nvar defined = __webpack_require__(8);\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(28);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(41);\nvar IE8_DOM_DEFINE = __webpack_require__(42);\nvar toPrimitive = __webpack_require__(44);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(1) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(46), __esModule: true };\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(51);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\"name\":\"@ac/acfun-bridge\",\"version\":\"2.0.0\",\"description\":\"sdk for kuaishou hybrid jsbridge\",\"main\":\"./dist/@ac/acfun-bridge.js\",\"scripts\":{\"start\":\"npm run prod && NODE_ENV=dev concurrently --kill-others \\\"gulp connect\\\" \\\"npm run server\\\"\",\"server\":\"node ./build/build.js && ./node_modules/webpack-dev-server/bin/webpack-dev-server.js --config ./build/webpack.config.demo.js\",\"dev\":\"NODE_ENV=dev gulp\",\"watch\":\"NODE_ENV=dev gulp watch\",\"prod\":\"npm run dev && NODE_ENV=prod gulp\",\"build\":\"gulp build\",\"build:demo\":\"node ./build/build.js && webpack --config ./build/webpack.config.demo.js\",\"deploy\":\"sh test-deploy.sh\",\"doc\":\"./node_modules/ydoc/bin/ydoc build\",\"eslint\":\"sh eslint.sh\",\"test\":\"karma start test/karma.conf.js --single-run\"},\"repository\":{\"type\":\"git\",\"url\":\"git@git.corp.kuaishou.com:acfun-frontend/modules/acfunBridge.git\"},\"pre-commit\":[\"eslint\"],\"homepage\":\"http://git.corp.kuaishou.com/acfun-frontend/modules/acfunBridge\",\"author\":\"zhangrongmou@kuaishou.com\",\"license\":\"ISC\",\"devDependencies\":{\"@ks/eslint-config\":\"^1.0.4\",\"art-template\":\"^4.13.0\",\"art-template-loader\":\"^1.4.3\",\"babel-core\":\"^6.26.3\",\"babel-loader\":\"^7.1.5\",\"babel-plugin-transform-runtime\":\"^6.23.0\",\"babel-preset-env\":\"^1.7.0\",\"babel-runtime\":\"^6.26.0\",\"chai\":\"^4.2.0\",\"chalk\":\"^2.4.1\",\"clean-webpack-plugin\":\"^0.1.19\",\"concurrently\":\"^4.0.1\",\"cpr\":\"^3.0.1\",\"css-loader\":\"^1.0.0\",\"ghooks\":\"^2.0.4\",\"gulp\":\"^3.9.1\",\"gulp-clean\":\"^0.4.0\",\"gulp-connect\":\"^5.5.0\",\"html-webpack-plugin\":\"^3.2.0\",\"karma\":\"^3.1.1\",\"karma-chai\":\"^0.1.0\",\"karma-chrome-launcher\":\"^2.2.0\",\"karma-mocha\":\"^1.3.0\",\"karma-mocha-reporter\":\"^2.2.5\",\"karma-sourcemap-loader\":\"^0.3.7\",\"karma-webpack\":\"^3.0.5\",\"mocha\":\"^5.2.0\",\"prismjs\":\"^1.15.0\",\"qrcode\":\"^1.2.2\",\"style-loader\":\"^0.23.0\",\"through2\":\"^2.0.3\",\"uglify-es\":\"3.3.9\",\"uglifyjs-webpack-plugin\":\"^1.2.7\",\"validate-commit-msg\":\"^2.14.0\",\"webpack\":\"^3.12.0\",\"webpack-cli\":\"^3.1.0\",\"webpack-dev-server\":\"^2.11.3\",\"webpack-stream\":\"^4.0.3\",\"webpack-zepto\":\"0.0.1\",\"ydoc\":\"^3.2.6\"},\"dependencies\":{\"@ks/yoda-js-sdk\":\"^0.2.1\"}}\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.generateUUCallbackFunction = generateUUCallbackFunction;\n/**\n *\n * 生成唯一的id\n * @see https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript/2117523#2117523\n * @export\n * @returns\n */\nfunction generateUUID() {\n    var rc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n    var d = new Date().getTime();\n    if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n        d += performance.now(); // use high-precision timer if available\n    }\n    var pattern = rc ? 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' : 'xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx';\n    return pattern.replace(/[xy]/g, function (c) {\n        var r = (d + Math.random() * 16) % 16 | 0;\n        d = Math.floor(d / 16);\n        return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);\n    });\n}\n\n/**\n *\n * 生成临时唯一的方法挂接到window上，给客户端回调用\n * @name generateUUCallbackFunction\n * @private\n * @param {function} callback 回调函数，客户端方法执行完后会执行该方法\n * @returns\n */\nfunction generateUUCallbackFunction(callback) {\n    var name = 'acfun_bridge_callback_' + generateUUID(false);\n    window[name] = function (data) {\n        if (typeof data === 'string') {\n            try {\n                data = JSON.parse(data);\n            } catch (e) {\n                console.warn(e); // eslint-disable-line\n            }\n        }\n        callback && callback.call(window, data);\n    };\n    return name;\n}\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _component = __webpack_require__(54);\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _page = __webpack_require__(60);\n\nvar _page2 = _interopRequireDefault(_page);\n\nvar _system = __webpack_require__(64);\n\nvar _system2 = _interopRequireDefault(_system);\n\nvar _ui = __webpack_require__(67);\n\nvar _ui2 = _interopRequireDefault(_ui);\n\nvar _webview = __webpack_require__(70);\n\nvar _webview2 = _interopRequireDefault(_webview);\n\nvar _custom = __webpack_require__(80);\n\nvar _custom2 = _interopRequireDefault(_custom);\n\nvar _utils = __webpack_require__(87);\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n    component: _component2.default,\n    page: _page2.default,\n    system: _system2.default,\n    ui: _ui2.default,\n    webview: _webview2.default,\n    custom: _custom2.default,\n    utils: _utils2.default\n};\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.acfunBridge = undefined;\n\nvar _origin = __webpack_require__(22);\n\nvar _origin2 = _interopRequireDefault(_origin);\n\nvar _yoda = __webpack_require__(91);\n\nvar _yoda2 = _interopRequireDefault(_yoda);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar isYodaWebview = /Yoda\\/\\d+\\.\\d+/i.test(window.navigator.userAgent);\nvar isDisabledYoda = /disable_new_webview/i.test(window.navigator.userAgent);\nvar _acfunBridge = isYodaWebview && !isDisabledYoda ? new _yoda2.default() : new _origin2.default();\n\nif (window) {\n    window.acfunBridge = _acfunBridge;\n}\n\n/**\n * acfun_bridge_ready <br />\n * 使用场景：<b style=\"color: red\">window全局函数，非正常调用函数</b>。<br/>\n * 功能说明：提供acfun_bridge_ready全局函数给客户端调用。<br/>\n * 调用时间：在客户端注入全局Acfun对象之后进行调用，保证bridge初始化有Acfun可以调用。<br/>\n * 客户端调用时间：<br/>\n *  IOS: 在网页创建的时候注入和调用ready一次，网页加载完成后也会注入和调用ready一次。<br/>\n *  Android: 在webView创建后注入，然后在webview里面的页面加载完成后调用ready\n * @property window.acfun_bridge_ready\n * @category Base\n * @description\n * 如果是在pc浏览器开发阶段，需要手动调用acfun_bridge_ready()\n *\n*/\nwindow.acfun_bridge_ready = function () {\n    console.log('acfunBridge初始化完毕.');\n    if (!_acfunBridge.isReady) {\n        _acfunBridge.isReady = true;\n        _acfunBridge.init();\n    }\n};\n\n// Yoda 容器中不会再主动调用 acfun_bridge_ready 方法，需要注册到 yoda 的 ready 方法中\nif (isYodaWebview) {\n    _acfunBridge.__yoda__.ready().then(function () {\n        window.acfun_bridge_ready();\n    });\n}\n\nvar acfunBridge = exports.acfunBridge = _acfunBridge;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _stringify = __webpack_require__(23);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = __webpack_require__(6);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _assign = __webpack_require__(15);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(16);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(17);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _package = __webpack_require__(18);\n\nvar _package2 = _interopRequireDefault(_package);\n\nvar _utils = __webpack_require__(19);\n\nvar _apis = __webpack_require__(20);\n\nvar _apis2 = _interopRequireDefault(_apis);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar version = _package2.default.version || '0.0.0'; /*\n                                                     * @Author: zhangrongmou\n                                                     * @Date: 2018-11-19 18:40:43\n                                                     * @Last Modified by: zhangrongmou\n                                                     * @Last Modified time: 2019-03-27 17:22:13\n                                                     */\n\nvar acfunBridge = function () {\n    function acfunBridge(config) {\n        (0, _classCallCheck3.default)(this, acfunBridge);\n\n        this.readyList = [];\n        this.isReady = false;\n        this.globalObject = window.Acfun;\n        this.paramInterceptors = [];\n        // 加载的bridge列表\n        this.__bridge__ = [];\n        this.config = (0, _assign2.default)({\n            version: version,\n            name: 'Acfun',\n            debug: false,\n            fallbackAction: function fallbackAction() {\n                window.location.href = 'http://m.acfun.cn/app/download';\n            }\n        }, config);\n    }\n\n    /**\n     *\n     * @name 初始化sdk\n     *\n     * @description 安装api，把收集的ready进行执行\n     *\n     */\n\n\n    (0, _createClass3.default)(acfunBridge, [{\n        key: 'init',\n        value: function init() {\n\n            this.install();\n            this.readyList.forEach(function (item) {\n                if (item && Object.prototype.toString.call(item) === '[object Function]') {\n                    item();\n                } else {\n                    console.error('acfunBridge: 调用的ready必须为函数');\n                }\n            });\n        }\n\n        /**\n         *\n         * @name 安装api\n         *\n         * @description 安装native的api到前端的sdk上\n         *\n         */\n\n    }, {\n        key: 'install',\n        value: function install() {\n            var _this = this;\n\n            (0, _keys2.default)(_apis2.default).forEach(function (api) {\n                var methods = _apis2.default[api];\n                (0, _keys2.default)(methods).forEach(function (method) {\n                    _this.__bridge__.push(method);\n                    _this[method] = function (params) {\n                        console.log(method);\n                        _this.invokeNative(method, params);\n                    };\n                });\n            });\n        }\n\n        /**\n         *\n         * @name 前端调用native的统一入口\n         *\n         * @param {string} method 对应的native下的实际方法\n         *\n         * @param {Object} params 调用native方法时，需要传的参数\n         *\n         */\n\n    }, {\n        key: 'invokeNative',\n        value: function invokeNative(method, params) {\n            // 拦截并处理bridge方法入参\n            params = this.paramInterceptors.reduce(function (args, fn) {\n                return fn(method, args);\n            }, params);\n\n            params = this.formatParams(params);\n            if (!this.globalObject) {\n                console.warn('acfunBridge: 没有注入对象');\n                return;\n            }\n\n            if (this.globalObject[method]) {\n                try {\n                    this.globalObject[method](params);\n                } catch (error) {\n                    console.warn('acfunBridge: 调用出错');\n                }\n            } else {\n                console.warn('acfunBridge: 该版本客户端不支持该方法');\n                this.config.fallbackAction();\n            }\n        }\n\n        /**\n         *\n         * @name 格式化参数\n         *\n         * @description 与客户端约定固定格式，\n         *      固定回调函数有三个，\n         *      不管是需要还是不需要回调，都需要传\n         *      native会按照对应的执行状态，调用对应的方法\n         *\n         * @param {object} params\n         *\n        ```\n        // 格式例子\n        {\n            name: 'xx',\n            title: 'xxx,\n            ...(其他api)\n            success: 'acfun_bridge_callback_1',\n            fail: 'acfun_bridge_callback_2',\n            complete: 'acfun_bridge_callback_3'\n        }\n        ```\n        */\n\n    }, {\n        key: 'formatParams',\n        value: function formatParams() {\n            var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n            params.success = params.success || function () {};\n            params.fail = params.fail || function () {};\n            params.complete = params.complete || function () {};\n\n            for (var key in params) {\n                var item = params[key];\n                if (item instanceof Function) {\n                    params[key] = (0, _utils.generateUUCallbackFunction)(params[key]);\n                }\n            }\n\n            return (0, _stringify2.default)(params);\n        }\n\n        /**\n         * ready <br />\n         * 使用场景：类似jquery的ready，收集调用ready的所有fn，当bridge已经初始化完毕后进行调用。\n         * @property acfunBridge.ready\n         * @category Base\n         *\n         * @description\n         * | 传入参数 | 类型 | 说明 |\n         * | :--: | :--: | :--: |\n         * | fn | Function | 当bridge初始化完毕，执行的回调 |\n         *\n        */\n\n    }, {\n        key: 'ready',\n        value: function ready(fn) {\n            var _this2 = this;\n\n            if (!(fn instanceof Function)) {\n                console.error('ready方法传的参数必须为Function类型');\n                return;\n            }\n            if (this.isReady) {\n                fn();\n            } else {\n                this.readyList.push(function () {\n                    return fn.call(_this2, _this2);\n                });\n            }\n        }\n\n        /**\n         * 添加参数拦截器\n         * @param {string} method 需要拦截的bridge方法名\n         * @param {Function} fn 拦截处理函数，接收参数，需要返回参数\n         * @return {Function} 返回构造好的拦截器\n         */\n\n    }, {\n        key: 'addInterceptor',\n        value: function addInterceptor(method, fn) {\n            /**\n             * 方法匹配才进行拦截处理\n             * @param {string} m bridge方法名\n             * @param {Object} params bridge入参\n             * @return {Object} 处理后的bridge入参\n             */\n            var interceptor = function interceptor(m, params) {\n                return m === method ? fn(params) : params;\n            };\n\n            // 添加拦截器\n            this.paramInterceptors.push(interceptor);\n            return interceptor;\n        }\n    }]);\n    return acfunBridge;\n}();\n\nexports.default = acfunBridge;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(24), __esModule: true };\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(0);\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n  return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(26);\nmodule.exports = __webpack_require__(0).Object.keys;\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(7);\nvar $keys = __webpack_require__(9);\n\n__webpack_require__(37)('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(10);\nvar toIObject = __webpack_require__(11);\nvar arrayIndexOf = __webpack_require__(29)(false);\nvar IE_PROTO = __webpack_require__(32)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(11);\nvar toLength = __webpack_require__(30);\nvar toAbsoluteIndex = __webpack_require__(31);\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(13);\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(13);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(33)('keys');\nvar uid = __webpack_require__(35);\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(0);\nvar global = __webpack_require__(3);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __webpack_require__(34) ? 'pure' : 'global',\n  copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports) {\n\nmodule.exports = true;\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(4);\nvar core = __webpack_require__(0);\nvar fails = __webpack_require__(2);\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(39);\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(14);\nvar createDesc = __webpack_require__(45);\nmodule.exports = __webpack_require__(1) ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(5);\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(1) && !__webpack_require__(2)(function () {\n  return Object.defineProperty(__webpack_require__(43)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(5);\nvar document = __webpack_require__(3).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(5);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(47);\nmodule.exports = __webpack_require__(0).Object.assign;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(4);\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(48) });\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(9);\nvar gOPS = __webpack_require__(49);\nvar pIE = __webpack_require__(50);\nvar toObject = __webpack_require__(7);\nvar IObject = __webpack_require__(12);\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(2)(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n  } return T;\n} : $assign;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(52), __esModule: true };\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(53);\nvar $Object = __webpack_require__(0).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n  return $Object.defineProperty(it, key, desc);\n};\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(4);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(1), 'Object', { defineProperty: __webpack_require__(14).f });\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _share = __webpack_require__(55);\n\nvar _share2 = _interopRequireDefault(_share);\n\nvar _login = __webpack_require__(56);\n\nvar _login2 = _interopRequireDefault(_login);\n\nvar _logout = __webpack_require__(57);\n\nvar _logout2 = _interopRequireDefault(_logout);\n\nvar _showToast = __webpack_require__(58);\n\nvar _showToast2 = _interopRequireDefault(_showToast);\n\nvar _showAlert = __webpack_require__(59);\n\nvar _showAlert2 = _interopRequireDefault(_showAlert);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n    share: _share2.default,\n    login: _login2.default,\n    logout: _logout2.default,\n    showToast: _showToast2.default,\n    showAlert: _showAlert2.default\n};\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 分享<br />\n * 对应native接口：share<br/>\n * 支持版本：客户端5.10版本<br/>\n * 对接人： zhangrongmou\n * @method acfunBridge.share\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/share.demo\n * @demo component/share\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | param | Object | 参数 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数，默认都会执行 | X | - |\n *\n * 返回参数：\n * ```\n * {\n *     result: 1,\n *     platform: '',\n *     error_msg: '',\n * }\n * ```\n */\n\nexports.default = {\n  share: true\n};\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n/**\n * 登录<br />\n * 对应native接口：login<br/>\n * 支持版本：客户端5.10版本<br/>\n * 对接人： zhangrongmou\n * @method acfunBridge.login\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/login.demo\n * @demo component/login\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | param | Object | 登录行为所需参数 | X | {title: 登录框的title} |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数，默认都会执行 | X | - |\n *\n * 返回参数：\n * ```\n * {\n *     result: 1,\n *     error_msg: '',\n * }\n * ```\n */\n\nexports.default = {\n  login: true\n};\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n/**\n * 退出<br />\n * 对应native接口：logout<br/>\n * 支持版本：客户端5.10版本<br/>\n * 对接人： zhangrongmou\n * @method acfunBridge.logout\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/logout.demo\n * @demo component/logout\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数，默认都会执行 | X | - |\n *\n * 返回参数：\n * ```\n * {\n *     result: 1,\n *     error_msg: '',\n * }\n * ```\n */\n\nexports.default = {\n  logout: true\n};\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n/**\n * 显示 toast<br />\n * 对应native接口：showToast<br/>\n * 支持版本：客户端5.10版本<br/>\n * 对接人： zhangrongmou\n * @method acfunBridge.showToast\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/showToast.demo\n * @demo component/showToast\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | text | String | toast内容 | √ | - |\n * | type | String | toast类型（颜色） | X | - |\n *\n * 返回参数：\n * ```\n * {\n *     result: 1,\n *     error_msg: '',\n * }\n * ```\n */\n\nexports.default = {\n  showToast: true\n};\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n/**\n * 调用弹框，只显示一个按钮<br />\n * 对应native接口：showAlert<br/>\n * 支持版本：客户端5.14版本<br/>\n * 对接人： zhangrongmou\n * @method acfunBridge.showAlert\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/showAlert.demo\n * @demo component/showAlert\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | text | String | alert内容 | √ | - |\n * | btnText | String | alert按钮文字 | X | - |\n * | callback | Function | 点击完按钮的回调函数 | X | - |\n *\n * 返回参数：\n * ```\n * {\n *     result: 1,\n *     error_msg: '',\n * }\n * ```\n */\n\nexports.default = {\n  showAlert: true\n};\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _open = __webpack_require__(61);\n\nvar _open2 = _interopRequireDefault(_open);\n\nvar _setPageInfo = __webpack_require__(62);\n\nvar _setPageInfo2 = _interopRequireDefault(_setPageInfo);\n\nvar _setHorizonScrollForbid = __webpack_require__(63);\n\nvar _setHorizonScrollForbid2 = _interopRequireDefault(_setHorizonScrollForbid);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n    open: _open2.default,\n    setPageInfo: _setPageInfo2.default,\n    setHorizonScrollForbid: _setHorizonScrollForbid2.default\n};\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 打开客户端对应的页面<br />\n * 对应native接口：open<br/>\n * 支持版本：客户端5.14版本<br/>\n * 对接人： zhangrongmou<br/>\n * 相关客户端调起规则： https://wiki.corp.kuaishou.com/pages/viewpage.action?pageId=86998977\n * @method acfunBridge.open\n * @category Page\n * @version >=1.0.0\n * @example ./apis/page/open.demo\n * @demo page/open\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | id | String | id | X | - |\n * | type | Number | 前往页面的type值 |  | - |\n * | param | Object | 自定义参数 | X | 客户端6.23.1版本后支持|\n */\n\nexports.default = {\n  open: true\n};\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 页面基本信息传给客户端，分享要用<br />\n * 对应native接口：setPageInfo<br/>\n * 支持版本：客户端5.10版本<br/>\n * 对接人： zhangrongmou\n * @method acfunBridge.setPageInfo\n * @category Page\n * @version >=1.0.0\n * @example ./apis/page/setPageInfo.demo\n * @demo page/setPageInfo\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | title | String | 标题 | √ | - |\n * | desc | String | meta里的描述 | X | - |\n * | imgUrl | String | 页面封面 | X | - |\n * | url | String | 页面URL | X | - |\n * | type | String | 页面类型 | X | - |\n * | extraInfo | String | 额外参数（json字符串） | X | - |\n */\n\nexports.default = {\n  setPageInfo: true\n};\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 禁止或者允许App水平滑动<br />\n * 对应native接口：setHorizonScrollForbid<br/>\n * 支持版本：客户端6.5版本<br/>\n * 对接人： wangjinbo@kuaishou.com<br/>\n * @method acfunBridge.setHorizonScrollForbid\n * @category Page\n * @version >=1.0.0\n * @example ./apis/page/setHorizonScrollForbid.demo\n * @demo page/setHorizonScrollForbid\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | horizonForbid | boolean | 是否开启禁止水平滑动 | √ | - |\n * | success | Function | 成功执行后的回调 | X | - |\n * | fail | Function | 执行失败后的回调 | X | - |\n * | complete | Function | 完成执行(无论成功或者失败)后的回调 | X | - |\n */\n\nexports.default = {\n  setHorizonScrollForbid: true\n};\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _getClientInfo = __webpack_require__(65);\n\nvar _getClientInfo2 = _interopRequireDefault(_getClientInfo);\n\nvar _getSimInfo = __webpack_require__(66);\n\nvar _getSimInfo2 = _interopRequireDefault(_getSimInfo);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n    getClientInfo: _getClientInfo2.default,\n    getSimInfo: _getSimInfo2.default\n};\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n/**\n * 获取客户端信息<br />\n * 对应native接口：getClientInfo<br/>\n * 支持版本：客户端5.10版本<br/>\n * 对接人： zhangrongmou\n * @method acfunBridge.getClientInfo\n * @category System\n * @version >=1.0.0\n * @example ./apis/system/getClientInfo.demo\n * @demo system/getClientInfo\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | √ | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数，默认都会执行 | X | - |\n *\n * 返回参数：\n * ```\n * {\n *     result: 1,\n *     error_msg: '',\n *     data: {\n *          appVersion: '5.10',\n *     }\n * }\n * ```\n *\n * 返回参数说明：\n *\n * | 参数  | 描述 | 注明 |\n * | :--: | :--: | :--: |\n * | appVersion | 客户端版本号 | - |\n * | networkType | 网络类型 | - |\n * | manufacturer | 制造商 | - |\n * | model | 机型 | - |\n * | systemVersion | 手机系统版本 | - |\n * | locale | 本地语言 | - |\n * | screenWidth | 屏幕宽度 | - |\n * | screenHeight | 屏幕高度 | - |\n * | imei | 手机IMEI | - |\n * | mac | 手机mac地址 | - |\n *\n */\n\nexports.default = {\n  getClientInfo: true\n};\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n/**\n * 获取客户端信息<br />\n * 对应native接口：getSimInfo<br/>\n * 支持版本：客户端6.2.0版本<br/>\n * 对接人： fengfan\n * @method acfunBridge.getSimInfo\n * @category System\n * @version >=1.0.8\n * @example ./apis/system/getSimInfo.demo\n * @demo system/getSimInfo\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | √ | - |\n * | fail | Function | 失败回调函数 | X | - |\n *\n * 返回参数：\n * ```\n * {\n *     \n *     result: 1,\n *     error_msg: '',\n *     data: {\n *          simInfo: '',\n *          productType: '', \n *          subProductType: '' \n *     }\n * }\n * ```\n *\n * 返回参数说明：\n *\n * | 参数  | 描述 | 注明 |\n * | :--: | :--: | :--: |\n * | simInfo | sim卡信息 | - |\n * | productType | 要激活免流的产品大类 | - |\n * | subProductType | 激活免流的产品小类 | - |\n *\n */\n\nexports.default = {\n  getSimInfo: true\n};\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _setPageTitle = __webpack_require__(68);\n\nvar _setPageTitle2 = _interopRequireDefault(_setPageTitle);\n\nvar _setTopLeftBtn = __webpack_require__(69);\n\nvar _setTopLeftBtn2 = _interopRequireDefault(_setTopLeftBtn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n    setPageTitle: _setPageTitle2.default,\n    setTopLeftBtn: _setTopLeftBtn2.default\n};\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 设置标题<br />\n * 对应native接口：setPageTitle<br/>\n * 支持版本：客户端5.10版本<br/>\n * 对接人： zhangrongmou\n * @method acfunBridge.setPageTitle\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/setPageTitle.demo\n * @demo ui/setPageTitle\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | title | String | 标题 | √ | - |\n *\n */\n\nexports.default = {\n  setPageTitle: true\n};\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 设置左侧按钮<br />\n * 对应native接口：setTopLeftBtn<br/>\n * 支持版本：客户端5.14版本<br/>\n * 对接人： zhangrongmou\n * @method acfunBridge.setTopLeftBtn\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/setTopLeftBtn.demo\n * @demo ui/setTopLeftBtn\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | callback | Function | 点击按钮的事件 | √ | - |\n *\n */\n\nexports.default = {\n  setTopLeftBtn: true\n};\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _exitWebView = __webpack_require__(71);\n\nvar _exitWebView2 = _interopRequireDefault(_exitWebView);\n\nvar _popBack = __webpack_require__(72);\n\nvar _popBack2 = _interopRequireDefault(_popBack);\n\nvar _openNewWebView = __webpack_require__(73);\n\nvar _openNewWebView2 = _interopRequireDefault(_openNewWebView);\n\nvar _on = __webpack_require__(74);\n\nvar _on2 = _interopRequireDefault(_on);\n\nvar _emit = __webpack_require__(75);\n\nvar _emit2 = _interopRequireDefault(_emit);\n\nvar _setNavbarIconVisibility = __webpack_require__(76);\n\nvar _setNavbarIconVisibility2 = _interopRequireDefault(_setNavbarIconVisibility);\n\nvar _setNavbarIconCallback = __webpack_require__(77);\n\nvar _setNavbarIconCallback2 = _interopRequireDefault(_setNavbarIconCallback);\n\nvar _setPullDownToRefresh = __webpack_require__(78);\n\nvar _setPullDownToRefresh2 = _interopRequireDefault(_setPullDownToRefresh);\n\nvar _openPayWebView = __webpack_require__(79);\n\nvar _openPayWebView2 = _interopRequireDefault(_openPayWebView);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n    exitWebView: _exitWebView2.default,\n    popBack: _popBack2.default,\n    openNewWebView: _openNewWebView2.default,\n    on: _on2.default,\n    emit: _emit2.default,\n    setNavbarIconVisibility: _setNavbarIconVisibility2.default,\n    setNavbarIconCallback: _setNavbarIconCallback2.default,\n    setPullDownToRefresh: _setPullDownToRefresh2.default,\n    openPayWebView: _openPayWebView2.default\n};\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 退出webview<br />\n * 对应native接口：exitWebView<br/>\n * 支持版本：客户端5.10版本<br/>\n * 对接人： zhangrongmou\n * @method acfunBridge.exitWebView\n * @category WebView\n * @version >=1.0.0\n * @example ./apis/webview/exitWebView.demo\n * @demo webview/exitWebView\n * @description\n *\n */\n\nexports.default = {\n  exitWebView: true\n};\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 后退<br />\n * 如果当前是webview里的最后一页则退出webview，否则就是后退\n * 对应native接口：popBack<br/>\n * 支持版本：客户端5.10版本<br/>\n * 对接人： zhangrongmou\n * @method acfunBridge.popBack\n * @category WebView\n * @version >=1.0.0\n * @example ./apis/webview/popBack.demo\n * @demo webview/popBack\n * @description\n *\n */\n\nexports.default = {\n  popBack: true\n};\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 打开webview<br />\n * 对应native接口：openNewWebView<br/>\n * 支持版本：客户端5.14版本<br/>\n * 对接人： zhangrongmou\n * @method acfunBridge.openNewWebView\n * @category WebView\n * @version >=1.0.0\n * @example ./apis/webview/openNewWebView.demo\n * @demo webview/openNewWebView\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | url | String | 页面URL | X | - |\n * | shareHidden | Boolean | 是否隐藏分享按钮 | X | 默认不隐藏 |\n *\n */\n\nexports.default = {\n  openNewWebView: true\n};\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 注册webview相关事件<br />\n * 对应native接口：on<br/>\n * 支持版本：客户端6.1版本<br/>\n * 对接人： fengfan\n * @method acfunBridge.on\n * @category WebView\n * @version >=1.0.6\n * @example ./apis/webview/on.demo\n * @demo webview/on\n * @description\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | event | String | 事件名 | √ | - |\n * | callback | Function | 回调函数 | √ | - |\n */\n\nexports.default = {\n  on: true\n};\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 触发webview相关事件<br />\n * 对应native接口：emit<br/>\n * 支持版本：客户端6.2.0版本<br/>\n * 对接人： fengfan\n * @method acfunBridge.emit\n * @category WebView\n * @version >=1.0.8\n * @example ./apis/webview/emit.demo\n * @demo webview/emit\n * @description\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | event | String | 事件名 | √ | - |\n * | payload | Object | 事件参数 | x | - |\n * | callback | Function | 回调函数 | x | - |\n * \n * callback返回参数说明：\n *\n * | 参数  | 类型 | 描述 | 注明 |\n * | :--: | :--: | :--: | :--: |\n * | res | Boolean | 事件调用结果  | true/false |\n */\n\nexports.default = {\n  emit: true\n};\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 设置顶部导航栏图标的展示和隐藏<br />\n * 对应native接口：setNavbarIconVisibility<br/>\n * 支持版本：客户端6.11.1版本<br/>\n * 对接人： fengfan\n * @method acfunBridge.setNavbarIconVisibility\n * @category WebView\n * @version >=1.0.16\n * @example ./apis/webview/setNavbarIconVisibility.demo\n * @demo webview/setNavbarIconVisibility\n * @description\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | type | String | 图标名称 | √ | - |\n * | visible | Boolean | 展示或隐藏的开关 | √ | - |\n * \n */\n\nexports.default = {\n  setNavbarIconVisibility: true\n};\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 设置顶部导航栏图标按钮的回调函数<br />\n * 对应native接口：setNavbarIconCallback<br/>\n * 支持版本：客户端6.14版本<br/>\n * 对接人： fengfan\n * @method acfunBridge.setNavbarIconCallback\n * @category WebView\n * @version >=1.0.16\n * @example ./apis/webview/setNavbarIconCallback.demo\n * @demo webview/setNavbarIconCallback\n * @description\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | type | String | 图标名称 | √ | - |\n * | callback | Boolean | 回调函数 | √ | - |\n * \n */\n\nexports.default = {\n  setNavbarIconCallback: true\n};\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 禁止webview下拉手势<br />\n * 对应native接口：setPullDownToRefresh<br/>\n * 支持版本：客户端6.24.0版本<br/>\n * 对接人： fengfan\n * @method acfunBridge.setPullDownToRefresh\n * @category WebView\n * @version >=1.3.2\n * @example ./apis/webview/setPullDownToRefresh.demo\n * @demo webview/setPullDownToRefresh\n * @description\n *  * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | enable | Boolean | 是否开启下拉刷新 | √ | - |\n * | success | Function | 成功执行后的回调 | X | - |\n * | fail | Function | 执行失败后的回调 | X | - |\n * | complete | Function | 完成执行(无论成功或者失败)后的回调 | X | - |\n */\n\nexports.default = {\n  setPullDownToRefresh: true\n};\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 退出webview<br />\n * 对应native接口：openPayWebView<br/>\n * 支持版本：客户端6.3版本<br/>\n * 对接人： zhangrongmou\n * @method acfunBridge.openPayWebView\n * @category WebView\n * @version >=1.0.0\n * @example ./apis/webview/openPayWebView.demo\n * @demo webview/openPayWebView\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | url | String | 页面URL | √ | - |\n * | success | Function | 成功回调 | X | - |\n * | fail | Function | 失败回调 | X | - |\n *\n */\n\nexports.default = {\n  openPayWebView: true\n};\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _userRenamePage = __webpack_require__(81);\n\nvar _userRenamePage2 = _interopRequireDefault(_userRenamePage);\n\nvar _inviteFriendModal = __webpack_require__(82);\n\nvar _inviteFriendModal2 = _interopRequireDefault(_inviteFriendModal);\n\nvar _startUpload = __webpack_require__(83);\n\nvar _startUpload2 = _interopRequireDefault(_startUpload);\n\nvar _bindPhone = __webpack_require__(84);\n\nvar _bindPhone2 = _interopRequireDefault(_bindPhone);\n\nvar _startImgUpload = __webpack_require__(85);\n\nvar _startImgUpload2 = _interopRequireDefault(_startImgUpload);\n\nvar _verifyIdCard = __webpack_require__(86);\n\nvar _verifyIdCard2 = _interopRequireDefault(_verifyIdCard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n    userRenamePage: _userRenamePage2.default,\n    inviteFriendModal: _inviteFriendModal2.default,\n    startUpload: _startUpload2.default,\n    bindPhone: _bindPhone2.default,\n    startImgUpload: _startImgUpload2.default,\n    verifyIdCard: _verifyIdCard2.default\n};\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 跳转到修改用户昵称页面<br />\n * 对应native接口：userRenamePage<br/>\n * 支持版本：客户端5.16版本<br/>\n * 对接人： zhangrongmou\n * @method acfunBridge.userRenamePage\n * @category Custom\n * @version >=1.0.4\n * @example ./apis/custom/userRenamePage.demo\n * @demo custom/userRenamePage\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | renames | Number | 用户剩余的改名卡数量 |  | - |\n */\n\nexports.default = {\n  userRenamePage: true\n};\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 调起好友邀请的关注弹窗<br />\n * 对应native接口：inviteFriendModal<br/>\n * 支持版本：客户端6.6版本(仅iOS端)<br/>\n * 对接人： zhangqinyun\n * @method acfunBridge.inviteFriendModal\n * @category Custom\n * @version >=1.0.9\n * @example ./apis/custom/inviteFriendModal.demo\n * @demo custom/inviteFriendModal\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | tag | String | 用户身份的token |  | - |\n */\n\nexports.default = {\n  inviteFriendModal: true\n};\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 调用端上发起投稿的流程，可能会因为青少年模式等情况调起失败<br />\n * 对应native接口：startUpload<br/>\n * 支持版本：客户端6.15版本<br/>\n * 对接人： zhouhongxuan\n * @method acfunBridge.startUpload\n * @category Custom\n * @version >=1.0.20\n * @example ./apis/custom/startUpload.demo\n * @demo custom/startUpload\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 调起完成的回调函数 | X | - |\n * | fail | Function | 调起失败的回调函数 | X | - |\n *\n */\n\nexports.default = {\n  startUpload: true\n};\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 调起端上绑定手机号的页面<br />\n * 对应native接口：bindPhone<br/>\n * 支持版本：客户端6.17版本<br/>\n * 对接人： 张钦云\n * @method acfunBridge.bindPhone\n * @category Custom\n * @version >=1.1.0\n * @example ./apis/custom/bindPhone.demo\n * @demo custom/bindPhone\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 调起完成的回调函数 | X | - |\n * | fail | Function | 调起失败的回调函数 | X | - |\n *\n */\n\nexports.default = {\n  bindPhone: true\n};\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 调用端上上传图片sdk，传入可选择的图片数量，端内返回相应的图片地址<br />\n * 对应native接口：startImgUpload<br/>\n * 支持版本：客户端6.17版本<br/>\n * 对接人： 张钦云\n * @method acfunBridge.startImgUpload\n * @category Custom\n * @version >=1.1.0\n * @example ./apis/custom/startImgUpload.demo\n * @demo custom/startImgUpload\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | imgCount | Number | 用户可选择的图片数量 |  | - |\n * | success | Function | 调起完成的回调函数 | X | - |\n * | fail | Function | 调起失败的回调函数 | X | - |\n *\n * 返回参数：\n * ```\n * {\n *     result: 1,\n *     error_msg: '',\n *     data: {\n *          imgUrls: ['']\n *     }\n * }\n * ```\n */\n\nexports.default = {\n  startImgUpload: true\n};\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 调起端上用户实名认证的页面<br />\n * 对应native接口：verifyIdCard<br/>\n * 支持版本：客户端6.17版本<br/>\n * 对接人： 张钦云\n * @method acfunBridge.verifyIdCard\n * @category Custom\n * @version >=1.1.0\n * @example ./apis/custom/verifyIdCard.demo\n * @demo custom/verifyIdCard\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 调起完成的回调函数 | X | - |\n * | fail | Function | 调起失败的回调函数 | X | - |\n *\n */\n\nexports.default = {\n  verifyIdCard: true\n};\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _downloadApp = __webpack_require__(88);\n\nvar _downloadApp2 = _interopRequireDefault(_downloadApp);\n\nvar _openApp = __webpack_require__(89);\n\nvar _openApp2 = _interopRequireDefault(_openApp);\n\nvar _hasInstalledApp = __webpack_require__(90);\n\nvar _hasInstalledApp2 = _interopRequireDefault(_hasInstalledApp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n    openApp: _openApp2.default,\n    downloadApp: _downloadApp2.default,\n    hasInstalledApp: _hasInstalledApp2.default\n};\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 下载应用<br />\n * 对应native接口：<br/>\n * 支持版本：客户端6.19.0版本（android 会下载apk包，iOS会调起苹果商店）<br/>\n * 对接人：zhouhongxuan\n * @method acfunBridge.downloadApp\n * @category Utils\n * @version >=1.2.0\n * @example ./apis/utils/downloadApp.demo\n * @demo utils/downloadApp\n * @description\n * 未下载时调用，客户端会进行下载\n * 已下载未安装时调用，客户端会通知已下载完毕，引导安装\n * 已安装时调用，客户端会直接调起应用\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | url | String | 下载地址 | √ | android为apk地址，iOS为应用商店里的id |\n * | identifier | String | 下载包标识 | X | android必填 |\n * | name | String | 应用文件名称 | X | android必填 |\n * | txgame | Object | 用于iOS染色上报 | X | 仅iOS存在 |\n * | txgame.sceneId | String | 场景编号，游戏中心为 116 | X | 仅iOS存在 |\n * | txgame.bundleId | String | 游戏的 bundle id | X | 仅iOS存在 |\n * | txgame.gameId | String | 用于上报的快手游戏 id | X | 仅iOS存在 |\n * | txgame.appId | String | 用于上报的应用 id | X | 仅iOS存在 |\n * | complete | Function | 回调函数，默认都会执行 | X | - |\n */\n\nexports.default = {\n  downloadApp: true\n};\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 打开应用<br />\n * 对应native接口：<br/>\n * 支持版本：客户端6.19.0版本<br/>\n * 对接人：zhouhongxuan\n * @method acfunBridge.openApp\n * @category Utils\n * @version >=1.2.0\n * @example ./apis/utils/openApp.demo\n * @demo utils/openApp\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | identifier | String | 应用标识 | √ | iOS使用schema，android是否包名 |\n * | complete | Function | 回调函数，默认都会执行 | X | - |\n */\n\nexports.default = {\n  openApp: true\n};\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * 检查是否安装某个客户端<br />\n * 对应native接口：<br/>\n * 支持版本：客户端6.19.0版本<br/>\n * 对接人：zhouhongxuan\n * @method acfunBridge.hasInstalledApp\n * @category Utils\n * @version >=1.2.0\n * @example ./apis/utils/hasInstalledApp.demo\n * @demo utils/hasInstalledApp\n * @description\n *\n * 调用参数：\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | identifier | String | 应用标识 | √ | Android 填包名，iOS 填 scheme |\n * | success | Function | 成功回调函数 | X | - |\n * | complete | Function | 回调函数，默认都会执行 | X | - |\n * \n * 回调参数对象中包含 result 键值，result 为 1 表示已安装，为 0 表示未安装，具体可参见 demo\n */\n\nexports.default = {\n  hasInstalledApp: true\n};\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _keys = __webpack_require__(6);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _assign = __webpack_require__(15);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(16);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(17);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _yodaJsSdk = __webpack_require__(92);\n\nvar _yodaJsSdk2 = _interopRequireDefault(_yodaJsSdk);\n\nvar _package = __webpack_require__(18);\n\nvar _package2 = _interopRequireDefault(_package);\n\nvar _utils = __webpack_require__(19);\n\nvar _apis = __webpack_require__(20);\n\nvar _apis2 = _interopRequireDefault(_apis);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @file yoda bridge 代理\n * @author zhouhongxuan\n */\n\nvar VERSION = _package2.default.version || '0.0.0';\nvar NAMESPACE = 'Acfun';\n\nvar acfunBridge = function () {\n    function acfunBridge(config) {\n        (0, _classCallCheck3.default)(this, acfunBridge);\n\n        this.isReady = false;\n        this.__yoda__ = _yodaJsSdk2.default;\n        this.config = (0, _assign2.default)({\n            version: VERSION,\n            yodaVersion: _yodaJsSdk2.default.version,\n            name: 'Acfun',\n            debug: false,\n            fallbackAction: function fallbackAction() {\n                window.location.href = 'http://m.acfun.cn/app/download';\n            }\n        }, config);\n    }\n\n    /**\n     *\n     * @name 初始化sdk\n     *\n     * @description 安装api，把收集的ready进行执行\n     *\n     */\n\n\n    (0, _createClass3.default)(acfunBridge, [{\n        key: 'init',\n        value: function init() {\n            var _this = this;\n\n            (0, _keys2.default)(_apis2.default).forEach(function (api) {\n                var methods = _apis2.default[api];\n                (0, _keys2.default)(methods).forEach(function (method) {\n                    // 注册 yoda 自定义方法\n                    _yodaJsSdk2.default.register({\n                        namespace: NAMESPACE,\n                        name: method\n                    });\n\n                    _this[method] = function (params) {\n                        console.log(method);\n                        return _this.invokeNative(method, params);\n                    };\n                });\n            });\n        }\n\n        /**\n         *\n         * @name 前端调用native的统一入口\n         *\n         * @param {string} method 对应的native下的实际方法\n         *\n         * @param {Object} params 调用native方法时，需要传的参数\n         *\n         */\n\n    }, {\n        key: 'invokeNative',\n        value: function invokeNative(method, params) {\n            if (!this.__yoda__) {\n                console.warn('yoda 对象还未注入');\n                return;\n            }\n\n            if (!this.__yoda__[NAMESPACE] || !this.__yoda__[NAMESPACE][method]) {\n                console.warn('acfun yoda bridge: 该版本客户端不支持该方法');\n                this.config.fallbackAction();\n                return;\n            }\n\n            params = this.formatParams(params);\n            return this.__yoda__[NAMESPACE][method](params);\n\n            // // tool.canIUse 是检测 某bridge 是否可用\n            // yoda.tool\n            //     .canIUse({ namespace: NAMESPACE, name: method })\n            //     .then(({ result, canUse }) => {\n            //         if (result !== 1 || !canUse) {\n            //             console.warn('acfun yoda bridge: 该版本客户端不支持该方法');\n            //             this.config.fallbackAction();\n            //             return;\n            //         }\n\n            //         return yoda.AcFun[method](params);\n            //     })\n            //     .catch(err => console.warn('acfun yoda bridge: 调用出错', err));\n        }\n\n        /**\n         *\n         * @name 格式化参数\n         *\n         * @description 与客户端约定固定格式，\n         *      固定回调函数有三个，\n         *      不管是需要还是不需要回调，都需要传\n         *      native会按照对应的执行状态，调用对应的方法\n         *\n         * @param {object} params\n         *\n        ```\n        // 格式例子\n        {\n            name: 'xx',\n            title: 'xxx,\n            ...(其他api)\n            success: 'acfun_bridge_callback_1',\n            fail: 'acfun_bridge_callback_2',\n            complete: 'acfun_bridge_callback_3'\n        }\n        ```\n        */\n\n    }, {\n        key: 'formatParams',\n        value: function formatParams() {\n            var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n            params.success = params.success || function () {};\n            params.fail = params.fail || function () {};\n            params.complete = params.complete || function () {};\n\n            for (var key in params) {\n                var item = params[key];\n                if (item instanceof Function) {\n                    params[key] = (0, _utils.generateUUCallbackFunction)(params[key]);\n                }\n            }\n\n            return params;\n            // return JSON.stringify(params);\n        }\n\n        /**\n         * ready <br />\n         * 使用场景：类似jquery的ready，收集调用ready的所有fn，当bridge已经初始化完毕后进行调用。\n         * @property acfunBridge.ready\n         * @category Base\n         *\n         * @description\n         * | 传入参数 | 类型 | 说明 |\n         * | :--: | :--: | :--: |\n         * | fn | Function | 当bridge初始化完毕，执行的回调 |\n         *\n        */\n\n    }, {\n        key: 'ready',\n        value: function ready(fn) {\n            if (!(fn instanceof Function)) {\n                console.error('ready方法传的参数必须为Function类型');\n                return;\n            }\n\n            _yodaJsSdk2.default.ready().then(function () {\n                return fn();\n            });\n        }\n    }]);\n    return acfunBridge;\n}();\n\nexports.default = acfunBridge;\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*!\n * Yoda.js v0.2.1\n * (c) 2019-present By Kuaishou\n * Released under the ISC License.\n */\n\n\nvar _readyResolve;\n\nvar _readyPromise = new Promise(function (resolve) {\n  _readyResolve = resolve;\n});\n\nfunction ready(callback) {\n  if (callback) {\n    _readyPromise.then(callback);\n  }\n\n  return _readyPromise;\n}\n\n/**\n * 注册 api\n * @param {object} obj\n *              namespace      命名空间\n *              name    api名\n *              before  format 请求参数\n *              after   format 返回值\n */\nfunction register(config) {\n  var _this = this;\n\n  if (!(config && config.namespace && config.name)) {\n    throw new Error('register 参数： {namespace, name}');\n  }\n\n  var namespace = this[config.namespace];\n\n  if (!namespace) {\n    namespace = this[config.namespace] = {};\n  } // 可能是以下几种情况： (), (params), (params, option), (params, callback), (params, option, callback)\n\n\n  namespace[config.name] = function (params, option, callback) {\n    params = params || {};\n\n    if (!callback && typeof option === 'function') {\n      callback = option;\n      option = null;\n    }\n\n    option = option || {};\n\n    callback = callback || function () {};\n\n    if (config.before) {\n      // before可能会报错 直接抛出异常\n      params = config.before(params);\n    }\n\n    var callbackId = ++_this._callbackId;\n    var returnPromise;\n    var invokeCallback;\n\n    if (config.multiCallback || option.multiCallback) {\n      invokeCallback = callback;\n    } else {\n      returnPromise = new Promise(function (resolve) {\n        return invokeCallback = resolve;\n      });\n      returnPromise.then(function () {\n        delete _this._callbacks[callbackId];\n      });\n      returnPromise.then(callback);\n    }\n\n    if (config.after) {\n      var originInvokeCallback = invokeCallback;\n\n      invokeCallback = function invokeCallback(ret) {\n        return originInvokeCallback(config.after(ret));\n      };\n    }\n\n    _this._callbacks[callbackId] = invokeCallback;\n\n    try {\n      _this.invoke({\n        namespace: config.namespace,\n        name: config.name,\n        params: params,\n        callbackId: callbackId\n      });\n    } catch (e) {\n      invokeCallback({\n        // 桥调用异常\n        result: 125014,\n        message: e.message\n      });\n    }\n\n    return returnPromise;\n  };\n}\n\n/**\n *\n * @param {string} namespace\n * @param {string} name 接口名\n * @param {object} params 参数\n * @param {function} callback 回调函数\n */\nfunction invoke(_ref) {\n  var namespace = _ref.namespace,\n      name = _ref.name,\n      params = _ref.params,\n      callbackId = _ref.callbackId;\n\n  // callbackId 约定为string\n  window.__yodaBridge__.invoke(namespace, name, JSON.stringify(params), '' + callbackId);\n}\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nvar baseApis = [{\n  namespace: 'system',\n  name: 'getDeviceInfo'\n}, {\n  namespace: 'system',\n  name: 'getAppInfo'\n}, {\n  namespace: 'system',\n  name: 'getNetworkType'\n}, {\n  namespace: 'webview',\n  name: 'open'\n}, {\n  namespace: 'webview',\n  name: 'getLaunchParams'\n}, {\n  namespace: 'webview',\n  name: 'close'\n}, {\n  namespace: 'webview',\n  name: 'backOrClose'\n}, {\n  namespace: 'tool',\n  name: 'canIUse'\n}, {\n  namespace: 'tool',\n  name: 'checkAppInstalled'\n}, {\n  namespace: 'tool',\n  name: 'launchApp'\n}, {\n  namespace: 'ui',\n  name: 'setTopBarStyle'\n}, {\n  namespace: 'ui',\n  name: 'setTitle'\n}, {\n  namespace: 'ui',\n  name: 'setTopBarButton'\n}, {\n  namespace: 'ui',\n  name: 'removeTopBarButton'\n}, {\n  namespace: 'ui',\n  name: 'setSlideBackBehavior'\n}, {\n  namespace: 'ui',\n  name: 'setPhysicalBackButtonBehavior'\n}, {\n  namespace: 'ui',\n  name: 'showLoading'\n}, {\n  namespace: 'ui',\n  name: 'hideLoading'\n}, {\n  namespace: 'ui',\n  name: 'showToast'\n}, {\n  namespace: 'ui',\n  name: 'showDialog'\n}, {\n  namespace: 'event',\n  name: 'addEventListener'\n}, {\n  namespace: 'event',\n  name: 'removeEventListener'\n}, {\n  namespace: 'event',\n  name: 'dispatchEvent'\n}];\nvar isAndroid = navigator.userAgent.indexOf(' Android ') > -1;\nvar overWriteApis = {\n  'tool.checkAppInstalled': {\n    before: function before(params) {\n      return {\n        identifier: params[isAndroid ? 'android' : 'ios']\n      };\n    }\n  }\n};\n\nfunction addEventListener(type, listener, callback) {\n  if (listener.__yodaCallbackId__) {\n    throw new Error('addEventListener 的 listener 已经被绑定过了');\n  }\n\n  this._callbackId++;\n  this._callbacks[this._callbackId] = listener;\n  var eventSet = this._eventListeners[type];\n\n  if (!eventSet) {\n    eventSet = this._eventListeners[type] = {};\n  }\n\n  eventSet[this._callbackId] = true;\n  listener.__yodaCallbackId__ = '' + this._callbackId;\n  return this.event._addEventListener({\n    type: type,\n    listener: listener.__yodaCallbackId__\n  }, callback);\n} // 不传 listener 时，需要移除该 type 下的所有 listener\n\n\nfunction removeEventListener(type, listener, callback) {\n  var _this = this;\n\n  var listenerId;\n  var eventSet = this._eventListeners[type];\n\n  if (listener) {\n    listenerId = listener.__yodaCallbackId__;\n\n    if (!(listenerId && eventSet && eventSet[listenerId])) {\n      // 已经被删除（可能是批量删除） 不需要调用客户端 直接返回成功\n      var resPromise = Promise.resolve({\n        result: 1\n      });\n      callback && resPromise.then(callback);\n      return resPromise;\n    }\n  }\n\n  var promise = this.event._removeEventListener({\n    type: type,\n    listener: listenerId\n  }, callback); // bridge 成功时清除回调\n\n\n  promise.then(function (ret) {\n    // 约定 客户端没有找到对应的 listenerId 也返回 result: 1\n    // 约定 result 不为1的时候不删\n    if (ret.result === 1) {\n      if (listener) {\n        delete eventSet[listenerId];\n        delete listener.__yodaCallbackId__;\n        delete _this._callbacks[listenerId];\n      } else {\n        // 不传 listener 时，需要移除该 name 下的所有 listener\n        if (eventSet) {\n          delete _this._eventListeners[name];\n\n          for (var key in eventSet) {\n            delete _this._callbacks[key].__yodaCallbackId__;\n            delete _this._callbacks[key];\n          }\n        }\n      }\n    }\n  });\n  return promise;\n}\n\nfunction initEvent(yoda) {\n  if (yoda.event.addEventListener) {\n    yoda.event._addEventListener = yoda.event.addEventListener;\n    yoda.event.addEventListener = addEventListener.bind(yoda);\n  }\n\n  if (yoda.event.removeEventListener) {\n    yoda.event._removeEventListener = yoda.event.removeEventListener;\n    yoda.event.removeEventListener = removeEventListener.bind(yoda);\n  }\n}\n\nfunction init() {\n  var yoda = this;\n\n  var already = function already() {\n    yoda.register({\n      namespace: 'tool',\n      name: 'getApiList'\n    });\n    yoda.tool.getApiList({}, function (_ref) {\n      var result = _ref.result,\n          apiList = _ref.apiList;\n\n      // 方法不存在时使用兜底api\n      if (result !== 1) {\n        apiList = baseApis;\n      }\n\n      for (var l = apiList.length; l--;) {\n        var api = apiList[l]; // 某些方法需要添加 before 或者 after 等\n\n        var overWriteApi = overWriteApis[api.namespace + '.' + api.name];\n\n        if (overWriteApi) {\n          api = _objectSpread2({}, api, {}, overWriteApi);\n        }\n\n        yoda.register(api);\n      }\n\n      initEvent(yoda); // 触发 yoda.ready\n\n      yoda._readyResolve();\n    });\n  }; // 对已经注入bridge的 直接ready\n\n\n  if (window.__yodaBridge__) {\n    already();\n  } else {\n    window.__yodaBridgeReady__ = already;\n  }\n}\n\n// 准备aop插件系统\nfunction setupPlugin(yoda, config) {\n  yoda._plugins = [];\n\n  var _loop = function _loop(name) {\n    var realFn = config[name];\n    var surfix = name[0].toUpperCase() + name.slice(1);\n    var beforeName = 'before' + surfix;\n    var afterName = 'after' + surfix;\n\n    yoda[name] = function (params) {\n      var plugins = yoda._plugins;\n      var length = plugins.length;\n      var index = -1;\n\n      var next = function next() {\n        while (++index < length) {\n          var fn = plugins[index][beforeName];\n\n          if (typeof fn === 'function') {\n            var _ret = function () {\n              var called = void 0;\n              fn.call(yoda, params, function () {\n                if (!called) {\n                  called = true;\n                  next();\n                }\n              });\n              return {\n                v: void 0\n              };\n            }();\n\n            if (_typeof(_ret) === \"object\") return _ret.v;\n          }\n        }\n\n        realFn.call(yoda, params);\n\n        for (var i = 0; i < length; i++) {\n          var _fn = plugins[i][afterName];\n\n          if (typeof _fn === 'function') {\n            _fn.call(yoda, params);\n          }\n        }\n      };\n\n      next();\n    };\n  };\n\n  for (var name in config) {\n    _loop(name);\n  }\n\n  return function plugin(config) {\n    // config 可以是 class 或者 对象\n    if (typeof config === 'function') {\n      config = new config(yoda);\n    }\n\n    yoda._plugins.push(config);\n  };\n}\n\nfunction callbackHandler (_ref) {\n  var id = _ref.id,\n      params = _ref.params;\n  var callback = this._callbacks[id];\n\n  if (callback) {\n    callback(params);\n  } // TODO 回调不存在 上报\n  // TODO result 不为1 上报\n\n}\n\n// 与客户端约定的接口描述\nvar yoda = {\n  version: '0.2.1',\n  isInYoda: !!window.__yodaBridge__,\n  // 自增回调ID\n  _callbackId: 1,\n\n  /**\n   * 存放着回调函数\n   *  {\n   *      1: function(){}\n   *  }\n   */\n  _callbacks: {},\n\n  /**\n   * 存放着事件回调\n   * {\n   *      resume: {\n   *          45: true\n   *      }\n   * }\n   */\n  _eventListeners: {},\n  // ready 的 promise 对象\n  _readyPromise: _readyPromise,\n  // ready 的 promise 的 resolve 方法\n  _readyResolve: _readyResolve,\n  // ready 方法\n  ready: ready\n}; // 准备插件系统\n\nyoda.plugin = setupPlugin(yoda, {\n  register: register,\n  invoke: invoke,\n  callbackHandler: callbackHandler,\n  init: init\n}); // 用于接收客户端回调\n\nwindow.__yodaBridgeCallback__ = function (id, params) {\n  yoda.callbackHandler({\n    id: id,\n    params: params\n  });\n}; // 下一个 event loop 再初始化, 为了可以改写 init 方法\n\n\nsetTimeout(function () {\n  return yoda.init();\n});\n\nmodule.exports = yoda;\n\n\n/***/ })\n/******/ ]);\n","module.exports = true;\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","module.exports = require(\"core-js/library/fn/is-iterable\");","exports.f = require('./_wks');\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","module.exports=function(t){var n={};function e(o){if(n[o])return n[o].exports;var i=n[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,e),i.l=!0,i.exports}return e.m=t,e.c=n,e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:o})},e.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},e.t=function(t,n){if(1&n&&(t=e(t)),8&n)return t;if(4&n&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(e.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&n&&\"string\"!=typeof t)for(var i in t)e.d(o,i,function(n){return t[n]}.bind(null,i));return o},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.p=\"/dist/\",e(e.s=47)}({0:function(t,n,e){\"use strict\";e.d(n,\"a\",function(){return o});var o=\"sp\"},1:function(t,n,e){\"use strict\";function o(t,n,e,o,i,s,r,a){var c,u=\"function\"==typeof t?t.options:t;if(n&&(u.render=n,u.staticRenderFns=e,u._compiled=!0),o&&(u.functional=!0),s&&(u._scopeId=\"data-v-\"+s),r?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(r)},u._ssrRegister=c):i&&(c=a?function(){i.call(this,this.$root.$options.shadowRoot)}:i),c)if(u.functional){u._injectStyles=c;var d=u.render;u.render=function(t,n){return c.call(n),d(t,n)}}else{var l=u.beforeCreate;u.beforeCreate=l?[].concat(l,c):[c]}return{exports:t,options:u}}e.d(n,\"a\",function(){return o})},10:function(t,n){t.exports=require(\"./icon\")},2:function(t,n){t.exports=require(\"vue\")},3:function(t,n){t.exports=require(\"./popup\")},47:function(t,n,e){\"use strict\";e.r(n);var o,i=e(2),s=e.n(i),r=e(0),a=e(3),c=e.n(a),u=e(10),d=e.n(u),l=r.a+\"-toast\",f={name:l,components:(o={},o[c.a.name]=c.a,o[d.a.name]=d.a,o),props:{icon:{type:String,default:\"\"},status:{type:String,default:\"info\"},content:{type:[String,Number],default:\"\"},duration:{type:Number,default:0},showMask:{type:Boolean,default:!1},showIcon:{type:Boolean,default:!0},transition:{type:String,default:\"fade-grow\"}},data:function(){return{visible:!0}},mounted:function(){this.$_update()},updated:function(){this.$_update()},beforeDestroy:function(){this.duration&&clearTimeout(this.$_timer)},beforeCreate:function(){this.className=l},methods:{$_update:function(){var t=this;clearTimeout(this.$_timer),this.visible&&this.duration&&(this.$_timer=setTimeout(function(){t.hide()},this.duration))},$_onHide:function(){this.$emit(\"hide\")},hide:function(){this.visible=!1}},computed:{isShowIcon:function(){return!!this.showIcon&&(!(String(this.content).length>7)&&!!this.icon)},classes:function(){var t,n=this.className,e=this.status,o=this.isShowIcon;return[n,(t={},t[\"is-\"+e]=e,t[\"is-loading-icon\"]=\"smooth-spinner\"===this.icon,t[\"is-show-icon\"]=o,t)]}}},p=e(1),v=Object(p.a)(f,function(){var t=this,n=t.$createElement,e=t._self._c||n;return e(\"div\",{class:t.classes},[e(\"sp-popup\",{attrs:{\"show-mask\":t.showMask,\"mask-closeable\":!1,\"disable-scroll\":!0,transition:t.transition,position:\"center\"},on:{hide:t.$_onHide},model:{value:t.visible,callback:function(n){t.visible=n},expression:\"visible\"}},[e(\"div\",{class:t.className+\"__content\"},[t.icon&&t.isShowIcon?e(\"sp-icon\",{class:t.className+\"__icon\",attrs:{name:t.icon,size:\"md\"}}):t._e(),t._v(\" \"),e(\"p\",{class:t.className+\"__text\"},[t._v(\"\\n                \"+t._s(t.content)+\"\\n            \")])],1)])],1)},[],!1,null,null,null).exports,h=s.a.extend(v);function m(t){var n=t.content,e=void 0===n?\"\":n,o=t.icon,i=void 0===o?\"\":o,s=t.status,r=void 0===s?\"info\":s,a=t.duration,c=void 0===a?2e3:a,u=t.showMask,d=void 0!==u&&u,l=t.showIcon,f=void 0===l||l,p=t.parentNode,v=void 0===p?document&&document.body:p,_=m._instance;return _||(_=m._instance=new h({propsData:{content:e,icon:i,status:r,duration:c,showMask:d}}).$mount(),v.appendChild(_.$el)),_.content=e,_.icon=i,_.status=r,_.duration=c,_.showMask=d,_.showIcon=f,_.visible=!0,_}m._instance=null,m.hide=function(){m._instance instanceof h&&m._instance.visible&&m._instance.hide()},m.info=function(t,n,e,o,i){return void 0===t&&(t=\"\"),void 0===n&&(n=2e3),void 0===e&&(e=!1),void 0===o&&(o=!0),void 0===i&&(i=document&&document.body),m({content:t,icon:\"\",status:\"info\",duration:n,showMask:e,showIcon:o,parentNode:i})},m.success=function(t,n,e,o,i){return void 0===t&&(t=\"\"),void 0===n&&(n=2e3),void 0===e&&(e=!1),void 0===o&&(o=!0),void 0===i&&(i=document&&document.body),m({content:t,icon:\"tick-success\",status:\"success\",duration:n,showMask:e,showIcon:o,parentNode:i})},m.error=function(t,n,e,o,i){return void 0===t&&(t=\"\"),void 0===n&&(n=2e3),void 0===e&&(e=!1),void 0===o&&(o=!0),void 0===i&&(i=document&&document.body),m({content:t,icon:\"exclamation\",status:\"error\",duration:n,showMask:e,showIcon:o,parentNode:i})},m.warn=function(t,n,e,o,i){return void 0===t&&(t=\"\"),void 0===n&&(n=2e3),void 0===e&&(e=!1),void 0===o&&(o=!0),void 0===i&&(i=document&&document.body),m({content:t,icon:\"exclamation\",status:\"warn\",duration:n,showMask:e,showIcon:o,parentNode:i})},m.loading=function(t,n,e,o,i){return void 0===t&&(t=\"正在加载\"),void 0===n&&(n=0),void 0===e&&(e=!0),void 0===o&&(o=!0),void 0===i&&(i=document&&document.body),m({content:t,icon:\"smooth-spinner\",status:\"loading\",duration:n,showMask:e,showIcon:o,parentNode:i})};n.default=m}});","require('../../modules/es6.array.is-array');\nmodule.exports = require('../../modules/_core').Array.isArray;\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n"],"sourceRoot":""}