{"version":3,"sources":["webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/auth/lib-esm/types/Auth.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/universal-cookie/es6/utils.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/universal-cookie/es6/Cookies.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/universal-cookie/es6/index.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/core/lib-esm/UniversalStorage/index.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/utils/cryptoSecureRandomInt.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/AuthenticationDetails.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/utils/WordArray.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/BigInteger.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/AuthenticationHelper.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/CognitoJwtToken.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/CognitoAccessToken.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/CognitoIdToken.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/CognitoRefreshToken.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/CognitoUserSession.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/DateHelper.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/CognitoUserAttribute.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/StorageHelper.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/CognitoUser.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/UserAgent.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/Client.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/auth/lib-esm/common/AuthErrorStrings.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/CognitoUserPool.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/es/CookieStorage.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/auth/lib-esm/OAuth/urlOpener.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/auth/lib-esm/OAuth/OAuth.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/core/lib-esm/Util/StringUtils.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/auth/lib-esm/OAuth/oauthStorage.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/auth/lib-esm/Errors.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/auth/lib-esm/Auth.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/auth/lib-esm/urlListener.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/amazon-cognito-identity-js/node_modules/buffer/index.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/core/lib-esm/ServiceWorker/ServiceWorker.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/cache/lib-esm/Utils/CacheUtils.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/cache/lib-esm/BrowserStorageCache.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/cache/lib-esm/StorageCache.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/@aws-amplify/cache/lib-esm/index.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/aws-amplify/lib-esm/index.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/base64-js/index.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/cookie/index.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/crypto-js/core.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/crypto-js/enc-base64.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/crypto-js/hmac-sha256.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/crypto-js/hmac.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/crypto-js/lib-typedarrays.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/crypto-js/sha256.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/ieee754/index.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/isarray/index.js","webpack://@microsites/inh0029-web/./node_modules/babel-loader/shared_ui/node_modules/js-cookie/src/js.cookie.js"],"names":["CognitoHostedUIIdentityProvider","AuthErrorTypes","isFederatedSignInOptions","obj","find","k","hasOwnProperty","isCognitoHostedOpts","oauth","undefined","redirectSignIn","readCookie","value","options","cleanValue","substr","cleanupCookieValue","doNotParse","isParsingCookie","JSON","parse","e","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","call","apply","this","Cookies","cookies","_this","changeListeners","HAS_DOCUMENT_COOKIE","cookie","parseCookies","Promise","document","catch","_updateBrowserValues","parseOptions","_emitChange","params","get","name","getAll","result","name_1","set","_a","stringify","remove","finalOptions","expires","Date","maxAge","addChangeListener","callback","push","removeChangeListener","idx","indexOf","splice","isBrowser","UniversalStorage","context","store","window","localStorage","create","req","headers","defineProperty","entries","enumerable","configurable","clear","Array","from","map","_","key","forEach","removeItem","getItem","getLocalItem","getUniversalItem","index","keys","removeLocalItem","removeUniversalItem","path","setItem","setLocalItem","split","pop","setUniversalItem","sameSite","secure","location","hostname","AuthenticationDetails","data","_ref","ValidationData","Username","Password","AuthParameters","ClientMetadata","validationData","authParameters","clientMetadata","username","password","_proto","getUsername","getPassword","getValidationData","getAuthParameters","getClientMetadata","crypto","msCrypto","g","err","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","readInt32LE","Error","dbits","WordArray","words","sigBytes","random","nBytes","toString","wordArray","hexChars","bite","join","hexStringify","a","b","fromString","nbi","inBrowser","navigator","appName","am","x","w","j","c","xl","xh","l","h","m","v","Math","floor","DB","DM","DV","FV","pow","F1","F2","rr","vv","BI_RC","charCodeAt","int2char","charAt","intAt","nbv","r","fromInt","nbits","Montgomery","mp","invDigit","mpl","mph","um","mt2","convert","abs","dlShiftTo","divRemTo","compareTo","ZERO","subTo","revert","copyTo","reduce","u0","clamp","drShiftTo","mulTo","y","multiplyTo","sqrTo","squareTo","mi","sh","max","lShiftTo","bs","cbs","bm","ds","rShiftTo","min","q","pm","pt","ts","ms","nsh","ys","y0","yt","d1","d2","ONE","qd","addTo","negate","d","km","bitLength","mod","equals","add","subtract","multiply","divide","modPow","z","k1","g2","is1","r2","AuthenticationHelper","PoolName","N","BigInteger","hexHash","smallAValue","generateRandomSmallA","getLargeAValue","infoBits","poolName","getSmallAValue","largeAValue","calculateA","hexRandom","generateRandomString","getRandomPassword","randomPassword","getSaltDevices","SaltToHashDevices","getVerifierDevices","verifierDevices","generateHashDevice","deviceGroupKey","_this2","combinedString","hashedString","hash","padHex","verifierDevicesNotPadded","_this3","A","calculateU","B","UHexHash","buf","str","hashHex","hexStr","computehkdf","ikm","salt","infoBitsWordArray","String","fromCharCode","ikmWordArray","saltWordArray","prk","hmac","slice","getPasswordAuthenticationKey","serverBValue","_this4","UValue","usernamePassword","usernamePasswordHash","xValue","calculateS","sValue","hkdf","_this5","gModPowXN","err2","getNewPasswordRequiredChallengeUserAttributePrefix","bigInt","hashStr","CognitoJwtToken","token","jwtToken","payload","decodePayload","getJwtToken","getExpiration","exp","getIssuedAt","iat","CognitoAccessToken","_CognitoJwtToken","subClass","superClass","_temp","AccessToken","constructor","__proto__","CognitoIdToken","IdToken","CognitoRefreshToken","RefreshToken","getToken","CognitoUserSession","ClockDrift","idToken","refreshToken","accessToken","clockDrift","calculateClockDrift","getIdToken","getRefreshToken","getAccessToken","getClockDrift","isValid","adjusted","monthNames","weekNames","DateHelper","getNowString","now","weekDay","getUTCDay","month","getUTCMonth","day","getUTCDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","getUTCFullYear","CognitoUserAttribute","Name","Value","getValue","setValue","getName","setName","toJSON","dataMemory","MemoryStorage","StorageHelper","storageWindow","exception","getStorage","userAgent","CognitoUser","Pool","pool","Session","client","signInUserSession","authenticationFlowType","storage","Storage","keyPrefix","getClientId","userDataKey","setSignInUserSession","clearCachedUserData","cacheTokens","getSignInUserSession","getAuthenticationFlowType","setAuthenticationFlowType","initiateAuth","authDetails","USERNAME","clientMetaData","jsonReq","AuthFlow","ClientId","getUserContextData","UserContextData","request","onFailure","challengeName","ChallengeName","challengeParameters","ChallengeParameters","customChallenge","getCognitoUserSession","AuthenticationResult","onSuccess","authenticateUser","authenticateUserPlainUsernamePassword","authenticateUserDefaultAuth","authenticationHelper","getUserPoolId","dateHelper","deviceKey","DEVICE_KEY","errOnAValue","aValue","SRP_A","CHALLENGE_NAME","USER_ID_FOR_SRP","SRP_B","SALT","getCachedDeviceKeyAndPassword","errOnHkdf","dateNow","message","SECRET_BLOCK","signatureString","challengeResponses","PASSWORD_CLAIM_SECRET_BLOCK","TIMESTAMP","PASSWORD_CLAIM_SIGNATURE","jsonReqResp","ChallengeResponses","respondToAuthChallenge","challenge","challengeCallback","errChallenge","dataChallenge","code","toLowerCase","clearCachedDeviceKeyAndPassword","errAuthenticate","dataAuthenticate","authenticateUserInternal","PASSWORD","authResult","mfaRequired","selectMFAType","mfaSetup","totpRequired","userAttributes","rawRequiredAttributes","requiredAttributes","userAttributesPrefix","newPasswordRequired","newDeviceMetadata","NewDeviceMetadata","DeviceGroupKey","DeviceKey","errGenHash","deviceSecretVerifierConfig","Salt","PasswordVerifier","DeviceSecretVerifierConfig","DeviceName","errConfirm","dataConfirm","cacheDeviceKeyAndPassword","UserConfirmationNecessary","getDeviceResponse","completeNewPasswordChallenge","newPassword","requiredAttributeData","finalUserAttributes","NEW_PASSWORD","_this6","errAValue","errHkdf","confirmRegistration","confirmationCode","forceAliasCreation","ConfirmationCode","ForceAliasCreation","sendCustomChallengeAnswer","answerChallenge","_this7","ANSWER","sendMFACode","mfaType","_this8","SMS_MFA_CODE","mfaTypeSelection","SOFTWARE_TOKEN_MFA_CODE","changePassword","oldUserPassword","newUserPassword","PreviousPassword","ProposedPassword","enableMFA","mfaOptions","DeliveryMedium","AttributeName","MFAOptions","setUserMfaPreference","smsMfaSettings","softwareTokenMfaSettings","SMSMfaSettings","SoftwareTokenMfaSettings","disableMFA","deleteUser","_this9","clearCachedUser","updateAttributes","attributes","_this10","UserAttributes","getUserData","bypassCache","getUserAttributes","userData","attributeList","attribute","userAttribute","getMFAOptions","createGetUserRequest","promisifyRequest","refreshSessionIfPossible","_this11","resolve","refresh","refreshSession","_this12","getUserDataFromCache","isFetchUserDataAndTokenRequired","fetchUserData","then","_ref$bypassCache","_this13","cacheUserData","deleteAttributes","UserAttributeNames","resendConfirmationCode","getSession","idTokenKey","accessTokenKey","refreshTokenKey","clockDriftKey","parseInt","cachedSession","_this14","wrappedCallback","wrapRefreshSessionCallback","REFRESH_TOKEN","lastUserKey","deviceKeyKey","authenticationResult","clearCachedTokens","randomPasswordKey","deviceGroupKeyKey","forgotPassword","inputVerificationCode","confirmPassword","getAttributeVerificationCode","attributeName","verifyAttribute","Code","getDevice","forgetSpecificDevice","forgetDevice","_this15","setDeviceStatusRemembered","DeviceRememberedStatus","setDeviceStatusNotRemembered","listDevices","limit","paginationToken","requestParams","Limit","PaginationToken","globalSignOut","_this16","signOut","sendMFASelectionAnswer","_this17","associateSoftwareToken","_this18","associateSecretCode","SecretCode","verifySoftwareToken","totpCode","friendlyDeviceName","_this19","UserCode","FriendlyDeviceName","errRespond","dataRespond","UserAgent","_wrapNativeSuper","Class","_cache","Map","fn","Function","TypeError","has","Wrapper","_construct","_getPrototypeOf","writable","_setPrototypeOf","Parent","args","_isNativeReflectConstruct","Reflect","construct","instance","bind","sham","Proxy","o","setPrototypeOf","getPrototypeOf","AuthErrorStrings","CognitoError","_Error","statusCode","Client","region","endpoint","fetchOptions","credentials","operation","reject","response","method","mode","cache","body","fetch","resp","json","ok","__type","error","Message","_error","status","ex","CognitoUserPool","UserPoolId","AdvancedSecurityDataCollectionFlag","test","userPoolId","clientId","advancedSecurityDataCollectionFlag","signUp","cognitoUser","returnData","user","userConfirmed","UserConfirmed","userSub","UserSub","codeDeliveryDetails","CodeDeliveryDetails","getCurrentUser","lastAuthUser","AmazonCognitoAdvancedSecurityData","amazonCognitoAdvancedSecurityDataConst","advancedSecurityData","getData","EncodedData","CookieStorage","domain","includes","launchUri","url","windowProxy","open","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","next","rejected","done","__generator","f","label","sent","trys","ops","verb","Symbol","iterator","op","__read","ar","AMPLIFY_SYMBOL","for","dispatchAuthEvent","event","Hub","logger","OAuth","config","cognitoClientId","_b","scopes","_urlOpener","urlOpener","_config","_cognitoClientId","isValidScopes","_scopes","isArray","every","scope","oauthSignIn","responseType","provider","customState","Cognito","generatedState","_generateState","state","char","padStart","sessionStorage","private_key","pkce_key","_generateRandom","code_challenge","_generateChallenge","scopesString","URL","redirect_uri","response_type","client_id","identity_provider","code_challenge_method","encodeURIComponent","debug","_handleCodeFlow","currentUrl","oAuthTokenEndpoint","code_verifier","oAuthTokenBody","access_token","refresh_token","id_token","query","pairings","accum","_c","pathname","clientID","redirectUri","ouath_pkce_key","grant_type","_handleImplicitFlow","handleAuthResponse","urlParams","error_description","e_1","entry","acc","_validateState","concat","oauth_state","savedState","returnedState","oAuthLogoutEndpoint","signout_uri","redirectSignOut","returnTo","logout_uri","oAuth","chars","round","_base64URL","string","replace","size","buffer","Uint8Array","_bufferToString","CHARSET","byteLength","_extendStatics","__extends","__","AuthError","_super","type","authErrorMessages","log","NoUserPoolError","noConfig","DEFAULT_MSG","missingAuthConfig","emptyUsername","EMPTY_USERNAME","invalidUsername","INVALID_USERNAME","emptyPassword","EMPTY_PASSWORD","emptyCode","EMPTY_CODE","signUpError","SIGN_UP_ERROR","noMFA","NO_MFA","invalidMFA","INVALID_MFA","emptyChallengeResponse","EMPTY_CHALLENGE","noUserSession","NO_USER_SESSION","default","USER_ADMIN_SCOPE","Auth","AuthClass","userPool","oAuthFlowInProgress","Credentials","configure","currentCredentials","currentUserCredentials","_storage","getModuleName","conf","Parser","userPoolWebClientId","cookieStorage","identityPoolId","mandatorySignIn","refreshHandlers","identityPoolRegion","_isValidAuthStorage","ssr","_storageSync","userPoolData","cognitoHostedUIConfig","awsCognito","cognitoAuthParams","_oAuthHandler","usedResponseUrls_1","JS","href","isNode","urlListener","_handleAuthResponse","restOfAttrs","_i","rejectNoUserPool","email","phone_number","rejectAuthError","SignUpError","attrs_1","ele","EmptyPassword","EmptyUsername","confirmSignUp","EmptyCode","createCognitoUser","resendSignUp","signIn","usernameOrSignInOpts","pw","InvalidUsername","warn","signInWithPassword","signInWithoutPassword","authCallbacks","that","session","cred","currentUser","e_2","currentUserPoolUser","challengeParam","pendingSignIn","res","rej","getPreferredMFA","_getMfaTypeFromUserData","ret","preferredMFA","PreferredMfaSetting","mfaList","UserMFASettingList","_getUserData","setPreferredMFA","mfaMethod","totpMfaSettings","currentMFAType","PreferredMfa","Enabled","InvalidMFA","NoMFA","disableSMS","enableSMS","setupTOTP","secretCode","verifyTotpToken","challengeAnswer","confirmSignIn","e_3","completeNewPassword","e_4","EmptyChallengeResponse","updateUserAttributes","userSession","attr","verifiedContact","attrs","attributesToObject","unverified","verified","isOAuthInProgress","timeoutId","setTimeout","hostedUISignCallback","clearTimeout","currentAuthenticatedUser","federatedUser","e_5","federatedInfo","e_6","currentSession","NoUserSession","e_7","refreshFederatedToken","verifyUserAttribute","verifyUserAttributeSubmit","verifyCurrentUserAttribute","verifyCurrentUserAttributeSubmit","cognitoIdentitySignOut","opts","e_8","isSignedInHostedUI","global","oAuthSignOutRedirect","oAuthSignOutRedirectOrReject","oAuthSignOutAndResolve","cleanCachedItems","oldPassword","forgotPasswordSubmit","currentUserInfo","source","userAttrs","e_10","err_1","getCredSource","id","identityId","federatedSignIn","providerOrOptions","loggedInUser","identity_id","expires_at","hasCustomState","customProvider","hasCodeOrError","hasTokenOrError","isCustomStateIncluded","err_2","history","replaceState","match","essentialCredentials","accessKeyId","sessionToken","secretAccessKey","authenticated","noUserPoolErrorHandler","NoConfig","MissingAuthConfig","Amplify","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","arg","encodingOrOffset","allocUnsafe","ArrayBuffer","array","byteOffset","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","write","isBuffer","len","checked","copy","val","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","lastIndexOf","arr","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","offset","Number","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","exports","foo","subarray","typedArraySupport","poolSize","_augment","species","alloc","fill","allocUnsafeSlow","_isBuffer","compare","list","pos","swap16","swap32","swap64","inspect","target","thisStart","thisEnd","thisCopy","targetCopy","isFinite","_arr","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","stringtrim","base64clean","src","dst","ServiceWorkerClass","_logger","_serviceWorker","register","filePath","serviceWorker","registration","installing","waiting","active","_registration","_setupListeners","enablePush","publicKey","_publicKey","pushManager","getSubscription","subscription","subscribe","userVisibleOnly","applicationServerKey","_urlB64ToUint8Array","_subscription","base64String","repeat","rawData","atob","outputArray","send","postMessage","addEventListener","currentState","defaultConfig","capacityInBytes","itemMaxSize","defaultTTL","defaultPriority","warningThreshold","getByteLength","charCode","getCurrTime","getTime","isInteger","_isInteger","CacheObject","StorageCache","cacheCurSizeKey","checkConfig","fillCacheItem","timestamp","visitedTime","priority","byteSize","Cache","BrowserStorageCache","BrowserStorageCacheClass","cacheConfig","_decreaseCurSizeInBytes","amount","curSize","getCacheCurSize","_increaseCurSizeInBytes","_refreshItem","item","prefixedKey","_isExpired","text","_removeItem","itemSize","_setItem","setItemErr","_sizeToPop","spaceItemNeed","cacheThresholdSpace","_isCacheFull","_findValidKeys","keyInCache","_popOutItems","sizeToPop","items","remainedSize","sort","cacheItemOptions","validKeys","keysToRemove","getAllKeys","substring","createInstance","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","num","output","opt","pairs","pairSplitRegExp","dec","decode","pair","eq_idx","tryDecode","enc","encode","fieldContentRegExp","toUTCString","httpOnly","decodeURIComponent","CryptoJS","module","F","subtype","C","C_lib","lib","Base","extend","overrides","mixIn","init","$super","properties","propertyName","clone","encoder","Hex","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","ceil","rcache","m_w","m_z","mask","_r","C_enc","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","escape","utf8Str","unescape","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","_process","doFlush","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","_minBufferSize","nBytesReady","_doProcessBlock","processedWords","C_algo","Hasher","cfg","_doReset","update","messageUpdate","finalize","_doFinalize","_createHelper","hasher","_createHmacHelper","HMAC","algo","parseLoop","base64Str","base64StrLength","reverseMap","bits1","bits2","Base64","_map","base64Chars","triplet","paddingChar","_reverseMap","paddingIndex","HmacSHA256","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","superInit","typedArray","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","typedArrayByteLength","H","K","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","W","SHA256","_hash","M","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","t1","nBitsTotal","nBitsLeft","isLE","mLen","eLen","eMax","eBias","nBits","NaN","rt","LN2","factory","OldCookies","api","noConflict","converter","defaults","stringifiedAttributes","jar","getJSON","withConverter"],"mappings":";wIAYO,IAAIA,EA+BAC,EArBJ,SAASC,EAAyBC,GAEvC,OAAOA,KADI,CAAC,YACSC,MAAK,SAAUC,GAClC,OAAOF,EAAIG,eAAeD,MAevB,SAASE,EAAoBC,GAClC,YAAgCC,IAAzBD,EAAME,e,iCA3Bf,SAAWV,GACTA,EAAyC,QAAI,UAC7CA,EAAwC,OAAI,SAC5CA,EAA0C,SAAI,WAC9CA,EAAwC,OAAI,kBAC5CA,EAAuC,MAAI,kBAL7C,CAMGA,IAAoCA,EAAkC,KAyBzE,SAAWC,GACTA,EAAyB,SAAI,WAC7BA,EAAkC,kBAAI,oBACtCA,EAA8B,cAAI,gBAClCA,EAAgC,gBAAI,kBACpCA,EAA8B,cAAI,gBAClCA,EAA0B,UAAI,YAC9BA,EAA4B,YAAI,cAChCA,EAAsB,MAAI,QAC1BA,EAA2B,WAAI,aAC/BA,EAAuC,uBAAI,yBAC3CA,EAA8B,cAAI,gBAClCA,EAAwB,QAAI,UAZ9B,CAaGA,IAAmBA,EAAiB,K,eC/BhC,SAASU,EAAWC,EAAOC,QAChB,IAAZA,IACFA,EAAU,IAGZ,IAAIC,EAcN,SAA4BF,GAE1B,GAAIA,GAAsB,MAAbA,EAAM,IAA2B,MAAbA,EAAM,GACrC,OAAOA,EAAMG,OAAO,GAGtB,OAAOH,EApBUI,CAAmBJ,GAEpC,GAfK,SAAyBA,EAAOK,GAMrC,YAL0B,IAAfA,IAETA,GAAcL,GAAsB,MAAbA,EAAM,IAA2B,MAAbA,EAAM,IAA2B,MAAbA,EAAM,KAG/DK,EASJC,CAAgBJ,EAAYD,EAAQI,YACtC,IACE,OAAOE,KAAKC,MAAMN,GAClB,MAAOO,IAMX,OAAOT,EC3CT,IAAIU,EAAoC,WAatC,OAZAA,EAAWC,OAAOC,QAAU,SAAUC,GACpC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAG9C,IAAK,IAAII,KAFTL,EAAIG,UAAUF,GAGRJ,OAAOS,UAAU1B,eAAe2B,KAAKP,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAI7D,OAAON,IAGOS,MAAMC,KAAMN,YCZ9B,EDoBA,WACE,SAASO,EAAQC,EAASxB,GACxB,IAAIyB,EAAQH,KAEZA,KAAKI,gBAAkB,GACvBJ,KAAKK,qBAAsB,EAC3BL,KAAKE,QDjBF,SAAsBA,EAASxB,GACpC,MAAuB,iBAAZwB,EACFI,EAAA,EAAaJ,EAASxB,GACD,iBAAZwB,GAAoC,OAAZA,EACjCA,EAEA,GCWQK,CAAaL,EAASxB,GACrC,IAAI8B,SAAQ,WACVL,EAAME,oBD1BiB,iBAAbI,UAAoD,iBAApBA,SAASH,UC2BlDI,OAAM,eA+FX,OA5FAT,EAAQJ,UAAUc,qBAAuB,SAAUC,GAC5CZ,KAAKK,sBAIVL,KAAKE,QAAUI,EAAA,EAAaG,SAASH,OAAQM,KAG/CX,EAAQJ,UAAUgB,YAAc,SAAUC,GACxC,IAAK,IAAItB,EAAI,EAAGA,EAAIQ,KAAKI,gBAAgBT,SAAUH,EACjDQ,KAAKI,gBAAgBZ,GAAGsB,IAI5Bb,EAAQJ,UAAUkB,IAAM,SAAUC,EAAMtC,EAASkC,GAO/C,YANgB,IAAZlC,IACFA,EAAU,IAGZsB,KAAKW,qBAAqBC,GAEnBpC,EAAWwB,KAAKE,QAAQc,GAAOtC,IAGxCuB,EAAQJ,UAAUoB,OAAS,SAAUvC,EAASkC,QAC5B,IAAZlC,IACFA,EAAU,IAGZsB,KAAKW,qBAAqBC,GAE1B,IAAIM,EAAS,GAEb,IAAK,IAAIC,KAAUnB,KAAKE,QACtBgB,EAAOC,GAAU3C,EAAWwB,KAAKE,QAAQiB,GAASzC,GAGpD,OAAOwC,GAGTjB,EAAQJ,UAAUuB,IAAM,SAAUJ,EAAMvC,EAAOC,GAC7C,IAAI2C,EAEiB,iBAAV5C,IACTA,EAAQO,KAAKsC,UAAU7C,IAGzBuB,KAAKE,QAAUf,EAASA,EAAS,GAAIa,KAAKE,WAAWmB,EAAK,IAAOL,GAAQvC,EAAO4C,IAE5ErB,KAAKK,sBACPI,SAASH,OAASA,EAAA,EAAiBU,EAAMvC,EAAOC,IAGlDsB,KAAKa,YAAY,CACfG,KAAMA,EACNvC,MAAOA,EACPC,QAASA,KAIbuB,EAAQJ,UAAU0B,OAAS,SAAUP,EAAMtC,GACzC,IAAI8C,EAAe9C,EAAUS,EAASA,EAAS,GAAIT,GAAU,CAC3D+C,QAAS,IAAIC,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GACpCC,OAAQ,IAGV3B,KAAKE,QAAUf,EAAS,GAAIa,KAAKE,gBAC1BF,KAAKE,QAAQc,GAEhBhB,KAAKK,sBACPI,SAASH,OAASA,EAAA,EAAiBU,EAAM,GAAIQ,IAG/CxB,KAAKa,YAAY,CACfG,KAAMA,EACNvC,WAAOH,EACPI,QAASA,KAIbuB,EAAQJ,UAAU+B,kBAAoB,SAAUC,GAC9C7B,KAAKI,gBAAgB0B,KAAKD,IAG5B5B,EAAQJ,UAAUkC,qBAAuB,SAAUF,GACjD,IAAIG,EAAMhC,KAAKI,gBAAgB6B,QAAQJ,GAEnCG,GAAO,GACThC,KAAKI,gBAAgB8B,OAAOF,EAAK,IAI9B/B,EAxGT,G,UEnBIkC,GAAY,UAAgBA,UAE5BC,EAEJ,WACE,SAASA,EAAiBC,QACR,IAAZA,IACFA,EAAU,IAGZrC,KAAKE,QAAU,IAAI,EACnBF,KAAKsC,MAAQH,EAAYI,OAAOC,aAAepD,OAAOqD,OAAO,MAC7DzC,KAAKE,QAAUmC,EAAQK,IAAM,IAAI,EAAQL,EAAQK,IAAIC,QAAQrC,QAAU,IAAI,EAC3ElB,OAAOC,OAAOW,KAAKsC,MAAOtC,KAAKE,QAAQe,UA2FzC,OAxFA7B,OAAOwD,eAAeR,EAAiBvC,UAAW,SAAU,CAC1DkB,IAAK,WACH,OAAO3B,OAAOyD,QAAQ7C,KAAKsC,OAAO3C,QAEpCmD,YAAY,EACZC,cAAc,IAGhBX,EAAiBvC,UAAUmD,MAAQ,WACjC,IAAI7C,EAAQH,KAEZiD,MAAMC,KAAK,IAAID,MAAMjD,KAAKL,SAASwD,KAAI,SAAUC,EAAG5D,GAClD,OAAOW,EAAMkD,IAAI7D,MAChB8D,SAAQ,SAAUD,GACnB,OAAOlD,EAAMoD,WAAWF,OAI5BjB,EAAiBvC,UAAU2D,QAAU,SAAUH,GAC7C,OAAOrD,KAAKyD,aAAaJ,IAG3BjB,EAAiBvC,UAAU4D,aAAe,SAAUJ,GAClD,OAAOjE,OAAOS,UAAU1B,eAAe2B,KAAKE,KAAKsC,MAAOe,GAAOrD,KAAKsC,MAAMe,GAAO,MAGnFjB,EAAiBvC,UAAU6D,iBAAmB,SAAUL,GACtD,OAAOrD,KAAKE,QAAQa,IAAIsC,IAG1BjB,EAAiBvC,UAAUwD,IAAM,SAAUM,GACzC,OAAOvE,OAAOwE,KAAK5D,KAAKsC,OAAOqB,IAGjCvB,EAAiBvC,UAAU0D,WAAa,SAAUF,GAChDrD,KAAK6D,gBAAgBR,GACrBrD,KAAK8D,oBAAoBT,IAG3BjB,EAAiBvC,UAAUgE,gBAAkB,SAAUR,UAC9CrD,KAAKsC,MAAMe,IAGpBjB,EAAiBvC,UAAUiE,oBAAsB,SAAUT,GACzDrD,KAAKE,QAAQqB,OAAO8B,EAAK,CACvBU,KAAM,OAIV3B,EAAiBvC,UAAUmE,QAAU,SAAUX,EAAK5E,GAOlD,OANAuB,KAAKiE,aAAaZ,EAAK5E,GAIP4E,EAAIa,MAAM,KAAKC,OAI7B,IAAK,eAEL,IAAK,cAEL,IAAK,UACHnE,KAAKoE,iBAAiBf,EAAK5E,KAWjC2D,EAAiBvC,UAAUoE,aAAe,SAAUZ,EAAK5E,GACvDuB,KAAKsC,MAAMe,GAAO5E,GAGpB2D,EAAiBvC,UAAUuE,iBAAmB,SAAUf,EAAK5E,GAC3DuB,KAAKE,QAAQkB,IAAIiC,EAAK5E,EAAO,CAC3BsF,KAAM,IAENM,UAAU,EAEVC,OAAqC,cAA7B/B,OAAOgC,SAASC,YAIrBpC,EApGT,G,ICNI,E,kECkBAqC,EAAqC,WASvC,SAASA,EAAsBC,GAC7B,IAAIC,EAAOD,GAAQ,GACfE,EAAiBD,EAAKC,eACtBC,EAAWF,EAAKE,SAChBC,EAAWH,EAAKG,SAChBC,EAAiBJ,EAAKI,eACtBC,EAAiBL,EAAKK,eAE1BhF,KAAKiF,eAAiBL,GAAkB,GACxC5E,KAAKkF,eAAiBH,GAAkB,GACxC/E,KAAKmF,eAAiBH,GAAkB,GACxChF,KAAKoF,SAAWP,EAChB7E,KAAKqF,SAAWP,EAOlB,IAAIQ,EAASb,EAAsB5E,UAsCnC,OApCAyF,EAAOC,YAAc,WACnB,OAAOvF,KAAKoF,UAOdE,EAAOE,YAAc,WACnB,OAAOxF,KAAKqF,UAOdC,EAAOG,kBAAoB,WACzB,OAAOzF,KAAKiF,gBAOdK,EAAOI,kBAAoB,WACzB,OAAO1F,KAAKkF,gBAOdI,EAAOK,kBAAoB,WACzB,OAAO3F,KAAKmF,gBAGPV,EAlEgC,G,+EDDzC,GAfsB,oBAAXlC,QAA0BA,OAAOqD,SAC1C,EAASrD,OAAOqD,SAIb,GAA4B,oBAAXrD,QAA0BA,OAAOsD,WACrD,EAAStD,OAAOsD,WAIb,QAA4B,IAAX,EAAAC,GAA0B,EAAAA,EAAOF,SACrD,EAAS,EAAAE,EAAOF,SAIb,EACH,IACE,EAAS,EAAQ,OACjB,MAAOG,KAQI,SAASC,IACtB,GAAI,EAAQ,CAEV,GAAsC,mBAA3B,EAAOC,gBAChB,IACE,OAAO,EAAOA,gBAAgB,IAAIC,YAAY,IAAI,GAClD,MAAOH,KAIX,GAAkC,mBAAvB,EAAOI,YAChB,IACE,OAAO,EAAOA,YAAY,GAAGC,cAC7B,MAAOL,MAIb,MAAM,IAAIM,MAAM,uEEpBlB,ICkCIC,EDlCAC,EAAyB,WAC3B,SAASA,EAAUC,EAAOC,GACxBD,EAAQxG,KAAKwG,MAAQA,GAAS,GAG5BxG,KAAKyG,SADSnI,MAAZmI,EACcA,EAEe,EAAfD,EAAM7G,OAI1B,IAAI2F,EAASiB,EAAU1G,UAgBvB,OAdAyF,EAAOoB,OAAS,SAAgBC,GAG9B,IAFA,IAAIH,EAAQ,GAEHhH,EAAI,EAAGA,EAAImH,EAAQnH,GAAK,EAC/BgH,EAAM1E,KAAKkE,KAGb,OAAO,IAAIO,EAAUC,EAAOG,IAG9BrB,EAAOsB,SAAW,WAChB,OAxCJ,SAAsBC,GAOpB,IALA,IAAIL,EAAQK,EAAUL,MAClBC,EAAWI,EAAUJ,SAErBK,EAAW,GAENtH,EAAI,EAAGA,EAAIiH,EAAUjH,IAAK,CACjC,IAAIuH,EAAOP,EAAMhH,IAAM,KAAO,GAAKA,EAAI,EAAI,EAAI,IAC/CsH,EAAShF,MAAMiF,IAAS,GAAGH,SAAS,KACpCE,EAAShF,MAAa,GAAPiF,GAAaH,SAAS,KAGvC,OAAOE,EAASE,KAAK,IA2BZC,CAAajH,OAGfuG,EA3BoB,GCT7B,IAiCA,SAAS,EAAWW,EAAGC,GACZ,MAALD,GAAWlH,KAAKoH,WAAWF,EAAGC,GAIpC,SAASE,IACP,OAAO,IAAI,EAAW,MA8DxB,IAAIC,EAAiC,oBAAdC,UAEnBD,GAA0C,+BAArBC,UAAUC,SACjC,EAAW3H,UAAU4H,GArCvB,SAAajI,EAAGkI,EAAGC,EAAGC,EAAGC,EAAGpI,GAI1B,IAHA,IAAIqI,EAAS,MAAJJ,EACLK,EAAKL,GAAK,KAELjI,GAAK,GAAG,CACf,IAAIuI,EAAc,MAAVhI,KAAKR,GACTyI,EAAIjI,KAAKR,MAAQ,GACjB0I,EAAIH,EAAKC,EAAIC,EAAIH,EAErBD,IADAG,EAAIF,EAAKE,IAAU,MAAJE,IAAe,IAAMP,EAAEC,IAAU,WAAJC,MACjC,KAAOK,IAAM,IAAMH,EAAKE,GAAKJ,IAAM,IAC9CF,EAAEC,KAAW,WAAJI,EAGX,OAAOH,GAyBPvB,EAAQ,IACCgB,GAA0C,YAArBC,UAAUC,SACxC,EAAW3H,UAAU4H,GArDvB,SAAajI,EAAGkI,EAAGC,EAAGC,EAAGC,EAAGpI,GAC1B,OAASA,GAAK,GAAG,CACf,IAAI0I,EAAIT,EAAI1H,KAAKR,KAAOmI,EAAEC,GAAKC,EAC/BA,EAAIO,KAAKC,MAAMF,EAAI,UACnBR,EAAEC,KAAW,SAAJO,EAGX,OAAON,GA+CPvB,EAAQ,KAGR,EAAWzG,UAAU4H,GA1BvB,SAAajI,EAAGkI,EAAGC,EAAGC,EAAGC,EAAGpI,GAI1B,IAHA,IAAIqI,EAAS,MAAJJ,EACLK,EAAKL,GAAK,KAELjI,GAAK,GAAG,CACf,IAAIuI,EAAc,MAAVhI,KAAKR,GACTyI,EAAIjI,KAAKR,MAAQ,GACjB0I,EAAIH,EAAKC,EAAIC,EAAIH,EAErBD,IADAG,EAAIF,EAAKE,IAAU,MAAJE,IAAe,IAAMP,EAAEC,GAAKC,IACjC,KAAOK,GAAK,IAAMH,EAAKE,EACjCN,EAAEC,KAAW,UAAJI,EAGX,OAAOH,GAcPvB,EAAQ,IAGV,EAAWzG,UAAUyI,GAAKhC,EAC1B,EAAWzG,UAAU0I,IAAM,GAAKjC,GAAS,EACzC,EAAWzG,UAAU2I,GAAK,GAAKlC,EAE/B,EAAWzG,UAAU4I,GAAKL,KAAKM,IAAI,EADvB,IAEZ,EAAW7I,UAAU8I,GAFT,GAEsBrC,EAClC,EAAWzG,UAAU+I,GAAK,EAAItC,EAHlB,GAKZ,IAEIuC,EAAIC,EADJC,EAAQ,IAAI9F,MAIhB,IAFA4F,EAAK,IAAIG,WAAW,GAEfF,EAAK,EAAGA,GAAM,IAAKA,EACtBC,EAAMF,KAAQC,EAKhB,IAFAD,EAAK,IAAIG,WAAW,GAEfF,EAAK,GAAIA,EAAK,KAAMA,EACvBC,EAAMF,KAAQC,EAKhB,IAFAD,EAAK,IAAIG,WAAW,GAEfF,EAAK,GAAIA,EAAK,KAAMA,EACvBC,EAAMF,KAAQC,EAGhB,SAASG,EAASxJ,GAChB,MAtBU,uCAsBGyJ,OAAOzJ,GAGtB,SAAS0J,EAAM5J,EAAGC,GAChB,IAAIqI,EAAIkB,EAAMxJ,EAAEyJ,WAAWxJ,IAC3B,OAAY,MAALqI,GAAa,EAAIA,EAqB1B,SAASuB,EAAI5J,GACX,IAAI6J,EAAIhC,IAER,OADAgC,EAAEC,QAAQ9J,GACH6J,EA8GT,SAASE,EAAM7B,GACb,IACIpI,EADA+J,EAAI,EA4BR,OAzBsB,IAAjB/J,EAAIoI,IAAM,MACbA,EAAIpI,EACJ+J,GAAK,IAGa,IAAf/J,EAAIoI,GAAK,KACZA,EAAIpI,EACJ+J,GAAK,GAGa,IAAf/J,EAAIoI,GAAK,KACZA,EAAIpI,EACJ+J,GAAK,GAGa,IAAf/J,EAAIoI,GAAK,KACZA,EAAIpI,EACJ+J,GAAK,GAGa,IAAf/J,EAAIoI,GAAK,KACZA,EAAIpI,EACJ+J,GAAK,GAGAA,EAqWT,SAASG,EAAWtB,GAClBlI,KAAKkI,EAAIA,EACTlI,KAAKyJ,GAAKvB,EAAEwB,WACZ1J,KAAK2J,IAAgB,MAAV3J,KAAKyJ,GAChBzJ,KAAK4J,IAAM5J,KAAKyJ,IAAM,GACtBzJ,KAAK6J,IAAM,GAAK3B,EAAEI,GAAK,IAAM,EAC7BtI,KAAK8J,IAAM,EAAI5B,EAAE5I,EA0DnBkK,EAAW3J,UAAUkK,QAtDrB,SAAqBrC,GACnB,IAAI2B,EAAIhC,IAIR,OAHAK,EAAEsC,MAAMC,UAAUjK,KAAKkI,EAAE5I,EAAG+J,GAC5BA,EAAEa,SAASlK,KAAKkI,EAAG,KAAMmB,GACrB3B,EAAEnI,EAAI,GAAK8J,EAAEc,UAAU,EAAWC,MAAQ,GAAGpK,KAAKkI,EAAEmC,MAAMhB,EAAGA,GAC1DA,GAkDTG,EAAW3J,UAAUyK,OA9CrB,SAAoB5C,GAClB,IAAI2B,EAAIhC,IAGR,OAFAK,EAAE6C,OAAOlB,GACTrJ,KAAKwK,OAAOnB,GACLA,GA2CTG,EAAW3J,UAAU2K,OAvCrB,SAAoB9C,GAClB,KAAOA,EAAEpI,GAAKU,KAAK8J,KAEjBpC,EAAEA,EAAEpI,KAAO,EAGb,IAAK,IAAIE,EAAI,EAAGA,EAAIQ,KAAKkI,EAAE5I,IAAKE,EAAG,CAEjC,IAAIoI,EAAW,MAAPF,EAAElI,GACNiL,EAAK7C,EAAI5H,KAAK2J,MAAQ/B,EAAI5H,KAAK4J,KAAOlC,EAAElI,IAAM,IAAMQ,KAAK2J,IAAM3J,KAAK6J,KAAO,IAAMnC,EAAEa,GAKvF,IAFAb,EADAE,EAAIpI,EAAIQ,KAAKkI,EAAE5I,IACPU,KAAKkI,EAAET,GAAG,EAAGgD,EAAI/C,EAAGlI,EAAG,EAAGQ,KAAKkI,EAAE5I,GAElCoI,EAAEE,IAAMF,EAAEc,IACfd,EAAEE,IAAMF,EAAEc,GACVd,IAAIE,KAIRF,EAAEgD,QACFhD,EAAEiD,UAAU3K,KAAKkI,EAAE5I,EAAGoI,GAClBA,EAAEyC,UAAUnK,KAAKkI,IAAM,GAAGR,EAAE2C,MAAMrK,KAAKkI,EAAGR,IAkBhD8B,EAAW3J,UAAU+K,MARrB,SAAmBlD,EAAGmD,EAAGxB,GACvB3B,EAAEoD,WAAWD,EAAGxB,GAChBrJ,KAAKwK,OAAOnB,IAOdG,EAAW3J,UAAUkL,MAfrB,SAAmBrD,EAAG2B,GACpB3B,EAAEsD,SAAS3B,GACXrJ,KAAKwK,OAAOnB,IAqGd,EAAWxJ,UAAU0K,OAhqBrB,SAAmBlB,GACjB,IAAK,IAAI7J,EAAIQ,KAAKV,EAAI,EAAGE,GAAK,IAAKA,EACjC6J,EAAE7J,GAAKQ,KAAKR,GAGd6J,EAAE/J,EAAIU,KAAKV,EACX+J,EAAE9J,EAAIS,KAAKT,GA2pBb,EAAWM,UAAUyJ,QAvpBrB,SAAoB5B,GAClB1H,KAAKV,EAAI,EACTU,KAAKT,EAAImI,EAAI,GAAK,EAAI,EAClBA,EAAI,EAAG1H,KAAK,GAAK0H,EAAWA,GAAK,EAAG1H,KAAK,GAAK0H,EAAI1H,KAAKwI,GAAQxI,KAAKV,EAAI,GAqpB9E,EAAWO,UAAUuH,WA1oBrB,SAAuB7H,EAAG4H,GACxB,IAAIjJ,EACJ,GAAS,IAALiJ,EAASjJ,EAAI,OAAO,GAAS,GAALiJ,EAAQjJ,EAAI,OAAO,GAAS,GAALiJ,EAAQjJ,EAAI,OAAO,GAAS,IAALiJ,EAASjJ,EAAI,MAAO,IAAS,GAALiJ,EAAmB,MAAM,IAAId,MAAM,4CAA3BnI,EAAI,EAC9G8B,KAAKV,EAAI,EACTU,KAAKT,EAAI,EAKT,IAJA,IAAIC,EAAID,EAAEI,OACNsL,GAAK,EACLC,EAAK,IAEA1L,GAAK,GAAG,CACf,IAAIkI,EAAIyB,EAAM5J,EAAGC,GAEbkI,EAAI,EACa,KAAfnI,EAAE2J,OAAO1J,KAAWyL,GAAK,IAI/BA,GAAK,EACK,GAANC,EAASlL,KAAKA,KAAKV,KAAOoI,EAAWwD,EAAKhN,EAAI8B,KAAKsI,IACrDtI,KAAKA,KAAKV,EAAI,KAAOoI,GAAK,GAAK1H,KAAKsI,GAAK4C,GAAM,IAAMA,EACrDlL,KAAKA,KAAKV,KAAOoI,GAAK1H,KAAKsI,GAAK4C,GAC3BlL,KAAKA,KAAKV,EAAI,IAAMoI,GAAKwD,GAChCA,GAAMhN,IACI8B,KAAKsI,KAAI4C,GAAMlL,KAAKsI,KAGhCtI,KAAK0K,QACDO,GAAI,EAAWb,KAAKC,MAAMrK,KAAMA,OAgnBtC,EAAWH,UAAU6K,MA5mBrB,WAGE,IAFA,IAAI7C,EAAI7H,KAAKT,EAAIS,KAAKuI,GAEfvI,KAAKV,EAAI,GAAKU,KAAKA,KAAKV,EAAI,IAAMuI,KACrC7H,KAAKV,GAymBX,EAAWO,UAAUoK,UA3frB,SAAsBxK,EAAG4J,GACvB,IAAI7J,EAEJ,IAAKA,EAAIQ,KAAKV,EAAI,EAAGE,GAAK,IAAKA,EAC7B6J,EAAE7J,EAAIC,GAAKO,KAAKR,GAGlB,IAAKA,EAAIC,EAAI,EAAGD,GAAK,IAAKA,EACxB6J,EAAE7J,GAAK,EAGT6J,EAAE/J,EAAIU,KAAKV,EAAIG,EACf4J,EAAE9J,EAAIS,KAAKT,GAgfb,EAAWM,UAAU8K,UA5erB,SAAsBlL,EAAG4J,GACvB,IAAK,IAAI7J,EAAIC,EAAGD,EAAIQ,KAAKV,IAAKE,EAC5B6J,EAAE7J,EAAIC,GAAKO,KAAKR,GAGlB6J,EAAE/J,EAAI8I,KAAK+C,IAAInL,KAAKV,EAAIG,EAAG,GAC3B4J,EAAE9J,EAAIS,KAAKT,GAueb,EAAWM,UAAUuL,SAnerB,SAAqB3L,EAAG4J,GACtB,IAKI7J,EALA6L,EAAK5L,EAAIO,KAAKsI,GACdgD,EAAMtL,KAAKsI,GAAK+C,EAChBE,GAAM,GAAKD,GAAO,EAClBE,EAAKpD,KAAKC,MAAM5I,EAAIO,KAAKsI,IACzBT,EAAI7H,KAAKT,GAAK8L,EAAKrL,KAAKuI,GAG5B,IAAK/I,EAAIQ,KAAKV,EAAI,EAAGE,GAAK,IAAKA,EAC7B6J,EAAE7J,EAAIgM,EAAK,GAAKxL,KAAKR,IAAM8L,EAAMzD,EACjCA,GAAK7H,KAAKR,GAAK+L,IAAOF,EAGxB,IAAK7L,EAAIgM,EAAK,EAAGhM,GAAK,IAAKA,EACzB6J,EAAE7J,GAAK,EAGT6J,EAAEmC,GAAM3D,EACRwB,EAAE/J,EAAIU,KAAKV,EAAIkM,EAAK,EACpBnC,EAAE9J,EAAIS,KAAKT,EACX8J,EAAEqB,SAgdJ,EAAW7K,UAAU4L,SA5crB,SAAqBhM,EAAG4J,GACtBA,EAAE9J,EAAIS,KAAKT,EACX,IAAIiM,EAAKpD,KAAKC,MAAM5I,EAAIO,KAAKsI,IAE7B,GAAIkD,GAAMxL,KAAKV,EACb+J,EAAE/J,EAAI,MADR,CAKA,IAAI+L,EAAK5L,EAAIO,KAAKsI,GACdgD,EAAMtL,KAAKsI,GAAK+C,EAChBE,GAAM,GAAKF,GAAM,EACrBhC,EAAE,GAAKrJ,KAAKwL,IAAOH,EAEnB,IAAK,IAAI7L,EAAIgM,EAAK,EAAGhM,EAAIQ,KAAKV,IAAKE,EACjC6J,EAAE7J,EAAIgM,EAAK,KAAOxL,KAAKR,GAAK+L,IAAOD,EACnCjC,EAAE7J,EAAIgM,GAAMxL,KAAKR,IAAM6L,EAGrBA,EAAK,IAAGhC,EAAErJ,KAAKV,EAAIkM,EAAK,KAAOxL,KAAKT,EAAIgM,IAAOD,GACnDjC,EAAE/J,EAAIU,KAAKV,EAAIkM,EACfnC,EAAEqB,UAwbJ,EAAW7K,UAAUwK,MApbrB,SAAkBnD,EAAGmC,GAKnB,IAJA,IAAI7J,EAAI,EACJqI,EAAI,EACJK,EAAIE,KAAKsD,IAAIxE,EAAE5H,EAAGU,KAAKV,GAEpBE,EAAI0I,GACTL,GAAK7H,KAAKR,GAAK0H,EAAE1H,GACjB6J,EAAE7J,KAAOqI,EAAI7H,KAAKuI,GAClBV,IAAM7H,KAAKsI,GAGb,GAAIpB,EAAE5H,EAAIU,KAAKV,EAAG,CAGhB,IAFAuI,GAAKX,EAAE3H,EAEAC,EAAIQ,KAAKV,GACduI,GAAK7H,KAAKR,GACV6J,EAAE7J,KAAOqI,EAAI7H,KAAKuI,GAClBV,IAAM7H,KAAKsI,GAGbT,GAAK7H,KAAKT,MACL,CAGL,IAFAsI,GAAK7H,KAAKT,EAEHC,EAAI0H,EAAE5H,GACXuI,GAAKX,EAAE1H,GACP6J,EAAE7J,KAAOqI,EAAI7H,KAAKuI,GAClBV,IAAM7H,KAAKsI,GAGbT,GAAKX,EAAE3H,EAGT8J,EAAE9J,EAAIsI,EAAI,GAAK,EAAI,EACfA,GAAK,EAAGwB,EAAE7J,KAAOQ,KAAKwI,GAAKX,EAAWA,EAAI,IAAGwB,EAAE7J,KAAOqI,GAC1DwB,EAAE/J,EAAIE,EACN6J,EAAEqB,SAiZJ,EAAW7K,UAAUiL,WA5YrB,SAAuB5D,EAAGmC,GACxB,IAAI3B,EAAI1H,KAAKgK,MACTa,EAAI3D,EAAE8C,MACNxK,EAAIkI,EAAEpI,EAGV,IAFA+J,EAAE/J,EAAIE,EAAIqL,EAAEvL,IAEHE,GAAK,GACZ6J,EAAE7J,GAAK,EAGT,IAAKA,EAAI,EAAGA,EAAIqL,EAAEvL,IAAKE,EACrB6J,EAAE7J,EAAIkI,EAAEpI,GAAKoI,EAAED,GAAG,EAAGoD,EAAErL,GAAI6J,EAAG7J,EAAG,EAAGkI,EAAEpI,GAGxC+J,EAAE9J,EAAI,EACN8J,EAAEqB,QACE1K,KAAKT,GAAK2H,EAAE3H,GAAG,EAAW6K,KAAKC,MAAMhB,EAAGA,IA6X9C,EAAWxJ,UAAUmL,SAzXrB,SAAqB3B,GAInB,IAHA,IAAI3B,EAAI1H,KAAKgK,MACTxK,EAAI6J,EAAE/J,EAAI,EAAIoI,EAAEpI,IAEXE,GAAK,GACZ6J,EAAE7J,GAAK,EAGT,IAAKA,EAAI,EAAGA,EAAIkI,EAAEpI,EAAI,IAAKE,EAAG,CAC5B,IAAIqI,EAAIH,EAAED,GAAGjI,EAAGkI,EAAElI,GAAI6J,EAAG,EAAI7J,EAAG,EAAG,IAE9B6J,EAAE7J,EAAIkI,EAAEpI,IAAMoI,EAAED,GAAGjI,EAAI,EAAG,EAAIkI,EAAElI,GAAI6J,EAAG,EAAI7J,EAAI,EAAGqI,EAAGH,EAAEpI,EAAIE,EAAI,KAAOkI,EAAEc,KAC3Ea,EAAE7J,EAAIkI,EAAEpI,IAAMoI,EAAEc,GAChBa,EAAE7J,EAAIkI,EAAEpI,EAAI,GAAK,GAIjB+J,EAAE/J,EAAI,IAAG+J,EAAEA,EAAE/J,EAAI,IAAMoI,EAAED,GAAGjI,EAAGkI,EAAElI,GAAI6J,EAAG,EAAI7J,EAAG,EAAG,IACtD6J,EAAE9J,EAAI,EACN8J,EAAEqB,SAuWJ,EAAW7K,UAAUqK,SAlWrB,SAAqBhC,EAAGyD,EAAGtC,GACzB,IAAIuC,EAAK1D,EAAE8B,MACX,KAAI4B,EAAGtM,GAAK,GAAZ,CACA,IAAIuM,EAAK7L,KAAKgK,MAEd,GAAI6B,EAAGvM,EAAIsM,EAAGtM,EAGZ,OAFS,MAALqM,GAAWA,EAAErC,QAAQ,QAChB,MAALD,GAAWrJ,KAAKuK,OAAOlB,IAIpB,MAALA,IAAWA,EAAIhC,KACnB,IAAIwD,EAAIxD,IACJyE,EAAK9L,KAAKT,EACVwM,EAAK7D,EAAE3I,EACPyM,EAAMhM,KAAKsI,GAAKiB,EAAMqC,EAAGA,EAAGtM,EAAI,IAEhC0M,EAAM,GACRJ,EAAGR,SAASY,EAAKnB,GACjBgB,EAAGT,SAASY,EAAK3C,KAEjBuC,EAAGrB,OAAOM,GACVgB,EAAGtB,OAAOlB,IAGZ,IAAI4C,EAAKpB,EAAEvL,EACP4M,EAAKrB,EAAEoB,EAAK,GAChB,GAAU,GAANC,EAAJ,CACA,IAAIC,EAAKD,GAAM,GAAKlM,KAAK2I,KAAOsD,EAAK,EAAIpB,EAAEoB,EAAK,IAAMjM,KAAK4I,GAAK,GAC5DwD,EAAKpM,KAAKyI,GAAK0D,EACfE,GAAM,GAAKrM,KAAK2I,IAAMwD,EACtBjN,EAAI,GAAKc,KAAK4I,GACdpJ,EAAI6J,EAAE/J,EACNsI,EAAIpI,EAAIyM,EACR3M,EAAS,MAALqM,EAAYtE,IAAQsE,EAW5B,IAVAd,EAAEZ,UAAUrC,EAAGtI,GAEX+J,EAAEc,UAAU7K,IAAM,IACpB+J,EAAEA,EAAE/J,KAAO,EACX+J,EAAEgB,MAAM/K,EAAG+J,IAGb,EAAWiD,IAAIrC,UAAUgC,EAAI3M,GAC7BA,EAAE+K,MAAMQ,EAAGA,GAEJA,EAAEvL,EAAI2M,GACXpB,EAAEA,EAAEvL,KAAO,EAGb,OAASsI,GAAK,GAAG,CAEf,IAAI2E,EAAKlD,IAAI7J,IAAM0M,EAAKlM,KAAKuI,GAAKH,KAAKC,MAAMgB,EAAE7J,GAAK4M,GAAM/C,EAAE7J,EAAI,GAAKN,GAAKmN,GAE1E,IAAKhD,EAAE7J,IAAMqL,EAAEpD,GAAG,EAAG8E,EAAIlD,EAAGzB,EAAG,EAAGqE,IAAOM,EAKvC,IAHA1B,EAAEZ,UAAUrC,EAAGtI,GACf+J,EAAEgB,MAAM/K,EAAG+J,GAEJA,EAAE7J,KAAO+M,GACdlD,EAAEgB,MAAM/K,EAAG+J,GAKR,MAALsC,IACFtC,EAAEsB,UAAUsB,EAAIN,GACZG,GAAMC,GAAI,EAAW3B,KAAKC,MAAMsB,EAAGA,IAGzCtC,EAAE/J,EAAI2M,EACN5C,EAAEqB,QACEsB,EAAM,GAAG3C,EAAEoC,SAASO,EAAK3C,GAEzByC,EAAK,GAAG,EAAW1B,KAAKC,MAAMhB,EAAGA,MA0RvC,EAAWxJ,UAAU6J,SArQrB,WACE,GAAI1J,KAAKV,EAAI,EAAG,OAAO,EACvB,IAAIoI,EAAI1H,KAAK,GACb,GAAe,IAAN,EAAJ0H,GAAa,OAAO,EACzB,IAAImD,EAAQ,EAAJnD,EAaR,OAHAmD,GAJAA,GAFAA,GAFAA,EAAIA,GAAK,GAAS,GAAJnD,GAAWmD,GAAK,KAErB,GAAS,IAAJnD,GAAYmD,GAAK,MAEtB,IAAU,MAAJnD,GAAcmD,EAAI,QAAW,QAInC,EAAInD,EAAImD,EAAI7K,KAAKwI,IAAMxI,KAAKwI,IAG1B,EAAIxI,KAAKwI,GAAKqC,GAAKA,GAqPhC,EAAWhL,UAAU2M,MA7OrB,SAAkBtF,EAAGmC,GAKnB,IAJA,IAAI7J,EAAI,EACJqI,EAAI,EACJK,EAAIE,KAAKsD,IAAIxE,EAAE5H,EAAGU,KAAKV,GAEpBE,EAAI0I,GACTL,GAAK7H,KAAKR,GAAK0H,EAAE1H,GACjB6J,EAAE7J,KAAOqI,EAAI7H,KAAKuI,GAClBV,IAAM7H,KAAKsI,GAGb,GAAIpB,EAAE5H,EAAIU,KAAKV,EAAG,CAGhB,IAFAuI,GAAKX,EAAE3H,EAEAC,EAAIQ,KAAKV,GACduI,GAAK7H,KAAKR,GACV6J,EAAE7J,KAAOqI,EAAI7H,KAAKuI,GAClBV,IAAM7H,KAAKsI,GAGbT,GAAK7H,KAAKT,MACL,CAGL,IAFAsI,GAAK7H,KAAKT,EAEHC,EAAI0H,EAAE5H,GACXuI,GAAKX,EAAE1H,GACP6J,EAAE7J,KAAOqI,EAAI7H,KAAKuI,GAClBV,IAAM7H,KAAKsI,GAGbT,GAAKX,EAAE3H,EAGT8J,EAAE9J,EAAIsI,EAAI,GAAK,EAAI,EACfA,EAAI,EAAGwB,EAAE7J,KAAOqI,EAAWA,GAAK,IAAGwB,EAAE7J,KAAOQ,KAAKwI,GAAKX,GAC1DwB,EAAE/J,EAAIE,EACN6J,EAAEqB,SA2MJ,EAAW7K,UAAU+G,SA/mBrB,SAAoBO,GAClB,GAAInH,KAAKT,EAAI,EAAG,MAAO,IAAMS,KAAKyM,SAAS7F,SAASO,GACpD,IAAIjJ,EACJ,GAAS,IAALiJ,EAASjJ,EAAI,OAAO,GAAS,GAALiJ,EAAQjJ,EAAI,OAAO,GAAS,GAALiJ,EAAQjJ,EAAI,OAAO,GAAS,IAALiJ,EAASjJ,EAAI,MAAO,IAAS,GAALiJ,EAAmB,MAAM,IAAId,MAAM,4CAA3BnI,EAAI,EAC9G,IACIwO,EADAC,GAAM,GAAKzO,GAAK,EAEhBgK,GAAI,EACJmB,EAAI,GACJ7J,EAAIQ,KAAKV,EACTM,EAAII,KAAKsI,GAAK9I,EAAIQ,KAAKsI,GAAKpK,EAEhC,GAAIsB,KAAM,EAMR,IALII,EAAII,KAAKsI,KAAOoE,EAAI1M,KAAKR,IAAMI,GAAK,IACtCsI,GAAI,EACJmB,EAAIJ,EAASyD,IAGRlN,GAAK,GACNI,EAAI1B,GACNwO,GAAK1M,KAAKR,IAAM,GAAKI,GAAK,IAAM1B,EAAI0B,EACpC8M,GAAK1M,OAAOR,KAAOI,GAAKI,KAAKsI,GAAKpK,KAElCwO,EAAI1M,KAAKR,KAAOI,GAAK1B,GAAKyO,EAEtB/M,GAAK,IACPA,GAAKI,KAAKsI,KACR9I,IAIFkN,EAAI,IAAGxE,GAAI,GACXA,IAAGmB,GAAKJ,EAASyD,IAIzB,OAAOxE,EAAImB,EAAI,KA6kBjB,EAAWxJ,UAAU4M,OAzkBrB,WACE,IAAIpD,EAAIhC,IAER,OADA,EAAW+C,KAAKC,MAAMrK,KAAMqJ,GACrBA,GAukBT,EAAWxJ,UAAUmK,IAnkBrB,WACE,OAAOhK,KAAKT,EAAI,EAAIS,KAAKyM,SAAWzM,MAmkBtC,EAAWH,UAAUsK,UA/jBrB,SAAqBjD,GACnB,IAAImC,EAAIrJ,KAAKT,EAAI2H,EAAE3H,EACnB,GAAS,GAAL8J,EAAQ,OAAOA,EACnB,IAAI7J,EAAIQ,KAAKV,EAEb,GAAS,IADT+J,EAAI7J,EAAI0H,EAAE5H,GACE,OAAOU,KAAKT,EAAI,GAAK8J,EAAIA,EAErC,OAAS7J,GAAK,GACZ,GAA4B,IAAvB6J,EAAIrJ,KAAKR,GAAK0H,EAAE1H,IAAU,OAAO6J,EAGxC,OAAO,GAqjBT,EAAWxJ,UAAU+M,UAhhBrB,WACE,OAAI5M,KAAKV,GAAK,EAAU,EACjBU,KAAKsI,IAAMtI,KAAKV,EAAI,GAAKiK,EAAMvJ,KAAKA,KAAKV,EAAI,GAAKU,KAAKT,EAAIS,KAAKuI,KA+gBzE,EAAW1I,UAAUgN,IA9RrB,SAAe3F,GACb,IAAImC,EAAIhC,IAGR,OAFArH,KAAKgK,MAAME,SAAShD,EAAG,KAAMmC,GACzBrJ,KAAKT,EAAI,GAAK8J,EAAEc,UAAU,EAAWC,MAAQ,GAAGlD,EAAEmD,MAAMhB,EAAGA,GACxDA,GA2RT,EAAWxJ,UAAUiN,OA1PrB,SAAkB5F,GAChB,OAA4B,GAArBlH,KAAKmK,UAAUjD,IA0PxB,EAAWrH,UAAUkN,IA9MrB,SAAe7F,GACb,IAAImC,EAAIhC,IAER,OADArH,KAAKwM,MAAMtF,EAAGmC,GACPA,GA4MT,EAAWxJ,UAAUmN,SAxMrB,SAAoB9F,GAClB,IAAImC,EAAIhC,IAER,OADArH,KAAKqK,MAAMnD,EAAGmC,GACPA,GAsMT,EAAWxJ,UAAUoN,SAlMrB,SAAoB/F,GAClB,IAAImC,EAAIhC,IAER,OADArH,KAAK8K,WAAW5D,EAAGmC,GACZA,GAgMT,EAAWxJ,UAAUqN,OA5LrB,SAAkBhG,GAChB,IAAImC,EAAIhC,IAER,OADArH,KAAKkK,SAAShD,EAAGmC,EAAG,MACbA,GA0LT,EAAWxJ,UAAUsN,OAhHrB,SAAkBjO,EAAGgJ,EAAGrG,GACtB,IACI3D,EADAsB,EAAIN,EAAE0N,YAENvD,EAAID,EAAI,GACRgE,EAAI,IAAI5D,EAAWtB,GACvB,GAAI1I,GAAK,EAAG,OAAO6J,EAAmBnL,EAARsB,EAAI,GAAQ,EAAWA,EAAI,GAAQ,EAAWA,EAAI,IAAS,EAAWA,EAAI,IAAS,EAAW,EAE5H,IAAIsG,EAAI,IAAI7C,MACRxD,EAAI,EACJ4N,EAAKnP,EAAI,EACTyO,GAAM,GAAKzO,GAAK,EAGpB,GAFA4H,EAAE,GAAKsH,EAAErD,QAAQ/J,MAEb9B,EAAI,EAAG,CACT,IAAIoP,EAAKjG,IAGT,IAFA+F,EAAErC,MAAMjF,EAAE,GAAIwH,GAEP7N,GAAKkN,GACV7G,EAAErG,GAAK4H,IACP+F,EAAExC,MAAM0C,EAAIxH,EAAErG,EAAI,GAAIqG,EAAErG,IACxBA,GAAK,EAIT,IACIkI,EAGArI,EAJAsI,EAAI1I,EAAEI,EAAI,EAEViO,GAAM,EACNC,EAAKnG,IAIT,IAFA7H,EAAI+J,EAAMrK,EAAE0I,IAAM,EAEXA,GAAK,GAAG,CAOb,IANIpI,GAAK6N,EAAI1F,EAAIzI,EAAE0I,IAAMpI,EAAI6N,EAAKV,GAChChF,GAAKzI,EAAE0I,IAAM,GAAKpI,EAAI,GAAK,IAAM6N,EAAK7N,EAClCoI,EAAI,IAAGD,GAAKzI,EAAE0I,EAAI,IAAM5H,KAAKsI,GAAK9I,EAAI6N,IAE5C5N,EAAIvB,EAEc,IAAN,EAAJyJ,IACNA,IAAM,IACJlI,EAQJ,IALKD,GAAKC,GAAK,IACbD,GAAKQ,KAAKsI,KACRV,GAGA2F,EAEFzH,EAAE6B,GAAG4C,OAAOlB,GACZkE,GAAM,MACD,CACL,KAAO9N,EAAI,GACT2N,EAAErC,MAAM1B,EAAGmE,GACXJ,EAAErC,MAAMyC,EAAInE,GACZ5J,GAAK,EAGHA,EAAI,EAAG2N,EAAErC,MAAM1B,EAAGmE,IACpBlO,EAAI+J,EACJA,EAAImE,EACJA,EAAKlO,GAEP8N,EAAExC,MAAM4C,EAAI1H,EAAE6B,GAAI0B,GAGpB,KAAOzB,GAAK,GAAwB,IAAlB1I,EAAE0I,GAAK,GAAKpI,IAC5B4N,EAAErC,MAAM1B,EAAGmE,GACXlO,EAAI+J,EACJA,EAAImE,EACJA,EAAKlO,IAECE,EAAI,IACRA,EAAIQ,KAAKsI,GAAK,IACZV,GAKR,IAAI1G,EAASkM,EAAE9C,OAAOjB,GAEtB,OADAxH,EAAS,KAAMX,GACRA,GAgCT,EAAWkJ,KAAOhB,EAAI,GACtB,EAAWkD,IAAMlD,EAAI,GC/0BrB,IAAIjD,EAAc,SAAqBQ,GACrC,OAAO,WAAY,IAAIJ,GAAYG,OAAOC,GAAQC,WAAY,QAQ5D6G,EAAoC,WAKtC,SAASA,EAAqBC,GAC5B1N,KAAK2N,EAAI,IAAIC,EAVL,mwBAUuB,IAC/B5N,KAAK8F,EAAI,IAAI8H,EAAW,IAAK,IAC7B5N,KAAK9B,EAAI,IAAI0P,EAAW5N,KAAK6N,QAAQ,KAAO7N,KAAK2N,EAAE/G,SAAS,IAAM,IAAM5G,KAAK8F,EAAEc,SAAS,KAAM,IAC9F5G,KAAK8N,YAAc9N,KAAK+N,uBACxB/N,KAAKgO,gBAAe,eACpBhO,KAAKiO,SAAW,UAAY,sBAAuB,QACnDjO,KAAKkO,SAAWR,EAOlB,IAAIpI,EAASmI,EAAqB5N,UAgRlC,OA9QAyF,EAAO6I,eAAiB,WACtB,OAAOnO,KAAK8N,aAQdxI,EAAO0I,eAAiB,SAAwBnM,GAC9C,IAAI1B,EAAQH,KAERA,KAAKoO,YACPvM,EAAS,KAAM7B,KAAKoO,aAEpBpO,KAAKqO,WAAWrO,KAAK8N,aAAa,SAAU/H,EAAKqI,GAC3CrI,GACFlE,EAASkE,EAAK,MAGhB5F,EAAMiO,YAAcA,EACpBvM,EAAS,KAAM1B,EAAMiO,iBAW3B9I,EAAOyI,qBAAuB,WAC5B,IAAIO,EAAYnI,EAAY,KAAKS,SAAS,OAG1C,OAFmB,IAAIgH,EAAWU,EAAW,IACbzB,IAAI7M,KAAK2N,IAU3CrI,EAAOiJ,qBAAuB,WAC5B,OAAOpI,EAAY,IAAIS,SAAS,WAOlCtB,EAAOkJ,kBAAoB,WACzB,OAAOxO,KAAKyO,gBAOdnJ,EAAOoJ,eAAiB,WACtB,OAAO1O,KAAK2O,mBAOdrJ,EAAOsJ,mBAAqB,WAC1B,OAAO5O,KAAK6O,iBAWdvJ,EAAOwJ,mBAAqB,SAA4BC,EAAgB3J,EAAUvD,GAChF,IAAImN,EAAShP,KAEbA,KAAKyO,eAAiBzO,KAAKuO,uBAC3B,IAAIU,EAAiB,GAAKF,EAAiB3J,EAAW,IAAMpF,KAAKyO,eAC7DS,EAAelP,KAAKmP,KAAKF,GACzBX,EAAYnI,EAAY,IAAIS,SAAS,OACzC5G,KAAK2O,kBAAoB3O,KAAKoP,OAAO,IAAIxB,EAAWU,EAAW,KAC/DtO,KAAK8F,EAAEqH,OAAO,IAAIS,EAAW5N,KAAK6N,QAAQ7N,KAAK2O,kBAAoBO,GAAe,IAAKlP,KAAK2N,GAAG,SAAU5H,EAAKsJ,GACxGtJ,GACFlE,EAASkE,EAAK,MAGhBiJ,EAAOH,gBAAkBG,EAAOI,OAAOC,GACvCxN,EAAS,KAAM,UAanByD,EAAO+I,WAAa,SAAoBnH,EAAGrF,GACzC,IAAIyN,EAAStP,KAEbA,KAAK8F,EAAEqH,OAAOjG,EAAGlH,KAAK2N,GAAG,SAAU5H,EAAKwJ,GAClCxJ,GACFlE,EAASkE,EAAK,MAGZwJ,EAAE1C,IAAIyC,EAAO3B,GAAGb,OAAOc,EAAWxD,OACpCvI,EAAS,IAAIwE,MAAM,2CAA4C,MAGjExE,EAAS,KAAM0N,OAYnBjK,EAAOkK,WAAa,SAAoBD,EAAGE,GAGzC,OAFAzP,KAAK0P,SAAW1P,KAAK6N,QAAQ7N,KAAKoP,OAAOG,GAAKvP,KAAKoP,OAAOK,IAC7C,IAAI7B,EAAW5N,KAAK0P,SAAU,KAW7CpK,EAAO6J,KAAO,SAAcQ,GAC1B,IAAIC,EAAMD,aAAe,KAAS,yBAA8BA,GAAOA,EACnEE,EAAU,IAAOD,GAAKhJ,WAC1B,OAAO,IAAI3D,MAAM,GAAK4M,EAAQlQ,QAAQqH,KAAK,KAAO6I,GAUpDvK,EAAOuI,QAAU,SAAiBiC,GAChC,OAAO9P,KAAKmP,KAAK,UAAYW,EAAQ,SAWvCxK,EAAOyK,YAAc,SAAqBC,EAAKC,GAC7C,IAAIC,EAAoB,yBAA8B,YAAc,CAAClQ,KAAKiO,SAAU,UAAYkC,OAAOC,aAAa,GAAI,WACpHC,EAAeL,aAAe,KAAS,yBAA8BA,GAAOA,EAC5EM,EAAgBL,aAAgB,KAAS,yBAA8BA,GAAQA,EAC/EM,EAAM,IAAWF,EAAcC,GAC/BE,EAAO,IAAWN,EAAmBK,GACzC,OAAO,UAAYC,EAAK5J,WAAY,OAAO6J,MAAM,EAAG,KAatDnL,EAAOoL,6BAA+B,SAAsCtL,EAAUC,EAAUsL,EAAcV,EAAMpO,GAClH,IAAI+O,EAAS5Q,KAEb,GAAI2Q,EAAa9D,IAAI7M,KAAK2N,GAAGb,OAAOc,EAAWxD,MAC7C,MAAM,IAAI/D,MAAM,qBAKlB,GAFArG,KAAK6Q,OAAS7Q,KAAKwP,WAAWxP,KAAKoO,YAAauC,GAE5C3Q,KAAK6Q,OAAO/D,OAAOc,EAAWxD,MAChC,MAAM,IAAI/D,MAAM,qBAGlB,IAAIyK,EAAmB,GAAK9Q,KAAKkO,SAAW9I,EAAW,IAAMC,EACzD0L,EAAuB/Q,KAAKmP,KAAK2B,GACjCE,EAAS,IAAIpD,EAAW5N,KAAK6N,QAAQ7N,KAAKoP,OAAOa,GAAQc,GAAuB,IACpF/Q,KAAKiR,WAAWD,EAAQL,GAAc,SAAU5K,EAAKmL,GAC/CnL,GACFlE,EAASkE,EAAK,MAGhB,IAAIoL,EAAOP,EAAOb,YAAY,UAAYa,EAAOxB,OAAO8B,GAAS,OAAQ,UAAYN,EAAOxB,OAAOwB,EAAOC,OAAOjK,SAAS,KAAM,QAEhI/E,EAAS,KAAMsP,OAYnB7L,EAAO2L,WAAa,SAAoBD,EAAQL,EAAc9O,GAC5D,IAAIuP,EAASpR,KAEbA,KAAK8F,EAAEqH,OAAO6D,EAAQhR,KAAK2N,GAAG,SAAU5H,EAAKsL,GACvCtL,GACFlE,EAASkE,EAAK,MAGA4K,EAAa3D,SAASoE,EAAOlT,EAAE+O,SAASoE,IAC9ClE,OAAOiE,EAAOtD,YAAYf,IAAIqE,EAAOP,OAAO5D,SAAS+D,IAAUI,EAAOzD,GAAG,SAAU2D,EAAMpQ,GAC7FoQ,GACFzP,EAASyP,EAAM,MAGjBzP,EAAS,KAAMX,EAAO2L,IAAIuE,EAAOzD,WAUvCrI,EAAOiM,mDAAqD,WAC1D,MAjRkD,mBA0RpDjM,EAAO8J,OAAS,SAAgBoC,GAC9B,IAAIC,EAAUD,EAAO5K,SAAS,IAQ9B,OANI6K,EAAQ9R,OAAS,GAAM,EACzB8R,EAAU,IAAMA,GACmC,IAA1C,iBAAiBxP,QAAQwP,EAAQ,MAC1CA,EAAU,KAAOA,GAGZA,GAGFhE,EAnS+B,GCdpCiE,EAA+B,WAKjC,SAASA,EAAgBC,GAEvB3R,KAAK4R,SAAWD,GAAS,GACzB3R,KAAK6R,QAAU7R,KAAK8R,gBAOtB,IAAIxM,EAASoM,EAAgB7R,UAoC7B,OAlCAyF,EAAOyM,YAAc,WACnB,OAAO/R,KAAK4R,UAOdtM,EAAO0M,cAAgB,WACrB,OAAOhS,KAAK6R,QAAQI,KAOtB3M,EAAO4M,YAAc,WACnB,OAAOlS,KAAK6R,QAAQM,KAOtB7M,EAAOwM,cAAgB,WACrB,IAAID,EAAU7R,KAAK4R,SAAS1N,MAAM,KAAK,GAEvC,IACE,OAAOlF,KAAKC,MAAM,UAAY4S,EAAS,UAAUjL,SAAS,SAC1D,MAAOb,IACP,MAAO,KAIJ2L,EAnD0B,GCOnC,IAAIU,EAAkC,SAAUC,GA1BhD,IAAwBC,EAAUC,EAkChC,SAASH,EAAmBI,GAC1B,IACIC,QADiB,IAAVD,EAAmB,GAAKA,GACZC,YAEvB,OAAOJ,EAAiBvS,KAAKE,KAAMyS,GAAe,KAAOzS,KAG3D,OAzCgCuS,EA2BGF,GA3BbC,EA2BPF,GA1BNvS,UAAYT,OAAOqD,OAAO8P,EAAW1S,WAC9CyS,EAASzS,UAAU6S,YAAcJ,EACjCA,EAASK,UAAYJ,EAsCdH,EAf6B,CAgBpCV,GChBF,IAAIkB,EAA8B,SAAUP,GA1B5C,IAAwBC,EAAUC,EAkChC,SAASK,EAAeJ,GACtB,IACIK,QADiB,IAAVL,EAAmB,GAAKA,GAChBK,QAEnB,OAAOR,EAAiBvS,KAAKE,KAAM6S,GAAW,KAAO7S,KAGvD,OAzCgCuS,EA2BDF,GA3BTC,EA2BPM,GA1BN/S,UAAYT,OAAOqD,OAAO8P,EAAW1S,WAC9CyS,EAASzS,UAAU6S,YAAcJ,EACjCA,EAASK,UAAYJ,EAsCdK,EAfyB,CAgBhClB,GCxBEoB,EAAmC,WAKrC,SAASA,EAAoBN,GAC3B,IACIO,QADiB,IAAVP,EAAmB,GAAKA,GACXO,aAGxB/S,KAAK2R,MAAQoB,GAAgB,GAa/B,OANaD,EAAoBjT,UAE1BmT,SAAW,WAChB,OAAOhT,KAAK2R,OAGPmB,EAvB8B,G,oBCAnCG,EAAkC,WAQpC,SAASA,EAAmBT,GAC1B,IAAI7N,OAAiB,IAAV6N,EAAmB,GAAKA,EAC/BK,EAAUlO,EAAKkO,QACfE,EAAepO,EAAKoO,aACpBN,EAAc9N,EAAK8N,YACnBS,EAAavO,EAAKuO,WAEtB,GAAmB,MAAfT,GAAkC,MAAXI,EACzB,MAAM,IAAIxM,MAAM,8CAGlBrG,KAAKmT,QAAUN,EACf7S,KAAKoT,aAAeL,EACpB/S,KAAKqT,YAAcZ,EACnBzS,KAAKsT,gBAA4BhV,IAAf4U,EAA2BlT,KAAKuT,sBAAwBL,EAO5E,IAAI5N,EAAS2N,EAAmBpT,UAoDhC,OAlDAyF,EAAOkO,WAAa,WAClB,OAAOxT,KAAKmT,SAOd7N,EAAOmO,gBAAkB,WACvB,OAAOzT,KAAKoT,cAOd9N,EAAOoO,eAAiB,WACtB,OAAO1T,KAAKqT,aAOd/N,EAAOqO,cAAgB,WACrB,OAAO3T,KAAKsT,YAOdhO,EAAOiO,oBAAsB,WAG3B,OAFUnL,KAAKC,MAAM,IAAI3G,KAAS,KACxB0G,KAAKsD,IAAI1L,KAAKqT,YAAYnB,cAAelS,KAAKmT,QAAQjB,gBAUlE5M,EAAOsO,QAAU,WACf,IACIC,EADMzL,KAAKC,MAAM,IAAI3G,KAAS,KACb1B,KAAKsT,WAC1B,OAAOO,EAAW7T,KAAKqT,YAAYrB,iBAAmB6B,EAAW7T,KAAKmT,QAAQnB,iBAGzEiB,EAjF6B,GCFlCa,EAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,GAAY,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAGvDC,GAA0B,WAC5B,SAASA,KAoCT,OAlCaA,EAAWnU,UAKjBoU,aAAe,WACpB,IAAIC,EAAM,IAAIxS,KACVyS,EAAUJ,GAAUG,EAAIE,aACxBC,EAAQP,EAAWI,EAAII,eACvBC,EAAML,EAAIM,aACVC,EAAQP,EAAIQ,cAEZD,EAAQ,KACVA,EAAQ,IAAMA,GAGhB,IAAIE,EAAUT,EAAIU,gBAEdD,EAAU,KACZA,EAAU,IAAMA,GAGlB,IAAIE,EAAUX,EAAIY,gBASlB,OAPID,EAAU,KACZA,EAAU,IAAMA,GAKJV,EAAU,IAAME,EAAQ,IAAME,EAAM,IAAME,EAAQ,IAAME,EAAU,IAAME,EAAU,QAFrFX,EAAIa,kBAMVf,EArCqB,GCF1BgB,GAAoC,WAMtC,SAASA,EAAqBxC,GAC5B,IAAI7N,OAAiB,IAAV6N,EAAmB,GAAKA,EAC/ByC,EAAOtQ,EAAKsQ,KACZC,EAAQvQ,EAAKuQ,MAEjBlV,KAAKiV,KAAOA,GAAQ,GACpBjV,KAAKkV,MAAQA,GAAS,GAOxB,IAAI5P,EAAS0P,EAAqBnV,UAuDlC,OArDAyF,EAAO6P,SAAW,WAChB,OAAOnV,KAAKkV,OASd5P,EAAO8P,SAAW,SAAkB3W,GAElC,OADAuB,KAAKkV,MAAQzW,EACNuB,MAOTsF,EAAO+P,QAAU,WACf,OAAOrV,KAAKiV,MASd3P,EAAOgQ,QAAU,SAAiBtU,GAEhC,OADAhB,KAAKiV,KAAOjU,EACLhB,MAOTsF,EAAOsB,SAAW,WAChB,OAAO5H,KAAKsC,UAAUtB,OAOxBsF,EAAOiQ,OAAS,WACd,MAAO,CACLN,KAAMjV,KAAKiV,KACXC,MAAOlV,KAAKkV,QAITF,EA1E+B,GCFpCQ,GAAa,GAGbC,GAA6B,WAC/B,SAASA,KA6CT,OApCAA,EAAczR,QAAU,SAAiBX,EAAK5E,GAE5C,OADA+W,GAAWnS,GAAO5E,EACX+W,GAAWnS,IAUpBoS,EAAcjS,QAAU,SAAiBH,GACvC,OAAOjE,OAAOS,UAAU1B,eAAe2B,KAAK0V,GAAYnS,GAAOmS,GAAWnS,QAAO/E,GASnFmX,EAAclS,WAAa,SAAoBF,GAC7C,cAAcmS,GAAWnS,IAQ3BoS,EAAczS,MAAQ,WAEpB,OADAwS,GAAa,IAIRC,EA9CwB,GAmD7B,GAA6B,WAK/B,SAASC,IACP,IACE1V,KAAK2V,cAAgBpT,OAAOC,aAC5BxC,KAAK2V,cAAc3R,QAAQ,sBAAuB,GAClDhE,KAAK2V,cAAcpS,WAAW,uBAC9B,MAAOqS,GACP5V,KAAK2V,cAAgBF,IAezB,OANaC,EAAc7V,UAEpBgW,WAAa,WAClB,OAAO7V,KAAK2V,eAGPD,EA1BwB,GCC7BI,GADiC,oBAAdvO,UACKA,UAAUuO,UAAY,SAG9CC,GAA2B,WAQ7B,SAASA,EAAYrR,GACnB,GAAY,MAARA,GAAiC,MAAjBA,EAAKG,UAAiC,MAAbH,EAAKsR,KAChD,MAAM,IAAI3P,MAAM,+CAGlBrG,KAAKoF,SAAWV,EAAKG,UAAY,GACjC7E,KAAKiW,KAAOvR,EAAKsR,KACjBhW,KAAKkW,QAAU,KACflW,KAAKmW,OAASzR,EAAKsR,KAAKG,OACxBnW,KAAKoW,kBAAoB,KACzBpW,KAAKqW,uBAAyB,gBAC9BrW,KAAKsW,QAAU5R,EAAK6R,UAAW,IAAI,IAAgBV,aACnD7V,KAAKwW,UAAY,kCAAoCxW,KAAKiW,KAAKQ,cAC/DzW,KAAK0W,YAAc1W,KAAKwW,UAAY,IAAMxW,KAAKoF,SAAW,YAS5D,IAAIE,EAASyQ,EAAYlW,UAu1DzB,OAr1DAyF,EAAOqR,qBAAuB,SAA8BP,GAC1DpW,KAAK4W,sBACL5W,KAAKoW,kBAAoBA,EACzBpW,KAAK6W,eAOPvR,EAAOwR,qBAAuB,WAC5B,OAAO9W,KAAKoW,mBAOd9Q,EAAOC,YAAc,WACnB,OAAOvF,KAAKoF,UAOdE,EAAOyR,0BAA4B,WACjC,OAAO/W,KAAKqW,wBASd/Q,EAAO0R,0BAA4B,SAAmCX,GACpErW,KAAKqW,uBAAyBA,GAchC/Q,EAAO2R,aAAe,SAAsBC,EAAarV,GACvD,IAAI1B,EAAQH,KAERkF,EAAiBgS,EAAYxR,oBACjCR,EAAeiS,SAAWnX,KAAKoF,SAC/B,IAAIgS,EAAyE,IAAxDhY,OAAOwE,KAAKsT,EAAYzR,qBAAqB9F,OAAeuX,EAAYzR,oBAAsByR,EAAYvR,oBAC3H0R,EAAU,CACZC,SAAU,cACVC,SAAUvX,KAAKiW,KAAKQ,cACpB1R,eAAgBG,EAChBF,eAAgBoS,GAGdpX,KAAKwX,uBACPH,EAAQI,gBAAkBzX,KAAKwX,sBAGjCxX,KAAKmW,OAAOuB,QAAQ,eAAgBL,GAAS,SAAUtR,EAAKrB,GAC1D,GAAIqB,EACF,OAAOlE,EAAS8V,UAAU5R,GAG5B,IAAI6R,EAAgBlT,EAAKmT,cACrBC,EAAsBpT,EAAKqT,oBAE/B,MAAsB,qBAAlBH,GACFzX,EAAM+V,QAAUxR,EAAKwR,QACdrU,EAASmW,gBAAgBF,KAGlC3X,EAAMiW,kBAAoBjW,EAAM8X,sBAAsBvT,EAAKwT,sBAE3D/X,EAAM0W,cAEChV,EAASsW,UAAUhY,EAAMiW,wBAoBpC9Q,EAAO8S,iBAAmB,SAA0BlB,EAAarV,GAC/D,MAAoC,uBAAhC7B,KAAKqW,uBACArW,KAAKqY,sCAAsCnB,EAAarV,GACtB,kBAAhC7B,KAAKqW,wBAA8E,gBAAhCrW,KAAKqW,uBAC1DrW,KAAKsY,4BAA4BpB,EAAarV,GAGhDA,EAAS8V,UAAU,IAAItR,MAAM,0CAqBtCf,EAAOgT,4BAA8B,SAAqCpB,EAAarV,GACrF,IAII8O,EACAV,EALAjB,EAAShP,KAETuY,EAAuB,IAAI9K,EAAqBzN,KAAKiW,KAAKuC,gBAAgBtU,MAAM,KAAK,IACrFuU,EAAa,IAAIzE,GAGjB9O,EAAiB,GAEC,MAAlBlF,KAAK0Y,YACPxT,EAAeyT,WAAa3Y,KAAK0Y,WAGnCxT,EAAeiS,SAAWnX,KAAKoF,SAC/BmT,EAAqBvK,gBAAe,SAAU4K,EAAaC,GAErDD,GACF/W,EAAS8V,UAAUiB,GAGrB1T,EAAe4T,MAAQD,EAAOjS,SAAS,IAED,gBAAlCoI,EAAOqH,yBACTnR,EAAe6T,eAAiB,SAGlC,IAAI3B,EAAyE,IAAxDhY,OAAOwE,KAAKsT,EAAYzR,qBAAqB9F,OAAeuX,EAAYzR,oBAAsByR,EAAYvR,oBAC3H0R,EAAU,CACZC,SAAUtI,EAAOqH,uBACjBkB,SAAUvI,EAAOiH,KAAKQ,cACtB1R,eAAgBG,EAChBF,eAAgBoS,GAGdpI,EAAOwI,mBAAmBxI,EAAO5J,YACnCiS,EAAQI,gBAAkBzI,EAAOwI,mBAAmBxI,EAAO5J,WAG7D4J,EAAOmH,OAAOuB,QAAQ,eAAgBL,GAAS,SAAUtR,EAAKrB,GAC5D,GAAIqB,EACF,OAAOlE,EAAS8V,UAAU5R,GAG5B,IAAI+R,EAAsBpT,EAAKqT,oBAC/B/I,EAAO5J,SAAW0S,EAAoBkB,gBACtCrI,EAAe,IAAI/C,EAAWkK,EAAoBmB,MAAO,IACzDhJ,EAAO,IAAIrC,EAAWkK,EAAoBoB,KAAM,IAEhDlK,EAAOmK,gCAEPZ,EAAqB7H,6BAA6B1B,EAAO5J,SAAU8R,EAAY1R,cAAemL,EAAcV,GAAM,SAAUmJ,EAAWjI,GAEjIiI,GACFvX,EAAS8V,UAAUyB,GAGrB,IAAIC,EAAUZ,EAAWxE,eACrBqF,EAAU,yBAA8B,YAAc,CAAC,UAAYtK,EAAOiH,KAAKuC,gBAAgBtU,MAAM,KAAK,GAAI,QAAS,UAAY8K,EAAO5J,SAAU,QAAS,UAAY0S,EAAoByB,aAAc,UAAW,UAAYF,EAAS,WAC3OhW,EAAM,yBAA8B8N,GACpCqI,EAAkB,cAAiB,IAAWF,EAASjW,IACvDoW,EAAqB,GACzBA,EAAmBtC,SAAWnI,EAAO5J,SACrCqU,EAAmBC,4BAA8B5B,EAAoByB,aACrEE,EAAmBE,UAAYN,EAC/BI,EAAmBG,yBAA2BJ,EAEtB,MAApBxK,EAAO0J,YACTe,EAAmBd,WAAa3J,EAAO0J,WAGzC,IAiBImB,EAAc,CAChBhC,cAAe,oBACfN,SAAUvI,EAAOiH,KAAKQ,cACtBqD,mBAAoBL,EACpBvD,QAASxR,EAAKwR,QACdlR,eAAgBoS,GAGdpI,EAAOwI,uBACTqC,EAAYpC,gBAAkBzI,EAAOwI,sBA1BV,SAASuC,EAAuBC,EAAWC,GACtE,OAAOjL,EAAOmH,OAAOuB,QAAQ,yBAA0BsC,GAAW,SAAUE,EAAcC,GACxF,OAAID,GAAsC,8BAAtBA,EAAaE,OAAkG,IAA1DF,EAAaZ,QAAQe,cAAcpY,QAAQ,WAClHwX,EAAmBd,WAAa,KAChC3J,EAAO0J,UAAY,KACnB1J,EAAOP,eAAiB,KACxBO,EAAOD,eAAiB,KAExBC,EAAOsL,kCAEAP,EAAuBC,EAAWC,IAGpCA,EAAkBC,EAAcC,MAgB3CJ,CAAuBF,GAAa,SAAUU,EAAiBC,GAC7D,OAAID,EACK1Y,EAAS8V,UAAU4C,GAGrBvL,EAAOyL,yBAAyBD,EAAkBjC,EAAsB1W,gBAsBzFyD,EAAO+S,sCAAwC,SAA+CnB,EAAarV,GACzG,IAAIyN,EAAStP,KAETkF,EAAiB,GAIrB,GAHAA,EAAeiS,SAAWnX,KAAKoF,SAC/BF,EAAewV,SAAWxD,EAAY1R,cAEjCN,EAAewV,SAApB,CAKA,IAAInC,EAAuB,IAAI9K,EAAqBzN,KAAKiW,KAAKuC,gBAAgBtU,MAAM,KAAK,IACzFlE,KAAKmZ,gCAEiB,MAAlBnZ,KAAK0Y,YACPxT,EAAeyT,WAAa3Y,KAAK0Y,WAGnC,IAAItB,EAAyE,IAAxDhY,OAAOwE,KAAKsT,EAAYzR,qBAAqB9F,OAAeuX,EAAYzR,oBAAsByR,EAAYvR,oBAC3H0R,EAAU,CACZC,SAAU,qBACVC,SAAUvX,KAAKiW,KAAKQ,cACpB1R,eAAgBG,EAChBF,eAAgBoS,GAGdpX,KAAKwX,mBAAmBxX,KAAKoF,YAC/BiS,EAAQI,gBAAkBzX,KAAKwX,mBAAmBxX,KAAKoF,WAKzDpF,KAAKmW,OAAOuB,QAAQ,eAAgBL,GAAS,SAAUtR,EAAK4U,GAC1D,OAAI5U,EACKlE,EAAS8V,UAAU5R,GAGrBuJ,EAAOmL,yBAAyBE,EAAYpC,EAAsB1W,WA9BzEA,EAAS8V,UAAU,IAAItR,MAAM,oCA2CjCf,EAAOmV,yBAA2B,SAAkCD,EAAkBjC,EAAsB1W,GAC1G,IAAI+O,EAAS5Q,KAET4X,EAAgB4C,EAAiB3C,cACjCC,EAAsB0C,EAAiBzC,oBAE3C,GAAsB,YAAlBH,EAEF,OADA5X,KAAKkW,QAAUsE,EAAiBtE,QACzBrU,EAAS+Y,YAAYhD,EAAeE,GAG7C,GAAsB,oBAAlBF,EAEF,OADA5X,KAAKkW,QAAUsE,EAAiBtE,QACzBrU,EAASgZ,cAAcjD,EAAeE,GAG/C,GAAsB,cAAlBF,EAEF,OADA5X,KAAKkW,QAAUsE,EAAiBtE,QACzBrU,EAASiZ,SAASlD,EAAeE,GAG1C,GAAsB,uBAAlBF,EAEF,OADA5X,KAAKkW,QAAUsE,EAAiBtE,QACzBrU,EAASkZ,aAAanD,EAAeE,GAG9C,GAAsB,qBAAlBF,EAEF,OADA5X,KAAKkW,QAAUsE,EAAiBtE,QACzBrU,EAASmW,gBAAgBF,GAGlC,GAAsB,0BAAlBF,EAA2C,CAC7C5X,KAAKkW,QAAUsE,EAAiBtE,QAChC,IAAI8E,EAAiB,KACjBC,EAAwB,KACxBC,EAAqB,GACrBC,EAAuB5C,EAAqBhH,qDAOhD,GALIuG,IACFkD,EAAiBhc,KAAKC,MAAMub,EAAiBzC,oBAAoBiD,gBACjEC,EAAwBjc,KAAKC,MAAMub,EAAiBzC,oBAAoBmD,qBAGtED,EACF,IAAK,IAAIzb,EAAI,EAAGA,EAAIyb,EAAsBtb,OAAQH,IAChD0b,EAAmB1b,GAAKyb,EAAsBzb,GAAGZ,OAAOuc,EAAqBxb,QAIjF,OAAOkC,EAASuZ,oBAAoBJ,EAAgBE,GAGtD,GAAsB,oBAAlBtD,EAAJ,CAKA5X,KAAKoW,kBAAoBpW,KAAKiY,sBAAsBuC,EAAiBtC,sBACrElY,KAAK4X,cAAgBA,EACrB5X,KAAK6W,cACL,IAAIwE,EAAoBb,EAAiBtC,qBAAqBoD,kBAE9D,GAAyB,MAArBD,EACF,OAAOxZ,EAASsW,UAAUnY,KAAKoW,mBAGjCmC,EAAqBzJ,mBAAmB0L,EAAiBtC,qBAAqBoD,kBAAkBC,eAAgBf,EAAiBtC,qBAAqBoD,kBAAkBE,WAAW,SAAUC,GAC3L,GAAIA,EACF,OAAO5Z,EAAS8V,UAAU8D,GAG5B,IAAIC,EAA6B,CAC/BC,KAAM,UAAYpD,EAAqB7J,iBAAkB,OAAO9H,SAAS,UACzEgV,iBAAkB,UAAYrD,EAAqB3J,qBAAsB,OAAOhI,SAAS,WAE3FgK,EAAO/B,gBAAkB6M,EAA2BE,iBACpDhL,EAAO7B,eAAiBsM,EAAkBE,eAC1C3K,EAAOnC,eAAiB8J,EAAqB/J,oBAE7CoC,EAAOuF,OAAOuB,QAAQ,gBAAiB,CACrC8D,UAAWH,EAAkBG,UAC7B/I,YAAa7B,EAAOwF,kBAAkB1C,iBAAiB3B,cACvD8J,2BAA4BH,EAC5BI,WAAYhG,KACX,SAAUiG,EAAYC,GACvB,OAAID,EACKla,EAAS8V,UAAUoE,IAG5BnL,EAAO8H,UAAY8B,EAAiBtC,qBAAqBoD,kBAAkBE,UAE3E5K,EAAOqL,6BAEuC,IAA1CD,EAAYE,0BACPra,EAASsW,UAAUvH,EAAOwF,kBAAmB4F,EAAYE,2BAG3Dra,EAASsW,UAAUvH,EAAOwF,+BA5CnCpW,KAAKmc,kBAAkBta,IAoE3ByD,EAAO8W,6BAA+B,SAAsCC,EAAaC,EAAuBza,EAAUsD,GACxH,IAAIiM,EAASpR,KAEb,IAAKqc,EACH,OAAOxa,EAAS8V,UAAU,IAAItR,MAAM,8BAGtC,IAAIkS,EAAuB,IAAI9K,EAAqBzN,KAAKiW,KAAKuC,gBAAgBtU,MAAM,KAAK,IACrFiX,EAAuB5C,EAAqBhH,qDAC5CgL,EAAsB,GAEtBD,GACFld,OAAOwE,KAAK0Y,GAAuBhZ,SAAQ,SAAUD,GACnDkZ,EAAoBpB,EAAuB9X,GAAOiZ,EAAsBjZ,MAI5EkZ,EAAoBC,aAAeH,EACnCE,EAAoBpF,SAAWnX,KAAKoF,SACpC,IAAIiS,EAAU,CACZQ,cAAe,wBACfN,SAAUvX,KAAKiW,KAAKQ,cACpBqD,mBAAoByC,EACpBrG,QAASlW,KAAKkW,QACdlR,eAAgBG,GAGdnF,KAAKwX,uBACPH,EAAQI,gBAAkBzX,KAAKwX,sBAGjCxX,KAAKmW,OAAOuB,QAAQ,yBAA0BL,GAAS,SAAUkD,EAAiBC,GAChF,OAAID,EACK1Y,EAAS8V,UAAU4C,GAGrBnJ,EAAOqJ,yBAAyBD,EAAkBjC,EAAsB1W,OAiBnFyD,EAAO6W,kBAAoB,SAA2Bta,EAAUsD,GAC9D,IAAIsX,EAASzc,KAETuY,EAAuB,IAAI9K,EAAqBzN,KAAK+O,gBACrD0J,EAAa,IAAIzE,GACjB9O,EAAiB,GACrBA,EAAeiS,SAAWnX,KAAKoF,SAC/BF,EAAeyT,WAAa3Y,KAAK0Y,UACjCH,EAAqBvK,gBAAe,SAAU0O,EAAW7D,GAEnD6D,GACF7a,EAAS8V,UAAU+E,GAGrBxX,EAAe4T,MAAQD,EAAOjS,SAAS,IACvC,IAAIyQ,EAAU,CACZQ,cAAe,kBACfN,SAAUkF,EAAOxG,KAAKQ,cACtBqD,mBAAoB5U,EACpBF,eAAgBG,GAGdsX,EAAOjF,uBACTH,EAAQI,gBAAkBgF,EAAOjF,sBAGnCiF,EAAOtG,OAAOuB,QAAQ,yBAA0BL,GAAS,SAAUtR,EAAKrB,GACtE,GAAIqB,EACF,OAAOlE,EAAS8V,UAAU5R,GAG5B,IAAI+R,EAAsBpT,EAAKqT,oBAC3BpH,EAAe,IAAI/C,EAAWkK,EAAoBmB,MAAO,IACzDhJ,EAAO,IAAIrC,EAAWkK,EAAoBoB,KAAM,IACpDX,EAAqB7H,6BAA6B+L,EAAO/D,UAAW+D,EAAOhO,eAAgBkC,EAAcV,GAAM,SAAU0M,EAASxL,GAEhI,GAAIwL,EACF,OAAO9a,EAAS8V,UAAUgF,GAG5B,IAAItD,EAAUZ,EAAWxE,eACrBqF,EAAU,yBAA8B,YAAc,CAAC,UAAYmD,EAAO1N,eAAgB,QAAS,UAAY0N,EAAO/D,UAAW,QAAS,UAAYZ,EAAoByB,aAAc,UAAW,UAAYF,EAAS,WACxNhW,EAAM,yBAA8B8N,GACpCqI,EAAkB,cAAiB,IAAWF,EAASjW,IACvDoW,EAAqB,GACzBA,EAAmBtC,SAAWsF,EAAOrX,SACrCqU,EAAmBC,4BAA8B5B,EAAoByB,aACrEE,EAAmBE,UAAYN,EAC/BI,EAAmBG,yBAA2BJ,EAC9CC,EAAmBd,WAAa8D,EAAO/D,UACvC,IAAImB,EAAc,CAChBhC,cAAe,2BACfN,SAAUkF,EAAOxG,KAAKQ,cACtBqD,mBAAoBL,EACpBvD,QAASxR,EAAKwR,SAGZuG,EAAOjF,uBACTqC,EAAYpC,gBAAkBgF,EAAOjF,sBAGvCiF,EAAOtG,OAAOuB,QAAQ,yBAA0BmC,GAAa,SAAUU,EAAiBC,GACtF,OAAID,EACK1Y,EAAS8V,UAAU4C,IAG5BkC,EAAOrG,kBAAoBqG,EAAOxE,sBAAsBuC,EAAiBtC,sBAEzEuE,EAAO5F,cAEAhV,EAASsW,UAAUsE,EAAOrG,iCAoB3C9Q,EAAOsX,oBAAsB,SAA6BC,EAAkBC,EAAoBjb,EAAUsD,GACxG,IAAIkS,EAAU,CACZE,SAAUvX,KAAKiW,KAAKQ,cACpBsG,iBAAkBF,EAClBhY,SAAU7E,KAAKoF,SACf4X,mBAAoBF,EACpB9X,eAAgBG,GAGdnF,KAAKwX,uBACPH,EAAQI,gBAAkBzX,KAAKwX,sBAGjCxX,KAAKmW,OAAOuB,QAAQ,gBAAiBL,GAAS,SAAUtR,GACtD,OAAIA,EACKlE,EAASkE,EAAK,MAGhBlE,EAAS,KAAM,eAgB1ByD,EAAO2X,0BAA4B,SAAmCC,EAAiBrb,EAAUsD,GAC/F,IAAIgY,EAASnd,KAETyZ,EAAqB,GACzBA,EAAmBtC,SAAWnX,KAAKoF,SACnCqU,EAAmB2D,OAASF,EAC5B,IAAI3E,EAAuB,IAAI9K,EAAqBzN,KAAKiW,KAAKuC,gBAAgBtU,MAAM,KAAK,IACzFlE,KAAKmZ,gCAEiB,MAAlBnZ,KAAK0Y,YACPe,EAAmBd,WAAa3Y,KAAK0Y,WAGvC,IAAIrB,EAAU,CACZQ,cAAe,mBACfiC,mBAAoBL,EACpBlC,SAAUvX,KAAKiW,KAAKQ,cACpBP,QAASlW,KAAKkW,QACdlR,eAAgBG,GAGdnF,KAAKwX,uBACPH,EAAQI,gBAAkBzX,KAAKwX,sBAGjCxX,KAAKmW,OAAOuB,QAAQ,yBAA0BL,GAAS,SAAUtR,EAAKrB,GACpE,OAAIqB,EACKlE,EAAS8V,UAAU5R,GAGrBoX,EAAO1C,yBAAyB/V,EAAM6T,EAAsB1W,OAevEyD,EAAO+X,YAAc,SAAqBR,EAAkBhb,EAAUyb,EAASnY,GAC7E,IAAIoY,EAASvd,KAETyZ,EAAqB,GACzBA,EAAmBtC,SAAWnX,KAAKoF,SACnCqU,EAAmB+D,aAAeX,EAClC,IAAIY,EAAmBH,GAAW,UAET,uBAArBG,IACFhE,EAAmBiE,wBAA0Bb,GAGzB,MAAlB7c,KAAK0Y,YACPe,EAAmBd,WAAa3Y,KAAK0Y,WAGvC,IAAIrB,EAAU,CACZQ,cAAe4F,EACf3D,mBAAoBL,EACpBlC,SAAUvX,KAAKiW,KAAKQ,cACpBP,QAASlW,KAAKkW,QACdlR,eAAgBG,GAGdnF,KAAKwX,uBACPH,EAAQI,gBAAkBzX,KAAKwX,sBAGjCxX,KAAKmW,OAAOuB,QAAQ,yBAA0BL,GAAS,SAAUtR,EAAKyU,GACpE,GAAIzU,EACF,OAAOlE,EAAS8V,UAAU5R,GAK5B,GAAsB,oBAFFyU,EAAiB3C,cAErC,CAUA,GAJA0F,EAAOnH,kBAAoBmH,EAAOtF,sBAAsBuC,EAAiBtC,sBAEzEqF,EAAO1G,cAEwD,MAA3D2D,EAAiBtC,qBAAqBoD,kBACxC,OAAOzZ,EAASsW,UAAUoF,EAAOnH,mBAGnC,IAAImC,EAAuB,IAAI9K,EAAqB8P,EAAOtH,KAAKuC,gBAAgBtU,MAAM,KAAK,IAC3FqU,EAAqBzJ,mBAAmB0L,EAAiBtC,qBAAqBoD,kBAAkBC,eAAgBf,EAAiBtC,qBAAqBoD,kBAAkBE,WAAW,SAAUC,GAC3L,GAAIA,EACF,OAAO5Z,EAAS8V,UAAU8D,GAG5B,IAAIC,EAA6B,CAC/BC,KAAM,UAAYpD,EAAqB7J,iBAAkB,OAAO9H,SAAS,UACzEgV,iBAAkB,UAAYrD,EAAqB3J,qBAAsB,OAAOhI,SAAS,WAE3F2W,EAAO1O,gBAAkB6M,EAA2BE,iBACpD2B,EAAOxO,eAAiByL,EAAiBtC,qBAAqBoD,kBAAkBC,eAChFgC,EAAO9O,eAAiB8J,EAAqB/J,oBAE7C+O,EAAOpH,OAAOuB,QAAQ,gBAAiB,CACrC8D,UAAWhB,EAAiBtC,qBAAqBoD,kBAAkBE,UACnE/I,YAAa8K,EAAOnH,kBAAkB1C,iBAAiB3B,cACvD8J,2BAA4BH,EAC5BI,WAAYhG,KACX,SAAUiG,EAAYC,GACvB,OAAID,EACKla,EAAS8V,UAAUoE,IAG5BwB,EAAO7E,UAAY8B,EAAiBtC,qBAAqBoD,kBAAkBE,UAE3E+B,EAAOtB,6BAEuC,IAA1CD,EAAYE,0BACPra,EAASsW,UAAUoF,EAAOnH,kBAAmB4F,EAAYE,2BAG3Dra,EAASsW,UAAUoF,EAAOnH,+BA7CnCmH,EAAOpB,kBAAkBta,OA+D/ByD,EAAOqY,eAAiB,SAAwBC,EAAiBC,EAAiBhc,EAAUsD,GAC1F,GAAgC,MAA1BnF,KAAKoW,oBAA6BpW,KAAKoW,kBAAkBxC,UAC7D,OAAO/R,EAAS,IAAIwE,MAAM,6BAA8B,MAG1DrG,KAAKmW,OAAOuB,QAAQ,iBAAkB,CACpCoG,iBAAkBF,EAClBG,iBAAkBF,EAClBpL,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,cACrD/M,eAAgBG,IACf,SAAUY,GACX,OAAIA,EACKlE,EAASkE,EAAK,MAGhBlE,EAAS,KAAM,eAY1ByD,EAAO0Y,UAAY,SAAmBnc,GACpC,GAA8B,MAA1B7B,KAAKoW,oBAA8BpW,KAAKoW,kBAAkBxC,UAC5D,OAAO/R,EAAS,IAAIwE,MAAM,6BAA8B,MAG1D,IAAI4X,EAAa,GAKjBA,EAAWnc,KAJM,CACfoc,eAAgB,MAChBC,cAAe,iBAGjBne,KAAKmW,OAAOuB,QAAQ,kBAAmB,CACrC0G,WAAYH,EACZxL,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,gBACpD,SAAUhM,GACX,OAAIA,EACKlE,EAASkE,EAAK,MAGhBlE,EAAS,KAAM,eAa1ByD,EAAO+Y,qBAAuB,SAA8BC,EAAgBC,EAA0B1c,GACpG,GAA8B,MAA1B7B,KAAKoW,oBAA8BpW,KAAKoW,kBAAkBxC,UAC5D,OAAO/R,EAAS,IAAIwE,MAAM,6BAA8B,MAG1DrG,KAAKmW,OAAOuB,QAAQ,uBAAwB,CAC1C8G,eAAgBF,EAChBG,yBAA0BF,EAC1B9L,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,gBACpD,SAAUhM,GACX,OAAIA,EACKlE,EAASkE,EAAK,MAGhBlE,EAAS,KAAM,eAY1ByD,EAAOoZ,WAAa,SAAoB7c,GACtC,GAA8B,MAA1B7B,KAAKoW,oBAA8BpW,KAAKoW,kBAAkBxC,UAC5D,OAAO/R,EAAS,IAAIwE,MAAM,6BAA8B,MAI1DrG,KAAKmW,OAAOuB,QAAQ,kBAAmB,CACrC0G,WAFe,GAGf3L,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,gBACpD,SAAUhM,GACX,OAAIA,EACKlE,EAASkE,EAAK,MAGhBlE,EAAS,KAAM,eAY1ByD,EAAOqZ,WAAa,SAAoB9c,EAAUsD,GAChD,IAAIyZ,EAAS5e,KAEb,GAA8B,MAA1BA,KAAKoW,oBAA8BpW,KAAKoW,kBAAkBxC,UAC5D,OAAO/R,EAAS,IAAIwE,MAAM,6BAA8B,MAG1DrG,KAAKmW,OAAOuB,QAAQ,aAAc,CAChCjF,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,cACrD/M,eAAgBG,IACf,SAAUY,GACX,OAAIA,EACKlE,EAASkE,EAAK,OAGvB6Y,EAAOC,kBAEAhd,EAAS,KAAM,gBAiB1ByD,EAAOwZ,iBAAmB,SAA0BC,EAAYld,EAAUsD,GACxE,IAAI6Z,EAAUhf,KAEd,GAA8B,MAA1BA,KAAKoW,oBAA8BpW,KAAKoW,kBAAkBxC,UAC5D,OAAO/R,EAAS,IAAIwE,MAAM,6BAA8B,MAG1DrG,KAAKmW,OAAOuB,QAAQ,uBAAwB,CAC1CjF,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,cACrDkN,eAAgBF,EAChB/Z,eAAgBG,IACf,SAAUY,GACX,OAAIA,EACKlE,EAASkE,EAAK,MAIhBiZ,EAAQE,aAAY,WACzB,OAAOrd,EAAS,KAAM,aACrB,CACDsd,aAAa,QAYnB7Z,EAAO8Z,kBAAoB,SAA2Bvd,GACpD,GAAgC,MAA1B7B,KAAKoW,oBAA6BpW,KAAKoW,kBAAkBxC,UAC7D,OAAO/R,EAAS,IAAIwE,MAAM,6BAA8B,MAG1DrG,KAAKmW,OAAOuB,QAAQ,UAAW,CAC7BjF,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,gBACpD,SAAUhM,EAAKsZ,GAChB,GAAItZ,EACF,OAAOlE,EAASkE,EAAK,MAKvB,IAFA,IAAIuZ,EAAgB,GAEX9f,EAAI,EAAGA,EAAI6f,EAASJ,eAAetf,OAAQH,IAAK,CACvD,IAAI+f,EAAY,CACdtK,KAAMoK,EAASJ,eAAezf,GAAGyV,KACjCC,MAAOmK,EAASJ,eAAezf,GAAG0V,OAEhCsK,EAAgB,IAAIxK,GAAqBuK,GAC7CD,EAAcxd,KAAK0d,GAGrB,OAAO3d,EAAS,KAAMyd,OAW1Bha,EAAOma,cAAgB,SAAuB5d,GAC5C,GAAgC,MAA1B7B,KAAKoW,oBAA6BpW,KAAKoW,kBAAkBxC,UAC7D,OAAO/R,EAAS,IAAIwE,MAAM,6BAA8B,MAG1DrG,KAAKmW,OAAOuB,QAAQ,UAAW,CAC7BjF,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,gBACpD,SAAUhM,EAAKsZ,GAChB,OAAItZ,EACKlE,EAASkE,EAAK,MAGhBlE,EAAS,KAAMwd,EAASjB,gBAUnC9Y,EAAOoa,qBAAuB,WAC5B,OAAO1f,KAAKmW,OAAOwJ,iBAAiB,UAAW,CAC7ClN,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,iBASzDzM,EAAOsa,yBAA2B,WAChC,IAAIC,EAAU7f,KAGd,OAAO,IAAIQ,SAAQ,SAAUsf,GAC3B,IAAIC,EAAUF,EAAQzJ,kBAAkB3C,kBAEpCsM,GAAWA,EAAQ/M,WACrB6M,EAAQG,eAAeD,EAASD,GAEhCA,QAYNxa,EAAO4Z,YAAc,SAAqBrd,EAAUf,GAClD,IAAImf,EAAUjgB,KAEd,GAAgC,MAA1BA,KAAKoW,oBAA6BpW,KAAKoW,kBAAkBxC,UAE7D,OADA5T,KAAK4W,sBACE/U,EAAS,IAAIwE,MAAM,6BAA8B,MAG1D,IAAIgZ,EAAWrf,KAAKkgB,uBAEpB,GAAKb,EAOL,GAAIrf,KAAKmgB,gCAAgCrf,GACvCd,KAAKogB,gBAAgBC,MAAK,SAAU3b,GAClC,OAAOub,EAAQL,2BAA2BS,MAAK,WAC7C,OAAO3b,QAER2b,MAAK,SAAU3b,GAChB,OAAO7C,EAAS,KAAM6C,MACd,MAAE7C,QAId,IAEE,YADAA,EAAS,KAAM7C,KAAKC,MAAMogB,IAE1B,MAAOtZ,IAGP,OAFA/F,KAAK4W,2BACL/U,EAASkE,GAAK,WAtBd/F,KAAKogB,gBAAgBC,MAAK,SAAU3b,GAClC7C,EAAS,KAAM6C,MACP,MAAE7C,IA+BhByD,EAAO4a,qBAAuB,WAE5B,OADelgB,KAAKsW,QAAQ9S,QAAQxD,KAAK0W,cAU3CpR,EAAO6a,gCAAkC,SAAyCrf,GAChF,IACIwf,GADOxf,GAAU,IACOqe,YAG5B,YAFuC,IAArBmB,GAAsCA,GAW1Dhb,EAAO8a,cAAgB,WACrB,IAAIG,EAAUvgB,KAEd,OAAOA,KAAK0f,uBAAuBW,MAAK,SAAU3b,GAGhD,OAFA6b,EAAQC,cAAc9b,GAEfA,MAWXY,EAAOmb,iBAAmB,SAA0BnB,EAAezd,GACjE,GAAgC,MAA1B7B,KAAKoW,oBAA6BpW,KAAKoW,kBAAkBxC,UAC7D,OAAO/R,EAAS,IAAIwE,MAAM,6BAA8B,MAG1DrG,KAAKmW,OAAOuB,QAAQ,uBAAwB,CAC1CgJ,mBAAoBpB,EACpB7M,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,gBACpD,SAAUhM,GACX,OAAIA,EACKlE,EAASkE,EAAK,MAGhBlE,EAAS,KAAM,eAY1ByD,EAAOqb,uBAAyB,SAAgC9e,EAAUsD,GACxE,IAAIkS,EAAU,CACZE,SAAUvX,KAAKiW,KAAKQ,cACpB5R,SAAU7E,KAAKoF,SACfJ,eAAgBG,GAElBnF,KAAKmW,OAAOuB,QAAQ,yBAA0BL,GAAS,SAAUtR,EAAK7E,GACpE,OAAI6E,EACKlE,EAASkE,EAAK,MAGhBlE,EAAS,KAAMX,OAY1BoE,EAAOsb,WAAa,SAAoB/e,GACtC,GAAqB,MAAjB7B,KAAKoF,SACP,OAAOvD,EAAS,IAAIwE,MAAM,mDAAoD,MAGhF,GAA8B,MAA1BrG,KAAKoW,mBAA6BpW,KAAKoW,kBAAkBxC,UAC3D,OAAO/R,EAAS,KAAM7B,KAAKoW,mBAG7B,IAAII,EAAY,kCAAoCxW,KAAKiW,KAAKQ,cAAgB,IAAMzW,KAAKoF,SACrFyb,EAAarK,EAAY,WACzBsK,EAAiBtK,EAAY,eAC7BuK,EAAkBvK,EAAY,gBAC9BwK,EAAgBxK,EAAY,cAEhC,GAAIxW,KAAKsW,QAAQ9S,QAAQqd,GAAa,CACpC,IAAI1N,EAAU,IAAIP,EAAe,CAC/BC,QAAS7S,KAAKsW,QAAQ9S,QAAQqd,KAE5BxN,EAAc,IAAIjB,EAAmB,CACvCK,YAAazS,KAAKsW,QAAQ9S,QAAQsd,KAEhC1N,EAAe,IAAIN,EAAoB,CACzCC,aAAc/S,KAAKsW,QAAQ9S,QAAQud,KAEjCzN,EAAa2N,SAASjhB,KAAKsW,QAAQ9S,QAAQwd,GAAgB,IAAM,EAOjEE,EAAgB,IAAIjO,EANN,CAChBJ,QAASM,EACTV,YAAaY,EACbN,aAAcK,EACdF,WAAYI,IAId,GAAI4N,EAActN,UAEhB,OADA5T,KAAKoW,kBAAoB8K,EAClBrf,EAAS,KAAM7B,KAAKoW,mBAG7B,IAAKhD,EAAaJ,WAChB,OAAOnR,EAAS,IAAIwE,MAAM,uDAAwD,MAGpFrG,KAAKggB,eAAe5M,EAAcvR,QAElCA,EAAS,IAAIwE,MAAM,6DAA8D,OAcrFf,EAAO0a,eAAiB,SAAwB5M,EAAcvR,EAAUsD,GACtE,IAAIgc,EAAUnhB,KAEVohB,EAAkBphB,KAAKiW,KAAKoL,2BAA6BrhB,KAAKiW,KAAKoL,2BAA2Bxf,GAAYA,EAC1GqD,EAAiB,GACrBA,EAAeoc,cAAgBlO,EAAaJ,WAC5C,IAAIwD,EAAY,kCAAoCxW,KAAKiW,KAAKQ,cAC1D8K,EAAc/K,EAAY,gBAE9B,GAAIxW,KAAKsW,QAAQ9S,QAAQ+d,GAAc,CACrCvhB,KAAKoF,SAAWpF,KAAKsW,QAAQ9S,QAAQ+d,GACrC,IAAIC,EAAehL,EAAY,IAAMxW,KAAKoF,SAAW,aACrDpF,KAAK0Y,UAAY1Y,KAAKsW,QAAQ9S,QAAQge,GACtCtc,EAAeyT,WAAa3Y,KAAK0Y,UAGnC,IAAIrB,EAAU,CACZE,SAAUvX,KAAKiW,KAAKQ,cACpBa,SAAU,qBACVvS,eAAgBG,EAChBF,eAAgBG,GAGdnF,KAAKwX,uBACPH,EAAQI,gBAAkBzX,KAAKwX,sBAGjCxX,KAAKmW,OAAOuB,QAAQ,eAAgBL,GAAS,SAAUtR,EAAK4U,GAC1D,GAAI5U,EAKF,MAJiB,2BAAbA,EAAIqU,MACN+G,EAAQtC,kBAGHuC,EAAgBrb,EAAK,MAG9B,GAAI4U,EAAY,CACd,IAAI8G,EAAuB9G,EAAWzC,qBAUtC,OARK9Y,OAAOS,UAAU1B,eAAe2B,KAAK2hB,EAAsB,kBAC9DA,EAAqB1O,aAAeK,EAAaJ,YAGnDmO,EAAQ/K,kBAAoB+K,EAAQlJ,sBAAsBwJ,GAE1DN,EAAQtK,cAEDuK,EAAgB,KAAMD,EAAQ/K,wBAY3C9Q,EAAOuR,YAAc,WACnB,IAAIL,EAAY,kCAAoCxW,KAAKiW,KAAKQ,cAC1DoK,EAAarK,EAAY,IAAMxW,KAAKoF,SAAW,WAC/C0b,EAAiBtK,EAAY,IAAMxW,KAAKoF,SAAW,eACnD2b,EAAkBvK,EAAY,IAAMxW,KAAKoF,SAAW,gBACpD4b,EAAgBxK,EAAY,IAAMxW,KAAKoF,SAAW,cAClDmc,EAAc/K,EAAY,gBAC9BxW,KAAKsW,QAAQtS,QAAQ6c,EAAY7gB,KAAKoW,kBAAkB5C,aAAazB,eACrE/R,KAAKsW,QAAQtS,QAAQ8c,EAAgB9gB,KAAKoW,kBAAkB1C,iBAAiB3B,eAC7E/R,KAAKsW,QAAQtS,QAAQ+c,EAAiB/gB,KAAKoW,kBAAkB3C,kBAAkBT,YAC/EhT,KAAKsW,QAAQtS,QAAQgd,EAAe,GAAKhhB,KAAKoW,kBAAkBzC,iBAChE3T,KAAKsW,QAAQtS,QAAQud,EAAavhB,KAAKoF,WAOzCE,EAAOkb,cAAgB,SAAuBnB,GAC5Crf,KAAKsW,QAAQtS,QAAQhE,KAAK0W,YAAa1X,KAAKsC,UAAU+d,KAOxD/Z,EAAOsR,oBAAsB,WAC3B5W,KAAKsW,QAAQ/S,WAAWvD,KAAK0W,cAG/BpR,EAAOuZ,gBAAkB,WACvB7e,KAAK0hB,oBACL1hB,KAAK4W,uBAQPtR,EAAO2W,0BAA4B,WACjC,IAAIzF,EAAY,kCAAoCxW,KAAKiW,KAAKQ,cAAgB,IAAMzW,KAAKoF,SACrFoc,EAAehL,EAAY,aAC3BmL,EAAoBnL,EAAY,qBAChCoL,EAAoBpL,EAAY,kBACpCxW,KAAKsW,QAAQtS,QAAQwd,EAAcxhB,KAAK0Y,WACxC1Y,KAAKsW,QAAQtS,QAAQ2d,EAAmB3hB,KAAKyO,gBAC7CzO,KAAKsW,QAAQtS,QAAQ4d,EAAmB5hB,KAAK+O,iBAQ/CzJ,EAAO6T,8BAAgC,WACrC,IAAI3C,EAAY,kCAAoCxW,KAAKiW,KAAKQ,cAAgB,IAAMzW,KAAKoF,SACrFoc,EAAehL,EAAY,aAC3BmL,EAAoBnL,EAAY,qBAChCoL,EAAoBpL,EAAY,kBAEhCxW,KAAKsW,QAAQ9S,QAAQge,KACvBxhB,KAAK0Y,UAAY1Y,KAAKsW,QAAQ9S,QAAQge,GACtCxhB,KAAKyO,eAAiBzO,KAAKsW,QAAQ9S,QAAQme,GAC3C3hB,KAAK+O,eAAiB/O,KAAKsW,QAAQ9S,QAAQoe,KAS/Ctc,EAAOgV,gCAAkC,WACvC,IAAI9D,EAAY,kCAAoCxW,KAAKiW,KAAKQ,cAAgB,IAAMzW,KAAKoF,SACrFoc,EAAehL,EAAY,aAC3BmL,EAAoBnL,EAAY,qBAChCoL,EAAoBpL,EAAY,kBACpCxW,KAAKsW,QAAQ/S,WAAWie,GACxBxhB,KAAKsW,QAAQ/S,WAAWoe,GACxB3hB,KAAKsW,QAAQ/S,WAAWqe,IAQ1Btc,EAAOoc,kBAAoB,WACzB,IAAIlL,EAAY,kCAAoCxW,KAAKiW,KAAKQ,cAC1DoK,EAAarK,EAAY,IAAMxW,KAAKoF,SAAW,WAC/C0b,EAAiBtK,EAAY,IAAMxW,KAAKoF,SAAW,eACnD2b,EAAkBvK,EAAY,IAAMxW,KAAKoF,SAAW,gBACpDmc,EAAc/K,EAAY,gBAC1BwK,EAAgBxK,EAAY,IAAMxW,KAAKoF,SAAW,cACtDpF,KAAKsW,QAAQ/S,WAAWsd,GACxB7gB,KAAKsW,QAAQ/S,WAAWud,GACxB9gB,KAAKsW,QAAQ/S,WAAWwd,GACxB/gB,KAAKsW,QAAQ/S,WAAWge,GACxBvhB,KAAKsW,QAAQ/S,WAAWyd,IAU1B1b,EAAO2S,sBAAwB,SAA+B0C,GAC5D,IAAIxH,EAAU,IAAIP,EAAe+H,GAC7BtH,EAAc,IAAIjB,EAAmBuI,GACrCvH,EAAe,IAAIN,EAAoB6H,GAM3C,OAAO,IAAI1H,EALO,CAChBJ,QAASM,EACTV,YAAaY,EACbN,aAAcK,KAgBlB9N,EAAOuc,eAAiB,SAAwBhgB,EAAUsD,GACxD,IAAIkS,EAAU,CACZE,SAAUvX,KAAKiW,KAAKQ,cACpB5R,SAAU7E,KAAKoF,SACfJ,eAAgBG,GAGdnF,KAAKwX,uBACPH,EAAQI,gBAAkBzX,KAAKwX,sBAGjCxX,KAAKmW,OAAOuB,QAAQ,iBAAkBL,GAAS,SAAUtR,EAAKrB,GAC5D,OAAIqB,EACKlE,EAAS8V,UAAU5R,GAGkB,mBAAnClE,EAASigB,sBACXjgB,EAASigB,sBAAsBpd,GAGjC7C,EAASsW,UAAUzT,OAe9BY,EAAOyc,gBAAkB,SAAyBlF,EAAkBR,EAAaxa,EAAUsD,GACzF,IAAIkS,EAAU,CACZE,SAAUvX,KAAKiW,KAAKQ,cACpB5R,SAAU7E,KAAKoF,SACf2X,iBAAkBF,EAClB/X,SAAUuX,EACVrX,eAAgBG,GAGdnF,KAAKwX,uBACPH,EAAQI,gBAAkBzX,KAAKwX,sBAGjCxX,KAAKmW,OAAOuB,QAAQ,wBAAyBL,GAAS,SAAUtR,GAC9D,OAAIA,EACKlE,EAAS8V,UAAU5R,GAGrBlE,EAASsW,gBAcpB7S,EAAO0c,6BAA+B,SAAsCC,EAAepgB,EAAUsD,GACnG,GAA8B,MAA1BnF,KAAKoW,oBAA8BpW,KAAKoW,kBAAkBxC,UAC5D,OAAO/R,EAAS8V,UAAU,IAAItR,MAAM,8BAGtCrG,KAAKmW,OAAOuB,QAAQ,mCAAoC,CACtDyG,cAAe8D,EACfxP,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,cACrD/M,eAAgBG,IACf,SAAUY,EAAKrB,GAChB,OAAIqB,EACKlE,EAAS8V,UAAU5R,GAGkB,mBAAnClE,EAASigB,sBACXjgB,EAASigB,sBAAsBpd,GAGjC7C,EAASsW,gBAepB7S,EAAO4c,gBAAkB,SAAyBD,EAAepF,EAAkBhb,GACjF,GAA8B,MAA1B7B,KAAKoW,oBAA8BpW,KAAKoW,kBAAkBxC,UAC5D,OAAO/R,EAAS8V,UAAU,IAAItR,MAAM,8BAGtCrG,KAAKmW,OAAOuB,QAAQ,sBAAuB,CACzCyG,cAAe8D,EACfE,KAAMtF,EACNpK,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,gBACpD,SAAUhM,GACX,OAAIA,EACKlE,EAAS8V,UAAU5R,GAGrBlE,EAASsW,UAAU,eAa9B7S,EAAO8c,UAAY,SAAmBvgB,GACpC,GAA8B,MAA1B7B,KAAKoW,oBAA8BpW,KAAKoW,kBAAkBxC,UAC5D,OAAO/R,EAAS8V,UAAU,IAAItR,MAAM,8BAGtCrG,KAAKmW,OAAOuB,QAAQ,YAAa,CAC/BjF,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,cACrDyJ,UAAWxb,KAAK0Y,YACf,SAAU3S,EAAKrB,GAChB,OAAIqB,EACKlE,EAAS8V,UAAU5R,GAGrBlE,EAASsW,UAAUzT,OAc9BY,EAAO+c,qBAAuB,SAA8B3J,EAAW7W,GACrE,GAA8B,MAA1B7B,KAAKoW,oBAA8BpW,KAAKoW,kBAAkBxC,UAC5D,OAAO/R,EAAS8V,UAAU,IAAItR,MAAM,8BAGtCrG,KAAKmW,OAAOuB,QAAQ,eAAgB,CAClCjF,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,cACrDyJ,UAAW9C,IACV,SAAU3S,GACX,OAAIA,EACKlE,EAAS8V,UAAU5R,GAGrBlE,EAASsW,UAAU,eAa9B7S,EAAOgd,aAAe,SAAsBzgB,GAC1C,IAAI0gB,EAAUviB,KAEdA,KAAKqiB,qBAAqBriB,KAAK0Y,UAAW,CACxCf,UAAW9V,EAAS8V,UACpBQ,UAAW,SAAmBjX,GAO5B,OANAqhB,EAAQ7J,UAAY,KACpB6J,EAAQxT,eAAiB,KACzBwT,EAAQ9T,eAAiB,KAEzB8T,EAAQjI,kCAEDzY,EAASsW,UAAUjX,OAahCoE,EAAOkd,0BAA4B,SAAmC3gB,GACpE,GAA8B,MAA1B7B,KAAKoW,oBAA8BpW,KAAKoW,kBAAkBxC,UAC5D,OAAO/R,EAAS8V,UAAU,IAAItR,MAAM,8BAGtCrG,KAAKmW,OAAOuB,QAAQ,qBAAsB,CACxCjF,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,cACrDyJ,UAAWxb,KAAK0Y,UAChB+J,uBAAwB,eACvB,SAAU1c,GACX,OAAIA,EACKlE,EAAS8V,UAAU5R,GAGrBlE,EAASsW,UAAU,eAa9B7S,EAAOod,6BAA+B,SAAsC7gB,GAC1E,GAA8B,MAA1B7B,KAAKoW,oBAA8BpW,KAAKoW,kBAAkBxC,UAC5D,OAAO/R,EAAS8V,UAAU,IAAItR,MAAM,8BAGtCrG,KAAKmW,OAAOuB,QAAQ,qBAAsB,CACxCjF,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,cACrDyJ,UAAWxb,KAAK0Y,UAChB+J,uBAAwB,mBACvB,SAAU1c,GACX,OAAIA,EACKlE,EAAS8V,UAAU5R,GAGrBlE,EAASsW,UAAU,eAgB9B7S,EAAOqd,YAAc,SAAqBC,EAAOC,EAAiBhhB,GAChE,GAA8B,MAA1B7B,KAAKoW,oBAA8BpW,KAAKoW,kBAAkBxC,UAC5D,OAAO/R,EAAS8V,UAAU,IAAItR,MAAM,8BAGtC,IAAIyc,EAAgB,CAClBrQ,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,cACrDgR,MAAOH,GAGLC,IACFC,EAAcE,gBAAkBH,GAGlC7iB,KAAKmW,OAAOuB,QAAQ,cAAeoL,GAAe,SAAU/c,EAAKrB,GAC/D,OAAIqB,EACKlE,EAAS8V,UAAU5R,GAGrBlE,EAASsW,UAAUzT,OAa9BY,EAAO2d,cAAgB,SAAuBphB,GAC5C,IAAIqhB,EAAUljB,KAEd,GAA8B,MAA1BA,KAAKoW,oBAA8BpW,KAAKoW,kBAAkBxC,UAC5D,OAAO/R,EAAS8V,UAAU,IAAItR,MAAM,8BAGtCrG,KAAKmW,OAAOuB,QAAQ,gBAAiB,CACnCjF,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,gBACpD,SAAUhM,GACX,OAAIA,EACKlE,EAAS8V,UAAU5R,IAG5Bmd,EAAQrE,kBAEDhd,EAASsW,UAAU,gBAU9B7S,EAAO6d,QAAU,WACfnjB,KAAKoW,kBAAoB,KACzBpW,KAAK6e,mBAUPvZ,EAAO8d,uBAAyB,SAAgClG,EAAiBrb,GAC/E,IAAIwhB,EAAUrjB,KAEVyZ,EAAqB,GACzBA,EAAmBtC,SAAWnX,KAAKoF,SACnCqU,EAAmB2D,OAASF,EAC5B,IAAI7F,EAAU,CACZQ,cAAe,kBACfiC,mBAAoBL,EACpBlC,SAAUvX,KAAKiW,KAAKQ,cACpBP,QAASlW,KAAKkW,SAGZlW,KAAKwX,uBACPH,EAAQI,gBAAkBzX,KAAKwX,sBAGjCxX,KAAKmW,OAAOuB,QAAQ,yBAA0BL,GAAS,SAAUtR,EAAKrB,GACpE,OAAIqB,EACKlE,EAAS8V,UAAU5R,IAG5Bsd,EAAQnN,QAAUxR,EAAKwR,QAEC,YAApBgH,EACKrb,EAAS+Y,YAAYlW,EAAKmT,cAAenT,EAAKqT,qBAG/B,uBAApBmF,EACKrb,EAASkZ,aAAarW,EAAKmT,cAAenT,EAAKqT,0BADxD,OAaJzS,EAAOkS,mBAAqB,WAE1B,OADWxX,KAAKiW,KACJuB,mBAAmBxX,KAAKoF,WAStCE,EAAOge,uBAAyB,SAAgCzhB,GAC9D,IAAI0hB,EAAUvjB,KAEkB,MAA1BA,KAAKoW,mBAA6BpW,KAAKoW,kBAAkBxC,UAY7D5T,KAAKmW,OAAOuB,QAAQ,yBAA0B,CAC5CjF,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,gBACpD,SAAUhM,EAAKrB,GAChB,OAAIqB,EACKlE,EAAS8V,UAAU5R,GAGrBlE,EAAS2hB,oBAAoB9e,EAAK+e,eAlB3CzjB,KAAKmW,OAAOuB,QAAQ,yBAA0B,CAC5CxB,QAASlW,KAAKkW,UACb,SAAUnQ,EAAKrB,GAChB,OAAIqB,EACKlE,EAAS8V,UAAU5R,IAG5Bwd,EAAQrN,QAAUxR,EAAKwR,QAChBrU,EAAS2hB,oBAAoB9e,EAAK+e,iBAuB/Cne,EAAOoe,oBAAsB,SAA6BC,EAAUC,EAAoB/hB,GACtF,IAAIgiB,EAAU7jB,KAEkB,MAA1BA,KAAKoW,mBAA6BpW,KAAKoW,kBAAkBxC,UAuC7D5T,KAAKmW,OAAOuB,QAAQ,sBAAuB,CACzCjF,YAAazS,KAAKoW,kBAAkB1C,iBAAiB3B,cACrD+R,SAAUH,EACVI,mBAAoBH,IACnB,SAAU7d,EAAKrB,GAChB,OAAIqB,EACKlE,EAAS8V,UAAU5R,GAGrBlE,EAASsW,UAAUzT,MA/C5B1E,KAAKmW,OAAOuB,QAAQ,sBAAuB,CACzCxB,QAASlW,KAAKkW,QACd4N,SAAUH,EACVI,mBAAoBH,IACnB,SAAU7d,EAAKrB,GAChB,GAAIqB,EACF,OAAOlE,EAAS8V,UAAU5R,GAG5B8d,EAAQ3N,QAAUxR,EAAKwR,QACvB,IAAIuD,EAAqB,GACzBA,EAAmBtC,SAAW0M,EAAQze,SACtC,IAAIiS,EAAU,CACZQ,cAAe,YACfN,SAAUsM,EAAQ5N,KAAKQ,cACvBqD,mBAAoBL,EACpBvD,QAAS2N,EAAQ3N,SAGf2N,EAAQrM,uBACVH,EAAQI,gBAAkBoM,EAAQrM,sBAGpCqM,EAAQ1N,OAAOuB,QAAQ,yBAA0BL,GAAS,SAAU2M,EAAYC,GAC9E,OAAID,EACKniB,EAAS8V,UAAUqM,IAG5BH,EAAQzN,kBAAoByN,EAAQ5L,sBAAsBgM,EAAY/L,sBAEtE2L,EAAQhN,cAEDhV,EAASsW,UAAU0L,EAAQzN,2BAoBnCL,EAr3DsB,G,SCzE/B,SAASmO,MAGTA,GAAUrkB,UAAUiW,UAAY,uBACzB,IAcP,MCbA,SAASqO,GAAiBC,GACxB,IAAIC,EAAwB,mBAARC,IAAqB,IAAIA,SAAQhmB,EA8BrD,OA5BA6lB,GAAmB,SAA0BC,GAC3C,GAAc,OAAVA,IA4DmBG,EA5DkBH,GA6DqB,IAAzDI,SAAS5d,SAAS9G,KAAKykB,GAAItiB,QAAQ,kBA7DS,OAAOmiB,EA4D5D,IAA2BG,EA1DvB,GAAqB,mBAAVH,EACT,MAAM,IAAIK,UAAU,sDAGtB,QAAsB,IAAXJ,EAAwB,CACjC,GAAIA,EAAOK,IAAIN,GAAQ,OAAOC,EAAOtjB,IAAIqjB,GAEzCC,EAAOjjB,IAAIgjB,EAAOO,GAGpB,SAASA,IACP,OAAOC,GAAWR,EAAO1kB,UAAWmlB,GAAgB7kB,MAAM0S,aAW5D,OARAiS,EAAQ9kB,UAAYT,OAAOqD,OAAO2hB,EAAMvkB,UAAW,CACjD6S,YAAa,CACXjU,MAAOkmB,EACP7hB,YAAY,EACZgiB,UAAU,EACV/hB,cAAc,KAGXgiB,GAAgBJ,EAASP,KAGVA,GAG1B,SAASQ,GAAWI,EAAQC,EAAMb,GAchC,OAZEQ,GADEM,KACWC,QAAQC,UAER,SAAoBJ,EAAQC,EAAMb,GAC7C,IAAIld,EAAI,CAAC,MACTA,EAAEpF,KAAK/B,MAAMmH,EAAG+d,GAChB,IACII,EAAW,IADGb,SAASc,KAAKvlB,MAAMilB,EAAQ9d,IAG9C,OADIkd,GAAOW,GAAgBM,EAAUjB,EAAMvkB,WACpCwlB,IAIOtlB,MAAM,KAAML,WAGhC,SAASwlB,KACP,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUG,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA9jB,KAAK7B,UAAU+G,SAAS9G,KAAKqlB,QAAQC,UAAU1jB,KAAM,IAAI,iBAClD,EACP,MAAOxC,GACP,OAAO,GAQX,SAAS6lB,GAAgBU,EAAG7lB,GAM1B,OALAmlB,GAAkB3lB,OAAOsmB,gBAAkB,SAAyBD,EAAG7lB,GAErE,OADA6lB,EAAE9S,UAAY/S,EACP6lB,IAGcA,EAAG7lB,GAG5B,SAASilB,GAAgBY,GAIvB,OAHAZ,GAAkBzlB,OAAOsmB,eAAiBtmB,OAAOumB,eAAiB,SAAyBF,GACzF,OAAOA,EAAE9S,WAAavT,OAAOumB,eAAeF,KAEvBA,GAMzB,IC7FWG,GD6FPC,GAA4B,SAAUC,GA7F1C,IAAwBxT,EAAUC,EAgGhC,SAASsT,EAAavM,EAASc,EAAMpZ,EAAM+kB,GACzC,IAAI5lB,EAMJ,OAJAA,EAAQ2lB,EAAOhmB,KAAKE,KAAMsZ,IAAYtZ,MAChCoa,KAAOA,EACbja,EAAMa,KAAOA,EACbb,EAAM4lB,WAAaA,EACZ5lB,EAGT,OA1GgCoS,EA8FHuT,GA9FPxT,EA8FPuT,GA7FNhmB,UAAYT,OAAOqD,OAAO8P,EAAW1S,WAC9CyS,EAASzS,UAAU6S,YAAcJ,EACjCA,EAASK,UAAYJ,EAuGdsT,EAbuB,CAchB1B,GAAiB9d,QAI7B2f,GAAsB,WAOxB,SAASA,EAAOC,EAAQC,EAAUC,GAChCnmB,KAAKkmB,SAAWA,GAAY,uBAAyBD,EAAS,kBAE9D,IACIG,GADOD,GAAgB,IACJC,YAEvBpmB,KAAKmmB,aAAeC,EAAc,CAChCA,YAAaA,GACX,GAWN,IAAI9gB,EAAS0gB,EAAOnmB,UAiGpB,OA/FAyF,EAAOqa,iBAAmB,SAA0B0G,EAAWvlB,GAC7D,IAAIkO,EAAShP,KAEb,OAAO,IAAIQ,SAAQ,SAAUsf,EAASwG,GACpCtX,EAAO0I,QAAQ2O,EAAWvlB,GAAQ,SAAUiF,EAAKrB,GAC3CqB,EACFugB,EAAO,IAAIT,GAAa9f,EAAIuT,QAASvT,EAAIqU,KAAMrU,EAAI/E,KAAM+E,EAAIggB,aAE7DjG,EAAQpb,UAehBY,EAAOoS,QAAU,SAAiB2O,EAAWvlB,EAAQe,GACnD,IAYI0kB,EAZA5jB,EAAU,CACZ,eAAgB,6BAChB,eAAgB,qCAAuC0jB,EACvD,mBAAoB,wBAElB3nB,EAAUU,OAAOC,OAAO,GAAIW,KAAKmmB,aAAc,CACjDxjB,QAASA,EACT6jB,OAAQ,OACRC,KAAM,OACNC,MAAO,WACPC,KAAM3nB,KAAKsC,UAAUR,KAIvB8lB,MAAM5mB,KAAKkmB,SAAUxnB,GAAS2hB,MAAK,SAAUwG,GAE3C,OADAN,EAAWM,EACJA,KACN,SAAU9gB,GAGX,GAAIA,aAAe0e,UACjB,MAAM,IAAIpe,MAAM,iBAGlB,MAAMN,KACLsa,MAAK,SAAUwG,GAChB,OAAOA,EAAKC,OAAc,OAAE,WAC1B,MAAO,SAERzG,MAAK,SAAU3b,GAEhB,GAAI6hB,EAASQ,GAAI,OAAOllB,EAAS,KAAM6C,GACpBA,EAGnB,IAAI0V,GAAQ1V,EAAKsiB,QAAUtiB,EAAK0V,MAAMlW,MAAM,KAAKC,MAC7C8iB,EAAQ,CACV7M,KAAMA,EACNpZ,KAAMoZ,EACNd,QAAS5U,EAAK4U,SAAW5U,EAAKwiB,SAAW,MAE3C,OAAOrlB,EAASolB,MACR,OAAE,SAAUlhB,GAEpB,KAAIwgB,GAAYA,EAAS5jB,SAAW4jB,EAAS5jB,QAAQ5B,IAAI,qBAclD,IAAIgF,aAAeM,OAAyB,kBAAhBN,EAAIuT,QAA6B,CAClE,IAAI6N,EAAS,CACX/M,KAAM,eACNpZ,KAAM+E,EAAI/E,KACVsY,QAASvT,EAAIuT,SAEf,OAAOzX,EAASslB,GAEhB,OAAOtlB,EAASkE,GArBhB,IACE,IAAIqU,EAAOmM,EAAS5jB,QAAQ5B,IAAI,oBAAoBmD,MAAM,KAAK,GAC3D+iB,EAAQ,CACV7M,KAAMA,EACNpZ,KAAMoZ,EACN2L,WAAYQ,EAASa,OACrB9N,QAASiN,EAASa,OAASb,EAASa,OAAOxgB,WAAa,MAE1D,OAAO/E,EAASolB,GAChB,MAAOI,GACP,OAAOxlB,EAASkE,QAgBjBigB,EA3HiB,GE1FtBsB,GAA+B,WAejC,SAASA,EAAgB5iB,EAAM2c,GAC7B,IAAI1c,EAAOD,GAAQ,GACf6iB,EAAa5iB,EAAK4iB,WAClBhQ,EAAW5S,EAAK4S,SAChB2O,EAAWvhB,EAAKuhB,SAChBC,EAAexhB,EAAKwhB,aACpBqB,EAAqC7iB,EAAK6iB,mCAE9C,IAAKD,IAAehQ,EAClB,MAAM,IAAIlR,MAAM,8CAGlB,IAAK,cAAcohB,KAAKF,GACtB,MAAM,IAAIlhB,MAAM,8BAGlB,IAAI4f,EAASsB,EAAWrjB,MAAM,KAAK,GACnClE,KAAK0nB,WAAaH,EAClBvnB,KAAK2nB,SAAWpQ,EAChBvX,KAAKmW,OAAS,IAAI6P,GAAOC,EAAQC,EAAUC,GAM3CnmB,KAAK4nB,oCAA4E,IAAvCJ,EAC1CxnB,KAAKsW,QAAU5R,EAAK6R,UAAW,IAAI,IAAgBV,aAE/CwL,IACFrhB,KAAKqhB,2BAA6BA,GAQtC,IAAI/b,EAASgiB,EAAgBznB,UA2H7B,OAzHAyF,EAAOkT,cAAgB,WACrB,OAAOxY,KAAK0nB,YAOdpiB,EAAOmR,YAAc,WACnB,OAAOzW,KAAK2nB,UAqBdriB,EAAOuiB,OAAS,SAAgBziB,EAAUC,EAAU2V,EAAgB/V,EAAgBpD,EAAUsD,GAC5F,IAAIhF,EAAQH,KAERqX,EAAU,CACZE,SAAUvX,KAAK2nB,SACf9iB,SAAUO,EACVN,SAAUO,EACV4Z,eAAgBjE,EAChBpW,eAAgBK,EAChBD,eAAgBG,GAGdnF,KAAKwX,mBAAmBpS,KAC1BiS,EAAQI,gBAAkBzX,KAAKwX,mBAAmBpS,IAGpDpF,KAAKmW,OAAOuB,QAAQ,SAAUL,GAAS,SAAUtR,EAAKrB,GACpD,GAAIqB,EACF,OAAOlE,EAASkE,EAAK,MAGvB,IAAI+hB,EAAc,CAChBjjB,SAAUO,EACV4Q,KAAM7V,EACNoW,QAASpW,EAAMmW,SAEbyR,EAAa,CACfC,KAAM,IAAIjS,GAAY+R,GACtBG,cAAevjB,EAAKwjB,cACpBC,QAASzjB,EAAK0jB,QACdC,oBAAqB3jB,EAAK4jB,qBAE5B,OAAOzmB,EAAS,KAAMkmB,OAU1BziB,EAAOijB,eAAiB,WACtB,IAAIhH,EAAc,kCAAoCvhB,KAAK2nB,SAAW,gBAClEa,EAAexoB,KAAKsW,QAAQ9S,QAAQ+d,GAExC,GAAIiH,EAAc,CAChB,IAAIV,EAAc,CAChBjjB,SAAU2jB,EACVxS,KAAMhW,KACNuW,QAASvW,KAAKsW,SAEhB,OAAO,IAAIP,GAAY+R,GAGzB,OAAO,MAYTxiB,EAAOkS,mBAAqB,SAA4BpS,GACtD,GAAiD,oBAAtCqjB,kCAAX,CAMA,IAAIC,EAAyCD,kCAG7C,GAAIzoB,KAAK4nB,mCAAoC,CAC3C,IAAIe,EAAuBD,EAAuCE,QAAQxjB,EAAUpF,KAAK0nB,WAAY1nB,KAAK2nB,UAE1G,GAAIgB,EAIF,MAHsB,CACpBE,YAAaF,GAMnB,MAAO,KAGFrB,EA/K0B,G,YClB/BwB,GAA6B,WAU/B,SAASA,EAAcpkB,GACrB,IAAIA,EAAKqkB,OAGP,MAAM,IAAI1iB,MAAM,qDAqBlB,GAvBErG,KAAK+oB,OAASrkB,EAAKqkB,OAKjBrkB,EAAKX,KACP/D,KAAK+D,KAAOW,EAAKX,KAEjB/D,KAAK+D,KAAO,IAGV3E,OAAOS,UAAU1B,eAAe2B,KAAK4E,EAAM,WAC7C1E,KAAKyB,QAAUiD,EAAKjD,QAEpBzB,KAAKyB,QAAU,IAGbrC,OAAOS,UAAU1B,eAAe2B,KAAK4E,EAAM,UAC7C1E,KAAKsE,OAASI,EAAKJ,OAEnBtE,KAAKsE,QAAS,EAGZlF,OAAOS,UAAU1B,eAAe2B,KAAK4E,EAAM,YAAa,CAC1D,IAAK,CAAC,SAAU,MAAO,QAAQskB,SAAStkB,EAAKL,UAC3C,MAAM,IAAIgC,MAAM,0EAGlB,GAAsB,SAAlB3B,EAAKL,WAAwBrE,KAAKsE,OACpC,MAAM,IAAI+B,MAAM,6EAGlBrG,KAAKqE,SAAWK,EAAKL,cAErBrE,KAAKqE,SAAW,KAWpB,IAAIiB,EAASwjB,EAAcjpB,UAkE3B,OAhEAyF,EAAOtB,QAAU,SAAiBX,EAAK5E,GACrC,IAAIC,EAAU,CACZqF,KAAM/D,KAAK+D,KACXtC,QAASzB,KAAKyB,QACdsnB,OAAQ/oB,KAAK+oB,OACbzkB,OAAQtE,KAAKsE,QAQf,OALItE,KAAKqE,WACP3F,EAAQ2F,SAAWrE,KAAKqE,UAG1B,OAAYhB,EAAK5E,EAAOC,GACjB,OAAY2E,IAUrBiC,EAAO9B,QAAU,SAAiBH,GAChC,OAAO,OAAYA,IASrBiC,EAAO/B,WAAa,SAAoBF,GACtC,IAAI3E,EAAU,CACZqF,KAAM/D,KAAK+D,KACXtC,QAASzB,KAAKyB,QACdsnB,OAAQ/oB,KAAK+oB,OACbzkB,OAAQtE,KAAKsE,QAOf,OAJItE,KAAKqE,WACP3F,EAAQ2F,SAAWrE,KAAKqE,UAGnB,UAAehB,EAAK3E,IAQ7B4G,EAAOtC,MAAQ,WACb,IACIW,EADAzD,EAAU,SAGd,IAAKyD,EAAQ,EAAGA,EAAQzD,EAAQP,SAAUgE,EACxC,UAAezD,EAAQyD,IAGzB,MAAO,IAGFmlB,EA3HwB,G,YCUtBG,GAAY,SAAmBC,GACxC,IAAIC,EAAc5mB,OAAO6mB,KAAKF,EAFrB,SAIT,OAAIC,EACK3oB,QAAQsf,QAAQqJ,GAEhB3oB,QAAQ8lB,UCPf,GAAoC,WAatC,OAZA,GAAWlnB,OAAOC,QAAU,SAAUC,GACpC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAG9C,IAAK,IAAII,KAFTL,EAAIG,UAAUF,GAGRJ,OAAOS,UAAU1B,eAAe2B,KAAKP,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAI7D,OAAON,IAGOS,MAAMC,KAAMN,YAG1B2pB,GAAsC,SAAUC,EAASC,EAAYC,EAAGC,GAO1E,OAAO,IAAKD,IAAMA,EAAIhpB,WAAU,SAAUsf,EAASwG,GACjD,SAASoD,EAAUjrB,GACjB,IACEkrB,EAAKF,EAAUG,KAAKnrB,IACpB,MAAOS,GACPonB,EAAOpnB,IAIX,SAAS2qB,EAASprB,GAChB,IACEkrB,EAAKF,EAAiB,MAAEhrB,IACxB,MAAOS,GACPonB,EAAOpnB,IAIX,SAASyqB,EAAKzoB,GAvBhB,IAAezC,EAwBXyC,EAAO4oB,KAAOhK,EAAQ5e,EAAOzC,QAxBlBA,EAwBiCyC,EAAOzC,MAvB9CA,aAAiB+qB,EAAI/qB,EAAQ,IAAI+qB,GAAE,SAAU1J,GAClDA,EAAQrhB,OAsBkD4hB,KAAKqJ,EAAWG,GAG5EF,GAAMF,EAAYA,EAAU1pB,MAAMupB,EAASC,GAAc,KAAKK,YAI9DG,GAA0C,SAAUT,EAAS3C,GAC/D,IASIqD,EACAnf,EACAvL,EACAwG,EAZA1C,EAAI,CACN6mB,MAAO,EACPC,KAAM,WACJ,GAAW,EAAP5qB,EAAE,GAAQ,MAAMA,EAAE,GACtB,OAAOA,EAAE,IAEX6qB,KAAM,GACNC,IAAK,IAMP,OAAOtkB,EAAI,CACT8jB,KAAMS,EAAK,GACX,MAASA,EAAK,GACd,OAAUA,EAAK,IACI,mBAAXC,SAA0BxkB,EAAEwkB,OAAOC,UAAY,WACvD,OAAOvqB,OACL8F,EAEJ,SAASukB,EAAK5qB,GACZ,OAAO,SAAU0I,GACf,OAIJ,SAAcqiB,GACZ,GAAIR,EAAG,MAAM,IAAIvF,UAAU,mCAE3B,KAAOrhB,GACL,IACE,GAAI4mB,EAAI,EAAGnf,IAAMvL,EAAY,EAARkrB,EAAG,GAAS3f,EAAU,OAAI2f,EAAG,GAAK3f,EAAS,SAAOvL,EAAIuL,EAAU,SAAMvL,EAAEQ,KAAK+K,GAAI,GAAKA,EAAE+e,SAAWtqB,EAAIA,EAAEQ,KAAK+K,EAAG2f,EAAG,KAAKV,KAAM,OAAOxqB,EAG3J,OAFIuL,EAAI,EAAGvL,IAAGkrB,EAAK,CAAS,EAARA,EAAG,GAAQlrB,EAAEb,QAEzB+rB,EAAG,IACT,KAAK,EACL,KAAK,EACHlrB,EAAIkrB,EACJ,MAEF,KAAK,EAEH,OADApnB,EAAE6mB,QACK,CACLxrB,MAAO+rB,EAAG,GACVV,MAAM,GAGV,KAAK,EACH1mB,EAAE6mB,QACFpf,EAAI2f,EAAG,GACPA,EAAK,CAAC,GACN,SAEF,KAAK,EACHA,EAAKpnB,EAAEgnB,IAAIjmB,MAEXf,EAAE+mB,KAAKhmB,MAEP,SAEF,QACE,KAAM7E,EAAI8D,EAAE+mB,MAAM7qB,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,KAAkB,IAAV6qB,EAAG,IAAsB,IAAVA,EAAG,IAAW,CACtFpnB,EAAI,EACJ,SAGF,GAAc,IAAVonB,EAAG,MAAclrB,GAAKkrB,EAAG,GAAKlrB,EAAE,IAAMkrB,EAAG,GAAKlrB,EAAE,IAAK,CACvD8D,EAAE6mB,MAAQO,EAAG,GACb,MAGF,GAAc,IAAVA,EAAG,IAAYpnB,EAAE6mB,MAAQ3qB,EAAE,GAAI,CACjC8D,EAAE6mB,MAAQ3qB,EAAE,GACZA,EAAIkrB,EACJ,MAGF,GAAIlrB,GAAK8D,EAAE6mB,MAAQ3qB,EAAE,GAAI,CACvB8D,EAAE6mB,MAAQ3qB,EAAE,GAEZ8D,EAAEgnB,IAAItoB,KAAK0oB,GAEX,MAGElrB,EAAE,IAAI8D,EAAEgnB,IAAIjmB,MAEhBf,EAAE+mB,KAAKhmB,MAEP,SAGJqmB,EAAK7D,EAAK7mB,KAAKwpB,EAASlmB,GACxB,MAAOlE,GACPsrB,EAAK,CAAC,EAAGtrB,GACT2L,EAAI,EACJ,QACAmf,EAAI1qB,EAAI,EAIZ,GAAY,EAARkrB,EAAG,GAAQ,MAAMA,EAAG,GACxB,MAAO,CACL/rB,MAAO+rB,EAAG,GAAKA,EAAG,QAAK,EACvBV,MAAM,GAlFCH,CAAK,CAAClqB,EAAG0I,OAuFlBsiB,GAAgC,SAAUhF,EAAGhmB,GAC/C,IAAIyI,EAAsB,mBAAXoiB,QAAyB7E,EAAE6E,OAAOC,UACjD,IAAKriB,EAAG,OAAOud,EACf,IACIpc,EAEAnK,EAHAM,EAAI0I,EAAEpI,KAAK2lB,GAEXiF,EAAK,GAGT,IACE,WAAc,IAANjrB,GAAgBA,KAAM,MAAQ4J,EAAI7J,EAAEoqB,QAAQE,MAClDY,EAAG5oB,KAAKuH,EAAE5K,OAEZ,MAAOwoB,GACP/nB,EAAI,CACF+nB,MAAOA,GAET,QACA,IACM5d,IAAMA,EAAEygB,OAAS5hB,EAAI1I,EAAU,SAAI0I,EAAEpI,KAAKN,GAC9C,QACA,GAAIN,EAAG,MAAMA,EAAE+nB,OAInB,OAAOyD,GAWLC,GAAmC,oBAAXL,QAAgD,mBAAfA,OAAOM,IAAqBN,OAAOM,IAAI,mBAAqB,oBAErHC,GAAoB,SAA2BC,EAAOpmB,EAAM4U,GAC9DyR,EAAA,YAAa,OAAQ,CACnBD,MAAOA,EACPpmB,KAAMA,EACN4U,QAASA,GACR,OAAQqR,KAGTK,GAAS,IAAI,IAAO,SA+WxB,GA3WA,WACE,SAASC,EAAM5pB,GACb,IAAI6pB,EAAS7pB,EAAG6pB,OACZC,EAAkB9pB,EAAG8pB,gBACrBC,EAAK/pB,EAAGgqB,OACRA,OAAgB,IAAPD,EAAgB,GAAKA,EAIlC,GAHAprB,KAAKsrB,WAAaJ,EAAOK,WAAatC,GACtCjpB,KAAKwrB,QAAUN,EACflrB,KAAKyrB,iBAAmBN,GACnBnrB,KAAK0rB,cAAcL,GAAS,MAAMhlB,MAAM,iCAC7CrG,KAAK2rB,QAAUN,EA8VjB,OA3VAJ,EAAMprB,UAAU6rB,cAAgB,SAAUL,GACxC,OAAOpoB,MAAM2oB,QAAQP,IAAWA,EAAOQ,OAAM,SAAUC,GACrD,MAAwB,iBAAVA,MAIlBb,EAAMprB,UAAUksB,YAAc,SAAUC,EAAcjD,EAAQxqB,EAAgBopB,EAAUsE,EAAUC,QAC3E,IAAjBF,IACFA,EAAe,aAGA,IAAbC,IACFA,EAAWpuB,EAAgCsuB,SAG7C,IAAIC,EAAiBpsB,KAAKqsB,eAAe,IASrCC,EAAQJ,EAAcE,EAAiB,IAAoBF,EChQtDhoB,MAAM,IAAIf,KAAI,SAAUopB,GACjC,OAAOA,EAAKvjB,WAAW,GAAGpC,SAAS,IAAI4lB,SAAS,EAAG,QAClDxlB,KAAK,ID8PwEolB,GErP5D,SAAkBE,GACtC/pB,OAAOkqB,eAAezoB,QAAQ,cAAesoB,GFqP3C,CAAsBA,GAEtB,IEhPkCI,EFgP9BC,EAAW3sB,KAAK4sB,gBAAgB,KEhPFF,EFkPbC,EEjPvBpqB,OAAOkqB,eAAezoB,QAAQ,iBAAkB0oB,GFmP9C,IAAIG,EAAiB7sB,KAAK8sB,mBAAmBH,GAIzCI,EAAe/sB,KAAK2rB,QAAQ3kB,KAAK,KAoBjCgmB,EAAM,WAAajE,EAAS,qBAlBd3pB,OAAOyD,QAAQ,GAAS,GAAS,CACjDoqB,aAAc1uB,EACd2uB,cAAelB,EACfmB,UAAWxF,EACXyF,kBAAmBnB,EACnBH,MAAOiB,EACPT,MAAOA,GACW,SAAjBN,EAA0B,CAC3Ba,eAAgBA,GACd,IAAsB,SAAjBb,EAA0B,CACjCqB,sBAd0B,QAexB,KAAKlqB,KAAI,SAAU9B,GACrB,IAAI+pB,EAAKX,GAAOppB,EAAI,GAChBnD,EAAIktB,EAAG,GACPjjB,EAAIijB,EAAG,GAEX,OAAOkC,mBAAmBpvB,GAAK,IAAMovB,mBAAmBnlB,MACvDnB,KAAK,KAERgkB,GAAOuC,MAAM,kBAAoBP,GAEjChtB,KAAKsrB,WAAW0B,EAAKzuB,IAGvB0sB,EAAMprB,UAAU2tB,gBAAkB,SAAUC,GAC1C,OAAOpE,GAAUrpB,UAAM,OAAQ,GAAQ,WACrC,IAAIoa,EAAMsT,EAAoBP,EAAWF,EAAcU,EAAeC,EAAgBjH,EAAMtlB,EAAIwsB,EAAcC,EAAeC,EAAU9G,EAEvI,OAAO8C,GAAY/pB,MAAM,SAAUorB,GACjC,OAAQA,EAAGnB,OACT,KAAK,EAeH,OAdA7P,IAAQ,SAAMqT,GAAYO,OAAS,IAAI9pB,MAAM,KAAKf,KAAI,SAAU8qB,GAC9D,OAAOA,EAAS/pB,MAAM,QACrBsG,QAAO,SAAU0jB,EAAO7sB,GACzB,IAAI+pB,EAEA+C,EAAK1D,GAAOppB,EAAI,GAChBnD,EAAIiwB,EAAG,GACPhmB,EAAIgmB,EAAG,GAEX,OAAO,GAAS,GAAS,GAAID,KAAS9C,EAAK,IAAOltB,GAAKiK,EAAGijB,MACzD,CACDhR,UAAM9b,IACL8b,QAEU,SAAMqT,GAAYW,YAAa,SAAMpuB,KAAKwrB,QAAQjtB,gBAAgB6vB,UAM/EV,EAAqB,WAAa1tB,KAAKwrB,QAAQzC,OAAS,gBACxD8B,GAAkB,WAAY,GAAI,0BAA4B6C,GAC9DP,EAAY/uB,EAAoB4B,KAAKwrB,SAAWxrB,KAAKyrB,iBAAmBzrB,KAAKwrB,QAAQ6C,SACrFpB,EAAe7uB,EAAoB4B,KAAKwrB,SAAWxrB,KAAKwrB,QAAQjtB,eAAiByB,KAAKwrB,QAAQ8C,YE5SpGC,EAAiBhsB,OAAOkqB,eAAejpB,QAAQ,kBACnDjB,OAAOkqB,eAAelpB,WAAW,kBF6SvBqqB,EAAiB,GAAS,CACxBY,WAAY,qBACZpU,KAAMA,EACN+S,UAAWA,EACXF,aAAcA,IALhBU,EE3SHY,GFiTsB,CACjBZ,cAAeA,GACb,IACJ3C,GAAOuC,MAAM,2BAA6BG,EAAqB,QAASE,GACxEjH,EAAOvnB,OAAOyD,QAAQ+qB,GAAgBzqB,KAAI,SAAU9B,GAClD,IAAI+pB,EAAKX,GAAOppB,EAAI,GAChBnD,EAAIktB,EAAG,GACPjjB,EAAIijB,EAAG,GAEX,OAAOkC,mBAAmBpvB,GAAK,IAAMovB,mBAAmBnlB,MACvDnB,KAAK,KACD,CAAC,EAEN4f,MAAM8G,EAAoB,CAC1BlH,OAAQ,OACR7jB,QAAS,CACP,eAAgB,qCAElBgkB,KAAMA,MAjCC,CAAC,GAoCZ,KAAK,EACH,MAAO,CAAC,EAENyE,EAAGlB,OAAOpD,QAEd,KAAK,EAGH,GAFAzlB,EAAK+pB,EAAGlB,OAAQ2D,EAAexsB,EAAGwsB,aAAcC,EAAgBzsB,EAAGysB,cAAeC,EAAW1sB,EAAG0sB,SAAU9G,EAAQ5lB,EAAG4lB,MAGnH,MAAM,IAAI5gB,MAAM4gB,GAGlB,MAAO,CAAC,EAEN,CACA5T,YAAawa,EACbza,aAAc0a,EACd3a,QAAS4a,IE1VF,IACfQ,SFgWJtD,EAAMprB,UAAU4uB,oBAAsB,SAAUhB,GAC9C,OAAOpE,GAAUrpB,UAAM,OAAQ,GAAQ,WACrC,IAAIqB,EAAI0sB,EAAUF,EAElB,OAAO9D,GAAY/pB,MAAM,SAAUorB,GAkBjC,OAjBA/pB,IAAM,SAAMosB,GAAYte,MAAQ,KAAKvQ,OAAO,GAC3CsF,MAAM,KAAKf,KAAI,SAAU8qB,GACxB,OAAOA,EAAS/pB,MAAM,QACrBsG,QAAO,SAAU0jB,EAAO7sB,GACzB,IAAI+pB,EAEA+C,EAAK1D,GAAOppB,EAAI,GAChBnD,EAAIiwB,EAAG,GACPhmB,EAAIgmB,EAAG,GAEX,OAAO,GAAS,GAAS,GAAID,KAAS9C,EAAK,IAAOltB,GAAKiK,EAAGijB,MACzD,CACD2C,cAAUzvB,EACVuvB,kBAAcvvB,IACZyvB,EAAW1sB,EAAG0sB,SAAUF,EAAexsB,EAAGwsB,aAC9ChD,GAAkB,eAAgB,GAAI,mBAAqB4C,GAC3DzC,GAAOuC,MAAM,mCAAqCE,EAAa,SACxD,CAAC,EAEN,CACApa,YAAawa,EACb1a,QAAS4a,EACT3a,aAAc,cAMtB6X,EAAMprB,UAAU6uB,mBAAqB,SAAUjB,GAC7C,OAAOpE,GAAUrpB,UAAM,OAAQ,GAAQ,WACrC,IAAI2uB,EAAW1H,EAAO2H,EAAmBtC,EAAOjrB,EAAI+pB,EAAIyD,EAExD,OAAO9E,GAAY/pB,MAAM,SAAUmuB,GACjC,OAAQA,EAAGlE,OACT,KAAK,EAsBH,GArBAkE,EAAGhE,KAAKroB,KAAK,CAAC,EAAG,EAAE,CAAE,IAErB6sB,EAAYlB,EAAa,GAAS,GAAS,KAAK,SAAMA,GAAYte,MAAQ,KAAKvQ,OAAO,GAAGsF,MAAM,KAAKf,KAAI,SAAU2rB,GAChH,OAAOA,EAAM5qB,MAAM,QAClBsG,QAAO,SAAUukB,EAAK1tB,GACvB,IAAI+pB,EAAKX,GAAOppB,EAAI,GAChBnD,EAAIktB,EAAG,GACPjjB,EAAIijB,EAAG,GAEX,OAAO2D,EAAI7wB,GAAKiK,EAAG4mB,IAClB,OAAO,SAAMtB,GAAYO,OAAS,IAAI9pB,MAAM,KAAKf,KAAI,SAAU2rB,GAChE,OAAOA,EAAM5qB,MAAM,QAClBsG,QAAO,SAAUukB,EAAK1tB,GACvB,IAAI+pB,EAAKX,GAAOppB,EAAI,GAChBnD,EAAIktB,EAAG,GACPjjB,EAAIijB,EAAG,GAEX,OAAO2D,EAAI7wB,GAAKiK,EAAG4mB,IAClB,KAAO,GACV9H,EAAQ0H,EAAU1H,MAAO2H,EAAoBD,EAAUC,kBAEnD3H,EACF,MAAM,IAAI5gB,MAAMuoB,GAKlB,OAFAtC,EAAQtsB,KAAKgvB,eAAeL,GAC5B3D,GAAOuC,MAAM,YAAcvtB,KAAKwrB,QAAQQ,aAAe,cAAgByB,GACnC,SAA9BztB,KAAKwrB,QAAQQ,aAAiC,CAAC,EAEnD,IACF3qB,EAAK,CAAC,IACC,CAAC,EAENrB,KAAKwtB,gBAAgBC,KAEzB,KAAK,EACH,MAAO,CAAC,EAEN,GAAS1tB,WAAM,EAAQ,CAAC,GAASA,WAAM,EAAQsB,EAAG4tB,OAAO,CAACd,EAAGjE,UAAW,CACxEoC,MAAOA,MAGX,KAAK,EAEH,OADAlB,EAAK,CAAC,IACC,CAAC,EAENprB,KAAKyuB,oBAAoBhB,IAE7B,KAAK,EACH,MAAO,CAAC,EAEN,GAAS1tB,WAAM,EAAQ,CAAC,GAASA,WAAM,EAAQqrB,EAAG6D,OAAO,CAACd,EAAGjE,UAAW,CACxEoC,MAAOA,MAGX,KAAK,EACH,MAAO,CAAC,EAEN,GAEJ,KAAK,EAGH,MAFAuC,EAAMV,EAAGjE,OACTc,GAAO/D,MAAM,gCAAiC4H,GACxCA,EAER,KAAK,EACH,MAAO,CAAC,WAQlB5D,EAAMprB,UAAUmvB,eAAiB,SAAUL,GACzC,GAAKA,EAAL,CAIA,IE/dEO,EF+dEC,GE/dFD,EAAc3sB,OAAOkqB,eAAejpB,QAAQ,eAChDjB,OAAOkqB,eAAelpB,WAAW,eAC1B2rB,GF8dDE,EAAgBT,EAAUrC,MAE9B,GAAI6C,GAAcA,IAAeC,EAC/B,MAAM,IAAI/oB,MAAM,+BAGlB,OAAO+oB,IAGTnE,EAAMprB,UAAUsjB,QAAU,WACxB,OAAOkG,GAAUrpB,UAAM,OAAQ,GAAQ,WACrC,IAAIqvB,EAAqBlC,EAAWmC,EACpC,OAAOvF,GAAY/pB,MAAM,SAAUqB,GAkBjC,OAjBAguB,EAAsB,WAAarvB,KAAKwrB,QAAQzC,OAAS,WACzDoE,EAAY/uB,EAAoB4B,KAAKwrB,SAAWxrB,KAAKyrB,iBAAmBzrB,KAAKwrB,QAAQntB,MAAMgwB,SAC3FiB,EAAclxB,EAAoB4B,KAAKwrB,SAAWxrB,KAAKwrB,QAAQ+D,gBAAkBvvB,KAAKwrB,QAAQgE,SAC9FH,GAAuBjwB,OAAOyD,QAAQ,CACpCsqB,UAAWA,EACXsC,WAAYnC,mBAAmBgC,KAC9BnsB,KAAI,SAAU9B,GACf,IAAI+pB,EAAKX,GAAOppB,EAAI,GAIpB,OAHQ+pB,EAAG,GAGA,IAFHA,EAAG,MAGVpkB,KAAK,KACR6jB,GAAkB,eAAgB,CAChC6E,MAAO,WACN,oBAAsBL,GACzBrE,GAAOuC,MAAM,oBAAsB8B,GAC5B,CAAC,EAENrvB,KAAKsrB,WAAW+D,WAKxBpE,EAAMprB,UAAUwsB,eAAiB,SAAU1sB,GAKzC,IAJA,IAAIuB,EAAS,GACT1B,EAAIG,EACJgwB,EAAQ,iEAELnwB,EAAI,IAAKA,EACd0B,GAAUyuB,EAAMvnB,KAAKwnB,MAAMxnB,KAAK1B,UAAYipB,EAAMhwB,OAAS,KAG7D,OAAOuB,GAGT+pB,EAAMprB,UAAUitB,mBAAqB,SAAU1S,GAC7C,OAAOpa,KAAK6vB,WAAW,IAAOzV,KAGhC6Q,EAAMprB,UAAUgwB,WAAa,SAAUC,GACrC,OAAOA,EAAOlpB,SAAS,KAAQmpB,QAAQ,KAAM,IAAIA,QAAQ,MAAO,KAAKA,QAAQ,MAAO,MAGtF9E,EAAMprB,UAAU+sB,gBAAkB,SAAUoD,GAC1C,IACIC,EAAS,IAAIC,WAAWF,GAE5B,GAAsB,oBAAXztB,QAA4BA,OAAOqD,OAC5CrD,OAAOqD,OAAOK,gBAAgBgqB,QAE9B,IAAK,IAAIzwB,EAAI,EAAGA,EAAIwwB,EAAMxwB,GAAK,EAC7BywB,EAAOzwB,GAAK4I,KAAK1B,SAPP,qEAO0B/G,OAAS,EAIjD,OAAOK,KAAKmwB,gBAAgBF,IAG9BhF,EAAMprB,UAAUswB,gBAAkB,SAAUF,GAI1C,IAHA,IAAIG,EAAU,iEACV9D,EAAQ,GAEH9sB,EAAI,EAAGA,EAAIywB,EAAOI,WAAY7wB,GAAK,EAAG,CAC7C,IAAImE,EAAQssB,EAAOzwB,GAAK4wB,EAAQzwB,OAChC2sB,EAAMxqB,KAAKsuB,EAAQzsB,IAGrB,OAAO2oB,EAAMtlB,KAAK,KAGbikB,EAxWT,IJ1NA,SAAWrF,GACTA,EAA8B,YAAI,uBAClCA,EAAiC,eAAI,2BACrCA,EAAmC,iBAAI,qEACvCA,EAAiC,eAAI,2BACrCA,EAA6B,WAAI,oCACjCA,EAAgC,cAAI,yBACpCA,EAAyB,OAAI,+BAC7BA,EAA8B,YAAI,mBAClCA,EAAkC,gBAAI,qCACtCA,EAAkC,gBAAI,sDAVxC,CAWGA,KAAqBA,GAAmB,KOD3C,IACM0K,GADFC,IACED,GAAiB,SAAuB5jB,EAAGvF,GAW7C,OAVAmpB,GAAiBlxB,OAAOsmB,gBAAkB,CACxC/S,UAAW,cACA1P,OAAS,SAAUyJ,EAAGvF,GACjCuF,EAAEiG,UAAYxL,IACX,SAAUuF,EAAGvF,GAChB,IAAK,IAAIvH,KAAKuH,EACRA,EAAEhJ,eAAeyB,KAAI8M,EAAE9M,GAAKuH,EAAEvH,MAIhB8M,EAAGvF,IAGpB,SAAUuF,EAAGvF,GAGlB,SAASqpB,IACPxwB,KAAK0S,YAAchG,EAHrB4jB,GAAe5jB,EAAGvF,GAMlBuF,EAAE7M,UAAkB,OAANsH,EAAa/H,OAAOqD,OAAO0E,IAAMqpB,EAAG3wB,UAAYsH,EAAEtH,UAAW,IAAI2wB,KAM/E,GAAS,IAAI,IAAO,aAEpBC,GAEJ,SAAUC,GAGR,SAASD,EAAUE,GACjB,IAAIxwB,EAAQH,KAERqB,EAAKuvB,GAAkBD,GACvBrX,EAAUjY,EAAGiY,QACbuX,EAAMxvB,EAAGwvB,IASb,OARA1wB,EAAQuwB,EAAO5wB,KAAKE,KAAMsZ,IAAYtZ,MAGhC0S,YAAc+d,EACpBrxB,OAAOsmB,eAAevlB,EAAOswB,EAAU5wB,WACvCM,EAAMa,KAAO,YACbb,EAAM0wB,IAAMA,GAAOvX,EACnB,GAAO2N,MAAM9mB,EAAM0wB,KACZ1wB,EAGT,OAnBAowB,GAAUE,EAAWC,GAmBdD,EApBT,CAqBEpqB,OAIEyqB,GAEJ,SAAUJ,GAGR,SAASI,EAAgBH,GACvB,IAAIxwB,EAAQuwB,EAAO5wB,KAAKE,KAAM2wB,IAAS3wB,KAOvC,OAHAG,EAAMuS,YAAcoe,EACpB1xB,OAAOsmB,eAAevlB,EAAO2wB,EAAgBjxB,WAC7CM,EAAMa,KAAO,kBACNb,EAGT,OAbAowB,GAAUO,EAAiBJ,GAapBI,EAdT,CAeEL,IAGSG,GAAoB,CAC7BG,SAAU,CACRzX,QAASsM,GAAiBoL,YAC1BH,IAAK,gnBAEPI,kBAAmB,CACjB3X,QAASsM,GAAiBoL,YAC1BH,IAAK,6VAEPK,cAAe,CACb5X,QAASsM,GAAiBuL,gBAG5BC,gBAAiB,CACf9X,QAASsM,GAAiByL,kBAE5BC,cAAe,CACbhY,QAASsM,GAAiB2L,gBAE5BC,UAAW,CACTlY,QAASsM,GAAiB6L,YAE5BC,YAAa,CACXpY,QAASsM,GAAiB+L,cAC1Bd,IAAK,kEAEPe,MAAO,CACLtY,QAASsM,GAAiBiM,QAE5BC,WAAY,CACVxY,QAASsM,GAAiBmM,aAE5BC,uBAAwB,CACtB1Y,QAASsM,GAAiBqM,iBAE5BC,cAAe,CACb5Y,QAASsM,GAAiBuM,iBAE5BC,QAAS,CACP9Y,QAASsM,GAAiBoL,cCpH1B,GAAoC,WAatC,OAZA,GAAW5xB,OAAOC,QAAU,SAAUC,GACpC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAG9C,IAAK,IAAII,KAFTL,EAAIG,UAAUF,GAGRJ,OAAOS,UAAU1B,eAAe2B,KAAKP,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAI7D,OAAON,IAGOS,MAAMC,KAAMN,YAG1B,GAAsC,SAAU4pB,EAASC,EAAYC,EAAGC,GAO1E,OAAO,IAAKD,IAAMA,EAAIhpB,WAAU,SAAUsf,EAASwG,GACjD,SAASoD,EAAUjrB,GACjB,IACEkrB,EAAKF,EAAUG,KAAKnrB,IACpB,MAAOS,GACPonB,EAAOpnB,IAIX,SAAS2qB,EAASprB,GAChB,IACEkrB,EAAKF,EAAiB,MAAEhrB,IACxB,MAAOS,GACPonB,EAAOpnB,IAIX,SAASyqB,EAAKzoB,GAvBhB,IAAezC,EAwBXyC,EAAO4oB,KAAOhK,EAAQ5e,EAAOzC,QAxBlBA,EAwBiCyC,EAAOzC,MAvB9CA,aAAiB+qB,EAAI/qB,EAAQ,IAAI+qB,GAAE,SAAU1J,GAClDA,EAAQrhB,OAsBkD4hB,KAAKqJ,EAAWG,GAG5EF,GAAMF,EAAYA,EAAU1pB,MAAMupB,EAASC,GAAc,KAAKK,YAI9D,GAA0C,SAAUN,EAAS3C,GAC/D,IASIqD,EACAnf,EACAvL,EACAwG,EAZA1C,EAAI,CACN6mB,MAAO,EACPC,KAAM,WACJ,GAAW,EAAP5qB,EAAE,GAAQ,MAAMA,EAAE,GACtB,OAAOA,EAAE,IAEX6qB,KAAM,GACNC,IAAK,IAMP,OAAOtkB,EAAI,CACT8jB,KAAMS,EAAK,GACX,MAASA,EAAK,GACd,OAAUA,EAAK,IACI,mBAAXC,SAA0BxkB,EAAEwkB,OAAOC,UAAY,WACvD,OAAOvqB,OACL8F,EAEJ,SAASukB,EAAK5qB,GACZ,OAAO,SAAU0I,GACf,OAIJ,SAAcqiB,GACZ,GAAIR,EAAG,MAAM,IAAIvF,UAAU,mCAE3B,KAAOrhB,GACL,IACE,GAAI4mB,EAAI,EAAGnf,IAAMvL,EAAY,EAARkrB,EAAG,GAAS3f,EAAU,OAAI2f,EAAG,GAAK3f,EAAS,SAAOvL,EAAIuL,EAAU,SAAMvL,EAAEQ,KAAK+K,GAAI,GAAKA,EAAE+e,SAAWtqB,EAAIA,EAAEQ,KAAK+K,EAAG2f,EAAG,KAAKV,KAAM,OAAOxqB,EAG3J,OAFIuL,EAAI,EAAGvL,IAAGkrB,EAAK,CAAS,EAARA,EAAG,GAAQlrB,EAAEb,QAEzB+rB,EAAG,IACT,KAAK,EACL,KAAK,EACHlrB,EAAIkrB,EACJ,MAEF,KAAK,EAEH,OADApnB,EAAE6mB,QACK,CACLxrB,MAAO+rB,EAAG,GACVV,MAAM,GAGV,KAAK,EACH1mB,EAAE6mB,QACFpf,EAAI2f,EAAG,GACPA,EAAK,CAAC,GACN,SAEF,KAAK,EACHA,EAAKpnB,EAAEgnB,IAAIjmB,MAEXf,EAAE+mB,KAAKhmB,MAEP,SAEF,QACE,KAAM7E,EAAI8D,EAAE+mB,MAAM7qB,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,KAAkB,IAAV6qB,EAAG,IAAsB,IAAVA,EAAG,IAAW,CACtFpnB,EAAI,EACJ,SAGF,GAAc,IAAVonB,EAAG,MAAclrB,GAAKkrB,EAAG,GAAKlrB,EAAE,IAAMkrB,EAAG,GAAKlrB,EAAE,IAAK,CACvD8D,EAAE6mB,MAAQO,EAAG,GACb,MAGF,GAAc,IAAVA,EAAG,IAAYpnB,EAAE6mB,MAAQ3qB,EAAE,GAAI,CACjC8D,EAAE6mB,MAAQ3qB,EAAE,GACZA,EAAIkrB,EACJ,MAGF,GAAIlrB,GAAK8D,EAAE6mB,MAAQ3qB,EAAE,GAAI,CACvB8D,EAAE6mB,MAAQ3qB,EAAE,GAEZ8D,EAAEgnB,IAAItoB,KAAK0oB,GAEX,MAGElrB,EAAE,IAAI8D,EAAEgnB,IAAIjmB,MAEhBf,EAAE+mB,KAAKhmB,MAEP,SAGJqmB,EAAK7D,EAAK7mB,KAAKwpB,EAASlmB,GACxB,MAAOlE,GACPsrB,EAAK,CAAC,EAAGtrB,GACT2L,EAAI,EACJ,QACAmf,EAAI1qB,EAAI,EAIZ,GAAY,EAARkrB,EAAG,GAAQ,MAAMA,EAAG,GACxB,MAAO,CACL/rB,MAAO+rB,EAAG,GAAKA,EAAG,QAAK,EACvBV,MAAM,GAlFCH,CAAK,CAAClqB,EAAG0I,OAuFlB,GAAgC,SAAUsd,EAAGhmB,GAC/C,IAAIyI,EAAsB,mBAAXoiB,QAAyB7E,EAAE6E,OAAOC,UACjD,IAAKriB,EAAG,OAAOud,EACf,IACIpc,EAEAnK,EAHAM,EAAI0I,EAAEpI,KAAK2lB,GAEXiF,EAAK,GAGT,IACE,WAAc,IAANjrB,GAAgBA,KAAM,MAAQ4J,EAAI7J,EAAEoqB,QAAQE,MAClDY,EAAG5oB,KAAKuH,EAAE5K,OAEZ,MAAOwoB,GACP/nB,EAAI,CACF+nB,MAAOA,GAET,QACA,IACM5d,IAAMA,EAAEygB,OAAS5hB,EAAI1I,EAAU,SAAI0I,EAAEpI,KAAKN,GAC9C,QACA,GAAIN,EAAG,MAAMA,EAAE+nB,OAInB,OAAOyD,GAWL,GAAS,IAAI,IAAO,aACpB2H,GAAmB,gCAGnB,GAAmC,oBAAX/H,QAAgD,mBAAfA,OAAOM,IAAqBN,OAAOM,IAAI,mBAAqB,oBAErH,GAAoB,SAA2BE,EAAOpmB,EAAM4U,GAC9DyR,EAAA,YAAa,OAAQ,CACnBD,MAAOA,EACPpmB,KAAMA,EACN4U,QAASA,GACR,OAAQ,KAm2EFgZ,GAAO,IA11ElB,WAKE,SAASC,EAAUrH,GACjB,IAAI/qB,EAAQH,KAEZA,KAAKwyB,SAAW,KAChBxyB,KAAKgoB,KAAO,KACZhoB,KAAKyyB,qBAAsB,EAC3BzyB,KAAK0yB,YAAcA,EAAA,GAEnB1yB,KAAKqhB,2BAA6B,SAAUxf,GAW1C,OAVc,SAAiBolB,EAAOviB,GAOpC,OANIA,EACF,GAAkB,oBAAgBpG,EAAW,uBAE7C,GAAkB,uBAAwB2oB,EAAO,gCAG5CplB,EAASolB,EAAOviB,KAO3B1E,KAAK2yB,UAAUzH,GACflrB,KAAK4yB,mBAAqB5yB,KAAK4yB,mBAAmBtN,KAAKtlB,MACvDA,KAAK6yB,uBAAyB7yB,KAAK6yB,uBAAuBvN,KAAKtlB,MAC/D+qB,EAAA,UAAW,QAAQ,SAAU1pB,GAI3B,OAHcA,EAAGwQ,QACGiZ,OAGlB,IAAK,SACH3qB,EAAM2yB,SAAS9uB,QAAQ,+BAAgC,SAEvD,MAEF,IAAK,UACH7D,EAAM2yB,SAASvvB,WAAW,gCAE1B,MAEF,IAAK,kBACHpD,EAAM2yB,SAAS9uB,QAAQ,+BAAgC,YAuyE/D,OAhyEAuuB,EAAU1yB,UAAUkzB,cAAgB,WAClC,MAAO,QAGTR,EAAU1yB,UAAU8yB,UAAY,SAAUzH,GACxC,IAAI/qB,EAAQH,KAEZ,IAAKkrB,EAAQ,OAAOlrB,KAAKwrB,SAAW,GACpC,GAAO+B,MAAM,kBACb,IAAIyF,EAAO5zB,OAAOC,OAAO,GAAIW,KAAKwrB,QAASyH,EAAA,wBAA4B/H,GAAQoH,KAAMpH,GACrFlrB,KAAKwrB,QAAUwH,EACf,IAAI3xB,EAAKrB,KAAKwrB,QACV9D,EAAarmB,EAAGqmB,WAChBwL,EAAsB7xB,EAAG6xB,oBACzBC,EAAgB9xB,EAAG8xB,cACnB90B,EAAQgD,EAAGhD,MACX4nB,EAAS5kB,EAAG4kB,OACZmN,EAAiB/xB,EAAG+xB,eACpBC,EAAkBhyB,EAAGgyB,gBACrBC,EAAkBjyB,EAAGiyB,gBACrBC,EAAqBlyB,EAAGkyB,mBACxBpuB,EAAiB9D,EAAG8D,eACpB+gB,EAAW7kB,EAAG6kB,SAElB,GAAKlmB,KAAKwrB,QAAQlV,QAKX,CACL,IAAKtW,KAAKwzB,oBAAoBxzB,KAAKwrB,QAAQlV,SAEzC,MADA,GAAO2Q,MAAM,gDACP,IAAI5gB,MAAM,wBAGlBrG,KAAK8yB,SAAW9yB,KAAKwrB,QAAQlV,aATVtW,KAAK8yB,SAApBK,EAA+B,IAAIrK,GAAcqK,GACnCjI,EAAOuI,IAAM,IAAIrxB,GAAqB,IAAIsT,EAAA,IAAgBG,aAiB9E,GANA7V,KAAK0zB,aAAelzB,QAAQsf,UAES,mBAA1B9f,KAAK8yB,SAAe,OAC7B9yB,KAAK0zB,aAAe1zB,KAAK8yB,SAAe,QAGtCpL,EAAY,CACd,IAAIiM,EAAe,CACjBpM,WAAYG,EACZnQ,SAAU2b,EACVhN,SAAUA,GAEZyN,EAAapd,QAAUvW,KAAK8yB,SAC5B9yB,KAAKwyB,SAAW,IAAIlL,GAAgBqM,EAAc3zB,KAAKqhB,4BAGzDrhB,KAAK0yB,YAAYC,UAAU,CACzBU,gBAAiBA,EACjBpN,OAAQsN,GAAsBtN,EAC9ByB,WAAYA,EACZ0L,eAAgBA,EAChBE,gBAAiBA,EACjBhd,QAAStW,KAAK8yB,WAIhB,IAAIc,EAAwBv1B,EAAQD,EAAoB4B,KAAKwrB,QAAQntB,OAASA,EAAQA,EAAMw1B,gBAAav1B,EAEzG,GAAIs1B,EAAuB,CACzB,IAAIE,EAAoB10B,OAAOC,OAAO,CACpC8rB,gBAAiB+H,EACjB3L,WAAYG,EACZqB,OAAQ6K,EAA8B,OACtCvI,OAAQuI,EAA6B,MACrCr1B,eAAgBq1B,EAAsC,eACtDrE,gBAAiBqE,EAAuC,gBACxD5H,aAAc4H,EAAoC,aAClDrd,QAASvW,KAAK8yB,SACdvH,UAAWqI,EAAiC,UAC5CzuB,eAAgBA,GACfyuB,EAA+B,SAClC5zB,KAAK+zB,cAAgB,IAAI,GAAM,CAC7B1I,OAAQyI,EAAkBzI,OAC1BH,OAAQ4I,EACR3I,gBAAiB2I,EAAkB3I,kBAKrC,IAAI6I,EAAqB,IClW/B,SAA0BnyB,GACxB,GAAIoyB,EAAG,GAAH,gBAAmB9xB,WAAaI,OAAOgC,SAEzC1C,EAAS,CACPqnB,IAFQ3mB,OAAOgC,SAAS2vB,YAIrB,IAAID,EAAG,GAAH,gBAAmBE,OAK5B,MAAM,IAAI9tB,MAAM,iBDwVd+tB,EAAY,SAAU/yB,GACpB,IAAI6nB,EAAM7nB,EAAG6nB,IAET8K,EAAmB9K,KAIvB8K,EAAmB9K,IAAO,EAE1B/oB,EAAMk0B,oBAAoBnL,OAK9B,OADA,GAAkB,aAAc,KAAM,sDAC/BlpB,KAAKwrB,SAUd+G,EAAU1yB,UAAUgoB,OAAS,SAAU/mB,GAKrC,IAJA,IAAIX,EAAQH,KAERs0B,EAAc,GAETC,EAAK,EAAGA,EAAK70B,UAAUC,OAAQ40B,IACtCD,EAAYC,EAAK,GAAK70B,UAAU60B,GAGlC,IAAKv0B,KAAKwyB,SACR,OAAOxyB,KAAKw0B,mBAGd,IAIIrvB,EAJAC,EAAW,KACXC,EAAW,KACX0Z,EAAa,GACb9Z,EAAiB,KAGrB,GAAInE,GAA4B,iBAAXA,EAAqB,CACxCsE,EAAWtE,EACXuE,EAAWivB,EAAcA,EAAY,GAAK,KAC1C,IAAIG,EAAQH,EAAcA,EAAY,GAAK,KACvCI,EAAeJ,EAAcA,EAAY,GAAK,KAC9CG,GAAO1V,EAAWjd,KAAK,CACzBmT,KAAM,QACNC,MAAOuf,IAELC,GAAc3V,EAAWjd,KAAK,CAChCmT,KAAM,eACNC,MAAOwf,QAEJ,KAAI5zB,GAA4B,iBAAXA,EAwB1B,OAAOd,KAAK20B,gBAAgB72B,EAAe82B,aAvB3CxvB,EAAWtE,EAAiB,SAC5BuE,EAAWvE,EAAiB,SAExBA,GAAUA,EAAOqE,eACnBA,EAAiBrE,EAAOqE,eACfnF,KAAKwrB,QAAQrmB,iBACtBA,EAAiBnF,KAAKwrB,QAAQrmB,gBAGhC,IAAI0vB,EAAU/zB,EAAmB,WAE7B+zB,GACFz1B,OAAOwE,KAAKixB,GAAS1xB,KAAI,SAAUE,GACjC,IAAIyxB,EAAM,CACR7f,KAAM5R,EACN6R,MAAO2f,EAAQxxB,IAEjB0b,EAAWjd,KAAKgzB,MAIpB7vB,EAAiBnE,EAAuB,gBAAK,KAK/C,OAAKsE,EAIAC,GAIL,GAAOkoB,MAAM,gBAAiBxO,GAC9B,GAAOwO,MAAM,0BAA2BtoB,GACjC,IAAIzE,SAAQ,SAAUsf,EAASwG,GACpCnmB,EAAMqyB,SAAS3K,OAAOziB,EAAUC,EAAU0Z,EAAY9Z,GAAgB,SAAUc,EAAKrB,GAC/EqB,GACF,GAAkB,iBAAkBA,EAAKX,EAAW,qBACpDkhB,EAAOvgB,KAEP,GAAkB,SAAUrB,EAAMU,EAAW,+BAC7C0a,EAAQpb,MAETS,OAdInF,KAAK20B,gBAAgB72B,EAAei3B,eAJpC/0B,KAAK20B,gBAAgB72B,EAAek3B,gBA8B/CzC,EAAU1yB,UAAUo1B,cAAgB,SAAU7vB,EAAUgV,EAAM1b,GAC5D,IAAKsB,KAAKwyB,SACR,OAAOxyB,KAAKw0B,mBAGd,IAAKpvB,EACH,OAAOpF,KAAK20B,gBAAgB72B,EAAek3B,eAG7C,IAAK5a,EACH,OAAOpa,KAAK20B,gBAAgB72B,EAAeo3B,WAG7C,IAEI/vB,EAFA6iB,EAAOhoB,KAAKm1B,kBAAkB/vB,GAC9B0X,GAAqBpe,GAAiD,kBAA/BA,EAAQoe,oBAAmCpe,EAAQoe,mBAS9F,OANIpe,GAAWA,EAAQyG,eACrBA,EAAiBzG,EAAQyG,eAChBnF,KAAKwrB,QAAQrmB,iBACtBA,EAAiBnF,KAAKwrB,QAAQrmB,gBAGzB,IAAI3E,SAAQ,SAAUsf,EAASwG,GACpC0B,EAAKpL,oBAAoBxC,EAAM0C,GAAoB,SAAU/W,EAAKrB,GAC5DqB,EACFugB,EAAOvgB,GAEP+Z,EAAQpb,KAETS,OAWPotB,EAAU1yB,UAAUu1B,aAAe,SAAUhwB,EAAUD,GAKrD,QAJuB,IAAnBA,IACFA,EAAiBnF,KAAKwrB,QAAQrmB,iBAG3BnF,KAAKwyB,SACR,OAAOxyB,KAAKw0B,mBAGd,IAAKpvB,EACH,OAAOpF,KAAK20B,gBAAgB72B,EAAek3B,eAG7C,IAAIhN,EAAOhoB,KAAKm1B,kBAAkB/vB,GAClC,OAAO,IAAI5E,SAAQ,SAAUsf,EAASwG,GACpC0B,EAAKrH,wBAAuB,SAAU5a,EAAKrB,GACrCqB,EACFugB,EAAOvgB,GAEP+Z,EAAQpb,KAETS,OAWPotB,EAAU1yB,UAAUw1B,OAAS,SAAUC,EAAsBC,EAAIpwB,GAK/D,QAJuB,IAAnBA,IACFA,EAAiBnF,KAAKwrB,QAAQrmB,iBAG3BnF,KAAKwyB,SACR,OAAOxyB,KAAKw0B,mBAGd,IAAIpvB,EAAW,KACXC,EAAW,KACXJ,EAAiB,GAErB,GAAoC,iBAAzBqwB,EACTlwB,EAAWkwB,EACXjwB,EAAWkwB,MACN,KAA2BD,E7B9fvBlwB,S6BugBT,OAAOpF,KAAK20B,gBAAgB72B,EAAe03B,sBARzB,IAAPD,GACT,GAAOE,KAAK,oEAGdrwB,EAAWkwB,EAAqBlwB,SAChCC,EAAWiwB,EAAqBjwB,SAChCJ,EAAiBqwB,EAAqBrwB,eAKxC,IAAKG,EACH,OAAOpF,KAAK20B,gBAAgB72B,EAAek3B,eAG7C,IAAI9d,EAAc,IAAIzS,EAAsB,CAC1CI,SAAUO,EACVN,SAAUO,EACVT,eAAgBK,EAChBD,eAAgBG,IAGlB,OAAIE,EACKrF,KAAK01B,mBAAmBxe,GAExBlX,KAAK21B,sBAAsBze,IAYtCqb,EAAU1yB,UAAU+1B,cAAgB,SAAU5N,EAAMlI,EAASwG,GAC3D,IAAInmB,EAAQH,KAER61B,EAAO71B,KACX,MAAO,CACLmY,UAAW,SAAmB2d,GAC5B,OAAO,GAAU31B,OAAO,OAAQ,GAAQ,WACtC,IAAI41B,EAAMlH,EAAKmH,EAAaC,EAC5B,OAAO,GAAYj2B,MAAM,SAAUqB,GACjC,OAAQA,EAAG4oB,OACT,KAAK,EACH,GAAOsD,MAAMuI,UACN9N,EAAoB,qBACpBA,EAAqB,eAC5B3mB,EAAG4oB,MAAQ,EAEb,KAAK,EAGH,OAFA5oB,EAAG8oB,KAAKroB,KAAK,CAAC,EAAG,EAAG,EAAG,IAEhB,CAAC,EAEN9B,KAAK0yB,YAAY1vB,SAErB,KAAK,EAGH,OAFA3B,EAAG6oB,OAEI,CAAC,EAENlqB,KAAK0yB,YAAYtxB,IAAI00B,EAAS,YAElC,KAAK,EAGH,OAFAC,EAAO10B,EAAG6oB,OACV,GAAOqD,MAAM,qCAAsCwI,GAC5C,CAAC,EAEN,GAEJ,KAAK,EAGH,OAFAlH,EAAMxtB,EAAG6oB,OACT,GAAOqD,MAAM,iCAAkCsB,GACxC,CAAC,EAEN,GAEJ,KAAK,EAGH,OAFAxtB,EAAG8oB,KAAKroB,KAAK,CAAC,EAAG,EAAE,CAAE,IAEd,CAAC,EAEN9B,KAAKk2B,uBAET,KAAK,EAKH,OAJAF,EAAc30B,EAAG6oB,OACjB2L,EAAK7N,KAAOgO,EACZ,GAAkB,SAAUA,EAAa,UAAYhO,EAAKziB,cAAgB,uBAC1Eua,EAAQkW,GACD,CAAC,EAEN,GAEJ,KAAK,EAIH,OAHAC,EAAM50B,EAAG6oB,OACT,GAAOjD,MAAM,mCAAoCgP,GACjD3P,EAAO2P,GACA,CAAC,EAEN,GAEJ,KAAK,EACH,MAAO,CAAC,GAIV,KAAK,EACH,MAAO,CAAC,WAOlBte,UAAW,SAAmB5R,GAC5B,GAAOwnB,MAAM,iBAAkBxnB,GAC/B,GAAkB,iBAAkBA,EAAKiiB,EAAKziB,cAAgB,qBAC9D+gB,EAAOvgB,IAETiS,gBAAiB,SAAyBme,GACxC,GAAO5I,MAAM,2CACbvF,EAAoB,cAAI,mBACxBA,EAAqB,eAAImO,EACzBrW,EAAQkI,IAEVpN,YAAa,SAAqBhD,EAAeue,GAC/C,GAAO5I,MAAM,uBACbvF,EAAoB,cAAIpQ,EACxBoQ,EAAqB,eAAImO,EACzBrW,EAAQkI,IAEVlN,SAAU,SAAkBlD,EAAeue,GACzC,GAAO5I,MAAM,mBAAoB3V,GACjCoQ,EAAoB,cAAIpQ,EACxBoQ,EAAqB,eAAImO,EACzBrW,EAAQkI,IAEV5M,oBAAqB,SAA6BJ,EAAgBE,GAChE,GAAOqS,MAAM,uBACbvF,EAAoB,cAAI,wBACxBA,EAAqB,eAAI,CACvBhN,eAAgBA,EAChBE,mBAAoBA,GAEtB4E,EAAQkI,IAEVjN,aAAc,SAAsBnD,EAAeue,GACjD,GAAO5I,MAAM,uBACbvF,EAAoB,cAAIpQ,EACxBoQ,EAAqB,eAAImO,EACzBrW,EAAQkI,IAEVnN,cAAe,SAAuBjD,EAAeue,GACnD,GAAO5I,MAAM,uBAAwB3V,GACrCoQ,EAAoB,cAAIpQ,EACxBoQ,EAAqB,eAAImO,EACzBrW,EAAQkI,MAYduK,EAAU1yB,UAAU61B,mBAAqB,SAAUxe,GACjD,IAAI/W,EAAQH,KAEZ,GAAIA,KAAKo2B,cACP,MAAM,IAAI/vB,MAAM,+CAGlB,IAAI2hB,EAAOhoB,KAAKm1B,kBAAkBje,EAAY3R,eAU9C,OATAvF,KAAKo2B,cAAgB,IAAI51B,SAAQ,SAAUsf,EAASwG,GAClD0B,EAAK5P,iBAAiBlB,EAAa/W,EAAMy1B,cAAc5N,GAAM,SAAUvpB,GACrE0B,EAAMi2B,cAAgB,KACtBtW,EAAQrhB,MACP,SAAUwoB,GACX9mB,EAAMi2B,cAAgB,KACtB9P,EAAOW,UAGJjnB,KAAKo2B,eAUd7D,EAAU1yB,UAAU81B,sBAAwB,SAAUze,GACpD,IAAI/W,EAAQH,KAERgoB,EAAOhoB,KAAKm1B,kBAAkBje,EAAY3R,eAE9C,OADAyiB,EAAKhR,0BAA0B,eACxB,IAAIxW,SAAQ,SAAUsf,EAASwG,GACpC0B,EAAK/Q,aAAaC,EAAa/W,EAAMy1B,cAAc5N,EAAMlI,EAASwG,QAYtEiM,EAAU1yB,UAAU4f,cAAgB,SAAUuI,GAC5C,OAAO,IAAIxnB,SAAQ,SAAU61B,EAAKC,GAChCtO,EAAKvI,eAAc,SAAU1Z,EAAKkY,GAChC,GAAIlY,EAGF,OAFA,GAAOwnB,MAAM,yBAA0BxnB,QACvCuwB,EAAIvwB,GAIN,GAAOwnB,MAAM,0BAA2BtP,GACxCoY,EAAIpY,UAYVsU,EAAU1yB,UAAU02B,gBAAkB,SAAUvO,EAAMlnB,GACpD,IAAI+0B,EAAO71B,KACX,OAAO,IAAIQ,SAAQ,SAAU61B,EAAKC,GAChC,IAAInX,IAAcre,GAASA,EAAOqe,YAClC6I,EAAK9I,aAAY,SAAUnZ,EAAKrB,GAC9B,GAAIqB,EAGF,OAFA,GAAOwnB,MAAM,+BAAgCxnB,QAC7CuwB,EAAIvwB,GAIN,IAAIuX,EAAUuY,EAAKW,wBAAwB9xB,GAE3C,OAAK4Y,OAIH+Y,EAAI/Y,QAHJgZ,EAAI,sBAML,CACDnX,YAAaA,QAKnBoT,EAAU1yB,UAAU22B,wBAA0B,SAAU9xB,GACtD,IAAI+xB,EAAM,KACNC,EAAehyB,EAAKiyB,oBAGxB,GAAID,EACFD,EAAMC,MACD,CAEL,IAAIE,EAAUlyB,EAAKmyB,mBAEnB,GAAKD,EAYyB,IAAnBA,EAAQj3B,OACjB82B,EAAM,QAEN,GAAOlJ,MAAM,mCAAoC7oB,QAP/C+xB,EAHe/xB,EAAK0Z,WAGd,UAEA,QASZ,OAAOqY,GAGTlE,EAAU1yB,UAAUi3B,aAAe,SAAU9O,EAAMlnB,GACjD,OAAO,IAAIN,SAAQ,SAAU61B,EAAKC,GAChCtO,EAAK9I,aAAY,SAAUnZ,EAAKrB,GAC9B,OAAIqB,GACF,GAAOwnB,MAAM,2BAA4BxnB,QACzCuwB,EAAIvwB,SAGJswB,EAAI3xB,KAGL5D,OAWPyxB,EAAU1yB,UAAUk3B,gBAAkB,SAAU/O,EAAMgP,GACpD,OAAO,GAAUh3B,UAAM,OAAQ,GAAQ,WACrC,IAAIqf,EAAUf,EAAgB2Y,EAAqBL,EAASM,EAE5D,OAAO,GAAYl3B,MAAM,SAAUorB,GACjC,OAAQA,EAAGnB,OACT,KAAK,EACH,MAAO,CAAC,EAENjqB,KAAK82B,aAAa9O,EAAM,CACxB7I,aAAa,KAGjB,KAAK,EAMH,OALAE,EAAW+L,EAAGlB,OACd5L,EAAiB,KACjB2Y,EAAkB,KACbD,GAGH,IAAK,OACH,MAAO,CAAC,EAEN,GAEJ,IAAK,MACH,MAAO,CAAC,EAEN,GAEJ,IAAK,QACH,MAAO,CAAC,EAEN,GAGN,MAAO,CAAC,EAEN,GAEJ,KAAK,EAKH,OAJAC,EAAkB,CAChBE,cAAc,EACdC,SAAS,GAEJ,CAAC,EAEN,GAEJ,KAAK,EAKH,OAJA9Y,EAAiB,CACf6Y,cAAc,EACdC,SAAS,GAEJ,CAAC,EAEN,GAEJ,KAAK,EAEH,OADAR,EAAUvX,EAA6B,mBAChC,CAAC,EAENrf,KAAKw2B,wBAAwBnX,IAEjC,KAAK,EAGH,GAAuB,WAFvB6X,EAAiB9L,EAAGlB,QAGlB,MAAO,CAAC,EAEN1pB,QAAQsf,QAAQ,2BACb,GAAuB,YAAnBoX,EACT5Y,EAAiB,CACf6Y,cAAc,EACdC,SAAS,OAEN,IAAuB,uBAAnBF,EAMT,MAAO,CAAC,EAENl3B,KAAK20B,gBAAgB72B,EAAeu5B,aAPtCJ,EAAkB,CAChBE,cAAc,EACdC,SAAS,GA2Bb,OAjBIR,GAA8B,IAAnBA,EAAQj3B,QAErBi3B,EAAQtzB,SAAQ,SAAUga,GACR,YAAZA,EACFgB,EAAiB,CACf6Y,cAAc,EACdC,SAAS,GAEU,uBAAZ9Z,IACT2Z,EAAkB,CAChBE,cAAc,EACdC,SAAS,OAMV,CAAC,EAEN,GAEJ,KAAK,EAEH,OADA,GAAO7J,MAAM,+BACN,CAAC,EAENvtB,KAAK20B,gBAAgB72B,EAAew5B,QAExC,KAAK,EAEH,OADOt3B,KACA,CAAC,EAEN,IAAIQ,SAAQ,SAAU61B,EAAKC,GAC3BtO,EAAK3J,qBAAqBC,EAAgB2Y,GAAiB,SAAUlxB,EAAK7E,GACxE,GAAI6E,EAEF,OADA,GAAOwnB,MAAM,gCAAiCxnB,GACvCuwB,EAAIvwB,GAGb,GAAOwnB,MAAM,uBAAwBrsB,GACrC,GAAOqsB,MAAM,2CAEbvF,EAAK9I,aAAY,SAAUnZ,EAAKrB,GAC9B,OAAIqB,GACF,GAAOwnB,MAAM,2BAA4BxnB,GAClCuwB,EAAIvwB,IAEJswB,EAAIn1B,KAEZ,CACDie,aAAa,mBAgB7BoT,EAAU1yB,UAAU03B,WAAa,SAAUvP,GACzC,OAAO,IAAIxnB,SAAQ,SAAU61B,EAAKC,GAChCtO,EAAKtJ,YAAW,SAAU3Y,EAAKrB,GAC7B,GAAIqB,EAGF,OAFA,GAAOwnB,MAAM,qBAAsBxnB,QACnCuwB,EAAIvwB,GAIN,GAAOwnB,MAAM,sBAAuB7oB,GACpC2xB,EAAI3xB,UAaV6tB,EAAU1yB,UAAU23B,UAAY,SAAUxP,GACxC,OAAO,IAAIxnB,SAAQ,SAAU61B,EAAKC,GAChCtO,EAAKhK,WAAU,SAAUjY,EAAKrB,GAC5B,GAAIqB,EAGF,OAFA,GAAOwnB,MAAM,oBAAqBxnB,QAClCuwB,EAAIvwB,GAIN,GAAOwnB,MAAM,qBAAsB7oB,GACnC2xB,EAAI3xB,UAYV6tB,EAAU1yB,UAAU43B,UAAY,SAAUzP,GACxC,OAAO,IAAIxnB,SAAQ,SAAU61B,EAAKC,GAChCtO,EAAK1E,uBAAuB,CAC1B3L,UAAW,SAAmB5R,GAC5B,GAAOwnB,MAAM,gCAAiCxnB,GAC9CuwB,EAAIvwB,IAGNyd,oBAAqB,SAA6BkU,GAChD,GAAOnK,MAAM,gCAAiCmK,GAC9CrB,EAAIqB,UAcZnF,EAAU1yB,UAAU83B,gBAAkB,SAAU3P,EAAM4P,GAEpD,OADA,GAAOrK,MAAM,yBAA0BvF,EAAM4P,GACtC,IAAIp3B,SAAQ,SAAU61B,EAAKC,GAChCtO,EAAKtE,oBAAoBkU,EAAiB,iBAAkB,CAC1DjgB,UAAW,SAAmB5R,GAC5B,GAAOwnB,MAAM,yBAA0BxnB,GACvCuwB,EAAIvwB,IAGNoS,UAAW,SAAmBzT,GAC5B,GAAkB,SAAUsjB,EAAM,UAAYA,EAAKziB,cAAgB,uBACnE,GAAOgoB,MAAM,0BAA2B7oB,GACxC2xB,EAAI3xB,UAaZ6tB,EAAU1yB,UAAUg4B,cAAgB,SAAU7P,EAAM5N,EAAMkD,EAASnY,GACjE,IAAIhF,EAAQH,KAMZ,QAJuB,IAAnBmF,IACFA,EAAiBnF,KAAKwrB,QAAQrmB,iBAG3BiV,EACH,OAAOpa,KAAK20B,gBAAgB72B,EAAeo3B,WAG7C,IAAIW,EAAO71B,KACX,OAAO,IAAIQ,SAAQ,SAAUsf,EAASwG,GACpC0B,EAAK3K,YAAYjD,EAAM,CACrBjC,UAAW,SAAmB2d,GAC5B,OAAO,GAAU31B,OAAO,OAAQ,GAAQ,WACtC,IAAI41B,EAAM+B,EACV,OAAO,GAAY93B,MAAM,SAAUqB,GACjC,OAAQA,EAAG4oB,OACT,KAAK,EACH,GAAOsD,MAAMuI,GACbz0B,EAAG4oB,MAAQ,EAEb,KAAK,EAGH,OAFA5oB,EAAG8oB,KAAKroB,KAAK,CAAC,EAAG,EAAG,EAAG,IAEhB,CAAC,EAEN9B,KAAK0yB,YAAY1vB,SAErB,KAAK,EAGH,OAFA3B,EAAG6oB,OAEI,CAAC,EAENlqB,KAAK0yB,YAAYtxB,IAAI00B,EAAS,YAElC,KAAK,EAGH,OAFAC,EAAO10B,EAAG6oB,OACV,GAAOqD,MAAM,qCAAsCwI,GAC5C,CAAC,EAEN,GAEJ,KAAK,EAGH,OAFA+B,EAAMz2B,EAAG6oB,OACT,GAAOqD,MAAM,iCAAkCuK,GACxC,CAAC,EAEN,GAEJ,KAAK,EAIH,OAHAjC,EAAK7N,KAAOA,EACZ,GAAkB,SAAUA,EAAM,UAAYA,EAAKziB,cAAgB,uBACnEua,EAAQkI,GACD,CAAC,GAIV,KAAK,EACH,MAAO,CAAC,WAOlBrQ,UAAW,SAAmB5R,GAC5B,GAAOwnB,MAAM,yBAA0BxnB,GACvCugB,EAAOvgB,KAERuX,EAASnY,OAIhBotB,EAAU1yB,UAAUk4B,oBAAsB,SAAU/P,EAAM3iB,EAAU6V,EAAoB/V,GACtF,IAAIhF,EAAQH,KAUZ,QAR2B,IAAvBkb,IACFA,EAAqB,SAGA,IAAnB/V,IACFA,EAAiBnF,KAAKwrB,QAAQrmB,iBAG3BE,EACH,OAAOrF,KAAK20B,gBAAgB72B,EAAei3B,eAG7C,IAAIc,EAAO71B,KACX,OAAO,IAAIQ,SAAQ,SAAUsf,EAASwG,GACpC0B,EAAK5L,6BAA6B/W,EAAU6V,EAAoB,CAC9D/C,UAAW,SAAmB2d,GAC5B,OAAO,GAAU31B,OAAO,OAAQ,GAAQ,WACtC,IAAI41B,EAAMiC,EACV,OAAO,GAAYh4B,MAAM,SAAUqB,GACjC,OAAQA,EAAG4oB,OACT,KAAK,EACH,GAAOsD,MAAMuI,GACbz0B,EAAG4oB,MAAQ,EAEb,KAAK,EAGH,OAFA5oB,EAAG8oB,KAAKroB,KAAK,CAAC,EAAG,EAAG,EAAG,IAEhB,CAAC,EAEN9B,KAAK0yB,YAAY1vB,SAErB,KAAK,EAGH,OAFA3B,EAAG6oB,OAEI,CAAC,EAENlqB,KAAK0yB,YAAYtxB,IAAI00B,EAAS,YAElC,KAAK,EAGH,OAFAC,EAAO10B,EAAG6oB,OACV,GAAOqD,MAAM,qCAAsCwI,GAC5C,CAAC,EAEN,GAEJ,KAAK,EAGH,OAFAiC,EAAM32B,EAAG6oB,OACT,GAAOqD,MAAM,iCAAkCyK,GACxC,CAAC,EAEN,GAEJ,KAAK,EAIH,OAHAnC,EAAK7N,KAAOA,EACZ,GAAkB,SAAUA,EAAM,UAAYA,EAAKziB,cAAgB,uBACnEua,EAAQkI,GACD,CAAC,GAIV,KAAK,EACH,MAAO,CAAC,WAOlBrQ,UAAW,SAAmB5R,GAC5B,GAAOwnB,MAAM,8BAA+BxnB,GAC5C,GAAkB,8BAA+BA,EAAK5F,EAAM6nB,KAAO,6CACnE1B,EAAOvgB,IAET6U,YAAa,SAAqBhD,EAAeue,GAC/C,GAAO5I,MAAM,uBACbvF,EAAoB,cAAIpQ,EACxBoQ,EAAqB,eAAImO,EACzBrW,EAAQkI,IAEVlN,SAAU,SAAkBlD,EAAeue,GACzC,GAAO5I,MAAM,mBAAoB3V,GACjCoQ,EAAoB,cAAIpQ,EACxBoQ,EAAqB,eAAImO,EACzBrW,EAAQkI,IAEVjN,aAAc,SAAsBnD,EAAeue,GACjD,GAAO5I,MAAM,mBAAoB3V,GACjCoQ,EAAoB,cAAIpQ,EACxBoQ,EAAqB,eAAImO,EACzBrW,EAAQkI,KAET7iB,OAUPotB,EAAU1yB,UAAUod,0BAA4B,SAAU+K,EAAMvO,EAAoBtU,GAClF,IAAIhF,EAAQH,KAMZ,QAJuB,IAAnBmF,IACFA,EAAiBnF,KAAKwrB,QAAQrmB,iBAG3BnF,KAAKwyB,SACR,OAAOxyB,KAAKw0B,mBAGd,IAAK/a,EACH,OAAOzZ,KAAK20B,gBAAgB72B,EAAem6B,wBAI7C,OAAO,IAAIz3B,SAAQ,SAAUsf,EAASwG,GACpC0B,EAAK/K,0BAA0BxD,EAAoBtZ,EAAMy1B,cAAc5N,EAAMlI,EAASwG,GAASnhB,OAUnGotB,EAAU1yB,UAAUq4B,qBAAuB,SAAUlQ,EAAMjJ,EAAY5Z,QAC9C,IAAnBA,IACFA,EAAiBnF,KAAKwrB,QAAQrmB,gBAGhC,IAAIma,EAAgB,GAChBuW,EAAO71B,KACX,OAAO,IAAIQ,SAAQ,SAAUsf,EAASwG,GACpCuP,EAAKsC,YAAYnQ,GAAM3H,MAAK,SAAUyV,GACpC,IAAK,IAAIzyB,KAAO0b,EACd,GAAY,QAAR1b,GAAiBA,EAAIpB,QAAQ,aAAe,EAAG,CACjD,IAAIm2B,EAAO,CACTnjB,KAAM5R,EACN6R,MAAO6J,EAAW1b,IAEpBic,EAAcxd,KAAKs2B,GAIvBpQ,EAAKlJ,iBAAiBQ,GAAe,SAAUvZ,EAAK7E,GAClD,OAAI6E,EACKugB,EAAOvgB,GAEP+Z,EAAQ5e,KAEhBiE,UAWTotB,EAAU1yB,UAAUmb,eAAiB,SAAUgN,GAC7C,IAAI7nB,EAAQH,KAEZ,OAAO,IAAIQ,SAAQ,SAAUsf,EAASwG,GACpCnmB,EAAMg4B,YAAYnQ,GAAM3H,MAAK,SAAUyV,GACrC9N,EAAK5I,mBAAkB,SAAUrZ,EAAKgZ,GAChChZ,EACFugB,EAAOvgB,GAEP+Z,EAAQf,aAOlBwT,EAAU1yB,UAAUw4B,gBAAkB,SAAUrQ,GAC9C,IAAI6N,EAAO71B,KACX,OAAOA,KAAKgb,eAAegN,GAAM3H,MAAK,SAAUtB,GAC9C,IAAIuZ,EAAQzC,EAAK0C,mBAAmBxZ,GAChCyZ,EAAa,GACbC,EAAW,GAkBf,OAhBIH,EAAa,QACXA,EAAsB,eACxBG,EAAgB,MAAIH,EAAa,MAEjCE,EAAkB,MAAIF,EAAa,OAInCA,EAAoB,eAClBA,EAA6B,sBAC/BG,EAAuB,aAAIH,EAAoB,aAE/CE,EAAyB,aAAIF,EAAoB,cAI9C,CACLG,SAAUA,EACVD,WAAYA,OAUlBjG,EAAU1yB,UAAUq2B,oBAAsB,SAAUp1B,GAClD,IAAIX,EAAQH,KAEZ,OAAKA,KAAKwyB,SAIH,IAAIhyB,SAAQ,SAAU61B,EAAKC,GAChCn2B,EAAMuzB,aAAarT,MAAK,WACtB,OAAO,GAAUlgB,OAAO,OAAQ,GAAQ,WACtC,IAAI6nB,EAEA7nB,EAAQH,KAEZ,OAAO,GAAYA,MAAM,SAAUqB,GACjC,OAAQA,EAAG4oB,OACT,KAAK,EACH,OAAKjqB,KAAK04B,qBAGV,GAAOnL,MAAM,uDACN,CAAC,EAEN,IAAI/sB,SAAQ,SAAU61B,GACtB,IAAIsC,EAAYC,YAAW,WACzB,GAAOrL,MAAM,oCACbxC,EAAA,UAAW,OAAQ8N,GACnBxC,MAnuCQ,KAuuCV,SAASwC,EAAqBx3B,GAC5B,IACIypB,EADUzpB,EAAGwQ,QACGiZ,MAEN,oBAAVA,GAAyC,4BAAVA,IACjC,GAAOyC,MAAM,0BAA4BzC,GACzCgO,aAAaH,GACb5N,EAAA,UAAW,OAAQ8N,GACnBxC,KAVJtL,EAAA,UAAW,OAAQ8N,QAZiB,CAAC,EAErC,GAyBJ,KAAK,EACHx3B,EAAG6oB,OAEH7oB,EAAG4oB,MAAQ,EAEb,KAAK,EAGH,OAFAjC,EAAOhoB,KAAKwyB,SAASjK,mBAWrBP,EAAKpH,YAAW,SAAU7a,EAAK+vB,GAC7B,OAAO,GAAU31B,OAAO,OAAQ,GAAQ,WACtC,IAAIgf,EAAa9d,EAEblB,EAAQH,KAEZ,OAAO,GAAYA,MAAM,SAAUorB,GACjC,OAAQA,EAAGnB,OACT,KAAK,EACH,OAAIlkB,GACF,GAAOwnB,MAAM,iCAAkCxnB,GAC/CuwB,EAAIvwB,GACG,CAAC,KAKVoZ,IAAcre,GAASA,EAAOqe,aAIvB,CAAC,EAENnf,KAAK0yB,YAAY1vB,SALM,CAAC,EAExB,GAKJ,KAAK,EACHooB,EAAGlB,OAEHkB,EAAGnB,MAAQ,EAEb,KAAK,EAGH,OAFA5oB,EAAKy0B,EAAQpiB,iBAAiB5B,gBAAgBga,YAAsB,IAAPzqB,EAAgB,GAAKA,GAExE6C,MAAM,KAAK8kB,SAASqJ,KAC5BrK,EAAK9I,aAAY,SAAUnZ,EAAKrB,GAC9B,GAAIqB,EAYF,OAXA,GAAOwnB,MAAM,2BAA4BxnB,QAErB,sBAAhBA,EAAIuT,SAAmD,yBAAhBvT,EAAIuT,SAAsD,kCAAhBvT,EAAIuT,QAErFgd,EAAIvwB,GAINswB,EAAIrO,IASR,IAHA,IAAI0O,EAAehyB,EAAKiyB,qBAAuB,QAC3CrX,EAAgB,GAEX9f,EAAI,EAAGA,EAAIkF,EAAKua,eAAetf,OAAQH,IAAK,CACnD,IAAI+f,EAAY,CACdtK,KAAMvQ,EAAKua,eAAezf,GAAGyV,KAC7BC,MAAOxQ,EAAKua,eAAezf,GAAG0V,OAE5BsK,EAAgB,IAAIxK,GAAqBuK,GAC7CD,EAAcxd,KAAK0d,GAGrB,IAAIT,EAAa5e,EAAMo4B,mBAAmBjZ,GAM1C,OAJAlgB,OAAOC,OAAO2oB,EAAM,CAClBjJ,WAAYA,EACZ2X,aAAcA,IAETL,EAAIrO,KACV,CACD7I,YAAaA,IASV,CAAC,KANN,GAAOoO,MAAM,2CAA6C8E,GAA7C,6CACN,CAAC,EAENgE,EAAIrO,eAUX,CAAC,KA9FN,GAAOuF,MAAM,qCACb+I,EAAI,mBACG,CAAC,cAkGjB51B,OAAM,SAAUxB,GAEjB,OADA,GAAOquB,MAAM,wCAAyCruB,GAC/Co3B,EAAIp3B,SAvJNc,KAAKw0B,oBA4JhBjC,EAAU1yB,UAAU64B,kBAAoB,WACtC,OAAO14B,KAAKyyB,qBASdF,EAAU1yB,UAAUk5B,yBAA2B,SAAUj4B,GACvD,OAAO,GAAUd,UAAM,OAAQ,GAAQ,WACrC,IAAIg5B,EAAeC,EAAKC,EAAelR,EAAMmR,EAC7C,OAAO,GAAYn5B,MAAM,SAAUqB,GACjC,OAAQA,EAAG4oB,OACT,KAAK,EACH,GAAOsD,MAAM,sCACbyL,EAAgB,KAChB33B,EAAG4oB,MAAQ,EAEb,KAAK,EAGH,OAFA5oB,EAAG8oB,KAAKroB,KAAK,CAAC,EAAG,EAAE,CAAE,IAEd,CAAC,EAEN9B,KAAK0zB,cAET,KAAK,EAGH,OAFAryB,EAAG6oB,OAEI,CAAC,EAEN,GAEJ,KAAK,EAGH,MAFA+O,EAAM53B,EAAG6oB,OACT,GAAOqD,MAAM,wCAAyC0L,GAChDA,EAER,KAAK,EACH,KACEC,EAAgBl6B,KAAKC,MAAMe,KAAK8yB,SAAStvB,QAAQ,iCAG/Cw1B,EAAgB,GAAS,GAAS,GAAIE,EAAclR,MAAO,CACzDrW,MAAOunB,EAAcvnB,SAGzB,MAAOzS,GACP,GAAOquB,MAAM,gDAGf,OAAKyL,GAGLh5B,KAAKgoB,KAAOgR,EACZ,GAAOzL,MAAM,2CAA4CvtB,KAAKgoB,MACvD,CAAC,EAENhoB,KAAKgoB,OAPoB,CAAC,EAE1B,GAOJ,KAAK,EACH,GAAOuF,MAAM,2CACbvF,EAAO,KACP3mB,EAAG4oB,MAAQ,EAEb,KAAK,EAGH,OAFA5oB,EAAG8oB,KAAKroB,KAAK,CAAC,EAAG,EAAE,CAAE,IAEd,CAAC,EAEN9B,KAAKk2B,oBAAoBp1B,IAE7B,KAAK,EAEH,OADAknB,EAAO3mB,EAAG6oB,OACH,CAAC,EAEN,GAEJ,KAAK,EAQH,MALY,iBAFZiP,EAAM93B,EAAG6oB,SAGP,GAAOjD,MAAM,kJAGf,GAAOsG,MAAM,6CAA8C4L,GACpD,CAAC,EAEN34B,QAAQ8lB,OAAO,kCAEnB,KAAK,EAEH,OADAtmB,KAAKgoB,KAAOA,EACL,CAAC,EAENhoB,KAAKgoB,cAWjBuK,EAAU1yB,UAAUu5B,eAAiB,WACnC,IAAIvD,EAAO71B,KAGX,OAFA,GAAOutB,MAAM,2BAERvtB,KAAKwyB,SAIH,IAAIhyB,SAAQ,SAAU61B,EAAKC,GAChCT,EAAKK,sBAAsB7V,MAAK,SAAU2H,GACxC6N,EAAKsC,YAAYnQ,GAAM3H,MAAK,SAAUyV,GACpCO,EAAIP,MAEHp1B,OAAM,SAAUxB,GACjB,GAAOquB,MAAM,oCAAqCruB,GAClDo3B,EAAIp3B,SAGLwB,OAAM,SAAUxB,GACjB,GAAOquB,MAAM,iCAAkCruB,GAC/Co3B,EAAIp3B,SAfCsB,QAAQ8lB,UA2BnBiM,EAAU1yB,UAAUs4B,YAAc,SAAUnQ,GAC1C,OAAKA,EAKE,IAAIxnB,SAAQ,SAAUsf,EAASwG,GACpC,GAAOiH,MAAM,sCAAuCvF,GACpDA,EAAKpH,YAAW,SAAU7a,EAAK+vB,GAC7B,OAAI/vB,GACF,GAAOwnB,MAAM,sCAAuCvF,QACpD1B,EAAOvgB,KAGP,GAAOwnB,MAAM,kCAAmCuI,QAChDhW,EAAQgW,WAbZ,GAAOvI,MAAM,oBACNvtB,KAAK20B,gBAAgB72B,EAAeu7B,iBAwB/C9G,EAAU1yB,UAAUgzB,uBAAyB,WAC3C,OAAO,GAAU7yB,UAAM,OAAQ,GAAQ,WACrC,IAAIs5B,EAAKJ,EAEL/4B,EAAQH,KAEZ,OAAO,GAAYA,MAAM,SAAUqB,GACjC,OAAQA,EAAG4oB,OACT,KAAK,EACH,GAAOsD,MAAM,oCACblsB,EAAG4oB,MAAQ,EAEb,KAAK,EAGH,OAFA5oB,EAAG8oB,KAAKroB,KAAK,CAAC,EAAG,EAAE,CAAE,IAEd,CAAC,EAEN9B,KAAK0zB,cAET,KAAK,EAGH,OAFAryB,EAAG6oB,OAEI,CAAC,EAEN,GAEJ,KAAK,EAGH,MAFAoP,EAAMj4B,EAAG6oB,OACT,GAAOqD,MAAM,wCAAyC+L,GAChDA,EAER,KAAK,EACHJ,EAAgB,KAEhB,IACEA,EAAgBl6B,KAAKC,MAAMe,KAAK8yB,SAAStvB,QAAQ,8BACjD,MAAOtE,GACP,GAAOquB,MAAM,wDAAyDruB,GAGxE,OAAIg6B,EAEK,CAAC,EAENl5B,KAAK0yB,YAAY6G,sBAAsBL,IAElC,CAAC,EAENl5B,KAAKo5B,iBAAiB/Y,MAAK,SAAUyV,GAErC,OADA,GAAOvI,MAAM,0BAA2BuI,GACjC31B,EAAMuyB,YAAYtxB,IAAI00B,EAAS,cACrCp1B,OAAM,SAAUumB,GAEjB,OADA,GAAOsG,MAAM,yBAA0BtG,GAChC9mB,EAAMuyB,YAAYtxB,IAAI,KAAM,qBAYjDmxB,EAAU1yB,UAAU+yB,mBAAqB,WAEvC,OADA,GAAOrF,MAAM,+BACNvtB,KAAK0yB,YAAY3xB,OAU1BwxB,EAAU1yB,UAAU25B,oBAAsB,SAAUxR,EAAMoQ,EAAMjzB,GAK9D,YAJuB,IAAnBA,IACFA,EAAiBnF,KAAKwrB,QAAQrmB,gBAGzB,IAAI3E,SAAQ,SAAUsf,EAASwG,GACpC0B,EAAKhG,6BAA6BoW,EAAM,CACtCjgB,UAAW,WACT,OAAO2H,KAETnI,UAAW,SAAmB5R,GAC5B,OAAOugB,EAAOvgB,KAEfZ,OAYPotB,EAAU1yB,UAAU45B,0BAA4B,SAAUzR,EAAMoQ,EAAMhe,GACpE,OAAKA,EAIE,IAAI5Z,SAAQ,SAAUsf,EAASwG,GACpC0B,EAAK9F,gBAAgBkW,EAAMhe,EAAM,CAC/BjC,UAAW,SAAmBzT,GAC5Bob,EAAQpb,IAGViT,UAAW,SAAmB5R,GAC5BugB,EAAOvgB,SAVJ/F,KAAK20B,gBAAgB72B,EAAeo3B,YAiB/C3C,EAAU1yB,UAAU65B,2BAA6B,SAAUtB,GACzD,IAAIvC,EAAO71B,KACX,OAAO61B,EAAKK,sBAAsB7V,MAAK,SAAU2H,GAC/C,OAAO6N,EAAK2D,oBAAoBxR,EAAMoQ,OAW1C7F,EAAU1yB,UAAU85B,iCAAmC,SAAUvB,EAAMhe,GACrE,IAAIyb,EAAO71B,KACX,OAAO61B,EAAKK,sBAAsB7V,MAAK,SAAU2H,GAC/C,OAAO6N,EAAK4D,0BAA0BzR,EAAMoQ,EAAMhe,OAItDmY,EAAU1yB,UAAU+5B,uBAAyB,SAAUC,EAAM7R,GAC3D,OAAO,GAAUhoB,UAAM,OAAQ,GAAQ,WACrC,IAAI85B,EAAKC,EAEL55B,EAAQH,KAEZ,OAAO,GAAYA,MAAM,SAAUqB,GACjC,OAAQA,EAAG4oB,OACT,KAAK,EAGH,OAFA5oB,EAAG8oB,KAAKroB,KAAK,CAAC,EAAG,EAAE,CAAE,IAEd,CAAC,EAEN9B,KAAK0zB,cAET,KAAK,EAGH,OAFAryB,EAAG6oB,OAEI,CAAC,EAEN,GAEJ,KAAK,EAGH,MAFA4P,EAAMz4B,EAAG6oB,OACT,GAAOqD,MAAM,wCAAyCuM,GAChDA,EAER,KAAK,EAEH,OADAC,EAAqB/5B,KAAK+zB,eAA2E,SAA1D/zB,KAAK8yB,SAAStvB,QAAQ,gCAC1D,CAAC,EAEN,IAAIhD,SAAQ,SAAU61B,EAAKC,GAC3B,GAAIuD,GAAQA,EAAKG,OACf,GAAOzM,MAAM,uBAAwBvF,GAGrCA,EAAKpH,YAAW,SAAU7a,EAAK7E,GAC7B,GAAI6E,EAEF,OADA,GAAOwnB,MAAM,iCAAkCxnB,GACxCuwB,EAAIvwB,GAGbiiB,EAAK/E,cAAc,CACjB9K,UAAW,SAAmBzT,GAG5B,GAFA,GAAO6oB,MAAM,4BAETwM,EAGF,OAAO1D,IAFPl2B,EAAM85B,qBAAqB5D,EAAKC,IAKpC3e,UAAW,SAAmB5R,GAE5B,OADA,GAAOwnB,MAAM,yBAA0BxnB,GAChCuwB,EAAIvwB,aAIZ,CAIL,GAHA,GAAOwnB,MAAM,gBAAiBvF,GAC9BA,EAAK7E,WAED4W,EAGF,OAAO1D,IAFPl2B,EAAM85B,qBAAqB5D,EAAKC,gBAWhD/D,EAAU1yB,UAAUo6B,qBAAuB,SAAUna,EAASwG,GAC5C2N,EAAG,GAAH,gBAAmB9xB,UAGjCnC,KAAKk6B,6BAA6B5T,GAElCtmB,KAAKm6B,uBAAuBra,IAIhCyS,EAAU1yB,UAAUs6B,uBAAyB,SAAUra,GACrD9f,KAAK+zB,cAAc5Q,UAEnBrD,KAGFyS,EAAU1yB,UAAUq6B,6BAA+B,SAAU5T,GAC3DtmB,KAAK+zB,cAAc5Q,UAInByV,YAAW,WACT,OAAOtS,EAAO,0BACb,MASLiM,EAAU1yB,UAAUsjB,QAAU,SAAU0W,GACtC,OAAO,GAAU75B,UAAM,OAAQ,GAAQ,WACrC,IAASgoB,EACT,OAAO,GAAYhoB,MAAM,SAAUqB,GACjC,OAAQA,EAAG4oB,OACT,KAAK,EAGH,OAFA5oB,EAAG8oB,KAAKroB,KAAK,CAAC,EAAG,EAAE,CAAE,IAEd,CAAC,EAEN9B,KAAKo6B,oBAET,KAAK,EAGH,OAFA/4B,EAAG6oB,OAEI,CAAC,EAEN,GAEJ,KAAK,EAGH,OAFM7oB,EAAG6oB,OACT,GAAOqD,MAAM,gCACN,CAAC,EAEN,GAEJ,KAAK,EACH,OAAKvtB,KAAKwyB,UAGVxK,EAAOhoB,KAAKwyB,SAASjK,kBAId,CAAC,EAENvoB,KAAK45B,uBAAuBC,EAAM7R,IALlB,CAAC,EAEjB,GANyB,CAAC,EAE1B,GASJ,KAAK,EAGH,OAFA3mB,EAAG6oB,OAEI,CAAC,EAEN,GAEJ,KAAK,EACH,GAAOqD,MAAM,2BACblsB,EAAG4oB,MAAQ,EAEb,KAAK,EACH,MAAO,CAAC,EAEN,GAEJ,KAAK,EACH,GAAOsD,MAAM,wBACblsB,EAAG4oB,MAAQ,EAEb,KAAK,EASH,OAFA,GAAkB,UAAWjqB,KAAKgoB,KAAM,8BACxChoB,KAAKgoB,KAAO,KACL,CAAC,WAQlBuK,EAAU1yB,UAAUu6B,iBAAmB,WACrC,OAAO,GAAUp6B,UAAM,OAAQ,GAAQ,WACrC,OAAO,GAAYA,MAAM,SAAUqB,GACjC,OAAQA,EAAG4oB,OACT,KAAK,EAEH,MAAO,CAAC,EAENjqB,KAAK0yB,YAAY1vB,SAErB,KAAK,EAIH,OAFA3B,EAAG6oB,OAEI,CAAC,WAgBlBqI,EAAU1yB,UAAU8d,eAAiB,SAAUqK,EAAMqS,EAAahe,EAAalX,GAC7E,IAAIhF,EAAQH,KAMZ,YAJuB,IAAnBmF,IACFA,EAAiBnF,KAAKwrB,QAAQrmB,gBAGzB,IAAI3E,SAAQ,SAAUsf,EAASwG,GACpCnmB,EAAMg4B,YAAYnQ,GAAM3H,MAAK,SAAUyV,GACrC9N,EAAKrK,eAAe0c,EAAahe,GAAa,SAAUtW,EAAKrB,GAC3D,OAAIqB,GACF,GAAOwnB,MAAM,0BAA2BxnB,GACjCugB,EAAOvgB,IAEP+Z,EAAQpb,KAEhBS,UAWTotB,EAAU1yB,UAAUgiB,eAAiB,SAAUzc,EAAUD,GAKvD,QAJuB,IAAnBA,IACFA,EAAiBnF,KAAKwrB,QAAQrmB,iBAG3BnF,KAAKwyB,SACR,OAAOxyB,KAAKw0B,mBAGd,IAAKpvB,EACH,OAAOpF,KAAK20B,gBAAgB72B,EAAek3B,eAG7C,IAAIhN,EAAOhoB,KAAKm1B,kBAAkB/vB,GAClC,OAAO,IAAI5E,SAAQ,SAAUsf,EAASwG,GACpC0B,EAAKnG,eAAe,CAClB1J,UAAW,WACT2H,KAGFnI,UAAW,SAAmB5R,GAC5B,GAAOwnB,MAAM,0BAA2BxnB,GACxC,GAAkB,yBAA0BA,EAAKX,EAAW,0BAC5DkhB,EAAOvgB,IAGT+b,sBAAuB,SAA+Bpd,GACpD,GAAkB,iBAAkBsjB,EAAM5iB,EAAW,uCACrD0a,EAAQpb,KAGTS,OAYPotB,EAAU1yB,UAAUy6B,qBAAuB,SAAUl1B,EAAUgV,EAAM/U,EAAUF,GAK7E,QAJuB,IAAnBA,IACFA,EAAiBnF,KAAKwrB,QAAQrmB,iBAG3BnF,KAAKwyB,SACR,OAAOxyB,KAAKw0B,mBAGd,IAAKpvB,EACH,OAAOpF,KAAK20B,gBAAgB72B,EAAek3B,eAG7C,IAAK5a,EACH,OAAOpa,KAAK20B,gBAAgB72B,EAAeo3B,WAG7C,IAAK7vB,EACH,OAAOrF,KAAK20B,gBAAgB72B,EAAei3B,eAG7C,IAAI/M,EAAOhoB,KAAKm1B,kBAAkB/vB,GAClC,OAAO,IAAI5E,SAAQ,SAAUsf,EAASwG,GACpC0B,EAAKjG,gBAAgB3H,EAAM/U,EAAU,CACnC8S,UAAW,WACT,GAAkB,uBAAwB6P,EAAM5iB,EAAW,oCAC3D0a,KAGFnI,UAAW,SAAmB5R,GAC5B,GAAkB,+BAAgCA,EAAKX,EAAW,gCAClEkhB,EAAOvgB,KAGRZ,OAUPotB,EAAU1yB,UAAU06B,gBAAkB,WACpC,OAAO,GAAUv6B,UAAM,OAAQ,GAAQ,WACrC,IAAIw6B,EAAczb,EAAY0b,EAAWrU,EAAasU,EAAYC,EAAO3S,EACzE,OAAO,GAAYhoB,MAAM,SAAUqB,GACjC,OAAQA,EAAG4oB,OACT,KAAK,EAEH,OADAuQ,EAASx6B,KAAK0yB,YAAYkI,kBACE,QAAXJ,GAA+B,aAAXA,EAA+B,CAAC,EAEnE,GACK,CAAC,EAENx6B,KAAKk2B,sBAAsBx1B,OAAM,SAAUqF,GAC3C,OAAO,GAAOwnB,MAAMxnB,OAGxB,KAAK,EAGH,KAFAiiB,EAAO3mB,EAAG6oB,QAGR,MAAO,CAAC,EAEN,MAGJ7oB,EAAG4oB,MAAQ,EAEb,KAAK,EAGH,OAFA5oB,EAAG8oB,KAAKroB,KAAK,CAAC,EAAG,EAAE,CAAE,IAEd,CAAC,EAEN9B,KAAKgb,eAAegN,IAExB,KAAK,EACHjJ,EAAa1d,EAAG6oB,OAChBuQ,EAAYz6B,KAAKu4B,mBAAmBxZ,GACpCqH,EAAc,KACd/kB,EAAG4oB,MAAQ,EAEb,KAAK,EAGH,OAFA5oB,EAAG8oB,KAAKroB,KAAK,CAAC,EAAG,EAAE,CAAE,IAEd,CAAC,EAEN9B,KAAK4yB,sBAET,KAAK,EAEH,OADAxM,EAAc/kB,EAAG6oB,OACV,CAAC,EAEN,GAEJ,KAAK,EAGH,OAFAwQ,EAAOr5B,EAAG6oB,OACV,GAAOqD,MAAM,iEAAkEmN,GACxE,CAAC,EAEN,GAEJ,KAAK,EAMH,MAAO,CAAC,EALD,CACLG,GAAIzU,EAAcA,EAAY0U,gBAAax8B,EAC3C8G,SAAU4iB,EAAKziB,cACfwZ,WAAY0b,IAMhB,KAAK,EAGH,OAFAE,EAAQt5B,EAAG6oB,OACX,GAAOqD,MAAM,wBAAyBoN,GAC/B,CAAC,EAEN,IAEJ,KAAK,EACH,MAAe,cAAXH,EAEK,CAAC,GADRxS,EAAOhoB,KAAKgoB,OAGI,IAGX,CAAC,WAQlBuK,EAAU1yB,UAAUk7B,gBAAkB,SAAUC,EAAmBzU,EAAUyB,GAC3E,OAAO,GAAUhoB,UAAM,OAAQ,GAAQ,WACrC,IAAItB,EAAmBwtB,EAAaiB,EAAWF,EAAchB,EAAUgP,EAActpB,EAAOupB,EAAaC,EAAY/U,EAAa4P,EAClI,OAAO,GAAYh2B,MAAM,SAAUqB,GACjC,OAAQA,EAAG4oB,OACT,KAAK,EACH,IAAKjqB,KAAKwrB,QAAQ4H,iBAAmBpzB,KAAKwrB,QAAQ9D,WAChD,MAAM,IAAIrhB,MAAM,qEAIlB,QAAiC,IAAtB20B,GACLh7B,KAAKwrB,QAAQ4H,iBAAmBpzB,KAAKwrB,QAAQ9D,WAC/C,MAAM,IAAIrhB,MAAM,sEAIpB,OAAMtI,EAAyBi9B,K7BnwEIh9B,E6BmwEiDg9B,I7BlwEnF,CAAC,kBACS/8B,MAAK,SAAUC,GAClC,OAAOF,EAAIG,eAAeD,OAGvB,SAAwBF,GAE7B,OAAOA,KADI,CAAC,eACSC,MAAK,SAAUC,GAClC,OAAOF,EAAIG,eAAeD,M6B0vEwFk9B,CAAeJ,SAAmD,IAAtBA,GAGtJt8B,EAAUs8B,GAAqB,CAC7B/O,SAAUpuB,EAAgCsuB,SAE5CF,EAAWluB,EAAyBW,GAAWA,EAAQutB,SAAWvtB,EAAQ28B,eAC5Dt9B,EAAyBW,GAAvCwtB,EAAkDxtB,EAAQwtB,YAEtDlsB,KAAKwrB,QAAQ9D,aACfyF,EAAY/uB,EAAoB4B,KAAKwrB,QAAQntB,OAAS2B,KAAKwrB,QAAQ0H,oBAAsBlzB,KAAKwrB,QAAQntB,MAAMgwB,SAC5GpB,EAAe7uB,EAAoB4B,KAAKwrB,QAAQntB,OAAS2B,KAAKwrB,QAAQntB,MAAME,eAAiByB,KAAKwrB,QAAQntB,MAAMiwB,YAEhHtuB,KAAK+zB,cAAchI,YAAY/rB,KAAKwrB,QAAQntB,MAAM2tB,aAAchsB,KAAKwrB,QAAQntB,MAAM0qB,OAAQkE,EAAcE,EAAWlB,EAAUC,IAGzH,CAAC,EAEN,IAlB+L,CAAC,EAEhM,GAkBJ,KAAK,EACHD,EAAW+O,EAEX,KACEC,EAAej8B,KAAKsC,UAAUtC,KAAKC,MAAMe,KAAK8yB,SAAStvB,QAAQ,8BAA8BwkB,QAG3F,GAAOyN,KAAK,sCAAwCwF,EAAe,+IAErE,MAAO/7B,IAGT,OADAyS,EAAQ4U,EAAS5U,MAAOupB,EAAc3U,EAAS2U,YAAaC,EAAa5U,EAAS4U,WAC3E,CAAC,EAENn7B,KAAK0yB,YAAYtxB,IAAI,CACrB6qB,SAAUA,EACVta,MAAOA,EACPupB,YAAaA,EACblT,KAAMA,EACNmT,WAAYA,GACX,eAEL,KAAK,EAEH,OADA/U,EAAc/kB,EAAG6oB,OACV,CAAC,EAENlqB,KAAK+4B,4BAET,KAAK,EAIH,OAHA/C,EAAc30B,EAAG6oB,OACjB,GAAkB,SAAU8L,EAAa,UAAYA,EAAY5wB,SAAW,uBAC5E,GAAOmoB,MAAM,gCAAiCnH,GACvC,CAAC,EAENA,GAEJ,KAAK,EACH,MAAO,CAAC,G7B5zEb,IAAwCpoB,S6By0E7Cu0B,EAAU1yB,UAAUw0B,oBAAsB,SAAUrH,GAClD,OAAO,GAAUhtB,UAAM,OAAQ,GAAQ,WACrC,IAAIytB,EAAY6N,EAAgBC,EAAiBl6B,EAAIgS,EAAaF,EAASC,EAAckZ,EAAOwJ,EAAS1P,EAAaoV,EAAuBxF,EAAa9J,EAAauP,EAEvK,OAAO,GAAYz7B,MAAM,SAAUorB,GACjC,OAAQA,EAAGnB,OACT,KAAK,EACH,GAAIjqB,KAAKyyB,oBAEP,OADA,GAAOlF,MAAM,gBAAkBP,EAAM,6BAC9B,CAAC,GAKV5B,EAAGnB,MAAQ,EAEb,KAAK,EAKH,GAJAmB,EAAGjB,KAAKroB,KAAK,CAAC,EAAE,CAAE,EAAG,IAErB9B,KAAKyyB,qBAAsB,GAEtBzyB,KAAKwrB,QAAQ9D,WAChB,MAAM,IAAIrhB,MAAM,yDAuBlB,GApBA,GAAkB,qBAAsB,CACtC6iB,IAAK8D,GACJ,oCACHS,EAAaT,IAAQiH,EAAG,GAAH,gBAAmB9xB,UAAYI,OAAOgC,SAAS2vB,KAAO,IAC3EoH,MAAoB,SAAM7N,GAAYO,OAAS,IAAI9pB,MAAM,KAAKf,KAAI,SAAU2rB,GAC1E,OAAOA,EAAM5qB,MAAM,QAClBjG,MAAK,SAAUoD,GAChB,IACInD,EADK,GAAOmD,EAAI,GACT,GAEX,MAAa,SAANnD,GAAsB,UAANA,KAEzBq9B,MAAqB,SAAM9N,GAAYte,MAAQ,KAAKvQ,OAAO,GAAGsF,MAAM,KAAKf,KAAI,SAAU2rB,GACrF,OAAOA,EAAM5qB,MAAM,QAClBjG,MAAK,SAAUoD,GAChB,IACInD,EADK,GAAOmD,EAAI,GACT,GAEX,MAAa,iBAANnD,GAA8B,UAANA,MAE3Bo9B,IAAkBC,EAAkB,MAAO,CAAC,EAEhD,GAEFv7B,KAAK8yB,SAAS9uB,QAAQ,oCAAqC,QAE3DonB,EAAGnB,MAAQ,EAEb,KAAK,EAGH,OAFAmB,EAAGjB,KAAKroB,KAAK,CAAC,EAAG,EAAE,CAAE,IAEd,CAAC,EAEN9B,KAAK+zB,cAAcrF,mBAAmBjB,IAE1C,KAAK,EAcH,OAbApsB,EAAK+pB,EAAGlB,OAAQ7W,EAAchS,EAAGgS,YAAaF,EAAU9R,EAAG8R,QAASC,EAAe/R,EAAG+R,aAAckZ,EAAQjrB,EAAGirB,MAC/GwJ,EAAU,IAAI7iB,EAAmB,CAC/BJ,QAAS,IAAID,EAAe,CAC1BC,QAASM,IAEXJ,aAAc,IAAID,EAAoB,CACpCC,aAAcK,IAEhBX,YAAa,IAAIL,EAAmB,CAClCK,YAAaY,MAGjB+S,OAAc,EACTpmB,KAAKwrB,QAAQ4H,eAGX,CAAC,EAENpzB,KAAK0yB,YAAYtxB,IAAI00B,EAAS,YALS,CAAC,EAExC,GAKJ,KAAK,EACH1P,EAAcgF,EAAGlB,OACjB,GAAOqD,MAAM,kBAAmBnH,GAChCgF,EAAGnB,MAAQ,EAEb,KAAK,EAmBH,OAlBAuR,EAAwB,IAAI/T,KAAK6E,IACjC0J,EAAch2B,KAAKm1B,kBAAkBW,EAAQtiB,aAAa1B,gBAAgB,sBAE9D6E,qBAAqBmf,GAE7BvzB,aAAoC,IAAnBA,OAAOm5B,SAC1Bn5B,OAAOm5B,QAAQC,aAAa,GAAI,KAAM37B,KAAKwrB,QAAQntB,MAAME,gBAG3D,GAAkB,SAAUy3B,EAAa,UAAYA,EAAYzwB,cAAgB,uBACjF,GAAkB,kBAAmBywB,EAAa,UAAYA,EAAYzwB,cAAgB,6CAEtFi2B,IACFtP,EAAcI,EAAMpoB,MAAM,KAAKhC,OAAO,GAAG8E,KAAK,KAC9C,GAAkB,mBAAkCklB,EHp8ErD0P,MAAM,SAASz4B,KAAI,SAAUopB,GACtC,OAAOpc,OAAOC,aAAa6Q,SAASsL,EAAM,QACzCvlB,KAAK,IGk8EsE,kBAAoBgvB,EAAYzwB,gBAI7F,CAAC,EAEN6gB,GAEJ,KAAK,EAMH,OALAqV,EAAQrQ,EAAGlB,OACX,GAAOqD,MAAM,wCAAyCkO,GACtD,GAAkB,iBAAkBA,EAAO,kCAC3C,GAAkB,0BAA2BA,EAAO,8DACpD,GAAkB,sBAAuBA,EAAO,2CACzC,CAAC,EAEN,GAEJ,KAAK,EACH,MAAO,CAAC,EAEN,GAEJ,KAAK,EAEH,OADAz7B,KAAKyyB,qBAAsB,EACpB,CAAC,GAIV,KAAK,EACH,MAAO,CAAC,WAclBF,EAAU1yB,UAAUg8B,qBAAuB,SAAUzV,GACnD,MAAO,CACL0V,YAAa1V,EAAY0V,YACzBC,aAAc3V,EAAY2V,aAC1BC,gBAAiB5V,EAAY4V,gBAC7BlB,WAAY1U,EAAY0U,WACxBmB,cAAe7V,EAAY6V,gBAI/B1J,EAAU1yB,UAAU04B,mBAAqB,SAAUxZ,GACjD,IAAI/gB,EAAM,GAYV,OAVI+gB,GACFA,EAAW5b,KAAI,SAAUoc,GACA,mBAAnBA,EAAUtK,MAAgD,0BAAnBsK,EAAUtK,KACnDjX,EAAIuhB,EAAUtK,MAA4B,SAApBsK,EAAUrK,QAAwC,IAApBqK,EAAUrK,MAE9DlX,EAAIuhB,EAAUtK,MAAQsK,EAAUrK,SAK/BlX,GAGTu0B,EAAU1yB,UAAUs1B,kBAAoB,SAAU/vB,GAChD,IAAIia,EAAW,CACbxa,SAAUO,EACV4Q,KAAMhW,KAAKwyB,UAEbnT,EAAS9I,QAAUvW,KAAK8yB,SACxB,IAAIzc,EAAyBrW,KAAKwrB,QAAQnV,uBACtC2R,EAAO,IAAIjS,GAAYsJ,GAM3B,OAJIhJ,GACF2R,EAAKhR,0BAA0BX,GAG1B2R,GAGTuK,EAAU1yB,UAAU2zB,oBAAsB,SAAUx1B,GAElD,QAASA,GAA8B,mBAAhBA,EAAIwF,SAAiD,mBAAhBxF,EAAIgG,SAAoD,mBAAnBhG,EAAIuF,YAAkD,mBAAdvF,EAAIgF,OAG/IuvB,EAAU1yB,UAAUq8B,uBAAyB,SAAUhR,GACrD,OAAIA,GACGA,EAAOxD,YAAewD,EAAOkI,eAK7Bt1B,EAAeq+B,SAJXr+B,EAAes+B,mBAO5B7J,EAAU1yB,UAAU80B,gBAAkB,SAAUhE,GAC9C,OAAOnwB,QAAQ8lB,OAAO,IAAImK,GAAUE,KAGtC4B,EAAU1yB,UAAU20B,iBAAmB,WACrC,IAAI7D,EAAO3wB,KAAKk8B,uBAAuBl8B,KAAKwrB,SAC5C,OAAOhrB,QAAQ8lB,OAAO,IAAIwK,GAAgBH,KAGrC4B,EAt1ET,GA01EkB,CAAc,MAChC8J,EAAA,YAAiB/J,K,sCEnjFbgK,EAAS,EAAQ,OAEjBC,EAAU,EAAQ,OAElB3Q,EAAU,EAAQ,OAsDtB,SAAS4Q,IACP,OAAOC,EAAOC,oBAAsB,WAAa,WAGnD,SAASC,EAAa9G,EAAMl2B,GAC1B,GAAI68B,IAAe78B,EACjB,MAAM,IAAIi9B,WAAW,8BAgBvB,OAbIH,EAAOC,qBAET7G,EAAO,IAAI3F,WAAWvwB,IACjBgT,UAAY8pB,EAAO58B,WAGX,OAATg2B,IACFA,EAAO,IAAI4G,EAAO98B,IAGpBk2B,EAAKl2B,OAASA,GAGTk2B,EAaT,SAAS4G,EAAOI,EAAKC,EAAkBn9B,GACrC,KAAK88B,EAAOC,qBAAyB18B,gBAAgBy8B,GACnD,OAAO,IAAIA,EAAOI,EAAKC,EAAkBn9B,GAI3C,GAAmB,iBAARk9B,EAAkB,CAC3B,GAAgC,iBAArBC,EACT,MAAM,IAAIz2B,MAAM,qEAGlB,OAAO02B,EAAY/8B,KAAM68B,GAG3B,OAAO35B,EAAKlD,KAAM68B,EAAKC,EAAkBn9B,GAW3C,SAASuD,EAAK2yB,EAAMp3B,EAAOq+B,EAAkBn9B,GAC3C,GAAqB,iBAAVlB,EACT,MAAM,IAAIgmB,UAAU,yCAGtB,MAA2B,oBAAhBuY,aAA+Bv+B,aAAiBu+B,YAsI7D,SAAyBnH,EAAMoH,EAAOC,EAAYv9B,GAGhD,GAFAs9B,EAAM5M,WAEF6M,EAAa,GAAKD,EAAM5M,WAAa6M,EACvC,MAAM,IAAIN,WAAW,6BAGvB,GAAIK,EAAM5M,WAAa6M,GAAcv9B,GAAU,GAC7C,MAAM,IAAIi9B,WAAW,6BAIrBK,OADiB3+B,IAAf4+B,QAAuC5+B,IAAXqB,EACtB,IAAIuwB,WAAW+M,QACH3+B,IAAXqB,EACD,IAAIuwB,WAAW+M,EAAOC,GAEtB,IAAIhN,WAAW+M,EAAOC,EAAYv9B,GAGxC88B,EAAOC,qBAET7G,EAAOoH,GACFtqB,UAAY8pB,EAAO58B,UAGxBg2B,EAAOsH,EAActH,EAAMoH,GAG7B,OAAOpH,EAjKEuH,CAAgBvH,EAAMp3B,EAAOq+B,EAAkBn9B,GAGnC,iBAAVlB,EAgGb,SAAoBo3B,EAAM/F,EAAQuN,GACR,iBAAbA,GAAsC,KAAbA,IAClCA,EAAW,QAGb,IAAKZ,EAAOa,WAAWD,GACrB,MAAM,IAAI5Y,UAAU,8CAGtB,IAAI9kB,EAAwC,EAA/B0wB,EAAWP,EAAQuN,GAE5BE,GADJ1H,EAAO8G,EAAa9G,EAAMl2B,IACR69B,MAAM1N,EAAQuN,GAE5BE,IAAW59B,IAIbk2B,EAAOA,EAAKplB,MAAM,EAAG8sB,IAGvB,OAAO1H,EAnHEzuB,CAAWyuB,EAAMp3B,EAAOq+B,GAgKnC,SAAoBjH,EAAM73B,GACxB,GAAIy+B,EAAOgB,SAASz/B,GAAM,CACxB,IAAI0/B,EAA4B,EAAtBC,EAAQ3/B,EAAI2B,QAGtB,OAAoB,KAFpBk2B,EAAO8G,EAAa9G,EAAM6H,IAEjB/9B,QAIT3B,EAAI4/B,KAAK/H,EAAM,EAAG,EAAG6H,GAHZ7H,EAOX,GAAI73B,EAAK,CACP,GAA2B,oBAAhBg/B,aAA+Bh/B,EAAIiyB,kBAAkB+M,aAAe,WAAYh/B,EACzF,MAA0B,iBAAfA,EAAI2B,SAigDNk+B,EAjgDmC7/B,EAAI2B,SAkgDrCk+B,EAjgDFlB,EAAa9G,EAAM,GAGrBsH,EAActH,EAAM73B,GAG7B,GAAiB,WAAbA,EAAI2yB,MAAqB/E,EAAQ5tB,EAAI0G,MACvC,OAAOy4B,EAActH,EAAM73B,EAAI0G,MAy/CrC,IAAem5B,EAr/Cb,MAAM,IAAIpZ,UAAU,sFAxLbqZ,CAAWjI,EAAMp3B,GA6B1B,SAASs/B,EAAW/N,GAClB,GAAoB,iBAATA,EACT,MAAM,IAAIvL,UAAU,oCACf,GAAIuL,EAAO,EAChB,MAAM,IAAI4M,WAAW,wCA8BzB,SAASG,EAAYlH,EAAM7F,GAIzB,GAHA+N,EAAW/N,GACX6F,EAAO8G,EAAa9G,EAAM7F,EAAO,EAAI,EAAoB,EAAhB2N,EAAQ3N,KAE5CyM,EAAOC,oBACV,IAAK,IAAIl9B,EAAI,EAAGA,EAAIwwB,IAAQxwB,EAC1Bq2B,EAAKr2B,GAAK,EAId,OAAOq2B,EA0CT,SAASsH,EAActH,EAAMoH,GAC3B,IAAIt9B,EAASs9B,EAAMt9B,OAAS,EAAI,EAA4B,EAAxBg+B,EAAQV,EAAMt9B,QAClDk2B,EAAO8G,EAAa9G,EAAMl2B,GAE1B,IAAK,IAAIH,EAAI,EAAGA,EAAIG,EAAQH,GAAK,EAC/Bq2B,EAAKr2B,GAAgB,IAAXy9B,EAAMz9B,GAGlB,OAAOq2B,EAgET,SAAS8H,EAAQh+B,GAGf,GAAIA,GAAU68B,IACZ,MAAM,IAAII,WAAW,0DAAiEJ,IAAa51B,SAAS,IAAM,UAGpH,OAAgB,EAATjH,EA8FT,SAAS0wB,EAAWP,EAAQuN,GAC1B,GAAIZ,EAAOgB,SAAS3N,GAClB,OAAOA,EAAOnwB,OAGhB,GAA2B,oBAAhBq9B,aAA6D,mBAAvBA,YAAYgB,SAA0BhB,YAAYgB,OAAOlO,IAAWA,aAAkBkN,aACrI,OAAOlN,EAAOO,WAGM,iBAAXP,IACTA,EAAS,GAAKA,GAGhB,IAAI4N,EAAM5N,EAAOnwB,OACjB,GAAY,IAAR+9B,EAAW,OAAO,EAItB,IAFA,IAAIO,GAAc,IAGhB,OAAQZ,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOK,EAET,IAAK,OACL,IAAK,QACL,UAAKp/B,EACH,OAAO4/B,EAAYpO,GAAQnwB,OAE7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAAN+9B,EAET,IAAK,MACH,OAAOA,IAAQ,EAEjB,IAAK,SACH,OAAOS,EAAcrO,GAAQnwB,OAE/B,QACE,GAAIs+B,EAAa,OAAOC,EAAYpO,GAAQnwB,OAE5C09B,GAAY,GAAKA,GAAUhjB,cAC3B4jB,GAAc,GAOtB,SAASG,EAAaf,EAAUgB,EAAOC,GACrC,IAAIL,GAAc,EAalB,SANc3/B,IAAV+/B,GAAuBA,EAAQ,KACjCA,EAAQ,GAKNA,EAAQr+B,KAAKL,OACf,MAAO,GAOT,SAJYrB,IAARggC,GAAqBA,EAAMt+B,KAAKL,UAClC2+B,EAAMt+B,KAAKL,QAGT2+B,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTD,KAAW,GAGT,MAAO,GAKT,IAFKhB,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAOkB,EAASv+B,KAAMq+B,EAAOC,GAE/B,IAAK,OACL,IAAK,QACH,OAAOE,EAAUx+B,KAAMq+B,EAAOC,GAEhC,IAAK,QACH,OAAOG,EAAWz+B,KAAMq+B,EAAOC,GAEjC,IAAK,SACL,IAAK,SACH,OAAOI,EAAY1+B,KAAMq+B,EAAOC,GAElC,IAAK,SACH,OAAOK,EAAY3+B,KAAMq+B,EAAOC,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOM,EAAa5+B,KAAMq+B,EAAOC,GAEnC,QACE,GAAIL,EAAa,MAAM,IAAIxZ,UAAU,qBAAuB4Y,GAC5DA,GAAYA,EAAW,IAAIhjB,cAC3B4jB,GAAc,GAStB,SAASY,EAAK13B,EAAG1H,EAAGyI,GAClB,IAAI1I,EAAI2H,EAAE1H,GACV0H,EAAE1H,GAAK0H,EAAEe,GACTf,EAAEe,GAAK1I,EAgJT,SAASs/B,EAAqB7O,EAAQ4N,EAAKX,EAAYG,EAAU0B,GAE/D,GAAsB,IAAlB9O,EAAOtwB,OAAc,OAAQ,EAqBjC,GAnB0B,iBAAfu9B,GACTG,EAAWH,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAGhBA,GAAcA,EAEV8B,MAAM9B,KAERA,EAAa6B,EAAM,EAAI9O,EAAOtwB,OAAS,GAIrCu9B,EAAa,IAAGA,EAAajN,EAAOtwB,OAASu9B,GAE7CA,GAAcjN,EAAOtwB,OAAQ,CAC/B,GAAIo/B,EAAK,OAAQ,EAAO7B,EAAajN,EAAOtwB,OAAS,OAChD,GAAIu9B,EAAa,EAAG,CACzB,IAAI6B,EAAyB,OAAQ,EAA5B7B,EAAa,EASxB,GALmB,iBAARW,IACTA,EAAMpB,EAAOv5B,KAAK26B,EAAKR,IAIrBZ,EAAOgB,SAASI,GAElB,OAAmB,IAAfA,EAAIl+B,QACE,EAGHs/B,EAAahP,EAAQ4N,EAAKX,EAAYG,EAAU0B,GAClD,GAAmB,iBAARlB,EAGhB,OAFAA,GAAY,IAERpB,EAAOC,qBAA+D,mBAAjCxM,WAAWrwB,UAAUoC,QACxD88B,EACK7O,WAAWrwB,UAAUoC,QAAQnC,KAAKmwB,EAAQ4N,EAAKX,GAE/ChN,WAAWrwB,UAAUq/B,YAAYp/B,KAAKmwB,EAAQ4N,EAAKX,GAIvD+B,EAAahP,EAAQ,CAAC4N,GAAMX,EAAYG,EAAU0B,GAG3D,MAAM,IAAIta,UAAU,wCAGtB,SAASwa,EAAaE,EAAKtB,EAAKX,EAAYG,EAAU0B,GACpD,IA2BIv/B,EA3BA4/B,EAAY,EACZC,EAAYF,EAAIx/B,OAChB2/B,EAAYzB,EAAIl+B,OAEpB,QAAiBrB,IAAb++B,IAGe,UAFjBA,EAAWltB,OAAOktB,GAAUhjB,gBAEY,UAAbgjB,GAAqC,YAAbA,GAAuC,aAAbA,GAAyB,CACpG,GAAI8B,EAAIx/B,OAAS,GAAKk+B,EAAIl+B,OAAS,EACjC,OAAQ,EAGVy/B,EAAY,EACZC,GAAa,EACbC,GAAa,EACbpC,GAAc,EAIlB,SAASqC,EAAK5vB,EAAKnQ,GACjB,OAAkB,IAAd4/B,EACKzvB,EAAInQ,GAEJmQ,EAAI6vB,aAAahgC,EAAI4/B,GAMhC,GAAIL,EAAK,CACP,IAAIU,GAAc,EAElB,IAAKjgC,EAAI09B,EAAY19B,EAAI6/B,EAAW7/B,IAClC,GAAI+/B,EAAKJ,EAAK3/B,KAAO+/B,EAAK1B,GAAqB,IAAhB4B,EAAoB,EAAIjgC,EAAIigC,IAEzD,IADoB,IAAhBA,IAAmBA,EAAajgC,GAChCA,EAAIigC,EAAa,IAAMH,EAAW,OAAOG,EAAaL,OAEtC,IAAhBK,IAAmBjgC,GAAKA,EAAIigC,GAChCA,GAAc,OAMlB,IAFIvC,EAAaoC,EAAYD,IAAWnC,EAAamC,EAAYC,GAE5D9/B,EAAI09B,EAAY19B,GAAK,EAAGA,IAAK,CAGhC,IAFA,IAAIkgC,GAAQ,EAEH93B,EAAI,EAAGA,EAAI03B,EAAW13B,IAC7B,GAAI23B,EAAKJ,EAAK3/B,EAAIoI,KAAO23B,EAAK1B,EAAKj2B,GAAI,CACrC83B,GAAQ,EACR,MAIJ,GAAIA,EAAO,OAAOlgC,EAItB,OAAQ,EAeV,SAASmgC,EAAShwB,EAAKmgB,EAAQ8P,EAAQjgC,GACrCigC,EAASC,OAAOD,IAAW,EAC3B,IAAIE,EAAYnwB,EAAIhQ,OAASigC,EAExBjgC,GAGHA,EAASkgC,OAAOlgC,IAEHmgC,IACXngC,EAASmgC,GALXngC,EAASmgC,EAUX,IAAIC,EAASjQ,EAAOnwB,OACpB,GAAIogC,EAAS,GAAM,EAAG,MAAM,IAAItb,UAAU,sBAEtC9kB,EAASogC,EAAS,IACpBpgC,EAASogC,EAAS,GAGpB,IAAK,IAAIvgC,EAAI,EAAGA,EAAIG,IAAUH,EAAG,CAC/B,IAAIwgC,EAAS/e,SAAS6O,EAAOlxB,OAAW,EAAJY,EAAO,GAAI,IAC/C,GAAIw/B,MAAMgB,GAAS,OAAOxgC,EAC1BmQ,EAAIiwB,EAASpgC,GAAKwgC,EAGpB,OAAOxgC,EAGT,SAASygC,EAAUtwB,EAAKmgB,EAAQ8P,EAAQjgC,GACtC,OAAOugC,EAAWhC,EAAYpO,EAAQngB,EAAIhQ,OAASigC,GAASjwB,EAAKiwB,EAAQjgC,GAG3E,SAASwgC,EAAWxwB,EAAKmgB,EAAQ8P,EAAQjgC,GACvC,OAAOugC,EA26BT,SAAsBtwB,GAGpB,IAFA,IAAIwwB,EAAY,GAEP5gC,EAAI,EAAGA,EAAIoQ,EAAIjQ,SAAUH,EAEhC4gC,EAAUt+B,KAAyB,IAApB8N,EAAI5G,WAAWxJ,IAGhC,OAAO4gC,EAn7BWC,CAAavQ,GAASngB,EAAKiwB,EAAQjgC,GAGvD,SAAS2gC,EAAY3wB,EAAKmgB,EAAQ8P,EAAQjgC,GACxC,OAAOwgC,EAAWxwB,EAAKmgB,EAAQ8P,EAAQjgC,GAGzC,SAAS4gC,EAAY5wB,EAAKmgB,EAAQ8P,EAAQjgC,GACxC,OAAOugC,EAAW/B,EAAcrO,GAASngB,EAAKiwB,EAAQjgC,GAGxD,SAAS6gC,EAAU7wB,EAAKmgB,EAAQ8P,EAAQjgC,GACtC,OAAOugC,EA06BT,SAAwBtwB,EAAK6wB,GAI3B,IAHA,IAAI54B,EAAG64B,EAAIC,EACPP,EAAY,GAEP5gC,EAAI,EAAGA,EAAIoQ,EAAIjQ,WACjB8gC,GAAS,GAAK,KADajhC,EAGhCkhC,GADA74B,EAAI+H,EAAI5G,WAAWxJ,KACT,EACVmhC,EAAK94B,EAAI,IACTu4B,EAAUt+B,KAAK6+B,GACfP,EAAUt+B,KAAK4+B,GAGjB,OAAON,EAv7BWQ,CAAe9Q,EAAQngB,EAAIhQ,OAASigC,GAASjwB,EAAKiwB,EAAQjgC,GA+E9E,SAASg/B,EAAYhvB,EAAK0uB,EAAOC,GAC/B,OAAc,IAAVD,GAAeC,IAAQ3uB,EAAIhQ,OACtB28B,EAAOuE,cAAclxB,GAErB2sB,EAAOuE,cAAclxB,EAAIc,MAAM4tB,EAAOC,IAIjD,SAASE,EAAU7uB,EAAK0uB,EAAOC,GAC7BA,EAAMl2B,KAAKsD,IAAIiE,EAAIhQ,OAAQ2+B,GAI3B,IAHA,IAAIjI,EAAM,GACN72B,EAAI6+B,EAED7+B,EAAI8+B,GAAK,CACd,IAKMwC,EAAYC,EAAWC,EAAYC,EALrCC,EAAYvxB,EAAInQ,GAChB2hC,EAAY,KACZC,EAAmBF,EAAY,IAAO,EAAIA,EAAY,IAAO,EAAIA,EAAY,IAAO,EAAI,EAE5F,GAAI1hC,EAAI4hC,GAAoB9C,EAG1B,OAAQ8C,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAGd,MAEF,KAAK,EAGyB,MAAV,KAFlBJ,EAAanxB,EAAInQ,EAAI,OAGnByhC,GAA6B,GAAZC,IAAqB,EAAmB,GAAbJ,GAExB,MAClBK,EAAYF,GAIhB,MAEF,KAAK,EACHH,EAAanxB,EAAInQ,EAAI,GACrBuhC,EAAYpxB,EAAInQ,EAAI,GAEQ,MAAV,IAAbshC,IAAsD,MAAV,IAAZC,KACnCE,GAA6B,GAAZC,IAAoB,IAAoB,GAAbJ,IAAsB,EAAkB,GAAZC,GAEpD,OAAUE,EAAgB,OAAUA,EAAgB,SACtEE,EAAYF,GAIhB,MAEF,KAAK,EACHH,EAAanxB,EAAInQ,EAAI,GACrBuhC,EAAYpxB,EAAInQ,EAAI,GACpBwhC,EAAarxB,EAAInQ,EAAI,GAEO,MAAV,IAAbshC,IAAsD,MAAV,IAAZC,IAAsD,MAAV,IAAbC,KAClEC,GAA6B,GAAZC,IAAoB,IAAqB,GAAbJ,IAAsB,IAAmB,GAAZC,IAAqB,EAAmB,GAAbC,GAEjF,OAAUC,EAAgB,UAC5CE,EAAYF,GAOJ,OAAdE,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACb9K,EAAIv0B,KAAKq/B,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvB9K,EAAIv0B,KAAKq/B,GACT3hC,GAAK4hC,EAGP,OAQF,SAA+BC,GAC7B,IAAI3D,EAAM2D,EAAW1hC,OAErB,GAAI+9B,GAAO4D,EACT,OAAOnxB,OAAOC,aAAarQ,MAAMoQ,OAAQkxB,GAI3C,IAAIhL,EAAM,GACN72B,EAAI,EAER,KAAOA,EAAIk+B,GACTrH,GAAOlmB,OAAOC,aAAarQ,MAAMoQ,OAAQkxB,EAAW5wB,MAAMjR,EAAGA,GAAK8hC,IAGpE,OAAOjL,EAvBAkL,CAAsBlL,GA1gC/BmL,EAAQ,GAAS/E,EAEjB+E,EAAQ,GAAoB,GA0B5B/E,EAAOC,yBAAqDp+B,IAA/B,EAAAwH,EAAO42B,oBAAoC,EAAA52B,EAAO42B,oBAO/E,WACE,IACE,IAAIyC,EAAM,IAAIjP,WAAW,GAOzB,OANAiP,EAAIxsB,UAAY,CACdA,UAAWud,WAAWrwB,UACtB4hC,IAAK,WACH,OAAO,KAGU,KAAdtC,EAAIsC,OACa,mBAAjBtC,EAAIuC,UACuB,IAAlCvC,EAAIuC,SAAS,EAAG,GAAGrR,WACnB,MAAOnxB,GACP,OAAO,GApB0FyiC,GAKhFnF,IAuErBC,EAAOmF,SAAW,KAGlBnF,EAAOoF,SAAW,SAAU1C,GAE1B,OADAA,EAAIxsB,UAAY8pB,EAAO58B,UAChBs/B,GA4BT1C,EAAOv5B,KAAO,SAAUzE,EAAOq+B,EAAkBn9B,GAC/C,OAAOuD,EAAK,KAAMzE,EAAOq+B,EAAkBn9B,IAGzC88B,EAAOC,sBACTD,EAAO58B,UAAU8S,UAAYud,WAAWrwB,UACxC48B,EAAO9pB,UAAYud,WAEG,oBAAX5F,QAA0BA,OAAOwX,SAAWrF,EAAOnS,OAAOwX,WAAarF,GAEhFr9B,OAAOwD,eAAe65B,EAAQnS,OAAOwX,QAAS,CAC5CrjC,MAAO,KACPsE,cAAc,KAmCpB05B,EAAOsF,MAAQ,SAAU/R,EAAMgS,EAAM3E,GACnC,OAvBF,SAAexH,EAAM7F,EAAMgS,EAAM3E,GAG/B,OAFAU,EAAW/N,GAEPA,GAAQ,EACH2M,EAAa9G,EAAM7F,QAGf1xB,IAAT0jC,EAIyB,iBAAb3E,EAAwBV,EAAa9G,EAAM7F,GAAMgS,KAAKA,EAAM3E,GAAYV,EAAa9G,EAAM7F,GAAMgS,KAAKA,GAG/GrF,EAAa9G,EAAM7F,GASnB+R,CAAM,KAAM/R,EAAMgS,EAAM3E,IAoBjCZ,EAAOM,YAAc,SAAU/M,GAC7B,OAAO+M,EAAY,KAAM/M,IAO3ByM,EAAOwF,gBAAkB,SAAUjS,GACjC,OAAO+M,EAAY,KAAM/M,IAqH3ByM,EAAOgB,SAAW,SAAkBt2B,GAClC,QAAe,MAALA,IAAaA,EAAE+6B,YAG3BzF,EAAO0F,QAAU,SAAiBj7B,EAAGC,GACnC,IAAKs1B,EAAOgB,SAASv2B,KAAOu1B,EAAOgB,SAASt2B,GAC1C,MAAM,IAAIsd,UAAU,6BAGtB,GAAIvd,IAAMC,EAAG,OAAO,EAIpB,IAHA,IAAIO,EAAIR,EAAEvH,OACNkL,EAAI1D,EAAExH,OAEDH,EAAI,EAAGk+B,EAAMt1B,KAAKsD,IAAIhE,EAAGmD,GAAIrL,EAAIk+B,IAAOl+B,EAC/C,GAAI0H,EAAE1H,KAAO2H,EAAE3H,GAAI,CACjBkI,EAAIR,EAAE1H,GACNqL,EAAI1D,EAAE3H,GACN,MAIJ,OAAIkI,EAAImD,GAAW,EACfA,EAAInD,EAAU,EACX,GAGT+0B,EAAOa,WAAa,SAAoBD,GACtC,OAAQltB,OAAOktB,GAAUhjB,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EAET,QACE,OAAO,IAIboiB,EAAOxN,OAAS,SAAgBmT,EAAMziC,GACpC,IAAKisB,EAAQwW,GACX,MAAM,IAAI3d,UAAU,+CAGtB,GAAoB,IAAhB2d,EAAKziC,OACP,OAAO88B,EAAOsF,MAAM,GAGtB,IAAIviC,EAEJ,QAAelB,IAAXqB,EAGF,IAFAA,EAAS,EAEJH,EAAI,EAAGA,EAAI4iC,EAAKziC,SAAUH,EAC7BG,GAAUyiC,EAAK5iC,GAAGG,OAItB,IAAIswB,EAASwM,EAAOM,YAAYp9B,GAC5B0iC,EAAM,EAEV,IAAK7iC,EAAI,EAAGA,EAAI4iC,EAAKziC,SAAUH,EAAG,CAChC,IAAImQ,EAAMyyB,EAAK5iC,GAEf,IAAKi9B,EAAOgB,SAAS9tB,GACnB,MAAM,IAAI8U,UAAU,+CAGtB9U,EAAIiuB,KAAK3N,EAAQoS,GACjBA,GAAO1yB,EAAIhQ,OAGb,OAAOswB,GAsDTwM,EAAOpM,WAAaA,EAyEpBoM,EAAO58B,UAAUqiC,WAAY,EAQ7BzF,EAAO58B,UAAUyiC,OAAS,WACxB,IAAI5E,EAAM19B,KAAKL,OAEf,GAAI+9B,EAAM,GAAM,EACd,MAAM,IAAId,WAAW,6CAGvB,IAAK,IAAIp9B,EAAI,EAAGA,EAAIk+B,EAAKl+B,GAAK,EAC5Bq/B,EAAK7+B,KAAMR,EAAGA,EAAI,GAGpB,OAAOQ,MAGTy8B,EAAO58B,UAAU0iC,OAAS,WACxB,IAAI7E,EAAM19B,KAAKL,OAEf,GAAI+9B,EAAM,GAAM,EACd,MAAM,IAAId,WAAW,6CAGvB,IAAK,IAAIp9B,EAAI,EAAGA,EAAIk+B,EAAKl+B,GAAK,EAC5Bq/B,EAAK7+B,KAAMR,EAAGA,EAAI,GAClBq/B,EAAK7+B,KAAMR,EAAI,EAAGA,EAAI,GAGxB,OAAOQ,MAGTy8B,EAAO58B,UAAU2iC,OAAS,WACxB,IAAI9E,EAAM19B,KAAKL,OAEf,GAAI+9B,EAAM,GAAM,EACd,MAAM,IAAId,WAAW,6CAGvB,IAAK,IAAIp9B,EAAI,EAAGA,EAAIk+B,EAAKl+B,GAAK,EAC5Bq/B,EAAK7+B,KAAMR,EAAGA,EAAI,GAClBq/B,EAAK7+B,KAAMR,EAAI,EAAGA,EAAI,GACtBq/B,EAAK7+B,KAAMR,EAAI,EAAGA,EAAI,GACtBq/B,EAAK7+B,KAAMR,EAAI,EAAGA,EAAI,GAGxB,OAAOQ,MAGTy8B,EAAO58B,UAAU+G,SAAW,WAC1B,IAAIjH,EAAuB,EAAdK,KAAKL,OAClB,OAAe,IAAXA,EAAqB,GACA,IAArBD,UAAUC,OAAqB6+B,EAAUx+B,KAAM,EAAGL,GAC/Cy+B,EAAar+B,MAAMC,KAAMN,YAGlC+8B,EAAO58B,UAAUiN,OAAS,SAAgB3F,GACxC,IAAKs1B,EAAOgB,SAASt2B,GAAI,MAAM,IAAIsd,UAAU,6BAC7C,OAAIzkB,OAASmH,GACsB,IAA5Bs1B,EAAO0F,QAAQniC,KAAMmH,IAG9Bs1B,EAAO58B,UAAU4iC,QAAU,WACzB,IAAI7yB,EAAM,GACNzE,EAAMq2B,EAAQ,GAOlB,OALIxhC,KAAKL,OAAS,IAChBiQ,EAAM5P,KAAK4G,SAAS,MAAO,EAAGuE,GAAKywB,MAAM,SAAS50B,KAAK,KACnDhH,KAAKL,OAASwL,IAAKyE,GAAO,UAGzB,WAAaA,EAAM,KAG5B6sB,EAAO58B,UAAUsiC,QAAU,SAAiBO,EAAQrE,EAAOC,EAAKqE,EAAWC,GACzE,IAAKnG,EAAOgB,SAASiF,GACnB,MAAM,IAAIje,UAAU,6BAmBtB,QAhBcnmB,IAAV+/B,IACFA,EAAQ,QAGE//B,IAARggC,IACFA,EAAMoE,EAASA,EAAO/iC,OAAS,QAGfrB,IAAdqkC,IACFA,EAAY,QAGErkC,IAAZskC,IACFA,EAAU5iC,KAAKL,QAGb0+B,EAAQ,GAAKC,EAAMoE,EAAO/iC,QAAUgjC,EAAY,GAAKC,EAAU5iC,KAAKL,OACtE,MAAM,IAAIi9B,WAAW,sBAGvB,GAAI+F,GAAaC,GAAWvE,GAASC,EACnC,OAAO,EAGT,GAAIqE,GAAaC,EACf,OAAQ,EAGV,GAAIvE,GAASC,EACX,OAAO,EAOT,GAAIt+B,OAAS0iC,EAAQ,OAAO,EAO5B,IANA,IAAIh7B,GAFJk7B,KAAa,IADbD,KAAe,GAIX93B,GALJyzB,KAAS,IADTD,KAAW,GAOPX,EAAMt1B,KAAKsD,IAAIhE,EAAGmD,GAClBg4B,EAAW7iC,KAAKyQ,MAAMkyB,EAAWC,GACjCE,EAAaJ,EAAOjyB,MAAM4tB,EAAOC,GAE5B9+B,EAAI,EAAGA,EAAIk+B,IAAOl+B,EACzB,GAAIqjC,EAASrjC,KAAOsjC,EAAWtjC,GAAI,CACjCkI,EAAIm7B,EAASrjC,GACbqL,EAAIi4B,EAAWtjC,GACf,MAIJ,OAAIkI,EAAImD,GAAW,EACfA,EAAInD,EAAU,EACX,GAqIT+0B,EAAO58B,UAAUmpB,SAAW,SAAkB6U,EAAKX,EAAYG,GAC7D,OAAoD,IAA7Cr9B,KAAKiC,QAAQ47B,EAAKX,EAAYG,IAGvCZ,EAAO58B,UAAUoC,QAAU,SAAiB47B,EAAKX,EAAYG,GAC3D,OAAOyB,EAAqB9+B,KAAM69B,EAAKX,EAAYG,GAAU,IAG/DZ,EAAO58B,UAAUq/B,YAAc,SAAqBrB,EAAKX,EAAYG,GACnE,OAAOyB,EAAqB9+B,KAAM69B,EAAKX,EAAYG,GAAU,IAsD/DZ,EAAO58B,UAAU29B,MAAQ,SAAe1N,EAAQ8P,EAAQjgC,EAAQ09B,GAE9D,QAAe/+B,IAAXshC,EACFvC,EAAW,OACX19B,EAASK,KAAKL,OACdigC,EAAS,OACJ,QAAethC,IAAXqB,GAA0C,iBAAXigC,EACxCvC,EAAWuC,EACXjgC,EAASK,KAAKL,OACdigC,EAAS,MACJ,KAAImD,SAASnD,GAYlB,MAAM,IAAIv5B,MAAM,2EAXhBu5B,GAAkB,EAEdmD,SAASpjC,IACXA,GAAkB,OACDrB,IAAb++B,IAAwBA,EAAW,UAEvCA,EAAW19B,EACXA,OAASrB,GAOb,IAAIwhC,EAAY9/B,KAAKL,OAASigC,EAG9B,SAFethC,IAAXqB,GAAwBA,EAASmgC,KAAWngC,EAASmgC,GAErDhQ,EAAOnwB,OAAS,IAAMA,EAAS,GAAKigC,EAAS,IAAMA,EAAS5/B,KAAKL,OACnE,MAAM,IAAIi9B,WAAW,0CAGlBS,IAAUA,EAAW,QAG1B,IAFA,IAAIY,GAAc,IAGhB,OAAQZ,GACN,IAAK,MACH,OAAOsC,EAAS3/B,KAAM8vB,EAAQ8P,EAAQjgC,GAExC,IAAK,OACL,IAAK,QACH,OAAOsgC,EAAUjgC,KAAM8vB,EAAQ8P,EAAQjgC,GAEzC,IAAK,QACH,OAAOwgC,EAAWngC,KAAM8vB,EAAQ8P,EAAQjgC,GAE1C,IAAK,SACL,IAAK,SACH,OAAO2gC,EAAYtgC,KAAM8vB,EAAQ8P,EAAQjgC,GAE3C,IAAK,SAEH,OAAO4gC,EAAYvgC,KAAM8vB,EAAQ8P,EAAQjgC,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO6gC,EAAUxgC,KAAM8vB,EAAQ8P,EAAQjgC,GAEzC,QACE,GAAIs+B,EAAa,MAAM,IAAIxZ,UAAU,qBAAuB4Y,GAC5DA,GAAY,GAAKA,GAAUhjB,cAC3B4jB,GAAc,IAKtBxB,EAAO58B,UAAU0V,OAAS,WACxB,MAAO,CACLob,KAAM,SACNjsB,KAAMzB,MAAMpD,UAAU4Q,MAAM3Q,KAAKE,KAAKgjC,MAAQhjC,KAAM,KAkGxD,IAAIshC,EAAuB,KAoB3B,SAAS7C,EAAW9uB,EAAK0uB,EAAOC,GAC9B,IAAI7H,EAAM,GACV6H,EAAMl2B,KAAKsD,IAAIiE,EAAIhQ,OAAQ2+B,GAE3B,IAAK,IAAI9+B,EAAI6+B,EAAO7+B,EAAI8+B,IAAO9+B,EAC7Bi3B,GAAOtmB,OAAOC,aAAsB,IAATT,EAAInQ,IAGjC,OAAOi3B,EAGT,SAASiI,EAAY/uB,EAAK0uB,EAAOC,GAC/B,IAAI7H,EAAM,GACV6H,EAAMl2B,KAAKsD,IAAIiE,EAAIhQ,OAAQ2+B,GAE3B,IAAK,IAAI9+B,EAAI6+B,EAAO7+B,EAAI8+B,IAAO9+B,EAC7Bi3B,GAAOtmB,OAAOC,aAAaT,EAAInQ,IAGjC,OAAOi3B,EAGT,SAAS8H,EAAS5uB,EAAK0uB,EAAOC,GAC5B,IAAIZ,EAAM/tB,EAAIhQ,SACT0+B,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAMZ,KAAKY,EAAMZ,GAGxC,IAFA,IAAIuF,EAAM,GAEDzjC,EAAI6+B,EAAO7+B,EAAI8+B,IAAO9+B,EAC7ByjC,GAAOC,EAAMvzB,EAAInQ,IAGnB,OAAOyjC,EAGT,SAASrE,EAAajvB,EAAK0uB,EAAOC,GAIhC,IAHA,IAAI6E,EAAQxzB,EAAIc,MAAM4tB,EAAOC,GACzBjI,EAAM,GAED72B,EAAI,EAAGA,EAAI2jC,EAAMxjC,OAAQH,GAAK,EACrC62B,GAAOlmB,OAAOC,aAAa+yB,EAAM3jC,GAAoB,IAAf2jC,EAAM3jC,EAAI,IAGlD,OAAO62B,EA4CT,SAAS+M,EAAYxD,EAAQyD,EAAK1jC,GAChC,GAAIigC,EAAS,GAAM,GAAKA,EAAS,EAAG,MAAM,IAAIhD,WAAW,sBACzD,GAAIgD,EAASyD,EAAM1jC,EAAQ,MAAM,IAAIi9B,WAAW,yCA+IlD,SAAS0G,EAAS3zB,EAAKlR,EAAOmhC,EAAQyD,EAAKl4B,EAAKO,GAC9C,IAAK+wB,EAAOgB,SAAS9tB,GAAM,MAAM,IAAI8U,UAAU,+CAC/C,GAAIhmB,EAAQ0M,GAAO1M,EAAQiN,EAAK,MAAM,IAAIkxB,WAAW,qCACrD,GAAIgD,EAASyD,EAAM1zB,EAAIhQ,OAAQ,MAAM,IAAIi9B,WAAW,sBAsDtD,SAAS2G,EAAkB5zB,EAAKlR,EAAOmhC,EAAQ4D,GACzC/kC,EAAQ,IAAGA,EAAQ,MAASA,EAAQ,GAExC,IAAK,IAAIe,EAAI,EAAGoI,EAAIQ,KAAKsD,IAAIiE,EAAIhQ,OAASigC,EAAQ,GAAIpgC,EAAIoI,IAAKpI,EAC7DmQ,EAAIiwB,EAASpgC,IAAMf,EAAQ,KAAQ,GAAK+kC,EAAehkC,EAAI,EAAIA,MAAqC,GAA5BgkC,EAAehkC,EAAI,EAAIA,GAkCnG,SAASikC,EAAkB9zB,EAAKlR,EAAOmhC,EAAQ4D,GACzC/kC,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAE5C,IAAK,IAAIe,EAAI,EAAGoI,EAAIQ,KAAKsD,IAAIiE,EAAIhQ,OAASigC,EAAQ,GAAIpgC,EAAIoI,IAAKpI,EAC7DmQ,EAAIiwB,EAASpgC,GAAKf,IAAuC,GAA5B+kC,EAAehkC,EAAI,EAAIA,GAAS,IAmKjE,SAASkkC,EAAa/zB,EAAKlR,EAAOmhC,EAAQyD,EAAKl4B,EAAKO,GAClD,GAAIk0B,EAASyD,EAAM1zB,EAAIhQ,OAAQ,MAAM,IAAIi9B,WAAW,sBACpD,GAAIgD,EAAS,EAAG,MAAM,IAAIhD,WAAW,sBAGvC,SAAS+G,EAAWh0B,EAAKlR,EAAOmhC,EAAQ4D,EAAcI,GAMpD,OALKA,GACHF,EAAa/zB,EAAKlR,EAAOmhC,EAAQ,GAGnCrD,EAAQiB,MAAM7tB,EAAKlR,EAAOmhC,EAAQ4D,EAAc,GAAI,GAC7C5D,EAAS,EAWlB,SAASiE,EAAYl0B,EAAKlR,EAAOmhC,EAAQ4D,EAAcI,GAMrD,OALKA,GACHF,EAAa/zB,EAAKlR,EAAOmhC,EAAQ,GAGnCrD,EAAQiB,MAAM7tB,EAAKlR,EAAOmhC,EAAQ4D,EAAc,GAAI,GAC7C5D,EAAS,EA5dlBnD,EAAO58B,UAAU4Q,MAAQ,SAAe4tB,EAAOC,GAC7C,IAmBIwF,EAnBApG,EAAM19B,KAAKL,OAqBf,IApBA0+B,IAAUA,GAGE,GACVA,GAASX,GACG,IAAGW,EAAQ,GACdA,EAAQX,IACjBW,EAAQX,IANVY,OAAchgC,IAARggC,EAAoBZ,IAAQY,GASxB,GACRA,GAAOZ,GACG,IAAGY,EAAM,GACVA,EAAMZ,IACfY,EAAMZ,GAGJY,EAAMD,IAAOC,EAAMD,GAGnB5B,EAAOC,qBACToH,EAAS9jC,KAAK0hC,SAASrD,EAAOC,IACvB3rB,UAAY8pB,EAAO58B,cACrB,CACL,IAAIkkC,EAAWzF,EAAMD,EACrByF,EAAS,IAAIrH,EAAOsH,OAAUzlC,GAE9B,IAAK,IAAIkB,EAAI,EAAGA,EAAIukC,IAAYvkC,EAC9BskC,EAAOtkC,GAAKQ,KAAKR,EAAI6+B,GAIzB,OAAOyF,GAYTrH,EAAO58B,UAAUmkC,WAAa,SAAoBpE,EAAQvP,EAAYuT,GACpEhE,GAAkB,EAClBvP,GAA0B,EACrBuT,GAAUR,EAAYxD,EAAQvP,EAAYrwB,KAAKL,QAKpD,IAJA,IAAIk+B,EAAM79B,KAAK4/B,GACXqE,EAAM,EACNzkC,EAAI,IAECA,EAAI6wB,IAAe4T,GAAO,MACjCpG,GAAO79B,KAAK4/B,EAASpgC,GAAKykC,EAG5B,OAAOpG,GAGTpB,EAAO58B,UAAUqkC,WAAa,SAAoBtE,EAAQvP,EAAYuT,GACpEhE,GAAkB,EAClBvP,GAA0B,EAErBuT,GACHR,EAAYxD,EAAQvP,EAAYrwB,KAAKL,QAMvC,IAHA,IAAIk+B,EAAM79B,KAAK4/B,IAAWvP,GACtB4T,EAAM,EAEH5T,EAAa,IAAM4T,GAAO,MAC/BpG,GAAO79B,KAAK4/B,IAAWvP,GAAc4T,EAGvC,OAAOpG,GAGTpB,EAAO58B,UAAUskC,UAAY,SAAmBvE,EAAQgE,GAEtD,OADKA,GAAUR,EAAYxD,EAAQ,EAAG5/B,KAAKL,QACpCK,KAAK4/B,IAGdnD,EAAO58B,UAAUukC,aAAe,SAAsBxE,EAAQgE,GAE5D,OADKA,GAAUR,EAAYxD,EAAQ,EAAG5/B,KAAKL,QACpCK,KAAK4/B,GAAU5/B,KAAK4/B,EAAS,IAAM,GAG5CnD,EAAO58B,UAAU2/B,aAAe,SAAsBI,EAAQgE,GAE5D,OADKA,GAAUR,EAAYxD,EAAQ,EAAG5/B,KAAKL,QACpCK,KAAK4/B,IAAW,EAAI5/B,KAAK4/B,EAAS,IAG3CnD,EAAO58B,UAAUwkC,aAAe,SAAsBzE,EAAQgE,GAE5D,OADKA,GAAUR,EAAYxD,EAAQ,EAAG5/B,KAAKL,SACnCK,KAAK4/B,GAAU5/B,KAAK4/B,EAAS,IAAM,EAAI5/B,KAAK4/B,EAAS,IAAM,IAAyB,SAAnB5/B,KAAK4/B,EAAS,IAGzFnD,EAAO58B,UAAUykC,aAAe,SAAsB1E,EAAQgE,GAE5D,OADKA,GAAUR,EAAYxD,EAAQ,EAAG5/B,KAAKL,QACrB,SAAfK,KAAK4/B,IAAuB5/B,KAAK4/B,EAAS,IAAM,GAAK5/B,KAAK4/B,EAAS,IAAM,EAAI5/B,KAAK4/B,EAAS,KAGpGnD,EAAO58B,UAAU0kC,UAAY,SAAmB3E,EAAQvP,EAAYuT,GAClEhE,GAAkB,EAClBvP,GAA0B,EACrBuT,GAAUR,EAAYxD,EAAQvP,EAAYrwB,KAAKL,QAKpD,IAJA,IAAIk+B,EAAM79B,KAAK4/B,GACXqE,EAAM,EACNzkC,EAAI,IAECA,EAAI6wB,IAAe4T,GAAO,MACjCpG,GAAO79B,KAAK4/B,EAASpgC,GAAKykC,EAK5B,OADIpG,IADJoG,GAAO,OACSpG,GAAOz1B,KAAKM,IAAI,EAAG,EAAI2nB,IAChCwN,GAGTpB,EAAO58B,UAAU2kC,UAAY,SAAmB5E,EAAQvP,EAAYuT,GAClEhE,GAAkB,EAClBvP,GAA0B,EACrBuT,GAAUR,EAAYxD,EAAQvP,EAAYrwB,KAAKL,QAKpD,IAJA,IAAIH,EAAI6wB,EACJ4T,EAAM,EACNpG,EAAM79B,KAAK4/B,IAAWpgC,GAEnBA,EAAI,IAAMykC,GAAO,MACtBpG,GAAO79B,KAAK4/B,IAAWpgC,GAAKykC,EAK9B,OADIpG,IADJoG,GAAO,OACSpG,GAAOz1B,KAAKM,IAAI,EAAG,EAAI2nB,IAChCwN,GAGTpB,EAAO58B,UAAU4kC,SAAW,SAAkB7E,EAAQgE,GAEpD,OADKA,GAAUR,EAAYxD,EAAQ,EAAG5/B,KAAKL,QACtB,IAAfK,KAAK4/B,IACyB,GAA5B,IAAO5/B,KAAK4/B,GAAU,GADK5/B,KAAK4/B,IAI1CnD,EAAO58B,UAAU6kC,YAAc,SAAqB9E,EAAQgE,GACrDA,GAAUR,EAAYxD,EAAQ,EAAG5/B,KAAKL,QAC3C,IAAIk+B,EAAM79B,KAAK4/B,GAAU5/B,KAAK4/B,EAAS,IAAM,EAC7C,OAAa,MAAN/B,EAAqB,WAANA,EAAmBA,GAG3CpB,EAAO58B,UAAU8kC,YAAc,SAAqB/E,EAAQgE,GACrDA,GAAUR,EAAYxD,EAAQ,EAAG5/B,KAAKL,QAC3C,IAAIk+B,EAAM79B,KAAK4/B,EAAS,GAAK5/B,KAAK4/B,IAAW,EAC7C,OAAa,MAAN/B,EAAqB,WAANA,EAAmBA,GAG3CpB,EAAO58B,UAAUuG,YAAc,SAAqBw5B,EAAQgE,GAE1D,OADKA,GAAUR,EAAYxD,EAAQ,EAAG5/B,KAAKL,QACpCK,KAAK4/B,GAAU5/B,KAAK4/B,EAAS,IAAM,EAAI5/B,KAAK4/B,EAAS,IAAM,GAAK5/B,KAAK4/B,EAAS,IAAM,IAG7FnD,EAAO58B,UAAU+kC,YAAc,SAAqBhF,EAAQgE,GAE1D,OADKA,GAAUR,EAAYxD,EAAQ,EAAG5/B,KAAKL,QACpCK,KAAK4/B,IAAW,GAAK5/B,KAAK4/B,EAAS,IAAM,GAAK5/B,KAAK4/B,EAAS,IAAM,EAAI5/B,KAAK4/B,EAAS,IAG7FnD,EAAO58B,UAAUglC,YAAc,SAAqBjF,EAAQgE,GAE1D,OADKA,GAAUR,EAAYxD,EAAQ,EAAG5/B,KAAKL,QACpC48B,EAAQgD,KAAKv/B,KAAM4/B,GAAQ,EAAM,GAAI,IAG9CnD,EAAO58B,UAAUilC,YAAc,SAAqBlF,EAAQgE,GAE1D,OADKA,GAAUR,EAAYxD,EAAQ,EAAG5/B,KAAKL,QACpC48B,EAAQgD,KAAKv/B,KAAM4/B,GAAQ,EAAO,GAAI,IAG/CnD,EAAO58B,UAAUklC,aAAe,SAAsBnF,EAAQgE,GAE5D,OADKA,GAAUR,EAAYxD,EAAQ,EAAG5/B,KAAKL,QACpC48B,EAAQgD,KAAKv/B,KAAM4/B,GAAQ,EAAM,GAAI,IAG9CnD,EAAO58B,UAAUmlC,aAAe,SAAsBpF,EAAQgE,GAE5D,OADKA,GAAUR,EAAYxD,EAAQ,EAAG5/B,KAAKL,QACpC48B,EAAQgD,KAAKv/B,KAAM4/B,GAAQ,EAAO,GAAI,IAS/CnD,EAAO58B,UAAUolC,YAAc,SAAqBxmC,EAAOmhC,EAAQvP,EAAYuT,IAC7EnlC,GAASA,EACTmhC,GAAkB,EAClBvP,GAA0B,EAErBuT,IAEHN,EAAStjC,KAAMvB,EAAOmhC,EAAQvP,EADfjoB,KAAKM,IAAI,EAAG,EAAI2nB,GAAc,EACO,GAGtD,IAAI4T,EAAM,EACNzkC,EAAI,EAGR,IAFAQ,KAAK4/B,GAAkB,IAARnhC,IAENe,EAAI6wB,IAAe4T,GAAO,MACjCjkC,KAAK4/B,EAASpgC,GAAKf,EAAQwlC,EAAM,IAGnC,OAAOrE,EAASvP,GAGlBoM,EAAO58B,UAAUqlC,YAAc,SAAqBzmC,EAAOmhC,EAAQvP,EAAYuT,IAC7EnlC,GAASA,EACTmhC,GAAkB,EAClBvP,GAA0B,EAErBuT,IAEHN,EAAStjC,KAAMvB,EAAOmhC,EAAQvP,EADfjoB,KAAKM,IAAI,EAAG,EAAI2nB,GAAc,EACO,GAGtD,IAAI7wB,EAAI6wB,EAAa,EACjB4T,EAAM,EAGV,IAFAjkC,KAAK4/B,EAASpgC,GAAa,IAARf,IAEVe,GAAK,IAAMykC,GAAO,MACzBjkC,KAAK4/B,EAASpgC,GAAKf,EAAQwlC,EAAM,IAGnC,OAAOrE,EAASvP,GAGlBoM,EAAO58B,UAAUslC,WAAa,SAAoB1mC,EAAOmhC,EAAQgE,GAM/D,OALAnlC,GAASA,EACTmhC,GAAkB,EACbgE,GAAUN,EAAStjC,KAAMvB,EAAOmhC,EAAQ,EAAG,IAAM,GACjDnD,EAAOC,sBAAqBj+B,EAAQ2J,KAAKC,MAAM5J,IACpDuB,KAAK4/B,GAAkB,IAARnhC,EACRmhC,EAAS,GAWlBnD,EAAO58B,UAAUulC,cAAgB,SAAuB3mC,EAAOmhC,EAAQgE,GAYrE,OAXAnlC,GAASA,EACTmhC,GAAkB,EACbgE,GAAUN,EAAStjC,KAAMvB,EAAOmhC,EAAQ,EAAG,MAAQ,GAEpDnD,EAAOC,qBACT18B,KAAK4/B,GAAkB,IAARnhC,EACfuB,KAAK4/B,EAAS,GAAKnhC,IAAU,GAE7B8kC,EAAkBvjC,KAAMvB,EAAOmhC,GAAQ,GAGlCA,EAAS,GAGlBnD,EAAO58B,UAAUwlC,cAAgB,SAAuB5mC,EAAOmhC,EAAQgE,GAYrE,OAXAnlC,GAASA,EACTmhC,GAAkB,EACbgE,GAAUN,EAAStjC,KAAMvB,EAAOmhC,EAAQ,EAAG,MAAQ,GAEpDnD,EAAOC,qBACT18B,KAAK4/B,GAAUnhC,IAAU,EACzBuB,KAAK4/B,EAAS,GAAa,IAARnhC,GAEnB8kC,EAAkBvjC,KAAMvB,EAAOmhC,GAAQ,GAGlCA,EAAS,GAWlBnD,EAAO58B,UAAUylC,cAAgB,SAAuB7mC,EAAOmhC,EAAQgE,GAcrE,OAbAnlC,GAASA,EACTmhC,GAAkB,EACbgE,GAAUN,EAAStjC,KAAMvB,EAAOmhC,EAAQ,EAAG,WAAY,GAExDnD,EAAOC,qBACT18B,KAAK4/B,EAAS,GAAKnhC,IAAU,GAC7BuB,KAAK4/B,EAAS,GAAKnhC,IAAU,GAC7BuB,KAAK4/B,EAAS,GAAKnhC,IAAU,EAC7BuB,KAAK4/B,GAAkB,IAARnhC,GAEfglC,EAAkBzjC,KAAMvB,EAAOmhC,GAAQ,GAGlCA,EAAS,GAGlBnD,EAAO58B,UAAU0lC,cAAgB,SAAuB9mC,EAAOmhC,EAAQgE,GAcrE,OAbAnlC,GAASA,EACTmhC,GAAkB,EACbgE,GAAUN,EAAStjC,KAAMvB,EAAOmhC,EAAQ,EAAG,WAAY,GAExDnD,EAAOC,qBACT18B,KAAK4/B,GAAUnhC,IAAU,GACzBuB,KAAK4/B,EAAS,GAAKnhC,IAAU,GAC7BuB,KAAK4/B,EAAS,GAAKnhC,IAAU,EAC7BuB,KAAK4/B,EAAS,GAAa,IAARnhC,GAEnBglC,EAAkBzjC,KAAMvB,EAAOmhC,GAAQ,GAGlCA,EAAS,GAGlBnD,EAAO58B,UAAU2lC,WAAa,SAAoB/mC,EAAOmhC,EAAQvP,EAAYuT,GAI3E,GAHAnlC,GAASA,EACTmhC,GAAkB,GAEbgE,EAAU,CACb,IAAIhhB,EAAQxa,KAAKM,IAAI,EAAG,EAAI2nB,EAAa,GACzCiT,EAAStjC,KAAMvB,EAAOmhC,EAAQvP,EAAYzN,EAAQ,GAAIA,GAGxD,IAAIpjB,EAAI,EACJykC,EAAM,EACNwB,EAAM,EAGV,IAFAzlC,KAAK4/B,GAAkB,IAARnhC,IAENe,EAAI6wB,IAAe4T,GAAO,MAC7BxlC,EAAQ,GAAa,IAARgnC,GAAsC,IAAzBzlC,KAAK4/B,EAASpgC,EAAI,KAC9CimC,EAAM,GAGRzlC,KAAK4/B,EAASpgC,IAAMf,EAAQwlC,GAAO,GAAKwB,EAAM,IAGhD,OAAO7F,EAASvP,GAGlBoM,EAAO58B,UAAU6lC,WAAa,SAAoBjnC,EAAOmhC,EAAQvP,EAAYuT,GAI3E,GAHAnlC,GAASA,EACTmhC,GAAkB,GAEbgE,EAAU,CACb,IAAIhhB,EAAQxa,KAAKM,IAAI,EAAG,EAAI2nB,EAAa,GACzCiT,EAAStjC,KAAMvB,EAAOmhC,EAAQvP,EAAYzN,EAAQ,GAAIA,GAGxD,IAAIpjB,EAAI6wB,EAAa,EACjB4T,EAAM,EACNwB,EAAM,EAGV,IAFAzlC,KAAK4/B,EAASpgC,GAAa,IAARf,IAEVe,GAAK,IAAMykC,GAAO,MACrBxlC,EAAQ,GAAa,IAARgnC,GAAsC,IAAzBzlC,KAAK4/B,EAASpgC,EAAI,KAC9CimC,EAAM,GAGRzlC,KAAK4/B,EAASpgC,IAAMf,EAAQwlC,GAAO,GAAKwB,EAAM,IAGhD,OAAO7F,EAASvP,GAGlBoM,EAAO58B,UAAU8lC,UAAY,SAAmBlnC,EAAOmhC,EAAQgE,GAO7D,OANAnlC,GAASA,EACTmhC,GAAkB,EACbgE,GAAUN,EAAStjC,KAAMvB,EAAOmhC,EAAQ,EAAG,KAAO,KAClDnD,EAAOC,sBAAqBj+B,EAAQ2J,KAAKC,MAAM5J,IAChDA,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCuB,KAAK4/B,GAAkB,IAARnhC,EACRmhC,EAAS,GAGlBnD,EAAO58B,UAAU+lC,aAAe,SAAsBnnC,EAAOmhC,EAAQgE,GAYnE,OAXAnlC,GAASA,EACTmhC,GAAkB,EACbgE,GAAUN,EAAStjC,KAAMvB,EAAOmhC,EAAQ,EAAG,OAAS,OAErDnD,EAAOC,qBACT18B,KAAK4/B,GAAkB,IAARnhC,EACfuB,KAAK4/B,EAAS,GAAKnhC,IAAU,GAE7B8kC,EAAkBvjC,KAAMvB,EAAOmhC,GAAQ,GAGlCA,EAAS,GAGlBnD,EAAO58B,UAAUgmC,aAAe,SAAsBpnC,EAAOmhC,EAAQgE,GAYnE,OAXAnlC,GAASA,EACTmhC,GAAkB,EACbgE,GAAUN,EAAStjC,KAAMvB,EAAOmhC,EAAQ,EAAG,OAAS,OAErDnD,EAAOC,qBACT18B,KAAK4/B,GAAUnhC,IAAU,EACzBuB,KAAK4/B,EAAS,GAAa,IAARnhC,GAEnB8kC,EAAkBvjC,KAAMvB,EAAOmhC,GAAQ,GAGlCA,EAAS,GAGlBnD,EAAO58B,UAAUimC,aAAe,SAAsBrnC,EAAOmhC,EAAQgE,GAcnE,OAbAnlC,GAASA,EACTmhC,GAAkB,EACbgE,GAAUN,EAAStjC,KAAMvB,EAAOmhC,EAAQ,EAAG,YAAa,YAEzDnD,EAAOC,qBACT18B,KAAK4/B,GAAkB,IAARnhC,EACfuB,KAAK4/B,EAAS,GAAKnhC,IAAU,EAC7BuB,KAAK4/B,EAAS,GAAKnhC,IAAU,GAC7BuB,KAAK4/B,EAAS,GAAKnhC,IAAU,IAE7BglC,EAAkBzjC,KAAMvB,EAAOmhC,GAAQ,GAGlCA,EAAS,GAGlBnD,EAAO58B,UAAUkmC,aAAe,SAAsBtnC,EAAOmhC,EAAQgE,GAenE,OAdAnlC,GAASA,EACTmhC,GAAkB,EACbgE,GAAUN,EAAStjC,KAAMvB,EAAOmhC,EAAQ,EAAG,YAAa,YACzDnhC,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAExCg+B,EAAOC,qBACT18B,KAAK4/B,GAAUnhC,IAAU,GACzBuB,KAAK4/B,EAAS,GAAKnhC,IAAU,GAC7BuB,KAAK4/B,EAAS,GAAKnhC,IAAU,EAC7BuB,KAAK4/B,EAAS,GAAa,IAARnhC,GAEnBglC,EAAkBzjC,KAAMvB,EAAOmhC,GAAQ,GAGlCA,EAAS,GAiBlBnD,EAAO58B,UAAUmmC,aAAe,SAAsBvnC,EAAOmhC,EAAQgE,GACnE,OAAOD,EAAW3jC,KAAMvB,EAAOmhC,GAAQ,EAAMgE,IAG/CnH,EAAO58B,UAAUomC,aAAe,SAAsBxnC,EAAOmhC,EAAQgE,GACnE,OAAOD,EAAW3jC,KAAMvB,EAAOmhC,GAAQ,EAAOgE,IAYhDnH,EAAO58B,UAAUqmC,cAAgB,SAAuBznC,EAAOmhC,EAAQgE,GACrE,OAAOC,EAAY7jC,KAAMvB,EAAOmhC,GAAQ,EAAMgE,IAGhDnH,EAAO58B,UAAUsmC,cAAgB,SAAuB1nC,EAAOmhC,EAAQgE,GACrE,OAAOC,EAAY7jC,KAAMvB,EAAOmhC,GAAQ,EAAOgE,IAIjDnH,EAAO58B,UAAU+9B,KAAO,SAAc8E,EAAQ0D,EAAa/H,EAAOC,GAOhE,GANKD,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAMt+B,KAAKL,QAC9BymC,GAAe1D,EAAO/iC,SAAQymC,EAAc1D,EAAO/iC,QAClDymC,IAAaA,EAAc,GAC5B9H,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAE9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlBqE,EAAO/iC,QAAgC,IAAhBK,KAAKL,OAAc,OAAO,EAErD,GAAIymC,EAAc,EAChB,MAAM,IAAIxJ,WAAW,6BAGvB,GAAIyB,EAAQ,GAAKA,GAASr+B,KAAKL,OAAQ,MAAM,IAAIi9B,WAAW,6BAC5D,GAAI0B,EAAM,EAAG,MAAM,IAAI1B,WAAW,2BAE9B0B,EAAMt+B,KAAKL,SAAQ2+B,EAAMt+B,KAAKL,QAE9B+iC,EAAO/iC,OAASymC,EAAc9H,EAAMD,IACtCC,EAAMoE,EAAO/iC,OAASymC,EAAc/H,GAGtC,IACI7+B,EADAk+B,EAAMY,EAAMD,EAGhB,GAAIr+B,OAAS0iC,GAAUrE,EAAQ+H,GAAeA,EAAc9H,EAE1D,IAAK9+B,EAAIk+B,EAAM,EAAGl+B,GAAK,IAAKA,EAC1BkjC,EAAOljC,EAAI4mC,GAAepmC,KAAKR,EAAI6+B,QAEhC,GAAIX,EAAM,MAASjB,EAAOC,oBAE/B,IAAKl9B,EAAI,EAAGA,EAAIk+B,IAAOl+B,EACrBkjC,EAAOljC,EAAI4mC,GAAepmC,KAAKR,EAAI6+B,QAGrCnO,WAAWrwB,UAAUuB,IAAItB,KAAK4iC,EAAQ1iC,KAAK0hC,SAASrD,EAAOA,EAAQX,GAAM0I,GAG3E,OAAO1I,GAOTjB,EAAO58B,UAAUmiC,KAAO,SAAcnE,EAAKQ,EAAOC,EAAKjB,GAErD,GAAmB,iBAARQ,EAAkB,CAU3B,GATqB,iBAAVQ,GACThB,EAAWgB,EACXA,EAAQ,EACRC,EAAMt+B,KAAKL,QACa,iBAAR2+B,IAChBjB,EAAWiB,EACXA,EAAMt+B,KAAKL,QAGM,IAAfk+B,EAAIl+B,OAAc,CACpB,IAAIya,EAAOyjB,EAAI70B,WAAW,GAEtBoR,EAAO,MACTyjB,EAAMzjB,GAIV,QAAiB9b,IAAb++B,GAA8C,iBAAbA,EACnC,MAAM,IAAI5Y,UAAU,6BAGtB,GAAwB,iBAAb4Y,IAA0BZ,EAAOa,WAAWD,GACrD,MAAM,IAAI5Y,UAAU,qBAAuB4Y,OAErB,iBAARQ,IAChBA,GAAY,KAId,GAAIQ,EAAQ,GAAKr+B,KAAKL,OAAS0+B,GAASr+B,KAAKL,OAAS2+B,EACpD,MAAM,IAAI1B,WAAW,sBAGvB,GAAI0B,GAAOD,EACT,OAAOr+B,KAMT,IAAIR,EAEJ,GALA6+B,KAAkB,EAClBC,OAAchgC,IAARggC,EAAoBt+B,KAAKL,OAAS2+B,IAAQ,EAC3CT,IAAKA,EAAM,GAGG,iBAARA,EACT,IAAKr+B,EAAI6+B,EAAO7+B,EAAI8+B,IAAO9+B,EACzBQ,KAAKR,GAAKq+B,MAEP,CACL,IAAIsF,EAAQ1G,EAAOgB,SAASI,GAAOA,EAAMK,EAAY,IAAIzB,EAAOoB,EAAKR,GAAUz2B,YAC3E82B,EAAMyF,EAAMxjC,OAEhB,IAAKH,EAAI,EAAGA,EAAI8+B,EAAMD,IAAS7+B,EAC7BQ,KAAKR,EAAI6+B,GAAS8E,EAAM3jC,EAAIk+B,GAIhC,OAAO19B,MAKT,IAAIqmC,EAAoB,qBAoBxB,SAASnD,EAAMzjC,GACb,OAAIA,EAAI,GAAW,IAAMA,EAAEmH,SAAS,IAC7BnH,EAAEmH,SAAS,IAGpB,SAASs3B,EAAYpO,EAAQ2Q,GAE3B,IAAIU,EADJV,EAAQA,GAAS6F,IAMjB,IAJA,IAAI3mC,EAASmwB,EAAOnwB,OAChB4mC,EAAgB,KAChBpD,EAAQ,GAEH3jC,EAAI,EAAGA,EAAIG,IAAUH,EAAG,CAG/B,IAFA2hC,EAAYrR,EAAO9mB,WAAWxJ,IAEd,OAAU2hC,EAAY,MAAQ,CAE5C,IAAKoF,EAAe,CAElB,GAAIpF,EAAY,MAAQ,EAEjBV,GAAS,IAAM,GAAG0C,EAAMrhC,KAAK,IAAM,IAAM,KAC9C,SACK,GAAItC,EAAI,IAAMG,EAAQ,EAEtB8gC,GAAS,IAAM,GAAG0C,EAAMrhC,KAAK,IAAM,IAAM,KAC9C,SAIFykC,EAAgBpF,EAChB,SAIF,GAAIA,EAAY,MAAQ,EACjBV,GAAS,IAAM,GAAG0C,EAAMrhC,KAAK,IAAM,IAAM,KAC9CykC,EAAgBpF,EAChB,SAIFA,EAAkE,OAArDoF,EAAgB,OAAU,GAAKpF,EAAY,YAC/CoF,IAEJ9F,GAAS,IAAM,GAAG0C,EAAMrhC,KAAK,IAAM,IAAM,KAKhD,GAFAykC,EAAgB,KAEZpF,EAAY,IAAM,CACpB,IAAKV,GAAS,GAAK,EAAG,MACtB0C,EAAMrhC,KAAKq/B,QACN,GAAIA,EAAY,KAAO,CAC5B,IAAKV,GAAS,GAAK,EAAG,MACtB0C,EAAMrhC,KAAKq/B,GAAa,EAAM,IAAkB,GAAZA,EAAmB,UAClD,GAAIA,EAAY,MAAS,CAC9B,IAAKV,GAAS,GAAK,EAAG,MACtB0C,EAAMrhC,KAAKq/B,GAAa,GAAM,IAAMA,GAAa,EAAM,GAAO,IAAkB,GAAZA,EAAmB,SAClF,MAAIA,EAAY,SAIrB,MAAM,IAAI96B,MAAM,sBAHhB,IAAKo6B,GAAS,GAAK,EAAG,MACtB0C,EAAMrhC,KAAKq/B,GAAa,GAAO,IAAMA,GAAa,GAAM,GAAO,IAAMA,GAAa,EAAM,GAAO,IAAkB,GAAZA,EAAmB,MAM5H,OAAOgC,EA8BT,SAAShF,EAAcvuB,GACrB,OAAO0sB,EAAOkK,YApHhB,SAAqB52B,GAInB,IAFAA,EAWF,SAAoBA,GAClB,OAAIA,EAAI62B,KAAa72B,EAAI62B,OAClB72B,EAAImgB,QAAQ,aAAc,IAb3B2W,CAAW92B,GAAKmgB,QAAQsW,EAAmB,KAEzC1mC,OAAS,EAAG,MAAO,GAE3B,KAAOiQ,EAAIjQ,OAAS,GAAM,GACxBiQ,GAAY,IAGd,OAAOA,EA0GmB+2B,CAAY/2B,IAGxC,SAASswB,EAAW0G,EAAKC,EAAKjH,EAAQjgC,GACpC,IAAK,IAAIH,EAAI,EAAGA,EAAIG,KACdH,EAAIogC,GAAUiH,EAAIlnC,QAAUH,GAAKonC,EAAIjnC,UADbH,EAE5BqnC,EAAIrnC,EAAIogC,GAAUgH,EAAIpnC,GAGxB,OAAOA,I,wGC3xDLsnC,EAEJ,WACE,SAASA,IAEP9mC,KAAK+mC,QAAU,IAAI,IAAO,iBAsL5B,OAnLA3nC,OAAOwD,eAAekkC,EAAmBjnC,UAAW,gBAAiB,CAInEkB,IAAK,WACH,OAAOf,KAAKgnC,gBAEdlkC,YAAY,EACZC,cAAc,IAehB+jC,EAAmBjnC,UAAUonC,SAAW,SAAUC,EAAUpb,GAC1D,IAAI3rB,EAAQH,KAcZ,YAZiB,IAAbknC,IACFA,EAAW,2BAGC,IAAVpb,IACFA,EAAQ,KAGV9rB,KAAK+mC,QAAQxZ,MAAM,eAAiB2Z,GAEpClnC,KAAK+mC,QAAQxZ,MAAM,yCAA2CzB,GAEvD,IAAItrB,SAAQ,SAAUsf,EAASwG,GACpC,IAAI/e,aAAa,kBAAmBA,WAyBlC,OAAO+e,EAAO,IAAIjgB,MAAM,iCAxBxBkB,UAAU4/B,cAAcF,SAASC,EAAU,CACzCpb,MAAOA,IACNzL,MAAK,SAAU+mB,GAehB,OAdIA,EAAaC,WACflnC,EAAM6mC,eAAiBI,EAAaC,WAC3BD,EAAaE,QACtBnnC,EAAM6mC,eAAiBI,EAAaE,QAC3BF,EAAaG,SACtBpnC,EAAM6mC,eAAiBI,EAAaG,QAGtCpnC,EAAMqnC,cAAgBJ,EAEtBjnC,EAAMsnC,kBAENtnC,EAAM4mC,QAAQxZ,MAAM,wCAA0C6Z,GAEvDtnB,EAAQsnB,MACd1mC,OAAM,SAAUumB,GAGjB,OAFA9mB,EAAM4mC,QAAQxZ,MAAM,sCAAwCtG,GAErDX,EAAOW,UAoBtB6f,EAAmBjnC,UAAU6nC,WAAa,SAAUC,GAClD,IAAIxnC,EAAQH,KAEZ,IAAKA,KAAKwnC,cAAe,MAAM,IAAInhC,MAAM,iCAEzC,OADArG,KAAK4nC,WAAaD,EACX,IAAInnC,SAAQ,SAAUsf,EAASwG,GACpC,KAAI,UAAgBnkB,UA0BlB,OAAOmkB,EAAO,IAAIjgB,MAAM,iCAzBxBlG,EAAMqnC,cAAcK,YAAYC,kBAAkBznB,MAAK,SAAU0nB,GAC/D,IAAIA,EASF,OAFA5nC,EAAM4mC,QAAQxZ,MAAM,kCAEbptB,EAAMqnC,cAAcK,YAAYG,UAAU,CAC/CC,iBAAiB,EACjBC,qBAAsB/nC,EAAMgoC,oBAAoBR,KAC/CtnB,MAAK,SAAU0nB,GAChB5nC,EAAMioC,cAAgBL,EAEtB5nC,EAAM4mC,QAAQxZ,MAAM,oBAAsBvuB,KAAKsC,UAAUymC,IAEzDjoB,EAAQioB,MACPrnC,OAAM,SAAUumB,GACjB9mB,EAAM4mC,QAAQ9f,MAAMA,MAlBtB9mB,EAAMioC,cAAgBL,EAEtB5nC,EAAM4mC,QAAQxZ,MAAM,+BAAiCvuB,KAAKsC,UAAUymC,IAEpEjoB,EAAQioB,UA6BlBjB,EAAmBjnC,UAAUsoC,oBAAsB,SAAUE,GAM3D,IALA,IACI/L,GAAU+L,EADA,IAAIC,QAAQ,EAAID,EAAa1oC,OAAS,GAAK,IACnBowB,QAAQ,MAAO,KAAKA,QAAQ,KAAM,KACpEwY,EAAUhmC,OAAOimC,KAAKlM,GACtBmM,EAAc,IAAIvY,WAAWqY,EAAQ5oC,QAEhCH,EAAI,EAAGA,EAAI+oC,EAAQ5oC,SAAUH,EACpCipC,EAAYjpC,GAAK+oC,EAAQv/B,WAAWxJ,GAGtC,OAAOipC,GAYT3B,EAAmBjnC,UAAU6oC,KAAO,SAAUpvB,GACxCtZ,KAAKgnC,gBACPhnC,KAAKgnC,eAAe2B,YAA+B,iBAAZrvB,EAAuBta,KAAKsC,UAAUgY,GAAWA,IAS5FwtB,EAAmBjnC,UAAU4nC,gBAAkB,WAC7C,IAAItnC,EAAQH,KAEZA,KAAKgnC,eAAe4B,iBAAiB,eAAe,SAAU9d,GAC5D,IAAI+d,EAAe1oC,EAAM6mC,eAAe1a,MAExCnsB,EAAM4mC,QAAQxZ,MAAM,8BAAgCsb,GAEhDxM,EAAA,cAAyD,mBAA7BA,EAAA,qBAC9BA,EAAA,oBAAyB,CACvBr7B,KAAM,gBACN+d,WAAY,CACVuN,MAAOuc,QAMf7oC,KAAKgnC,eAAe4B,iBAAiB,WAAW,SAAU9d,GACxD3qB,EAAM4mC,QAAQxZ,MAAM,gCAAkCzC,OAInDgc,EAzLT,G,WCbWgC,EAAgB,CACzBtyB,UAAW,oBACXuyB,gBAAiB,QACjBC,YAAa,KACbC,WAAY,OACZC,gBAAiB,EACjBC,iBAAkB,GAGlB7yB,SAAS,I,SAAI,KAAgBT,cAOxB,SAASuzB,EAAcx5B,GAC5B,IAAI6mB,EAAM,EACVA,EAAM7mB,EAAIjQ,OAEV,IAAK,IAAIH,EAAIoQ,EAAIjQ,OAAQH,GAAK,EAAGA,GAAK,EAAG,CACvC,IAAI6pC,EAAWz5B,EAAI5G,WAAWxJ,GAE1B6pC,EAAW,KAAQA,GAAY,KACjC5S,GAAO,EACE4S,EAAW,MAASA,GAAY,QACzC5S,GAAO,GAIL4S,GAAY,OAAUA,GAAY,QACpC7pC,GAAK,GAIT,OAAOi3B,EAMF,SAAS6S,IAEd,OADe,IAAI5nC,MACH6nC,UAMX,SAASC,EAAU/qC,GACxB,OAAIohC,OAAO2J,UACF3J,OAAO2J,UAAU/qC,GAM5B,SAAoBA,GAClB,MAAwB,iBAAVA,GAAsBskC,SAAStkC,IAAU2J,KAAKC,MAAM5J,KAAWA,EAJtEgrC,CAAWhrC,GAWpB,ICrEM6xB,EDqEFhuB,EAAQ,GEpER0oB,GFwEJ,WACE,SAAS0e,KAETA,EAAY1mC,MAAQ,WAClBV,EAAQ,IAGVonC,EAAYlmC,QAAU,SAAUH,GAC9B,OAAOf,EAAMe,IAAQ,MAGvBqmC,EAAY1lC,QAAU,SAAUX,EAAK5E,GACnC6D,EAAMe,GAAO5E,GAGfirC,EAAYnmC,WAAa,SAAUF,UAC1Bf,EAAMe,IAhBjB,GExEa,IAAI,IAAO,iBAMpBsmC,EAEJ,WAKE,SAASA,EAAaze,GACpBlrB,KAAKkrB,OAAS9rB,OAAOC,OAAO,GAAI6rB,GAChClrB,KAAK4pC,gBAAkB5pC,KAAKkrB,OAAO1U,UAAY,UAC/CxW,KAAK6pC,cAmGP,OAhGAF,EAAa9pC,UAAUkzB,cAAgB,WACrC,MAAO,SAGT4W,EAAa9pC,UAAUgqC,YAAc,WAE9BL,EAAUxpC,KAAKkrB,OAAO6d,mBACzB/d,EAAO/D,MAAM,yFACbjnB,KAAKkrB,OAAO6d,gBAAkBD,EAAcC,iBAGzCS,EAAUxpC,KAAKkrB,OAAO8d,eACzBhe,EAAO/D,MAAM,qFACbjnB,KAAKkrB,OAAO8d,YAAcF,EAAcE,aAGrCQ,EAAUxpC,KAAKkrB,OAAO+d,cACzBje,EAAO/D,MAAM,oFACbjnB,KAAKkrB,OAAO+d,WAAaH,EAAcG,YAGpCO,EAAUxpC,KAAKkrB,OAAOge,mBACzBle,EAAO/D,MAAM,yFACbjnB,KAAKkrB,OAAOge,gBAAkBJ,EAAcI,iBAG1ClpC,KAAKkrB,OAAO8d,YAAchpC,KAAKkrB,OAAO6d,kBACxC/d,EAAO/D,MAAM,uGACbjnB,KAAKkrB,OAAO8d,YAAcF,EAAcE,cAGtChpC,KAAKkrB,OAAOge,gBAAkB,GAAKlpC,KAAKkrB,OAAOge,gBAAkB,KACnEle,EAAO/D,MAAM,8FACbjnB,KAAKkrB,OAAOge,gBAAkBJ,EAAcI,kBAG1CrJ,OAAO7/B,KAAKkrB,OAAOie,kBAAoB,GAAKtJ,OAAO7/B,KAAKkrB,OAAOie,kBAAoB,KACrFne,EAAO/D,MAAM,+FACbjnB,KAAKkrB,OAAOie,iBAAmBL,EAAcK,kBAM3CnpC,KAAKkrB,OAAO6d,gBAFC,UAGf/d,EAAO/D,MAAM,6FACbjnB,KAAKkrB,OAAO6d,gBAAkBD,EAAcC,kBAYhDY,EAAa9pC,UAAUiqC,cAAgB,SAAUzmC,EAAK5E,EAAOC,GAC3D,IAAI+3B,EAAM,CACRpzB,IAAKA,EACLqB,KAAMjG,EACNsrC,UAAWT,IACXU,YAAaV,IACbW,SAAUvrC,EAAQurC,SAClBxoC,QAAS/C,EAAQ+C,QACjBkvB,YAAalyB,EACbyrC,SAAU,GAKZ,OAHAzT,EAAIyT,SAAWd,EAAcpqC,KAAKsC,UAAUm1B,IAE5CA,EAAIyT,SAAWd,EAAcpqC,KAAKsC,UAAUm1B,IACrCA,GAUTkT,EAAa9pC,UAAU8yB,UAAY,SAAUzH,GAC3C,OAAKA,GAIDA,EAAO1U,WACTwU,EAAOyK,KAAK,qCAGdz1B,KAAKkrB,OAAS9rB,OAAOC,OAAO,GAAIW,KAAKkrB,OAAQA,EAAQA,EAAOif,OAC5DnqC,KAAK6pC,cACE7pC,KAAKkrB,QATHlrB,KAAKkrB,QAYTye,EA3GT,GDVIpZ,GACED,EAAiB,SAAuB5jB,EAAGvF,GAW7C,OAVAmpB,EAAiBlxB,OAAOsmB,gBAAkB,CACxC/S,UAAW,cACA1P,OAAS,SAAUyJ,EAAGvF,GACjCuF,EAAEiG,UAAYxL,IACX,SAAUuF,EAAGvF,GAChB,IAAK,IAAIvH,KAAKuH,EACRA,EAAEhJ,eAAeyB,KAAI8M,EAAE9M,GAAKuH,EAAEvH,MAIhB8M,EAAGvF,IAGpB,SAAUuF,EAAGvF,GAGlB,SAASqpB,IACPxwB,KAAK0S,YAAchG,EAHrB4jB,EAAe5jB,EAAGvF,GAMlBuF,EAAE7M,UAAkB,OAANsH,EAAa/H,OAAOqD,OAAO0E,IAAMqpB,EAAG3wB,UAAYsH,EAAEtH,UAAW,IAAI2wB,KAO/E,EAAS,IAAI,IAAO,SAmeb4Z,EAAsB,IA5djC,SAAU1Z,GAQR,SAAS2Z,EAAyBnf,GAChC,IAAI/qB,EAAQH,KAERsqC,EAAcpf,EAAS9rB,OAAOC,OAAO,GAAIypC,EAAe5d,GAAU4d,EAMtE,OALA3oC,EAAQuwB,EAAO5wB,KAAKE,KAAMsqC,IAAgBtqC,MACpCkrB,OAAO5U,QAAUg0B,EAAYh0B,QACnCnW,EAAMqD,QAAUrD,EAAMqD,QAAQ8hB,KAAKnlB,GACnCA,EAAM6D,QAAU7D,EAAM6D,QAAQshB,KAAKnlB,GACnCA,EAAMoD,WAAapD,EAAMoD,WAAW+hB,KAAKnlB,GAClCA,EAucT,OAvdAowB,EAAU8Z,EAA0B3Z,GA0BpC2Z,EAAyBxqC,UAAU0qC,wBAA0B,SAAUC,GACrE,IAAIC,EAAUzqC,KAAK0qC,kBACnB1qC,KAAKkrB,OAAO5U,QAAQtS,QAAQhE,KAAK4pC,iBAAkBa,EAAUD,GAAQ5jC,aAUvEyjC,EAAyBxqC,UAAU8qC,wBAA0B,SAAUH,GACrE,IAAIC,EAAUzqC,KAAK0qC,kBACnB1qC,KAAKkrB,OAAO5U,QAAQtS,QAAQhE,KAAK4pC,iBAAkBa,EAAUD,GAAQ5jC,aAavEyjC,EAAyBxqC,UAAU+qC,aAAe,SAAUC,EAAMC,GAGhE,OAFAD,EAAKb,YAAcV,IACnBtpC,KAAKkrB,OAAO5U,QAAQtS,QAAQ8mC,EAAa9rC,KAAKsC,UAAUupC,IACjDA,GAYTR,EAAyBxqC,UAAUkrC,WAAa,SAAU1nC,GACxD,IAAI2nC,EAAOhrC,KAAKkrB,OAAO5U,QAAQ9S,QAAQH,GACnCwnC,EAAO7rC,KAAKC,MAAM+rC,GAEtB,OAAI1B,KAAiBuB,EAAKppC,SAe5B4oC,EAAyBxqC,UAAUorC,YAAc,SAAUH,EAAa9a,GACtE,IAAIkb,EAAWlb,GAAchxB,KAAKC,MAAMe,KAAKkrB,OAAO5U,QAAQ9S,QAAQsnC,IAAcZ,SAElFlqC,KAAKuqC,wBAAwBW,GAG7BlrC,KAAKkrB,OAAO5U,QAAQ/S,WAAWunC,IAYjCT,EAAyBxqC,UAAUsrC,SAAW,SAAUL,EAAaD,GAEnE7qC,KAAK2qC,wBAAwBE,EAAKX,UAElC,IACElqC,KAAKkrB,OAAO5U,QAAQtS,QAAQ8mC,EAAa9rC,KAAKsC,UAAUupC,IACxD,MAAOO,GAEPprC,KAAKuqC,wBAAwBM,EAAKX,UAElC,EAAOjjB,MAAM,sBAAwBmkB,KAazCf,EAAyBxqC,UAAUwrC,WAAa,SAAUH,GACxD,IAAII,EAAgBtrC,KAAK0qC,kBAAoBQ,EAAWlrC,KAAKkrB,OAAO6d,gBAChEwC,GAAuB,EAAIvrC,KAAKkrB,OAAOie,kBAAoBnpC,KAAKkrB,OAAO6d,gBAC3E,OAAOuC,EAAgBC,EAAsBD,EAAgBC,GAY/DlB,EAAyBxqC,UAAU2rC,aAAe,SAAUN,GAC1D,OAAOA,EAAWlrC,KAAK0qC,kBAAoB1qC,KAAKkrB,OAAO6d,iBAYzDsB,EAAyBxqC,UAAU4rC,eAAiB,WAIlD,IAHA,IAAI7nC,EAAO,GACP8nC,EAAa,GAERlsC,EAAI,EAAGA,EAAIQ,KAAKkrB,OAAO5U,QAAQ3W,OAAQH,GAAK,EACnDksC,EAAW5pC,KAAK9B,KAAKkrB,OAAO5U,QAAQjT,IAAI7D,IAI1C,IAASA,EAAI,EAAGA,EAAIksC,EAAW/rC,OAAQH,GAAK,EAAG,CAC7C,IAAI6D,EAAMqoC,EAAWlsC,GAEsB,IAAvC6D,EAAIpB,QAAQjC,KAAKkrB,OAAO1U,YAAoBnT,IAAQrD,KAAK4pC,kBACvD5pC,KAAK+qC,WAAW1nC,GAClBrD,KAAKirC,YAAY5nC,GAEjBO,EAAK9B,KAAKuB,IAKhB,OAAOO,GAaTymC,EAAyBxqC,UAAU8rC,aAAe,SAAU/nC,EAAMgoC,GAIhE,IAHA,IAAIC,EAAQ,GACRC,EAAeF,EAEVpsC,EAAI,EAAGA,EAAIoE,EAAKjE,OAAQH,GAAK,EAAG,CACvC,IAAIq+B,EAAM79B,KAAKkrB,OAAO5U,QAAQ9S,QAAQI,EAAKpE,IAE3C,GAAW,MAAPq+B,EAAa,CACf,IAAIgN,EAAO7rC,KAAKC,MAAM4+B,GACtBgO,EAAM/pC,KAAK+oC,IAMfgB,EAAME,MAAK,SAAU7kC,EAAGC,GACtB,OAAID,EAAE+iC,SAAW9iC,EAAE8iC,UACT,EACC/iC,EAAE+iC,SAAW9iC,EAAE8iC,SACjB,EAEH/iC,EAAE8iC,YAAc7iC,EAAE6iC,aACZ,EACI,KAIlB,IAASxqC,EAAI,EAAGA,EAAIqsC,EAAMlsC,OAAQH,GAAK,EAMrC,GAJAQ,KAAKirC,YAAYY,EAAMrsC,GAAG6D,IAAKwoC,EAAMrsC,GAAG0qC,WAExC4B,GAAgBD,EAAMrsC,GAAG0qC,WAEL,EAClB,QAsBNG,EAAyBxqC,UAAUmE,QAAU,SAAUX,EAAK5E,EAAOC,GACjE,EAAOmyB,IAAI,oBAAsBxtB,EAAM,cAAgB5E,EAAQ,kBAAoBC,GACnF,IAAIosC,EAAc9qC,KAAKkrB,OAAO1U,UAAYnT,EAE1C,GAAIynC,IAAgB9qC,KAAKkrB,OAAO1U,WAAas0B,IAAgB9qC,KAAK4pC,gBAKlE,QAAqB,IAAVnrC,EAAX,CAKA,IAAIutC,EAAmB,CACrB/B,SAAUvrC,QAAgCJ,IAArBI,EAAQurC,SAAyBvrC,EAAQurC,SAAWjqC,KAAKkrB,OAAOge,gBACrFznC,QAAS/C,QAA+BJ,IAApBI,EAAQ+C,QAAwB/C,EAAQ+C,QAAUzB,KAAKkrB,OAAO+d,WAAaK,KAGjG,GAAI0C,EAAiB/B,SAAW,GAAK+B,EAAiB/B,SAAW,EAC/D,EAAOxU,KAAK,qFADd,CAKA,IAAIoV,EAAO7qC,KAAK8pC,cAAcgB,EAAarsC,EAAOutC,GAElD,GAAInB,EAAKX,SAAWlqC,KAAKkrB,OAAO8d,YAC9B,EAAOvT,KAAK,kBAAoBpyB,EAAM,gDAIxC,IAEE,IAAIw6B,EAAM79B,KAAKkrB,OAAO5U,QAAQ9S,QAAQsnC,GAOtC,GALIjN,GACF79B,KAAKirC,YAAYH,EAAa9rC,KAAKC,MAAM4+B,GAAKqM,UAI5ClqC,KAAKwrC,aAAaX,EAAKX,UAAW,CACpC,IAAI+B,EAAYjsC,KAAKyrC,iBAGrB,GAAIzrC,KAAKwrC,aAAaX,EAAKX,UAAW,CACpC,IAAI0B,EAAY5rC,KAAKqrC,WAAWR,EAAKX,UAErClqC,KAAK2rC,aAAaM,EAAWL,IAMjC5rC,KAAKmrC,SAASL,EAAaD,GAC3B,MAAO3rC,GACP,EAAOu2B,KAAK,mBAAqBv2B,UA7CjC,EAAOu2B,KAAK,mDALZ,EAAOA,KAAK,kDAsEhB4U,EAAyBxqC,UAAU2D,QAAU,SAAUH,EAAK3E,GAC1D,EAAOmyB,IAAI,oBAAsBxtB,EAAM,iBAAmB3E,GAC1D,IAAI+3B,EAAM,KACNqU,EAAc9qC,KAAKkrB,OAAO1U,UAAYnT,EAE1C,GAAIynC,IAAgB9qC,KAAKkrB,OAAO1U,WAAas0B,IAAgB9qC,KAAK4pC,gBAEhE,OADA,EAAOnU,KAAK,iDACL,KAGT,IAGE,GAAW,OAFXgB,EAAMz2B,KAAKkrB,OAAO5U,QAAQ9S,QAAQsnC,IAEjB,CACf,IAAI9qC,KAAK+qC,WAAWD,GAKb,CAEL,IAAID,EAAO7rC,KAAKC,MAAMw3B,GAEtB,OADAoU,EAAO7qC,KAAK4qC,aAAaC,EAAMC,IACnBpmC,KAPZ1E,KAAKirC,YAAYH,EAAa9rC,KAAKC,MAAMw3B,GAAKyT,UAE9CzT,EAAM,KASV,GAAI/3B,QAAgCJ,IAArBI,EAAQmD,SAAwB,CAC7C,IAAIg8B,EAAMn/B,EAAQmD,WAMlB,OAJY,OAARg8B,GACF79B,KAAKgE,QAAQX,EAAKw6B,EAAKn/B,GAGlBm/B,EAGT,OAAO,KACP,MAAO3+B,GAEP,OADA,EAAOu2B,KAAK,mBAAqBv2B,GAC1B,OAWXmrC,EAAyBxqC,UAAU0D,WAAa,SAAUF,GACxD,EAAOwtB,IAAI,uBAAyBxtB,GACpC,IAAIynC,EAAc9qC,KAAKkrB,OAAO1U,UAAYnT,EAE1C,GAAIynC,IAAgB9qC,KAAKkrB,OAAO1U,WAAas0B,IAAgB9qC,KAAK4pC,gBAIlE,IACE,IAAI/L,EAAM79B,KAAKkrB,OAAO5U,QAAQ9S,QAAQsnC,GAElCjN,GACF79B,KAAKirC,YAAYH,EAAa9rC,KAAKC,MAAM4+B,GAAKqM,UAEhD,MAAOhrC,GACP,EAAOu2B,KAAK,sBAAwBv2B,KAUxCmrC,EAAyBxqC,UAAUmD,MAAQ,WACzC,EAAO6tB,IAAI,eAGX,IAFA,IAAIqb,EAAe,GAEV1sC,EAAI,EAAGA,EAAIQ,KAAKkrB,OAAO5U,QAAQ3W,OAAQH,GAAK,EAAG,CACtD,IAAI6D,EAAMrD,KAAKkrB,OAAO5U,QAAQjT,IAAI7D,GAES,IAAvC6D,EAAIpB,QAAQjC,KAAKkrB,OAAO1U,YAC1B01B,EAAapqC,KAAKuB,GAItB,IACE,IAAS7D,EAAI,EAAGA,EAAI0sC,EAAavsC,OAAQH,GAAK,EAC5CQ,KAAKkrB,OAAO5U,QAAQ/S,WAAW2oC,EAAa1sC,IAE9C,MAAON,GACP,EAAOu2B,KAAK,iBAAmBv2B,KAUnCmrC,EAAyBxqC,UAAUssC,WAAa,WAG9C,IAFA,IAAIvoC,EAAO,GAEFpE,EAAI,EAAGA,EAAIQ,KAAKkrB,OAAO5U,QAAQ3W,OAAQH,GAAK,EAAG,CACtD,IAAI6D,EAAMrD,KAAKkrB,OAAO5U,QAAQjT,IAAI7D,GAES,IAAvC6D,EAAIpB,QAAQjC,KAAKkrB,OAAO1U,YAAoBnT,IAAQrD,KAAK4pC,iBAC3DhmC,EAAK9B,KAAKuB,EAAI+oC,UAAUpsC,KAAKkrB,OAAO1U,UAAU7W,SAIlD,OAAOiE,GASTymC,EAAyBxqC,UAAU6qC,gBAAkB,WACnD,IAAIjU,EAAMz2B,KAAKkrB,OAAO5U,QAAQ9S,QAAQxD,KAAK4pC,iBAO3C,OALKnT,IACHz2B,KAAKkrB,OAAO5U,QAAQtS,QAAQhE,KAAK4pC,gBAAiB,KAClDnT,EAAM,KAGDoJ,OAAOpJ,IAUhB4T,EAAyBxqC,UAAUwsC,eAAiB,SAAUnhB,GAM5D,OALKA,EAAO1U,WAAa0U,EAAO1U,YAAcsyB,EAActyB,YAC1D,EAAOyQ,MAAM,uDACbiE,EAAO1U,UAAY8yB,EAAY1iC,YAG1B,IAAIyjC,EAAyBnf,IAG/Bmf,EAxdT,CAydEV,IErfF,IACAtN,EAAA,YAAiB+N,G,kBCFjB/N,EAAA,QAAe/J,EAAA,EACf+J,EAAA,SAAgB,EAChBA,EAAA,iBAAwB,EAmBxB,MAAeA,EAAO,I,iCCtCtBmF,EAAQnR,WAkCR,SAAoBic,GAClB,IAAIC,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAC3B,OAAsC,GAA9BE,EAAWC,GAAuB,EAAIA,GArChDlL,EAAQgF,YA4CR,SAAqB8F,GACnB,IAAIK,EAQAntC,EAPA+sC,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GACvBpN,EAAM,IAAIyN,EAThB,SAAqBN,EAAKG,EAAUC,GAClC,OAAsC,GAA9BD,EAAWC,GAAuB,EAAIA,EAQ5BG,CAAYP,EAAKG,EAAUC,IACzCI,EAAU,EAEVpP,EAAMgP,EAAkB,EAAID,EAAW,EAAIA,EAG/C,IAAKjtC,EAAI,EAAGA,EAAIk+B,EAAKl+B,GAAK,EACxBmtC,EAAMI,EAAUT,EAAItjC,WAAWxJ,KAAO,GAAKutC,EAAUT,EAAItjC,WAAWxJ,EAAI,KAAO,GAAKutC,EAAUT,EAAItjC,WAAWxJ,EAAI,KAAO,EAAIutC,EAAUT,EAAItjC,WAAWxJ,EAAI,IACzJ2/B,EAAI2N,KAAaH,GAAO,GAAK,IAC7BxN,EAAI2N,KAAaH,GAAO,EAAI,IAC5BxN,EAAI2N,KAAmB,IAANH,EAGK,IAApBD,IACFC,EAAMI,EAAUT,EAAItjC,WAAWxJ,KAAO,EAAIutC,EAAUT,EAAItjC,WAAWxJ,EAAI,KAAO,EAC9E2/B,EAAI2N,KAAmB,IAANH,GAGK,IAApBD,IACFC,EAAMI,EAAUT,EAAItjC,WAAWxJ,KAAO,GAAKutC,EAAUT,EAAItjC,WAAWxJ,EAAI,KAAO,EAAIutC,EAAUT,EAAItjC,WAAWxJ,EAAI,KAAO,EACvH2/B,EAAI2N,KAAaH,GAAO,EAAI,IAC5BxN,EAAI2N,KAAmB,IAANH,GAGnB,OAAOxN,GAxETqC,EAAQX,cA2FR,SAAuBmM,GASrB,IARA,IAAIL,EACAjP,EAAMsP,EAAMrtC,OACZstC,EAAavP,EAAM,EAEnBwP,EAAQ,GACRC,EAAiB,MAGZ3tC,EAAI,EAAG4tC,EAAO1P,EAAMuP,EAAYztC,EAAI4tC,EAAM5tC,GAAK2tC,EACtDD,EAAMprC,KAAKurC,EAAYL,EAAOxtC,EAAGA,EAAI2tC,EAAiBC,EAAOA,EAAO5tC,EAAI2tC,IAIvD,IAAfF,GACFN,EAAMK,EAAMtP,EAAM,GAClBwP,EAAMprC,KAAKwrC,EAAOX,GAAO,GAAKW,EAAOX,GAAO,EAAI,IAAQ,OAChC,IAAfM,IACTN,GAAOK,EAAMtP,EAAM,IAAM,GAAKsP,EAAMtP,EAAM,GAC1CwP,EAAMprC,KAAKwrC,EAAOX,GAAO,IAAMW,EAAOX,GAAO,EAAI,IAAQW,EAAOX,GAAO,EAAI,IAAQ,MAGrF,OAAOO,EAAMlmC,KAAK,KA3GpB,IALA,IAAIsmC,EAAS,GACTP,EAAY,GACZH,EAA4B,oBAAf1c,WAA6BA,WAAajtB,MACvDmX,EAAO,mEAEF5a,EAAI,EAAGk+B,EAAMtjB,EAAKza,OAAQH,EAAIk+B,IAAOl+B,EAC5C8tC,EAAO9tC,GAAK4a,EAAK5a,GACjButC,EAAU3yB,EAAKpR,WAAWxJ,IAAMA,EAQlC,SAASgtC,EAAQF,GACf,IAAI5O,EAAM4O,EAAI3sC,OAEd,GAAI+9B,EAAM,EAAI,EACZ,MAAM,IAAIr3B,MAAM,kDAKlB,IAAIomC,EAAWH,EAAIrqC,QAAQ,KAG3B,OAFkB,IAAdwqC,IAAiBA,EAAW/O,GAEzB,CAAC+O,EADcA,IAAa/O,EAAM,EAAI,EAAI+O,EAAW,GAoD9D,SAASY,EAAYL,EAAO3O,EAAOC,GAIjC,IAHA,IAAIqO,EALmBY,EAMnBC,EAAS,GAEJhuC,EAAI6+B,EAAO7+B,EAAI8+B,EAAK9+B,GAAK,EAChCmtC,GAAOK,EAAMxtC,IAAM,GAAK,WAAawtC,EAAMxtC,EAAI,IAAM,EAAI,QAA0B,IAAfwtC,EAAMxtC,EAAI,IAC9EguC,EAAO1rC,KATFwrC,GADgBC,EAUOZ,IATT,GAAK,IAAQW,EAAOC,GAAO,GAAK,IAAQD,EAAOC,GAAO,EAAI,IAAQD,EAAa,GAANC,IAY9F,OAAOC,EAAOxmC,KAAK,IA3ErB+lC,EAAU,IAAI/jC,WAAW,IAAM,GAC/B+jC,EAAU,IAAI/jC,WAAW,IAAM,I,iCCN/Bw4B,EAAQ,EA+BR,SAAe5xB,EAAKlR,GAClB,GAAmB,iBAARkR,EACT,MAAM,IAAI6U,UAAU,iCAQtB,IALA,IAAIzmB,EAAM,GACNyvC,EAAM/uC,GAAW,GACjBgvC,EAAQ99B,EAAI1L,MAAMypC,GAClBC,EAAMH,EAAII,QAAUA,EAEfruC,EAAI,EAAGA,EAAIkuC,EAAM/tC,OAAQH,IAAK,CACrC,IAAIsuC,EAAOJ,EAAMluC,GACbuuC,EAASD,EAAK7rC,QAAQ,KAE1B,KAAI8rC,EAAS,GAAb,CAIA,IAAI1qC,EAAMyqC,EAAKlvC,OAAO,EAAGmvC,GAAQtH,OAC7B5I,EAAMiQ,EAAKlvC,SAASmvC,EAAQD,EAAKnuC,QAAQ8mC,OAEzC,KAAO5I,EAAI,KACbA,EAAMA,EAAIptB,MAAM,GAAI,IAIlBnS,MAAaN,EAAIqF,KACnBrF,EAAIqF,GAAO2qC,EAAUnQ,EAAK+P,KAI9B,OAAO5vC,GA7DTwjC,EAAQ,EAgFR,SAAmBxgC,EAAM68B,EAAKn/B,GAC5B,IAAI+uC,EAAM/uC,GAAW,GACjBuvC,EAAMR,EAAIS,QAAUA,EAExB,GAAmB,mBAARD,EACT,MAAM,IAAIxpB,UAAU,4BAGtB,IAAK0pB,EAAmB1mB,KAAKzmB,GAC3B,MAAM,IAAIyjB,UAAU,4BAGtB,IAAIhmB,EAAQwvC,EAAIpQ,GAEhB,GAAIp/B,IAAU0vC,EAAmB1mB,KAAKhpB,GACpC,MAAM,IAAIgmB,UAAU,2BAGtB,IAAI7U,EAAM5O,EAAO,IAAMvC,EAEvB,GAAI,MAAQgvC,EAAI9rC,OAAQ,CACtB,IAAIA,EAAS8rC,EAAI9rC,OAAS,EAC1B,GAAIq9B,MAAMr9B,GAAS,MAAM,IAAI0E,MAAM,6BACnCuJ,GAAO,aAAexH,KAAKC,MAAM1G,GAGnC,GAAI8rC,EAAI1kB,OAAQ,CACd,IAAKolB,EAAmB1mB,KAAKgmB,EAAI1kB,QAC/B,MAAM,IAAItE,UAAU,4BAGtB7U,GAAO,YAAc69B,EAAI1kB,OAG3B,GAAI0kB,EAAI1pC,KAAM,CACZ,IAAKoqC,EAAmB1mB,KAAKgmB,EAAI1pC,MAC/B,MAAM,IAAI0gB,UAAU,0BAGtB7U,GAAO,UAAY69B,EAAI1pC,KAGzB,GAAI0pC,EAAIhsC,QAAS,CACf,GAAuC,mBAA5BgsC,EAAIhsC,QAAQ2sC,YACrB,MAAM,IAAI3pB,UAAU,6BAGtB7U,GAAO,aAAe69B,EAAIhsC,QAAQ2sC,cAGhCX,EAAIY,WACNz+B,GAAO,cAGL69B,EAAInpC,SACNsL,GAAO,YAGT,GAAI69B,EAAIppC,SAAU,CAGhB,OAFuC,iBAAjBopC,EAAIppC,SAAwBopC,EAAIppC,SAASgW,cAAgBozB,EAAIppC,UAGjF,KAAK,EACHuL,GAAO,oBACP,MAEF,IAAK,MACHA,GAAO,iBACP,MAEF,IAAK,SACHA,GAAO,oBACP,MAEF,IAAK,OACHA,GAAO,kBACP,MAEF,QACE,MAAM,IAAI6U,UAAU,+BAI1B,OAAO7U,GA7JT,IAAIi+B,EAASS,mBACTJ,EAAS5gB,mBACTqgB,EAAkB,MASlBQ,EAAqB,wCA6JzB,SAASH,EAAUp+B,EAAKi+B,GACtB,IACE,OAAOA,EAAOj+B,GACd,MAAO1Q,GACP,OAAO0Q,K,oBC7LX,IAeM2+B,EAZFC,EAAOhN,SAYL+M,EAAWA,GAAY,SAAUnmC,EAAM9J,GAIzC,IAAImE,EAASrD,OAAOqD,QAAU,WAC5B,SAASgsC,KAGT,OAAO,SAAUzwC,GACf,IAAI0wC,EAIJ,OAHAD,EAAE5uC,UAAY7B,EACd0wC,EAAU,IAAID,EACdA,EAAE5uC,UAAY,KACP6uC,GATmB,GAiB1BC,EAAI,GAKJC,EAAQD,EAAEE,IAAM,GAKhBC,EAAOF,EAAME,KACR,CAmBLC,OAAQ,SAAgBC,GAEtB,IAAIN,EAAUjsC,EAAOzC,MAiBrB,OAfIgvC,GACFN,EAAQO,MAAMD,GAIXN,EAAQvwC,eAAe,SAAW6B,KAAKkvC,OAASR,EAAQQ,OAC3DR,EAAQQ,KAAO,WACbR,EAAQS,OAAOD,KAAKnvC,MAAMC,KAAMN,aAKpCgvC,EAAQQ,KAAKrvC,UAAY6uC,EAEzBA,EAAQS,OAASnvC,KACV0uC,GAeTjsC,OAAQ,WACN,IAAI4iB,EAAWrlB,KAAK+uC,SAEpB,OADA1pB,EAAS6pB,KAAKnvC,MAAMslB,EAAU3lB,WACvB2lB,GAeT6pB,KAAM,aAaND,MAAO,SAAeG,GACpB,IAAK,IAAIC,KAAgBD,EACnBA,EAAWjxC,eAAekxC,KAC5BrvC,KAAKqvC,GAAgBD,EAAWC,IAKhCD,EAAWjxC,eAAe,cAC5B6B,KAAK4G,SAAWwoC,EAAWxoC,WAa/B0oC,MAAO,WACL,OAAOtvC,KAAKkvC,KAAKrvC,UAAUkvC,OAAO/uC,QAYpCuG,EAAYqoC,EAAMroC,UAAYuoC,EAAKC,OAAO,CAa5CG,KAAM,SAAc1oC,EAAOC,GACzBD,EAAQxG,KAAKwG,MAAQA,GAAS,GAG5BxG,KAAKyG,SADHA,GAAYnI,EACEmI,EAEe,EAAfD,EAAM7G,QAiB1BiH,SAAU,SAAkB2oC,GAC1B,OAAQA,GAAWC,GAAKluC,UAAUtB,OAcpCivB,OAAQ,SAAgBpoB,GAEtB,IAAI4oC,EAAYzvC,KAAKwG,MACjBkpC,EAAY7oC,EAAUL,MACtBmpC,EAAe3vC,KAAKyG,SACpBmpC,EAAe/oC,EAAUJ,SAI7B,GAFAzG,KAAK0K,QAEDilC,EAAe,EAEjB,IAAK,IAAInwC,EAAI,EAAGA,EAAIowC,EAAcpwC,IAAK,CACrC,IAAIqwC,EAAWH,EAAUlwC,IAAM,KAAO,GAAKA,EAAI,EAAI,EAAI,IACvDiwC,EAAUE,EAAenwC,IAAM,IAAMqwC,GAAY,IAAMF,EAAenwC,GAAK,EAAI,OAIjF,IAASA,EAAI,EAAGA,EAAIowC,EAAcpwC,GAAK,EACrCiwC,EAAUE,EAAenwC,IAAM,GAAKkwC,EAAUlwC,IAAM,GAMxD,OAFAQ,KAAKyG,UAAYmpC,EAEV5vC,MAUT0K,MAAO,WAEL,IAAIlE,EAAQxG,KAAKwG,MACbC,EAAWzG,KAAKyG,SAEpBD,EAAMC,IAAa,IAAM,YAAc,GAAKA,EAAW,EAAI,EAC3DD,EAAM7G,OAASyI,EAAK0nC,KAAKrpC,EAAW,IAYtC6oC,MAAO,WACL,IAAIA,EAAQR,EAAKQ,MAAMxvC,KAAKE,MAE5B,OADAsvC,EAAM9oC,MAAQxG,KAAKwG,MAAMiK,MAAM,GACxB6+B,GAgBT5oC,OAAQ,SAAgBC,GAiBtB,IAhBA,IAgBgBopC,EAhBZvpC,EAAQ,GAER6C,EAAI,SAAW2mC,GACbA,EAAMA,EAAV,IACIC,EAAM,UACNC,EAAO,WACX,OAAO,WAGL,IAAIhvC,IAFJ+uC,EAAM,OAAgB,MAANA,IAAiBA,GAAO,IAAQC,IAE3B,KADrBF,EAAM,MAAgB,MAANA,IAAiBA,GAAO,IAAQE,GACbA,EAGnC,OAFAhvC,GAAU,YACVA,GAAU,KACOkH,EAAK1B,SAAW,GAAK,GAAK,KAItClH,EAAI,EAAWA,EAAImH,EAAQnH,GAAK,EAAG,CAC1C,IAAI2wC,EAAK9mC,EAA8B,YAA3B0mC,GAAU3nC,EAAK1B,WAE3BqpC,EAAgB,UAAPI,IACT3pC,EAAM1E,KAAY,WAAPquC,IAAqB,GAGlC,OAAO,IAAI5pC,EAAU2oC,KAAK1oC,EAAOG,MAOjCypC,EAAQzB,EAAEV,IAAM,GAKhBuB,EAAMY,EAAMZ,IAAM,CAcpBluC,UAAW,SAAmBuF,GAO5B,IALA,IAAIL,EAAQK,EAAUL,MAClBC,EAAWI,EAAUJ,SAErBK,EAAW,GAENtH,EAAI,EAAGA,EAAIiH,EAAUjH,IAAK,CACjC,IAAIuH,EAAOP,EAAMhH,IAAM,KAAO,GAAKA,EAAI,EAAI,EAAI,IAC/CsH,EAAShF,MAAMiF,IAAS,GAAGH,SAAS,KACpCE,EAAShF,MAAa,GAAPiF,GAAaH,SAAS,KAGvC,OAAOE,EAASE,KAAK,KAgBvB/H,MAAO,SAAe6Q,GAMpB,IAJA,IAAIugC,EAAevgC,EAAOnQ,OAEtB6G,EAAQ,GAEHhH,EAAI,EAAGA,EAAI6wC,EAAc7wC,GAAK,EACrCgH,EAAMhH,IAAM,IAAMyhB,SAASnR,EAAOlR,OAAOY,EAAG,GAAI,KAAO,GAAKA,EAAI,EAAI,EAGtE,OAAO,IAAI+G,EAAU2oC,KAAK1oC,EAAO6pC,EAAe,KAOhDC,EAASF,EAAME,OAAS,CAc1BhvC,UAAW,SAAmBuF,GAO5B,IALA,IAAIL,EAAQK,EAAUL,MAClBC,EAAWI,EAAUJ,SAErB8pC,EAAc,GAET/wC,EAAI,EAAGA,EAAIiH,EAAUjH,IAAK,CACjC,IAAIuH,EAAOP,EAAMhH,IAAM,KAAO,GAAKA,EAAI,EAAI,EAAI,IAC/C+wC,EAAYzuC,KAAKqO,OAAOC,aAAarJ,IAGvC,OAAOwpC,EAAYvpC,KAAK,KAgB1B/H,MAAO,SAAeuxC,GAMpB,IAJA,IAAIC,EAAkBD,EAAU7wC,OAE5B6G,EAAQ,GAEHhH,EAAI,EAAGA,EAAIixC,EAAiBjxC,IACnCgH,EAAMhH,IAAM,KAAiC,IAA1BgxC,EAAUxnC,WAAWxJ,KAAc,GAAKA,EAAI,EAAI,EAGrE,OAAO,IAAI+G,EAAU2oC,KAAK1oC,EAAOiqC,KAOjCC,EAAON,EAAMM,KAAO,CActBpvC,UAAW,SAAmBuF,GAC5B,IACE,OAAOynC,mBAAmBqC,OAAOL,EAAOhvC,UAAUuF,KAClD,MAAO3H,GACP,MAAM,IAAImH,MAAM,0BAiBpBpH,MAAO,SAAe2xC,GACpB,OAAON,EAAOrxC,MAAM4xC,SAASvjB,mBAAmBsjB,OAWhDE,EAAyBlC,EAAMkC,uBAAyBhC,EAAKC,OAAO,CAQtEgC,MAAO,WAEL/wC,KAAKgxC,MAAQ,IAAIzqC,EAAU2oC,KAC3BlvC,KAAKixC,YAAc,GAarBC,QAAS,SAAiBxsC,GAEL,iBAARA,IACTA,EAAOgsC,EAAKzxC,MAAMyF,IAIpB1E,KAAKgxC,MAAM/hB,OAAOvqB,GAElB1E,KAAKixC,aAAevsC,EAAK+B,UAiB3B0qC,SAAU,SAAkBC,GAE1B,IAAI1sC,EAAO1E,KAAKgxC,MACZK,EAAY3sC,EAAK8B,MACjB8qC,EAAe5sC,EAAK+B,SACpB8qC,EAAYvxC,KAAKuxC,UAGjBC,EAAeF,GAFc,EAAZC,GAcjBE,GARFD,EAFEJ,EAEahpC,EAAK0nC,KAAK0B,GAIVppC,EAAK+C,KAAoB,EAAfqmC,GAAoBxxC,KAAK0xC,eAAgB,IAInCH,EAE7BI,EAAcvpC,EAAKsD,IAAkB,EAAd+lC,EAAiBH,GAE5C,GAAIG,EAAa,CACf,IAAK,IAAI7R,EAAS,EAAGA,EAAS6R,EAAa7R,GAAU2R,EAEnDvxC,KAAK4xC,gBAAgBP,EAAWzR,GAIlC,IAAIiS,EAAiBR,EAAUnvC,OAAO,EAAGuvC,GACzC/sC,EAAK+B,UAAYkrC,EAInB,OAAO,IAAIprC,EAAU2oC,KAAK2C,EAAgBF,IAY5CrC,MAAO,WACL,IAAIA,EAAQR,EAAKQ,MAAMxvC,KAAKE,MAE5B,OADAsvC,EAAM0B,MAAQhxC,KAAKgxC,MAAM1B,QAClBA,GAEToC,eAAgB,IAwIdI,GAhISlD,EAAMmD,OAASjB,EAAuB/B,OAAO,CAIxDiD,IAAKlD,EAAKC,SAWVG,KAAM,SAAc8C,GAElBhyC,KAAKgyC,IAAMhyC,KAAKgyC,IAAIjD,OAAOiD,GAE3BhyC,KAAK+wC,SAUPA,MAAO,WAELD,EAAuBC,MAAMjxC,KAAKE,MAElCA,KAAKiyC,YAePC,OAAQ,SAAgBC,GAQtB,OANAnyC,KAAKkxC,QAAQiB,GAGbnyC,KAAKmxC,WAGEnxC,MAiBToyC,SAAU,SAAkBD,GAS1B,OAPIA,GACFnyC,KAAKkxC,QAAQiB,GAIJnyC,KAAKqyC,eAIlBd,UAAW,GAeXe,cAAe,SAAuBC,GACpC,OAAO,SAAUj5B,EAAS04B,GACxB,OAAO,IAAIO,EAAOrD,KAAK8C,GAAKI,SAAS94B,KAiBzCk5B,kBAAmB,SAA2BD,GAC5C,OAAO,SAAUj5B,EAASjW,GACxB,OAAO,IAAIyuC,EAAOW,KAAKvD,KAAKqD,EAAQlvC,GAAK+uC,SAAS94B,OAQ3Cq1B,EAAE+D,KAAO,IACtB,OAAO/D,EA3sBkB,CA4sBzBvmC,MAEKmmC,I,sBC7tBT,IAWmBA,EARfC,EAAOhN,SAQQ+M,EARoB,EAAQ,OAS7C,WAEE,IAAII,EAAIJ,EAEJhoC,EADQooC,EAAEE,IACQtoC,UAiGtB,SAASosC,EAAUC,EAAWC,EAAiBC,GAI7C,IAHA,IAAItsC,EAAQ,GACRG,EAAS,EAEJnH,EAAI,EAAGA,EAAIqzC,EAAiBrzC,IACnC,GAAIA,EAAI,EAAG,CACT,IAAIuzC,EAAQD,EAAWF,EAAU5pC,WAAWxJ,EAAI,KAAOA,EAAI,EAAI,EAC3DwzC,EAAQF,EAAWF,EAAU5pC,WAAWxJ,MAAQ,EAAIA,EAAI,EAAI,EAChEgH,EAAMG,IAAW,KAAOosC,EAAQC,IAAU,GAAKrsC,EAAS,EAAI,EAC5DA,IAIJ,OAAOJ,EAAU9D,OAAO+D,EAAOG,GA7GrBgoC,EAAEV,IAKKgF,OAAS,CAc1B3xC,UAAW,SAAmBuF,GAE5B,IAAIL,EAAQK,EAAUL,MAClBC,EAAWI,EAAUJ,SACrBtD,EAAMnD,KAAKkzC,KAEfrsC,EAAU6D,QAIV,IAFA,IAAIyoC,EAAc,GAET3zC,EAAI,EAAGA,EAAIiH,EAAUjH,GAAK,EAMjC,IALA,IAGI4zC,GAHQ5sC,EAAMhH,IAAM,KAAO,GAAKA,EAAI,EAAI,EAAI,MAGzB,IAFXgH,EAAMhH,EAAI,IAAM,KAAO,IAAMA,EAAI,GAAK,EAAI,EAAI,MAErB,EADzBgH,EAAMhH,EAAI,IAAM,KAAO,IAAMA,EAAI,GAAK,EAAI,EAAI,IAGjDoI,EAAI,EAAGA,EAAI,GAAKpI,EAAQ,IAAJoI,EAAWnB,EAAUmB,IAChDurC,EAAYrxC,KAAKqB,EAAI+F,OAAOkqC,IAAY,GAAK,EAAIxrC,GAAK,KAK1D,IAAIyrC,EAAclwC,EAAI+F,OAAO,IAE7B,GAAImqC,EACF,KAAOF,EAAYxzC,OAAS,GAC1BwzC,EAAYrxC,KAAKuxC,GAIrB,OAAOF,EAAYnsC,KAAK,KAgB1B/H,MAAO,SAAe2zC,GAEpB,IAAIC,EAAkBD,EAAUjzC,OAC5BwD,EAAMnD,KAAKkzC,KACXJ,EAAa9yC,KAAKszC,YAEtB,IAAKR,EAAY,CACfA,EAAa9yC,KAAKszC,YAAc,GAEhC,IAAK,IAAI1rC,EAAI,EAAGA,EAAIzE,EAAIxD,OAAQiI,IAC9BkrC,EAAW3vC,EAAI6F,WAAWpB,IAAMA,EAKpC,IAAIyrC,EAAclwC,EAAI+F,OAAO,IAE7B,GAAImqC,EAAa,CACf,IAAIE,EAAeX,EAAU3wC,QAAQoxC,IAEf,IAAlBE,IACFV,EAAkBU,GAKtB,OAAOZ,EAAUC,EAAWC,EAAiBC,IAE/CI,KAAM,qEAlGV,GAsHO3E,EAASN,IAAIgF,S,qBClItB,IAWmB1E,EARfC,EAAOhN,SAQQ+M,EARoB,EAAQ,OAAW,EAAQ,OAAa,EAAQ,OAS9EA,EAASiF,a,sBCZlB,IAWmBjF,EAGXI,EAEAG,EAEA4B,EAfJlC,EAAOhN,SAQQ+M,EARoB,EAAQ,OAavCO,GAFAH,EAAIJ,GACMM,IACGC,KAEb4B,EADQ/B,EAAEV,IACGyC,UACJ/B,EAAE+D,KAKGD,KAAO3D,EAAKC,OAAO,CAWnCG,KAAM,SAAcqD,EAAQlvC,GAE1BkvC,EAASvyC,KAAKyzC,QAAU,IAAIlB,EAAOrD,KAEjB,iBAAP7rC,IACTA,EAAMqtC,EAAKzxC,MAAMoE,IAInB,IAAIqwC,EAAkBnB,EAAOhB,UACzBoC,EAAyC,EAAlBD,EAEvBrwC,EAAIoD,SAAWktC,IACjBtwC,EAAMkvC,EAAOH,SAAS/uC,IAIxBA,EAAIqH,QAQJ,IANA,IAAIkpC,EAAO5zC,KAAK6zC,MAAQxwC,EAAIisC,QACxBwE,EAAO9zC,KAAK+zC,MAAQ1wC,EAAIisC,QAExB0E,EAAYJ,EAAKptC,MACjBytC,EAAYH,EAAKttC,MAEZhH,EAAI,EAAGA,EAAIk0C,EAAiBl0C,IACnCw0C,EAAUx0C,IAAM,WAChBy0C,EAAUz0C,IAAM,UAGlBo0C,EAAKntC,SAAWqtC,EAAKrtC,SAAWktC,EAEhC3zC,KAAK+wC,SAUPA,MAAO,WAEL,IAAIwB,EAASvyC,KAAKyzC,QAElBlB,EAAOxB,QACPwB,EAAOL,OAAOlyC,KAAK+zC,QAerB7B,OAAQ,SAAgBC,GAItB,OAHAnyC,KAAKyzC,QAAQvB,OAAOC,GAGbnyC,MAiBToyC,SAAU,SAAkBD,GAE1B,IAAII,EAASvyC,KAAKyzC,QAEdS,EAAY3B,EAAOH,SAASD,GAGhC,OAFAI,EAAOxB,QACIwB,EAAOH,SAASpyC,KAAK6zC,MAAMvE,QAAQrgB,OAAOilB,U,qBC5H7D,IAWmB3F,EARfC,EAAOhN,SAQQ+M,EARoB,EAAQ,OAS7C,WAEE,GAA0B,mBAAfvR,YAAX,CAKA,IAEIz2B,EAFIgoC,EACMM,IACQtoC,UAElB4tC,EAAY5tC,EAAU2oC,MAEZ3oC,EAAU2oC,KAAO,SAAUkF,GAYvC,GAVIA,aAAsBpX,cACxBoX,EAAa,IAAIlkB,WAAWkkB,KAI1BA,aAAsBC,WAA0C,oBAAtBC,mBAAqCF,aAAsBE,mBAAqBF,aAAsBG,YAAcH,aAAsBI,aAAeJ,aAAsBK,YAAcL,aAAsBluC,aAAekuC,aAAsBM,cAAgBN,aAAsBO,gBAC1UP,EAAa,IAAIlkB,WAAWkkB,EAAWnkB,OAAQmkB,EAAWlX,WAAYkX,EAAW/jB,aAI/E+jB,aAAsBlkB,WAAY,CAMpC,IAJA,IAAI0kB,EAAuBR,EAAW/jB,WAElC7pB,EAAQ,GAEHhH,EAAI,EAAGA,EAAIo1C,EAAsBp1C,IACxCgH,EAAMhH,IAAM,IAAM40C,EAAW50C,IAAM,GAAKA,EAAI,EAAI,EAIlD20C,EAAUr0C,KAAKE,KAAMwG,EAAOouC,QAG5BT,EAAUp0C,MAAMC,KAAMN,aAIlBG,UAAY0G,GA3CtB,GA8COgoC,EAASM,IAAItoC,Y,sBC1DtB,IAWmBgoC,EARfC,EAAOhN,SAQQ+M,EARoB,EAAQ,OAS7C,SAAWnmC,GAET,IAAIumC,EAAIJ,EACJK,EAAQD,EAAEE,IACVtoC,EAAYqoC,EAAMroC,UAClBwrC,EAASnD,EAAMmD,OACfD,EAASnD,EAAE+D,KAEXmC,EAAI,GACJC,EAAI,IAER,WACE,SAASC,EAAQt1C,GAGf,IAFA,IAAIu1C,EAAQ5sC,EAAK6sC,KAAKx1C,GAEby1C,EAAS,EAAGA,GAAUF,EAAOE,IACpC,KAAMz1C,EAAIy1C,GACR,OAAO,EAIX,OAAO,EAGT,SAASC,EAAkB11C,GACzB,OAAuB,YAAfA,GAAS,EAAJA,IAAwB,EAMvC,IAHA,IAAIA,EAAI,EACJ21C,EAAS,EAENA,EAAS,IACVL,EAAQt1C,KACN21C,EAAS,IACXP,EAAEO,GAAUD,EAAkB/sC,EAAKM,IAAIjJ,EAAG,MAG5Cq1C,EAAEM,GAAUD,EAAkB/sC,EAAKM,IAAIjJ,EAAG,EAAI,IAC9C21C,KAGF31C,IA9BJ,GAmCA,IAAI41C,EAAI,GAKJC,EAASxD,EAAOwD,OAASvD,EAAOhD,OAAO,CACzCkD,SAAU,WACRjyC,KAAKu1C,MAAQ,IAAIhvC,EAAU2oC,KAAK2F,EAAEpkC,MAAM,KAE1CmhC,gBAAiB,SAAyB4D,EAAG5V,GAa3C,IAXA,IAAIiV,EAAI70C,KAAKu1C,MAAM/uC,MAEfU,EAAI2tC,EAAE,GACN1tC,EAAI0tC,EAAE,GACNhtC,EAAIgtC,EAAE,GACNnoC,EAAImoC,EAAE,GACN31C,EAAI21C,EAAE,GACN7qB,EAAI6qB,EAAE,GACN/uC,EAAI+uC,EAAE,GACN5sC,EAAI4sC,EAAE,GAEDr1C,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,GAAIA,EAAI,GACN61C,EAAE71C,GAAqB,EAAhBg2C,EAAE5V,EAASpgC,OACb,CACL,IAAIi2C,EAAUJ,EAAE71C,EAAI,IAChBk2C,GAAUD,GAAW,GAAKA,IAAY,IAAMA,GAAW,GAAKA,IAAY,IAAMA,IAAY,EAC1FE,EAAUN,EAAE71C,EAAI,GAChBo2C,GAAUD,GAAW,GAAKA,IAAY,KAAOA,GAAW,GAAKA,IAAY,IAAMA,IAAY,GAC/FN,EAAE71C,GAAKk2C,EAASL,EAAE71C,EAAI,GAAKo2C,EAASP,EAAE71C,EAAI,IAG5C,IACIq2C,EAAM3uC,EAAIC,EAAID,EAAIW,EAAIV,EAAIU,EAC1BiuC,GAAU5uC,GAAK,GAAKA,IAAM,IAAMA,GAAK,GAAKA,IAAM,KAAOA,GAAK,GAAKA,IAAM,IAEvE6uC,EAAK9tC,IADK/I,GAAK,GAAKA,IAAM,IAAMA,GAAK,GAAKA,IAAM,KAAOA,GAAK,EAAIA,IAAM,MAHjEA,EAAI8qB,GAAK9qB,EAAI4G,GAIKgvC,EAAEt1C,GAAK61C,EAAE71C,GAEpCyI,EAAInC,EACJA,EAAIkkB,EACJA,EAAI9qB,EACJA,EAAIwN,EAAIqpC,EAAK,EACbrpC,EAAI7E,EACJA,EAAIV,EACJA,EAAID,EACJA,EAAI6uC,GARKD,EAASD,GAQJ,EAIhBhB,EAAE,GAAKA,EAAE,GAAK3tC,EAAI,EAClB2tC,EAAE,GAAKA,EAAE,GAAK1tC,EAAI,EAClB0tC,EAAE,GAAKA,EAAE,GAAKhtC,EAAI,EAClBgtC,EAAE,GAAKA,EAAE,GAAKnoC,EAAI,EAClBmoC,EAAE,GAAKA,EAAE,GAAK31C,EAAI,EAClB21C,EAAE,GAAKA,EAAE,GAAK7qB,EAAI,EAClB6qB,EAAE,GAAKA,EAAE,GAAK/uC,EAAI,EAClB+uC,EAAE,GAAKA,EAAE,GAAK5sC,EAAI,GAEpBoqC,YAAa,WAEX,IAAI3tC,EAAO1E,KAAKgxC,MACZK,EAAY3sC,EAAK8B,MACjBwvC,EAAgC,EAAnBh2C,KAAKixC,YAClBgF,EAA4B,EAAhBvxC,EAAK+B,SAUrB,OARA4qC,EAAU4E,IAAc,IAAM,KAAQ,GAAKA,EAAY,GACvD5E,EAAwC,IAA7B4E,EAAY,KAAO,GAAK,IAAW7tC,EAAKC,MAAM2tC,EAAa,YACtE3E,EAAwC,IAA7B4E,EAAY,KAAO,GAAK,IAAWD,EAC9CtxC,EAAK+B,SAA8B,EAAnB4qC,EAAU1xC,OAE1BK,KAAKmxC,WAGEnxC,KAAKu1C,OAEdjG,MAAO,WACL,IAAIA,EAAQyC,EAAOzC,MAAMxvC,KAAKE,MAE9B,OADAsvC,EAAMiG,MAAQv1C,KAAKu1C,MAAMjG,QAClBA,KAkBXX,EAAE2G,OAASvD,EAAOO,cAAcgD,GAgBhC3G,EAAE6E,WAAazB,EAAOS,kBAAkB8C,GA/J1C,CAgKGltC,MAEImmC,EAAS+G,S,oBC/KlB9T,EAAQjC,KAAO,SAAUtP,EAAQ2P,EAAQsW,EAAMC,EAAMxvC,GACnD,IAAIzH,EAAGgJ,EACHkuC,EAAgB,EAATzvC,EAAawvC,EAAO,EAC3BE,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACT/2C,EAAI02C,EAAOvvC,EAAS,EAAI,EACxB+F,EAAIwpC,GAAQ,EAAI,EAChB32C,EAAI0wB,EAAO2P,EAASpgC,GAMxB,IALAA,GAAKkN,EACLxN,EAAIK,GAAK,IAAMg3C,GAAS,EACxBh3C,KAAOg3C,EACPA,GAASH,EAEFG,EAAQ,EAAGr3C,EAAQ,IAAJA,EAAU+wB,EAAO2P,EAASpgC,GAAIA,GAAKkN,EAAG6pC,GAAS,GAMrE,IAJAruC,EAAIhJ,GAAK,IAAMq3C,GAAS,EACxBr3C,KAAOq3C,EACPA,GAASJ,EAEFI,EAAQ,EAAGruC,EAAQ,IAAJA,EAAU+nB,EAAO2P,EAASpgC,GAAIA,GAAKkN,EAAG6pC,GAAS,GAErE,GAAU,IAANr3C,EACFA,EAAI,EAAIo3C,MACH,IAAIp3C,IAAMm3C,EACf,OAAOnuC,EAAIsuC,IAAqBlQ,KAAd/mC,GAAK,EAAI,GAE3B2I,GAAQE,KAAKM,IAAI,EAAGytC,GACpBj3C,GAAQo3C,EAGV,OAAQ/2C,GAAK,EAAI,GAAK2I,EAAIE,KAAKM,IAAI,EAAGxJ,EAAIi3C,IAG5C3U,EAAQhE,MAAQ,SAAUvN,EAAQxxB,EAAOmhC,EAAQsW,EAAMC,EAAMxvC,GAC3D,IAAIzH,EAAGgJ,EAAGL,EACNuuC,EAAgB,EAATzvC,EAAawvC,EAAO,EAC3BE,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBI,EAAc,KAATN,EAAc/tC,KAAKM,IAAI,GAAI,IAAMN,KAAKM,IAAI,GAAI,IAAM,EACzDlJ,EAAI02C,EAAO,EAAIvvC,EAAS,EACxB+F,EAAIwpC,EAAO,GAAK,EAChB32C,EAAId,EAAQ,GAAe,IAAVA,GAAe,EAAIA,EAAQ,EAAI,EAAI,EAqCxD,IApCAA,EAAQ2J,KAAK4B,IAAIvL,GAEbugC,MAAMvgC,IAAUA,IAAU6nC,KAC5Bp+B,EAAI82B,MAAMvgC,GAAS,EAAI,EACvBS,EAAIm3C,IAEJn3C,EAAIkJ,KAAKC,MAAMD,KAAKyoB,IAAIpyB,GAAS2J,KAAKsuC,KAElCj4C,GAASoJ,EAAIO,KAAKM,IAAI,GAAIxJ,IAAM,IAClCA,IACA2I,GAAK,IAILpJ,GADES,EAAIo3C,GAAS,EACNG,EAAK5uC,EAEL4uC,EAAKruC,KAAKM,IAAI,EAAG,EAAI4tC,IAGpBzuC,GAAK,IACf3I,IACA2I,GAAK,GAGH3I,EAAIo3C,GAASD,GACfnuC,EAAI,EACJhJ,EAAIm3C,GACKn3C,EAAIo3C,GAAS,GACtBpuC,GAAKzJ,EAAQoJ,EAAI,GAAKO,KAAKM,IAAI,EAAGytC,GAClCj3C,GAAQo3C,IAERpuC,EAAIzJ,EAAQ2J,KAAKM,IAAI,EAAG4tC,EAAQ,GAAKluC,KAAKM,IAAI,EAAGytC,GACjDj3C,EAAI,IAIDi3C,GAAQ,EAAGlmB,EAAO2P,EAASpgC,GAAS,IAAJ0I,EAAU1I,GAAKkN,EAAGxE,GAAK,IAAKiuC,GAAQ,GAK3E,IAHAj3C,EAAIA,GAAKi3C,EAAOjuC,EAChBkuC,GAAQD,EAEDC,EAAO,EAAGnmB,EAAO2P,EAASpgC,GAAS,IAAJN,EAAUM,GAAKkN,EAAGxN,GAAK,IAAKk3C,GAAQ,GAE1EnmB,EAAO2P,EAASpgC,EAAIkN,IAAU,IAAJnN,I,kBCvF5B,IAAIqH,EAAW,GAAGA,SAElB4nC,EAAOhN,QAAUv+B,MAAM2oB,SAAW,SAAUuT,GAC1C,MAA6B,kBAAtBv4B,EAAS9G,KAAKq/B,K,sBCHvB,SASA,SAAWwX,GAaT,QATgB,0BAAd,KAAc,mCACa,EAI3BnI,EAAOhN,QAAUmV,MACU,EAGE,CAC7B,IAAIC,EAAar0C,OAAOtC,QACpB42C,EAAMt0C,OAAOtC,QAAU02C,IAE3BE,EAAIC,WAAa,WAEf,OADAv0C,OAAOtC,QAAU22C,EACVC,IAnBb,EAsBG,WACD,SAAS9H,IAIP,IAHA,IAAIvvC,EAAI,EACJ0B,EAAS,GAEN1B,EAAIE,UAAUC,OAAQH,IAAK,CAChC,IAAIuf,EAAarf,UAAUF,GAE3B,IAAK,IAAI6D,KAAO0b,EACd7d,EAAOmC,GAAO0b,EAAW1b,GAI7B,OAAOnC,EAGT,SAAS2sC,EAAOtuC,GACd,OAAOA,EAAEwwB,QAAQ,mBAAoBue,oBA2HvC,OAxHA,SAASY,EAAK6H,GACZ,SAASF,KAET,SAASz1C,EAAIiC,EAAK5E,EAAOsgB,GACvB,GAAwB,oBAAbte,SAAX,CAQkC,iBAJlCse,EAAagwB,EAAO,CAClBhrC,KAAM,KACL8yC,EAAIG,SAAUj4B,IAEKtd,UACpBsd,EAAWtd,QAAU,IAAIC,KAAkB,EAAb,IAAIA,KAAkC,MAArBqd,EAAWtd,UAI5Dsd,EAAWtd,QAAUsd,EAAWtd,QAAUsd,EAAWtd,QAAQ2sC,cAAgB,GAE7E,IACE,IAAIltC,EAASlC,KAAKsC,UAAU7C,GAExB,UAAUgpB,KAAKvmB,KACjBzC,EAAQyC,GAEV,MAAOhC,IAETT,EAAQs4C,EAAUvZ,MAAQuZ,EAAUvZ,MAAM/+B,EAAO4E,GAAOiqB,mBAAmBnd,OAAO1R,IAAQsxB,QAAQ,4DAA6Due,oBAC/JjrC,EAAMiqB,mBAAmBnd,OAAO9M,IAAM0sB,QAAQ,2BAA4Bue,oBAAoBve,QAAQ,UAAW4gB,QACjH,IAAIsG,EAAwB,GAE5B,IAAK,IAAIh1B,KAAiBlD,EACnBA,EAAWkD,KAIhBg1B,GAAyB,KAAOh1B,GAEE,IAA9BlD,EAAWkD,KAWfg1B,GAAyB,IAAMl4B,EAAWkD,GAAe/d,MAAM,KAAK,KAGtE,OAAOzD,SAASH,OAAS+C,EAAM,IAAM5E,EAAQw4C,GAG/C,SAASl2C,EAAIsC,EAAKyjB,GAChB,GAAwB,oBAAbrmB,SAAX,CAUA,IANA,IAAIy2C,EAAM,GAGNh3C,EAAUO,SAASH,OAASG,SAASH,OAAO4D,MAAM,MAAQ,GAC1D1E,EAAI,EAEDA,EAAIU,EAAQP,OAAQH,IAAK,CAC9B,IAAI0tC,EAAQhtC,EAAQV,GAAG0E,MAAM,KACzB5D,EAAS4sC,EAAMz8B,MAAM,GAAGzJ,KAAK,KAE5B8f,GAA6B,MAArBxmB,EAAO4I,OAAO,KACzB5I,EAASA,EAAOmQ,MAAM,GAAI,IAG5B,IACE,IAAIzP,EAAO6sC,EAAOX,EAAM,IAGxB,GAFA5sC,GAAUy2C,EAAUxX,MAAQwX,GAAWz2C,EAAQU,IAAS6sC,EAAOvtC,GAE3DwmB,EACF,IACExmB,EAAStB,KAAKC,MAAMqB,GACpB,MAAOpB,IAKX,GAFAg4C,EAAIl2C,GAAQV,EAER+C,IAAQrC,EACV,MAEF,MAAO9B,KAGX,OAAOmE,EAAM6zC,EAAI7zC,GAAO6zC,GAyB1B,OAtBAL,EAAIz1C,IAAMA,EAEVy1C,EAAI91C,IAAM,SAAUsC,GAClB,OAAOtC,EAAIsC,GAAK,IAKlBwzC,EAAIM,QAAU,SAAU9zC,GACtB,OAAOtC,EAAIsC,GAAK,IAKlBwzC,EAAIt1C,OAAS,SAAU8B,EAAK0b,GAC1B3d,EAAIiC,EAAK,GAAI0rC,EAAOhwB,EAAY,CAC9Btd,SAAU,MAIdo1C,EAAIG,SAAW,GACfH,EAAIO,cAAgBlI,EACb2H,EAGF3H,EAAK","file":"c8658eff68555671396be266c03900c2b64fd58d-f3321527afc79c0881ed.js","sourcesContent":["/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nexport var CognitoHostedUIIdentityProvider;\n\n(function (CognitoHostedUIIdentityProvider) {\n CognitoHostedUIIdentityProvider[\"Cognito\"] = \"COGNITO\";\n CognitoHostedUIIdentityProvider[\"Google\"] = \"Google\";\n CognitoHostedUIIdentityProvider[\"Facebook\"] = \"Facebook\";\n CognitoHostedUIIdentityProvider[\"Amazon\"] = \"LoginWithAmazon\";\n CognitoHostedUIIdentityProvider[\"Apple\"] = \"SignInWithApple\";\n})(CognitoHostedUIIdentityProvider || (CognitoHostedUIIdentityProvider = {}));\n\nexport function isFederatedSignInOptions(obj) {\n var keys = ['provider'];\n return obj && !!keys.find(function (k) {\n return obj.hasOwnProperty(k);\n });\n}\nexport function isFederatedSignInOptionsCustom(obj) {\n var keys = ['customProvider'];\n return obj && !!keys.find(function (k) {\n return obj.hasOwnProperty(k);\n });\n}\nexport function hasCustomState(obj) {\n var keys = ['customState'];\n return obj && !!keys.find(function (k) {\n return obj.hasOwnProperty(k);\n });\n}\nexport function isCognitoHostedOpts(oauth) {\n return oauth.redirectSignIn !== undefined;\n}\nexport var AuthErrorTypes;\n\n(function (AuthErrorTypes) {\n AuthErrorTypes[\"NoConfig\"] = \"noConfig\";\n AuthErrorTypes[\"MissingAuthConfig\"] = \"missingAuthConfig\";\n AuthErrorTypes[\"EmptyUsername\"] = \"emptyUsername\";\n AuthErrorTypes[\"InvalidUsername\"] = \"invalidUsername\";\n AuthErrorTypes[\"EmptyPassword\"] = \"emptyPassword\";\n AuthErrorTypes[\"EmptyCode\"] = \"emptyCode\";\n AuthErrorTypes[\"SignUpError\"] = \"signUpError\";\n AuthErrorTypes[\"NoMFA\"] = \"noMFA\";\n AuthErrorTypes[\"InvalidMFA\"] = \"invalidMFA\";\n AuthErrorTypes[\"EmptyChallengeResponse\"] = \"emptyChallengeResponse\";\n AuthErrorTypes[\"NoUserSession\"] = \"noUserSession\";\n AuthErrorTypes[\"Default\"] = \"default\";\n})(AuthErrorTypes || (AuthErrorTypes = {}));\n\nexport function isUsernamePasswordOpts(obj) {\n return !!obj.username;\n}","import * as cookie from 'cookie';\nexport function hasDocumentCookie() {\n // Can we get/set cookies on document.cookie?\n return typeof document === 'object' && typeof document.cookie === 'string';\n}\nexport function cleanCookies() {\n document.cookie.split(';').forEach(function (c) {\n document.cookie = c.replace(/^ +/, '').replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\n });\n}\nexport function parseCookies(cookies, options) {\n if (typeof cookies === 'string') {\n return cookie.parse(cookies, options);\n } else if (typeof cookies === 'object' && cookies !== null) {\n return cookies;\n } else {\n return {};\n }\n}\nexport function isParsingCookie(value, doNotParse) {\n if (typeof doNotParse === 'undefined') {\n // We guess if the cookie start with { or [, it has been serialized\n doNotParse = !value || value[0] !== '{' && value[0] !== '[' && value[0] !== '\"';\n }\n\n return !doNotParse;\n}\nexport function readCookie(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var cleanValue = cleanupCookieValue(value);\n\n if (isParsingCookie(cleanValue, options.doNotParse)) {\n try {\n return JSON.parse(cleanValue);\n } catch (e) {// At least we tried\n }\n } // Ignore clean value if we failed the deserialization\n // It is not relevant anymore to trim those values\n\n\n return value;\n}\n\nfunction cleanupCookieValue(value) {\n // express prepend j: before serializing a cookie\n if (value && value[0] === 'j' && value[1] === ':') {\n return value.substr(2);\n }\n\n return value;\n}","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as cookie from 'cookie';\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\n\nvar Cookies =\n/** @class */\nfunction () {\n function Cookies(cookies, options) {\n var _this = this;\n\n this.changeListeners = [];\n this.HAS_DOCUMENT_COOKIE = false;\n this.cookies = parseCookies(cookies, options);\n new Promise(function () {\n _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\n }).catch(function () {});\n }\n\n Cookies.prototype._updateBrowserValues = function (parseOptions) {\n if (!this.HAS_DOCUMENT_COOKIE) {\n return;\n }\n\n this.cookies = cookie.parse(document.cookie, parseOptions);\n };\n\n Cookies.prototype._emitChange = function (params) {\n for (var i = 0; i < this.changeListeners.length; ++i) {\n this.changeListeners[i](params);\n }\n };\n\n Cookies.prototype.get = function (name, options, parseOptions) {\n if (options === void 0) {\n options = {};\n }\n\n this._updateBrowserValues(parseOptions);\n\n return readCookie(this.cookies[name], options);\n };\n\n Cookies.prototype.getAll = function (options, parseOptions) {\n if (options === void 0) {\n options = {};\n }\n\n this._updateBrowserValues(parseOptions);\n\n var result = {};\n\n for (var name_1 in this.cookies) {\n result[name_1] = readCookie(this.cookies[name_1], options);\n }\n\n return result;\n };\n\n Cookies.prototype.set = function (name, value, options) {\n var _a;\n\n if (typeof value === 'object') {\n value = JSON.stringify(value);\n }\n\n this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\n\n if (this.HAS_DOCUMENT_COOKIE) {\n document.cookie = cookie.serialize(name, value, options);\n }\n\n this._emitChange({\n name: name,\n value: value,\n options: options\n });\n };\n\n Cookies.prototype.remove = function (name, options) {\n var finalOptions = options = __assign(__assign({}, options), {\n expires: new Date(1970, 1, 1, 0, 0, 1),\n maxAge: 0\n });\n\n this.cookies = __assign({}, this.cookies);\n delete this.cookies[name];\n\n if (this.HAS_DOCUMENT_COOKIE) {\n document.cookie = cookie.serialize(name, '', finalOptions);\n }\n\n this._emitChange({\n name: name,\n value: undefined,\n options: options\n });\n };\n\n Cookies.prototype.addChangeListener = function (callback) {\n this.changeListeners.push(callback);\n };\n\n Cookies.prototype.removeChangeListener = function (callback) {\n var idx = this.changeListeners.indexOf(callback);\n\n if (idx >= 0) {\n this.changeListeners.splice(idx, 1);\n }\n };\n\n return Cookies;\n}();\n\nexport default Cookies;","import Cookies from './Cookies';\nexport default Cookies;","import Cookies from 'universal-cookie';\nimport { browserOrNode } from '../JS';\nvar isBrowser = browserOrNode().isBrowser;\n\nvar UniversalStorage =\n/** @class */\nfunction () {\n function UniversalStorage(context) {\n if (context === void 0) {\n context = {};\n }\n\n this.cookies = new Cookies();\n this.store = isBrowser ? window.localStorage : Object.create(null);\n this.cookies = context.req ? new Cookies(context.req.headers.cookie) : new Cookies();\n Object.assign(this.store, this.cookies.getAll());\n }\n\n Object.defineProperty(UniversalStorage.prototype, \"length\", {\n get: function get() {\n return Object.entries(this.store).length;\n },\n enumerable: true,\n configurable: true\n });\n\n UniversalStorage.prototype.clear = function () {\n var _this = this;\n\n Array.from(new Array(this.length)).map(function (_, i) {\n return _this.key(i);\n }).forEach(function (key) {\n return _this.removeItem(key);\n });\n };\n\n UniversalStorage.prototype.getItem = function (key) {\n return this.getLocalItem(key);\n };\n\n UniversalStorage.prototype.getLocalItem = function (key) {\n return Object.prototype.hasOwnProperty.call(this.store, key) ? this.store[key] : null;\n };\n\n UniversalStorage.prototype.getUniversalItem = function (key) {\n return this.cookies.get(key);\n };\n\n UniversalStorage.prototype.key = function (index) {\n return Object.keys(this.store)[index];\n };\n\n UniversalStorage.prototype.removeItem = function (key) {\n this.removeLocalItem(key);\n this.removeUniversalItem(key);\n };\n\n UniversalStorage.prototype.removeLocalItem = function (key) {\n delete this.store[key];\n };\n\n UniversalStorage.prototype.removeUniversalItem = function (key) {\n this.cookies.remove(key, {\n path: '/'\n });\n };\n\n UniversalStorage.prototype.setItem = function (key, value) {\n this.setLocalItem(key, value); // keys take the shape:\n // 1. `${ProviderPrefix}.${userPoolClientId}.${username}.${tokenType}\n // 2. `${ProviderPrefix}.${userPoolClientId}.LastAuthUser\n\n var tokenType = key.split('.').pop();\n\n switch (tokenType) {\n // LastAuthUser is needed for computing other key names\n case 'LastAuthUser': // accessToken is required for CognitoUserSession\n\n case 'accessToken': // Required for CognitoUserSession\n\n case 'idToken':\n this.setUniversalItem(key, value);\n // userData is used when `Auth.currentAuthenticatedUser({ bypassCache: false })`.\n // Can be persisted to speed up calls to `Auth.currentAuthenticatedUser()`\n // case 'userData':\n // refreshToken isn't shared with the server so that the client handles refreshing\n // case 'refreshToken':\n // Ignoring clockDrift on the server for now, but needs testing\n // case 'clockDrift':\n }\n };\n\n UniversalStorage.prototype.setLocalItem = function (key, value) {\n this.store[key] = value;\n };\n\n UniversalStorage.prototype.setUniversalItem = function (key, value) {\n this.cookies.set(key, value, {\n path: '/',\n // `httpOnly` cannot be set via JavaScript: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#JavaScript_access_using_Document.cookie\n sameSite: true,\n // Allow unsecure requests to http://localhost:3000/ when in development.\n secure: window.location.hostname === 'localhost' ? false : true\n });\n };\n\n return UniversalStorage;\n}();\n\nexport { UniversalStorage };","var crypto; // Native crypto from window (Browser)\n\nif (typeof window !== 'undefined' && window.crypto) {\n crypto = window.crypto;\n} // Native (experimental IE 11) crypto from window (Browser)\n\n\nif (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n crypto = window.msCrypto;\n} // Native crypto from global (NodeJS)\n\n\nif (!crypto && typeof global !== 'undefined' && global.crypto) {\n crypto = global.crypto;\n} // Native crypto import via require (NodeJS)\n\n\nif (!crypto && typeof require === 'function') {\n try {\n crypto = require('crypto');\n } catch (err) {}\n}\n/*\n * Cryptographically secure pseudorandom number generator\n * As Math.random() is cryptographically not safe to use\n */\n\n\nexport default function cryptoSecureRandomInt() {\n if (crypto) {\n // Use getRandomValues method (Browser)\n if (typeof crypto.getRandomValues === 'function') {\n try {\n return crypto.getRandomValues(new Uint32Array(1))[0];\n } catch (err) {}\n } // Use randomBytes method (NodeJS)\n\n\n if (typeof crypto.randomBytes === 'function') {\n try {\n return crypto.randomBytes(4).readInt32LE();\n } catch (err) {}\n }\n }\n\n throw new Error('Native crypto module could not be used to get secure random number.');\n}","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @class */\nvar AuthenticationDetails = /*#__PURE__*/function () {\n /**\n * Constructs a new AuthenticationDetails object\n * @param {object=} data Creation options.\n * @param {string} data.Username User being authenticated.\n * @param {string} data.Password Plain-text password to authenticate with.\n * @param {(AttributeArg[])?} data.ValidationData Application extra metadata.\n * @param {(AttributeArg[])?} data.AuthParamaters Authentication paramaters for custom auth.\n */\n function AuthenticationDetails(data) {\n var _ref = data || {},\n ValidationData = _ref.ValidationData,\n Username = _ref.Username,\n Password = _ref.Password,\n AuthParameters = _ref.AuthParameters,\n ClientMetadata = _ref.ClientMetadata;\n\n this.validationData = ValidationData || {};\n this.authParameters = AuthParameters || {};\n this.clientMetadata = ClientMetadata || {};\n this.username = Username;\n this.password = Password;\n }\n /**\n * @returns {string} the record's username\n */\n\n\n var _proto = AuthenticationDetails.prototype;\n\n _proto.getUsername = function getUsername() {\n return this.username;\n }\n /**\n * @returns {string} the record's password\n */\n ;\n\n _proto.getPassword = function getPassword() {\n return this.password;\n }\n /**\n * @returns {Array} the record's validationData\n */\n ;\n\n _proto.getValidationData = function getValidationData() {\n return this.validationData;\n }\n /**\n * @returns {Array} the record's authParameters\n */\n ;\n\n _proto.getAuthParameters = function getAuthParameters() {\n return this.authParameters;\n }\n /**\n * @returns {ClientMetadata} the clientMetadata for a Lambda trigger\n */\n ;\n\n _proto.getClientMetadata = function getClientMetadata() {\n return this.clientMetadata;\n };\n\n return AuthenticationDetails;\n}();\n\nexport { AuthenticationDetails as default };","import cryptoSecureRandomInt from './cryptoSecureRandomInt';\n/**\n * Hex encoding strategy.\n * Converts a word array to a hex string.\n * @param {WordArray} wordArray The word array.\n * @return {string} The hex string.\n * @static\n */\n\nfunction hexStringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes; // Convert\n\n var hexChars = [];\n\n for (var i = 0; i < sigBytes; i++) {\n var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n hexChars.push((bite >>> 4).toString(16));\n hexChars.push((bite & 0x0f).toString(16));\n }\n\n return hexChars.join('');\n}\n\nvar WordArray = /*#__PURE__*/function () {\n function WordArray(words, sigBytes) {\n words = this.words = words || [];\n\n if (sigBytes != undefined) {\n this.sigBytes = sigBytes;\n } else {\n this.sigBytes = words.length * 4;\n }\n }\n\n var _proto = WordArray.prototype;\n\n _proto.random = function random(nBytes) {\n var words = [];\n\n for (var i = 0; i < nBytes; i += 4) {\n words.push(cryptoSecureRandomInt());\n }\n\n return new WordArray(words, nBytes);\n };\n\n _proto.toString = function toString() {\n return hexStringify(this);\n };\n\n return WordArray;\n}();\n\nexport { WordArray as default };","// A small implementation of BigInteger based on http://www-cs-students.stanford.edu/~tjw/jsbn/\n//\n// All public methods have been removed except the following:\n// new BigInteger(a, b) (only radix 2, 4, 8, 16 and 32 supported)\n// toString (only radix 2, 4, 8, 16 and 32 supported)\n// negate\n// abs\n// compareTo\n// bitLength\n// mod\n// equals\n// add\n// subtract\n// multiply\n// divide\n// modPow\nexport default BigInteger;\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY\n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n// (public) Constructor\n\nfunction BigInteger(a, b) {\n if (a != null) this.fromString(a, b);\n} // return new, unset BigInteger\n\n\nfunction nbi() {\n return new BigInteger(null);\n} // Bits per digit\n\n\nvar dbits; // JavaScript engine analysis\n\nvar canary = 0xdeadbeefcafe;\nvar j_lm = (canary & 0xffffff) == 0xefcafe; // am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n\nfunction am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n\n return c;\n} // am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n\n\nfunction am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff,\n xh = x >> 15;\n\n while (--n >= 0) {\n var l = this[i] & 0x7fff;\n var h = this[i++] >> 15;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n\n return c;\n} // Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\n\n\nfunction am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff,\n xh = x >> 14;\n\n while (--n >= 0) {\n var l = this[i] & 0x3fff;\n var h = this[i++] >> 14;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n\n return c;\n}\n\nvar inBrowser = typeof navigator !== 'undefined';\n\nif (inBrowser && j_lm && navigator.appName == 'Microsoft Internet Explorer') {\n BigInteger.prototype.am = am2;\n dbits = 30;\n} else if (inBrowser && j_lm && navigator.appName != 'Netscape') {\n BigInteger.prototype.am = am1;\n dbits = 26;\n} else {\n // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = (1 << dbits) - 1;\nBigInteger.prototype.DV = 1 << dbits;\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP; // Digit conversions\n\nvar BI_RM = '0123456789abcdefghijklmnopqrstuvwxyz';\nvar BI_RC = new Array();\nvar rr, vv;\nrr = '0'.charCodeAt(0);\n\nfor (vv = 0; vv <= 9; ++vv) {\n BI_RC[rr++] = vv;\n}\n\nrr = 'a'.charCodeAt(0);\n\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\n\nrr = 'A'.charCodeAt(0);\n\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\n\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\n\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)];\n return c == null ? -1 : c;\n} // (protected) copy this to r\n\n\nfunction bnpCopyTo(r) {\n for (var i = this.t - 1; i >= 0; --i) {\n r[i] = this[i];\n }\n\n r.t = this.t;\n r.s = this.s;\n} // (protected) set from integer value x, -DV <= x < DV\n\n\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = x < 0 ? -1 : 0;\n if (x > 0) this[0] = x;else if (x < -1) this[0] = x + this.DV;else this.t = 0;\n} // return bigint initialized to value\n\n\nfunction nbv(i) {\n var r = nbi();\n r.fromInt(i);\n return r;\n} // (protected) set from string and radix\n\n\nfunction bnpFromString(s, b) {\n var k;\n if (b == 16) k = 4;else if (b == 8) k = 3;else if (b == 2) k = 1;else if (b == 32) k = 5;else if (b == 4) k = 2;else throw new Error('Only radix 2, 4, 8, 16, 32 are supported');\n this.t = 0;\n this.s = 0;\n var i = s.length,\n mi = false,\n sh = 0;\n\n while (--i >= 0) {\n var x = intAt(s, i);\n\n if (x < 0) {\n if (s.charAt(i) == '-') mi = true;\n continue;\n }\n\n mi = false;\n if (sh == 0) this[this.t++] = x;else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & (1 << this.DB - sh) - 1) << sh;\n this[this.t++] = x >> this.DB - sh;\n } else this[this.t - 1] |= x << sh;\n sh += k;\n if (sh >= this.DB) sh -= this.DB;\n }\n\n this.clamp();\n if (mi) BigInteger.ZERO.subTo(this, this);\n} // (protected) clamp off excess high words\n\n\nfunction bnpClamp() {\n var c = this.s & this.DM;\n\n while (this.t > 0 && this[this.t - 1] == c) {\n --this.t;\n }\n} // (public) return string representation in given radix\n\n\nfunction bnToString(b) {\n if (this.s < 0) return '-' + this.negate().toString(b);\n var k;\n if (b == 16) k = 4;else if (b == 8) k = 3;else if (b == 2) k = 1;else if (b == 32) k = 5;else if (b == 4) k = 2;else throw new Error('Only radix 2, 4, 8, 16, 32 are supported');\n var km = (1 << k) - 1,\n d,\n m = false,\n r = '',\n i = this.t;\n var p = this.DB - i * this.DB % k;\n\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = int2char(d);\n }\n\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & (1 << p) - 1) << k - p;\n d |= this[--i] >> (p += this.DB - k);\n } else {\n d = this[i] >> (p -= k) & km;\n\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n\n if (d > 0) m = true;\n if (m) r += int2char(d);\n }\n }\n\n return m ? r : '0';\n} // (public) -this\n\n\nfunction bnNegate() {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n} // (public) |this|\n\n\nfunction bnAbs() {\n return this.s < 0 ? this.negate() : this;\n} // (public) return + if this > a, - if this < a, 0 if equal\n\n\nfunction bnCompareTo(a) {\n var r = this.s - a.s;\n if (r != 0) return r;\n var i = this.t;\n r = i - a.t;\n if (r != 0) return this.s < 0 ? -r : r;\n\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) return r;\n }\n\n return 0;\n} // returns bit length of the integer x\n\n\nfunction nbits(x) {\n var r = 1,\n t;\n\n if ((t = x >>> 16) != 0) {\n x = t;\n r += 16;\n }\n\n if ((t = x >> 8) != 0) {\n x = t;\n r += 8;\n }\n\n if ((t = x >> 4) != 0) {\n x = t;\n r += 4;\n }\n\n if ((t = x >> 2) != 0) {\n x = t;\n r += 2;\n }\n\n if ((t = x >> 1) != 0) {\n x = t;\n r += 1;\n }\n\n return r;\n} // (public) return the number of bits in \"this\"\n\n\nfunction bnBitLength() {\n if (this.t <= 0) return 0;\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ this.s & this.DM);\n} // (protected) r = this << n*DB\n\n\nfunction bnpDLShiftTo(n, r) {\n var i;\n\n for (i = this.t - 1; i >= 0; --i) {\n r[i + n] = this[i];\n }\n\n for (i = n - 1; i >= 0; --i) {\n r[i] = 0;\n }\n\n r.t = this.t + n;\n r.s = this.s;\n} // (protected) r = this >> n*DB\n\n\nfunction bnpDRShiftTo(n, r) {\n for (var i = n; i < this.t; ++i) {\n r[i - n] = this[i];\n }\n\n r.t = Math.max(this.t - n, 0);\n r.s = this.s;\n} // (protected) r = this << n\n\n\nfunction bnpLShiftTo(n, r) {\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << cbs) - 1;\n var ds = Math.floor(n / this.DB),\n c = this.s << bs & this.DM,\n i;\n\n for (i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = this[i] >> cbs | c;\n c = (this[i] & bm) << bs;\n }\n\n for (i = ds - 1; i >= 0; --i) {\n r[i] = 0;\n }\n\n r[ds] = c;\n r.t = this.t + ds + 1;\n r.s = this.s;\n r.clamp();\n} // (protected) r = this >> n\n\n\nfunction bnpRShiftTo(n, r) {\n r.s = this.s;\n var ds = Math.floor(n / this.DB);\n\n if (ds >= this.t) {\n r.t = 0;\n return;\n }\n\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << bs) - 1;\n r[0] = this[ds] >> bs;\n\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs;\n r[i - ds] = this[i] >> bs;\n }\n\n if (bs > 0) r[this.t - ds - 1] |= (this.s & bm) << cbs;\n r.t = this.t - ds;\n r.clamp();\n} // (protected) r = this - a\n\n\nfunction bnpSubTo(a, r) {\n var i = 0,\n c = 0,\n m = Math.min(a.t, this.t);\n\n while (i < m) {\n c += this[i] - a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n if (a.t < this.t) {\n c -= a.s;\n\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c += this.s;\n } else {\n c += this.s;\n\n while (i < a.t) {\n c -= a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c -= a.s;\n }\n\n r.s = c < 0 ? -1 : 0;\n if (c < -1) r[i++] = this.DV + c;else if (c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n} // (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\n\n\nfunction bnpMultiplyTo(a, r) {\n var x = this.abs(),\n y = a.abs();\n var i = x.t;\n r.t = i + y.t;\n\n while (--i >= 0) {\n r[i] = 0;\n }\n\n for (i = 0; i < y.t; ++i) {\n r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n }\n\n r.s = 0;\n r.clamp();\n if (this.s != a.s) BigInteger.ZERO.subTo(r, r);\n} // (protected) r = this^2, r != this (HAC 14.16)\n\n\nfunction bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2 * x.t;\n\n while (--i >= 0) {\n r[i] = 0;\n }\n\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1);\n\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV;\n r[i + x.t + 1] = 1;\n }\n }\n\n if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n r.s = 0;\n r.clamp();\n} // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\n\n\nfunction bnpDivRemTo(m, q, r) {\n var pm = m.abs();\n if (pm.t <= 0) return;\n var pt = this.abs();\n\n if (pt.t < pm.t) {\n if (q != null) q.fromInt(0);\n if (r != null) this.copyTo(r);\n return;\n }\n\n if (r == null) r = nbi();\n var y = nbi(),\n ts = this.s,\n ms = m.s;\n var nsh = this.DB - nbits(pm[pm.t - 1]); // normalize modulus\n\n if (nsh > 0) {\n pm.lShiftTo(nsh, y);\n pt.lShiftTo(nsh, r);\n } else {\n pm.copyTo(y);\n pt.copyTo(r);\n }\n\n var ys = y.t;\n var y0 = y[ys - 1];\n if (y0 == 0) return;\n var yt = y0 * (1 << this.F1) + (ys > 1 ? y[ys - 2] >> this.F2 : 0);\n var d1 = this.FV / yt,\n d2 = (1 << this.F1) / yt,\n e = 1 << this.F2;\n var i = r.t,\n j = i - ys,\n t = q == null ? nbi() : q;\n y.dlShiftTo(j, t);\n\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t, r);\n }\n\n BigInteger.ONE.dlShiftTo(ys, t);\n t.subTo(y, y); // \"negative\" y so we can replace sub with am later\n\n while (y.t < ys) {\n y[y.t++] = 0;\n }\n\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = r[--i] == y0 ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) {\n // Try it out\n y.dlShiftTo(j, t);\n r.subTo(t, r);\n\n while (r[i] < --qd) {\n r.subTo(t, r);\n }\n }\n }\n\n if (q != null) {\n r.drShiftTo(ys, q);\n if (ts != ms) BigInteger.ZERO.subTo(q, q);\n }\n\n r.t = ys;\n r.clamp();\n if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder\n\n if (ts < 0) BigInteger.ZERO.subTo(r, r);\n} // (public) this mod a\n\n\nfunction bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a, null, r);\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r);\n return r;\n} // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\n\n\nfunction bnpInvDigit() {\n if (this.t < 1) return 0;\n var x = this[0];\n if ((x & 1) == 0) return 0;\n var y = x & 3; // y == 1/x mod 2^2\n\n y = y * (2 - (x & 0xf) * y) & 0xf; // y == 1/x mod 2^4\n\n y = y * (2 - (x & 0xff) * y) & 0xff; // y == 1/x mod 2^8\n\n y = y * (2 - ((x & 0xffff) * y & 0xffff)) & 0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n\n y = y * (2 - x * y % this.DV) % this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n\n return y > 0 ? this.DV - y : -y;\n}\n\nfunction bnEquals(a) {\n return this.compareTo(a) == 0;\n} // (protected) r = this + a\n\n\nfunction bnpAddTo(a, r) {\n var i = 0,\n c = 0,\n m = Math.min(a.t, this.t);\n\n while (i < m) {\n c += this[i] + a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n if (a.t < this.t) {\n c += a.s;\n\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c += this.s;\n } else {\n c += this.s;\n\n while (i < a.t) {\n c += a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c += a.s;\n }\n\n r.s = c < 0 ? -1 : 0;\n if (c > 0) r[i++] = c;else if (c < -1) r[i++] = this.DV + c;\n r.t = i;\n r.clamp();\n} // (public) this + a\n\n\nfunction bnAdd(a) {\n var r = nbi();\n this.addTo(a, r);\n return r;\n} // (public) this - a\n\n\nfunction bnSubtract(a) {\n var r = nbi();\n this.subTo(a, r);\n return r;\n} // (public) this * a\n\n\nfunction bnMultiply(a) {\n var r = nbi();\n this.multiplyTo(a, r);\n return r;\n} // (public) this / a\n\n\nfunction bnDivide(a) {\n var r = nbi();\n this.divRemTo(a, r, null);\n return r;\n} // Montgomery reduction\n\n\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp & 0x7fff;\n this.mph = this.mp >> 15;\n this.um = (1 << m.DB - 15) - 1;\n this.mt2 = 2 * m.t;\n} // xR mod m\n\n\nfunction montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t, r);\n r.divRemTo(this.m, null, r);\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r);\n return r;\n} // x/R mod m\n\n\nfunction montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n} // x = x/R mod m (HAC 14.32)\n\n\nfunction montReduce(x) {\n while (x.t <= this.mt2) {\n // pad x so am has enough room later\n x[x.t++] = 0;\n }\n\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff;\n var u0 = j * this.mpl + ((j * this.mph + (x[i] >> 15) * this.mpl & this.um) << 15) & x.DM; // use am to combine the multiply-shift-add into one call\n\n j = i + this.m.t;\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t); // propagate carry\n\n while (x[j] >= x.DV) {\n x[j] -= x.DV;\n x[++j]++;\n }\n }\n\n x.clamp();\n x.drShiftTo(this.m.t, x);\n if (x.compareTo(this.m) >= 0) x.subTo(this.m, x);\n} // r = \"x^2/R mod m\"; x != r\n\n\nfunction montSqrTo(x, r) {\n x.squareTo(r);\n this.reduce(r);\n} // r = \"xy/R mod m\"; x,y != r\n\n\nfunction montMulTo(x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n}\n\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo; // (public) this^e % m (HAC 14.85)\n\nfunction bnModPow(e, m, callback) {\n var i = e.bitLength(),\n k,\n r = nbv(1),\n z = new Montgomery(m);\n if (i <= 0) return r;else if (i < 18) k = 1;else if (i < 48) k = 3;else if (i < 144) k = 4;else if (i < 768) k = 5;else k = 6; // precomputation\n\n var g = new Array(),\n n = 3,\n k1 = k - 1,\n km = (1 << k) - 1;\n g[1] = z.convert(this);\n\n if (k > 1) {\n var g2 = nbi();\n z.sqrTo(g[1], g2);\n\n while (n <= km) {\n g[n] = nbi();\n z.mulTo(g2, g[n - 2], g[n]);\n n += 2;\n }\n }\n\n var j = e.t - 1,\n w,\n is1 = true,\n r2 = nbi(),\n t;\n i = nbits(e[j]) - 1;\n\n while (j >= 0) {\n if (i >= k1) w = e[j] >> i - k1 & km;else {\n w = (e[j] & (1 << i + 1) - 1) << k1 - i;\n if (j > 0) w |= e[j - 1] >> this.DB + i - k1;\n }\n n = k;\n\n while ((w & 1) == 0) {\n w >>= 1;\n --n;\n }\n\n if ((i -= n) < 0) {\n i += this.DB;\n --j;\n }\n\n if (is1) {\n // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n } else {\n while (n > 1) {\n z.sqrTo(r, r2);\n z.sqrTo(r2, r);\n n -= 2;\n }\n\n if (n > 0) z.sqrTo(r, r2);else {\n t = r;\n r = r2;\n r2 = t;\n }\n z.mulTo(r2, g[w], r);\n }\n\n while (j >= 0 && (e[j] & 1 << i) == 0) {\n z.sqrTo(r, r2);\n t = r;\n r = r2;\n r2 = t;\n\n if (--i < 0) {\n i = this.DB - 1;\n --j;\n }\n }\n }\n\n var result = z.revert(r);\n callback(null, result);\n return result;\n} // protected\n\n\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.addTo = bnpAddTo; // public\n\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.modPow = bnModPow; // \"constants\"\n\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Buffer } from 'buffer';\nimport CryptoJS from 'crypto-js/core';\nimport 'crypto-js/lib-typedarrays'; // necessary for crypto js\n\nimport SHA256 from 'crypto-js/sha256';\nimport HmacSHA256 from 'crypto-js/hmac-sha256';\nimport WordArray from './utils/WordArray';\n\nvar randomBytes = function randomBytes(nBytes) {\n return Buffer.from(new WordArray().random(nBytes).toString(), 'hex');\n};\n\nimport BigInteger from './BigInteger';\nvar initN = 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1' + '29024E088A67CC74020BBEA63B139B22514A08798E3404DD' + 'EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245' + 'E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' + 'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D' + 'C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F' + '83655D23DCA3AD961C62F356208552BB9ED529077096966D' + '670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B' + 'E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9' + 'DE2BCBF6955817183995497CEA956AE515D2261898FA0510' + '15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64' + 'ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7' + 'ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B' + 'F12FFA06D98A0864D87602733EC86A64521F2B18177B200C' + 'BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31' + '43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF';\nvar newPasswordRequiredChallengeUserAttributePrefix = 'userAttributes.';\n/** @class */\n\nvar AuthenticationHelper = /*#__PURE__*/function () {\n /**\n * Constructs a new AuthenticationHelper object\n * @param {string} PoolName Cognito user pool name.\n */\n function AuthenticationHelper(PoolName) {\n this.N = new BigInteger(initN, 16);\n this.g = new BigInteger('2', 16);\n this.k = new BigInteger(this.hexHash(\"00\" + this.N.toString(16) + \"0\" + this.g.toString(16)), 16);\n this.smallAValue = this.generateRandomSmallA();\n this.getLargeAValue(function () {});\n this.infoBits = Buffer.from('Caldera Derived Key', 'utf8');\n this.poolName = PoolName;\n }\n /**\n * @returns {BigInteger} small A, a random number\n */\n\n\n var _proto = AuthenticationHelper.prototype;\n\n _proto.getSmallAValue = function getSmallAValue() {\n return this.smallAValue;\n }\n /**\n * @param {nodeCallback} callback Called with (err, largeAValue)\n * @returns {void}\n */\n ;\n\n _proto.getLargeAValue = function getLargeAValue(callback) {\n var _this = this;\n\n if (this.largeAValue) {\n callback(null, this.largeAValue);\n } else {\n this.calculateA(this.smallAValue, function (err, largeAValue) {\n if (err) {\n callback(err, null);\n }\n\n _this.largeAValue = largeAValue;\n callback(null, _this.largeAValue);\n });\n }\n }\n /**\n * helper function to generate a random big integer\n * @returns {BigInteger} a random value.\n * @private\n */\n ;\n\n _proto.generateRandomSmallA = function generateRandomSmallA() {\n var hexRandom = randomBytes(128).toString('hex');\n var randomBigInt = new BigInteger(hexRandom, 16);\n var smallABigInt = randomBigInt.mod(this.N);\n return smallABigInt;\n }\n /**\n * helper function to generate a random string\n * @returns {string} a random value.\n * @private\n */\n ;\n\n _proto.generateRandomString = function generateRandomString() {\n return randomBytes(40).toString('base64');\n }\n /**\n * @returns {string} Generated random value included in password hash.\n */\n ;\n\n _proto.getRandomPassword = function getRandomPassword() {\n return this.randomPassword;\n }\n /**\n * @returns {string} Generated random value included in devices hash.\n */\n ;\n\n _proto.getSaltDevices = function getSaltDevices() {\n return this.SaltToHashDevices;\n }\n /**\n * @returns {string} Value used to verify devices.\n */\n ;\n\n _proto.getVerifierDevices = function getVerifierDevices() {\n return this.verifierDevices;\n }\n /**\n * Generate salts and compute verifier.\n * @param {string} deviceGroupKey Devices to generate verifier for.\n * @param {string} username User to generate verifier for.\n * @param {nodeCallback} callback Called with (err, null)\n * @returns {void}\n */\n ;\n\n _proto.generateHashDevice = function generateHashDevice(deviceGroupKey, username, callback) {\n var _this2 = this;\n\n this.randomPassword = this.generateRandomString();\n var combinedString = \"\" + deviceGroupKey + username + \":\" + this.randomPassword;\n var hashedString = this.hash(combinedString);\n var hexRandom = randomBytes(16).toString('hex');\n this.SaltToHashDevices = this.padHex(new BigInteger(hexRandom, 16));\n this.g.modPow(new BigInteger(this.hexHash(this.SaltToHashDevices + hashedString), 16), this.N, function (err, verifierDevicesNotPadded) {\n if (err) {\n callback(err, null);\n }\n\n _this2.verifierDevices = _this2.padHex(verifierDevicesNotPadded);\n callback(null, null);\n });\n }\n /**\n * Calculate the client's public value A = g^a%N\n * with the generated random number a\n * @param {BigInteger} a Randomly generated small A.\n * @param {nodeCallback} callback Called with (err, largeAValue)\n * @returns {void}\n * @private\n */\n ;\n\n _proto.calculateA = function calculateA(a, callback) {\n var _this3 = this;\n\n this.g.modPow(a, this.N, function (err, A) {\n if (err) {\n callback(err, null);\n }\n\n if (A.mod(_this3.N).equals(BigInteger.ZERO)) {\n callback(new Error('Illegal paramater. A mod N cannot be 0.'), null);\n }\n\n callback(null, A);\n });\n }\n /**\n * Calculate the client's value U which is the hash of A and B\n * @param {BigInteger} A Large A value.\n * @param {BigInteger} B Server B value.\n * @returns {BigInteger} Computed U value.\n * @private\n */\n ;\n\n _proto.calculateU = function calculateU(A, B) {\n this.UHexHash = this.hexHash(this.padHex(A) + this.padHex(B));\n var finalU = new BigInteger(this.UHexHash, 16);\n return finalU;\n }\n /**\n * Calculate a hash from a bitArray\n * @param {Buffer} buf Value to hash.\n * @returns {String} Hex-encoded hash.\n * @private\n */\n ;\n\n _proto.hash = function hash(buf) {\n var str = buf instanceof Buffer ? CryptoJS.lib.WordArray.create(buf) : buf;\n var hashHex = SHA256(str).toString();\n return new Array(64 - hashHex.length).join('0') + hashHex;\n }\n /**\n * Calculate a hash from a hex string\n * @param {String} hexStr Value to hash.\n * @returns {String} Hex-encoded hash.\n * @private\n */\n ;\n\n _proto.hexHash = function hexHash(hexStr) {\n return this.hash(Buffer.from(hexStr, 'hex'));\n }\n /**\n * Standard hkdf algorithm\n * @param {Buffer} ikm Input key material.\n * @param {Buffer} salt Salt value.\n * @returns {Buffer} Strong key material.\n * @private\n */\n ;\n\n _proto.computehkdf = function computehkdf(ikm, salt) {\n var infoBitsWordArray = CryptoJS.lib.WordArray.create(Buffer.concat([this.infoBits, Buffer.from(String.fromCharCode(1), 'utf8')]));\n var ikmWordArray = ikm instanceof Buffer ? CryptoJS.lib.WordArray.create(ikm) : ikm;\n var saltWordArray = salt instanceof Buffer ? CryptoJS.lib.WordArray.create(salt) : salt;\n var prk = HmacSHA256(ikmWordArray, saltWordArray);\n var hmac = HmacSHA256(infoBitsWordArray, prk);\n return Buffer.from(hmac.toString(), 'hex').slice(0, 16);\n }\n /**\n * Calculates the final hkdf based on computed S value, and computed U value and the key\n * @param {String} username Username.\n * @param {String} password Password.\n * @param {BigInteger} serverBValue Server B value.\n * @param {BigInteger} salt Generated salt.\n * @param {nodeCallback} callback Called with (err, hkdfValue)\n * @returns {void}\n */\n ;\n\n _proto.getPasswordAuthenticationKey = function getPasswordAuthenticationKey(username, password, serverBValue, salt, callback) {\n var _this4 = this;\n\n if (serverBValue.mod(this.N).equals(BigInteger.ZERO)) {\n throw new Error('B cannot be zero.');\n }\n\n this.UValue = this.calculateU(this.largeAValue, serverBValue);\n\n if (this.UValue.equals(BigInteger.ZERO)) {\n throw new Error('U cannot be zero.');\n }\n\n var usernamePassword = \"\" + this.poolName + username + \":\" + password;\n var usernamePasswordHash = this.hash(usernamePassword);\n var xValue = new BigInteger(this.hexHash(this.padHex(salt) + usernamePasswordHash), 16);\n this.calculateS(xValue, serverBValue, function (err, sValue) {\n if (err) {\n callback(err, null);\n }\n\n var hkdf = _this4.computehkdf(Buffer.from(_this4.padHex(sValue), 'hex'), Buffer.from(_this4.padHex(_this4.UValue.toString(16)), 'hex'));\n\n callback(null, hkdf);\n });\n }\n /**\n * Calculates the S value used in getPasswordAuthenticationKey\n * @param {BigInteger} xValue Salted password hash value.\n * @param {BigInteger} serverBValue Server B value.\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.calculateS = function calculateS(xValue, serverBValue, callback) {\n var _this5 = this;\n\n this.g.modPow(xValue, this.N, function (err, gModPowXN) {\n if (err) {\n callback(err, null);\n }\n\n var intValue2 = serverBValue.subtract(_this5.k.multiply(gModPowXN));\n intValue2.modPow(_this5.smallAValue.add(_this5.UValue.multiply(xValue)), _this5.N, function (err2, result) {\n if (err2) {\n callback(err2, null);\n }\n\n callback(null, result.mod(_this5.N));\n });\n });\n }\n /**\n * Return constant newPasswordRequiredChallengeUserAttributePrefix\n * @return {newPasswordRequiredChallengeUserAttributePrefix} constant prefix value\n */\n ;\n\n _proto.getNewPasswordRequiredChallengeUserAttributePrefix = function getNewPasswordRequiredChallengeUserAttributePrefix() {\n return newPasswordRequiredChallengeUserAttributePrefix;\n }\n /**\n * Converts a BigInteger (or hex string) to hex format padded with zeroes for hashing\n * @param {BigInteger|String} bigInt Number or string to pad.\n * @returns {String} Padded hex string.\n */\n ;\n\n _proto.padHex = function padHex(bigInt) {\n var hashStr = bigInt.toString(16);\n\n if (hashStr.length % 2 === 1) {\n hashStr = \"0\" + hashStr;\n } else if ('89ABCDEFabcdef'.indexOf(hashStr[0]) !== -1) {\n hashStr = \"00\" + hashStr;\n }\n\n return hashStr;\n };\n\n return AuthenticationHelper;\n}();\n\nexport { AuthenticationHelper as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Buffer } from 'buffer';\n/** @class */\n\nvar CognitoJwtToken = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoJwtToken object\n * @param {string=} token The JWT token.\n */\n function CognitoJwtToken(token) {\n // Assign object\n this.jwtToken = token || '';\n this.payload = this.decodePayload();\n }\n /**\n * @returns {string} the record's token.\n */\n\n\n var _proto = CognitoJwtToken.prototype;\n\n _proto.getJwtToken = function getJwtToken() {\n return this.jwtToken;\n }\n /**\n * @returns {int} the token's expiration (exp member).\n */\n ;\n\n _proto.getExpiration = function getExpiration() {\n return this.payload.exp;\n }\n /**\n * @returns {int} the token's \"issued at\" (iat member).\n */\n ;\n\n _proto.getIssuedAt = function getIssuedAt() {\n return this.payload.iat;\n }\n /**\n * @returns {object} the token's payload.\n */\n ;\n\n _proto.decodePayload = function decodePayload() {\n var payload = this.jwtToken.split('.')[1];\n\n try {\n return JSON.parse(Buffer.from(payload, 'base64').toString('utf8'));\n } catch (err) {\n return {};\n }\n };\n\n return CognitoJwtToken;\n}();\n\nexport { CognitoJwtToken as default };","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n/*\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport CognitoJwtToken from './CognitoJwtToken';\n/** @class */\n\nvar CognitoAccessToken = /*#__PURE__*/function (_CognitoJwtToken) {\n _inheritsLoose(CognitoAccessToken, _CognitoJwtToken);\n /**\n * Constructs a new CognitoAccessToken object\n * @param {string=} AccessToken The JWT access token.\n */\n\n\n function CognitoAccessToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n AccessToken = _ref.AccessToken;\n\n return _CognitoJwtToken.call(this, AccessToken || '') || this;\n }\n\n return CognitoAccessToken;\n}(CognitoJwtToken);\n\nexport { CognitoAccessToken as default };","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport CognitoJwtToken from './CognitoJwtToken';\n/** @class */\n\nvar CognitoIdToken = /*#__PURE__*/function (_CognitoJwtToken) {\n _inheritsLoose(CognitoIdToken, _CognitoJwtToken);\n /**\n * Constructs a new CognitoIdToken object\n * @param {string=} IdToken The JWT Id token\n */\n\n\n function CognitoIdToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n IdToken = _ref.IdToken;\n\n return _CognitoJwtToken.call(this, IdToken || '') || this;\n }\n\n return CognitoIdToken;\n}(CognitoJwtToken);\n\nexport { CognitoIdToken as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @class */\nvar CognitoRefreshToken = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoRefreshToken object\n * @param {string=} RefreshToken The JWT refresh token.\n */\n function CognitoRefreshToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n RefreshToken = _ref.RefreshToken; // Assign object\n\n\n this.token = RefreshToken || '';\n }\n /**\n * @returns {string} the record's token.\n */\n\n\n var _proto = CognitoRefreshToken.prototype;\n\n _proto.getToken = function getToken() {\n return this.token;\n };\n\n return CognitoRefreshToken;\n}();\n\nexport { CognitoRefreshToken as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @class */\nvar CognitoUserSession = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserSession object\n * @param {CognitoIdToken} IdToken The session's Id token.\n * @param {CognitoRefreshToken=} RefreshToken The session's refresh token.\n * @param {CognitoAccessToken} AccessToken The session's access token.\n * @param {int} ClockDrift The saved computer's clock drift or undefined to force calculation.\n */\n function CognitoUserSession(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n IdToken = _ref.IdToken,\n RefreshToken = _ref.RefreshToken,\n AccessToken = _ref.AccessToken,\n ClockDrift = _ref.ClockDrift;\n\n if (AccessToken == null || IdToken == null) {\n throw new Error('Id token and Access Token must be present.');\n }\n\n this.idToken = IdToken;\n this.refreshToken = RefreshToken;\n this.accessToken = AccessToken;\n this.clockDrift = ClockDrift === undefined ? this.calculateClockDrift() : ClockDrift;\n }\n /**\n * @returns {CognitoIdToken} the session's Id token\n */\n\n\n var _proto = CognitoUserSession.prototype;\n\n _proto.getIdToken = function getIdToken() {\n return this.idToken;\n }\n /**\n * @returns {CognitoRefreshToken} the session's refresh token\n */\n ;\n\n _proto.getRefreshToken = function getRefreshToken() {\n return this.refreshToken;\n }\n /**\n * @returns {CognitoAccessToken} the session's access token\n */\n ;\n\n _proto.getAccessToken = function getAccessToken() {\n return this.accessToken;\n }\n /**\n * @returns {int} the session's clock drift\n */\n ;\n\n _proto.getClockDrift = function getClockDrift() {\n return this.clockDrift;\n }\n /**\n * @returns {int} the computer's clock drift\n */\n ;\n\n _proto.calculateClockDrift = function calculateClockDrift() {\n var now = Math.floor(new Date() / 1000);\n var iat = Math.min(this.accessToken.getIssuedAt(), this.idToken.getIssuedAt());\n return now - iat;\n }\n /**\n * Checks to see if the session is still valid based on session expiry information found\n * in tokens and the current time (adjusted with clock drift)\n * @returns {boolean} if the session is still valid\n */\n ;\n\n _proto.isValid = function isValid() {\n var now = Math.floor(new Date() / 1000);\n var adjusted = now - this.clockDrift;\n return adjusted < this.accessToken.getExpiration() && adjusted < this.idToken.getExpiration();\n };\n\n return CognitoUserSession;\n}();\n\nexport { CognitoUserSession as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\nvar monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nvar weekNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n/** @class */\n\nvar DateHelper = /*#__PURE__*/function () {\n function DateHelper() {}\n\n var _proto = DateHelper.prototype;\n /**\n * @returns {string} The current time in \"ddd MMM D HH:mm:ss UTC YYYY\" format.\n */\n\n _proto.getNowString = function getNowString() {\n var now = new Date();\n var weekDay = weekNames[now.getUTCDay()];\n var month = monthNames[now.getUTCMonth()];\n var day = now.getUTCDate();\n var hours = now.getUTCHours();\n\n if (hours < 10) {\n hours = \"0\" + hours;\n }\n\n var minutes = now.getUTCMinutes();\n\n if (minutes < 10) {\n minutes = \"0\" + minutes;\n }\n\n var seconds = now.getUTCSeconds();\n\n if (seconds < 10) {\n seconds = \"0\" + seconds;\n }\n\n var year = now.getUTCFullYear(); // ddd MMM D HH:mm:ss UTC YYYY\n\n var dateNow = weekDay + \" \" + month + \" \" + day + \" \" + hours + \":\" + minutes + \":\" + seconds + \" UTC \" + year;\n return dateNow;\n };\n\n return DateHelper;\n}();\n\nexport { DateHelper as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @class */\nvar CognitoUserAttribute = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserAttribute object\n * @param {string=} Name The record's name\n * @param {string=} Value The record's value\n */\n function CognitoUserAttribute(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n Name = _ref.Name,\n Value = _ref.Value;\n\n this.Name = Name || '';\n this.Value = Value || '';\n }\n /**\n * @returns {string} the record's value.\n */\n\n\n var _proto = CognitoUserAttribute.prototype;\n\n _proto.getValue = function getValue() {\n return this.Value;\n }\n /**\n * Sets the record's value.\n * @param {string} value The new value.\n * @returns {CognitoUserAttribute} The record for method chaining.\n */\n ;\n\n _proto.setValue = function setValue(value) {\n this.Value = value;\n return this;\n }\n /**\n * @returns {string} the record's name.\n */\n ;\n\n _proto.getName = function getName() {\n return this.Name;\n }\n /**\n * Sets the record's name\n * @param {string} name The new name.\n * @returns {CognitoUserAttribute} The record for method chaining.\n */\n ;\n\n _proto.setName = function setName(name) {\n this.Name = name;\n return this;\n }\n /**\n * @returns {string} a string representation of the record.\n */\n ;\n\n _proto.toString = function toString() {\n return JSON.stringify(this);\n }\n /**\n * @returns {object} a flat object representing the record.\n */\n ;\n\n _proto.toJSON = function toJSON() {\n return {\n Name: this.Name,\n Value: this.Value\n };\n };\n\n return CognitoUserAttribute;\n}();\n\nexport { CognitoUserAttribute as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\nvar dataMemory = {};\n/** @class */\n\nvar MemoryStorage = /*#__PURE__*/function () {\n function MemoryStorage() {}\n /**\n * This is used to set a specific item in storage\n * @param {string} key - the key for the item\n * @param {object} value - the value\n * @returns {string} value that was set\n */\n\n\n MemoryStorage.setItem = function setItem(key, value) {\n dataMemory[key] = value;\n return dataMemory[key];\n }\n /**\n * This is used to get a specific key from storage\n * @param {string} key - the key for the item\n * This is used to clear the storage\n * @returns {string} the data item\n */\n ;\n\n MemoryStorage.getItem = function getItem(key) {\n return Object.prototype.hasOwnProperty.call(dataMemory, key) ? dataMemory[key] : undefined;\n }\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {string} value - value that was deleted\n */\n ;\n\n MemoryStorage.removeItem = function removeItem(key) {\n return delete dataMemory[key];\n }\n /**\n * This is used to clear the storage\n * @returns {string} nothing\n */\n ;\n\n MemoryStorage.clear = function clear() {\n dataMemory = {};\n return dataMemory;\n };\n\n return MemoryStorage;\n}();\n/** @class */\n\n\nvar StorageHelper = /*#__PURE__*/function () {\n /**\n * This is used to get a storage object\n * @returns {object} the storage\n */\n function StorageHelper() {\n try {\n this.storageWindow = window.localStorage;\n this.storageWindow.setItem('aws.cognito.test-ls', 1);\n this.storageWindow.removeItem('aws.cognito.test-ls');\n } catch (exception) {\n this.storageWindow = MemoryStorage;\n }\n }\n /**\n * This is used to return the storage\n * @returns {object} the storage\n */\n\n\n var _proto = StorageHelper.prototype;\n\n _proto.getStorage = function getStorage() {\n return this.storageWindow;\n };\n\n return StorageHelper;\n}();\n\nexport { StorageHelper as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Buffer } from 'buffer';\nimport CryptoJS from 'crypto-js/core';\nimport TypedArrays from 'crypto-js/lib-typedarrays'; // necessary for crypto js\n\nimport Base64 from 'crypto-js/enc-base64';\nimport HmacSHA256 from 'crypto-js/hmac-sha256';\nimport BigInteger from './BigInteger';\nimport AuthenticationHelper from './AuthenticationHelper';\nimport CognitoAccessToken from './CognitoAccessToken';\nimport CognitoIdToken from './CognitoIdToken';\nimport CognitoRefreshToken from './CognitoRefreshToken';\nimport CognitoUserSession from './CognitoUserSession';\nimport DateHelper from './DateHelper';\nimport CognitoUserAttribute from './CognitoUserAttribute';\nimport StorageHelper from './StorageHelper';\n/**\n * @callback nodeCallback\n * @template T result\n * @param {*} err The operation failure reason, or null.\n * @param {T} result The operation result.\n */\n\n/**\n * @callback onFailure\n * @param {*} err Failure reason.\n */\n\n/**\n * @callback onSuccess\n * @template T result\n * @param {T} result The operation result.\n */\n\n/**\n * @callback mfaRequired\n * @param {*} details MFA challenge details.\n */\n\n/**\n * @callback customChallenge\n * @param {*} details Custom challenge details.\n */\n\n/**\n * @callback inputVerificationCode\n * @param {*} data Server response.\n */\n\n/**\n * @callback authSuccess\n * @param {CognitoUserSession} session The new session.\n * @param {bool=} userConfirmationNecessary User must be confirmed.\n */\n\nvar isBrowser = typeof navigator !== 'undefined';\nvar userAgent = isBrowser ? navigator.userAgent : 'nodejs';\n/** @class */\n\nvar CognitoUser = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUser object\n * @param {object} data Creation options\n * @param {string} data.Username The user's username.\n * @param {CognitoUserPool} data.Pool Pool containing the user.\n * @param {object} data.Storage Optional storage object.\n */\n function CognitoUser(data) {\n if (data == null || data.Username == null || data.Pool == null) {\n throw new Error('Username and Pool information are required.');\n }\n\n this.username = data.Username || '';\n this.pool = data.Pool;\n this.Session = null;\n this.client = data.Pool.client;\n this.signInUserSession = null;\n this.authenticationFlowType = 'USER_SRP_AUTH';\n this.storage = data.Storage || new StorageHelper().getStorage();\n this.keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n this.userDataKey = this.keyPrefix + \".\" + this.username + \".userData\";\n }\n /**\n * Sets the session for this user\n * @param {CognitoUserSession} signInUserSession the session\n * @returns {void}\n */\n\n\n var _proto = CognitoUser.prototype;\n\n _proto.setSignInUserSession = function setSignInUserSession(signInUserSession) {\n this.clearCachedUserData();\n this.signInUserSession = signInUserSession;\n this.cacheTokens();\n }\n /**\n * @returns {CognitoUserSession} the current session for this user\n */\n ;\n\n _proto.getSignInUserSession = function getSignInUserSession() {\n return this.signInUserSession;\n }\n /**\n * @returns {string} the user's username\n */\n ;\n\n _proto.getUsername = function getUsername() {\n return this.username;\n }\n /**\n * @returns {String} the authentication flow type\n */\n ;\n\n _proto.getAuthenticationFlowType = function getAuthenticationFlowType() {\n return this.authenticationFlowType;\n }\n /**\n * sets authentication flow type\n * @param {string} authenticationFlowType New value.\n * @returns {void}\n */\n ;\n\n _proto.setAuthenticationFlowType = function setAuthenticationFlowType(authenticationFlowType) {\n this.authenticationFlowType = authenticationFlowType;\n }\n /**\n * This is used for authenticating the user through the custom authentication flow.\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.initiateAuth = function initiateAuth(authDetails, callback) {\n var _this = this;\n\n var authParameters = authDetails.getAuthParameters();\n authParameters.USERNAME = this.username;\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n ClientId: this.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('InitiateAuth', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeName = data.ChallengeName;\n var challengeParameters = data.ChallengeParameters;\n\n if (challengeName === 'CUSTOM_CHALLENGE') {\n _this.Session = data.Session;\n return callback.customChallenge(challengeParameters);\n }\n\n _this.signInUserSession = _this.getCognitoUserSession(data.AuthenticationResult);\n\n _this.cacheTokens();\n\n return callback.onSuccess(_this.signInUserSession);\n });\n }\n /**\n * This is used for authenticating the user.\n * stuff\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {newPasswordRequired} callback.newPasswordRequired new\n * password and any required attributes are required to continue\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.authenticateUser = function authenticateUser(authDetails, callback) {\n if (this.authenticationFlowType === 'USER_PASSWORD_AUTH') {\n return this.authenticateUserPlainUsernamePassword(authDetails, callback);\n } else if (this.authenticationFlowType === 'USER_SRP_AUTH' || this.authenticationFlowType === 'CUSTOM_AUTH') {\n return this.authenticateUserDefaultAuth(authDetails, callback);\n }\n\n return callback.onFailure(new Error('Authentication flow type is invalid.'));\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * It calls the AuthenticationHelper for SRP related\n * stuff\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {newPasswordRequired} callback.newPasswordRequired new\n * password and any required attributes are required to continue\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.authenticateUserDefaultAuth = function authenticateUserDefaultAuth(authDetails, callback) {\n var _this2 = this;\n\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolId().split('_')[1]);\n var dateHelper = new DateHelper();\n var serverBValue;\n var salt;\n var authParameters = {};\n\n if (this.deviceKey != null) {\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n\n authParameters.USERNAME = this.username;\n authenticationHelper.getLargeAValue(function (errOnAValue, aValue) {\n // getLargeAValue callback start\n if (errOnAValue) {\n callback.onFailure(errOnAValue);\n }\n\n authParameters.SRP_A = aValue.toString(16);\n\n if (_this2.authenticationFlowType === 'CUSTOM_AUTH') {\n authParameters.CHALLENGE_NAME = 'SRP_A';\n }\n\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: _this2.authenticationFlowType,\n ClientId: _this2.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n\n if (_this2.getUserContextData(_this2.username)) {\n jsonReq.UserContextData = _this2.getUserContextData(_this2.username);\n }\n\n _this2.client.request('InitiateAuth', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeParameters = data.ChallengeParameters;\n _this2.username = challengeParameters.USER_ID_FOR_SRP;\n serverBValue = new BigInteger(challengeParameters.SRP_B, 16);\n salt = new BigInteger(challengeParameters.SALT, 16);\n\n _this2.getCachedDeviceKeyAndPassword();\n\n authenticationHelper.getPasswordAuthenticationKey(_this2.username, authDetails.getPassword(), serverBValue, salt, function (errOnHkdf, hkdf) {\n // getPasswordAuthenticationKey callback start\n if (errOnHkdf) {\n callback.onFailure(errOnHkdf);\n }\n\n var dateNow = dateHelper.getNowString();\n var message = CryptoJS.lib.WordArray.create(Buffer.concat([Buffer.from(_this2.pool.getUserPoolId().split('_')[1], 'utf8'), Buffer.from(_this2.username, 'utf8'), Buffer.from(challengeParameters.SECRET_BLOCK, 'base64'), Buffer.from(dateNow, 'utf8')]));\n var key = CryptoJS.lib.WordArray.create(hkdf);\n var signatureString = Base64.stringify(HmacSHA256(message, key));\n var challengeResponses = {};\n challengeResponses.USERNAME = _this2.username;\n challengeResponses.PASSWORD_CLAIM_SECRET_BLOCK = challengeParameters.SECRET_BLOCK;\n challengeResponses.TIMESTAMP = dateNow;\n challengeResponses.PASSWORD_CLAIM_SIGNATURE = signatureString;\n\n if (_this2.deviceKey != null) {\n challengeResponses.DEVICE_KEY = _this2.deviceKey;\n }\n\n var respondToAuthChallenge = function respondToAuthChallenge(challenge, challengeCallback) {\n return _this2.client.request('RespondToAuthChallenge', challenge, function (errChallenge, dataChallenge) {\n if (errChallenge && errChallenge.code === 'ResourceNotFoundException' && errChallenge.message.toLowerCase().indexOf('device') !== -1) {\n challengeResponses.DEVICE_KEY = null;\n _this2.deviceKey = null;\n _this2.randomPassword = null;\n _this2.deviceGroupKey = null;\n\n _this2.clearCachedDeviceKeyAndPassword();\n\n return respondToAuthChallenge(challenge, challengeCallback);\n }\n\n return challengeCallback(errChallenge, dataChallenge);\n });\n };\n\n var jsonReqResp = {\n ChallengeName: 'PASSWORD_VERIFIER',\n ClientId: _this2.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: data.Session,\n ClientMetadata: clientMetaData\n };\n\n if (_this2.getUserContextData()) {\n jsonReqResp.UserContextData = _this2.getUserContextData();\n }\n\n respondToAuthChallenge(jsonReqResp, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n\n return _this2.authenticateUserInternal(dataAuthenticate, authenticationHelper, callback);\n });\n return undefined; // getPasswordAuthenticationKey callback end\n });\n return undefined;\n }); // getLargeAValue callback end\n\n });\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * @param {AuthenticationDetails} authDetails Contains the authentication data.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.authenticateUserPlainUsernamePassword = function authenticateUserPlainUsernamePassword(authDetails, callback) {\n var _this3 = this;\n\n var authParameters = {};\n authParameters.USERNAME = this.username;\n authParameters.PASSWORD = authDetails.getPassword();\n\n if (!authParameters.PASSWORD) {\n callback.onFailure(new Error('PASSWORD parameter is required'));\n return;\n }\n\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolId().split('_')[1]);\n this.getCachedDeviceKeyAndPassword();\n\n if (this.deviceKey != null) {\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: 'USER_PASSWORD_AUTH',\n ClientId: this.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n\n if (this.getUserContextData(this.username)) {\n jsonReq.UserContextData = this.getUserContextData(this.username);\n } // USER_PASSWORD_AUTH happens in a single round-trip: client sends userName and password,\n // Cognito UserPools verifies password and returns tokens.\n\n\n this.client.request('InitiateAuth', jsonReq, function (err, authResult) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return _this3.authenticateUserInternal(authResult, authenticationHelper, callback);\n });\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * @param {object} dataAuthenticate authentication data\n * @param {object} authenticationHelper helper created\n * @param {callback} callback passed on from caller\n * @returns {void}\n */\n ;\n\n _proto.authenticateUserInternal = function authenticateUserInternal(dataAuthenticate, authenticationHelper, callback) {\n var _this4 = this;\n\n var challengeName = dataAuthenticate.ChallengeName;\n var challengeParameters = dataAuthenticate.ChallengeParameters;\n\n if (challengeName === 'SMS_MFA') {\n this.Session = dataAuthenticate.Session;\n return callback.mfaRequired(challengeName, challengeParameters);\n }\n\n if (challengeName === 'SELECT_MFA_TYPE') {\n this.Session = dataAuthenticate.Session;\n return callback.selectMFAType(challengeName, challengeParameters);\n }\n\n if (challengeName === 'MFA_SETUP') {\n this.Session = dataAuthenticate.Session;\n return callback.mfaSetup(challengeName, challengeParameters);\n }\n\n if (challengeName === 'SOFTWARE_TOKEN_MFA') {\n this.Session = dataAuthenticate.Session;\n return callback.totpRequired(challengeName, challengeParameters);\n }\n\n if (challengeName === 'CUSTOM_CHALLENGE') {\n this.Session = dataAuthenticate.Session;\n return callback.customChallenge(challengeParameters);\n }\n\n if (challengeName === 'NEW_PASSWORD_REQUIRED') {\n this.Session = dataAuthenticate.Session;\n var userAttributes = null;\n var rawRequiredAttributes = null;\n var requiredAttributes = [];\n var userAttributesPrefix = authenticationHelper.getNewPasswordRequiredChallengeUserAttributePrefix();\n\n if (challengeParameters) {\n userAttributes = JSON.parse(dataAuthenticate.ChallengeParameters.userAttributes);\n rawRequiredAttributes = JSON.parse(dataAuthenticate.ChallengeParameters.requiredAttributes);\n }\n\n if (rawRequiredAttributes) {\n for (var i = 0; i < rawRequiredAttributes.length; i++) {\n requiredAttributes[i] = rawRequiredAttributes[i].substr(userAttributesPrefix.length);\n }\n }\n\n return callback.newPasswordRequired(userAttributes, requiredAttributes);\n }\n\n if (challengeName === 'DEVICE_SRP_AUTH') {\n this.getDeviceResponse(callback);\n return undefined;\n }\n\n this.signInUserSession = this.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n this.challengeName = challengeName;\n this.cacheTokens();\n var newDeviceMetadata = dataAuthenticate.AuthenticationResult.NewDeviceMetadata;\n\n if (newDeviceMetadata == null) {\n return callback.onSuccess(this.signInUserSession);\n }\n\n authenticationHelper.generateHashDevice(dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey, dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey, function (errGenHash) {\n if (errGenHash) {\n return callback.onFailure(errGenHash);\n }\n\n var deviceSecretVerifierConfig = {\n Salt: Buffer.from(authenticationHelper.getSaltDevices(), 'hex').toString('base64'),\n PasswordVerifier: Buffer.from(authenticationHelper.getVerifierDevices(), 'hex').toString('base64')\n };\n _this4.verifierDevices = deviceSecretVerifierConfig.PasswordVerifier;\n _this4.deviceGroupKey = newDeviceMetadata.DeviceGroupKey;\n _this4.randomPassword = authenticationHelper.getRandomPassword();\n\n _this4.client.request('ConfirmDevice', {\n DeviceKey: newDeviceMetadata.DeviceKey,\n AccessToken: _this4.signInUserSession.getAccessToken().getJwtToken(),\n DeviceSecretVerifierConfig: deviceSecretVerifierConfig,\n DeviceName: userAgent\n }, function (errConfirm, dataConfirm) {\n if (errConfirm) {\n return callback.onFailure(errConfirm);\n }\n\n _this4.deviceKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey;\n\n _this4.cacheDeviceKeyAndPassword();\n\n if (dataConfirm.UserConfirmationNecessary === true) {\n return callback.onSuccess(_this4.signInUserSession, dataConfirm.UserConfirmationNecessary);\n }\n\n return callback.onSuccess(_this4.signInUserSession);\n });\n\n return undefined;\n });\n return undefined;\n }\n /**\n * This method is user to complete the NEW_PASSWORD_REQUIRED challenge.\n * Pass the new password with any new user attributes to be updated.\n * User attribute keys must be of format userAttributes..\n * @param {string} newPassword new password for this user\n * @param {object} requiredAttributeData map with values for all required attributes\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {mfaRequired} callback.mfaRequired MFA code required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.completeNewPasswordChallenge = function completeNewPasswordChallenge(newPassword, requiredAttributeData, callback, clientMetadata) {\n var _this5 = this;\n\n if (!newPassword) {\n return callback.onFailure(new Error('New password is required.'));\n }\n\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolId().split('_')[1]);\n var userAttributesPrefix = authenticationHelper.getNewPasswordRequiredChallengeUserAttributePrefix();\n var finalUserAttributes = {};\n\n if (requiredAttributeData) {\n Object.keys(requiredAttributeData).forEach(function (key) {\n finalUserAttributes[userAttributesPrefix + key] = requiredAttributeData[key];\n });\n }\n\n finalUserAttributes.NEW_PASSWORD = newPassword;\n finalUserAttributes.USERNAME = this.username;\n var jsonReq = {\n ChallengeName: 'NEW_PASSWORD_REQUIRED',\n ClientId: this.pool.getClientId(),\n ChallengeResponses: finalUserAttributes,\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n\n return _this5.authenticateUserInternal(dataAuthenticate, authenticationHelper, callback);\n });\n return undefined;\n }\n /**\n * This is used to get a session using device authentication. It is called at the end of user\n * authentication\n *\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n * @private\n */\n ;\n\n _proto.getDeviceResponse = function getDeviceResponse(callback, clientMetadata) {\n var _this6 = this;\n\n var authenticationHelper = new AuthenticationHelper(this.deviceGroupKey);\n var dateHelper = new DateHelper();\n var authParameters = {};\n authParameters.USERNAME = this.username;\n authParameters.DEVICE_KEY = this.deviceKey;\n authenticationHelper.getLargeAValue(function (errAValue, aValue) {\n // getLargeAValue callback start\n if (errAValue) {\n callback.onFailure(errAValue);\n }\n\n authParameters.SRP_A = aValue.toString(16);\n var jsonReq = {\n ChallengeName: 'DEVICE_SRP_AUTH',\n ClientId: _this6.pool.getClientId(),\n ChallengeResponses: authParameters,\n ClientMetadata: clientMetadata\n };\n\n if (_this6.getUserContextData()) {\n jsonReq.UserContextData = _this6.getUserContextData();\n }\n\n _this6.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeParameters = data.ChallengeParameters;\n var serverBValue = new BigInteger(challengeParameters.SRP_B, 16);\n var salt = new BigInteger(challengeParameters.SALT, 16);\n authenticationHelper.getPasswordAuthenticationKey(_this6.deviceKey, _this6.randomPassword, serverBValue, salt, function (errHkdf, hkdf) {\n // getPasswordAuthenticationKey callback start\n if (errHkdf) {\n return callback.onFailure(errHkdf);\n }\n\n var dateNow = dateHelper.getNowString();\n var message = CryptoJS.lib.WordArray.create(Buffer.concat([Buffer.from(_this6.deviceGroupKey, 'utf8'), Buffer.from(_this6.deviceKey, 'utf8'), Buffer.from(challengeParameters.SECRET_BLOCK, 'base64'), Buffer.from(dateNow, 'utf8')]));\n var key = CryptoJS.lib.WordArray.create(hkdf);\n var signatureString = Base64.stringify(HmacSHA256(message, key));\n var challengeResponses = {};\n challengeResponses.USERNAME = _this6.username;\n challengeResponses.PASSWORD_CLAIM_SECRET_BLOCK = challengeParameters.SECRET_BLOCK;\n challengeResponses.TIMESTAMP = dateNow;\n challengeResponses.PASSWORD_CLAIM_SIGNATURE = signatureString;\n challengeResponses.DEVICE_KEY = _this6.deviceKey;\n var jsonReqResp = {\n ChallengeName: 'DEVICE_PASSWORD_VERIFIER',\n ClientId: _this6.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: data.Session\n };\n\n if (_this6.getUserContextData()) {\n jsonReqResp.UserContextData = _this6.getUserContextData();\n }\n\n _this6.client.request('RespondToAuthChallenge', jsonReqResp, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n\n _this6.signInUserSession = _this6.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n\n _this6.cacheTokens();\n\n return callback.onSuccess(_this6.signInUserSession);\n });\n\n return undefined; // getPasswordAuthenticationKey callback end\n });\n return undefined;\n }); // getLargeAValue callback end\n\n });\n }\n /**\n * This is used for a certain user to confirm the registration by using a confirmation code\n * @param {string} confirmationCode Code entered by user.\n * @param {bool} forceAliasCreation Allow migrating from an existing email / phone number.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.confirmRegistration = function confirmRegistration(confirmationCode, forceAliasCreation, callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n ConfirmationCode: confirmationCode,\n Username: this.username,\n ForceAliasCreation: forceAliasCreation,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('ConfirmSignUp', jsonReq, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n }\n /**\n * This is used by the user once he has the responses to a custom challenge\n * @param {string} answerChallenge The custom challenge answer.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {customChallenge} callback.customChallenge\n * Custom challenge response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.sendCustomChallengeAnswer = function sendCustomChallengeAnswer(answerChallenge, callback, clientMetadata) {\n var _this7 = this;\n\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.ANSWER = answerChallenge;\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolId().split('_')[1]);\n this.getCachedDeviceKeyAndPassword();\n\n if (this.deviceKey != null) {\n challengeResponses.DEVICE_KEY = this.deviceKey;\n }\n\n var jsonReq = {\n ChallengeName: 'CUSTOM_CHALLENGE',\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return _this7.authenticateUserInternal(data, authenticationHelper, callback);\n });\n }\n /**\n * This is used by the user once he has an MFA code\n * @param {string} confirmationCode The MFA code entered by the user.\n * @param {object} callback Result callback map.\n * @param {string} mfaType The mfa we are replying to.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.sendMFACode = function sendMFACode(confirmationCode, callback, mfaType, clientMetadata) {\n var _this8 = this;\n\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.SMS_MFA_CODE = confirmationCode;\n var mfaTypeSelection = mfaType || 'SMS_MFA';\n\n if (mfaTypeSelection === 'SOFTWARE_TOKEN_MFA') {\n challengeResponses.SOFTWARE_TOKEN_MFA_CODE = confirmationCode;\n }\n\n if (this.deviceKey != null) {\n challengeResponses.DEVICE_KEY = this.deviceKey;\n }\n\n var jsonReq = {\n ChallengeName: mfaTypeSelection,\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, dataAuthenticate) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeName = dataAuthenticate.ChallengeName;\n\n if (challengeName === 'DEVICE_SRP_AUTH') {\n _this8.getDeviceResponse(callback);\n\n return undefined;\n }\n\n _this8.signInUserSession = _this8.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n\n _this8.cacheTokens();\n\n if (dataAuthenticate.AuthenticationResult.NewDeviceMetadata == null) {\n return callback.onSuccess(_this8.signInUserSession);\n }\n\n var authenticationHelper = new AuthenticationHelper(_this8.pool.getUserPoolId().split('_')[1]);\n authenticationHelper.generateHashDevice(dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey, dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey, function (errGenHash) {\n if (errGenHash) {\n return callback.onFailure(errGenHash);\n }\n\n var deviceSecretVerifierConfig = {\n Salt: Buffer.from(authenticationHelper.getSaltDevices(), 'hex').toString('base64'),\n PasswordVerifier: Buffer.from(authenticationHelper.getVerifierDevices(), 'hex').toString('base64')\n };\n _this8.verifierDevices = deviceSecretVerifierConfig.PasswordVerifier;\n _this8.deviceGroupKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey;\n _this8.randomPassword = authenticationHelper.getRandomPassword();\n\n _this8.client.request('ConfirmDevice', {\n DeviceKey: dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey,\n AccessToken: _this8.signInUserSession.getAccessToken().getJwtToken(),\n DeviceSecretVerifierConfig: deviceSecretVerifierConfig,\n DeviceName: userAgent\n }, function (errConfirm, dataConfirm) {\n if (errConfirm) {\n return callback.onFailure(errConfirm);\n }\n\n _this8.deviceKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey;\n\n _this8.cacheDeviceKeyAndPassword();\n\n if (dataConfirm.UserConfirmationNecessary === true) {\n return callback.onSuccess(_this8.signInUserSession, dataConfirm.UserConfirmationNecessary);\n }\n\n return callback.onSuccess(_this8.signInUserSession);\n });\n\n return undefined;\n });\n return undefined;\n });\n }\n /**\n * This is used by an authenticated user to change the current password\n * @param {string} oldUserPassword The current password.\n * @param {string} newUserPassword The requested new password.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.changePassword = function changePassword(oldUserPassword, newUserPassword, callback, clientMetadata) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('ChangePassword', {\n PreviousPassword: oldUserPassword,\n ProposedPassword: newUserPassword,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to enable MFA for itself\n * @deprecated\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.enableMFA = function enableMFA(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n var mfaOptions = [];\n var mfaEnabled = {\n DeliveryMedium: 'SMS',\n AttributeName: 'phone_number'\n };\n mfaOptions.push(mfaEnabled);\n this.client.request('SetUserSettings', {\n MFAOptions: mfaOptions,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to enable MFA for itself\n * @param {IMfaSettings} smsMfaSettings the sms mfa settings\n * @param {IMFASettings} softwareTokenMfaSettings the software token mfa settings\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.setUserMfaPreference = function setUserMfaPreference(smsMfaSettings, softwareTokenMfaSettings, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('SetUserMFAPreference', {\n SMSMfaSettings: smsMfaSettings,\n SoftwareTokenMfaSettings: softwareTokenMfaSettings,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to disable MFA for itself\n * @deprecated\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.disableMFA = function disableMFA(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n var mfaOptions = [];\n this.client.request('SetUserSettings', {\n MFAOptions: mfaOptions,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to delete itself\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.deleteUser = function deleteUser(callback, clientMetadata) {\n var _this9 = this;\n\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('DeleteUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n _this9.clearCachedUser();\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * @typedef {CognitoUserAttribute | { Name:string, Value:string }} AttributeArg\n */\n\n /**\n * This is used by an authenticated user to change a list of attributes\n * @param {AttributeArg[]} attributes A list of the new user attributes.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.updateAttributes = function updateAttributes(attributes, callback, clientMetadata) {\n var _this10 = this;\n\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('UpdateUserAttributes', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n UserAttributes: attributes,\n ClientMetadata: clientMetadata\n }, function (err) {\n if (err) {\n return callback(err, null);\n } // update cached user\n\n\n return _this10.getUserData(function () {\n return callback(null, 'SUCCESS');\n }, {\n bypassCache: true\n });\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to get a list of attributes\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.getUserAttributes = function getUserAttributes(callback) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, userData) {\n if (err) {\n return callback(err, null);\n }\n\n var attributeList = [];\n\n for (var i = 0; i < userData.UserAttributes.length; i++) {\n var attribute = {\n Name: userData.UserAttributes[i].Name,\n Value: userData.UserAttributes[i].Value\n };\n var userAttribute = new CognitoUserAttribute(attribute);\n attributeList.push(userAttribute);\n }\n\n return callback(null, attributeList);\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to get the MFAOptions\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.getMFAOptions = function getMFAOptions(callback) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, userData) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, userData.MFAOptions);\n });\n return undefined;\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.createGetUserRequest = function createGetUserRequest() {\n return this.client.promisifyRequest('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n });\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.refreshSessionIfPossible = function refreshSessionIfPossible() {\n var _this11 = this; // best effort, if not possible\n\n\n return new Promise(function (resolve) {\n var refresh = _this11.signInUserSession.getRefreshToken();\n\n if (refresh && refresh.getToken()) {\n _this11.refreshSession(refresh, resolve);\n } else {\n resolve();\n }\n });\n }\n /**\n * This is used by an authenticated users to get the userData\n * @param {nodeCallback} callback Called on success or error.\n * @param {GetUserDataOptions} params\n * @returns {void}\n */\n ;\n\n _proto.getUserData = function getUserData(callback, params) {\n var _this12 = this;\n\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.clearCachedUserData();\n return callback(new Error('User is not authenticated'), null);\n }\n\n var userData = this.getUserDataFromCache();\n\n if (!userData) {\n this.fetchUserData().then(function (data) {\n callback(null, data);\n })[\"catch\"](callback);\n return;\n }\n\n if (this.isFetchUserDataAndTokenRequired(params)) {\n this.fetchUserData().then(function (data) {\n return _this12.refreshSessionIfPossible().then(function () {\n return data;\n });\n }).then(function (data) {\n return callback(null, data);\n })[\"catch\"](callback);\n return;\n }\n\n try {\n callback(null, JSON.parse(userData));\n return;\n } catch (err) {\n this.clearCachedUserData();\n callback(err, null);\n return;\n }\n }\n /**\n *\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.getUserDataFromCache = function getUserDataFromCache() {\n var userData = this.storage.getItem(this.userDataKey);\n return userData;\n }\n /**\n *\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.isFetchUserDataAndTokenRequired = function isFetchUserDataAndTokenRequired(params) {\n var _ref = params || {},\n _ref$bypassCache = _ref.bypassCache,\n bypassCache = _ref$bypassCache === void 0 ? false : _ref$bypassCache;\n\n return bypassCache;\n }\n /**\n *\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.fetchUserData = function fetchUserData() {\n var _this13 = this;\n\n return this.createGetUserRequest().then(function (data) {\n _this13.cacheUserData(data);\n\n return data;\n });\n }\n /**\n * This is used by an authenticated user to delete a list of attributes\n * @param {string[]} attributeList Names of the attributes to delete.\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.deleteAttributes = function deleteAttributes(attributeList, callback) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('DeleteUserAttributes', {\n UserAttributeNames: attributeList,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by a user to resend a confirmation code\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.resendConfirmationCode = function resendConfirmationCode(callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ClientMetadata: clientMetadata\n };\n this.client.request('ResendConfirmationCode', jsonReq, function (err, result) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, result);\n });\n }\n /**\n * This is used to get a session, either from the session object\n * or from the local storage, or by using a refresh token\n *\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.getSession = function getSession(callback) {\n if (this.username == null) {\n return callback(new Error('Username is null. Cannot retrieve a new session'), null);\n }\n\n if (this.signInUserSession != null && this.signInUserSession.isValid()) {\n return callback(null, this.signInUserSession);\n }\n\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var idTokenKey = keyPrefix + \".idToken\";\n var accessTokenKey = keyPrefix + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".refreshToken\";\n var clockDriftKey = keyPrefix + \".clockDrift\";\n\n if (this.storage.getItem(idTokenKey)) {\n var idToken = new CognitoIdToken({\n IdToken: this.storage.getItem(idTokenKey)\n });\n var accessToken = new CognitoAccessToken({\n AccessToken: this.storage.getItem(accessTokenKey)\n });\n var refreshToken = new CognitoRefreshToken({\n RefreshToken: this.storage.getItem(refreshTokenKey)\n });\n var clockDrift = parseInt(this.storage.getItem(clockDriftKey), 0) || 0;\n var sessionData = {\n IdToken: idToken,\n AccessToken: accessToken,\n RefreshToken: refreshToken,\n ClockDrift: clockDrift\n };\n var cachedSession = new CognitoUserSession(sessionData);\n\n if (cachedSession.isValid()) {\n this.signInUserSession = cachedSession;\n return callback(null, this.signInUserSession);\n }\n\n if (!refreshToken.getToken()) {\n return callback(new Error('Cannot retrieve a new session. Please authenticate.'), null);\n }\n\n this.refreshSession(refreshToken, callback);\n } else {\n callback(new Error('Local storage is missing an ID Token, Please authenticate'), null);\n }\n\n return undefined;\n }\n /**\n * This uses the refreshToken to retrieve a new session\n * @param {CognitoRefreshToken} refreshToken A previous session's refresh token.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.refreshSession = function refreshSession(refreshToken, callback, clientMetadata) {\n var _this14 = this;\n\n var wrappedCallback = this.pool.wrapRefreshSessionCallback ? this.pool.wrapRefreshSessionCallback(callback) : callback;\n var authParameters = {};\n authParameters.REFRESH_TOKEN = refreshToken.getToken();\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n\n if (this.storage.getItem(lastUserKey)) {\n this.username = this.storage.getItem(lastUserKey);\n var deviceKeyKey = keyPrefix + \".\" + this.username + \".deviceKey\";\n this.deviceKey = this.storage.getItem(deviceKeyKey);\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n AuthFlow: 'REFRESH_TOKEN_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('InitiateAuth', jsonReq, function (err, authResult) {\n if (err) {\n if (err.code === 'NotAuthorizedException') {\n _this14.clearCachedUser();\n }\n\n return wrappedCallback(err, null);\n }\n\n if (authResult) {\n var authenticationResult = authResult.AuthenticationResult;\n\n if (!Object.prototype.hasOwnProperty.call(authenticationResult, 'RefreshToken')) {\n authenticationResult.RefreshToken = refreshToken.getToken();\n }\n\n _this14.signInUserSession = _this14.getCognitoUserSession(authenticationResult);\n\n _this14.cacheTokens();\n\n return wrappedCallback(null, _this14.signInUserSession);\n }\n\n return undefined;\n });\n }\n /**\n * This is used to save the session tokens to local storage\n * @returns {void}\n */\n ;\n\n _proto.cacheTokens = function cacheTokens() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var idTokenKey = keyPrefix + \".\" + this.username + \".idToken\";\n var accessTokenKey = keyPrefix + \".\" + this.username + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".\" + this.username + \".refreshToken\";\n var clockDriftKey = keyPrefix + \".\" + this.username + \".clockDrift\";\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n this.storage.setItem(idTokenKey, this.signInUserSession.getIdToken().getJwtToken());\n this.storage.setItem(accessTokenKey, this.signInUserSession.getAccessToken().getJwtToken());\n this.storage.setItem(refreshTokenKey, this.signInUserSession.getRefreshToken().getToken());\n this.storage.setItem(clockDriftKey, \"\" + this.signInUserSession.getClockDrift());\n this.storage.setItem(lastUserKey, this.username);\n }\n /**\n * This is to cache user data\n */\n ;\n\n _proto.cacheUserData = function cacheUserData(userData) {\n this.storage.setItem(this.userDataKey, JSON.stringify(userData));\n }\n /**\n * This is to remove cached user data\n */\n ;\n\n _proto.clearCachedUserData = function clearCachedUserData() {\n this.storage.removeItem(this.userDataKey);\n };\n\n _proto.clearCachedUser = function clearCachedUser() {\n this.clearCachedTokens();\n this.clearCachedUserData();\n }\n /**\n * This is used to cache the device key and device group and device password\n * @returns {void}\n */\n ;\n\n _proto.cacheDeviceKeyAndPassword = function cacheDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n this.storage.setItem(deviceKeyKey, this.deviceKey);\n this.storage.setItem(randomPasswordKey, this.randomPassword);\n this.storage.setItem(deviceGroupKeyKey, this.deviceGroupKey);\n }\n /**\n * This is used to get current device key and device group and device password\n * @returns {void}\n */\n ;\n\n _proto.getCachedDeviceKeyAndPassword = function getCachedDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n\n if (this.storage.getItem(deviceKeyKey)) {\n this.deviceKey = this.storage.getItem(deviceKeyKey);\n this.randomPassword = this.storage.getItem(randomPasswordKey);\n this.deviceGroupKey = this.storage.getItem(deviceGroupKeyKey);\n }\n }\n /**\n * This is used to clear the device key info from local storage\n * @returns {void}\n */\n ;\n\n _proto.clearCachedDeviceKeyAndPassword = function clearCachedDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n this.storage.removeItem(deviceKeyKey);\n this.storage.removeItem(randomPasswordKey);\n this.storage.removeItem(deviceGroupKeyKey);\n }\n /**\n * This is used to clear the session tokens from local storage\n * @returns {void}\n */\n ;\n\n _proto.clearCachedTokens = function clearCachedTokens() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var idTokenKey = keyPrefix + \".\" + this.username + \".idToken\";\n var accessTokenKey = keyPrefix + \".\" + this.username + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".\" + this.username + \".refreshToken\";\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n var clockDriftKey = keyPrefix + \".\" + this.username + \".clockDrift\";\n this.storage.removeItem(idTokenKey);\n this.storage.removeItem(accessTokenKey);\n this.storage.removeItem(refreshTokenKey);\n this.storage.removeItem(lastUserKey);\n this.storage.removeItem(clockDriftKey);\n }\n /**\n * This is used to build a user session from tokens retrieved in the authentication result\n * @param {object} authResult Successful auth response from server.\n * @returns {CognitoUserSession} The new user session.\n * @private\n */\n ;\n\n _proto.getCognitoUserSession = function getCognitoUserSession(authResult) {\n var idToken = new CognitoIdToken(authResult);\n var accessToken = new CognitoAccessToken(authResult);\n var refreshToken = new CognitoRefreshToken(authResult);\n var sessionData = {\n IdToken: idToken,\n AccessToken: accessToken,\n RefreshToken: refreshToken\n };\n return new CognitoUserSession(sessionData);\n }\n /**\n * This is used to initiate a forgot password request\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {inputVerificationCode?} callback.inputVerificationCode\n * Optional callback raised instead of onSuccess with response data.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.forgotPassword = function forgotPassword(callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('ForgotPassword', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n if (typeof callback.inputVerificationCode === 'function') {\n return callback.inputVerificationCode(data);\n }\n\n return callback.onSuccess(data);\n });\n }\n /**\n * This is used to confirm a new password using a confirmationCode\n * @param {string} confirmationCode Code entered by user.\n * @param {string} newPassword Confirm new password.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.confirmPassword = function confirmPassword(confirmationCode, newPassword, callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ConfirmationCode: confirmationCode,\n Password: newPassword,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('ConfirmForgotPassword', jsonReq, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess();\n });\n }\n /**\n * This is used to initiate an attribute confirmation request\n * @param {string} attributeName User attribute that needs confirmation.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {inputVerificationCode} callback.inputVerificationCode Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.getAttributeVerificationCode = function getAttributeVerificationCode(attributeName, callback, clientMetadata) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('GetUserAttributeVerificationCode', {\n AttributeName: attributeName,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n if (typeof callback.inputVerificationCode === 'function') {\n return callback.inputVerificationCode(data);\n }\n\n return callback.onSuccess();\n });\n return undefined;\n }\n /**\n * This is used to confirm an attribute using a confirmation code\n * @param {string} attributeName Attribute being confirmed.\n * @param {string} confirmationCode Code entered by user.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.verifyAttribute = function verifyAttribute(attributeName, confirmationCode, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('VerifyUserAttribute', {\n AttributeName: attributeName,\n Code: confirmationCode,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to get the device information using the current device key\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<*>} callback.onSuccess Called on success with device data.\n * @returns {void}\n */\n ;\n\n _proto.getDevice = function getDevice(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('GetDevice', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess(data);\n });\n return undefined;\n }\n /**\n * This is used to forget a specific device\n * @param {string} deviceKey Device key.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.forgetSpecificDevice = function forgetSpecificDevice(deviceKey, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('ForgetDevice', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: deviceKey\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to forget the current device\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.forgetDevice = function forgetDevice(callback) {\n var _this15 = this;\n\n this.forgetSpecificDevice(this.deviceKey, {\n onFailure: callback.onFailure,\n onSuccess: function onSuccess(result) {\n _this15.deviceKey = null;\n _this15.deviceGroupKey = null;\n _this15.randomPassword = null;\n\n _this15.clearCachedDeviceKeyAndPassword();\n\n return callback.onSuccess(result);\n }\n });\n }\n /**\n * This is used to set the device status as remembered\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.setDeviceStatusRemembered = function setDeviceStatusRemembered(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('UpdateDeviceStatus', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey,\n DeviceRememberedStatus: 'remembered'\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to set the device status as not remembered\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.setDeviceStatusNotRemembered = function setDeviceStatusNotRemembered(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('UpdateDeviceStatus', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey,\n DeviceRememberedStatus: 'not_remembered'\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to list all devices for a user\n *\n * @param {int} limit the number of devices returned in a call\n * @param {string | null} paginationToken the pagination token in case any was returned before\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<*>} callback.onSuccess Called on success with device list.\n * @returns {void}\n */\n ;\n\n _proto.listDevices = function listDevices(limit, paginationToken, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n var requestParams = {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n Limit: limit\n };\n\n if (paginationToken) {\n requestParams.PaginationToken = paginationToken;\n }\n\n this.client.request('ListDevices', requestParams, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess(data);\n });\n return undefined;\n }\n /**\n * This is used to globally revoke all tokens issued to a user\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.globalSignOut = function globalSignOut(callback) {\n var _this16 = this;\n\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('GlobalSignOut', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this16.clearCachedUser();\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used for the user to signOut of the application and clear the cached tokens.\n * @returns {void}\n */\n ;\n\n _proto.signOut = function signOut() {\n this.signInUserSession = null;\n this.clearCachedUser();\n }\n /**\n * This is used by a user trying to select a given MFA\n * @param {string} answerChallenge the mfa the user wants\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.sendMFASelectionAnswer = function sendMFASelectionAnswer(answerChallenge, callback) {\n var _this17 = this;\n\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.ANSWER = answerChallenge;\n var jsonReq = {\n ChallengeName: 'SELECT_MFA_TYPE',\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this17.Session = data.Session;\n\n if (answerChallenge === 'SMS_MFA') {\n return callback.mfaRequired(data.ChallengeName, data.ChallengeParameters);\n }\n\n if (answerChallenge === 'SOFTWARE_TOKEN_MFA') {\n return callback.totpRequired(data.ChallengeName, data.ChallengeParameters);\n }\n\n return undefined;\n });\n }\n /**\n * This returns the user context data for advanced security feature.\n * @returns {void}\n */\n ;\n\n _proto.getUserContextData = function getUserContextData() {\n var pool = this.pool;\n return pool.getUserContextData(this.username);\n }\n /**\n * This is used by an authenticated or a user trying to authenticate to associate a TOTP MFA\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.associateSoftwareToken = function associateSoftwareToken(callback) {\n var _this18 = this;\n\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.client.request('AssociateSoftwareToken', {\n Session: this.Session\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this18.Session = data.Session;\n return callback.associateSecretCode(data.SecretCode);\n });\n } else {\n this.client.request('AssociateSoftwareToken', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.associateSecretCode(data.SecretCode);\n });\n }\n }\n /**\n * This is used by an authenticated or a user trying to authenticate to verify a TOTP MFA\n * @param {string} totpCode The MFA code entered by the user.\n * @param {string} friendlyDeviceName The device name we are assigning to the device.\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.verifySoftwareToken = function verifySoftwareToken(totpCode, friendlyDeviceName, callback) {\n var _this19 = this;\n\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.client.request('VerifySoftwareToken', {\n Session: this.Session,\n UserCode: totpCode,\n FriendlyDeviceName: friendlyDeviceName\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this19.Session = data.Session;\n var challengeResponses = {};\n challengeResponses.USERNAME = _this19.username;\n var jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ClientId: _this19.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: _this19.Session\n };\n\n if (_this19.getUserContextData()) {\n jsonReq.UserContextData = _this19.getUserContextData();\n }\n\n _this19.client.request('RespondToAuthChallenge', jsonReq, function (errRespond, dataRespond) {\n if (errRespond) {\n return callback.onFailure(errRespond);\n }\n\n _this19.signInUserSession = _this19.getCognitoUserSession(dataRespond.AuthenticationResult);\n\n _this19.cacheTokens();\n\n return callback.onSuccess(_this19.signInUserSession);\n });\n\n return undefined;\n });\n } else {\n this.client.request('VerifySoftwareToken', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n UserCode: totpCode,\n FriendlyDeviceName: friendlyDeviceName\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess(data);\n });\n }\n };\n\n return CognitoUser;\n}();\n\nexport { CognitoUser as default };","// constructor\nfunction UserAgent() {} // public\n\n\nUserAgent.prototype.userAgent = 'aws-amplify/0.1.x js';\nexport var appendToCognitoUserAgent = function appendToCognitoUserAgent(content) {\n if (!content) {\n return;\n }\n\n if (UserAgent.prototype.userAgent && !UserAgent.prototype.userAgent.includes(content)) {\n UserAgent.prototype.userAgent = UserAgent.prototype.userAgent.concat(' ', content);\n }\n\n if (!UserAgent.prototype.userAgent || UserAgent.prototype.userAgent === '') {\n UserAgent.prototype.userAgent = content;\n }\n}; // class for defining the amzn user-agent\n\nexport default UserAgent;","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nimport 'isomorphic-unfetch';\nimport UserAgent from './UserAgent';\n\nvar CognitoError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(CognitoError, _Error);\n\n function CognitoError(message, code, name, statusCode) {\n var _this;\n\n _this = _Error.call(this, message) || this;\n _this.code = code;\n _this.name = name;\n _this.statusCode = statusCode;\n return _this;\n }\n\n return CognitoError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n/** @class */\n\n\nvar Client = /*#__PURE__*/function () {\n /**\n * Constructs a new AWS Cognito Identity Provider client object\n * @param {string} region AWS region\n * @param {string} endpoint endpoint\n * @param {object} fetchOptions options for fetch API (only credentials is supported)\n */\n function Client(region, endpoint, fetchOptions) {\n this.endpoint = endpoint || \"https://cognito-idp.\" + region + \".amazonaws.com/\";\n\n var _ref = fetchOptions || {},\n credentials = _ref.credentials;\n\n this.fetchOptions = credentials ? {\n credentials: credentials\n } : {};\n }\n /**\n * Makes an unauthenticated request on AWS Cognito Identity Provider API\n * using fetch\n * @param {string} operation API operation\n * @param {object} params Input parameters\n * @returns Promise\n */\n\n\n var _proto = Client.prototype;\n\n _proto.promisifyRequest = function promisifyRequest(operation, params) {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n _this2.request(operation, params, function (err, data) {\n if (err) {\n reject(new CognitoError(err.message, err.code, err.name, err.statusCode));\n } else {\n resolve(data);\n }\n });\n });\n }\n /**\n * Makes an unauthenticated request on AWS Cognito Identity Provider API\n * using fetch\n * @param {string} operation API operation\n * @param {object} params Input parameters\n * @param {function} callback Callback called when a response is returned\n * @returns {void}\n */\n ;\n\n _proto.request = function request(operation, params, callback) {\n var headers = {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': \"AWSCognitoIdentityProviderService.\" + operation,\n 'X-Amz-User-Agent': UserAgent.prototype.userAgent\n };\n var options = Object.assign({}, this.fetchOptions, {\n headers: headers,\n method: 'POST',\n mode: 'cors',\n cache: 'no-cache',\n body: JSON.stringify(params)\n });\n var response;\n var responseJsonData;\n fetch(this.endpoint, options).then(function (resp) {\n response = resp;\n return resp;\n }, function (err) {\n // If error happens here, the request failed\n // if it is TypeError throw network error\n if (err instanceof TypeError) {\n throw new Error('Network error');\n }\n\n throw err;\n }).then(function (resp) {\n return resp.json()[\"catch\"](function () {\n return {};\n });\n }).then(function (data) {\n // return parsed body stream\n if (response.ok) return callback(null, data);\n responseJsonData = data; // Taken from aws-sdk-js/lib/protocol/json.js\n // eslint-disable-next-line no-underscore-dangle\n\n var code = (data.__type || data.code).split('#').pop();\n var error = {\n code: code,\n name: code,\n message: data.message || data.Message || null\n };\n return callback(error);\n })[\"catch\"](function (err) {\n // first check if we have a service error\n if (response && response.headers && response.headers.get('x-amzn-errortype')) {\n try {\n var code = response.headers.get('x-amzn-errortype').split(':')[0];\n var error = {\n code: code,\n name: code,\n statusCode: response.status,\n message: response.status ? response.status.toString() : null\n };\n return callback(error);\n } catch (ex) {\n return callback(err);\n } // otherwise check if error is Network error\n\n } else if (err instanceof Error && err.message === 'Network error') {\n var _error = {\n code: 'NetworkError',\n name: err.name,\n message: err.message\n };\n return callback(_error);\n } else {\n return callback(err);\n }\n });\n };\n\n return Client;\n}();\n\nexport { Client as default };","export var AuthErrorStrings;\n\n(function (AuthErrorStrings) {\n AuthErrorStrings[\"DEFAULT_MSG\"] = \"Authentication Error\";\n AuthErrorStrings[\"EMPTY_USERNAME\"] = \"Username cannot be empty\";\n AuthErrorStrings[\"INVALID_USERNAME\"] = \"The username should either be a string or one of the sign in types\";\n AuthErrorStrings[\"EMPTY_PASSWORD\"] = \"Password cannot be empty\";\n AuthErrorStrings[\"EMPTY_CODE\"] = \"Confirmation code cannot be empty\";\n AuthErrorStrings[\"SIGN_UP_ERROR\"] = \"Error creating account\";\n AuthErrorStrings[\"NO_MFA\"] = \"No valid MFA method provided\";\n AuthErrorStrings[\"INVALID_MFA\"] = \"Invalid MFA type\";\n AuthErrorStrings[\"EMPTY_CHALLENGE\"] = \"Challenge response cannot be empty\";\n AuthErrorStrings[\"NO_USER_SESSION\"] = \"Failed to get the session because the user is empty\";\n})(AuthErrorStrings || (AuthErrorStrings = {}));","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\nimport Client from './Client';\nimport CognitoUser from './CognitoUser';\nimport StorageHelper from './StorageHelper';\n/** @class */\n\nvar CognitoUserPool = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserPool object\n * @param {object} data Creation options.\n * @param {string} data.UserPoolId Cognito user pool id.\n * @param {string} data.ClientId User pool application client id.\n * @param {string} data.endpoint Optional custom service endpoint.\n * @param {object} data.fetchOptions Optional options for fetch API.\n * (only credentials option is supported)\n * @param {object} data.Storage Optional storage object.\n * @param {boolean} data.AdvancedSecurityDataCollectionFlag Optional:\n * boolean flag indicating if the data collection is enabled\n * to support cognito advanced security features. By default, this\n * flag is set to true.\n */\n function CognitoUserPool(data, wrapRefreshSessionCallback) {\n var _ref = data || {},\n UserPoolId = _ref.UserPoolId,\n ClientId = _ref.ClientId,\n endpoint = _ref.endpoint,\n fetchOptions = _ref.fetchOptions,\n AdvancedSecurityDataCollectionFlag = _ref.AdvancedSecurityDataCollectionFlag;\n\n if (!UserPoolId || !ClientId) {\n throw new Error('Both UserPoolId and ClientId are required.');\n }\n\n if (!/^[\\w-]+_.+$/.test(UserPoolId)) {\n throw new Error('Invalid UserPoolId format.');\n }\n\n var region = UserPoolId.split('_')[0];\n this.userPoolId = UserPoolId;\n this.clientId = ClientId;\n this.client = new Client(region, endpoint, fetchOptions);\n /**\n * By default, AdvancedSecurityDataCollectionFlag is set to true,\n * if no input value is provided.\n */\n\n this.advancedSecurityDataCollectionFlag = AdvancedSecurityDataCollectionFlag !== false;\n this.storage = data.Storage || new StorageHelper().getStorage();\n\n if (wrapRefreshSessionCallback) {\n this.wrapRefreshSessionCallback = wrapRefreshSessionCallback;\n }\n }\n /**\n * @returns {string} the user pool id\n */\n\n\n var _proto = CognitoUserPool.prototype;\n\n _proto.getUserPoolId = function getUserPoolId() {\n return this.userPoolId;\n }\n /**\n * @returns {string} the client id\n */\n ;\n\n _proto.getClientId = function getClientId() {\n return this.clientId;\n }\n /**\n * @typedef {object} SignUpResult\n * @property {CognitoUser} user New user.\n * @property {bool} userConfirmed If the user is already confirmed.\n */\n\n /**\n * method for signing up a user\n * @param {string} username User's username.\n * @param {string} password Plain-text initial password entered by user.\n * @param {(AttributeArg[])=} userAttributes New user attributes.\n * @param {(AttributeArg[])=} validationData Application metadata.\n * @param {(AttributeArg[])=} clientMetadata Client metadata.\n * @param {nodeCallback} callback Called on error or with the new user.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.signUp = function signUp(username, password, userAttributes, validationData, callback, clientMetadata) {\n var _this = this;\n\n var jsonReq = {\n ClientId: this.clientId,\n Username: username,\n Password: password,\n UserAttributes: userAttributes,\n ValidationData: validationData,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData(username)) {\n jsonReq.UserContextData = this.getUserContextData(username);\n }\n\n this.client.request('SignUp', jsonReq, function (err, data) {\n if (err) {\n return callback(err, null);\n }\n\n var cognitoUser = {\n Username: username,\n Pool: _this,\n Storage: _this.storage\n };\n var returnData = {\n user: new CognitoUser(cognitoUser),\n userConfirmed: data.UserConfirmed,\n userSub: data.UserSub,\n codeDeliveryDetails: data.CodeDeliveryDetails\n };\n return callback(null, returnData);\n });\n }\n /**\n * method for getting the current user of the application from the local storage\n *\n * @returns {CognitoUser} the user retrieved from storage\n */\n ;\n\n _proto.getCurrentUser = function getCurrentUser() {\n var lastUserKey = \"CognitoIdentityServiceProvider.\" + this.clientId + \".LastAuthUser\";\n var lastAuthUser = this.storage.getItem(lastUserKey);\n\n if (lastAuthUser) {\n var cognitoUser = {\n Username: lastAuthUser,\n Pool: this,\n Storage: this.storage\n };\n return new CognitoUser(cognitoUser);\n }\n\n return null;\n }\n /**\n * This method returns the encoded data string used for cognito advanced security feature.\n * This would be generated only when developer has included the JS used for collecting the\n * data on their client. Please refer to documentation to know more about using AdvancedSecurity\n * features\n * @param {string} username the username for the context data\n * @returns {string} the user context data\n **/\n ;\n\n _proto.getUserContextData = function getUserContextData(username) {\n if (typeof AmazonCognitoAdvancedSecurityData === 'undefined') {\n return undefined;\n }\n /* eslint-disable */\n\n\n var amazonCognitoAdvancedSecurityDataConst = AmazonCognitoAdvancedSecurityData;\n /* eslint-enable */\n\n if (this.advancedSecurityDataCollectionFlag) {\n var advancedSecurityData = amazonCognitoAdvancedSecurityDataConst.getData(username, this.userPoolId, this.clientId);\n\n if (advancedSecurityData) {\n var userContextData = {\n EncodedData: advancedSecurityData\n };\n return userContextData;\n }\n }\n\n return {};\n };\n\n return CognitoUserPool;\n}();\n\nexport { CognitoUserPool as default };","import * as Cookies from 'js-cookie';\n/** @class */\n\nvar CookieStorage = /*#__PURE__*/function () {\n /**\n * Constructs a new CookieStorage object\n * @param {object} data Creation options.\n * @param {string} data.domain Cookies domain (mandatory).\n * @param {string} data.path Cookies path (default: '/')\n * @param {integer} data.expires Cookie expiration (in days, default: 365)\n * @param {boolean} data.secure Cookie secure flag (default: true)\n * @param {string} data.sameSite Cookie request behaviour (default: null)\n */\n function CookieStorage(data) {\n if (data.domain) {\n this.domain = data.domain;\n } else {\n throw new Error('The domain of cookieStorage can not be undefined.');\n }\n\n if (data.path) {\n this.path = data.path;\n } else {\n this.path = '/';\n }\n\n if (Object.prototype.hasOwnProperty.call(data, 'expires')) {\n this.expires = data.expires;\n } else {\n this.expires = 365;\n }\n\n if (Object.prototype.hasOwnProperty.call(data, 'secure')) {\n this.secure = data.secure;\n } else {\n this.secure = true;\n }\n\n if (Object.prototype.hasOwnProperty.call(data, 'sameSite')) {\n if (!['strict', 'lax', 'none'].includes(data.sameSite)) {\n throw new Error('The sameSite value of cookieStorage must be \"lax\", \"strict\" or \"none\".');\n }\n\n if (data.sameSite === 'none' && !this.secure) {\n throw new Error('sameSite = None requires the Secure attribute in latest browser versions.');\n }\n\n this.sameSite = data.sameSite;\n } else {\n this.sameSite = null;\n }\n }\n /**\n * This is used to set a specific item in storage\n * @param {string} key - the key for the item\n * @param {object} value - the value\n * @returns {string} value that was set\n */\n\n\n var _proto = CookieStorage.prototype;\n\n _proto.setItem = function setItem(key, value) {\n var options = {\n path: this.path,\n expires: this.expires,\n domain: this.domain,\n secure: this.secure\n };\n\n if (this.sameSite) {\n options.sameSite = this.sameSite;\n }\n\n Cookies.set(key, value, options);\n return Cookies.get(key);\n }\n /**\n * This is used to get a specific key from storage\n * @param {string} key - the key for the item\n * This is used to clear the storage\n * @returns {string} the data item\n */\n ;\n\n _proto.getItem = function getItem(key) {\n return Cookies.get(key);\n }\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {string} value - value that was deleted\n */\n ;\n\n _proto.removeItem = function removeItem(key) {\n var options = {\n path: this.path,\n expires: this.expires,\n domain: this.domain,\n secure: this.secure\n };\n\n if (this.sameSite) {\n options.sameSite = this.sameSite;\n }\n\n return Cookies.remove(key, options);\n }\n /**\n * This is used to clear the storage\n * @returns {string} nothing\n */\n ;\n\n _proto.clear = function clear() {\n var cookies = Cookies.get();\n var index;\n\n for (index = 0; index < cookies.length; ++index) {\n Cookies.remove(cookies[index]);\n }\n\n return {};\n };\n\n return CookieStorage;\n}();\n\nexport { CookieStorage as default };","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar SELF = '_self';\nexport var launchUri = function launchUri(url) {\n var windowProxy = window.open(url, SELF);\n\n if (windowProxy) {\n return Promise.resolve(windowProxy);\n } else {\n return Promise.reject();\n }\n};","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nimport { parse } from 'url'; // Used for OAuth parsing of Cognito Hosted UI\n\nimport { launchUri } from './urlOpener';\nimport * as oAuthStorage from './oauthStorage';\nimport { isCognitoHostedOpts, CognitoHostedUIIdentityProvider } from '../types/Auth';\nimport { ConsoleLogger as Logger, Hub, urlSafeEncode } from '@aws-amplify/core';\nimport sha256 from 'crypto-js/sha256';\nimport Base64 from 'crypto-js/enc-base64';\nvar AMPLIFY_SYMBOL = typeof Symbol !== 'undefined' && typeof Symbol.for === 'function' ? Symbol.for('amplify_default') : '@@amplify_default';\n\nvar dispatchAuthEvent = function dispatchAuthEvent(event, data, message) {\n Hub.dispatch('auth', {\n event: event,\n data: data,\n message: message\n }, 'Auth', AMPLIFY_SYMBOL);\n};\n\nvar logger = new Logger('OAuth');\n\nvar OAuth =\n/** @class */\nfunction () {\n function OAuth(_a) {\n var config = _a.config,\n cognitoClientId = _a.cognitoClientId,\n _b = _a.scopes,\n scopes = _b === void 0 ? [] : _b;\n this._urlOpener = config.urlOpener || launchUri;\n this._config = config;\n this._cognitoClientId = cognitoClientId;\n if (!this.isValidScopes(scopes)) throw Error('scopes must be a String Array');\n this._scopes = scopes;\n }\n\n OAuth.prototype.isValidScopes = function (scopes) {\n return Array.isArray(scopes) && scopes.every(function (scope) {\n return typeof scope === 'string';\n });\n };\n\n OAuth.prototype.oauthSignIn = function (responseType, domain, redirectSignIn, clientId, provider, customState) {\n if (responseType === void 0) {\n responseType = 'code';\n }\n\n if (provider === void 0) {\n provider = CognitoHostedUIIdentityProvider.Cognito;\n }\n\n var generatedState = this._generateState(32);\n /* encodeURIComponent is not URL safe, use urlSafeEncode instead. Cognito\n single-encodes/decodes url on first sign in and double-encodes/decodes url\n when user already signed in. Using encodeURIComponent, Base32, Base64 add\n characters % or = which on further encoding becomes unsafe. '=' create issue\n for parsing query params.\n Refer: https://github.com/aws-amplify/amplify-js/issues/5218 */\n\n\n var state = customState ? generatedState + \"-\" + urlSafeEncode(customState) : generatedState;\n oAuthStorage.setState(state);\n\n var pkce_key = this._generateRandom(128);\n\n oAuthStorage.setPKCE(pkce_key);\n\n var code_challenge = this._generateChallenge(pkce_key);\n\n var code_challenge_method = 'S256';\n\n var scopesString = this._scopes.join(' ');\n\n var queryString = Object.entries(__assign(__assign({\n redirect_uri: redirectSignIn,\n response_type: responseType,\n client_id: clientId,\n identity_provider: provider,\n scope: scopesString,\n state: state\n }, responseType === 'code' ? {\n code_challenge: code_challenge\n } : {}), responseType === 'code' ? {\n code_challenge_method: code_challenge_method\n } : {})).map(function (_a) {\n var _b = __read(_a, 2),\n k = _b[0],\n v = _b[1];\n\n return encodeURIComponent(k) + \"=\" + encodeURIComponent(v);\n }).join('&');\n var URL = \"https://\" + domain + \"/oauth2/authorize?\" + queryString;\n logger.debug(\"Redirecting to \" + URL);\n\n this._urlOpener(URL, redirectSignIn);\n };\n\n OAuth.prototype._handleCodeFlow = function (currentUrl) {\n return __awaiter(this, void 0, void 0, function () {\n var code, oAuthTokenEndpoint, client_id, redirect_uri, code_verifier, oAuthTokenBody, body, _a, access_token, refresh_token, id_token, error;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n code = (parse(currentUrl).query || '').split('&').map(function (pairings) {\n return pairings.split('=');\n }).reduce(function (accum, _a) {\n var _b;\n\n var _c = __read(_a, 2),\n k = _c[0],\n v = _c[1];\n\n return __assign(__assign({}, accum), (_b = {}, _b[k] = v, _b));\n }, {\n code: undefined\n }).code;\n\n if (!code || parse(currentUrl).pathname !== parse(this._config.redirectSignIn).pathname) {\n return [2\n /*return*/\n ];\n }\n\n oAuthTokenEndpoint = 'https://' + this._config.domain + '/oauth2/token';\n dispatchAuthEvent('codeFlow', {}, \"Retrieving tokens from \" + oAuthTokenEndpoint);\n client_id = isCognitoHostedOpts(this._config) ? this._cognitoClientId : this._config.clientID;\n redirect_uri = isCognitoHostedOpts(this._config) ? this._config.redirectSignIn : this._config.redirectUri;\n code_verifier = oAuthStorage.getPKCE();\n oAuthTokenBody = __assign({\n grant_type: 'authorization_code',\n code: code,\n client_id: client_id,\n redirect_uri: redirect_uri\n }, code_verifier ? {\n code_verifier: code_verifier\n } : {});\n logger.debug(\"Calling token endpoint: \" + oAuthTokenEndpoint + \" with\", oAuthTokenBody);\n body = Object.entries(oAuthTokenBody).map(function (_a) {\n var _b = __read(_a, 2),\n k = _b[0],\n v = _b[1];\n\n return encodeURIComponent(k) + \"=\" + encodeURIComponent(v);\n }).join('&');\n return [4\n /*yield*/\n , fetch(oAuthTokenEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n body: body\n })];\n\n case 1:\n return [4\n /*yield*/\n , _b.sent().json()];\n\n case 2:\n _a = _b.sent(), access_token = _a.access_token, refresh_token = _a.refresh_token, id_token = _a.id_token, error = _a.error;\n\n if (error) {\n throw new Error(error);\n }\n\n return [2\n /*return*/\n , {\n accessToken: access_token,\n refreshToken: refresh_token,\n idToken: id_token\n }];\n }\n });\n });\n };\n\n OAuth.prototype._handleImplicitFlow = function (currentUrl) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, id_token, access_token;\n\n return __generator(this, function (_b) {\n _a = (parse(currentUrl).hash || '#').substr(1) // Remove # from returned code\n .split('&').map(function (pairings) {\n return pairings.split('=');\n }).reduce(function (accum, _a) {\n var _b;\n\n var _c = __read(_a, 2),\n k = _c[0],\n v = _c[1];\n\n return __assign(__assign({}, accum), (_b = {}, _b[k] = v, _b));\n }, {\n id_token: undefined,\n access_token: undefined\n }), id_token = _a.id_token, access_token = _a.access_token;\n dispatchAuthEvent('implicitFlow', {}, \"Got tokens from \" + currentUrl);\n logger.debug(\"Retrieving implicit tokens from \" + currentUrl + \" with\");\n return [2\n /*return*/\n , {\n accessToken: access_token,\n idToken: id_token,\n refreshToken: null\n }];\n });\n });\n };\n\n OAuth.prototype.handleAuthResponse = function (currentUrl) {\n return __awaiter(this, void 0, void 0, function () {\n var urlParams, error, error_description, state, _a, _b, e_1;\n\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _c.trys.push([0, 5,, 6]);\n\n urlParams = currentUrl ? __assign(__assign({}, (parse(currentUrl).hash || '#').substr(1).split('&').map(function (entry) {\n return entry.split('=');\n }).reduce(function (acc, _a) {\n var _b = __read(_a, 2),\n k = _b[0],\n v = _b[1];\n\n return acc[k] = v, acc;\n }, {})), (parse(currentUrl).query || '').split('&').map(function (entry) {\n return entry.split('=');\n }).reduce(function (acc, _a) {\n var _b = __read(_a, 2),\n k = _b[0],\n v = _b[1];\n\n return acc[k] = v, acc;\n }, {})) : {};\n error = urlParams.error, error_description = urlParams.error_description;\n\n if (error) {\n throw new Error(error_description);\n }\n\n state = this._validateState(urlParams);\n logger.debug(\"Starting \" + this._config.responseType + \" flow with \" + currentUrl);\n if (!(this._config.responseType === 'code')) return [3\n /*break*/\n , 2];\n _a = [{}];\n return [4\n /*yield*/\n , this._handleCodeFlow(currentUrl)];\n\n case 1:\n return [2\n /*return*/\n , __assign.apply(void 0, [__assign.apply(void 0, _a.concat([_c.sent()])), {\n state: state\n }])];\n\n case 2:\n _b = [{}];\n return [4\n /*yield*/\n , this._handleImplicitFlow(currentUrl)];\n\n case 3:\n return [2\n /*return*/\n , __assign.apply(void 0, [__assign.apply(void 0, _b.concat([_c.sent()])), {\n state: state\n }])];\n\n case 4:\n return [3\n /*break*/\n , 6];\n\n case 5:\n e_1 = _c.sent();\n logger.error(\"Error handling auth response.\", e_1);\n throw e_1;\n\n case 6:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n OAuth.prototype._validateState = function (urlParams) {\n if (!urlParams) {\n return;\n }\n\n var savedState = oAuthStorage.getState();\n var returnedState = urlParams.state; // This is because savedState only exists if the flow was initiated by Amplify\n\n if (savedState && savedState !== returnedState) {\n throw new Error('Invalid state in OAuth flow');\n }\n\n return returnedState;\n };\n\n OAuth.prototype.signOut = function () {\n return __awaiter(this, void 0, void 0, function () {\n var oAuthLogoutEndpoint, client_id, signout_uri;\n return __generator(this, function (_a) {\n oAuthLogoutEndpoint = 'https://' + this._config.domain + '/logout?';\n client_id = isCognitoHostedOpts(this._config) ? this._cognitoClientId : this._config.oauth.clientID;\n signout_uri = isCognitoHostedOpts(this._config) ? this._config.redirectSignOut : this._config.returnTo;\n oAuthLogoutEndpoint += Object.entries({\n client_id: client_id,\n logout_uri: encodeURIComponent(signout_uri)\n }).map(function (_a) {\n var _b = __read(_a, 2),\n k = _b[0],\n v = _b[1];\n\n return k + \"=\" + v;\n }).join('&');\n dispatchAuthEvent('oAuthSignOut', {\n oAuth: 'signOut'\n }, \"Signing out from \" + oAuthLogoutEndpoint);\n logger.debug(\"Signing out from \" + oAuthLogoutEndpoint);\n return [2\n /*return*/\n , this._urlOpener(oAuthLogoutEndpoint)];\n });\n });\n };\n\n OAuth.prototype._generateState = function (length) {\n var result = '';\n var i = length;\n var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\n for (; i > 0; --i) {\n result += chars[Math.round(Math.random() * (chars.length - 1))];\n }\n\n return result;\n };\n\n OAuth.prototype._generateChallenge = function (code) {\n return this._base64URL(sha256(code));\n };\n\n OAuth.prototype._base64URL = function (string) {\n return string.toString(Base64).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n };\n\n OAuth.prototype._generateRandom = function (size) {\n var CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';\n var buffer = new Uint8Array(size);\n\n if (typeof window !== 'undefined' && !!window.crypto) {\n window.crypto.getRandomValues(buffer);\n } else {\n for (var i = 0; i < size; i += 1) {\n buffer[i] = Math.random() * CHARSET.length | 0;\n }\n }\n\n return this._bufferToString(buffer);\n };\n\n OAuth.prototype._bufferToString = function (buffer) {\n var CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n var state = [];\n\n for (var i = 0; i < buffer.byteLength; i += 1) {\n var index = buffer[i] % CHARSET.length;\n state.push(CHARSET[index]);\n }\n\n return state.join('');\n };\n\n return OAuth;\n}();\n\nexport default OAuth;","export function urlSafeEncode(str) {\n return str.split('').map(function (char) {\n return char.charCodeAt(0).toString(16).padStart(2, '0');\n }).join('');\n}\nexport function urlSafeDecode(hex) {\n return hex.match(/.{2}/g).map(function (char) {\n return String.fromCharCode(parseInt(char, 16));\n }).join('');\n}","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nexport var setState = function setState(state) {\n window.sessionStorage.setItem('oauth_state', state);\n};\nexport var getState = function getState() {\n var oauth_state = window.sessionStorage.getItem('oauth_state');\n window.sessionStorage.removeItem('oauth_state');\n return oauth_state;\n};\nexport var setPKCE = function setPKCE(private_key) {\n window.sessionStorage.setItem('ouath_pkce_key', private_key);\n};\nexport var getPKCE = function getPKCE() {\n var ouath_pkce_key = window.sessionStorage.getItem('ouath_pkce_key');\n window.sessionStorage.removeItem('ouath_pkce_key');\n return ouath_pkce_key;\n};\nexport var clearAll = function clearAll() {\n window.sessionStorage.removeItem('ouath_pkce_key');\n window.sessionStorage.removeItem('oauth_state');\n};","/*\n * Copyright 2019-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nimport { AuthErrorStrings } from './common/AuthErrorStrings';\nvar logger = new Logger('AuthError');\n\nvar AuthError =\n/** @class */\nfunction (_super) {\n __extends(AuthError, _super);\n\n function AuthError(type) {\n var _this = this;\n\n var _a = authErrorMessages[type],\n message = _a.message,\n log = _a.log;\n _this = _super.call(this, message) || this; // Hack for making the custom error class work when transpiled to es5\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n\n _this.constructor = AuthError;\n Object.setPrototypeOf(_this, AuthError.prototype);\n _this.name = 'AuthError';\n _this.log = log || message;\n logger.error(_this.log);\n return _this;\n }\n\n return AuthError;\n}(Error);\n\nexport { AuthError };\n\nvar NoUserPoolError =\n/** @class */\nfunction (_super) {\n __extends(NoUserPoolError, _super);\n\n function NoUserPoolError(type) {\n var _this = _super.call(this, type) || this; // Hack for making the custom error class work when transpiled to es5\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n\n\n _this.constructor = NoUserPoolError;\n Object.setPrototypeOf(_this, NoUserPoolError.prototype);\n _this.name = 'NoUserPoolError';\n return _this;\n }\n\n return NoUserPoolError;\n}(AuthError);\n\nexport { NoUserPoolError };\nexport var authErrorMessages = {\n noConfig: {\n message: AuthErrorStrings.DEFAULT_MSG,\n log: \"\\n Error: Amplify has not been configured correctly.\\n This error is typically caused by one of the following scenarios:\\n\\n 1. Make sure you're passing the awsconfig object to Amplify.configure() in your app's entry point\\n See https://aws-amplify.github.io/docs/js/authentication#configure-your-app for more information\\n \\n 2. There might be multiple conflicting versions of aws-amplify or amplify packages in your node_modules.\\n Try deleting your node_modules folder and reinstalling the dependencies with `yarn install`\\n \"\n },\n missingAuthConfig: {\n message: AuthErrorStrings.DEFAULT_MSG,\n log: \"\\n Error: Amplify has not been configured correctly. \\n The configuration object is missing required auth properties. \\n Did you run `amplify push` after adding auth via `amplify add auth`?\\n See https://aws-amplify.github.io/docs/js/authentication#amplify-project-setup for more information\\n \"\n },\n emptyUsername: {\n message: AuthErrorStrings.EMPTY_USERNAME\n },\n // TODO: should include a list of valid sign-in types\n invalidUsername: {\n message: AuthErrorStrings.INVALID_USERNAME\n },\n emptyPassword: {\n message: AuthErrorStrings.EMPTY_PASSWORD\n },\n emptyCode: {\n message: AuthErrorStrings.EMPTY_CODE\n },\n signUpError: {\n message: AuthErrorStrings.SIGN_UP_ERROR,\n log: 'The first parameter should either be non-null string or object'\n },\n noMFA: {\n message: AuthErrorStrings.NO_MFA\n },\n invalidMFA: {\n message: AuthErrorStrings.INVALID_MFA\n },\n emptyChallengeResponse: {\n message: AuthErrorStrings.EMPTY_CHALLENGE\n },\n noUserSession: {\n message: AuthErrorStrings.NO_USER_SESSION\n },\n default: {\n message: AuthErrorStrings.DEFAULT_MSG\n }\n};","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n *\t http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nimport { isUsernamePasswordOpts, isCognitoHostedOpts, isFederatedSignInOptions, isFederatedSignInOptionsCustom, hasCustomState } from './types';\nimport { Amplify, ConsoleLogger as Logger, Credentials, Hub, StorageHelper, Parser, JS, UniversalStorage, urlSafeDecode } from '@aws-amplify/core';\nimport { CookieStorage, CognitoUserPool, AuthenticationDetails, CognitoUser, CognitoUserSession, CognitoUserAttribute, CognitoIdToken, CognitoRefreshToken, CognitoAccessToken } from 'amazon-cognito-identity-js';\nimport { parse } from 'url';\nimport OAuth from './OAuth/OAuth';\nimport { default as urlListener } from './urlListener';\nimport { AuthError, NoUserPoolError } from './Errors';\nimport { AuthErrorTypes, CognitoHostedUIIdentityProvider } from './types/Auth';\nvar logger = new Logger('AuthClass');\nvar USER_ADMIN_SCOPE = 'aws.cognito.signin.user.admin'; // 10 sec, following this guide https://www.nngroup.com/articles/response-times-3-important-limits/\n\nvar OAUTH_FLOW_MS_TIMEOUT = 10 * 1000;\nvar AMPLIFY_SYMBOL = typeof Symbol !== 'undefined' && typeof Symbol.for === 'function' ? Symbol.for('amplify_default') : '@@amplify_default';\n\nvar dispatchAuthEvent = function dispatchAuthEvent(event, data, message) {\n Hub.dispatch('auth', {\n event: event,\n data: data,\n message: message\n }, 'Auth', AMPLIFY_SYMBOL);\n};\n/**\n * Provide authentication steps\n */\n\n\nvar AuthClass =\n/** @class */\nfunction () {\n /**\n * Initialize Auth with AWS configurations\n * @param {Object} config - Configuration of the Auth\n */\n function AuthClass(config) {\n var _this = this;\n\n this.userPool = null;\n this.user = null;\n this.oAuthFlowInProgress = false;\n this.Credentials = Credentials;\n\n this.wrapRefreshSessionCallback = function (callback) {\n var wrapped = function wrapped(error, data) {\n if (data) {\n dispatchAuthEvent('tokenRefresh', undefined, \"New token retrieved\");\n } else {\n dispatchAuthEvent('tokenRefresh_failure', error, \"Failed to retrieve new token\");\n }\n\n return callback(error, data);\n };\n\n return wrapped;\n }; // prettier-ignore\n\n\n this.configure(config);\n this.currentCredentials = this.currentCredentials.bind(this);\n this.currentUserCredentials = this.currentUserCredentials.bind(this);\n Hub.listen('auth', function (_a) {\n var payload = _a.payload;\n var event = payload.event;\n\n switch (event) {\n case 'signIn':\n _this._storage.setItem('amplify-signin-with-hostedUI', 'false');\n\n break;\n\n case 'signOut':\n _this._storage.removeItem('amplify-signin-with-hostedUI');\n\n break;\n\n case 'cognitoHostedUI':\n _this._storage.setItem('amplify-signin-with-hostedUI', 'true');\n\n break;\n }\n });\n }\n\n AuthClass.prototype.getModuleName = function () {\n return 'Auth';\n };\n\n AuthClass.prototype.configure = function (config) {\n var _this = this;\n\n if (!config) return this._config || {};\n logger.debug('configure Auth');\n var conf = Object.assign({}, this._config, Parser.parseMobilehubConfig(config).Auth, config);\n this._config = conf;\n var _a = this._config,\n userPoolId = _a.userPoolId,\n userPoolWebClientId = _a.userPoolWebClientId,\n cookieStorage = _a.cookieStorage,\n oauth = _a.oauth,\n region = _a.region,\n identityPoolId = _a.identityPoolId,\n mandatorySignIn = _a.mandatorySignIn,\n refreshHandlers = _a.refreshHandlers,\n identityPoolRegion = _a.identityPoolRegion,\n clientMetadata = _a.clientMetadata,\n endpoint = _a.endpoint;\n\n if (!this._config.storage) {\n // backward compatability\n if (cookieStorage) this._storage = new CookieStorage(cookieStorage);else {\n this._storage = config.ssr ? new UniversalStorage() : new StorageHelper().getStorage();\n }\n } else {\n if (!this._isValidAuthStorage(this._config.storage)) {\n logger.error('The storage in the Auth config is not valid!');\n throw new Error('Empty storage object');\n }\n\n this._storage = this._config.storage;\n }\n\n this._storageSync = Promise.resolve();\n\n if (typeof this._storage['sync'] === 'function') {\n this._storageSync = this._storage['sync']();\n }\n\n if (userPoolId) {\n var userPoolData = {\n UserPoolId: userPoolId,\n ClientId: userPoolWebClientId,\n endpoint: endpoint\n };\n userPoolData.Storage = this._storage;\n this.userPool = new CognitoUserPool(userPoolData, this.wrapRefreshSessionCallback);\n }\n\n this.Credentials.configure({\n mandatorySignIn: mandatorySignIn,\n region: identityPoolRegion || region,\n userPoolId: userPoolId,\n identityPoolId: identityPoolId,\n refreshHandlers: refreshHandlers,\n storage: this._storage\n }); // initiailize cognitoauth client if hosted ui options provided\n // to keep backward compatibility:\n\n var cognitoHostedUIConfig = oauth ? isCognitoHostedOpts(this._config.oauth) ? oauth : oauth.awsCognito : undefined;\n\n if (cognitoHostedUIConfig) {\n var cognitoAuthParams = Object.assign({\n cognitoClientId: userPoolWebClientId,\n UserPoolId: userPoolId,\n domain: cognitoHostedUIConfig['domain'],\n scopes: cognitoHostedUIConfig['scope'],\n redirectSignIn: cognitoHostedUIConfig['redirectSignIn'],\n redirectSignOut: cognitoHostedUIConfig['redirectSignOut'],\n responseType: cognitoHostedUIConfig['responseType'],\n Storage: this._storage,\n urlOpener: cognitoHostedUIConfig['urlOpener'],\n clientMetadata: clientMetadata\n }, cognitoHostedUIConfig['options']);\n this._oAuthHandler = new OAuth({\n scopes: cognitoAuthParams.scopes,\n config: cognitoAuthParams,\n cognitoClientId: cognitoAuthParams.cognitoClientId\n }); // **NOTE** - Remove this in a future major release as it is a breaking change\n // Prevents _handleAuthResponse from being called multiple times in Expo\n // See https://github.com/aws-amplify/amplify-js/issues/4388\n\n var usedResponseUrls_1 = {};\n urlListener(function (_a) {\n var url = _a.url;\n\n if (usedResponseUrls_1[url]) {\n return;\n }\n\n usedResponseUrls_1[url] = true;\n\n _this._handleAuthResponse(url);\n });\n }\n\n dispatchAuthEvent('configured', null, \"The Auth category has been configured successfully\");\n return this._config;\n };\n /**\n * Sign up with username, password and other attributes like phone, email\n * @param {String | object} params - The user attributes used for signin\n * @param {String[]} restOfAttrs - for the backward compatability\n * @return - A promise resolves callback data if success\n */\n\n\n AuthClass.prototype.signUp = function (params) {\n var _this = this;\n\n var restOfAttrs = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n restOfAttrs[_i - 1] = arguments[_i];\n }\n\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n\n var username = null;\n var password = null;\n var attributes = [];\n var validationData = null;\n var clientMetadata;\n\n if (params && typeof params === 'string') {\n username = params;\n password = restOfAttrs ? restOfAttrs[0] : null;\n var email = restOfAttrs ? restOfAttrs[1] : null;\n var phone_number = restOfAttrs ? restOfAttrs[2] : null;\n if (email) attributes.push({\n Name: 'email',\n Value: email\n });\n if (phone_number) attributes.push({\n Name: 'phone_number',\n Value: phone_number\n });\n } else if (params && typeof params === 'object') {\n username = params['username'];\n password = params['password'];\n\n if (params && params.clientMetadata) {\n clientMetadata = params.clientMetadata;\n } else if (this._config.clientMetadata) {\n clientMetadata = this._config.clientMetadata;\n }\n\n var attrs_1 = params['attributes'];\n\n if (attrs_1) {\n Object.keys(attrs_1).map(function (key) {\n var ele = {\n Name: key,\n Value: attrs_1[key]\n };\n attributes.push(ele);\n });\n }\n\n validationData = params['validationData'] || null;\n } else {\n return this.rejectAuthError(AuthErrorTypes.SignUpError);\n }\n\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n\n if (!password) {\n return this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n }\n\n logger.debug('signUp attrs:', attributes);\n logger.debug('signUp validation data:', validationData);\n return new Promise(function (resolve, reject) {\n _this.userPool.signUp(username, password, attributes, validationData, function (err, data) {\n if (err) {\n dispatchAuthEvent('signUp_failure', err, username + \" failed to signup\");\n reject(err);\n } else {\n dispatchAuthEvent('signUp', data, username + \" has signed up successfully\");\n resolve(data);\n }\n }, clientMetadata);\n });\n };\n /**\n * Send the verfication code to confirm sign up\n * @param {String} username - The username to be confirmed\n * @param {String} code - The verification code\n * @param {ConfirmSignUpOptions} options - other options for confirm signup\n * @return - A promise resolves callback data if success\n */\n\n\n AuthClass.prototype.confirmSignUp = function (username, code, options) {\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n\n if (!code) {\n return this.rejectAuthError(AuthErrorTypes.EmptyCode);\n }\n\n var user = this.createCognitoUser(username);\n var forceAliasCreation = options && typeof options.forceAliasCreation === 'boolean' ? options.forceAliasCreation : true;\n var clientMetadata;\n\n if (options && options.clientMetadata) {\n clientMetadata = options.clientMetadata;\n } else if (this._config.clientMetadata) {\n clientMetadata = this._config.clientMetadata;\n }\n\n return new Promise(function (resolve, reject) {\n user.confirmRegistration(code, forceAliasCreation, function (err, data) {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n }, clientMetadata);\n });\n };\n /**\n * Resend the verification code\n * @param {String} username - The username to be confirmed\n * @param {ClientMetadata} clientMetadata - Metadata to be passed to Cognito Lambda triggers\n * @return - A promise resolves code delivery details if successful\n */\n\n\n AuthClass.prototype.resendSignUp = function (username, clientMetadata) {\n if (clientMetadata === void 0) {\n clientMetadata = this._config.clientMetadata;\n }\n\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n\n var user = this.createCognitoUser(username);\n return new Promise(function (resolve, reject) {\n user.resendConfirmationCode(function (err, data) {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n }, clientMetadata);\n });\n };\n /**\n * Sign in\n * @param {String | SignInOpts} usernameOrSignInOpts - The username to be signed in or the sign in options\n * @param {String} password - The password of the username\n * @return - A promise resolves the CognitoUser\n */\n\n\n AuthClass.prototype.signIn = function (usernameOrSignInOpts, pw, clientMetadata) {\n if (clientMetadata === void 0) {\n clientMetadata = this._config.clientMetadata;\n }\n\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n\n var username = null;\n var password = null;\n var validationData = {}; // for backward compatibility\n\n if (typeof usernameOrSignInOpts === 'string') {\n username = usernameOrSignInOpts;\n password = pw;\n } else if (isUsernamePasswordOpts(usernameOrSignInOpts)) {\n if (typeof pw !== 'undefined') {\n logger.warn('The password should be defined under the first parameter object!');\n }\n\n username = usernameOrSignInOpts.username;\n password = usernameOrSignInOpts.password;\n validationData = usernameOrSignInOpts.validationData;\n } else {\n return this.rejectAuthError(AuthErrorTypes.InvalidUsername);\n }\n\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n\n var authDetails = new AuthenticationDetails({\n Username: username,\n Password: password,\n ValidationData: validationData,\n ClientMetadata: clientMetadata\n });\n\n if (password) {\n return this.signInWithPassword(authDetails);\n } else {\n return this.signInWithoutPassword(authDetails);\n }\n };\n /**\n * Return an object with the authentication callbacks\n * @param {CognitoUser} user - the cognito user object\n * @param {} resolve - function called when resolving the current step\n * @param {} reject - function called when rejecting the current step\n * @return - an object with the callback methods for user authentication\n */\n\n\n AuthClass.prototype.authCallbacks = function (user, resolve, reject) {\n var _this = this;\n\n var that = this;\n return {\n onSuccess: function onSuccess(session) {\n return __awaiter(_this, void 0, void 0, function () {\n var cred, e_1, currentUser, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug(session);\n delete user['challengeName'];\n delete user['challengeParam'];\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 4, 5, 9]);\n\n return [4\n /*yield*/\n , this.Credentials.clear()];\n\n case 2:\n _a.sent();\n\n return [4\n /*yield*/\n , this.Credentials.set(session, 'session')];\n\n case 3:\n cred = _a.sent();\n logger.debug('succeed to get cognito credentials', cred);\n return [3\n /*break*/\n , 9];\n\n case 4:\n e_1 = _a.sent();\n logger.debug('cannot get cognito credentials', e_1);\n return [3\n /*break*/\n , 9];\n\n case 5:\n _a.trys.push([5, 7,, 8]);\n\n return [4\n /*yield*/\n , this.currentUserPoolUser()];\n\n case 6:\n currentUser = _a.sent();\n that.user = currentUser;\n dispatchAuthEvent('signIn', currentUser, \"A user \" + user.getUsername() + \" has been signed in\");\n resolve(currentUser);\n return [3\n /*break*/\n , 8];\n\n case 7:\n e_2 = _a.sent();\n logger.error('Failed to get the signed in user', e_2);\n reject(e_2);\n return [3\n /*break*/\n , 8];\n\n case 8:\n return [7\n /*endfinally*/\n ];\n\n case 9:\n return [2\n /*return*/\n ];\n }\n });\n });\n },\n onFailure: function onFailure(err) {\n logger.debug('signIn failure', err);\n dispatchAuthEvent('signIn_failure', err, user.getUsername() + \" failed to signin\");\n reject(err);\n },\n customChallenge: function customChallenge(challengeParam) {\n logger.debug('signIn custom challenge answer required');\n user['challengeName'] = 'CUSTOM_CHALLENGE';\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n mfaRequired: function mfaRequired(challengeName, challengeParam) {\n logger.debug('signIn MFA required');\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n mfaSetup: function mfaSetup(challengeName, challengeParam) {\n logger.debug('signIn mfa setup', challengeName);\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n newPasswordRequired: function newPasswordRequired(userAttributes, requiredAttributes) {\n logger.debug('signIn new password');\n user['challengeName'] = 'NEW_PASSWORD_REQUIRED';\n user['challengeParam'] = {\n userAttributes: userAttributes,\n requiredAttributes: requiredAttributes\n };\n resolve(user);\n },\n totpRequired: function totpRequired(challengeName, challengeParam) {\n logger.debug('signIn totpRequired');\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n selectMFAType: function selectMFAType(challengeName, challengeParam) {\n logger.debug('signIn selectMFAType', challengeName);\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n }\n };\n };\n /**\n * Sign in with a password\n * @private\n * @param {AuthenticationDetails} authDetails - the user sign in data\n * @return - A promise resolves the CognitoUser object if success or mfa required\n */\n\n\n AuthClass.prototype.signInWithPassword = function (authDetails) {\n var _this = this;\n\n if (this.pendingSignIn) {\n throw new Error('Pending sign-in attempt already in progress');\n }\n\n var user = this.createCognitoUser(authDetails.getUsername());\n this.pendingSignIn = new Promise(function (resolve, reject) {\n user.authenticateUser(authDetails, _this.authCallbacks(user, function (value) {\n _this.pendingSignIn = null;\n resolve(value);\n }, function (error) {\n _this.pendingSignIn = null;\n reject(error);\n }));\n });\n return this.pendingSignIn;\n };\n /**\n * Sign in without a password\n * @private\n * @param {AuthenticationDetails} authDetails - the user sign in data\n * @return - A promise resolves the CognitoUser object if success or mfa required\n */\n\n\n AuthClass.prototype.signInWithoutPassword = function (authDetails) {\n var _this = this;\n\n var user = this.createCognitoUser(authDetails.getUsername());\n user.setAuthenticationFlowType('CUSTOM_AUTH');\n return new Promise(function (resolve, reject) {\n user.initiateAuth(authDetails, _this.authCallbacks(user, resolve, reject));\n });\n };\n /**\n * get user current preferred mfa option\n * this method doesn't work with totp, we need to deprecate it.\n * @deprecated\n * @param {CognitoUser} user - the current user\n * @return - A promise resolves the current preferred mfa option if success\n */\n\n\n AuthClass.prototype.getMFAOptions = function (user) {\n return new Promise(function (res, rej) {\n user.getMFAOptions(function (err, mfaOptions) {\n if (err) {\n logger.debug('get MFA Options failed', err);\n rej(err);\n return;\n }\n\n logger.debug('get MFA options success', mfaOptions);\n res(mfaOptions);\n return;\n });\n });\n };\n /**\n * get preferred mfa method\n * @param {CognitoUser} user - the current cognito user\n * @param {GetPreferredMFAOpts} params - options for getting the current user preferred MFA\n */\n\n\n AuthClass.prototype.getPreferredMFA = function (user, params) {\n var that = this;\n return new Promise(function (res, rej) {\n var bypassCache = params ? params.bypassCache : false;\n user.getUserData(function (err, data) {\n if (err) {\n logger.debug('getting preferred mfa failed', err);\n rej(err);\n return;\n }\n\n var mfaType = that._getMfaTypeFromUserData(data);\n\n if (!mfaType) {\n rej('invalid MFA Type');\n return;\n } else {\n res(mfaType);\n return;\n }\n }, {\n bypassCache: bypassCache\n });\n });\n };\n\n AuthClass.prototype._getMfaTypeFromUserData = function (data) {\n var ret = null;\n var preferredMFA = data.PreferredMfaSetting; // if the user has used Auth.setPreferredMFA() to setup the mfa type\n // then the \"PreferredMfaSetting\" would exist in the response\n\n if (preferredMFA) {\n ret = preferredMFA;\n } else {\n // if mfaList exists but empty, then its noMFA\n var mfaList = data.UserMFASettingList;\n\n if (!mfaList) {\n // if SMS was enabled by using Auth.enableSMS(),\n // the response would contain MFAOptions\n // as for now Cognito only supports for SMS, so we will say it is 'SMS_MFA'\n // if it does not exist, then it should be NOMFA\n var MFAOptions = data.MFAOptions;\n\n if (MFAOptions) {\n ret = 'SMS_MFA';\n } else {\n ret = 'NOMFA';\n }\n } else if (mfaList.length === 0) {\n ret = 'NOMFA';\n } else {\n logger.debug('invalid case for getPreferredMFA', data);\n }\n }\n\n return ret;\n };\n\n AuthClass.prototype._getUserData = function (user, params) {\n return new Promise(function (res, rej) {\n user.getUserData(function (err, data) {\n if (err) {\n logger.debug('getting user data failed', err);\n rej(err);\n return;\n } else {\n res(data);\n return;\n }\n }, params);\n });\n };\n /**\n * set preferred MFA method\n * @param {CognitoUser} user - the current Cognito user\n * @param {string} mfaMethod - preferred mfa method\n * @return - A promise resolve if success\n */\n\n\n AuthClass.prototype.setPreferredMFA = function (user, mfaMethod) {\n return __awaiter(this, void 0, void 0, function () {\n var userData, smsMfaSettings, totpMfaSettings, _a, mfaList, currentMFAType, that;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4\n /*yield*/\n , this._getUserData(user, {\n bypassCache: true\n })];\n\n case 1:\n userData = _b.sent();\n smsMfaSettings = null;\n totpMfaSettings = null;\n _a = mfaMethod;\n\n switch (_a) {\n case 'TOTP' || 'SOFTWARE_TOKEN_MFA':\n return [3\n /*break*/\n , 2];\n\n case 'SMS' || 'SMS_MFA':\n return [3\n /*break*/\n , 3];\n\n case 'NOMFA':\n return [3\n /*break*/\n , 4];\n }\n\n return [3\n /*break*/\n , 6];\n\n case 2:\n totpMfaSettings = {\n PreferredMfa: true,\n Enabled: true\n };\n return [3\n /*break*/\n , 7];\n\n case 3:\n smsMfaSettings = {\n PreferredMfa: true,\n Enabled: true\n };\n return [3\n /*break*/\n , 7];\n\n case 4:\n mfaList = userData['UserMFASettingList'];\n return [4\n /*yield*/\n , this._getMfaTypeFromUserData(userData)];\n\n case 5:\n currentMFAType = _b.sent();\n\n if (currentMFAType === 'NOMFA') {\n return [2\n /*return*/\n , Promise.resolve('No change for mfa type')];\n } else if (currentMFAType === 'SMS_MFA') {\n smsMfaSettings = {\n PreferredMfa: false,\n Enabled: false\n };\n } else if (currentMFAType === 'SOFTWARE_TOKEN_MFA') {\n totpMfaSettings = {\n PreferredMfa: false,\n Enabled: false\n };\n } else {\n return [2\n /*return*/\n , this.rejectAuthError(AuthErrorTypes.InvalidMFA)];\n } // if there is a UserMFASettingList in the response\n // we need to disable every mfa type in that list\n\n\n if (mfaList && mfaList.length !== 0) {\n // to disable SMS or TOTP if exists in that list\n mfaList.forEach(function (mfaType) {\n if (mfaType === 'SMS_MFA') {\n smsMfaSettings = {\n PreferredMfa: false,\n Enabled: false\n };\n } else if (mfaType === 'SOFTWARE_TOKEN_MFA') {\n totpMfaSettings = {\n PreferredMfa: false,\n Enabled: false\n };\n }\n });\n }\n\n return [3\n /*break*/\n , 7];\n\n case 6:\n logger.debug('no validmfa method provided');\n return [2\n /*return*/\n , this.rejectAuthError(AuthErrorTypes.NoMFA)];\n\n case 7:\n that = this;\n return [2\n /*return*/\n , new Promise(function (res, rej) {\n user.setUserMfaPreference(smsMfaSettings, totpMfaSettings, function (err, result) {\n if (err) {\n logger.debug('Set user mfa preference error', err);\n return rej(err);\n }\n\n logger.debug('Set user mfa success', result);\n logger.debug('Caching the latest user data into local'); // cache the latest result into user data\n\n user.getUserData(function (err, data) {\n if (err) {\n logger.debug('getting user data failed', err);\n return rej(err);\n } else {\n return res(result);\n }\n }, {\n bypassCache: true\n });\n });\n })];\n }\n });\n });\n };\n /**\n * diable SMS\n * @deprecated\n * @param {CognitoUser} user - the current user\n * @return - A promise resolves is success\n */\n\n\n AuthClass.prototype.disableSMS = function (user) {\n return new Promise(function (res, rej) {\n user.disableMFA(function (err, data) {\n if (err) {\n logger.debug('disable mfa failed', err);\n rej(err);\n return;\n }\n\n logger.debug('disable mfa succeed', data);\n res(data);\n return;\n });\n });\n };\n /**\n * enable SMS\n * @deprecated\n * @param {CognitoUser} user - the current user\n * @return - A promise resolves is success\n */\n\n\n AuthClass.prototype.enableSMS = function (user) {\n return new Promise(function (res, rej) {\n user.enableMFA(function (err, data) {\n if (err) {\n logger.debug('enable mfa failed', err);\n rej(err);\n return;\n }\n\n logger.debug('enable mfa succeed', data);\n res(data);\n return;\n });\n });\n };\n /**\n * Setup TOTP\n * @param {CognitoUser} user - the current user\n * @return - A promise resolves with the secret code if success\n */\n\n\n AuthClass.prototype.setupTOTP = function (user) {\n return new Promise(function (res, rej) {\n user.associateSoftwareToken({\n onFailure: function onFailure(err) {\n logger.debug('associateSoftwareToken failed', err);\n rej(err);\n return;\n },\n associateSecretCode: function associateSecretCode(secretCode) {\n logger.debug('associateSoftwareToken sucess', secretCode);\n res(secretCode);\n return;\n }\n });\n });\n };\n /**\n * verify TOTP setup\n * @param {CognitoUser} user - the current user\n * @param {string} challengeAnswer - challenge answer\n * @return - A promise resolves is success\n */\n\n\n AuthClass.prototype.verifyTotpToken = function (user, challengeAnswer) {\n logger.debug('verfication totp token', user, challengeAnswer);\n return new Promise(function (res, rej) {\n user.verifySoftwareToken(challengeAnswer, 'My TOTP device', {\n onFailure: function onFailure(err) {\n logger.debug('verifyTotpToken failed', err);\n rej(err);\n return;\n },\n onSuccess: function onSuccess(data) {\n dispatchAuthEvent('signIn', user, \"A user \" + user.getUsername() + \" has been signed in\");\n logger.debug('verifyTotpToken success', data);\n res(data);\n return;\n }\n });\n });\n };\n /**\n * Send MFA code to confirm sign in\n * @param {Object} user - The CognitoUser object\n * @param {String} code - The confirmation code\n */\n\n\n AuthClass.prototype.confirmSignIn = function (user, code, mfaType, clientMetadata) {\n var _this = this;\n\n if (clientMetadata === void 0) {\n clientMetadata = this._config.clientMetadata;\n }\n\n if (!code) {\n return this.rejectAuthError(AuthErrorTypes.EmptyCode);\n }\n\n var that = this;\n return new Promise(function (resolve, reject) {\n user.sendMFACode(code, {\n onSuccess: function onSuccess(session) {\n return __awaiter(_this, void 0, void 0, function () {\n var cred, e_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug(session);\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 4, 5, 6]);\n\n return [4\n /*yield*/\n , this.Credentials.clear()];\n\n case 2:\n _a.sent();\n\n return [4\n /*yield*/\n , this.Credentials.set(session, 'session')];\n\n case 3:\n cred = _a.sent();\n logger.debug('succeed to get cognito credentials', cred);\n return [3\n /*break*/\n , 6];\n\n case 4:\n e_3 = _a.sent();\n logger.debug('cannot get cognito credentials', e_3);\n return [3\n /*break*/\n , 6];\n\n case 5:\n that.user = user;\n dispatchAuthEvent('signIn', user, \"A user \" + user.getUsername() + \" has been signed in\");\n resolve(user);\n return [7\n /*endfinally*/\n ];\n\n case 6:\n return [2\n /*return*/\n ];\n }\n });\n });\n },\n onFailure: function onFailure(err) {\n logger.debug('confirm signIn failure', err);\n reject(err);\n }\n }, mfaType, clientMetadata);\n });\n };\n\n AuthClass.prototype.completeNewPassword = function (user, password, requiredAttributes, clientMetadata) {\n var _this = this;\n\n if (requiredAttributes === void 0) {\n requiredAttributes = {};\n }\n\n if (clientMetadata === void 0) {\n clientMetadata = this._config.clientMetadata;\n }\n\n if (!password) {\n return this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n }\n\n var that = this;\n return new Promise(function (resolve, reject) {\n user.completeNewPasswordChallenge(password, requiredAttributes, {\n onSuccess: function onSuccess(session) {\n return __awaiter(_this, void 0, void 0, function () {\n var cred, e_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug(session);\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 4, 5, 6]);\n\n return [4\n /*yield*/\n , this.Credentials.clear()];\n\n case 2:\n _a.sent();\n\n return [4\n /*yield*/\n , this.Credentials.set(session, 'session')];\n\n case 3:\n cred = _a.sent();\n logger.debug('succeed to get cognito credentials', cred);\n return [3\n /*break*/\n , 6];\n\n case 4:\n e_4 = _a.sent();\n logger.debug('cannot get cognito credentials', e_4);\n return [3\n /*break*/\n , 6];\n\n case 5:\n that.user = user;\n dispatchAuthEvent('signIn', user, \"A user \" + user.getUsername() + \" has been signed in\");\n resolve(user);\n return [7\n /*endfinally*/\n ];\n\n case 6:\n return [2\n /*return*/\n ];\n }\n });\n });\n },\n onFailure: function onFailure(err) {\n logger.debug('completeNewPassword failure', err);\n dispatchAuthEvent('completeNewPassword_failure', err, _this.user + \" failed to complete the new password flow\");\n reject(err);\n },\n mfaRequired: function mfaRequired(challengeName, challengeParam) {\n logger.debug('signIn MFA required');\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n mfaSetup: function mfaSetup(challengeName, challengeParam) {\n logger.debug('signIn mfa setup', challengeName);\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n totpRequired: function totpRequired(challengeName, challengeParam) {\n logger.debug('signIn mfa setup', challengeName);\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n }\n }, clientMetadata);\n });\n };\n /**\n * Send the answer to a custom challenge\n * @param {CognitoUser} user - The CognitoUser object\n * @param {String} challengeResponses - The confirmation code\n */\n\n\n AuthClass.prototype.sendCustomChallengeAnswer = function (user, challengeResponses, clientMetadata) {\n var _this = this;\n\n if (clientMetadata === void 0) {\n clientMetadata = this._config.clientMetadata;\n }\n\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n\n if (!challengeResponses) {\n return this.rejectAuthError(AuthErrorTypes.EmptyChallengeResponse);\n }\n\n var that = this;\n return new Promise(function (resolve, reject) {\n user.sendCustomChallengeAnswer(challengeResponses, _this.authCallbacks(user, resolve, reject), clientMetadata);\n });\n };\n /**\n * Update an authenticated users' attributes\n * @param {CognitoUser} - The currently logged in user object\n * @return {Promise}\n **/\n\n\n AuthClass.prototype.updateUserAttributes = function (user, attributes, clientMetadata) {\n if (clientMetadata === void 0) {\n clientMetadata = this._config.clientMetadata;\n }\n\n var attributeList = [];\n var that = this;\n return new Promise(function (resolve, reject) {\n that.userSession(user).then(function (session) {\n for (var key in attributes) {\n if (key !== 'sub' && key.indexOf('_verified') < 0) {\n var attr = {\n Name: key,\n Value: attributes[key]\n };\n attributeList.push(attr);\n }\n }\n\n user.updateAttributes(attributeList, function (err, result) {\n if (err) {\n return reject(err);\n } else {\n return resolve(result);\n }\n }, clientMetadata);\n });\n });\n };\n /**\n * Return user attributes\n * @param {Object} user - The CognitoUser object\n * @return - A promise resolves to user attributes if success\n */\n\n\n AuthClass.prototype.userAttributes = function (user) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n _this.userSession(user).then(function (session) {\n user.getUserAttributes(function (err, attributes) {\n if (err) {\n reject(err);\n } else {\n resolve(attributes);\n }\n });\n });\n });\n };\n\n AuthClass.prototype.verifiedContact = function (user) {\n var that = this;\n return this.userAttributes(user).then(function (attributes) {\n var attrs = that.attributesToObject(attributes);\n var unverified = {};\n var verified = {};\n\n if (attrs['email']) {\n if (attrs['email_verified']) {\n verified['email'] = attrs['email'];\n } else {\n unverified['email'] = attrs['email'];\n }\n }\n\n if (attrs['phone_number']) {\n if (attrs['phone_number_verified']) {\n verified['phone_number'] = attrs['phone_number'];\n } else {\n unverified['phone_number'] = attrs['phone_number'];\n }\n }\n\n return {\n verified: verified,\n unverified: unverified\n };\n });\n };\n /**\n * Get current authenticated user\n * @return - A promise resolves to current authenticated CognitoUser if success\n */\n\n\n AuthClass.prototype.currentUserPoolUser = function (params) {\n var _this = this;\n\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n\n return new Promise(function (res, rej) {\n _this._storageSync.then(function () {\n return __awaiter(_this, void 0, void 0, function () {\n var user;\n\n var _this = this;\n\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isOAuthInProgress()) return [3\n /*break*/\n , 2];\n logger.debug('OAuth signIn in progress, waiting for resolution...');\n return [4\n /*yield*/\n , new Promise(function (res) {\n var timeoutId = setTimeout(function () {\n logger.debug('OAuth signIn in progress timeout');\n Hub.remove('auth', hostedUISignCallback);\n res();\n }, OAUTH_FLOW_MS_TIMEOUT);\n Hub.listen('auth', hostedUISignCallback);\n\n function hostedUISignCallback(_a) {\n var payload = _a.payload;\n var event = payload.event;\n\n if (event === 'cognitoHostedUI' || event === 'cognitoHostedUI_failure') {\n logger.debug(\"OAuth signIn resolved: \" + event);\n clearTimeout(timeoutId);\n Hub.remove('auth', hostedUISignCallback);\n res();\n }\n }\n })];\n\n case 1:\n _a.sent();\n\n _a.label = 2;\n\n case 2:\n user = this.userPool.getCurrentUser();\n\n if (!user) {\n logger.debug('Failed to get user from user pool');\n rej('No current user');\n return [2\n /*return*/\n ];\n } // refresh the session if the session expired.\n\n\n user.getSession(function (err, session) {\n return __awaiter(_this, void 0, void 0, function () {\n var bypassCache, _a, scope;\n\n var _this = this;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (err) {\n logger.debug('Failed to get the user session', err);\n rej(err);\n return [2\n /*return*/\n ];\n }\n\n bypassCache = params ? params.bypassCache : false;\n if (!bypassCache) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this.Credentials.clear()];\n\n case 1:\n _b.sent();\n\n _b.label = 2;\n\n case 2:\n _a = session.getAccessToken().decodePayload().scope, scope = _a === void 0 ? '' : _a;\n\n if (scope.split(' ').includes(USER_ADMIN_SCOPE)) {\n user.getUserData(function (err, data) {\n if (err) {\n logger.debug('getting user data failed', err); // Make sure the user is still valid\n\n if (err.message === 'User is disabled.' || err.message === 'User does not exist.' || err.message === 'Access Token has been revoked' // Session revoked by another app\n ) {\n rej(err);\n } else {\n // the error may also be thrown when lack of permissions to get user info etc\n // in that case we just bypass the error\n res(user);\n }\n\n return;\n }\n\n var preferredMFA = data.PreferredMfaSetting || 'NOMFA';\n var attributeList = [];\n\n for (var i = 0; i < data.UserAttributes.length; i++) {\n var attribute = {\n Name: data.UserAttributes[i].Name,\n Value: data.UserAttributes[i].Value\n };\n var userAttribute = new CognitoUserAttribute(attribute);\n attributeList.push(userAttribute);\n }\n\n var attributes = _this.attributesToObject(attributeList);\n\n Object.assign(user, {\n attributes: attributes,\n preferredMFA: preferredMFA\n });\n return res(user);\n }, {\n bypassCache: bypassCache\n });\n } else {\n logger.debug(\"Unable to get the user data because the \" + USER_ADMIN_SCOPE + \" \" + \"is not in the scopes of the access token\");\n return [2\n /*return*/\n , res(user)];\n }\n\n return [2\n /*return*/\n ];\n }\n });\n });\n });\n return [2\n /*return*/\n ];\n }\n });\n });\n }).catch(function (e) {\n logger.debug('Failed to sync cache info into memory', e);\n return rej(e);\n });\n });\n };\n\n AuthClass.prototype.isOAuthInProgress = function () {\n return this.oAuthFlowInProgress;\n };\n /**\n * Get current authenticated user\n * @param {CurrentUserOpts} - options for getting the current user\n * @return - A promise resolves to current authenticated CognitoUser if success\n */\n\n\n AuthClass.prototype.currentAuthenticatedUser = function (params) {\n return __awaiter(this, void 0, void 0, function () {\n var federatedUser, e_5, federatedInfo, user, e_6;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug('getting current authenticated user');\n federatedUser = null;\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , this._storageSync];\n\n case 2:\n _a.sent();\n\n return [3\n /*break*/\n , 4];\n\n case 3:\n e_5 = _a.sent();\n logger.debug('Failed to sync cache info into memory', e_5);\n throw e_5;\n\n case 4:\n try {\n federatedInfo = JSON.parse(this._storage.getItem('aws-amplify-federatedInfo'));\n\n if (federatedInfo) {\n federatedUser = __assign(__assign({}, federatedInfo.user), {\n token: federatedInfo.token\n });\n }\n } catch (e) {\n logger.debug('cannot load federated user from auth storage');\n }\n\n if (!federatedUser) return [3\n /*break*/\n , 5];\n this.user = federatedUser;\n logger.debug('get current authenticated federated user', this.user);\n return [2\n /*return*/\n , this.user];\n\n case 5:\n logger.debug('get current authenticated userpool user');\n user = null;\n _a.label = 6;\n\n case 6:\n _a.trys.push([6, 8,, 9]);\n\n return [4\n /*yield*/\n , this.currentUserPoolUser(params)];\n\n case 7:\n user = _a.sent();\n return [3\n /*break*/\n , 9];\n\n case 8:\n e_6 = _a.sent();\n\n if (e_6 === 'No userPool') {\n logger.error('Cannot get the current user because the user pool is missing. ' + 'Please make sure the Auth module is configured with a valid Cognito User Pool ID');\n }\n\n logger.debug('The user is not authenticated by the error', e_6);\n return [2\n /*return*/\n , Promise.reject('The user is not authenticated')];\n\n case 9:\n this.user = user;\n return [2\n /*return*/\n , this.user];\n }\n });\n });\n };\n /**\n * Get current user's session\n * @return - A promise resolves to session object if success\n */\n\n\n AuthClass.prototype.currentSession = function () {\n var that = this;\n logger.debug('Getting current session'); // Purposely not calling the reject method here because we don't need a console error\n\n if (!this.userPool) {\n return Promise.reject();\n }\n\n return new Promise(function (res, rej) {\n that.currentUserPoolUser().then(function (user) {\n that.userSession(user).then(function (session) {\n res(session);\n return;\n }).catch(function (e) {\n logger.debug('Failed to get the current session', e);\n rej(e);\n return;\n });\n }).catch(function (e) {\n logger.debug('Failed to get the current user', e);\n rej(e);\n return;\n });\n });\n };\n /**\n * Get the corresponding user session\n * @param {Object} user - The CognitoUser object\n * @return - A promise resolves to the session\n */\n\n\n AuthClass.prototype.userSession = function (user) {\n if (!user) {\n logger.debug('the user is null');\n return this.rejectAuthError(AuthErrorTypes.NoUserSession);\n }\n\n return new Promise(function (resolve, reject) {\n logger.debug('Getting the session from this user:', user);\n user.getSession(function (err, session) {\n if (err) {\n logger.debug('Failed to get the session from user', user);\n reject(err);\n return;\n } else {\n logger.debug('Succeed to get the user session', session);\n resolve(session);\n return;\n }\n });\n });\n };\n /**\n * Get authenticated credentials of current user.\n * @return - A promise resolves to be current user's credentials\n */\n\n\n AuthClass.prototype.currentUserCredentials = function () {\n return __awaiter(this, void 0, void 0, function () {\n var e_7, federatedInfo;\n\n var _this = this;\n\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug('Getting current user credentials');\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , this._storageSync];\n\n case 2:\n _a.sent();\n\n return [3\n /*break*/\n , 4];\n\n case 3:\n e_7 = _a.sent();\n logger.debug('Failed to sync cache info into memory', e_7);\n throw e_7;\n\n case 4:\n federatedInfo = null;\n\n try {\n federatedInfo = JSON.parse(this._storage.getItem('aws-amplify-federatedInfo'));\n } catch (e) {\n logger.debug('failed to get or parse item aws-amplify-federatedInfo', e);\n }\n\n if (federatedInfo) {\n // refresh the jwt token here if necessary\n return [2\n /*return*/\n , this.Credentials.refreshFederatedToken(federatedInfo)];\n } else {\n return [2\n /*return*/\n , this.currentSession().then(function (session) {\n logger.debug('getting session success', session);\n return _this.Credentials.set(session, 'session');\n }).catch(function (error) {\n logger.debug('getting session failed', error);\n return _this.Credentials.set(null, 'guest');\n })];\n }\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n AuthClass.prototype.currentCredentials = function () {\n logger.debug('getting current credentials');\n return this.Credentials.get();\n };\n /**\n * Initiate an attribute confirmation request\n * @param {Object} user - The CognitoUser\n * @param {Object} attr - The attributes to be verified\n * @return - A promise resolves to callback data if success\n */\n\n\n AuthClass.prototype.verifyUserAttribute = function (user, attr, clientMetadata) {\n if (clientMetadata === void 0) {\n clientMetadata = this._config.clientMetadata;\n }\n\n return new Promise(function (resolve, reject) {\n user.getAttributeVerificationCode(attr, {\n onSuccess: function onSuccess() {\n return resolve();\n },\n onFailure: function onFailure(err) {\n return reject(err);\n }\n }, clientMetadata);\n });\n };\n /**\n * Confirm an attribute using a confirmation code\n * @param {Object} user - The CognitoUser\n * @param {Object} attr - The attribute to be verified\n * @param {String} code - The confirmation code\n * @return - A promise resolves to callback data if success\n */\n\n\n AuthClass.prototype.verifyUserAttributeSubmit = function (user, attr, code) {\n if (!code) {\n return this.rejectAuthError(AuthErrorTypes.EmptyCode);\n }\n\n return new Promise(function (resolve, reject) {\n user.verifyAttribute(attr, code, {\n onSuccess: function onSuccess(data) {\n resolve(data);\n return;\n },\n onFailure: function onFailure(err) {\n reject(err);\n return;\n }\n });\n });\n };\n\n AuthClass.prototype.verifyCurrentUserAttribute = function (attr) {\n var that = this;\n return that.currentUserPoolUser().then(function (user) {\n return that.verifyUserAttribute(user, attr);\n });\n };\n /**\n * Confirm current user's attribute using a confirmation code\n * @param {Object} attr - The attribute to be verified\n * @param {String} code - The confirmation code\n * @return - A promise resolves to callback data if success\n */\n\n\n AuthClass.prototype.verifyCurrentUserAttributeSubmit = function (attr, code) {\n var that = this;\n return that.currentUserPoolUser().then(function (user) {\n return that.verifyUserAttributeSubmit(user, attr, code);\n });\n };\n\n AuthClass.prototype.cognitoIdentitySignOut = function (opts, user) {\n return __awaiter(this, void 0, void 0, function () {\n var e_8, isSignedInHostedUI;\n\n var _this = this;\n\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2,, 3]);\n\n return [4\n /*yield*/\n , this._storageSync];\n\n case 1:\n _a.sent();\n\n return [3\n /*break*/\n , 3];\n\n case 2:\n e_8 = _a.sent();\n logger.debug('Failed to sync cache info into memory', e_8);\n throw e_8;\n\n case 3:\n isSignedInHostedUI = this._oAuthHandler && this._storage.getItem('amplify-signin-with-hostedUI') === 'true';\n return [2\n /*return*/\n , new Promise(function (res, rej) {\n if (opts && opts.global) {\n logger.debug('user global sign out', user); // in order to use global signout\n // we must validate the user as an authenticated user by using getSession\n\n user.getSession(function (err, result) {\n if (err) {\n logger.debug('failed to get the user session', err);\n return rej(err);\n }\n\n user.globalSignOut({\n onSuccess: function onSuccess(data) {\n logger.debug('global sign out success');\n\n if (isSignedInHostedUI) {\n _this.oAuthSignOutRedirect(res, rej);\n } else {\n return res();\n }\n },\n onFailure: function onFailure(err) {\n logger.debug('global sign out failed', err);\n return rej(err);\n }\n });\n });\n } else {\n logger.debug('user sign out', user);\n user.signOut();\n\n if (isSignedInHostedUI) {\n _this.oAuthSignOutRedirect(res, rej);\n } else {\n return res();\n }\n }\n })];\n }\n });\n });\n };\n\n AuthClass.prototype.oAuthSignOutRedirect = function (resolve, reject) {\n var isBrowser = JS.browserOrNode().isBrowser;\n\n if (isBrowser) {\n this.oAuthSignOutRedirectOrReject(reject);\n } else {\n this.oAuthSignOutAndResolve(resolve);\n }\n };\n\n AuthClass.prototype.oAuthSignOutAndResolve = function (resolve) {\n this._oAuthHandler.signOut();\n\n resolve();\n };\n\n AuthClass.prototype.oAuthSignOutRedirectOrReject = function (reject) {\n this._oAuthHandler.signOut(); // this method redirects url\n // App should be redirected to another url otherwise it will reject\n\n\n setTimeout(function () {\n return reject('Signout timeout fail');\n }, 3000);\n };\n /**\n * Sign out method\n * @\n * @return - A promise resolved if success\n */\n\n\n AuthClass.prototype.signOut = function (opts) {\n return __awaiter(this, void 0, void 0, function () {\n var e_9, user;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2,, 3]);\n\n return [4\n /*yield*/\n , this.cleanCachedItems()];\n\n case 1:\n _a.sent();\n\n return [3\n /*break*/\n , 3];\n\n case 2:\n e_9 = _a.sent();\n logger.debug('failed to clear cached items');\n return [3\n /*break*/\n , 3];\n\n case 3:\n if (!this.userPool) return [3\n /*break*/\n , 7];\n user = this.userPool.getCurrentUser();\n if (!user) return [3\n /*break*/\n , 5];\n return [4\n /*yield*/\n , this.cognitoIdentitySignOut(opts, user)];\n\n case 4:\n _a.sent();\n\n return [3\n /*break*/\n , 6];\n\n case 5:\n logger.debug('no current Cognito user');\n _a.label = 6;\n\n case 6:\n return [3\n /*break*/\n , 8];\n\n case 7:\n logger.debug('no Congito User pool');\n _a.label = 8;\n\n case 8:\n /**\n * Note for future refactor - no reliable way to get username with\n * Cognito User Pools vs Identity when federating with Social Providers\n * This is why we need a well structured session object that can be inspected\n * and information passed back in the message below for Hub dispatch\n */\n dispatchAuthEvent('signOut', this.user, \"A user has been signed out\");\n this.user = null;\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n AuthClass.prototype.cleanCachedItems = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // clear cognito cached item\n return [4\n /*yield*/\n , this.Credentials.clear()];\n\n case 1:\n // clear cognito cached item\n _a.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n /**\n * Change a password for an authenticated user\n * @param {Object} user - The CognitoUser object\n * @param {String} oldPassword - the current password\n * @param {String} newPassword - the requested new password\n * @return - A promise resolves if success\n */\n\n\n AuthClass.prototype.changePassword = function (user, oldPassword, newPassword, clientMetadata) {\n var _this = this;\n\n if (clientMetadata === void 0) {\n clientMetadata = this._config.clientMetadata;\n }\n\n return new Promise(function (resolve, reject) {\n _this.userSession(user).then(function (session) {\n user.changePassword(oldPassword, newPassword, function (err, data) {\n if (err) {\n logger.debug('change password failure', err);\n return reject(err);\n } else {\n return resolve(data);\n }\n }, clientMetadata);\n });\n });\n };\n /**\n * Initiate a forgot password request\n * @param {String} username - the username to change password\n * @return - A promise resolves if success\n */\n\n\n AuthClass.prototype.forgotPassword = function (username, clientMetadata) {\n if (clientMetadata === void 0) {\n clientMetadata = this._config.clientMetadata;\n }\n\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n\n var user = this.createCognitoUser(username);\n return new Promise(function (resolve, reject) {\n user.forgotPassword({\n onSuccess: function onSuccess() {\n resolve();\n return;\n },\n onFailure: function onFailure(err) {\n logger.debug('forgot password failure', err);\n dispatchAuthEvent('forgotPassword_failure', err, username + \" forgotPassword failed\");\n reject(err);\n return;\n },\n inputVerificationCode: function inputVerificationCode(data) {\n dispatchAuthEvent('forgotPassword', user, username + \" has initiated forgot password flow\");\n resolve(data);\n return;\n }\n }, clientMetadata);\n });\n };\n /**\n * Confirm a new password using a confirmation Code\n * @param {String} username - The username\n * @param {String} code - The confirmation code\n * @param {String} password - The new password\n * @return - A promise that resolves if success\n */\n\n\n AuthClass.prototype.forgotPasswordSubmit = function (username, code, password, clientMetadata) {\n if (clientMetadata === void 0) {\n clientMetadata = this._config.clientMetadata;\n }\n\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n\n if (!code) {\n return this.rejectAuthError(AuthErrorTypes.EmptyCode);\n }\n\n if (!password) {\n return this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n }\n\n var user = this.createCognitoUser(username);\n return new Promise(function (resolve, reject) {\n user.confirmPassword(code, password, {\n onSuccess: function onSuccess() {\n dispatchAuthEvent('forgotPasswordSubmit', user, username + \" forgotPasswordSubmit successful\");\n resolve();\n return;\n },\n onFailure: function onFailure(err) {\n dispatchAuthEvent('forgotPasswordSubmit_failure', err, username + \" forgotPasswordSubmit failed\");\n reject(err);\n return;\n }\n }, clientMetadata);\n });\n };\n /**\n * Get user information\n * @async\n * @return {Object }- current User's information\n */\n\n\n AuthClass.prototype.currentUserInfo = function () {\n return __awaiter(this, void 0, void 0, function () {\n var source, user, attributes, userAttrs, credentials, e_10, info, err_1, user;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n source = this.Credentials.getCredSource();\n if (!(!source || source === 'aws' || source === 'userPool')) return [3\n /*break*/\n , 9];\n return [4\n /*yield*/\n , this.currentUserPoolUser().catch(function (err) {\n return logger.debug(err);\n })];\n\n case 1:\n user = _a.sent();\n\n if (!user) {\n return [2\n /*return*/\n , null];\n }\n\n _a.label = 2;\n\n case 2:\n _a.trys.push([2, 8,, 9]);\n\n return [4\n /*yield*/\n , this.userAttributes(user)];\n\n case 3:\n attributes = _a.sent();\n userAttrs = this.attributesToObject(attributes);\n credentials = null;\n _a.label = 4;\n\n case 4:\n _a.trys.push([4, 6,, 7]);\n\n return [4\n /*yield*/\n , this.currentCredentials()];\n\n case 5:\n credentials = _a.sent();\n return [3\n /*break*/\n , 7];\n\n case 6:\n e_10 = _a.sent();\n logger.debug('Failed to retrieve credentials while getting current user info', e_10);\n return [3\n /*break*/\n , 7];\n\n case 7:\n info = {\n id: credentials ? credentials.identityId : undefined,\n username: user.getUsername(),\n attributes: userAttrs\n };\n return [2\n /*return*/\n , info];\n\n case 8:\n err_1 = _a.sent();\n logger.debug('currentUserInfo error', err_1);\n return [2\n /*return*/\n , {}];\n\n case 9:\n if (source === 'federated') {\n user = this.user;\n return [2\n /*return*/\n , user ? user : {}];\n }\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n AuthClass.prototype.federatedSignIn = function (providerOrOptions, response, user) {\n return __awaiter(this, void 0, void 0, function () {\n var options, provider, customState, client_id, redirect_uri, provider, loggedInUser, token, identity_id, expires_at, credentials, currentUser;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._config.identityPoolId && !this._config.userPoolId) {\n throw new Error(\"Federation requires either a User Pool or Identity Pool in config\");\n } // Ensure backwards compatability\n\n\n if (typeof providerOrOptions === 'undefined') {\n if (this._config.identityPoolId && !this._config.userPoolId) {\n throw new Error(\"Federation with Identity Pools requires tokens passed as arguments\");\n }\n }\n\n if (!(isFederatedSignInOptions(providerOrOptions) || isFederatedSignInOptionsCustom(providerOrOptions) || hasCustomState(providerOrOptions) || typeof providerOrOptions === 'undefined')) return [3\n /*break*/\n , 1];\n options = providerOrOptions || {\n provider: CognitoHostedUIIdentityProvider.Cognito\n };\n provider = isFederatedSignInOptions(options) ? options.provider : options.customProvider;\n customState = isFederatedSignInOptions(options) ? options.customState : options.customState;\n\n if (this._config.userPoolId) {\n client_id = isCognitoHostedOpts(this._config.oauth) ? this._config.userPoolWebClientId : this._config.oauth.clientID;\n redirect_uri = isCognitoHostedOpts(this._config.oauth) ? this._config.oauth.redirectSignIn : this._config.oauth.redirectUri;\n\n this._oAuthHandler.oauthSignIn(this._config.oauth.responseType, this._config.oauth.domain, redirect_uri, client_id, provider, customState);\n }\n\n return [3\n /*break*/\n , 4];\n\n case 1:\n provider = providerOrOptions; // To check if the user is already logged in\n\n try {\n loggedInUser = JSON.stringify(JSON.parse(this._storage.getItem('aws-amplify-federatedInfo')).user);\n\n if (loggedInUser) {\n logger.warn(\"There is already a signed in user: \" + loggedInUser + \" in your app.\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tYou should not call Auth.federatedSignIn method again as it may cause unexpected behavior.\");\n }\n } catch (e) {}\n\n token = response.token, identity_id = response.identity_id, expires_at = response.expires_at;\n return [4\n /*yield*/\n , this.Credentials.set({\n provider: provider,\n token: token,\n identity_id: identity_id,\n user: user,\n expires_at: expires_at\n }, 'federation')];\n\n case 2:\n credentials = _a.sent();\n return [4\n /*yield*/\n , this.currentAuthenticatedUser()];\n\n case 3:\n currentUser = _a.sent();\n dispatchAuthEvent('signIn', currentUser, \"A user \" + currentUser.username + \" has been signed in\");\n logger.debug('federated sign in credentials', credentials);\n return [2\n /*return*/\n , credentials];\n\n case 4:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n /**\n * Used to complete the OAuth flow with or without the Cognito Hosted UI\n * @param {String} URL - optional parameter for customers to pass in the response URL\n */\n\n\n AuthClass.prototype._handleAuthResponse = function (URL) {\n return __awaiter(this, void 0, void 0, function () {\n var currentUrl, hasCodeOrError, hasTokenOrError, _a, accessToken, idToken, refreshToken, state, session, credentials, isCustomStateIncluded, currentUser, customState, err_2;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (this.oAuthFlowInProgress) {\n logger.debug(\"Skipping URL \" + URL + \" current flow in progress\");\n return [2\n /*return*/\n ];\n }\n\n _b.label = 1;\n\n case 1:\n _b.trys.push([1,, 8, 9]);\n\n this.oAuthFlowInProgress = true;\n\n if (!this._config.userPoolId) {\n throw new Error(\"OAuth responses require a User Pool defined in config\");\n }\n\n dispatchAuthEvent('parsingCallbackUrl', {\n url: URL\n }, \"The callback url is being parsed\");\n currentUrl = URL || (JS.browserOrNode().isBrowser ? window.location.href : '');\n hasCodeOrError = !!(parse(currentUrl).query || '').split('&').map(function (entry) {\n return entry.split('=');\n }).find(function (_a) {\n var _b = __read(_a, 1),\n k = _b[0];\n\n return k === 'code' || k === 'error';\n });\n hasTokenOrError = !!(parse(currentUrl).hash || '#').substr(1).split('&').map(function (entry) {\n return entry.split('=');\n }).find(function (_a) {\n var _b = __read(_a, 1),\n k = _b[0];\n\n return k === 'access_token' || k === 'error';\n });\n if (!(hasCodeOrError || hasTokenOrError)) return [3\n /*break*/\n , 7];\n\n this._storage.setItem('amplify-redirected-from-hosted-ui', 'true');\n\n _b.label = 2;\n\n case 2:\n _b.trys.push([2, 6,, 7]);\n\n return [4\n /*yield*/\n , this._oAuthHandler.handleAuthResponse(currentUrl)];\n\n case 3:\n _a = _b.sent(), accessToken = _a.accessToken, idToken = _a.idToken, refreshToken = _a.refreshToken, state = _a.state;\n session = new CognitoUserSession({\n IdToken: new CognitoIdToken({\n IdToken: idToken\n }),\n RefreshToken: new CognitoRefreshToken({\n RefreshToken: refreshToken\n }),\n AccessToken: new CognitoAccessToken({\n AccessToken: accessToken\n })\n });\n credentials = void 0;\n if (!this._config.identityPoolId) return [3\n /*break*/\n , 5];\n return [4\n /*yield*/\n , this.Credentials.set(session, 'session')];\n\n case 4:\n credentials = _b.sent();\n logger.debug('AWS credentials', credentials);\n _b.label = 5;\n\n case 5:\n isCustomStateIncluded = /-/.test(state);\n currentUser = this.createCognitoUser(session.getIdToken().decodePayload()['cognito:username']); // This calls cacheTokens() in Cognito SDK\n\n currentUser.setSignInUserSession(session);\n\n if (window && typeof window.history !== 'undefined') {\n window.history.replaceState({}, null, this._config.oauth.redirectSignIn);\n }\n\n dispatchAuthEvent('signIn', currentUser, \"A user \" + currentUser.getUsername() + \" has been signed in\");\n dispatchAuthEvent('cognitoHostedUI', currentUser, \"A user \" + currentUser.getUsername() + \" has been signed in via Cognito Hosted UI\");\n\n if (isCustomStateIncluded) {\n customState = state.split('-').splice(1).join('-');\n dispatchAuthEvent('customOAuthState', urlSafeDecode(customState), \"State for user \" + currentUser.getUsername());\n } //#endregion\n\n\n return [2\n /*return*/\n , credentials];\n\n case 6:\n err_2 = _b.sent();\n logger.debug('Error in cognito hosted auth response', err_2);\n dispatchAuthEvent('signIn_failure', err_2, \"The OAuth response flow failed\");\n dispatchAuthEvent('cognitoHostedUI_failure', err_2, \"A failure occurred when returning to the Cognito Hosted UI\");\n dispatchAuthEvent('customState_failure', err_2, \"A failure occurred when returning state\");\n return [3\n /*break*/\n , 7];\n\n case 7:\n return [3\n /*break*/\n , 9];\n\n case 8:\n this.oAuthFlowInProgress = false;\n return [7\n /*endfinally*/\n ];\n\n case 9:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n /**\n * Compact version of credentials\n * @param {Object} credentials\n * @return {Object} - Credentials\n */\n\n\n AuthClass.prototype.essentialCredentials = function (credentials) {\n return {\n accessKeyId: credentials.accessKeyId,\n sessionToken: credentials.sessionToken,\n secretAccessKey: credentials.secretAccessKey,\n identityId: credentials.identityId,\n authenticated: credentials.authenticated\n };\n };\n\n AuthClass.prototype.attributesToObject = function (attributes) {\n var obj = {};\n\n if (attributes) {\n attributes.map(function (attribute) {\n if (attribute.Name === 'email_verified' || attribute.Name === 'phone_number_verified') {\n obj[attribute.Name] = attribute.Value === 'true' || attribute.Value === true;\n } else {\n obj[attribute.Name] = attribute.Value;\n }\n });\n }\n\n return obj;\n };\n\n AuthClass.prototype.createCognitoUser = function (username) {\n var userData = {\n Username: username,\n Pool: this.userPool\n };\n userData.Storage = this._storage;\n var authenticationFlowType = this._config.authenticationFlowType;\n var user = new CognitoUser(userData);\n\n if (authenticationFlowType) {\n user.setAuthenticationFlowType(authenticationFlowType);\n }\n\n return user;\n };\n\n AuthClass.prototype._isValidAuthStorage = function (obj) {\n // We need to check if the obj has the functions of Storage\n return !!obj && typeof obj.getItem === 'function' && typeof obj.setItem === 'function' && typeof obj.removeItem === 'function' && typeof obj.clear === 'function';\n };\n\n AuthClass.prototype.noUserPoolErrorHandler = function (config) {\n if (config) {\n if (!config.userPoolId || !config.identityPoolId) {\n return AuthErrorTypes.MissingAuthConfig;\n }\n }\n\n return AuthErrorTypes.NoConfig;\n };\n\n AuthClass.prototype.rejectAuthError = function (type) {\n return Promise.reject(new AuthError(type));\n };\n\n AuthClass.prototype.rejectNoUserPool = function () {\n var type = this.noUserPoolErrorHandler(this._config);\n return Promise.reject(new NoUserPoolError(type));\n };\n\n return AuthClass;\n}();\n\nexport { AuthClass };\nexport var Auth = new AuthClass(null);\nAmplify.register(Auth);","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { JS } from '@aws-amplify/core';\nexport default (function (callback) {\n if (JS.browserOrNode().isBrowser && window.location) {\n var url = window.location.href;\n callback({\n url: url\n });\n } else if (JS.browserOrNode().isNode) {\n // continue building on ssr\n (function () {}); // noop\n\n } else {\n throw new Error('Not supported');\n }\n});","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n/* eslint-disable no-proto */\n'use strict';\n\nvar base64 = require('base64-js');\n\nvar ieee754 = require('ieee754');\n\nvar isArray = require('isarray');\n\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\n\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();\n/*\n * Export kMaxLength after typed array support is determined.\n */\n\nexports.kMaxLength = kMaxLength();\n\nfunction typedArraySupport() {\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {\n __proto__: Uint8Array.prototype,\n foo: function foo() {\n return 42;\n }\n };\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`\n } catch (e) {\n return false;\n }\n}\n\nfunction kMaxLength() {\n return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;\n}\n\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length');\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n\n that.length = length;\n }\n\n return that;\n}\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\n\nfunction Buffer(arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length);\n } // Common case.\n\n\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error('If encoding is specified then the first argument must be a string');\n }\n\n return allocUnsafe(this, arg);\n }\n\n return from(this, arg, encodingOrOffset, length);\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n// TODO: Legacy, not needed anymore. Remove in next major version.\n\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr;\n};\n\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset);\n }\n\n return fromObject(that, value);\n}\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\n\n\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n\n if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n });\n }\n}\n\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\n\nfunction alloc(that, size, fill, encoding) {\n assertSize(size);\n\n if (size <= 0) {\n return createBuffer(that, size);\n }\n\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);\n }\n\n return createBuffer(that, size);\n}\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n\n\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding);\n};\n\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n\n return that;\n}\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n\n\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\n\n\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size);\n};\n\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that;\n}\n\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n\n return that;\n}\n\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n\n return that;\n}\n\nfunction fromObject(that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that;\n }\n\n obj.copy(that, 0, 0, len);\n return that;\n }\n\n if (obj) {\n if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n\n return fromArrayLike(that, obj);\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');\n}\n\nfunction checked(length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');\n }\n\n return length | 0;\n}\n\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n\n return Buffer.alloc(+length);\n}\n\nBuffer.isBuffer = function isBuffer(b) {\n return !!(b != null && b._isBuffer);\n};\n\nBuffer.compare = function compare(a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers');\n }\n\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n\n default:\n return false;\n }\n};\n\nBuffer.concat = function concat(list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n\n var i;\n\n if (length === undefined) {\n length = 0;\n\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n\n return buffer;\n};\n\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0; // Use a for loop to avoid recursion\n\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length;\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n\n case 'hex':\n return len >>> 1;\n\n case 'base64':\n return base64ToBytes(string).length;\n\n default:\n if (loweredCase) return utf8ToBytes(string).length; // assume utf8\n\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\n\nBuffer.byteLength = byteLength;\n\nfunction slowToString(encoding, start, end) {\n var loweredCase = false; // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\n if (start === undefined || start < 0) {\n start = 0;\n } // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n\n\n if (start > this.length) {\n return '';\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return '';\n } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\n\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return '';\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n\n case 'ascii':\n return asciiSlice(this, start, end);\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n\n case 'base64':\n return base64Slice(this, start, end);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\n\n\nBuffer.prototype._isBuffer = true;\n\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n\n return this;\n};\n\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n\n return this;\n};\n\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n\n return this;\n};\n\nBuffer.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\n\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\n\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n\n return '';\n};\n\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer');\n }\n\n if (start === undefined) {\n start = 0;\n }\n\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n\n if (thisStart === undefined) {\n thisStart = 0;\n }\n\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n\n if (thisStart >= thisEnd) {\n return -1;\n }\n\n if (start >= end) {\n return 1;\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\n\n\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1; // Normalize byteOffset\n\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n\n byteOffset = +byteOffset; // Coerce to Number.\n\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n } // Normalize byteOffset: negative offsets start from the end of the buffer\n\n\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n } // Normalize val\n\n\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n } // Finally, search either indexOf (if dir is true) or lastIndexOf\n\n\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n\n if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n\n throw new TypeError('val must be string, number or Buffer');\n}\n\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n\n var i;\n\n if (dir) {\n var foundIndex = -1;\n\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n\n if (found) return i;\n }\n }\n\n return -1;\n}\n\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\n\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\n\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n\n if (length > remaining) {\n length = remaining;\n }\n } // must be an even number of digits\n\n\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n\n return i;\n}\n\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\n\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\n\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\n\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0; // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0; // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n } // legacy write(string, encoding, offset, length) - remove in v0.13\n\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n\n case 'ascii':\n return asciiWrite(this, string, offset, length);\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length);\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\n\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\n\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n\n break;\n\n case 2:\n secondByte = buf[i + 1];\n\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res);\n} // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\n\n\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n } // Decode in chunks to avoid \"call stack size exceeded\".\n\n\n var res = '';\n var i = 0;\n\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n\n return res;\n}\n\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n\n return ret;\n}\n\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n\n return ret;\n}\n\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = '';\n\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n\n return out;\n}\n\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n\n return res;\n}\n\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n var newBuf;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf;\n};\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n\n\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\n\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\n\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\n\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\n\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\n\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done\n\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions\n\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');\n if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob?\n\n if (end > this.length) end = this.length;\n\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n }\n\n return len;\n}; // Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\n\n\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n\n if (code < 256) {\n val = code;\n }\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n } // Invalid ranges are not set to a default, so can range check early.\n\n\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n\n if (end <= start) {\n return this;\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this;\n}; // HELPER FUNCTIONS\n// ================\n\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean(str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to ''\n\n if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n\n return str;\n}\n\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction toHex(n) {\n if (n < 16) return '0' + n.toString(16);\n return n.toString(16);\n}\n\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i); // is surrogate component\n\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } // valid lead\n\n\n leadSurrogate = codePoint;\n continue;\n } // 2 leads in a row\n\n\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n } // valid surrogate pair\n\n\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null; // encode utf8\n\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n\n return bytes;\n}\n\nfunction asciiToBytes(str) {\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n\n return byteArray;\n}\n\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray;\n}\n\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\n\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n\n return i;\n}\n\nfunction isnan(val) {\n return val !== val; // eslint-disable-line no-self-compare\n}","/**\n * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { browserOrNode } from '../JS';\nimport { Amplify } from '../Amplify';\n/**\n * Provides a means to registering a service worker in the browser\n * and communicating with it via postMessage events.\n * https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/\n *\n * postMessage events are currently not supported in all browsers. See:\n * https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API\n *\n * At the minmum this class will register the service worker and listen\n * and attempt to dispatch messages on state change and record analytics\n * events based on the service worker lifecycle.\n */\n\nvar ServiceWorkerClass =\n/** @class */\nfunction () {\n function ServiceWorkerClass() {\n // The AWS Amplify logger\n this._logger = new Logger('ServiceWorker');\n }\n\n Object.defineProperty(ServiceWorkerClass.prototype, \"serviceWorker\", {\n /**\n * Get the currently active service worker\n */\n get: function get() {\n return this._serviceWorker;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Register the service-worker.js file in the browser\n * Make sure the service-worker.js is part of the build\n * for example with Angular, modify the angular-cli.json file\n * and add to \"assets\" array \"service-worker.js\"\n * @param {string} - (optional) Service worker file. Defaults to \"/service-worker.js\"\n * @param {string} - (optional) The service worker scope. Defaults to \"/\"\n * - API Doc: https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register\n * @returns {Promise}\n *\t- resolve(ServiceWorkerRegistration)\n *\t- reject(Error)\n **/\n\n ServiceWorkerClass.prototype.register = function (filePath, scope) {\n var _this = this;\n\n if (filePath === void 0) {\n filePath = '/service-worker.js';\n }\n\n if (scope === void 0) {\n scope = '/';\n }\n\n this._logger.debug(\"registering \" + filePath);\n\n this._logger.debug(\"registering service worker with scope \" + scope);\n\n return new Promise(function (resolve, reject) {\n if (navigator && 'serviceWorker' in navigator) {\n navigator.serviceWorker.register(filePath, {\n scope: scope\n }).then(function (registration) {\n if (registration.installing) {\n _this._serviceWorker = registration.installing;\n } else if (registration.waiting) {\n _this._serviceWorker = registration.waiting;\n } else if (registration.active) {\n _this._serviceWorker = registration.active;\n }\n\n _this._registration = registration;\n\n _this._setupListeners();\n\n _this._logger.debug(\"Service Worker Registration Success: \" + registration);\n\n return resolve(registration);\n }).catch(function (error) {\n _this._logger.debug(\"Service Worker Registration Failed \" + error);\n\n return reject(error);\n });\n } else {\n return reject(new Error('Service Worker not available'));\n }\n });\n };\n /**\n * Enable web push notifications. If not subscribed, a new subscription will\n * be created and registered.\n * \tTest Push Server: https://web-push-codelab.glitch.me/\n * \tPush Server Libraries: https://github.com/web-push-libs/\n * \tAPI Doc: https://developers.google.com/web/fundamentals/codelabs/push-notifications/\n * @param publicKey\n * @returns {Promise}\n * \t- resolve(PushSubscription)\n * - reject(Error)\n */\n\n\n ServiceWorkerClass.prototype.enablePush = function (publicKey) {\n var _this = this;\n\n if (!this._registration) throw new Error('Service Worker not registered');\n this._publicKey = publicKey;\n return new Promise(function (resolve, reject) {\n if (browserOrNode().isBrowser) {\n _this._registration.pushManager.getSubscription().then(function (subscription) {\n if (subscription) {\n _this._subscription = subscription;\n\n _this._logger.debug(\"User is subscribed to push: \" + JSON.stringify(subscription));\n\n resolve(subscription);\n } else {\n _this._logger.debug(\"User is NOT subscribed to push\");\n\n return _this._registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: _this._urlB64ToUint8Array(publicKey)\n }).then(function (subscription) {\n _this._subscription = subscription;\n\n _this._logger.debug(\"User subscribed: \" + JSON.stringify(subscription));\n\n resolve(subscription);\n }).catch(function (error) {\n _this._logger.error(error);\n });\n }\n });\n } else {\n return reject(new Error('Service Worker not available'));\n }\n });\n };\n /**\n * Convert a base64 encoded string to a Uint8 array for the push server key\n * @param base64String\n */\n\n\n ServiceWorkerClass.prototype._urlB64ToUint8Array = function (base64String) {\n var padding = '='.repeat((4 - base64String.length % 4) % 4);\n var base64 = (base64String + padding).replace(/\\-/g, '+').replace(/_/g, '/');\n var rawData = window.atob(base64);\n var outputArray = new Uint8Array(rawData.length);\n\n for (var i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n\n return outputArray;\n };\n /**\n * Send a message to the service worker. The service worker needs\n * to implement `self.addEventListener('message') to handle the\n * message. This ***currently*** does not work in Safari or IE.\n * @param {object | string} - An arbitrary JSON object or string message to send to the service worker\n *\t- see: https://developer.mozilla.org/en-US/docs/Web/API/Transferable\n * @returns {Promise}\n **/\n\n\n ServiceWorkerClass.prototype.send = function (message) {\n if (this._serviceWorker) {\n this._serviceWorker.postMessage(typeof message === 'object' ? JSON.stringify(message) : message);\n }\n };\n /**\n * Listen for service worker state change and message events\n * https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/state\n **/\n\n\n ServiceWorkerClass.prototype._setupListeners = function () {\n var _this = this;\n\n this._serviceWorker.addEventListener('statechange', function (event) {\n var currentState = _this._serviceWorker.state;\n\n _this._logger.debug(\"ServiceWorker statechange: \" + currentState);\n\n if (Amplify.Analytics && typeof Amplify.Analytics.record === 'function') {\n Amplify.Analytics.record({\n name: 'ServiceWorker',\n attributes: {\n state: currentState\n }\n });\n }\n });\n\n this._serviceWorker.addEventListener('message', function (event) {\n _this._logger.debug(\"ServiceWorker message event: \" + event);\n });\n };\n\n return ServiceWorkerClass;\n}();\n\nexport { ServiceWorkerClass };\n/**\n * @deprecated use named import\n */\n\nexport default ServiceWorkerClass;","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { StorageHelper } from '@aws-amplify/core';\n/**\n * Default cache config\n */\n\nexport var defaultConfig = {\n keyPrefix: 'aws-amplify-cache',\n capacityInBytes: 1048576,\n itemMaxSize: 210000,\n defaultTTL: 259200000,\n defaultPriority: 5,\n warningThreshold: 0.8,\n // the storage helper will check if localStorage exists,\n // if not, will use a in-memory object instead\n storage: new StorageHelper().getStorage()\n};\n/**\n * return the byte size of the string\n * @param str\n */\n\nexport function getByteLength(str) {\n var ret = 0;\n ret = str.length;\n\n for (var i = str.length; i >= 0; i -= 1) {\n var charCode = str.charCodeAt(i);\n\n if (charCode > 0x7f && charCode <= 0x7ff) {\n ret += 1;\n } else if (charCode > 0x7ff && charCode <= 0xffff) {\n ret += 2;\n } // trail surrogate\n\n\n if (charCode >= 0xdc00 && charCode <= 0xdfff) {\n i -= 1;\n }\n }\n\n return ret;\n}\n/**\n * get current time\n */\n\nexport function getCurrTime() {\n var currTime = new Date();\n return currTime.getTime();\n}\n/**\n * check if passed value is an integer\n */\n\nexport function isInteger(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n\n return _isInteger(value);\n}\n\nfunction _isInteger(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\n/**\n * provide an object as the in-memory cache\n */\n\n\nvar store = {};\n\nvar CacheObject =\n/** @class */\nfunction () {\n function CacheObject() {}\n\n CacheObject.clear = function () {\n store = {};\n };\n\n CacheObject.getItem = function (key) {\n return store[key] || null;\n };\n\n CacheObject.setItem = function (key, value) {\n store[key] = value;\n };\n\n CacheObject.removeItem = function (key) {\n delete store[key];\n };\n\n return CacheObject;\n}();\n\nexport { CacheObject };","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport { defaultConfig, getCurrTime } from './Utils';\nimport { StorageCache } from './StorageCache';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('Cache');\n/**\n * Customized storage based on the SessionStorage or LocalStorage with LRU implemented\n */\n\nvar BrowserStorageCacheClass =\n/** @class */\nfunction (_super) {\n __extends(BrowserStorageCacheClass, _super);\n /**\n * initialize the cache\n * @param config - the configuration of the cache\n */\n\n\n function BrowserStorageCacheClass(config) {\n var _this = this;\n\n var cacheConfig = config ? Object.assign({}, defaultConfig, config) : defaultConfig;\n _this = _super.call(this, cacheConfig) || this;\n _this.config.storage = cacheConfig.storage;\n _this.getItem = _this.getItem.bind(_this);\n _this.setItem = _this.setItem.bind(_this);\n _this.removeItem = _this.removeItem.bind(_this);\n return _this;\n }\n /**\n * decrease current size of the cache\n *\n * @private\n * @param amount - the amount of the cache size which needs to be decreased\n */\n\n\n BrowserStorageCacheClass.prototype._decreaseCurSizeInBytes = function (amount) {\n var curSize = this.getCacheCurSize();\n this.config.storage.setItem(this.cacheCurSizeKey, (curSize - amount).toString());\n };\n /**\n * increase current size of the cache\n *\n * @private\n * @param amount - the amount of the cache szie which need to be increased\n */\n\n\n BrowserStorageCacheClass.prototype._increaseCurSizeInBytes = function (amount) {\n var curSize = this.getCacheCurSize();\n this.config.storage.setItem(this.cacheCurSizeKey, (curSize + amount).toString());\n };\n /**\n * update the visited time if item has been visited\n *\n * @private\n * @param item - the item which need to be refreshed\n * @param prefixedKey - the key of the item\n *\n * @return the refreshed item\n */\n\n\n BrowserStorageCacheClass.prototype._refreshItem = function (item, prefixedKey) {\n item.visitedTime = getCurrTime();\n this.config.storage.setItem(prefixedKey, JSON.stringify(item));\n return item;\n };\n /**\n * check wether item is expired\n *\n * @private\n * @param key - the key of the item\n *\n * @return true if the item is expired.\n */\n\n\n BrowserStorageCacheClass.prototype._isExpired = function (key) {\n var text = this.config.storage.getItem(key);\n var item = JSON.parse(text);\n\n if (getCurrTime() >= item.expires) {\n return true;\n }\n\n return false;\n };\n /**\n * delete item from cache\n *\n * @private\n * @param prefixedKey - the key of the item\n * @param size - optional, the byte size of the item\n */\n\n\n BrowserStorageCacheClass.prototype._removeItem = function (prefixedKey, size) {\n var itemSize = size ? size : JSON.parse(this.config.storage.getItem(prefixedKey)).byteSize;\n\n this._decreaseCurSizeInBytes(itemSize); // remove the cache item\n\n\n this.config.storage.removeItem(prefixedKey);\n };\n /**\n * put item into cache\n *\n * @private\n * @param prefixedKey - the key of the item\n * @param itemData - the value of the item\n * @param itemSizeInBytes - the byte size of the item\n */\n\n\n BrowserStorageCacheClass.prototype._setItem = function (prefixedKey, item) {\n // update the cache size\n this._increaseCurSizeInBytes(item.byteSize);\n\n try {\n this.config.storage.setItem(prefixedKey, JSON.stringify(item));\n } catch (setItemErr) {\n // if failed, we need to rollback the cache size\n this._decreaseCurSizeInBytes(item.byteSize);\n\n logger.error(\"Failed to set item \" + setItemErr);\n }\n };\n /**\n * total space needed when poping out items\n *\n * @private\n * @param itemSize\n *\n * @return total space needed\n */\n\n\n BrowserStorageCacheClass.prototype._sizeToPop = function (itemSize) {\n var spaceItemNeed = this.getCacheCurSize() + itemSize - this.config.capacityInBytes;\n var cacheThresholdSpace = (1 - this.config.warningThreshold) * this.config.capacityInBytes;\n return spaceItemNeed > cacheThresholdSpace ? spaceItemNeed : cacheThresholdSpace;\n };\n /**\n * see whether cache is full\n *\n * @private\n * @param itemSize\n *\n * @return true if cache is full\n */\n\n\n BrowserStorageCacheClass.prototype._isCacheFull = function (itemSize) {\n return itemSize + this.getCacheCurSize() > this.config.capacityInBytes;\n };\n /**\n * scan the storage and find out all the keys owned by this cache\n * also clean the expired keys while scanning\n *\n * @private\n *\n * @return array of keys\n */\n\n\n BrowserStorageCacheClass.prototype._findValidKeys = function () {\n var keys = [];\n var keyInCache = []; // get all keys in Storage\n\n for (var i = 0; i < this.config.storage.length; i += 1) {\n keyInCache.push(this.config.storage.key(i));\n } // find those items which belong to our cache and also clean those expired items\n\n\n for (var i = 0; i < keyInCache.length; i += 1) {\n var key = keyInCache[i];\n\n if (key.indexOf(this.config.keyPrefix) === 0 && key !== this.cacheCurSizeKey) {\n if (this._isExpired(key)) {\n this._removeItem(key);\n } else {\n keys.push(key);\n }\n }\n }\n\n return keys;\n };\n /**\n * get all the items we have, sort them by their priority,\n * if priority is same, sort them by their last visited time\n * pop out items from the low priority (5 is the lowest)\n *\n * @private\n * @param keys - all the keys in this cache\n * @param sizeToPop - the total size of the items which needed to be poped out\n */\n\n\n BrowserStorageCacheClass.prototype._popOutItems = function (keys, sizeToPop) {\n var items = [];\n var remainedSize = sizeToPop; // get the items from Storage\n\n for (var i = 0; i < keys.length; i += 1) {\n var val = this.config.storage.getItem(keys[i]);\n\n if (val != null) {\n var item = JSON.parse(val);\n items.push(item);\n }\n } // first compare priority\n // then compare visited time\n\n\n items.sort(function (a, b) {\n if (a.priority > b.priority) {\n return -1;\n } else if (a.priority < b.priority) {\n return 1;\n } else {\n if (a.visitedTime < b.visitedTime) {\n return -1;\n } else return 1;\n }\n });\n\n for (var i = 0; i < items.length; i += 1) {\n // pop out items until we have enough room for new item\n this._removeItem(items[i].key, items[i].byteSize);\n\n remainedSize -= items[i].byteSize;\n\n if (remainedSize <= 0) {\n return;\n }\n }\n };\n /**\n * Set item into cache. You can put number, string, boolean or object.\n * The cache will first check whether has the same key.\n * If it has, it will delete the old item and then put the new item in\n * The cache will pop out items if it is full\n * You can specify the cache item options. The cache will abort and output a warning:\n * If the key is invalid\n * If the size of the item exceeds itemMaxSize.\n * If the value is undefined\n * If incorrect cache item configuration\n * If error happened with browser storage\n *\n * @param key - the key of the item\n * @param value - the value of the item\n * @param {Object} [options] - optional, the specified meta-data\n */\n\n\n BrowserStorageCacheClass.prototype.setItem = function (key, value, options) {\n logger.log(\"Set item: key is \" + key + \", value is \" + value + \" with options: \" + options);\n var prefixedKey = this.config.keyPrefix + key; // invalid keys\n\n if (prefixedKey === this.config.keyPrefix || prefixedKey === this.cacheCurSizeKey) {\n logger.warn(\"Invalid key: should not be empty or 'CurSize'\");\n return;\n }\n\n if (typeof value === 'undefined') {\n logger.warn(\"The value of item should not be undefined!\");\n return;\n }\n\n var cacheItemOptions = {\n priority: options && options.priority !== undefined ? options.priority : this.config.defaultPriority,\n expires: options && options.expires !== undefined ? options.expires : this.config.defaultTTL + getCurrTime()\n };\n\n if (cacheItemOptions.priority < 1 || cacheItemOptions.priority > 5) {\n logger.warn(\"Invalid parameter: priority due to out or range. It should be within 1 and 5.\");\n return;\n }\n\n var item = this.fillCacheItem(prefixedKey, value, cacheItemOptions); // check wether this item is too big;\n\n if (item.byteSize > this.config.itemMaxSize) {\n logger.warn(\"Item with key: \" + key + \" you are trying to put into is too big!\");\n return;\n }\n\n try {\n // first look into the storage, if it exists, delete it.\n var val = this.config.storage.getItem(prefixedKey);\n\n if (val) {\n this._removeItem(prefixedKey, JSON.parse(val).byteSize);\n } // check whether the cache is full\n\n\n if (this._isCacheFull(item.byteSize)) {\n var validKeys = this._findValidKeys(); // check again and then pop out items\n\n\n if (this._isCacheFull(item.byteSize)) {\n var sizeToPop = this._sizeToPop(item.byteSize);\n\n this._popOutItems(validKeys, sizeToPop);\n }\n } // put item in the cache\n // may failed due to storage full\n\n\n this._setItem(prefixedKey, item);\n } catch (e) {\n logger.warn(\"setItem failed! \" + e);\n }\n };\n /**\n * Get item from cache. It will return null if item doesn’t exist or it has been expired.\n * If you specified callback function in the options,\n * then the function will be executed if no such item in the cache\n * and finally put the return value into cache.\n * Please make sure the callback function will return the value you want to put into the cache.\n * The cache will abort output a warning:\n * If the key is invalid\n * If error happened with browser storage\n *\n * @param key - the key of the item\n * @param {Object} [options] - the options of callback function\n *\n * @return - return the value of the item\n */\n\n\n BrowserStorageCacheClass.prototype.getItem = function (key, options) {\n logger.log(\"Get item: key is \" + key + \" with options \" + options);\n var ret = null;\n var prefixedKey = this.config.keyPrefix + key;\n\n if (prefixedKey === this.config.keyPrefix || prefixedKey === this.cacheCurSizeKey) {\n logger.warn(\"Invalid key: should not be empty or 'CurSize'\");\n return null;\n }\n\n try {\n ret = this.config.storage.getItem(prefixedKey);\n\n if (ret != null) {\n if (this._isExpired(prefixedKey)) {\n // if expired, remove that item and return null\n this._removeItem(prefixedKey, JSON.parse(ret).byteSize);\n\n ret = null;\n } else {\n // if not expired, great, return the value and refresh it\n var item = JSON.parse(ret);\n item = this._refreshItem(item, prefixedKey);\n return item.data;\n }\n }\n\n if (options && options.callback !== undefined) {\n var val = options.callback();\n\n if (val !== null) {\n this.setItem(key, val, options);\n }\n\n return val;\n }\n\n return null;\n } catch (e) {\n logger.warn(\"getItem failed! \" + e);\n return null;\n }\n };\n /**\n * remove item from the cache\n * The cache will abort output a warning:\n * If error happened with browser storage\n * @param key - the key of the item\n */\n\n\n BrowserStorageCacheClass.prototype.removeItem = function (key) {\n logger.log(\"Remove item: key is \" + key);\n var prefixedKey = this.config.keyPrefix + key;\n\n if (prefixedKey === this.config.keyPrefix || prefixedKey === this.cacheCurSizeKey) {\n return;\n }\n\n try {\n var val = this.config.storage.getItem(prefixedKey);\n\n if (val) {\n this._removeItem(prefixedKey, JSON.parse(val).byteSize);\n }\n } catch (e) {\n logger.warn(\"removeItem failed! \" + e);\n }\n };\n /**\n * clear the entire cache\n * The cache will abort output a warning:\n * If error happened with browser storage\n */\n\n\n BrowserStorageCacheClass.prototype.clear = function () {\n logger.log(\"Clear Cache\");\n var keysToRemove = [];\n\n for (var i = 0; i < this.config.storage.length; i += 1) {\n var key = this.config.storage.key(i);\n\n if (key.indexOf(this.config.keyPrefix) === 0) {\n keysToRemove.push(key);\n }\n }\n\n try {\n for (var i = 0; i < keysToRemove.length; i += 1) {\n this.config.storage.removeItem(keysToRemove[i]);\n }\n } catch (e) {\n logger.warn(\"clear failed! \" + e);\n }\n };\n /**\n * Return all the keys in the cache.\n *\n * @return - all keys in the cache\n */\n\n\n BrowserStorageCacheClass.prototype.getAllKeys = function () {\n var keys = [];\n\n for (var i = 0; i < this.config.storage.length; i += 1) {\n var key = this.config.storage.key(i);\n\n if (key.indexOf(this.config.keyPrefix) === 0 && key !== this.cacheCurSizeKey) {\n keys.push(key.substring(this.config.keyPrefix.length));\n }\n }\n\n return keys;\n };\n /**\n * return the current size of the cache\n *\n * @return - current size of the cache\n */\n\n\n BrowserStorageCacheClass.prototype.getCacheCurSize = function () {\n var ret = this.config.storage.getItem(this.cacheCurSizeKey);\n\n if (!ret) {\n this.config.storage.setItem(this.cacheCurSizeKey, '0');\n ret = '0';\n }\n\n return Number(ret);\n };\n /**\n * Return a new instance of cache with customized configuration.\n * @param config - the customized configuration\n *\n * @return - new instance of Cache\n */\n\n\n BrowserStorageCacheClass.prototype.createInstance = function (config) {\n if (!config.keyPrefix || config.keyPrefix === defaultConfig.keyPrefix) {\n logger.error('invalid keyPrefix, setting keyPrefix with timeStamp');\n config.keyPrefix = getCurrTime.toString();\n }\n\n return new BrowserStorageCacheClass(config);\n };\n\n return BrowserStorageCacheClass;\n}(StorageCache);\n\nexport { BrowserStorageCacheClass };\nexport var BrowserStorageCache = new BrowserStorageCacheClass();\n/**\n * @deprecated use named import\n */\n\nexport default BrowserStorageCache;","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { getCurrTime, getByteLength, defaultConfig, isInteger } from './Utils';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('StorageCache');\n/**\n * Initialization of the cache\n *\n */\n\nvar StorageCache =\n/** @class */\nfunction () {\n /**\n * Initialize the cache\n * @param config - the configuration of the cache\n */\n function StorageCache(config) {\n this.config = Object.assign({}, config);\n this.cacheCurSizeKey = this.config.keyPrefix + 'CurSize';\n this.checkConfig();\n }\n\n StorageCache.prototype.getModuleName = function () {\n return 'Cache';\n };\n\n StorageCache.prototype.checkConfig = function () {\n // check configuration\n if (!isInteger(this.config.capacityInBytes)) {\n logger.error('Invalid parameter: capacityInBytes. It should be an Integer. Setting back to default.');\n this.config.capacityInBytes = defaultConfig.capacityInBytes;\n }\n\n if (!isInteger(this.config.itemMaxSize)) {\n logger.error('Invalid parameter: itemMaxSize. It should be an Integer. Setting back to default.');\n this.config.itemMaxSize = defaultConfig.itemMaxSize;\n }\n\n if (!isInteger(this.config.defaultTTL)) {\n logger.error('Invalid parameter: defaultTTL. It should be an Integer. Setting back to default.');\n this.config.defaultTTL = defaultConfig.defaultTTL;\n }\n\n if (!isInteger(this.config.defaultPriority)) {\n logger.error('Invalid parameter: defaultPriority. It should be an Integer. Setting back to default.');\n this.config.defaultPriority = defaultConfig.defaultPriority;\n }\n\n if (this.config.itemMaxSize > this.config.capacityInBytes) {\n logger.error('Invalid parameter: itemMaxSize. It should be smaller than capacityInBytes. Setting back to default.');\n this.config.itemMaxSize = defaultConfig.itemMaxSize;\n }\n\n if (this.config.defaultPriority > 5 || this.config.defaultPriority < 1) {\n logger.error('Invalid parameter: defaultPriority. It should be between 1 and 5. Setting back to default.');\n this.config.defaultPriority = defaultConfig.defaultPriority;\n }\n\n if (Number(this.config.warningThreshold) > 1 || Number(this.config.warningThreshold) < 0) {\n logger.error('Invalid parameter: warningThreshold. It should be between 0 and 1. Setting back to default.');\n this.config.warningThreshold = defaultConfig.warningThreshold;\n } // set 5MB limit\n\n\n var cacheLimit = 5 * 1024 * 1024;\n\n if (this.config.capacityInBytes > cacheLimit) {\n logger.error('Cache Capacity should be less than 5MB. Setting back to default. Setting back to default.');\n this.config.capacityInBytes = defaultConfig.capacityInBytes;\n }\n };\n /**\n * produce a JSON object with meta-data and data value\n * @param value - the value of the item\n * @param options - optional, the specified meta-data\n *\n * @return - the item which has the meta-data and the value\n */\n\n\n StorageCache.prototype.fillCacheItem = function (key, value, options) {\n var ret = {\n key: key,\n data: value,\n timestamp: getCurrTime(),\n visitedTime: getCurrTime(),\n priority: options.priority,\n expires: options.expires,\n type: typeof value,\n byteSize: 0\n };\n ret.byteSize = getByteLength(JSON.stringify(ret)); // for accurate size\n\n ret.byteSize = getByteLength(JSON.stringify(ret));\n return ret;\n };\n /**\n * set cache with customized configuration\n * @param config - customized configuration\n *\n * @return - the current configuration\n */\n\n\n StorageCache.prototype.configure = function (config) {\n if (!config) {\n return this.config;\n }\n\n if (config.keyPrefix) {\n logger.warn(\"Don't try to configure keyPrefix!\");\n }\n\n this.config = Object.assign({}, this.config, config, config.Cache);\n this.checkConfig();\n return this.config;\n };\n\n return StorageCache;\n}();\n\nexport { StorageCache };\n/**\n * @deprecated use named import\n */\n\nexport default StorageCache;","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { Amplify } from '@aws-amplify/core';\nimport { BrowserStorageCache } from './BrowserStorageCache';\nimport { InMemoryCache } from './InMemoryCache';\nexport { BrowserStorageCache, InMemoryCache };\n/**\n * @deprecated use named import\n */\n\nexport default BrowserStorageCache;\nAmplify.register(BrowserStorageCache);","/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { Amplify, ServiceWorker } from '@aws-amplify/core';\nimport { Auth } from '@aws-amplify/auth';\nimport Cache from '@aws-amplify/cache';\n/** Always importing Auth when users import Amplify such that\n for unauthenticated access (no sign in and sign up),\n users don't have to import Auth explicitly **/\n\nAmplify.Auth = Auth;\nAmplify.Cache = Cache;\nAmplify.ServiceWorker = ServiceWorker;\nexport { Analytics, AWSPinpointProvider, AWSKinesisProvider, AWSKinesisFirehoseProvider, AmazonPersonalizeProvider } from '@aws-amplify/analytics';\nexport { Auth } from '@aws-amplify/auth';\nexport { Storage, StorageClass } from '@aws-amplify/storage';\nexport { API, APIClass, graphqlOperation } from '@aws-amplify/api';\nexport { DataStore, Predicates, SortDirection, syncExpression } from '@aws-amplify/datastore';\nexport { PubSub } from '@aws-amplify/pubsub';\nexport { default as Cache } from '@aws-amplify/cache';\nexport { Interactions } from '@aws-amplify/interactions';\nexport * from '@aws-amplify/ui';\nexport { XR } from '@aws-amplify/xr';\nexport { Predictions } from '@aws-amplify/predictions';\nexport { ConsoleLogger as Logger, Hub, JS, ClientDevice, Signer, I18n, ServiceWorker } from '@aws-amplify/core';\nexport { withSSRContext } from './withSSRContext';\nexport { Amplify };\n/**\n * @deprecated use named import\n */\n\nexport default Amplify;","'use strict';\n\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n} // Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\n\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens(b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4');\n } // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n\n\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n} // base64 is 4/3 + up to two characters of the original data\n\n\nfunction byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars\n\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 0xFF;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n return arr;\n}\n\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\n\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n\n return output.join('');\n}\n\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n } // pad the end with zeros, but make sure to not forget the extra bytes\n\n\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');\n }\n\n return parts.join('');\n}","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n'use strict';\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\nvar pairSplitRegExp = /; */;\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {};\n var opt = options || {};\n var pairs = str.split(pairSplitRegExp);\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var eq_idx = pair.indexOf('='); // skip things that don't look like key=value\n\n if (eq_idx < 0) {\n continue;\n }\n\n var key = pair.substr(0, eq_idx).trim();\n var val = pair.substr(++eq_idx, pair.length).trim(); // quoted values\n\n if ('\"' == val[0]) {\n val = val.slice(1, -1);\n } // only assign once\n\n\n if (undefined == obj[key]) {\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n if (isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n\n case 'lax':\n str += '; SameSite=Lax';\n break;\n\n case 'strict':\n str += '; SameSite=Strict';\n break;\n\n case 'none':\n str += '; SameSite=None';\n break;\n\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}",";\n\n(function (root, factory) {\n if (typeof exports === \"object\") {\n // CommonJS\n module.exports = exports = factory();\n } else if (typeof define === \"function\" && define.amd) {\n // AMD\n define([], factory);\n } else {\n // Global (browser)\n root.CryptoJS = factory();\n }\n})(this, function () {\n /**\n * CryptoJS core components.\n */\n var CryptoJS = CryptoJS || function (Math, undefined) {\n /*\n * Local polyfil of Object.create\n */\n var create = Object.create || function () {\n function F() {}\n\n ;\n return function (obj) {\n var subtype;\n F.prototype = obj;\n subtype = new F();\n F.prototype = null;\n return subtype;\n };\n }();\n /**\n * CryptoJS namespace.\n */\n\n\n var C = {};\n /**\n * Library namespace.\n */\n\n var C_lib = C.lib = {};\n /**\n * Base object for prototypal inheritance.\n */\n\n var Base = C_lib.Base = function () {\n return {\n /**\n * Creates a new object that inherits from this object.\n *\n * @param {Object} overrides Properties to copy into the new object.\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var MyType = CryptoJS.lib.Base.extend({\n * field: 'value',\n *\n * method: function () {\n * }\n * });\n */\n extend: function extend(overrides) {\n // Spawn\n var subtype = create(this); // Augment\n\n if (overrides) {\n subtype.mixIn(overrides);\n } // Create default initializer\n\n\n if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n subtype.init = function () {\n subtype.$super.init.apply(this, arguments);\n };\n } // Initializer's prototype is the subtype object\n\n\n subtype.init.prototype = subtype; // Reference supertype\n\n subtype.$super = this;\n return subtype;\n },\n\n /**\n * Extends this object and runs the init method.\n * Arguments to create() will be passed to init().\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var instance = MyType.create();\n */\n create: function create() {\n var instance = this.extend();\n instance.init.apply(instance, arguments);\n return instance;\n },\n\n /**\n * Initializes a newly created object.\n * Override this method to add some logic when your objects are created.\n *\n * @example\n *\n * var MyType = CryptoJS.lib.Base.extend({\n * init: function () {\n * // ...\n * }\n * });\n */\n init: function init() {},\n\n /**\n * Copies properties into this object.\n *\n * @param {Object} properties The properties to mix in.\n *\n * @example\n *\n * MyType.mixIn({\n * field: 'value'\n * });\n */\n mixIn: function mixIn(properties) {\n for (var propertyName in properties) {\n if (properties.hasOwnProperty(propertyName)) {\n this[propertyName] = properties[propertyName];\n }\n } // IE won't copy toString using the loop above\n\n\n if (properties.hasOwnProperty('toString')) {\n this.toString = properties.toString;\n }\n },\n\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = instance.clone();\n */\n clone: function clone() {\n return this.init.prototype.extend(this);\n }\n };\n }();\n /**\n * An array of 32-bit words.\n *\n * @property {Array} words The array of 32-bit words.\n * @property {number} sigBytes The number of significant bytes in this word array.\n */\n\n\n var WordArray = C_lib.WordArray = Base.extend({\n /**\n * Initializes a newly created word array.\n *\n * @param {Array} words (Optional) An array of 32-bit words.\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.create();\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n */\n init: function init(words, sigBytes) {\n words = this.words = words || [];\n\n if (sigBytes != undefined) {\n this.sigBytes = sigBytes;\n } else {\n this.sigBytes = words.length * 4;\n }\n },\n\n /**\n * Converts this word array to a string.\n *\n * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n *\n * @return {string} The stringified word array.\n *\n * @example\n *\n * var string = wordArray + '';\n * var string = wordArray.toString();\n * var string = wordArray.toString(CryptoJS.enc.Utf8);\n */\n toString: function toString(encoder) {\n return (encoder || Hex).stringify(this);\n },\n\n /**\n * Concatenates a word array to this word array.\n *\n * @param {WordArray} wordArray The word array to append.\n *\n * @return {WordArray} This word array.\n *\n * @example\n *\n * wordArray1.concat(wordArray2);\n */\n concat: function concat(wordArray) {\n // Shortcuts\n var thisWords = this.words;\n var thatWords = wordArray.words;\n var thisSigBytes = this.sigBytes;\n var thatSigBytes = wordArray.sigBytes; // Clamp excess bits\n\n this.clamp(); // Concat\n\n if (thisSigBytes % 4) {\n // Copy one byte at a time\n for (var i = 0; i < thatSigBytes; i++) {\n var thatByte = thatWords[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n thisWords[thisSigBytes + i >>> 2] |= thatByte << 24 - (thisSigBytes + i) % 4 * 8;\n }\n } else {\n // Copy one word at a time\n for (var i = 0; i < thatSigBytes; i += 4) {\n thisWords[thisSigBytes + i >>> 2] = thatWords[i >>> 2];\n }\n }\n\n this.sigBytes += thatSigBytes; // Chainable\n\n return this;\n },\n\n /**\n * Removes insignificant bits.\n *\n * @example\n *\n * wordArray.clamp();\n */\n clamp: function clamp() {\n // Shortcuts\n var words = this.words;\n var sigBytes = this.sigBytes; // Clamp\n\n words[sigBytes >>> 2] &= 0xffffffff << 32 - sigBytes % 4 * 8;\n words.length = Math.ceil(sigBytes / 4);\n },\n\n /**\n * Creates a copy of this word array.\n *\n * @return {WordArray} The clone.\n *\n * @example\n *\n * var clone = wordArray.clone();\n */\n clone: function clone() {\n var clone = Base.clone.call(this);\n clone.words = this.words.slice(0);\n return clone;\n },\n\n /**\n * Creates a word array filled with random bytes.\n *\n * @param {number} nBytes The number of random bytes to generate.\n *\n * @return {WordArray} The random word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.random(16);\n */\n random: function random(nBytes) {\n var words = [];\n\n var r = function r(m_w) {\n var m_w = m_w;\n var m_z = 0x3ade68b1;\n var mask = 0xffffffff;\n return function () {\n m_z = 0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10) & mask;\n m_w = 0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10) & mask;\n var result = (m_z << 0x10) + m_w & mask;\n result /= 0x100000000;\n result += 0.5;\n return result * (Math.random() > .5 ? 1 : -1);\n };\n };\n\n for (var i = 0, rcache; i < nBytes; i += 4) {\n var _r = r((rcache || Math.random()) * 0x100000000);\n\n rcache = _r() * 0x3ade67b7;\n words.push(_r() * 0x100000000 | 0);\n }\n\n return new WordArray.init(words, nBytes);\n }\n });\n /**\n * Encoder namespace.\n */\n\n var C_enc = C.enc = {};\n /**\n * Hex encoding strategy.\n */\n\n var Hex = C_enc.Hex = {\n /**\n * Converts a word array to a hex string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The hex string.\n *\n * @static\n *\n * @example\n *\n * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes; // Convert\n\n var hexChars = [];\n\n for (var i = 0; i < sigBytes; i++) {\n var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n hexChars.push((bite >>> 4).toString(16));\n hexChars.push((bite & 0x0f).toString(16));\n }\n\n return hexChars.join('');\n },\n\n /**\n * Converts a hex string to a word array.\n *\n * @param {string} hexStr The hex string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n */\n parse: function parse(hexStr) {\n // Shortcut\n var hexStrLength = hexStr.length; // Convert\n\n var words = [];\n\n for (var i = 0; i < hexStrLength; i += 2) {\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << 24 - i % 8 * 4;\n }\n\n return new WordArray.init(words, hexStrLength / 2);\n }\n };\n /**\n * Latin1 encoding strategy.\n */\n\n var Latin1 = C_enc.Latin1 = {\n /**\n * Converts a word array to a Latin1 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Latin1 string.\n *\n * @static\n *\n * @example\n *\n * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes; // Convert\n\n var latin1Chars = [];\n\n for (var i = 0; i < sigBytes; i++) {\n var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n latin1Chars.push(String.fromCharCode(bite));\n }\n\n return latin1Chars.join('');\n },\n\n /**\n * Converts a Latin1 string to a word array.\n *\n * @param {string} latin1Str The Latin1 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n */\n parse: function parse(latin1Str) {\n // Shortcut\n var latin1StrLength = latin1Str.length; // Convert\n\n var words = [];\n\n for (var i = 0; i < latin1StrLength; i++) {\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << 24 - i % 4 * 8;\n }\n\n return new WordArray.init(words, latin1StrLength);\n }\n };\n /**\n * UTF-8 encoding strategy.\n */\n\n var Utf8 = C_enc.Utf8 = {\n /**\n * Converts a word array to a UTF-8 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-8 string.\n *\n * @static\n *\n * @example\n *\n * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n try {\n return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n } catch (e) {\n throw new Error('Malformed UTF-8 data');\n }\n },\n\n /**\n * Converts a UTF-8 string to a word array.\n *\n * @param {string} utf8Str The UTF-8 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n */\n parse: function parse(utf8Str) {\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n }\n };\n /**\n * Abstract buffered block algorithm template.\n *\n * The property blockSize must be implemented in a concrete subtype.\n *\n * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n */\n\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n /**\n * Resets this block algorithm's data buffer to its initial state.\n *\n * @example\n *\n * bufferedBlockAlgorithm.reset();\n */\n reset: function reset() {\n // Initial values\n this._data = new WordArray.init();\n this._nDataBytes = 0;\n },\n\n /**\n * Adds new data to this block algorithm's buffer.\n *\n * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n *\n * @example\n *\n * bufferedBlockAlgorithm._append('data');\n * bufferedBlockAlgorithm._append(wordArray);\n */\n _append: function _append(data) {\n // Convert string to WordArray, else assume WordArray already\n if (typeof data == 'string') {\n data = Utf8.parse(data);\n } // Append\n\n\n this._data.concat(data);\n\n this._nDataBytes += data.sigBytes;\n },\n\n /**\n * Processes available data blocks.\n *\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n *\n * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n *\n * @return {WordArray} The processed data.\n *\n * @example\n *\n * var processedData = bufferedBlockAlgorithm._process();\n * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n */\n _process: function _process(doFlush) {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var dataSigBytes = data.sigBytes;\n var blockSize = this.blockSize;\n var blockSizeBytes = blockSize * 4; // Count blocks ready\n\n var nBlocksReady = dataSigBytes / blockSizeBytes;\n\n if (doFlush) {\n // Round up to include partial blocks\n nBlocksReady = Math.ceil(nBlocksReady);\n } else {\n // Round down to include only full blocks,\n // less the number of blocks that must remain in the buffer\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n } // Count words ready\n\n\n var nWordsReady = nBlocksReady * blockSize; // Count bytes ready\n\n var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); // Process blocks\n\n if (nWordsReady) {\n for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n // Perform concrete-algorithm logic\n this._doProcessBlock(dataWords, offset);\n } // Remove processed words\n\n\n var processedWords = dataWords.splice(0, nWordsReady);\n data.sigBytes -= nBytesReady;\n } // Return processed words\n\n\n return new WordArray.init(processedWords, nBytesReady);\n },\n\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = bufferedBlockAlgorithm.clone();\n */\n clone: function clone() {\n var clone = Base.clone.call(this);\n clone._data = this._data.clone();\n return clone;\n },\n _minBufferSize: 0\n });\n /**\n * Abstract hasher template.\n *\n * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n */\n\n var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n /**\n * Configuration options.\n */\n cfg: Base.extend(),\n\n /**\n * Initializes a newly created hasher.\n *\n * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n *\n * @example\n *\n * var hasher = CryptoJS.algo.SHA256.create();\n */\n init: function init(cfg) {\n // Apply config defaults\n this.cfg = this.cfg.extend(cfg); // Set initial values\n\n this.reset();\n },\n\n /**\n * Resets this hasher to its initial state.\n *\n * @example\n *\n * hasher.reset();\n */\n reset: function reset() {\n // Reset data buffer\n BufferedBlockAlgorithm.reset.call(this); // Perform concrete-hasher logic\n\n this._doReset();\n },\n\n /**\n * Updates this hasher with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {Hasher} This hasher.\n *\n * @example\n *\n * hasher.update('message');\n * hasher.update(wordArray);\n */\n update: function update(messageUpdate) {\n // Append\n this._append(messageUpdate); // Update the hash\n\n\n this._process(); // Chainable\n\n\n return this;\n },\n\n /**\n * Finalizes the hash computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The hash.\n *\n * @example\n *\n * var hash = hasher.finalize();\n * var hash = hasher.finalize('message');\n * var hash = hasher.finalize(wordArray);\n */\n finalize: function finalize(messageUpdate) {\n // Final message update\n if (messageUpdate) {\n this._append(messageUpdate);\n } // Perform concrete-hasher logic\n\n\n var hash = this._doFinalize();\n\n return hash;\n },\n blockSize: 512 / 32,\n\n /**\n * Creates a shortcut function to a hasher's object interface.\n *\n * @param {Hasher} hasher The hasher to create a helper for.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n */\n _createHelper: function _createHelper(hasher) {\n return function (message, cfg) {\n return new hasher.init(cfg).finalize(message);\n };\n },\n\n /**\n * Creates a shortcut function to the HMAC's object interface.\n *\n * @param {Hasher} hasher The hasher to use in this HMAC helper.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n */\n _createHmacHelper: function _createHmacHelper(hasher) {\n return function (message, key) {\n return new C_algo.HMAC.init(hasher, key).finalize(message);\n };\n }\n });\n /**\n * Algorithm namespace.\n */\n\n var C_algo = C.algo = {};\n return C;\n }(Math);\n\n return CryptoJS;\n});",";\n\n(function (root, factory) {\n if (typeof exports === \"object\") {\n // CommonJS\n module.exports = exports = factory(require(\"./core\"));\n } else if (typeof define === \"function\" && define.amd) {\n // AMD\n define([\"./core\"], factory);\n } else {\n // Global (browser)\n factory(root.CryptoJS);\n }\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n /**\n * Base64 encoding strategy.\n */\n\n var Base64 = C_enc.Base64 = {\n /**\n * Converts a word array to a Base64 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Base64 string.\n *\n * @static\n *\n * @example\n *\n * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n var map = this._map; // Clamp excess bits\n\n wordArray.clamp(); // Convert\n\n var base64Chars = [];\n\n for (var i = 0; i < sigBytes; i += 3) {\n var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 0xff;\n var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 0xff;\n var triplet = byte1 << 16 | byte2 << 8 | byte3;\n\n for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {\n base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 0x3f));\n }\n } // Add padding\n\n\n var paddingChar = map.charAt(64);\n\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n\n return base64Chars.join('');\n },\n\n /**\n * Converts a Base64 string to a word array.\n *\n * @param {string} base64Str The Base64 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n */\n parse: function parse(base64Str) {\n // Shortcuts\n var base64StrLength = base64Str.length;\n var map = this._map;\n var reverseMap = this._reverseMap;\n\n if (!reverseMap) {\n reverseMap = this._reverseMap = [];\n\n for (var j = 0; j < map.length; j++) {\n reverseMap[map.charCodeAt(j)] = j;\n }\n } // Ignore padding\n\n\n var paddingChar = map.charAt(64);\n\n if (paddingChar) {\n var paddingIndex = base64Str.indexOf(paddingChar);\n\n if (paddingIndex !== -1) {\n base64StrLength = paddingIndex;\n }\n } // Convert\n\n\n return parseLoop(base64Str, base64StrLength, reverseMap);\n },\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n };\n\n function parseLoop(base64Str, base64StrLength, reverseMap) {\n var words = [];\n var nBytes = 0;\n\n for (var i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;\n var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;\n words[nBytes >>> 2] |= (bits1 | bits2) << 24 - nBytes % 4 * 8;\n nBytes++;\n }\n }\n\n return WordArray.create(words, nBytes);\n }\n })();\n\n return CryptoJS.enc.Base64;\n});",";\n\n(function (root, factory, undef) {\n if (typeof exports === \"object\") {\n // CommonJS\n module.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n } else if (typeof define === \"function\" && define.amd) {\n // AMD\n define([\"./core\", \"./sha256\", \"./hmac\"], factory);\n } else {\n // Global (browser)\n factory(root.CryptoJS);\n }\n})(this, function (CryptoJS) {\n return CryptoJS.HmacSHA256;\n});",";\n\n(function (root, factory) {\n if (typeof exports === \"object\") {\n // CommonJS\n module.exports = exports = factory(require(\"./core\"));\n } else if (typeof define === \"function\" && define.amd) {\n // AMD\n define([\"./core\"], factory);\n } else {\n // Global (browser)\n factory(root.CryptoJS);\n }\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var C_enc = C.enc;\n var Utf8 = C_enc.Utf8;\n var C_algo = C.algo;\n /**\n * HMAC algorithm.\n */\n\n var HMAC = C_algo.HMAC = Base.extend({\n /**\n * Initializes a newly created HMAC.\n *\n * @param {Hasher} hasher The hash algorithm to use.\n * @param {WordArray|string} key The secret key.\n *\n * @example\n *\n * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n */\n init: function init(hasher, key) {\n // Init hasher\n hasher = this._hasher = new hasher.init(); // Convert string to WordArray, else assume WordArray already\n\n if (typeof key == 'string') {\n key = Utf8.parse(key);\n } // Shortcuts\n\n\n var hasherBlockSize = hasher.blockSize;\n var hasherBlockSizeBytes = hasherBlockSize * 4; // Allow arbitrary length keys\n\n if (key.sigBytes > hasherBlockSizeBytes) {\n key = hasher.finalize(key);\n } // Clamp excess bits\n\n\n key.clamp(); // Clone key for inner and outer pads\n\n var oKey = this._oKey = key.clone();\n var iKey = this._iKey = key.clone(); // Shortcuts\n\n var oKeyWords = oKey.words;\n var iKeyWords = iKey.words; // XOR keys with pad constants\n\n for (var i = 0; i < hasherBlockSize; i++) {\n oKeyWords[i] ^= 0x5c5c5c5c;\n iKeyWords[i] ^= 0x36363636;\n }\n\n oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes; // Set initial values\n\n this.reset();\n },\n\n /**\n * Resets this HMAC to its initial state.\n *\n * @example\n *\n * hmacHasher.reset();\n */\n reset: function reset() {\n // Shortcut\n var hasher = this._hasher; // Reset\n\n hasher.reset();\n hasher.update(this._iKey);\n },\n\n /**\n * Updates this HMAC with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {HMAC} This HMAC instance.\n *\n * @example\n *\n * hmacHasher.update('message');\n * hmacHasher.update(wordArray);\n */\n update: function update(messageUpdate) {\n this._hasher.update(messageUpdate); // Chainable\n\n\n return this;\n },\n\n /**\n * Finalizes the HMAC computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The HMAC.\n *\n * @example\n *\n * var hmac = hmacHasher.finalize();\n * var hmac = hmacHasher.finalize('message');\n * var hmac = hmacHasher.finalize(wordArray);\n */\n finalize: function finalize(messageUpdate) {\n // Shortcut\n var hasher = this._hasher; // Compute HMAC\n\n var innerHash = hasher.finalize(messageUpdate);\n hasher.reset();\n var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n return hmac;\n }\n });\n })();\n});",";\n\n(function (root, factory) {\n if (typeof exports === \"object\") {\n // CommonJS\n module.exports = exports = factory(require(\"./core\"));\n } else if (typeof define === \"function\" && define.amd) {\n // AMD\n define([\"./core\"], factory);\n } else {\n // Global (browser)\n factory(root.CryptoJS);\n }\n})(this, function (CryptoJS) {\n (function () {\n // Check if typed arrays are supported\n if (typeof ArrayBuffer != 'function') {\n return;\n } // Shortcuts\n\n\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray; // Reference original init\n\n var superInit = WordArray.init; // Augment WordArray.init to handle typed arrays\n\n var subInit = WordArray.init = function (typedArray) {\n // Convert buffers to uint8\n if (typedArray instanceof ArrayBuffer) {\n typedArray = new Uint8Array(typedArray);\n } // Convert other array views to uint8\n\n\n if (typedArray instanceof Int8Array || typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray || typedArray instanceof Int16Array || typedArray instanceof Uint16Array || typedArray instanceof Int32Array || typedArray instanceof Uint32Array || typedArray instanceof Float32Array || typedArray instanceof Float64Array) {\n typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n } // Handle Uint8Array\n\n\n if (typedArray instanceof Uint8Array) {\n // Shortcut\n var typedArrayByteLength = typedArray.byteLength; // Extract bytes\n\n var words = [];\n\n for (var i = 0; i < typedArrayByteLength; i++) {\n words[i >>> 2] |= typedArray[i] << 24 - i % 4 * 8;\n } // Initialize this word array\n\n\n superInit.call(this, words, typedArrayByteLength);\n } else {\n // Else call normal init\n superInit.apply(this, arguments);\n }\n };\n\n subInit.prototype = WordArray;\n })();\n\n return CryptoJS.lib.WordArray;\n});",";\n\n(function (root, factory) {\n if (typeof exports === \"object\") {\n // CommonJS\n module.exports = exports = factory(require(\"./core\"));\n } else if (typeof define === \"function\" && define.amd) {\n // AMD\n define([\"./core\"], factory);\n } else {\n // Global (browser)\n factory(root.CryptoJS);\n }\n})(this, function (CryptoJS) {\n (function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo; // Initialization and round constants tables\n\n var H = [];\n var K = []; // Compute constants\n\n (function () {\n function isPrime(n) {\n var sqrtN = Math.sqrt(n);\n\n for (var factor = 2; factor <= sqrtN; factor++) {\n if (!(n % factor)) {\n return false;\n }\n }\n\n return true;\n }\n\n function getFractionalBits(n) {\n return (n - (n | 0)) * 0x100000000 | 0;\n }\n\n var n = 2;\n var nPrime = 0;\n\n while (nPrime < 64) {\n if (isPrime(n)) {\n if (nPrime < 8) {\n H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n }\n\n K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n nPrime++;\n }\n\n n++;\n }\n })(); // Reusable object\n\n\n var W = [];\n /**\n * SHA-256 hash algorithm.\n */\n\n var SHA256 = C_algo.SHA256 = Hasher.extend({\n _doReset: function _doReset() {\n this._hash = new WordArray.init(H.slice(0));\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Shortcut\n var H = this._hash.words; // Working variables\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n var f = H[5];\n var g = H[6];\n var h = H[7]; // Computation\n\n for (var i = 0; i < 64; i++) {\n if (i < 16) {\n W[i] = M[offset + i] | 0;\n } else {\n var gamma0x = W[i - 15];\n var gamma0 = (gamma0x << 25 | gamma0x >>> 7) ^ (gamma0x << 14 | gamma0x >>> 18) ^ gamma0x >>> 3;\n var gamma1x = W[i - 2];\n var gamma1 = (gamma1x << 15 | gamma1x >>> 17) ^ (gamma1x << 13 | gamma1x >>> 19) ^ gamma1x >>> 10;\n W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n }\n\n var ch = e & f ^ ~e & g;\n var maj = a & b ^ a & c ^ b & c;\n var sigma0 = (a << 30 | a >>> 2) ^ (a << 19 | a >>> 13) ^ (a << 10 | a >>> 22);\n var sigma1 = (e << 26 | e >>> 6) ^ (e << 21 | e >>> 11) ^ (e << 7 | e >>> 25);\n var t1 = h + sigma1 + ch + K[i] + W[i];\n var t2 = sigma0 + maj;\n h = g;\n g = f;\n f = e;\n e = d + t1 | 0;\n d = c;\n c = b;\n b = a;\n a = t1 + t2 | 0;\n } // Intermediate hash value\n\n\n H[0] = H[0] + a | 0;\n H[1] = H[1] + b | 0;\n H[2] = H[2] + c | 0;\n H[3] = H[3] + d | 0;\n H[4] = H[4] + e | 0;\n H[5] = H[5] + f | 0;\n H[6] = H[6] + g | 0;\n H[7] = H[7] + h | 0;\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8; // Add padding\n\n dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;\n data.sigBytes = dataWords.length * 4; // Hash final blocks\n\n this._process(); // Return final computed hash\n\n\n return this._hash;\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n return clone;\n }\n });\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA256('message');\n * var hash = CryptoJS.SHA256(wordArray);\n */\n\n C.SHA256 = Hasher._createHelper(SHA256);\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA256(message, key);\n */\n\n C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n })(Math);\n\n return CryptoJS.SHA256;\n});","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = e << mLen | m;\n eLen += mLen;\n\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;\n\n(function (factory) {\n var registeredInModuleLoader;\n\n if (typeof define === 'function' && define.amd) {\n define(factory);\n registeredInModuleLoader = true;\n }\n\n if (typeof exports === 'object') {\n module.exports = factory();\n registeredInModuleLoader = true;\n }\n\n if (!registeredInModuleLoader) {\n var OldCookies = window.Cookies;\n var api = window.Cookies = factory();\n\n api.noConflict = function () {\n window.Cookies = OldCookies;\n return api;\n };\n }\n})(function () {\n function extend() {\n var i = 0;\n var result = {};\n\n for (; i < arguments.length; i++) {\n var attributes = arguments[i];\n\n for (var key in attributes) {\n result[key] = attributes[key];\n }\n }\n\n return result;\n }\n\n function decode(s) {\n return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n }\n\n function init(converter) {\n function api() {}\n\n function set(key, value, attributes) {\n if (typeof document === 'undefined') {\n return;\n }\n\n attributes = extend({\n path: '/'\n }, api.defaults, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n } // We're using \"expires\" because \"max-age\" is not supported by IE\n\n\n attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n try {\n var result = JSON.stringify(value);\n\n if (/^[\\{\\[]/.test(result)) {\n value = result;\n }\n } catch (e) {}\n\n value = converter.write ? converter.write(value, key) : encodeURIComponent(String(value)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n key = encodeURIComponent(String(key)).replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent).replace(/[\\(\\)]/g, escape);\n var stringifiedAttributes = '';\n\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue;\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue;\n } // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n\n\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return document.cookie = key + '=' + value + stringifiedAttributes;\n }\n\n function get(key, json) {\n if (typeof document === 'undefined') {\n return;\n }\n\n var jar = {}; // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var i = 0;\n\n for (; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var cookie = parts.slice(1).join('=');\n\n if (!json && cookie.charAt(0) === '\"') {\n cookie = cookie.slice(1, -1);\n }\n\n try {\n var name = decode(parts[0]);\n cookie = (converter.read || converter)(cookie, name) || decode(cookie);\n\n if (json) {\n try {\n cookie = JSON.parse(cookie);\n } catch (e) {}\n }\n\n jar[name] = cookie;\n\n if (key === name) {\n break;\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar;\n }\n\n api.set = set;\n\n api.get = function (key) {\n return get(key, false\n /* read as raw */\n );\n };\n\n api.getJSON = function (key) {\n return get(key, true\n /* read as json */\n );\n };\n\n api.remove = function (key, attributes) {\n set(key, '', extend(attributes, {\n expires: -1\n }));\n };\n\n api.defaults = {};\n api.withConverter = init;\n return api;\n }\n\n return init(function () {});\n});"],"sourceRoot":""}