{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/underscore/modules/_setup.js","webpack:///external \"window.jQuery\"","webpack:///./node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack:///./public/js/shouyou/widgets/gameInfoSection/index.js","webpack:///./public/js/shouyou/widgets/gameInfoSection/giftButton.handlebars","webpack:///./node_modules/@173/173js/lib/ui/clickOutside.js","webpack:///./public/js/shouyou/widgets/gameInfoSection/channelDl.handlebars","webpack:///./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js","webpack:///(webpack)/buildin/global.js","webpack:///./public/js/widgets/ping.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack:///./public/js/shouyou/review/index.entry.js","webpack:///./public/js/shouyou/review/widgets/shortVideo.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack:///./node_modules/@173/173js/lib/ui/form.js","webpack:///./public/js/widgets/ValidateForm/index.js","webpack:///./public/js/apis/ajaxEngageCurrentGame.js","webpack:///./public/js/game-info/widgets/openAlert.js","webpack:///./public/js/ui/enableDialog/index.js","webpack:///./node_modules/@173/173js/lib/ui/preventEmptyHrefClick.js","webpack:///./node_modules/handlebars/runtime.js","webpack:///./public/js/widgets/getDownloadUrls.js","webpack:///./public/js/widgets/md5.js","webpack:///./public/js/ui/Overlay/index.js","webpack:///./public/js/shouyou/widgets/setupHandleAnchorLinkClicked.js","webpack:///./public/js/widgets/Video/index.js","webpack:///./public/js/widgets/requireLogin.js","webpack:///./node_modules/underscore/modules/restArguments.js","webpack:///./node_modules/underscore/modules/isObject.js","webpack:///./node_modules/underscore/modules/isNull.js","webpack:///./node_modules/underscore/modules/isUndefined.js","webpack:///./node_modules/underscore/modules/isBoolean.js","webpack:///./node_modules/underscore/modules/isElement.js","webpack:///./node_modules/underscore/modules/_tagTester.js","webpack:///./node_modules/underscore/modules/isString.js","webpack:///./node_modules/underscore/modules/isNumber.js","webpack:///./node_modules/underscore/modules/isDate.js","webpack:///./node_modules/underscore/modules/isRegExp.js","webpack:///./node_modules/underscore/modules/isError.js","webpack:///./node_modules/underscore/modules/isSymbol.js","webpack:///./node_modules/underscore/modules/isArrayBuffer.js","webpack:///./node_modules/underscore/modules/isFunction.js","webpack:///./node_modules/underscore/modules/_hasObjectTag.js","webpack:///./node_modules/underscore/modules/_stringTagBug.js","webpack:///./node_modules/underscore/modules/isDataView.js","webpack:///./node_modules/underscore/modules/isArray.js","webpack:///./node_modules/underscore/modules/_has.js","webpack:///./node_modules/underscore/modules/isArguments.js","webpack:///./node_modules/underscore/modules/isFinite.js","webpack:///./node_modules/underscore/modules/isNaN.js","webpack:///./node_modules/underscore/modules/constant.js","webpack:///./node_modules/underscore/modules/_createSizePropertyCheck.js","webpack:///./node_modules/underscore/modules/_shallowProperty.js","webpack:///./node_modules/underscore/modules/_getByteLength.js","webpack:///./node_modules/underscore/modules/_isBufferLike.js","webpack:///./node_modules/underscore/modules/isTypedArray.js","webpack:///./node_modules/underscore/modules/_getLength.js","webpack:///./node_modules/underscore/modules/_collectNonEnumProps.js","webpack:///./node_modules/underscore/modules/keys.js","webpack:///./node_modules/underscore/modules/isEmpty.js","webpack:///./node_modules/underscore/modules/isMatch.js","webpack:///./node_modules/underscore/modules/underscore.js","webpack:///./node_modules/underscore/modules/_toBufferView.js","webpack:///./node_modules/underscore/modules/isEqual.js","webpack:///./node_modules/underscore/modules/allKeys.js","webpack:///./node_modules/underscore/modules/_methodFingerprint.js","webpack:///./node_modules/underscore/modules/isMap.js","webpack:///./node_modules/underscore/modules/isWeakMap.js","webpack:///./node_modules/underscore/modules/isSet.js","webpack:///./node_modules/underscore/modules/isWeakSet.js","webpack:///./node_modules/underscore/modules/values.js","webpack:///./node_modules/underscore/modules/pairs.js","webpack:///./node_modules/underscore/modules/invert.js","webpack:///./node_modules/underscore/modules/functions.js","webpack:///./node_modules/underscore/modules/_createAssigner.js","webpack:///./node_modules/underscore/modules/extend.js","webpack:///./node_modules/underscore/modules/extendOwn.js","webpack:///./node_modules/underscore/modules/defaults.js","webpack:///./node_modules/underscore/modules/_baseCreate.js","webpack:///./node_modules/underscore/modules/create.js","webpack:///./node_modules/underscore/modules/clone.js","webpack:///./node_modules/underscore/modules/tap.js","webpack:///./node_modules/underscore/modules/toPath.js","webpack:///./node_modules/underscore/modules/_toPath.js","webpack:///./node_modules/underscore/modules/_deepGet.js","webpack:///./node_modules/underscore/modules/get.js","webpack:///./node_modules/underscore/modules/has.js","webpack:///./node_modules/underscore/modules/identity.js","webpack:///./node_modules/underscore/modules/matcher.js","webpack:///./node_modules/underscore/modules/property.js","webpack:///./node_modules/underscore/modules/_optimizeCb.js","webpack:///./node_modules/underscore/modules/_baseIteratee.js","webpack:///./node_modules/underscore/modules/iteratee.js","webpack:///./node_modules/underscore/modules/_cb.js","webpack:///./node_modules/underscore/modules/mapObject.js","webpack:///./node_modules/underscore/modules/noop.js","webpack:///./node_modules/underscore/modules/propertyOf.js","webpack:///./node_modules/underscore/modules/times.js","webpack:///./node_modules/underscore/modules/random.js","webpack:///./node_modules/underscore/modules/now.js","webpack:///./node_modules/underscore/modules/_createEscaper.js","webpack:///./node_modules/underscore/modules/_escapeMap.js","webpack:///./node_modules/underscore/modules/escape.js","webpack:///./node_modules/underscore/modules/unescape.js","webpack:///./node_modules/underscore/modules/_unescapeMap.js","webpack:///./node_modules/underscore/modules/templateSettings.js","webpack:///./node_modules/underscore/modules/template.js","webpack:///./node_modules/underscore/modules/result.js","webpack:///./node_modules/underscore/modules/uniqueId.js","webpack:///./node_modules/underscore/modules/chain.js","webpack:///./node_modules/underscore/modules/_executeBound.js","webpack:///./node_modules/underscore/modules/partial.js","webpack:///./node_modules/underscore/modules/bind.js","webpack:///./node_modules/underscore/modules/_isArrayLike.js","webpack:///./node_modules/underscore/modules/_flatten.js","webpack:///./node_modules/underscore/modules/bindAll.js","webpack:///./node_modules/underscore/modules/memoize.js","webpack:///./node_modules/underscore/modules/delay.js","webpack:///./node_modules/underscore/modules/defer.js","webpack:///./node_modules/underscore/modules/throttle.js","webpack:///./node_modules/underscore/modules/debounce.js","webpack:///./node_modules/underscore/modules/wrap.js","webpack:///./node_modules/underscore/modules/negate.js","webpack:///./node_modules/underscore/modules/compose.js","webpack:///./node_modules/underscore/modules/after.js","webpack:///./node_modules/underscore/modules/before.js","webpack:///./node_modules/underscore/modules/once.js","webpack:///./node_modules/underscore/modules/findKey.js","webpack:///./node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack:///./node_modules/underscore/modules/findIndex.js","webpack:///./node_modules/underscore/modules/findLastIndex.js","webpack:///./node_modules/underscore/modules/sortedIndex.js","webpack:///./node_modules/underscore/modules/_createIndexFinder.js","webpack:///./node_modules/underscore/modules/indexOf.js","webpack:///./node_modules/underscore/modules/lastIndexOf.js","webpack:///./node_modules/underscore/modules/find.js","webpack:///./node_modules/underscore/modules/findWhere.js","webpack:///./node_modules/underscore/modules/each.js","webpack:///./node_modules/underscore/modules/map.js","webpack:///./node_modules/underscore/modules/_createReduce.js","webpack:///./node_modules/underscore/modules/reduce.js","webpack:///./node_modules/underscore/modules/reduceRight.js","webpack:///./node_modules/underscore/modules/filter.js","webpack:///./node_modules/underscore/modules/reject.js","webpack:///./node_modules/underscore/modules/every.js","webpack:///./node_modules/underscore/modules/some.js","webpack:///./node_modules/underscore/modules/contains.js","webpack:///./node_modules/underscore/modules/invoke.js","webpack:///./node_modules/underscore/modules/pluck.js","webpack:///./node_modules/underscore/modules/where.js","webpack:///./node_modules/underscore/modules/max.js","webpack:///./node_modules/underscore/modules/min.js","webpack:///./node_modules/underscore/modules/toArray.js","webpack:///./node_modules/underscore/modules/sample.js","webpack:///./node_modules/underscore/modules/shuffle.js","webpack:///./node_modules/underscore/modules/sortBy.js","webpack:///./node_modules/underscore/modules/_group.js","webpack:///./node_modules/underscore/modules/groupBy.js","webpack:///./node_modules/underscore/modules/indexBy.js","webpack:///./node_modules/underscore/modules/countBy.js","webpack:///./node_modules/underscore/modules/partition.js","webpack:///./node_modules/underscore/modules/size.js","webpack:///./node_modules/underscore/modules/_keyInObj.js","webpack:///./node_modules/underscore/modules/pick.js","webpack:///./node_modules/underscore/modules/omit.js","webpack:///./node_modules/underscore/modules/initial.js","webpack:///./node_modules/underscore/modules/first.js","webpack:///./node_modules/underscore/modules/rest.js","webpack:///./node_modules/underscore/modules/last.js","webpack:///./node_modules/underscore/modules/compact.js","webpack:///./node_modules/underscore/modules/flatten.js","webpack:///./node_modules/underscore/modules/difference.js","webpack:///./node_modules/underscore/modules/without.js","webpack:///./node_modules/underscore/modules/uniq.js","webpack:///./node_modules/underscore/modules/union.js","webpack:///./node_modules/underscore/modules/intersection.js","webpack:///./node_modules/underscore/modules/unzip.js","webpack:///./node_modules/underscore/modules/zip.js","webpack:///./node_modules/underscore/modules/object.js","webpack:///./node_modules/underscore/modules/range.js","webpack:///./node_modules/underscore/modules/chunk.js","webpack:///./node_modules/underscore/modules/_chainResult.js","webpack:///./node_modules/underscore/modules/mixin.js","webpack:///./node_modules/underscore/modules/underscore-array-methods.js","webpack:///./node_modules/underscore/modules/index-default.js","webpack:///./public/js/widgets/applyQrCode.js","webpack:///./public/js/vendor/qrcode.js","webpack:///./public/js/widgets/Video/tmpl.handlebars","webpack:///./public/js/widgets/common.js","webpack:///./node_modules/backbone/backbone.js","webpack:///./node_modules/@173/173js/lib/url.js","webpack:///./public/js/ui/createEnableOverlay.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack:///./public/js/ui/Overlay/tmpl.handlebars","webpack:///./public/js/ui/enableDialog/tmpl.handlebars","webpack:///./public/js/game-info/sections/profile/engageCurrentGame/index.js","webpack:///./public/js/game-info/widgets/EngageForm/index.js","webpack:///./public/js/game-info/widgets/EngageForm/tmpl.handlebars","webpack:///./public/js/game-info/widgets/EngageForm/success.handlebars","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","VERSION","root","self","global","Function","ArrayProto","Array","ObjProto","SymbolProto","push","slice","toString","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","isArray","nativeKeys","keys","nativeCreate","nativeIsView","isView","_isNaN","isNaN","_isFinite","isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","Math","pow","window","jQuery","_utils","logger","methodMap","level","lookupLevel","levelMap","indexOf","toLowerCase","parseInt","log","console","method","_len","arguments","length","message","_key","apply","$","giftButtonTmpl","pingjs","engageCurrentGame","requireLogin","GetDownloadUrls","channelDlTmpl","headerGameInfo","ued","transferUrl","location","host","ssid","data","gameCode","newGameCodes","newgameCodes","iOS","ios","Android","android","getDownloadUrls","when","getPlatformUrl","gameId","then","res","source","hasPcDl","pcDlUrl","downloadUrl","getUrls","urls","each","plat","url","hasIosDl","iosInfo","hasAndroidDl","androidInfo","find","append","pandora","use","Qrcode","element","text","size","replaceWith","timeoutObj","on","e","currentTarget","hasClass","trackEvent","href","el","type","setTimeout","clearTimeout","Handlebars","template","container","depth0","helpers","partials","doc","document","globalGuid","callback","permanent","CLICK_OUTSIDE_ID","sectionClickHandler","globalClickHandler","this","off","removeData","helper","lookupProperty","parent","propertyName","escapeExpression","hooks","helperMissing","nullContext","stack1","alias1","program","createProtoAccessControl","runtimeOptions","defaultMethodWhiteList","defaultPropertyWhiteList","properties","whitelist","_createNewLookupObject","createNewLookupObject","allowedProtoProperties","defaultValue","allowProtoPropertiesByDefault","methods","allowedProtoMethods","allowProtoMethodsByDefault","resultIsAllowed","result","protoAccessControl","checkWhiteList","resetLoggedProperties","loggedProperties","forEach","obj","_logger","_logger2","protoAccessControlForType","undefined","logUnexpecedPropertyAccessOnce","g","types","MOBILE_GAME_DOWNLOADED_IN_ANDROID","MOBILE_GAME_DOWNLOADED_IN_IOS","OPEN_GAME_DOWNLOADED_QRCODE","DOWNLOAD_MOBILE_GAME_SIMULATOR","IOS_GAME_DOWNLOADED_IN_PC","ANDROID_GAME_DOWNLOADED_IN_PC","urlUtils","trackEventWithKey","hrefOrAction","options","_jc_ping","withCurrentHref","addParam","action","rNON_URL","eventType","trackPageview","applyTrackLink","attr","trackOptions","test","is","applyTrackBlock","index","blockElement","applyBiClick","applyTrackArea","areaElement","applyBgArea","_interopRequireDefault","_interopRequireWildcard","newObj","base","_handlebarsSafeString2","_handlebarsException2","Utils","runtime","_handlebarsNoConflict2","hb","HandlebarsEnvironment","extend","SafeString","Exception","VM","spec","inst","instance","registerHelper","context","inverse","fn","ids","createFrame","contextPath","appendContextPath","_exception","_exception2","priorKey","ret","execIteration","field","last","first","blockParams","isFunction","j","iterator","newContext","it","next","done","conditional","hash","includeZero","isEmpty","array","len","string","toHTML","possible","replace","badChars","escapeChar","frame","_parent","params","path","id","escape","chr","args","registerDefaultDecorators","_decoratorsInline2","_decoratorsInline","registerDecorator","props","original","prepend","w","parents","addClass","Video","shortVideo","videoUrl","video","width","height","html","sources","concat","checkRevision","compilerInfo","compilerRevision","currentRevision","_base","COMPILER_REVISION","LAST_COMPATIBLE_COMPILER_REVISION","runtimeVersions","REVISION_CHANGES","compilerVersions","templateSpec","env","main","decorator","main_d","compiler","templateWasPrecompiledWithCompilerV7","strict","loc","_internalProtoAccess","lookup","depths","lambda","current","invokePartial","partial","resolvePartial","extendedOptions","compile","compilerOptions","indent","lines","split","join","programs","declaredBlockParams","programWrapper","wrapProgram","depth","mergeIfNeeded","param","common","seal","noop","_setup","useData","initData","useBlockParams","useDepths","executeDecorators","isTop","decorators","mergedHelpers","helperName","_internalWrapHelper","wrapHelper","passLookupPropertyOption","wrapHelpersToPassLookupProperty","usePartial","useDecorators","keepHelperInHelpers","allowCallsToHelperMissing","_helpers","moveHelperToHooks","_child","currentPartialBlock","partialBlock","prog","currentDepths","transformOptionsFn","globalThis","__defineGetter__","__magic__","$Handlebars","noConflict","errorProps","node","line","endLineNumber","column","endColumn","start","end","tmp","Error","constructor","idx","captureStackTrace","lineNumber","nop","formUtil","toDict","form","item","dict","serializeArray","send","ajax","readonlyForm","formOrElements","elements","prop","resumeForm","ctrlEnterForm","keypress","keyCode","ctrlKey","submit","autoResize","textarea","fakeTextarea","val","scrollTop","getTextareaScrollHeight","maxHeight","minHeight","css","enableAutoResize","fakeTextareaParent","clone","removeAttr","proxy","originalEvent","_","validateFuncs","input","trim","invalidMsgs","ValidateForm","inputs","fieldErrors","validate","isValid","validateElem","every","validator","selector","invalidMsg","label","errorMessage","handleInvalid","formItem","closest","one","CHANNEL_TYPES","gameChannelType","contains","dfd","Deferred","channel","dataType","resp","status","reject","msg","resolve","fail","promise","Backbone","enableDialog","AlertView","View","initialize","content","render","$el","title","open","createEnableOverlay","tmpl","preventDefault","md5","GetDownloadInfo","gameCodes","appId","appKey","needSource","nonce","ceil","Date","getTime","timestamp","sign","time","that","pc","res1","res2","res3","raw","u","f","a","h","v","String","fromCharCode","charCodeAt","charAt","unescape","encodeURIComponent","C","A","func","cachedValue","hasRuned","docElement","body","win","getScrollbarWidth","outer","createElement","style","visibility","msOverflowStyle","appendChild","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","parentNode","removeChild","Overlay","opts","appendTo","closable","setBody","klass","overlay","target","close","tagName","isEscKey","silent","remove","removeClass","marginRight","left","right","getContentElement","scrollbarWidth","pnCyclePositionX","show","TOPBAR_HEIGHT","topbarHeight","rHash","jumpToTargetElement","idHash","toElement","scroll","offset","top","defaults","ignoreAdvertise","autoPlay","videoTmpl","getFlashParams","paramsArray","getVideoCode","getIframeUrl","cate","mobileBinderTit","Passport","voteMobileBinderTit","isRequireMobileBind","markIsNoTopbarTrigger","requireMobileBind","getMobileStatus","isBinded","Dialog","showMobileBinder","ti","setInterval","contents","clearInterval","newgameLoginSuccess","passportDialogEventBind","EVENTS","dialogClose","events","dialogType","defaultOption","mobileBindOn","isLoggedIn","restArguments","startIndex","max","rest","isObject","isNull","isUndefined","isBoolean","isElement","nodeType","tagTester","tag","nodelist","childNodes","Int8Array","hasDataViewBug","isIE11","Map","isDataView","getInt8","isArrayBuffer","buffer","has","isArguments","isSymbol","parseFloat","isNumber","constant","createSizePropertyCheck","getSizeProperty","collection","sizeProperty","shallowProperty","typedArrayPattern","collectNonEnumProps","emulatedSet","nonEnumIdx","proto","isString","isMatch","attrs","_keys","_wrapped","toBufferView","bufferSource","Uint8Array","byteOffset","valueOf","toJSON","eq","b","aStack","bStack","deepEq","className","areArrays","aCtor","bCtor","pop","isEqual","allKeys","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","values","pairs","invert","functions","names","sort","createAssigner","keysFunc","baseCreate","Ctor","extendOwn","tap","interceptor","toPath","deepGet","identity","optimizeCb","argCount","accumulator","baseIteratee","Infinity","cb","iteratee","mapObject","results","currentKey","propertyOf","times","accum","random","min","floor","createEscaper","map","escaper","match","testRegexp","RegExp","replaceRegexp","templateSettings","evaluate","interpolate","noMatch","escapes","escapeRegExp","bareIdentifier","settings","oldSettings","matcher","argument","variable","fallback","idCounter","uniqueId","prefix","chain","_chain","executeBound","sourceFunc","boundFunc","callingContext","boundArgs","placeholder","bound","position","TypeError","callArgs","flatten","output","hasher","memoize","cache","address","wait","delay","throttle","timeout","previous","later","leading","now","throttled","_now","remaining","trailing","cancel","debounce","immediate","passed","debounced","_args","wrap","wrapper","negate","predicate","compose","after","before","memo","findKey","createPredicateIndexFinder","dir","low","high","mid","createIndexFinder","predicateFind","sortedIndex","findIndex","findLastIndex","findWhere","createReduce","reducer","initial","filter","list","some","fromIndex","guard","pluck","where","computed","lastComputed","reStrSymbol","toArray","sample","rand","temp","shuffle","sortBy","criteria","group","behavior","partition","pass","keyInObj","pick","compact","Boolean","otherArrays","difference","uniq","isSorted","seen","arrays","intersection","argsLength","unzip","range","stop","step","chunk","count","chainResult","mixin","QRCode","QR8bitByte","QRMode","MODE_8BIT_BYTE","parsedData","byteArray","code","unshift","QRCodeModel","typeNumber","errorCorrectLevel","moduleCount","dataCache","dataList","getLength","write","put","addData","newData","isDark","row","col","getModuleCount","make","makeImpl","getBestMaskPattern","maskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","minLostPoint","pattern","lostPoint","QRUtil","getLostPoint","createMovieClip","target_mc","instance_name","qr_mc","createEmptyMovieClip","y","x","beginFill","moveTo","lineTo","endFill","pos","getPatternPosition","bits","getBCHTypeNumber","mod","getBCHTypeInfo","inc","bitIndex","byteIndex","dark","getMask","PAD0","PAD1","rsBlocks","QRRSBlock","getRSBlocks","QRBitBuffer","getLengthInBits","totalDataCount","dataCount","putBit","createBytes","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","rsPoly","getErrorCorrectPolynomial","modPoly","QRPolynomial","modIndex","totalCodeCount","MODE_NUMBER","MODE_ALPHA_NUM","MODE_KANJI","QRErrorCorrectLevel","L","M","Q","H","QRMaskPattern","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHDigit","digit","errorCorrectLength","multiply","QRMath","gexp","qrCode","sameCount","darkCount","abs","glog","LOG_TABLE","EXP_TABLE","num","shift","ratio","RS_BLOCK_TABLE","rsBlock","getRsBlockTable","bufIndex","bit","QRCodeLimitLength","_getAndroid","sAgent","navigator","userAgent","aMat","svgDrawer","Drawing","htOption","_el","_htOption","draw","oQRCode","nCount","makeSVG","createElementNS","k","setAttribute","clear","svg","colorLight","setAttributeNS","colorDark","child","hasChildNodes","lastChild","documentElement","CanvasRenderingContext2D","nWidth","nHeight","aHTML","innerHTML","elTable","nLeftMarginTable","nTopMarginTable","offsetHeight","margin","_onMakeImage","_elImage","src","_elCanvas","toDataURL","display","_android","factor","devicePixelRatio","drawImage","image","sx","sy","sw","sh","dx","dy","dw","dh","nodeName","_safeSetDataURI","fSuccess","fFail","_fFail","_fSuccess","_bSupportDataURI","fOnError","onabort","onerror","onload","_bIsPainted","_oContext","getContext","alt","nRoundedWidth","round","nRoundedHeight","bIsDark","nLeft","nTop","strokeStyle","lineWidth","fillStyle","fillRect","strokeRect","makeImage","isPainted","clearRect","nNumber","_getTypeNumber","sText","nCorrectLevel","nType","replacedText","encodeURI","_getUTF8Length","nLimit","vOption","correctLevel","getElementById","_oQRCode","_oDrawer","useSVG","_oDrawing","makeCode","CorrectLevel","alias2","alias4","setupHandleAnchorLinkClicked","tabs","event","Share","shareList","showLabel","importStyle","customShare","weixin","$backToTopEle","click","animate","st","previousBackbone","emulateHTTP","emulateJSON","_listening","Events","eventSplitter","eventsApi","_events","onApi","ctx","listening","_listeners","interop","listenTo","_listenId","listeningTo","_listeningTo","Listening","error","tryCatchOn","handlers","offApi","listeners","stopListening","handler","_callback","cleanup","once","onceMap","listenToOnce","offer","trigger","triggerApi","objEvents","allEvents","all","triggerEvents","ev","a1","a2","a3","listener","unbind","Model","attributes","preinitialize","cid","cidPrefix","parse","set","changed","validationError","idAttribute","sync","matches","_validate","unset","changes","changing","_changing","_previousAttributes","prev","prevId","_pending","hasChanged","changedAttributes","diff","old","previousAttributes","fetch","model","success","serverAttrs","wrapError","save","isNew","patch","xhr","destroy","defer","urlError","Collection","models","comparator","_reset","reset","setOptions","add","merge","addOptions","splice","insert","at","tail","singular","removed","_removeModels","added","merged","_isModel","toAdd","toMerge","toRemove","modelMap","sortable","sortAttr","existing","_prepareModel","_addReference","orderChanged","_removeReference","previousModels","_byId","modelId","callbackOpts","_forwardPristineError","CollectionIterator","ITERATOR_VALUES","ITERATOR_KEYS","entries","ITERATOR_KEYSVALUES","_onModelEvent","$$iterator","kind","_collection","_kind","_index","viewOptions","_ensureElement","delegateEventSplitter","_removeElement","setElement","undelegateEvents","_setElement","delegateEvents","delegate","eventName","undelegate","_createElement","_setAttributes","addUnderscoreMethods","Class","attribute","defaultVal","addMethod","modelMatcher","collect","reduce","foldl","inject","reduceRight","foldr","detect","select","any","include","includes","invoke","head","take","drop","without","lastIndexOf","groupBy","countBy","indexBy","omit","config","Base","mappings","contentType","JSON","stringify","_method","beforeSend","setRequestHeader","processData","textStatus","errorThrown","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","route","isRegExp","_routeToRegExp","router","history","fragment","_extractParameters","execute","navigate","optional","exec","decodeURIComponent","History","checkUrl","routeStripper","rootStripper","pathStripper","started","interval","atRoot","pathname","getSearch","matchRoot","decodeFragment","decodeURI","getHash","getPath","getFragment","_usePushState","_wantsHashChange","_trailingSlash","trailingSlash","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","pushState","_hasPushState","rootPath","iframe","tabIndex","iWindow","insertBefore","firstChild","contentWindow","addEventListener","attachEvent","_checkUrlInterval","loadUrl","removeEventListener","detachEvent","notfound","decodedFragment","assign","_updateHash","protoProps","staticProps","__super__","_debug","factory","rNonQuerystring","deparam","pair","paramName","paramValue","substr","normalize","str","joined","getUrlCompontents","search","hashIndex","markIndex","resetParams","compontents","removeSearch","paramString","hasSameOrigin","originUrl","getRelativeUrl","getURLParameter","rQuestionMark","getURLParameters","dialogTitle","view","handleCloseClicked","_decorators","1","2","3","4","5","6","7","8","registerDefaultHelpers","unregisterHelper","registerPartial","unregisterPartial","unregisterDecorator","resetLoggedPropertyAccesses","openAlert","EngageForm","ajaxEngageCurrentGame","isAjaxing","channelType","always","userInfo","formUtils","successTmpl","ajaxSubmitForm","renderFieldErrors","formSubmitted","validateForm","fetchMemberInfo","getJSON","errorBlock","empty","hide","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","keepHelper"],"mappings":"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AAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,G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","file":"js/shouyou/review/index.entry.js","sourcesContent":[" \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 = \"//ue.17173cdn.com/a/newgame/index/v6.3.0/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 243);\n","// Current version.\nexport var VERSION = '1.13.7';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global) ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","module.exports = window.jQuery;","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUF3QixTQUFTOztBQUVqQyxJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUN6QztBQUNBLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRXJDLFVBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBWG1CLE9BQU87QUFBUCxlQUFPOzs7QUFZM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWxcbiAgICApIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkge1xuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","var applyQrCode = require('widgets/applyQrCode')\n , $ = require('jquery')\n , giftButtonTmpl = require('./giftButton.handlebars')\n , clickOutside = require('@173js/ui/clickOutside')\n , pingjs = require('widgets/ping')\n , engageCurrentGame = require('game-info/sections/profile/engageCurrentGame')\n , requireLogin = require('widgets/requireLogin')\n , GetDownloadUrls = require('widgets/getDownloadUrls')\n , channelDlTmpl = require('./channelDl.handlebars')\n\n$(function() {\n var headerGameInfo = $('.game-info-section')\n , ued = window.ued || {}\n , transferUrl = 'https://'+window.location.host+'/track/download'\n , ssid = ued.pingjs.get('ssid')\n , data = {gameCode:ued.gameCode}\n\n if (!headerGameInfo.length) {return}\n\n var newGameCodes = {};\n if (typeof ued.newgameCodes.iOS != 'undefined') {\n newGameCodes.ios = ued.newgameCodes.iOS\n }\n if (typeof ued.newgameCodes.Android != 'undefined') {\n newGameCodes.android = ued.newgameCodes.Android\n }\n var getDownloadUrls = new GetDownloadUrls(newGameCodes);\n // 判断有没有雷电合作链接\n $.when(getDownloadUrls.getPlatformUrl('100000'+ued.gameId, true))\n .then(function (res) {\n // source 为 20 表示是联运的,为 40 表示是官方\n if (res.data && res.data.source == 20) {\n data.hasPcDl = true\n data.pcDlUrl = res.data.downloadUrl\n }\n render()\n })\n \n function render() {\n getDownloadUrls.getUrls(function(urls) {\n $.each(urls, function(plat, url) {\n if (plat == 'ios') {\n data.hasIosDl = true\n data.iosInfo = {\n url: transferUrl+'?code='+newGameCodes.ios+'&ssid='+ssid+''\n }\n }\n if (plat == 'android') {\n data.hasAndroidDl = true\n data.androidInfo = {\n url: transferUrl+'?code='+newGameCodes.android+'&ssid='+ssid+''\n }\n }\n })\n headerGameInfo.find('.pn-game-in').append(channelDlTmpl(data))\n \n if (headerGameInfo.find('.channel-pop-ios').length) {\n pandora.use([ 'qrcode'], function(Qrcode) {\n new Qrcode({\n element: '.channel-pop-ios .channel-avatar',\n text: data.iosInfo.url,\n size : 130\n });\n });\n }\n if (headerGameInfo.find('.channel-pop-android').length) {\n pandora.use([ 'qrcode'], function(Qrcode) {\n new Qrcode({\n element: '.channel-pop-android .channel-avatar',\n text: data.androidInfo.url,\n size : 130\n });\n });\n }\n })\n }\n\n var hasGift = !!$('#gift-section').length\n if (hasGift) {\n headerGameInfo.find('.gift-button-placeholder').replaceWith(\n $(giftButtonTmpl())\n )\n }\n\n var timeoutObj = null;\n headerGameInfo\n .on('mousedown', '.channel-dl-pc'\n , function(e) {\n var el = $(e.currentTarget)\n if (el.hasClass('channel-disabled')) { return }\n pingjs.trackEvent('DOWNLOAD_MOBILE_GAME_SIMULATOR', window.location.href)\n })\n .on('click', '.btn-engage-current-game', requireLogin(engageCurrentGame))\n .on('mouseenter mouseleave', '.channel-dl-and, .channel-dl-ios', function(e) {\n var el = $(e.currentTarget);\n if(e.type == \"mouseenter\"){\n (function(me){\n timeoutObj = setTimeout(function(){\n if(el.hasClass('channel-dl-and')) {\n pingjs.trackEvent('ANDROID_GAME_DOWNLOADED_IN_PC', window.location.href)\n }\n if(el.hasClass('channel-dl-ios')) {\n pingjs.trackEvent('IOS_GAME_DOWNLOADED_IN_PC', window.location.href)\n }\n },3000);\n }(this));\n }else if(e.type == \"mouseleave\"){\n if(timeoutObj != null){\n clearTimeout(timeoutObj);\n }\n }\n })\n .on('mousedown', '.channel-dl-and, .channel-dl-ios', function(e) {\n var el = $(e.currentTarget);\n if(el.hasClass('channel-dl-and')) {\n pingjs.trackEvent('ANDROID_GAME_DOWNLOADED_IN_PC', window.location.href)\n }\n if(el.hasClass('channel-dl-ios')) {\n pingjs.trackEvent('IOS_GAME_DOWNLOADED_IN_PC', window.location.href)\n }\n })\n \n})\n","var Handlebars = require(\"../../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"\\n \\n\\n\";\n},\"useData\":true});","var $ = require('jquery')\n , doc = $(document)\n\nvar globalGuid = 0\n\nfunction onClickOutside(el, callback, permanent) {\n el = $(el)\n\n var CLICK_OUTSIDE_ID = 'clickOutsideId-' + globalGuid++\n\n function globalClickHandler(e) {\n\n var clickOutsideId = el.data(CLICK_OUTSIDE_ID)\n\n if (!clickOutsideId) {\n callback.call(this, e)\n if(!permanent) {\n el.off('click', sectionClickHandler)\n doc.off(\"click\", globalClickHandler)\n }\n }\n\n el.removeData(CLICK_OUTSIDE_ID)\n }\n\n function sectionClickHandler(e) {\n el.data(CLICK_OUTSIDE_ID, true)\n }\n\n el.on('click.clickOutside', sectionClickHandler)\n doc.on('click.clickOutside', globalClickHandler)\n}\n\nmodule.exports = onClickOutside\n","var Handlebars = require(\"../../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
').text(this.content)\n : this.html\n )\n\n return this\n }\n})\n\nmodule.exports = function(options) {\n options = options || {}\n\n var View = enableDialog(AlertView, { title: options.title || '提示' })\n , alertView = new View(options)\n\n return alertView.render().open()\n}\n","var createEnableOverlay = require('ui/createEnableOverlay')\n , tmpl = require('./tmpl.handlebars')\n\nmodule.exports = createEnableOverlay(tmpl)\n","var $ = require('jquery')\n\n$(document).on('click', 'a[href=\"#\"]', function(e) {\n e.preventDefault()\n})\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","var $ = require('jquery')\n , md5 = require('./md5')\n\nfunction GetDownloadInfo(gameCodes) {\n this.appId = 'yQWbAjGE';\n this.appKey = '1cas9ubnk1ZfWuMZ';\n this.gameCodes = gameCodes;\n // this.getUrls();\n}\n\nGetDownloadInfo.prototype = {\n getPlatformUrl: function(gameCode, needSource) {\n var that = this;\n if (gameCode) {\n var nonce = Math.ceil(Math.ceil(new Date().getTime() / 1000) / (60 / 2)) + 17173,\n timestamp = new Date().getTime();\n var url = 'https://dmanage.17173.com/api/downloadUrl';\n if (needSource) {\n url = 'https://dmanage.17173.com/api/downloadUrlAndSource'\n }\n return $.ajax({\n url: url,\n dataType: 'jsonp',\n data: {\n nonce: nonce,\n sign: md5('gameCode=' + gameCode + '&nonce=' + nonce + '&time=' + timestamp + '&appKey=' + that.appKey + ''),\n time: timestamp,\n gameCode: gameCode,\n appId: that.appId\n }\n })\n }\n return null;\n },\n getUrls: function(callback) {\n var that = this;\n\n $.when(that.getPlatformUrl(that.gameCodes.ios), that.getPlatformUrl(that.gameCodes.android), that.getPlatformUrl(that.gameCodes.pc)).then(function (res1, res2, res3) {\n var data = {};\n if (that.gameCodes.ios && res1[0].data) {\n data.ios = res1[0].data;\n }\n\n if (that.gameCodes.android && res2[0].data) {\n data.android = res2[0].data;\n }\n\n if (that.gameCodes.pc && res3[0].data) {\n data.pc = res3[0].data;\n }\n\n if ($.isFunction(callback)) {\n this.callback = callback(data);\n }\n })\n }\n}\n\nmodule.exports = GetDownloadInfo","function md5(string, key, raw) {\n function t(n, t) {\n var r = (65535 & n) + (65535 & t);\n return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r\n }\n\n function r(n, t) {\n return n << t | n >>> 32 - t\n }\n\n function e(n, e, o, u, c, f) {\n return t(r(t(t(e, n), t(u, f)), c), o)\n }\n\n function o(n, t, r, o, u, c, f) {\n return e(t & r | ~t & o, n, t, u, c, f)\n }\n\n function u(n, t, r, o, u, c, f) {\n return e(t & o | r & ~o, n, t, u, c, f)\n }\n\n function c(n, t, r, o, u, c, f) {\n return e(t ^ r ^ o, n, t, u, c, f)\n }\n\n function f(n, t, r, o, u, c, f) {\n return e(r ^ (t | ~o), n, t, u, c, f)\n }\n\n function i(n, r) {\n n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r;\n var e, i, a, d, h, l = 1732584193,\n g = -271733879,\n v = -1732584194,\n m = 271733878;\n for (e = 0; e < n.length; e += 16) i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h);\n return [l, g, v, m]\n }\n\n function a(n) {\n var t, r = \"\",\n e = 32 * n.length;\n for (t = 0; t < e; t += 8) r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255);\n return r\n }\n\n function d(n) {\n var t, r = [];\n for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1) r[t] = 0;\n var e = 8 * n.length;\n for (t = 0; t < e; t += 8) r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32;\n return r\n }\n\n function h(n) {\n return a(i(d(n), 8 * n.length))\n }\n\n function l(n, t) {\n var r, e, o = d(n),\n u = [],\n c = [];\n for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1) u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r];\n return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640))\n }\n\n function g(n) {\n var t, r, e = \"\";\n for (r = 0; r < n.length; r += 1) t = n.charCodeAt(r), e += \"0123456789abcdef\".charAt(t >>> 4 & 15) + \"0123456789abcdef\".charAt(15 & t);\n return e\n }\n\n function v(n) {\n return unescape(encodeURIComponent(n))\n }\n\n function m(n) {\n return h(v(n))\n }\n\n function p(n) {\n return g(m(n))\n }\n\n function s(n, t) {\n return l(v(n), v(t))\n }\n\n function C(n, t) {\n return g(s(n, t))\n }\n\n function A(n, t, r) {\n return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n)\n }\n return A(string, key, raw);\n}\n\nmodule.exports = md5;","var $ = require('jquery')\n , doc = $(document)\n , docElement = $('html')\n , tmpl = require('./tmpl.handlebars')\n , WIHTOUT_SCROLL_MARGIN_RIGHT = 0\n , body = $('body')\n , win = $(window)\n\nfunction cacheable(func) {\n var cachedValue\n , hasRuned = false\n\n return function() {\n if (!hasRuned) {\n hasRuned = true\n cachedValue = func()\n }\n return cachedValue\n }\n}\n\nfunction getScrollbarWidth() {\n // Copy from http://tinyurl.com/k2wj4cm\n var outer = document.createElement(\"div\");\n outer.style.visibility = \"hidden\";\n outer.style.width = \"100px\";\n outer.style.msOverflowStyle = \"scrollbar\"; // needed for WinJS apps\n\n document.body.appendChild(outer);\n\n var widthNoScroll = outer.offsetWidth;\n // force scrollbars\n outer.style.overflow = \"scroll\";\n\n // add innerdiv\n var inner = document.createElement(\"div\");\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n\n var widthWithScroll = inner.offsetWidth;\n\n // remove divs\n outer.parentNode.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n}\n\ngetScrollbarWidth = cacheable(getScrollbarWidth)\n\nfunction Overlay(opts) {\n this.opts = opts\n this.el = $(tmpl()).appendTo('body')\n this.body = this.el.find('.overlay-in')\n this.closable = opts.closable !== void 0\n ? !!opts.closable : true\n\n this.setBody()\n this.el.addClass(opts.klass)\n\n if (!this.closable) { return }\n\n var overlay = this\n doc.on('click.close', '.overlay-wrap', function(e) {\n if (e.target !== e.currentTarget) { return }\n overlay.close()\n })\n .on('keyup.close', function(e) {\n var tagName = e.target.tagName\n , isEscKey = e.keyCode === 27\n , isInputField = /input|textarea/i.test(tagName)\n\n if (!isInputField && isEscKey) {\n overlay.close()\n }\n })\n}\n\n$.extend(Overlay.prototype, {\n close: function(silent) {\n this.el.remove()\n docElement.removeClass('overlay-show')\n docElement.css({ marginRight: WIHTOUT_SCROLL_MARGIN_RIGHT })\n doc.off('.close')\n\n //XXX: dirty but work, fix windows 下侧边栏分享组件浮动\n body.find('.pn-float').css({ left: '50%' })\n body.find('.pn-cycle').css({ right: '10px' })\n return this\n }\n\n, getContentElement: function() {\n return this.el.find('.k-content')\n }\n\n, open: function() {\n this.scrollTop = doc.scrollTop()\n\n //XXX: dirty but work, fix windows 下侧边栏分享组件浮动\n body.find('.pn-float').css({ left: win.width() / 2 })\n\n docElement.addClass('overlay-show')\n var scrollbarWidth = getScrollbarWidth()\n docElement.css({ marginRight: scrollbarWidth })\n\n //fix windows\n var pnCyclePositionX = scrollbarWidth + 10\n body.find('.pn-cycle').css({ right: pnCyclePositionX })\n\n this.el.show()\n return this\n }\n\n, setBody: function(body) {\n body = body || this.opts.body\n this.body.html(body)\n return this\n }\n})\n\nmodule.exports = Overlay;\n","var $ = require('jquery')\n\nmodule.exports = function(options) {\n options = options || {}\n\n $(function() {\n var TOPBAR_HEIGHT = options.topbarHeight || 45\n , rHash = /^#.+/\n , jumpToTargetElement = function(idHash) {\n var toElement = $(idHash)\n if (!toElement.length) { return }\n window.scroll(0, toElement.offset().top - TOPBAR_HEIGHT)\n }\n\n $(window).on('hashchange', function(e) {\n var idHash = window.location.hash\n if (!idHash) { return }\n jumpToTargetElement(idHash)\n })\n\n $(document).on('click', 'a[href^=\"#\"]', function(e) {\n var el = $(e.currentTarget)\n , hash = el.attr('href')\n\n if (!hash || !rHash.test(hash) || hash !== window.location.hash) {\n return\n }\n\n e.preventDefault()\n\n jumpToTargetElement(hash)\n })\n })\n};\n","var $ = require('jquery')\n\nvar defaults = {\n ignoreAdvertise: true\n , autoPlay: true\n , width: '100%'\n , height: '100%'\n}\n\nvar Video = function(options) {\n $.extend(this, defaults, options || {})\n}\n\nvar videoTmpl = require('./tmpl.handlebars')\n\nVideo.prototype.getFlashParams = function() {\n var paramsArray = []\n if (this.autoPlay) {\n paramsArray.push('m16=1')\n }\n\n if (this.ignoreAdvertise) {\n paramsArray.push('m10=0')\n paramsArray.push('m12=1')\n }\n\n return paramsArray.join('&')\n}\n\nVideo.prototype.getVideoCode = function() {\n return (this.videoUrl).replace(/(.*\\/)*([^.]+).*/ig,\"$2\");\n}\n\nVideo.prototype.getIframeUrl = function() {\n return '//v.17173.com/player_ifrm2/'+ this.getVideoCode() +'.html?'+ this.getFlashParams() +''\n}\n\nVideo.prototype.toHTML = function() {\n return videoTmpl({\n width: this.width\n , height: this.height\n , url: this.getIframeUrl()\n })\n}\n\nmodule.exports = Video\n","var $ = require('jquery')\n\nmodule.exports = function requireLogin(callback, cate) {\n\n return function() {\n var Passport = window.Passport || {}\n , args = arguments\n , voteMobileBinderTit = '亲爱的玩家,您需要绑定手机号后才能给游戏投票哦~'\n , mobileBinderTit\n , isRequireMobileBind = false\n , markIsNoTopbarTrigger = true //标记是非Topbar登陆触发的Passport,用于事件隔离\n\n if (cate) {\n isRequireMobileBind = true\n }\n\n if (cate == 'vote') {\n mobileBinderTit = voteMobileBinderTit\n }\n\n function requireMobileBind() {\n Passport.getMobileStatus(function(isBinded){\n if (!isBinded) {\n //手机未绑定,弹出手机绑定弹窗\n Passport.Dialog.showMobileBinder();\n var ti = setInterval(function(){\n if($('#nut').contents().find('.gpp-tel-bind .pprt-bindMobile-el .gpp-tit').length){\n clearInterval(ti);\n $('#nut').contents().find('.gpp-tel-bind .pprt-bindMobile-el .gpp-tit').text(mobileBinderTit).css('line-height','22px');\n }\n },500);\n }else {\n //手机已绑定,去执行回调\n callback.apply(this, args)\n }\n });\n }\n\n function newgameLoginSuccess() {\n if (isRequireMobileBind) {\n requireMobileBind();\n return\n }\n //登陆成功,不需要手机绑定,去执行回调\n callback.apply(this, args)\n }\n\n if(typeof passportDialogEventBind === 'undefined'){\n Passport.on(Passport.EVENTS.dialogClose, function (events) {\n window.passportDialogEventBind = true; //防止多次绑定\n if (events.dialogType == 'login') {\n //关闭登录弹窗,取消绑定\n window.Passport.off('loginSuccess', newgameLoginSuccess)\n }\n if (events.dialogType == 'mobileBind') {\n if (markIsNoTopbarTrigger) { //事件隔离\n Passport.getMobileStatus(function(isBinded){\n if (isBinded) {\n //手机绑定成功,去操作\n callback.apply(this, args)\n }\n });\n }\n }\n });\n }\n\n if (Passport && Passport.defaultOption) {\n Passport.defaultOption.mobileBindOn=false\n }\n\n if(!Passport.isLoggedIn()){\n // 没有登陆\n Passport.off('loginSuccess', newgameLoginSuccess)\n Passport.Dialog.show()\n Passport.on('loginSuccess', newgameLoginSuccess)\n } else {\n // 有登陆\n if (isRequireMobileBind) {\n // 需要手机绑定\n requireMobileBind();\n } else {\n // 不需要手机绑定\n callback.apply(this, args)\n }\n }\n\n }\n}\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || (type === 'object' && !!obj);\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\n// Also, there are cases where an application can override the native\n// `DataView` object, in cases like that we can't use the constructor\n// safely and should just rely on alternate `DataView` checks\nexport var hasDataViewBug = (\n supportsDataView && (!/\\[native code\\]/.test(String(DataView)) || hasObjectTag(new DataView(new ArrayBuffer(8))))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasDataViewBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\n// Also, in cases where the native `DataView` is\n// overridden we can't rely on the tag itself.\nfunction alternateIsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasDataViewBug ? alternateIsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key] === true; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = (isFunction(constructor) && constructor.prototype) || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasDataViewBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasDataViewBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || (computed === Infinity && result === Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\nimport toArray from './toArray.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = toArray(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = (array && max(array, getLength).length) || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","var QRCode = require('vendor/qrcode')\n , $ = require('jquery')\n , urlUtils = require('@173js/url')\n\nmodule.exports = function(selector, context, options) {\n options = options || {}\n $(context).find(selector).each(function(i, el) {\n var url = urlUtils.addParam(\n $(el).data('url') || window.location.href\n , { f: 'scan' } // For bi's track\n )\n\n var qrcode = new QRCode(el\n , $.extend({\n text: url\n , width: 110\n , height: 110\n }, options))\n })\n};\n","/**\n * @fileoverview\n * - Using the 'QRCode for Javascript library'\n * - Fixed dataset of 'QRCode for Javascript library' for support full-spec.\n * - this library has no dependencies.\n * \n * @author davidshimjs\n * @see http://www.d-project.com/\n * @see http://jeromeetienne.github.com/jquery-qrcode/\n */\nvar QRCode;\n(function () {\n\t//---------------------------------------------------------------------\n\t// QRCode for JavaScript\n\t//\n\t// Copyright (c) 2009 Kazuhiko Arase\n\t//\n\t// URL: http://www.d-project.com/\n\t//\n\t// Licensed under the MIT license:\n\t// http://www.opensource.org/licenses/mit-license.php\n\t//\n\t// The word \"QR Code\" is registered trademark of \n\t// DENSO WAVE INCORPORATED\n\t// http://www.denso-wave.com/qrcode/faqpatent-e.html\n\t//\n\t//---------------------------------------------------------------------\n\tfunction QR8bitByte(data) {\n\t\tthis.mode = QRMode.MODE_8BIT_BYTE;\n\t\tthis.data = data;\n\t\tthis.parsedData = [];\n\n\t\t// Added to support UTF-8 Characters\n\t\tfor (var i = 0, l = this.data.length; i < l; i++) {\n\t\t\tvar byteArray = [];\n\t\t\tvar code = this.data.charCodeAt(i);\n\n\t\t\tif (code > 0x10000) {\n\t\t\t\tbyteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);\n\t\t\t\tbyteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);\n\t\t\t\tbyteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);\n\t\t\t\tbyteArray[3] = 0x80 | (code & 0x3F);\n\t\t\t} else if (code > 0x800) {\n\t\t\t\tbyteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);\n\t\t\t\tbyteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);\n\t\t\t\tbyteArray[2] = 0x80 | (code & 0x3F);\n\t\t\t} else if (code > 0x80) {\n\t\t\t\tbyteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);\n\t\t\t\tbyteArray[1] = 0x80 | (code & 0x3F);\n\t\t\t} else {\n\t\t\t\tbyteArray[0] = code;\n\t\t\t}\n\n\t\t\tthis.parsedData.push(byteArray);\n\t\t}\n\n\t\tthis.parsedData = Array.prototype.concat.apply([], this.parsedData);\n\n\t\tif (this.parsedData.length != this.data.length) {\n\t\t\tthis.parsedData.unshift(191);\n\t\t\tthis.parsedData.unshift(187);\n\t\t\tthis.parsedData.unshift(239);\n\t\t}\n\t}\n\n\tQR8bitByte.prototype = {\n\t\tgetLength: function (buffer) {\n\t\t\treturn this.parsedData.length;\n\t\t},\n\t\twrite: function (buffer) {\n\t\t\tfor (var i = 0, l = this.parsedData.length; i < l; i++) {\n\t\t\t\tbuffer.put(this.parsedData[i], 8);\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction QRCodeModel(typeNumber, errorCorrectLevel) {\n\t\tthis.typeNumber = typeNumber;\n\t\tthis.errorCorrectLevel = errorCorrectLevel;\n\t\tthis.modules = null;\n\t\tthis.moduleCount = 0;\n\t\tthis.dataCache = null;\n\t\tthis.dataList = [];\n\t}\n\n\tQRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+\",\"+col);}\n\treturn this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row 我们已收到您提交的详细信息,我们将在第一时间将该游戏动态发送邮件/短信通知您!'];\n\t\t\t\n\t\t\tfor (var row = 0; row < nCount; row++) {\n\t\t\t\taHTML.push('
');\n\t\t\t_el.innerHTML = aHTML.join('');\n\t\t\t\n\t\t\t// Fix the margin values as real size.\n\t\t\tvar elTable = _el.childNodes[0];\n\t\t\tvar nLeftMarginTable = (_htOption.width - elTable.offsetWidth) / 2;\n\t\t\tvar nTopMarginTable = (_htOption.height - elTable.offsetHeight) / 2;\n\t\t\t\n\t\t\tif (nLeftMarginTable > 0 && nTopMarginTable > 0) {\n\t\t\t\telTable.style.margin = nTopMarginTable + \"px \" + nLeftMarginTable + \"px\";\t\n\t\t\t}\n\t\t};\n\t\t\n\t\t/**\n\t\t * Clear the QRCode\n\t\t */\n\t\tDrawing.prototype.clear = function () {\n\t\t\tthis._el.innerHTML = '';\n\t\t};\n\t\t\n\t\treturn Drawing;\n\t})() : (function () { // Drawing in Canvas\n\t\tfunction _onMakeImage() {\n\t\t\tthis._elImage.src = this._elCanvas.toDataURL(\"image/png\");\n\t\t\tthis._elImage.style.display = \"block\";\n\t\t\tthis._elCanvas.style.display = \"none\";\t\t\t\n\t\t}\n\t\t\n\t\t// Android 2.1 bug workaround\n\t\t// http://code.google.com/p/android/issues/detail?id=5141\n\t\tif (this._android && this._android <= 2.1) {\n\t \tvar factor = 1 / window.devicePixelRatio;\n\t var drawImage = CanvasRenderingContext2D.prototype.drawImage; \n\t \tCanvasRenderingContext2D.prototype.drawImage = function (image, sx, sy, sw, sh, dx, dy, dw, dh) {\n\t \t\tif ((\"nodeName\" in image) && /img/i.test(image.nodeName)) {\n\t\t \tfor (var i = arguments.length - 1; i >= 1; i--) {\n\t\t \targuments[i] = arguments[i] * factor;\n\t\t \t}\n\t \t\t} else if (typeof dw == \"undefined\") {\n\t \t\t\targuments[1] *= factor;\n\t \t\t\targuments[2] *= factor;\n\t \t\t\targuments[3] *= factor;\n\t \t\t\targuments[4] *= factor;\n\t \t\t}\n\t \t\t\n\t \tdrawImage.apply(this, arguments); \n\t \t};\n\t\t}\n\t\t\n\t\t/**\n\t\t * Check whether the user's browser supports Data URI or not\n\t\t * \n\t\t * @private\n\t\t * @param {Function} fSuccess Occurs if it supports Data URI\n\t\t * @param {Function} fFail Occurs if it doesn't support Data URI\n\t\t */\n\t\tfunction _safeSetDataURI(fSuccess, fFail) {\n var self = this;\n self._fFail = fFail;\n self._fSuccess = fSuccess;\n\n // Check it just once\n if (self._bSupportDataURI === null) {\n var el = document.createElement(\"img\");\n var fOnError = function() {\n self._bSupportDataURI = false;\n\n if (self._fFail) {\n self._fFail.call(self);\n }\n };\n var fOnSuccess = function() {\n self._bSupportDataURI = true;\n\n if (self._fSuccess) {\n self._fSuccess.call(self);\n }\n };\n\n el.onabort = fOnError;\n el.onerror = fOnError;\n el.onload = fOnSuccess;\n el.src = \"data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==\"; // the Image contains 1px data.\n return;\n } else if (self._bSupportDataURI === true && self._fSuccess) {\n self._fSuccess.call(self);\n } else if (self._bSupportDataURI === false && self._fFail) {\n self._fFail.call(self);\n }\n\t\t};\n\t\t\n\t\t/**\n\t\t * Drawing QRCode by using canvas\n\t\t * \n\t\t * @constructor\n\t\t * @param {HTMLElement} el\n\t\t * @param {Object} htOption QRCode Options \n\t\t */\n\t\tvar Drawing = function (el, htOption) {\n \t\tthis._bIsPainted = false;\n \t\tthis._android = _getAndroid();\n\t\t\n\t\t\tthis._htOption = htOption;\n\t\t\tthis._elCanvas = document.createElement(\"canvas\");\n\t\t\tthis._elCanvas.width = htOption.width;\n\t\t\tthis._elCanvas.height = htOption.height;\n\t\t\tel.appendChild(this._elCanvas);\n\t\t\tthis._el = el;\n\t\t\tthis._oContext = this._elCanvas.getContext(\"2d\");\n\t\t\tthis._bIsPainted = false;\n\t\t\tthis._elImage = document.createElement(\"img\");\n\t\t\tthis._elImage.alt = \"Scan me!\";\n\t\t\tthis._elImage.style.display = \"none\";\n\t\t\tthis._el.appendChild(this._elImage);\n\t\t\tthis._bSupportDataURI = null;\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Draw the QRCode\n\t\t * \n\t\t * @param {QRCode} oQRCode \n\t\t */\n\t\tDrawing.prototype.draw = function (oQRCode) {\n var _elImage = this._elImage;\n var _oContext = this._oContext;\n var _htOption = this._htOption;\n \n\t\t\tvar nCount = oQRCode.getModuleCount();\n\t\t\tvar nWidth = _htOption.width / nCount;\n\t\t\tvar nHeight = _htOption.height / nCount;\n\t\t\tvar nRoundedWidth = Math.round(nWidth);\n\t\t\tvar nRoundedHeight = Math.round(nHeight);\n\n\t\t\t_elImage.style.display = \"none\";\n\t\t\tthis.clear();\n\t\t\t\n\t\t\tfor (var row = 0; row < nCount; row++) {\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\n\t\t\t\t\tvar bIsDark = oQRCode.isDark(row, col);\n\t\t\t\t\tvar nLeft = col * nWidth;\n\t\t\t\t\tvar nTop = row * nHeight;\n\t\t\t\t\t_oContext.strokeStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;\n\t\t\t\t\t_oContext.lineWidth = 1;\n\t\t\t\t\t_oContext.fillStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;\t\t\t\t\t\n\t\t\t\t\t_oContext.fillRect(nLeft, nTop, nWidth, nHeight);\n\t\t\t\t\t\n\t\t\t\t\t// 안티 앨리어싱 방지 처리\n\t\t\t\t\t_oContext.strokeRect(\n\t\t\t\t\t\tMath.floor(nLeft) + 0.5,\n\t\t\t\t\t\tMath.floor(nTop) + 0.5,\n\t\t\t\t\t\tnRoundedWidth,\n\t\t\t\t\t\tnRoundedHeight\n\t\t\t\t\t);\n\t\t\t\t\t\n\t\t\t\t\t_oContext.strokeRect(\n\t\t\t\t\t\tMath.ceil(nLeft) - 0.5,\n\t\t\t\t\t\tMath.ceil(nTop) - 0.5,\n\t\t\t\t\t\tnRoundedWidth,\n\t\t\t\t\t\tnRoundedHeight\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis._bIsPainted = true;\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Make the image from Canvas if the browser supports Data URI.\n\t\t */\n\t\tDrawing.prototype.makeImage = function () {\n\t\t\tif (this._bIsPainted) {\n\t\t\t\t_safeSetDataURI.call(this, _onMakeImage);\n\t\t\t}\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Return whether the QRCode is painted or not\n\t\t * \n\t\t * @return {Boolean}\n\t\t */\n\t\tDrawing.prototype.isPainted = function () {\n\t\t\treturn this._bIsPainted;\n\t\t};\n\t\t\n\t\t/**\n\t\t * Clear the QRCode\n\t\t */\n\t\tDrawing.prototype.clear = function () {\n\t\t\tthis._oContext.clearRect(0, 0, this._elCanvas.width, this._elCanvas.height);\n\t\t\tthis._bIsPainted = false;\n\t\t};\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param {Number} nNumber\n\t\t */\n\t\tDrawing.prototype.round = function (nNumber) {\n\t\t\tif (!nNumber) {\n\t\t\t\treturn nNumber;\n\t\t\t}\n\t\t\t\n\t\t\treturn Math.floor(nNumber * 1000) / 1000;\n\t\t};\n\t\t\n\t\treturn Drawing;\n\t})();\n\t\n\t/**\n\t * Get the type by string length\n\t * \n\t * @private\n\t * @param {String} sText\n\t * @param {Number} nCorrectLevel\n\t * @return {Number} type\n\t */\n\tfunction _getTypeNumber(sText, nCorrectLevel) {\t\t\t\n\t\tvar nType = 1;\n\t\tvar length = _getUTF8Length(sText);\n\t\t\n\t\tfor (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {\n\t\t\tvar nLimit = 0;\n\t\t\t\n\t\t\tswitch (nCorrectLevel) {\n\t\t\t\tcase QRErrorCorrectLevel.L :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][0];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.M :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.Q :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][2];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.H :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][3];\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tif (length <= nLimit) {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tnType++;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (nType > QRCodeLimitLength.length) {\n\t\t\tthrow new Error(\"Too long data\");\n\t\t}\n\t\t\n\t\treturn nType;\n\t}\n\n\tfunction _getUTF8Length(sText) {\n\t\tvar replacedText = encodeURI(sText).toString().replace(/\\%[0-9a-fA-F]{2}/g, 'a');\n\t\treturn replacedText.length + (replacedText.length != sText ? 3 : 0);\n\t}\n\t\n\t/**\n\t * @class QRCode\n\t * @constructor\n\t * @example \n\t * new QRCode(document.getElementById(\"test\"), \"http://jindo.dev.naver.com/collie\");\n\t *\n\t * @example\n\t * var oQRCode = new QRCode(\"test\", {\n\t * text : \"http://naver.com\",\n\t * width : 128,\n\t * height : 128\n\t * });\n\t * \n\t * oQRCode.clear(); // Clear the QRCode.\n\t * oQRCode.makeCode(\"http://map.naver.com\"); // Re-create the QRCode.\n\t *\n\t * @param {HTMLElement|String} el target element or 'id' attribute of element.\n\t * @param {Object|String} vOption\n\t * @param {String} vOption.text QRCode link data\n\t * @param {Number} [vOption.width=256]\n\t * @param {Number} [vOption.height=256]\n\t * @param {String} [vOption.colorDark=\"#000000\"]\n\t * @param {String} [vOption.colorLight=\"#ffffff\"]\n\t * @param {QRCode.CorrectLevel} [vOption.correctLevel=QRCode.CorrectLevel.H] [L|M|Q|H] \n\t */\n\tQRCode = function (el, vOption) {\n\t\tthis._htOption = {\n\t\t\twidth : 256, \n\t\t\theight : 256,\n\t\t\ttypeNumber : 4,\n\t\t\tcolorDark : \"#000000\",\n\t\t\tcolorLight : \"#ffffff\",\n\t\t\tcorrectLevel : QRErrorCorrectLevel.H\n\t\t};\n\t\t\n\t\tif (typeof vOption === 'string') {\n\t\t\tvOption\t= {\n\t\t\t\ttext : vOption\n\t\t\t};\n\t\t}\n\t\t\n\t\t// Overwrites options\n\t\tif (vOption) {\n\t\t\tfor (var i in vOption) {\n\t\t\t\tthis._htOption[i] = vOption[i];\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (typeof el == \"string\") {\n\t\t\tel = document.getElementById(el);\n\t\t}\n\t\t\n\t\tthis._android = _getAndroid();\n\t\tthis._el = el;\n\t\tthis._oQRCode = null;\n this._oDrawer = this._htOption.useSVG ? svgDrawer : Drawing\n\t\tthis._oDrawing = new this._oDrawer(this._el, this._htOption);\n\t\t\n\t\tif (this._htOption.text) {\n\t\t\tthis.makeCode(this._htOption.text);\t\n\t\t}\n\t};\n\t\n\t/**\n\t * Make the QRCode\n\t * \n\t * @param {String} sText link data\n\t */\n\tQRCode.prototype.makeCode = function (sText) {\n\t\tthis._oQRCode = new QRCodeModel(_getTypeNumber(sText, this._htOption.correctLevel), this._htOption.correctLevel);\n\t\tthis._oQRCode.addData(sText);\n\t\tthis._oQRCode.make();\n\t\tthis._el.title = sText;\n\t\tthis._oDrawing.draw(this._oQRCode);\t\t\t\n\t\tthis.makeImage();\n\t};\n\t\n\t/**\n\t * Make the Image from Canvas element\n\t * - It occurs automatically\n\t * - Android below 3 doesn't support Data-URI spec.\n\t * \n\t * @private\n\t */\n\tQRCode.prototype.makeImage = function () {\n\t\tif (typeof this._oDrawing.makeImage == \"function\" && (!this._android || this._android >= 3)) {\n\t\t\tthis._oDrawing.makeImage();\n\t\t}\n\t};\n\t\n\t/**\n\t * Clear the QRCode\n\t */\n\tQRCode.prototype.clear = function () {\n\t\tthis._oDrawing.clear();\n\t};\n\t\n\t/**\n\t * @name QRCode.CorrectLevel\n\t */\n\tQRCode.CorrectLevel = QRErrorCorrectLevel;\n})();\n\nmodule.exports = QRCode\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\\n\";\n},\"useData\":true});","var $ = require('jquery')\n , setupHandleAnchorLinkClicked =\n require('shouyou/widgets/setupHandleAnchorLinkClicked')\n\n$(function() {\n if($('.js-tab').length>0){\n $(\".js-tab\").each(function() {\n $(\".tab:eq(0)\", $(this)).tabs($(\".tab-pn:eq(0) > div\", $(this)), {\n event: 'click'\n });\n });\n };\n\n var pandora = window.pandora\n\n if (pandora && $('.share-box').length) {\n pandora.use(['share'], function(Share) {\n new Share({\n element: '.share-box',\n shareList: 'weixin,qq,qzone,tsina',\n showLabel: false,\n importStyle: false,\n customShare : {\n weixin : {\n position : 'left'\n }\n }\n });\n });\n }\n\n var $backToTopEle = $('.bt-to-top').click(function() {\n $(\"html, body\").animate({\n scrollTop: 0\n }, 120);\n }),\n $backToTopFun = function() {\n var st = $(document).scrollTop(),\n winh = $(window).height();\n if(st > 0){\n $backToTopEle.css('display','block');\n }else{\n $backToTopEle.css('display','none');\n };\n };\n $(window).bind(\"scroll\", $backToTopFun);\n\n\n setupHandleAnchorLinkClicked({ topbarHeight: 45 })\n})\n","// Backbone.js 1.6.0\n\n// (c) 2010-2024 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global;\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$);\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.6.0';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // A private global variable to share between listeners and listenees.\n var _listening;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Find any remaining events.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n\n // Just _.defaults would work fine, but the additional _.extends\n // is in there for historical reasons. See #3843.\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) {\n var prevId = this.id;\n this.id = this.get(this.idAttribute);\n this.trigger('changeId', this, prevId, options);\n }\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) {\n m.off('error', collection._forwardPristineError, collection);\n collection.add(m, callbackOpts);\n }\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n // In case of wait:true, our collection is not listening to any\n // of the model's events yet, so it will not forward the error\n // event. In this special case, we need to listen for it\n // separately and handle the event just once.\n // (The reason we don't need to do this for the sync event is\n // in the success handler above: we add the model first, which\n // causes the collection to listen, and then invoke the callback\n // that triggers the event.)\n if (wait) {\n model.once('error', this._forwardPristineError, this);\n }\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs, idAttribute) {\n return attrs[idAttribute || this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n\n var model;\n if (this.model.prototype) {\n model = new this.model(attrs, options);\n } else {\n // ES class methods didn't have prototype\n model = this.model(attrs, options);\n }\n\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n if (models.length > 0 && !options.silent) delete options.index;\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'changeId') {\n var prevId = this.modelId(model.previousAttributes(), model.idAttribute);\n var id = this.modelId(model.attributes, model.idAttribute);\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n this.trigger.apply(this, arguments);\n },\n\n // Internal callback method used in `create`. It serves as a\n // stand-in for the `_onModelEvent` method, which is not yet bound\n // during the `wait` period of the `create` call. We still want to\n // forward any `'error'` event at the end of the `wait` period,\n // hence a customized callback.\n _forwardPristineError: function(model, collection, options) {\n // Prevent double forward if the model was already in the\n // collection before the call to `create`.\n if (this.has(model)) return;\n this._onModelEvent('error', model, collection, options);\n }\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes, model.idAttribute);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._trailingSlash = this.options.trailingSlash;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) {\n if (!this.matchRoot()) return this.notfound();\n return false;\n }\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return this.notfound();\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n }) || this.notfound();\n },\n\n // When no route could be matched, this method is called internally to\n // trigger the `'notfound'` event. It returns `false` so that it can be used\n // in tail position.\n notfound: function() {\n this.trigger('notfound');\n return false;\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Strip trailing slash on the root unless _trailingSlash is true\n var rootPath = this.root;\n if (!this._trailingSlash && (fragment === '' || fragment.charAt(0) === '?')) {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n // Provide useful information when things go wrong. This method is not meant\n // to be used directly; it merely provides the necessary introspection for the\n // external `debugInfo` function.\n Backbone._debug = function() {\n return {root: root, _: _};\n };\n\n return Backbone;\n});\n","var rNonQuerystring = /\\+/g\n\nvar deparam = exports.deparam = function (string) {\n var params = {}\n , paramsArray = string.replace(rNonQuerystring, ' ').split('&')\n\n for (var i = 0, l = paramsArray.length; i < l; i++) {\n var paramString = paramsArray[i]\n , pair = paramString.split('=')\n , paramName = decodeURIComponent([pair[0]])\n , paramValue = pair.length>2?decodeURIComponent([pair.slice(1).join('=')]):decodeURIComponent([pair[1]])\n if(/^.*\\[\\]$/.test(paramName)){\n paramName=paramName.substr(0,paramName.length-2);\n params[paramName]=params[paramName]||[];\n params[paramName].push(paramValue);\n continue;\n }\n paramName&&(params[paramName] = paramValue)\n }\n\n return params\n}\n\n// copy from\n// https://github.com/jfromaniello/url-join/blob/master/lib/url-join.js\n// version: b02169596877a1e6cd518f1b0d711f38c721fb02\nfunction normalize(str) {\n return str\n .replace(/[\\/]+/g, '/')\n .replace(/\\/\\?/g, '?')\n .replace(/\\/\\#/g, '#')\n .replace(/\\:\\//g, '://')\n}\n\nvar join = exports.join = function() {\n var joined = [].slice.call(arguments, 0).join('/')\n return normalize(joined)\n}\n\n\nfunction getUrlCompontents(url) {\n var hash = ''\n , search = ''\n , rest = url\n , hashIndex = rest.indexOf('#')\n , markIndex = rest.indexOf('?')\n\n if (hashIndex !== -1) {\n hash = rest.substr(hashIndex)\n rest = rest.slice(0, hashIndex)\n }\n\n if (markIndex !== -1) {\n search = rest.substr(markIndex)\n rest = rest.slice(0, markIndex)\n }\n\n return { rest: rest, search: search, hash: hash }\n}\n\nfunction removeSearch(url) {\n var compontents = getUrlCompontents(url)\n return compontents.rest + (compontents.hash || '')\n}\n\nexports.resetParams = function(url, params) {\n return exports.addParam(removeSearch(url), params)\n}\n\nexports.addParam = function(url, params) {\n var paramString = ''\n\n for (var key in params) {\n if (!params.hasOwnProperty(key)) { continue }\n\n var value = params[key]\n if (value === '' || typeof value === 'undefined') { continue }\n\n if (paramString) { paramString += '&' }\n paramString += encodeURIComponent(key)\n + '=' + encodeURIComponent(value)\n }\n\n if (!paramString) { return url }\n\n var compontents = getUrlCompontents(url);\n\n var hash = compontents.hash\n , search = compontents.search\n , rest = compontents.rest\n\n return (rest\n + (search ? (search + '&' + paramString) : ('?' + paramString))\n + (hash ? hash : ''))\n}\n\nvar hasSameOrigin = exports.hasSameOrigin = function(url, originUrl) {\n if (url[0] === '/') { return true }\n var rOrigin = new RegExp('^' + originUrl)\n return rOrigin.test(url)\n}\n\nexports.getRelativeUrl = function(url, originUrl) {\n if (url[0] === '/' || !hasSameOrigin(url, originUrl)) { return url }\n return join('/', url.substr(originUrl.length))\n}\n\nexports.getURLParameter = function(name, search) {\n search = search || location.search\n var param = search.split(name + '=')[1];\n return param ? decodeURIComponent(param.split('&')[0]) : null\n}\n\nvar rQuestionMark = /^\\?/\nexports.getURLParameters = function(search) {\n search = search || location.search\n search = search.replace(rQuestionMark, '');\n return deparam(search)\n}\n\n// Copy From Backbone.js#Backbone.Route\n// Gets the true hash value. Cannot use location.hash directly due to bug\n// in Firefox where location.hash will always be decoded.\nexports.getHash = function() {\n var match = window.location.href.match(/#(.*)$/)\n return match ? match[1] : ''\n}\n","var Backbone = require('backbone')\n , Overlay = require('ui/Overlay')\n\nmodule.exports = function(tmpl) {\n\n return function(View, options) {\n options = options || {}\n var dialogTitle = options.title\n\n return Backbone.View.extend({\n initialize: function(options) {\n this.overlay = new Overlay({ closable: true })\n this.view = new View(options)\n this.listenTo(this.view, 'close', this.close, this)\n }\n , events: {\n 'click .overlay-close': 'handleCloseClicked'\n }\n , handleCloseClicked: function(e) {\n e.preventDefault()\n this.close()\n }\n , open: function() {\n this.overlay.open()\n }\n , close: function() {\n this.overlay.close()\n }\n , render: function() {\n this.$el.html(tmpl({ title: dialogTitle }))\n this.$('.view-placeholder')\n .replaceWith(this.view.render().el)\n\n this.overlay.setBody(this.$el)\n return this\n }\n })\n }\n\n}\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nvar VERSION = '4.7.8';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n _internalProtoAccess.resetLoggedProperties();\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy44JztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \" \\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \\n\";\n},\"useData\":true});","var $ = require('jquery')\n , ERROR_MSG = '网络发生了错误'\n , openAlert = require('game-info/widgets/openAlert')\n , EngageForm = require('game-info/widgets/EngageForm')\n , ajaxEngageCurrentGame = require('apis/ajaxEngageCurrentGame')\n\nvar isAjaxing = false;\n\nmodule.exports = function(e) {\n var ued = window.ued || {}\n , element = $(e.currentTarget)\n , gameCode = element.data('game-code') || ued.gameCode\n , channelType = element.data('channel-type') || 'CHANNEL_PC'\n\n if (isAjaxing) { return }\n isAjaxing = true\n\n ajaxEngageCurrentGame(gameCode, channelType)\n .always(function() {\n isAjaxing = false\n })\n .done(function(userInfo) {\n var formDiaog = new EngageForm({\n userInfo: userInfo\n })\n\n formDiaog.render().open()\n })\n .fail(function(message) {\n return openAlert({ content: message || ERROR_MSG })\n })\n}\n","var Backbone = require('backbone')\n , _ = require('underscore')\n , tmpl = require('./tmpl.handlebars')\n , enableDialog = require('ui/enableDialog')\n , formUtils = require('@173js/ui/form')\n , ValidateForm = require('widgets/ValidateForm')\n , ued = window.ued || {}\n , openAlert = require('game-info/widgets/openAlert')\n , successTmpl = require('./success.handlebars')\n\nvar View = Backbone.View.extend({\n events: {\n 'submit form': 'formSubmitted'\n }\n, initialize: function(options) {\n options = options || {}\n this.userInfo = options.userInfo || {}\n }\n, ajaxSubmitForm: function(dict) {\n var ued = window.ued || {}\n , gameCode = ued.gameCode\n , form = this.form\n , ERROR = '0'\n , ERROR_MESSAGE = '网络发生了错误'\n\n formUtils.readonlyForm(form)\n\n return $.ajax({\n type: 'POST',\n url: '/track-updateUserInfo.html',\n dataType:'json',\n data: dict\n }).always(function() {\n formUtils.resumeForm(form)\n }).done(_.bind(function(resp) {\n if (resp.status !== ERROR) {\n this.trigger('close')\n return openAlert({\n html: successTmpl()\n , title: '预订成功'\n })\n }\n\n this.renderFieldErrors(\n _.map([{ message: resp.msg || ERROR_MESSAGE }])\n )\n }, this))\n .fail(_.bind(function() {\n this.renderFieldErrors(\n _.map([{ message: ERROR_MESSAGE }])\n )\n }, this))\n }\n, formSubmitted: function(e) {\n e.preventDefault()\n var dict = formUtils.toDict(this.$('form'))\n , HIDE_ERRORS = []\n\n this.renderFieldErrors(HIDE_ERRORS)\n\n if (!this.validateForm.validate()) {\n this.renderFieldErrors(this.validateForm.fieldErrors)\n return\n }\n\n this.ajaxSubmitForm(dict)\n }\n, fetchMemberInfo: function() {\n return $.getJSON('/game-getMemberInfo.html')\n }\n, render: function() {\n this.$el.html(tmpl(this.userInfo))\n\n this.form = this.$('form')\n this.validateForm = new ValidateForm({\n form: this.form\n })\n\n return this\n }\n, renderFieldErrors: function(fieldErrors) {\n // TODO: DRY\n var errorBlock = this.$('.errors-block')\n if (!fieldErrors || !fieldErrors.length) {\n errorBlock.hide()\n return\n }\n\n errorBlock.empty()\n\n _.each(fieldErrors, function(x) {\n if (!x.message) { return }\n errorBlock.append('');\n\t\t\t\t\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\n\t\t\t\t\taHTML.push(' ');\n\t\t\t}\n\t\t\t\n\t\t\taHTML.push('');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\taHTML.push(' 预订成功
\\n