{"version":3,"sources":["GlobalScripts.min.js","jquery-init.js","form.all.js","client.min.js","hosted-fields.min.js","apple-pay.min.js","youtube.js","locationsMap.js","locationsList.js","syncdebugger.js","AllMoviesController.js","Carousel.js","CelebrationContentTypeController.js","CelebrationSearchController.js","CelebrationSearchTermController.js","CRewardsTopNavController.js","HeaderNav.js","MembershipTypes.js","vipsubscriptionfilter.js","angular.geocodeservice.js","angular.mapservice.js","angular.utilityservice.js","angular.webservice.js","countUp.min.js","angular-countUp.min.js","app.js","angularjsvis.js","audienceratingformatter.js","genreData.js","genreFormatter.js","monthdayformatter.js","moviePosterInformation.js","movieratingformatter.js","rivertownData.js","rottentomatoesformatter.js","runtimeformatter.js","showTimeFormatter.js","timeline-demo.js","ui-bootstrap-tpls.js","ConfirmPasswordDirective.js","CRewardsCommunicationsController.js","CRewardsCreditCardsController.js","CRewardsCustomerRefundsController.js","CRewardsGiftCardController.js","CRewardsHistoryController.js","CRewardsLocationsController.js","CRewardsManageSubscriptionController.js","CRewardsPersonalInfoController.js","CRewardsRegisterAccountController.js","CRewardsSignupController.js","CRewardsStatusController.js","CRewardsSubscriptionPaymentController.js","CRewardsVipSubscriptionManagerController.js","CRewardsWatchlistController.js","SignInController.js","angular-bootstrap.js"],"names":["missingImageError","e","hasOwnProperty","retryCount","setTimeout","src","Date","now","onerror","parentNode","children","srcset","style","visibility","missingImageLoaded","t","exports","module","define","amd","AOS","this","n","o","i","id","loaded","call","m","c","p","__esModule","default","Object","assign","arguments","length","prototype","r","a","u","s","f","d","l","b","offset","delay","easing","duration","disable","once","startEvent","throttleDelay","debounceDelay","disableMutationObserver","v","y","init","document","all","window","atob","mobile","phone","tablet","forEach","node","removeAttribute","querySelector","setAttribute","indexOf","readyState","addEventListener","refresh","refreshHard","apply","x","k","w","j","g","TypeError","leading","h","maxWait","trailing","cancel","clearTimeout","flush","valueOf","replace","test","slice","Symbol","iterator","constructor","NaN","parseInt","self","Function","toString","Math","max","min","Array","addedNodes","removedNodes","concat","filter","hasAttribute","defineProperty","value","MutationObserver","WebKitMutationObserver","MozMutationObserver","observe","documentElement","childList","subtree","navigator","userAgent","vendor","opera","enumerable","configurable","writable","key","substr","pageYOffset","innerHeight","getAttribute","position","classList","add","remove","anchor","anchorPlacement","isNaN","querySelectorAll","top","offsetHeight","offsetLeft","offsetTop","tagName","scrollLeft","scrollTop","offsetParent","left","map","st","restrict","link","stPreventEnter","on","keyCode","preventDefault","stopPropagation","$apply","$inject","type","html","stScopeData","angular","fromJson","$value","error","directive","controller","QRCode","__extends","create","UrlSeparator","SortSeparator","DefaultGroup","TermPropertyName","PagePropertyName","SortPropertyName","location","pathname","toLocaleUpperCase","hash","encodeURIComponent","element","stSearchBoxInput","stSearchBoxButton","stSearchBox","val","search","group","$on","addConstantFilters","filters","facetService","$log","allowMultiple","_items","models","FacetItemCollection","addWatch","notify","registerFacets","name","setSelectedNames","push","get","set","extend","FacetItem","modelChanged","model","isArray","setSelectedIds","toggle","select","deselect","update","$rootScope","$location","$http","$q","$document","facetGroups","isSearching","results","_firstLoad","_registeredGroups","_groupsUpdated","_constantFilters","has","_stSearchConfig","_stSearchGroupConfig","$emit","keys","unshift","copy","page","split","groupUpdated","searchOnLoad","debug","submitSearch","setPage","getPageId","setSortBy","getSortBy","equals","reduce","trim","join","term","updateUrl","selected","path","Filters","Group","indexName","ItemsPerPage","itemsPerPage","OrFacets","orFacets","SearchFields","searchFields","HighlightedFields","highlightedFields","Term","allowEmptySearch","Skip","SortBy","submitSearchReq","loadAllPagesOnInit","then","data","finally","lang","headers","Accept-Language","siteId","SiteId","post","endpoint","service","_parent","_selected","_watchers","_notificationCtx","indexOfId","indexOfName","notified","suppressNotify","clearSelected","setSelected","findItem","stFacetService","_term","pages","selectPageId","sortBy","isUndefined","Pages","isActive","Page","selectPage","selectPageIndex","nextPage","prevPage","sortChanged","$watch","$","each","magnificPopup","disableOn","preloader","fixedContentPos","animate","takeEven","currentPage","customItems","pageSize","pageChangeHandler","console","log","terminal","multiElement","priority","compile","dirPaginate","match","nodeType","attr","paginationId","registerInstance","$set","eq","removeAttr","setCurrentPageParser","totalItems","setAsyncModeTrue","setCollectionLength","setAsyncModeFalse","$watchCollection","scope","maxSize","onPageChange","autoHide","isRegistered","warn","directionLinks","isDefined","$parent","$eval","boundaryLinks","pagination","current","getCollectionLength","getItemsPerPage","newPageNumber","oldPageNumber","getCurrentPage","last","setCurrent","range","lower","upper","total","setCurrentPage","tracker","getString","template","templateUrl","getPath","ceil","isObject","isAsyncMode","setItemsPerPage","asyncMode","deregisterInstance","getLastInstanceId","currentPageParser","context","collectionLength","provider","setPath","setString","$get","run","put","require","$parsers","$formatters","factory","createList","clear","load","Key","Message","startBin","endBin","middleBin","Lbinary","Gbinary","Rbinary","encode","string","text","valid","bytes","charCodeAt","substring","encodings","shift","nextA","nextB","nextC","getEncoding","result","checksum","mod10","floor","mod11","width","height","format","displayValue","fontOptions","font","textAlign","textPosition","textMargin","fontSize","background","lineColor","margin","marginTop","marginBottom","marginLeft","marginRight","ReferenceError","setPrototypeOf","__proto__","symbology","input","message","Error","InvalidInputException","InvalidElementException","NoElementException","createElement","getContext","measureText","getTotalWidthOfEncodings","calculateEncodingAttributes","getBarcodePadding","getEncodingHeight","getMaximumHeightOfEncodings","options","barcodePadding","CODE39","CODE128","CODE128A","CODE128B","CODE128C","EAN13","EAN8","EAN5","EAN2","UPC","ITF14","ITF","MSI","MSI10","MSI11","MSI1010","MSI1110","pharmacode","GenericBarcode","api","handleCatch","_options","_defaults","render","wrapBarcodeCall","HTMLCanvasElement","HTMLImageElement","renderer","getRendererClass","afterRender","toDataURL","SVGElement","String","fromCharCode","toUpperCase","mod43Enabled","mod43","characters","getBinary","characterValue","getCharacter","structure","guardHeight","lastChar","binaryRepresentation","0","1","2","3","4","5","6","7","8","9","calculatePair","number","toLowerCase","canvas","prepareCanvas","drawCanvasBarcode","drawCanvasText","moveCanvasDrawing","restoreCanvas","save","clearRect","fillStyle","fillRect","translate","fillText","restore","createElementNS","appendChild","svg","prepareSVG","drawSvgBarcode","drawSVGText","firstChild","removeChild","setSvgAttributes","createTextNode","transform","_errorHandler","_encodings","_renderProperties","getModule","blank","repeat","JsBarcode","jQuery","fn","mode","MODE_8BIT_BYTE","parsedData","typeNumber","errorCorrectLevel","modules","moduleCount","dataCache","dataList","num","totalCount","dataCount","buffer","aMat","parseFloat","getLength","write","addData","isDark","getModuleCount","make","makeImpl","getBestMaskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","getLostPoint","createMovieClip","createEmptyMovieClip","beginFill","moveTo","lineTo","endFill","getPatternPosition","getBCHTypeNumber","getBCHTypeInfo","getMask","PAD0","PAD1","getRSBlocks","getLengthInBits","putBit","createBytes","getErrorCorrectPolynomial","mod","_","MODE_NUMBER","MODE_ALPHA_NUM","MODE_KANJI","L","M","Q","H","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHDigit","multiply","gexp","abs","glog","LOG_TABLE","EXP_TABLE","RS_BLOCK_TABLE","getRsBlockTable","_el","_htOption","draw","viewBox","fill","colorLight","setAttributeNS","colorDark","hasChildNodes","lastChild","CanvasRenderingContext2D","_elImage","_elCanvas","display","_android","devicePixelRatio","drawImage","nodeName","_bIsPainted","_oContext","_bSupportDataURI","round","strokeStyle","lineWidth","strokeRect","makeImage","_fFail","_fSuccess","onabort","onload","isPainted","innerHTML","childNodes","offsetWidth","correctLevel","getElementById","_oQRCode","_oDrawing","makeCode","encodeURI","title","CorrectLevel","defer","method","dismissShowtimeDrawer","addClass","ready","shareShowtimeLink","s_url","s_title","s_hocode","s_cinema","s_date","s_format","share_button","showtimelist","dayOfWeekAndMonth","nowDate","moment","tz","iscurrentDate","mDate","isSame","filterAdded","formattedDate","cinemaNameText","cinemaName","find","messageText","clipboard","writeText","isMobile","isTablet","canShare","shareData","share","err","fadeOut","fadeIn","steps","callback","interval","smoothTimer","progress","styleWidth","css","event","showtimeboxcontainer","parent","formats","formatTitle","times","slength","index","elm","a_showing","modal","show","backdrop","keyboard","showtimeOG","ESTtime","utc","$div","trigger","click","removeClass","tabTop","scrollTo","newValue","target","url","URL","href","searchParams","delete","history","replaceState","strip","menu","tabs","selectEl","appendTo","insertAfter","el","opt","hasClass","change","slideToggle","toggleClass","hide","swapped","URLSearchParams","pushState","behavior","prop","ordernum","orderURL","protocol","host","isFormSubmitting","global","braintree","client","code","__importDefault","PromiseGlobal","Promise","promise-polyfill","JSON","stringify","forceScriptReload","dataAttributes","container","head","async","crossorigin","clearCache","./lib/promise","./dist/load-script","./is-ie11","./dist/is-ie","./dist/is-ie9","defaultOnResolve","resolve","defaultOnReject","reject","setPromise","shouldCatchExceptions","Boolean","suppressUnhandledPromiseMessage","allSettled","race","_promise","catch","isFulfilled","_setResolved","_onResolve","_resolveFunction","_resetState","_setRejected","_onReject","_rejectFunction","isResolved","isRejected","onResolve","onReject","10","random","11","deferred","12","13","promiseOrCallback","14","pop","wrapPrototype","ignoreMethods","transformPrivateMethods","getOwnPropertyNames","charAt","./lib/deferred","./lib/once","./lib/promise-or-callback","15","_state","_handled","_value","_deferreds","_immediateFn","onFulfilled","onRejected","promise","_unhandledRejectionFn","status","reason","setImmediate","16","isIe","isIe9","@braintree/browser-detection/is-ie","@braintree/browser-detection/is-ie9","17","BRAINTREE_VERSION","getConfiguration","E","I","VERSION","GRAPHQL_URLS","A","N","T","R","FRAUDNET_FNCLS","C","FRAUDNET_SOURCE","FRAUDNET_URL","O","gatewayConfiguration","CLIENT_MISSING_GATEWAY_CONFIGURATION","CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN","parse","_request","_configuration","_clientApiBaseUrl","clientApiUrl","graphQL","_graphQL","initialize","authorization","sendEvent","CLIENT_INVALID_AUTHORIZATION","isDebug","_findOrCreateFraudnetJSON","body","rda_tenant","mid","merchantId","authorizationFingerprint","cid","fp","bu","request","creditCards","collectDeviceData","CLIENT_OPTION_REQUIRED","timeout","metadata","analyticsMetadata","CLIENT_OPTION_INVALID","environment","clientSdkMetadata","platform","source","integration","sessionId","version","Authorization","Braintree-Version","sendAnalyticsEvent","CLIENT_REQUEST_TIMEOUT","CLIENT_AUTHORIZATION_INVALID","CLIENT_AUTHORIZATION_INSUFFICIENT","CLIENT_RATE_LIMITED","CLIENT_GATEWAY_NETWORK","CLIENT_REQUEST_ERROR","details","httpStatus","errors","CLIENT_GRAPHQL_REQUEST_ERROR","_httpStatus","nonce","loadScript","toJSON","getVersion","teardown","../lib/add-metadata","../lib/analytics","../lib/assets","../lib/assign","../lib/braintree-error","../lib/constants","../lib/convert-methods-to-error","../lib/convert-to-braintree-error","../lib/create-authorization-data","../lib/deferred","../lib/is-verified-domain","../lib/methods","../lib/once","../lib/promise","./constants","./errors","./get-configuration","./request","./request/graphql","@braintree/wrap-promise","18","19","types","MERCHANT","INTERNAL","NETWORK","20","merchantAppId","PLATFORM","sdkVersion","SOURCE","INTEGRATION","integrationType","attrs","configUrl","_meta","braintreeLibraryVersion","BRAINTREE_LIBRARY_VERSION","configVersion","date","features","tokenizationKey","originalError","authorizationType","../lib/is-date-string-before-or-on","@braintree/uuid","21","INSTANTIATION_OPTION_REQUIRED","../lib/errors","./client","22","isAvailable","getRequestObject","isGraphQLRequest","Content-Type","getUrl","getBody","getMethod","getHeaders","queryify","onreadystatechange","responseText","adaptResponseBody","determineStatus","extensions","errorClass","onprogress","ontimeout","open","setRequestHeader","send","../../lib/assign","../../lib/querystring","./default-request","./graphql/request","./parse-body","./prep-body","./xhr","23","_url","_data","_method","_headers","24","25","AMERICAN_EXPRESS","DISCOVER","INTERNATIONAL_MAESTRO","JCB","MASTERCARD","SOLO","UK_MAESTRO","UNION_PAY","VISA","ELO","HIPER","HIPERCARD","DINERS","clientConfiguration","assetsUrl","analytics","analyticsUrl","venmo","supportedFeatures","_config","braintreeApi","applePayWeb","supportedNetworks","supportedCardBrands","ideal","kount","kountMerchantId","creditCard","challenges","supportedCardTypes","threeDSecureEnabled","threeDSecure","googlePay","androidPay","displayName","enabled","googleAuthorizationFingerprint","googleAuthorization","paypalClientId","payWithVenmo","accessToken","paypal","paypalEnabled","currencyIsoCode","currencyCode","unionPay","merchantAccountId","visaCheckout","apikey","apiKey","encryptionKey","externalClientId","masterpass","merchantCheckoutId","usBankAccount","routeId","plaid","publicKey","plaidPublicKey","../../../../lib/assign","./error","26","YES","NO","UNKNOWN","PSDTWO","tokenizeCreditCard","last4","binData","consumed","description","token","cardholderName","expirationMonth","expirationYear","bin","cardType","brandCode","lastFour","lastTwo","threeDSecureInfo","authenticationInsight","customerAuthenticationRegulationEnvironment","regulationEnvironment","27","inputPath","legacyCode","field","fieldErrors","28","query","operationName","29","billingAddress","expirationDate","cvv","hasAuthenticationInsight","authenticationInsightInput","validate","variables","30","tokenize_credit_cards","configuration","getGraphQLEndpoint","getClientApiPath","_isGraphQLEnabled","some","../../browser-detection","31","payment_methods/credit_cards","_clientSdkMetadata","_sendAnalyticsEvent","_generator","_adapter","../../../lib/assign","../../../lib/snake-case-to-camel-case","../../constants","./adapters/configuration","./adapters/credit-card-tokenization","./generators/configuration","./generators/credit-card-tokenization","32","../../lib/once","./ajax-driver","./get-user-agent","./is-http","./jsonp-driver","33","34","getElementsByTagName","35","36","37","XMLHttpRequest","XDomainRequest","38","./create-authorization-data","./json-clone","39","kind","ANALYTICS_PREFIX","isAsync","timestamp","ANALYTICS_REQUEST_TIMEOUT_MS","./add-metadata","./promise","40","@braintree/asset-loader/load-script","41","_assign","42","findRootError","./enumerate","43","ASSETS_URLS","production","sandbox","CLIENT_API_URLS","BUS_CONFIGURATION_REQUEST_EVENT","INTEGRATION_TIMEOUT_MS","44","METHOD_CALLED_AFTER_TEARDOWN","./braintree-error","45","46","../lib/vendor/polyfill","47","48","49","INVALID_USE_OF_INTERNAL_FUNCTION","INCOMPATIBLE_VERSIONS","CLIENT_SCRIPT_FAILED_TO_LOAD","50","51","paypal.com","braintreepayments.com","braintreegateway.com","braintree-api.com","hostname","52","53","54","55","@braintree/extended-promise","56","decodeURIComponent","hasQueryParams","57","58","RegExp","_atob","hostedFields","./is-duckduckgo","./is-edge","./is-opera","./is-samsung","./is-silk","./is-ios","./is-ios-google-search-app","./dist/is-android","./dist/is-chrome-os","./dist/is-chrome","./dist/is-edge","./dist/is-firefox","./dist/is-ie10","./dist/is-ios-webview","./dist/is-ios","className","_events","off","splice","_emit","hasListener","createChild","defaultAttributes","setAttributes","./lib/assign","./lib/default-attributes","./lib/set-attributes","frameBorder","allowtransparency","scrolling","__assign","DINERS_CLUB","UNIONPAY","MAESTRO","MIR","clone","isValidInputType","addMatchingCardsToResults","findBestMatch","getTypeInfo","removeCard","addCard","updateCard","changeOrder","resetModifications","./lib/add-matching-cards-to-results","./lib/card-types","./lib/clone","./lib/find-best-match","./lib/is-valid-input-type","patterns","matches","matchStrength","./clone","./matches","visa","niceType","gaps","lengths","size","mastercard","american-express","diners-club","discover","jcb","unionpay","maestro","elo","mir","hiper","hipercard","Number","Framebus","origin","channel","verifyDomain","targetFrames","limitBroadcastToFramesArray","isDestroyed","listeners","hasAdditionalChecksForOnListeners","addTargetFrame","include","Window","childWindows","emit","namespaceEvent","isntString","packagePayload","targetFramesAsWindows","sendMessage","broadcast","frame","emitAsPromise","subscriptionArgsInvalid","passesVerifyDomainCheck","hasMatchingTargetFrame","eventName","handler","originalHandler","subscribers","checkOrigin","HTMLIFrameElement","contentWindow","./lib/broadcast","./lib/constants","./lib/is-not-string","./lib/package-payload","./lib/send-message","./lib/subscription-args-invalid","attach","./framebus","./lib/attach","detach","onmessage","removeEventListener","./message","broadcastToChildWindows","closed","./broadcast","postMessage","hasOpener","opener","frames","./has-opener","prefix","dispatch","unpackPayload","eventData","reply","./broadcast-to-child-windows","./dispatch","./is-not-string","./unpack-payload","59","subscribeReplier","./subscribe-replier","60","61","../framebus","62","63","./package-payload","64","65","isIos","isIE9","isSamsungBrowser","isAndroidChrome","isKitKatWebview","@braintree/browser-detection/is-android","@braintree/browser-detection/is-chrome","@braintree/browser-detection/is-chrome-os","@braintree/browser-detection/is-ios","66","./lib/device","67","./dist/supports-input-formatting","68","allowedAttributes","HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED","HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED","../../lib/braintree-error","../shared/constants","../shared/errors","69","../../lib/use-min","70","navigationDirections","hasSoftwareKeyboard","removeExtraFocusElements","elements","reverse","matchFocusElement","createFocusChangeHandler","direction","forms","onRemoveFocusIntercepts","BACK","checkIndexBounds","indexChange","FORWARD","onTriggerInputFocus","focus","../shared/browser-detection","../shared/find-parent-tags","../shared/focus-intercept","71","allowedStyles","getComputedStyle","72","S","D","events","F","allowedFields","P","V","destroy","U","_merchantConfigurationOptions","_clientPromise","fields","_injectedNodes","_destructor","_fields","cards","_bus","registerFunctionForTeardown","HOSTED_FIELDS_INVALID_FIELD_KEY","selector","HOSTED_FIELDS_INVALID_FIELD_SELECTOR","fieldSelector","fieldContainer","fieldKey","HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME","isShadowElement","transformToSlot","maxlength","HOSTED_FIELDS_FIELD_PROPERTY_INVALID","minlength","defaultIFrameStyle","iframeTitle","label","_setupLabelFocus","frameElement","containerElement","isEmpty","isValid","isPotentiallyValid","isFocused","isIE","isEdge","bind","styles","REMOVE_FOCUS_INTERCEPTS","TRIGGER_FOCUS_CHANGE","READY_FOR_CLIENT","CARD_FORM_ENTRY_HAS_BEGUN","BIN_AVAILABLE","_cleanUpFocusIntercepts","FRAME_READY","INPUT_EVENT","merchantPayload","emittedBy","externalClasses","FOCUSED","VALID","INVALID","_getAnyFieldContainer","_attachInvalidFieldContainersToError","invalidFieldKeys","invalidFields","getChallenges","getSupportedCardTypes","tokenize","TOKENIZATION_REQUEST","ADD_CLASS","classname","HOSTED_FIELDS_FIELD_NOT_PRESENT","HOSTED_FIELDS_FIELD_INVALID","REMOVE_CLASS","attribute","SET_ATTRIBUTE","setMonthOptions","SET_MONTH_OPTIONS","setMessage","SET_MESSAGE","REMOVE_ATTRIBUTE","setPlaceholder","CLEAR_FIELD","TRIGGER_INPUT_FOCUS","getBoundingClientRect","clientHeight","right","bottom","innerWidth","clientWidth","scrollIntoView","getState","../../lib/analytics","../../lib/constants","../../lib/convert-methods-to-error","../../lib/create-assets-url","../../lib/create-deferred-client","../../lib/destructor","../../lib/errors","../../lib/find-root-node","../../lib/is-verified-domain","../../lib/methods","../../lib/promise","../../lib/shadow","../shared/get-card-types","./attribute-validation-error","./compose-url","./focus-change","./get-styles-from-class","./inject-frame","@braintree/class-list","@braintree/event-emitter","@braintree/iframer","framebus","73","createDocumentFragment","generate","74","supportsInputFormatting","verify","HOSTED_FIELDS_TIMEOUT","../lib/basic-component-verification","./external/hosted-fields","./shared/errors","restricted-input/supports-input-formatting","75","isIe10","isAndroid","isChromeOS","isChromeIos","isFirefox","isIosWebview","@braintree/browser-detection/is-edge","@braintree/browser-detection/is-firefox","@braintree/browser-detection/is-ie10","@braintree/browser-detection/is-ios-webview","76","maxExpirationYearAge","externalEvents","FOCUS","BLUR","EMPTY","NOT_EMPTY","VALIDITY_CHANGE","CARD_TYPE_CHANGE","defaultMaxLengths","postalCode","border","float","tokenizationErrorCodes","81724","HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE","81736","HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED","aria-invalid","aria-required","disabled","placeholder","autocompleteMappings","cardholder-name","credit-card-number","expiration","expiration-month","expiration-year","postal-code","../../lib/enumerate","77","HOSTED_FIELDS_TOKENIZATION_NETWORK_ERROR","CUSTOMER","HOSTED_FIELDS_FAILED_TOKENIZATION","HOSTED_FIELDS_FIELDS_EMPTY","HOSTED_FIELDS_FIELDS_INVALID","78","79","opacity","blur","./browser-detection","80","credit-card-type","81","82","83","84","85","86","./once","87","88","89","90","91","92","./assets","93","_teardownRegistry","_isTearingDown","./batch-execute-functions","94","95","96","97","98","99","100","101","102","getShadowHost","sheet","insertRule","./find-root-node","103","104","applePay","_instantiatedWithClient","useDeferredClient","_client","_createPromise","createPromise","_setMerchantIdentifier","_waitForClient","merchantIdentifier","createPaymentRequest","_createPaymentRequestSynchronously","countryCode","merchantCapabilities","performValidation","validationURL","validationUrl","domainName","applePayWebSession","APPLE_PAY_MERCHANT_VALIDATION_FAILED","APPLE_PAY_MERCHANT_VALIDATION_NETWORK","APPLE_PAY_VALIDATION_URL_REQUIRED","applePaymentToken","paymentData","btoa","applePayCards","APPLE_PAY_TOKENIZATION","APPLE_PAY_PAYMENT_TOKEN_REQUIRED","APPLE_PAY_NOT_ENABLED","../lib/create-assets-url","../lib/create-deferred-client","./apple-pay","empty","locationsMapCtrl","$scope","$sce","$filter","WebService","MapService","UtilityService","GeoService","baseUrl","vm","setLocation","info","locationData","Latitude","Longitude","DiameterToSearch","retries","mapsPos","lat","lng","SetCenter","findNearMe","GetUserLocation","getInputLocations","GetInputLocations","locations","inputLocation","userInputAddress","GetInputLocation","mapId","pageUrl","showAllLocations","items","Init","mapOptions","center","google","maps","LatLng","zoom","disableDefaultUI","gestureHandling","InitMap","item","directionsLink","Address","Address2","contentString","LocationName","PhoneNumber","latLng","GoogleMapUrl","markerPos","AddInfoMarker","SetMarker","PlaceMarkers","requires","which","ngEnter","locationsListCtrl","queryLocation","regionSelector","changeRegion","newLocation","config","$locationProvider","$a","is","html5Mode","requireBase","SyncDebuggerController","$timeout","$interval","sdm","buttonSpinner","errorMessage","successMessage","alertCounter","timerSpeed","timermultiplerspeed","alertVariable","overviewWastTimeChecked","overviewLastSync","overviewLastSyncStart","overviewMissingIdsFromVistaCount","nonSyncingCount","overviewCinemas","overviewOldCinemas","currentSyncStatus","lastSyncTimeOld","cinemaconcessions","adminsettings","linkedAccountEmail","mylinkedaccounts","linkedtome","btsubscription","btsubscriptionid","timer","ms","res","getLastSyncShowtimes","params","getMissingShowtimes","CINEMA_KEY","count","countold","affected","old","concessionsf","concessionsvista","showJson","showtimeResponse","tab","lastshowtimes","oldshowtimes","oldshowtimescount","oldshowtimeCinemas","missingshowtimes","processingsubscriptions","isFutureDate","getBTSub","btid","buttonLocksAndMessage","response","Data","getVIPClass","user","btCount","vipCount","vippoints","forOwn","sub","getVIPSignUpsFn","setTab","newTab","isSet","tabNum","esttime","time","alertTimer","multiplier","percent","$applyAsync","oldValue","bytetomb","byte","mb","mbceil","getAdminSettings","getCinemaConcessionStatus","cinema","findIndex","enabledsf","enabledvista","overViewStats","clearOverviewStats","successFlag","Success","vistaidsnotinsf","cinemasObj","countBy","flatMap","currentlysyncing","lastsynctime","lastsyncstart","isAfter","subtract","syncstopped","formatBytes","decimals","dm","pow","toFixed","TimeSince","fromNow","ToTheTop","showtimeLookupID","lookupShowtime","re","showtimeFormatter","getmissingshowtimes","CinemaFormatter","ary","getlastsyncshowtimes","uniq","forceSyncShowtime","showtimeid","lookupLinkedAccounts","lookupemail","email","Email","tooltip","sitefinityResponseString","vistaResponseString","sitefinityResponse","vistaResponse","sitefinityjson","vistajson","filmname","combinederror","minutes","ctrl","defaultRatingsOrder","filterOptions","searchTerm","genres","category","ratings","categories","dates","movies","AOSRefresh","json","tempratings","Set","Rating","sort","Genres","filterByOptions","passesFilter","Title","includes","slickInduvidual","slick","dots","fade","adaptiveHeight","slidesToShow","slide","nextArrow","prevArrow","appendArrows","appendDots","autoplay","autoplaySpeed","lazyLoad","arrows","centerMode","variableWidth","infinite","swipeToSlide","responsive","breakpoint","settings","evt","$img","closest","$source","searching","facetCtrl","assignPolyfill","varArgs","to","nextSource","nextKey","searchResults","resultTypes","undefined","GetType","hasFilms","Movies","hasUpcoming","updatedUpcomingFilms","upcoming","contentType","searchCleared","UpdateTerm","GetResultsCount","arr","SearchInitiated","apiCallFinished","hasCard","SignIn","signedIn","SignOut","close","getTime","firstName","FirstName","lastName","LastName","lastNameAbbreviation","firstestName","Exception","points","Points","SignedIn","qrcodevalue","CardNumber","MEMBER_CARD_NUMBER","MEMBER_ID","MemberId","$qr1","getElementsByClassName","$qr2","$qrmodal","hasDropDownCodeAlready1","hasDropDownCodeAlready2","hasDropDownCodeAlreadyModal","navToggle","userHeaderMenu","searchForm","searchToggle","mblHeaderSignIn","toggleNav","currentTarget","toggleSearch","mobileNavItem","mobileCrewardsMenu","slideUp","form","VIPSubscriptionController","$compile","resultcap","resultcapold","showMore","showMoreOld","sortByOptions","customername","memberid","memberemail","subscriptionstatus","PaidThroughDate","subscriptionid","btsubs","propertyName","sortByOptionsOld","propertyNameOld","reverseOld","sortByOld","memberByPointCount","viptype","formatDate","vipSubscriptions","obj","totalactivesubscriptions","totalactivesubscriptionsfree","totalFreePointUsers","totalFreePoints","sumBy","totalusersubscriptionsPoints","subscriptions","adayago","startOf","oldSubs","LastModifiedDate","noPointSubs","noIdSubs","noEmailSubs","combinedIssues","union","subscriptionsold","uniqBy","totalactivebutendingsubscriptions","nonfree","free","grandtotalactivesubscriptions","combinedPaidSubs","combinedSubs","groupBy","totalvipsubsperuser","totalusersubscriptions","combinedSubs2","totalvipusersubscriptions","substatuses","filtersubscriptionstatuses","entries","filtersubscriptionpoints","vipoints","isNumber","toNumber","filtervippoints","LatLongData","LocationData","googleBase","getUserLocation","addressString","Get","error_message","geometry","GetUserStringLocation","resultString","decodeUserLocation","Location","geolocation","getCurrentPosition","coords","latitude","longitude","enableHighAccuracy","maximumAge","allComps","state","country","address_components","short_name","mainMap","markers","infoWindows","urlbase","Map","addListener","MapMover","AddMarker","markerValue","newMarker","Marker","color","fontWeight","pos","Url","markerIcon","windowValue","infowindow","InfoWindow","content","markerIconObj","MSInputMethodContext","documentMode","scaledSize","Size","markerData","icon","optimized","marker","infoWindow","setZoom","setCenter","ClearMarkers","setMap","GetCenter","getCenter","GetNeCorner","getBounds","getNorthEast","$broadcast","SortByDistance","arrayOfThings","byFilter","distance","GetDistance","lat1","lon1","lat2","lon2","dLat","Deg2Rad","dLon","sin","cos","atan2","sqrt","GetStateInfo","states","getStates","Code","GetStates","deg","PI","Name","Post","CountUp","useEasing","useGrouping","separator","decimal","easingFn","formattingFn","numerals","suffix","requestAnimationFrame","cancelAnimationFrame","initialized","startVal","endVal","dec","countDown","frameVal","printValue","textContent","startTime","remaining","rAF","start","pauseResume","paused","reset","reanimateOnClick","scrollSpyEvent","MovieController","mvm","ALLOW_GET_ALL_SJO_DATA","hello","CURRENT_DATE","CURRENT_DATE_URL","showTimeline","buildingTimeline","filteredItemsVariable","dateArray","Datelimit","hasShowTimes","movieFormatCodes","filterByPlayingType","NowPlayingTab","CINEMAS","ORIGINAL_SHOWTIMES","SHOWTIMES","ORIGINAL_MOVIES","MOVIES","CALENDAR_DATA","max_date","min_date","all_dates","SHOWTIMES_WITH_STATUSES","showtimeSelectedDate","isNowPlaying","isComingSoon","isLoading","SELECTED_DATE","buildTimeline","nextDay","prevDay","sortorder","filterByCinemaLocation","filterByMultipleMovieFormats","filterByMovieFormat","next","prev","getFilteredItemsVariable","filteredItemsCinemaLocation","byFilm","value2","key2","value3","key3","temp","temp2","FormatType","$evalAsync","movieFormatFilterArray","arr2","aItem","FilmID","HOFilmCode","merge","filmKey","ScheduledFilmId","CinemaID","FormatCode","ReleaseDateDT","addToWatchlist","filmCode","isInWatchlist","alert","removeFromWatchlist","initWatchlist","showWatchlistLink","filteredItemsHomePage","cinemaIdsInList","cinemaFilterArray","cinemaKeyArray","keyBy","at","unix","runtimeinseconds","Duration","acc","ShowNowPlaying","ComingSoonTab","ShowComingSoon","routeParams","setButtonClass","$index","selectedTab","Moment","getButtonClass","getNowPlayingClass","filteredItemsByFilm","values","cinemaKey","VistaID","Formats","handleSuccess","FilmId","Cert","Img","Trailer","ReleaseDate","RunTime","Synopsis","Teaser","Cast","Director","FriendlyName","foregroundImage","currentShowtimes","TicketsSellingFast","ShowSoldOut","EventName","hasEvent","ShowtimeDetailUrl","OverrideShowtimeIcon","OverrideShowtimeIconDescription","OverrideShowtimeIconKey","OverrideShowtimeIconDescriptionKey","OverrideShowtimeIconKeyOrder","Dates","flattenDeep","loadFirstTimeData","pageLoaded","getMoreDataByTitle","sjoID","sjoid","cache","getMoreDataByTitleAPI","getMoreDataAPI","ShowtimeStatuses","today","showtimesWithStatuses","ID","soldOut","sellingFast","SitefinityToJs","hasShowtimesForSelecedDate","lazyLoadSJOCinemaDetail","getTodaysSelectedTab","lazyLoadSJOHomepage","sjoIDLightweight","sjoIDFull","cachedItem","localStorage","getItem","removeItem","itemStr","expiry","timetogo","getWithExpiry","baseresponse","ttl","compressedValue","calendarDates","films","cinemas","setItem","setWithExpiry","tllMinutes","dt","DateChange","dateindex","StringDate","sharedate","inlineOptions","customClass","dayToCheck","setHours","currentDay","minDate","showWeeks","nextMonth","setMonth","getMonth","dateOptions","dateDisabled","isRealDate","momentDate","toDate","date2","dayDuration","formatYear","maxDate","startingDay","toggleMin","open1","popup1","opened","open2","popup2","filterByMultipleMovieFormatsFilmDetail","filterByMovieFormatFunction","setManualDate","setDate","year","month","day","altInputFormats","tomorrow","testParsed","isString","ex","dataParsed","updatedData","calDates","tos","isBefore","tempdates","Showtime","StartTime","diff","temparray","datetime","isSameOrAfter","calendarToday","dateString","calendarTomorrow","calendarTomorrow2","tempAry","counter","Text","getQueryString","itm","qs","pattern","exec","dateparam","cinemaparam","formatparam","tempdate","getDate","logs","filterOn","newItems","extractValueToCompare","isDuplicate","vis","DataSet","transclude","timelineEvents","timeline","Timeline","groups","isFunction","setOptions","networkEvents","network","Network","graphEvents","graph","Graph2d","AudienceRatingFormatter","score","rating","isNull","NameTranslations","Description","DescriptionTranslations","GenreFormatter","genreData","genreId","MonthDayFormatter","includeText","releasingText","moviePosterInformation","movie","filteredShowtimes","ticketsOnSale","movieFormatType","alignText","showImage","cappedWidth","disabledShowtimesDir","customClasses","alignment","titleText","isDisabledShowtime2","ids","getTemplateUrl","MovieRatingFormatter","getAllData","promises","getCinemaSouthData","getNorthData","getWoodlandData","getCarouselData","getPlazaData","getMeridianData","getLansingData","getBentonHarborData","getMtPleasantData","getCrossroadsData","newArray","merged","combinedShowTimes","mapValues","flatMapDeep","Sessions","combinedSessions","unique","sorted","session","combinedShowTimesV2","Times","Cinemas","Day","timestring","AllMovieData","RottenTomatoRatingFormatter","RunTimeFormatter","runtime","ShowTimeFormatter","showing","$animate","$parse","$injector","$animateCss","expandingExpr","expanding","expandedExpr","expanded","collapsingExpr","collapsing","collapsedExpr","collapsed","horizontal","cssTo","getScrollFromElement","scrollWidth","scrollHeight","expandDone","collapseDone","uibCollapse","shouldCollapse","noop","collapse","overflow","elem","$observe","constant","closeOthers","$attrs","accordionConfig","openGroup","isOpen","addGroup","groupScope","that","removeGroup","controllerAs","heading","cardClass","isDisabled","setHeading","accordionCtrl","openClass","toggleOpen","$event","$id","headingId","cardId","accordionGroupCtrl","uibAccordionTransclude","append","$element","$interpolate","closeable","dismissOnTimeout","activeClass","toggleEvent","buttonConfig","ctrls","buttonsCtrl","ngModelCtrl","uncheckableExpr","uibUncheckable","$render","$modelValue","uibBtnRadio","uncheckable","$setViewValue","getTrueValue","getCheckboxValue","btnCheckboxTrue","defaultValue","btnCheckboxFalse","currentInterval","isPlaying","slides","SLIDE_DIRECTION","currentIndex","active","destroyed","setActive","findSlideIndex","resetTimer","restartTimer","timerFn","pause","addSlide","$currentTransition","play","getCurrentIndex","newIndex","noWrap","removeSlide","nextSlide","nextIndex","currentIdx","phase","goNext","indexOfSlide","isPrevDisabled","isNextDisabled","noPause","noTransition","actual","carouselCtrl","animation","classPrefix","beforeAddClass","done","directionClass","removeClassFn","beforeRemoveClass","$locale","dateFilter","orderByFilter","filterFilter","localeId","formatCodeToRegex","SPECIAL_CHARACTERS_REGEXP","getFormatCodeToRegex","constructLiteralFormatter","literalIdx","endIdx","constructFormatterFromIdx","currentPosStr","parser","formatter","toInt","str","timezoneToOffset","timezone","fallback","requestedTimezoneOffset","addDateMinutes","setMinutes","getMinutes","convertTimezoneToLocal","dateTimezoneOffset","getTimezoneOffset","parsers","formatters","regex","_date","setFullYear","getFullYear","DATETIME_FORMATS","MONTH","SHORTMONTH","DAY","SHORTDAY","hours","milliseconds","seconds","AMPMS","sign","ERANAMES","ERAS","major","minor","STANDALONEMONTH","getParser","overrideParser","isDate","createFormatter","baseDate","quoteIndex","inLiteral","matcher","createParser","tzOffset","getHours","getSeconds","getMilliseconds","mapper","datesetter","setUTCFullYear","timesetter","setUTCHours","toTimezone","fromTimezone","ON_REGEXP","IS_REGEXP","tElement","tAttrs","linkedScopes","instances","expToData","onExpMatches","uibIsClass","onExp","exps","exp","clazz","compareWithExp","watchFn","compareWithVal","newActivated","instance","thisVal","lastActivated","watcher","addForExp","removeScope","removedScope","targetScope","newWatchScope","datepickerMode","formatDay","formatMonth","formatDayHeader","formatDayTitle","formatMonthTitle","maxMode","minMode","monthColumns","ngModelOptions","shortcutPropagation","yearColumns","yearRows","datepickerConfig","$datepickerLiteralWarning","$datepickerSuppressError","dateParser","watchListeners","datepickerOptions","modes","FIRSTDAYOFWEEK","getOption","refreshView","uniqueId","ngDisabled","dateObject","compare","activeDate","activeDateId","uid","ngModelCtrl_","$options","extractOptions","initDate","$isEmpty","$invalid","$viewValue","selectedDt","_refreshView","activeDt","$setValidity","createDateObject","past","future","arrays","setMode","move","step","years","months","toggleMode","keydown","shiftKey","altKey","ctrlKey","handleKeyDown","DAYS_IN_MONTH","getDaysInMonth","getISO8601WeekNumber","checkDate","getDay","getDates","startDate","firstDayOfMonth","difference","numDisplayedFromPreviousMonth","firstDate","days","secondary","labels","abbr","full","rows","weekNumbers","thursdayIndex","numWeeks","curWeek","date1","_date1","_date2","yearHeaderColspan","columns","getStartingYear","yearpickerInit","datepickerCtrl","$window","SCROLLBAR_WIDTH","BODY_SCROLLBAR_WIDTH","OVERFLOW_REGEX","normal","hidden","PLACEMENT_REGEX","auto","primary","vertical","BODY_REGEX","getRawNode","parseStyle","isFinite","scrollbarWidth","isBody","bodyElem","scrollElem","scrollbarPadding","elemStyle","paddingRight","paddingBottom","scrollParent","widthOverflow","originalRight","heightOverflow","originalBottom","isScrollable","includeHidden","overflowRegex","overflowY","overflowX","includeSelf","documentEl","excludeStatic","parentElement","spStyle","includeMagins","elemOffset","parentOffset","clientTop","clientLeft","includeMargins","elemBCR","pageXOffset","verticalMargin","horisontalMargin","viewportOffset","useDocument","includePadding","offsetBCR","offsetParentBCR","offsetParentStyle","paddingTop","paddingLeft","parsePlacement","placement","autoPlace","positionElements","hostElem","targetElem","appendToBody","targetWidth","targetHeight","hostElemPos","targetElemPos","targetElemStyle","adjustedSize","xOverflow","yOverflow","adjustTop","placementClasses","containerPosition","initialHeight","currentHeight","positionArrow","isTooltip","innerElem","arrowElem","arrowCss","arrowElemOffset","aHW","aHH","borderProp","borderRadiusProp","borderRadius","clearText","closeOnDateSelection","closeText","currentText","datepickerPopup","datepickerPopupTemplateUrl","datepickerTemplateUrl","html5Types","datetime-local","onOpenFocus","showButtonBar","$position","datepickerPopupConfig","$datepickerPopupLiteralWarning","dateFormat","popupEl","datepickerEl","scrollParentEl","ngModel","$popup","isHtml5DateInput","parseDateString","viewValue","parseDate","validator","modelValue","ngRequired","documentClickBind","popup","dpContainsTarget","contains","popupContainsTarget","inputKeydownBind","positionPopup","dpElement","popupPlacement","_ngModel_","datepickerAppendToBody","uibDatepickerPopup","newDateFormat","ng-model","ng-change","template-url","$$parserName","$validators","$viewChangeListeners","after","$$phase","getText","dateSelection","debounceTime","timeoutPromise","args","createNew","hasKey","idx","appendToOpenClass","$$multiMap","openScope","openedContainers","isOnlyOpen","dropdownScope","openedDropdowns","toClose","dropdown","closeDropdown","keybindFilter","dropdownToClose","getAutoClose","toggleElement","getToggleElement","dropdownElement","getDropdownElement","dropdownElementTargeted","toggleElementTargeted","focusToggleElement","isKeynavEnabled","focusDropdownEntry","dropdownConfig","uibDropdownService","$templateRequest","templateScope","getIsOpen","$new","setIsOpen","toggleInvoker","onToggle","keynavEnabled","removeDropdownMenu","dropdownMenu","keyboardNav","autoClose","getElement","elems","selectedOption","wasOpen","dropdownAppendTo","appendToEl","dropdownAppendToBody","rightalign","appendOffset","openContainer","dropdownOpenClass","hasOpenClass","dropdownMenuTemplateUrl","tplContent","newEl","replaceWith","$destroy","dropdownCtrl","dropdownNested","tplUrl","toggleDropdown","openDropdown","aria-haspopup","aria-expanded","stack","removeTop","resolver","setResolver","invocables","locals","invoke","resolves","resolveObj","resolveIter","$modalStack","backdropClass","linkFn","modalRenderDeferObj","$$postDigest","modalInClass","NOW_CLOSING_EVENT","setIsAsync","modalOptions","windowTopClass","getTop","dismiss","$isRendered","animationPromise","when","modalRendered","activeElement","inputWithAutofocus","modalAnimation","uibModalAnimationClass","enter","$$stackedMap","$uibPosition","backdropDomEl","backdropScope","OPENED_MODAL_CLASS","openedWindows","openedClasses","topModalIndex","previousTopOpenedModal","ARIA_HIDDEN_ATTRIBUTE_NAME","SNAKE_CASE_REGEXP","backdropIndex","topBackdropIndex","removeModalWindow","modalInstance","elementToReceiveFocus","modalWindow","appendToElement","modalDomEl","removeAfterAnimate","modalScope","modalBodyClass","openedClass","areAnyOpen","toggleTopWindowClass","closedDeferred","checkRemoveBackdrop","toggleSwitch","domEl","asyncDeferred","asyncPromise","afterAnimating","leave","keydownListener","isDefaultPrevented","list","loadFocusElementList","focusChanged","isFocusInFirstItem","isModalFocused","focusLastFocusableElement","isFocusInLastItem","focusFirstFocusableElement","broadcastClosing","resultOrReason","closing","defaultPrevented","unhideBackgroundElements","hiddenEl","newHiddenCount","newBackdropIndex","modalOpener","renderDeferred","currBackdropIndex","class","ng-style","uib-modal-animation-class","modal-in-class","component","letter","modal-instance","angularDomEl","windowTemplateUrl","window-top-class","role","aria-labelledby","ariaLabelledBy","aria-describedby","ariaDescribedBy","tabindex","windowClass","$$topModalIndex","applyAriaHidden","child","getSiblings","sibling","elemIsAlreadyHidden","ariaHiddenCount","$$uibDestructionScheduled","dismissAll","topModal","srcElement","modalDomE1","getClientRects","isVisible","$modalProvider","$controller","$uibResolve","$modal","promiseChain","getPromiseChain","templateAndResolvePromise","samePromise","modalResultDeferred","modalOpenedDeferred","modalClosedDeferred","modalRenderDeferred","rendered","resolveWithTemplate","tplAndVars","providedScope","$close","$dismiss","ctrlInstance","ctrlInstantiate","ctrlLocals","constructLocals","instanceOnScope","injectable","$resolve","$uibModalInstance","bindToController","$onInit","setNumPages","numPages","totalPages","calculateTotalPages","updatePage","newTotal","oldTotal","noPrevious","noNext","uibPaging","uibPagerConfig","align","previousText","nextText","paginationCtrl","uibPaginationConfig","rotate","forceEllipses","boundaryLinkNumbers","pageLabel","$page","identity","makePage","originalRender","startPage","endPage","isMaxSized","previousPageSet","secondPageLink","firstPageLink","nextPageSet","secondToLastPageLink","lastPageLink","getPages","firstText","lastText","defaultOptions","placementClassPrefix","popupDelay","popupCloseDelay","useContentExp","triggerMap","mouseenter","outsideClick","none","globalOptions","setTriggers","triggers","openedTooltips","keypressListener","ttType","defaultTriggerShow","getTriggers","directiveName","startSym","startSymbol","endSym","endSymbol","tElem","tooltipLinker","tooltipCtrl","tooltipLinkedScope","transitionTimeout","showTimeout","hideTimeout","positionTimeout","adjustmentTimeout","lastPlacement","hasEnableExp","ttScope","repositionScheduled","isOpenParse","contentParse","observers","positionTooltip","ttPosition","elementPos","adjustment","toggleTooltipBind","hideTooltipBind","showTooltipBind","cancelHide","popupClass","closeDelay","prepareTooltip","cancelShow","prepObservers","createTooltip","assignIsOpen","removeTooltip","observer","bodyHideTooltipBind","hideOnEscapeKey","origScope","contentExp","showTriggers","hideTriggers","unregisterTriggers","appendToBodyVal","appendKey","currentScope","previousElement","currentElement","tooltipTemplateTranscludeScope","changeCounter","cleanupLastIncludeContent","parseAsResourceUrl","uibTooltipTemplateTransclude","thisChangeId","newScope","tooltipAnimationClass","$uibTooltip","originScope","uibTitle","progressConfig","getMaxOrDefault","maxParam","bars","addBar","bar","transition","recalculatePercentage","totalPercentage","removeBar","striped","progressCtrl","stateOn","stateOff","enableReset","titles","ratingConfig","tmpTitles","ratingStates","buildTemplateObjects","getTitle","rate","readonly","newViewValue","onHover","onLeave","onKeydown","ratingCtrl","oldIndex","findTabIndex","previousIndex","previousSelected","onDeselect","$selectedIndex","onSelect","addTab","t1","t2","newActiveIndex","removeTab","newActiveTabIndex","justified","classes","tabsetCtrl","$transcludeFn","uibTabContentTransclude","contents","isTabHeading","headingElement","hourStep","minuteStep","secondStep","showMeridian","showSeconds","meridians","readonlyInput","mousewheel","arrowkeys","showSpinners","timepickerConfig","hoursModelCtrl","minutesModelCtrl","secondsModelCtrl","watchers","padHours","inputs","hoursInputEl","minutesInputEl","secondsInputEl","setupMousewheelEvents","setupArrowkeyEvents","setupInputEvents","noIncrementHours","incrementedSelected","addMinutes","noDecrementHours","decrementedSelected","noIncrementMinutes","noDecrementMinutes","noIncrementSeconds","addSeconds","noDecrementSeconds","noToggleMeridian","getHoursFromTemplate","meridian","getMinutesFromTemplate","pad","noPad","keyboardChange","makeValid","updateTemplate","invalidHours","invalidMinutes","invalidSeconds","addSecondsToSelected","newDate","modelIsEmpty","$error","isScrollingUp","originalEvent","delta","wheelDelta","deltaY","detail","incrementHours","decrementHours","incrementMinutes","decrementMinutes","incrementSeconds","decrementSeconds","updateHours","updateMinutes","updateSeconds","invalidate","$setDirty","$setTouched","getSecondsFromTemplate","setSeconds","toggleMeridian","uibTimepickerConfig","timepickerCtrl","TYPEAHEAD_REGEXP","itemName","viewMapper","modelMapper","originalScope","$$debounce","typeaheadParser","modelCtrl","HOT_KEYS","minLength","typeaheadMinLength","newVal","waitTime","typeaheadWaitMs","isEditable","typeaheadEditable","hasFocus","isLoadingSetter","typeaheadLoading","isSelectEvent","typeaheadShouldSelect","vals","onSelectCallback","typeaheadOnSelect","isSelectOnBlur","typeaheadSelectOnBlur","isNoResultsSetter","typeaheadNoResults","inputFormatter","typeaheadInputFormatter","typeaheadAppendToBody","typeaheadAppendTo","focusFirst","typeaheadFocusFirst","selectOnExact","typeaheadSelectOnExact","isOpenSetter","typeaheadIsOpen","showHint","typeaheadShowHint","parsedModel","invokeModelSetter","parserResult","uibTypeahead","offDestroy","inputsContainer","hintInputElem","popupId","aria-autocomplete","aria-owns","border-color","box-shadow","vertical-align","background-color","popUpEl","move-in-progress","assign-is-open","debounce","typeaheadTemplateUrl","typeaheadPopupTemplateUrl","resetMatches","activeIdx","getMatchId","getMatchesAsync","inputValue","onCurrentRequest","recalculatePosition","inputIsExactMatch","debounceUpdate","firstLabel","fireRecalculating","debouncedRecalculate","moveInProgress","$digest","cancelPreviousTimeout","$$$p","$setModelValue","$item","$model","$label","typeaheadFocusOnSelect","shouldSelect","editable","dismissClickHandler","_modelCtrl","scheduleSearchWithTimeout","candidateViewValue","popupTemplateUrl","isDropdownOpen","matchIdx","selectActive","selectMatch","tplEl","isSanitizePresent","matchItem","containsHtml","trustAsHtml","$templateCache","$$csp","noInlineStyle","$$uibCarouselCss","prepend","$$uibCommonCss","$$uibDatepickerCss","$$uibPositionCss","$$uibDatepickerpopupCss","$$uibTooltipCss","$$uibTimepickerCss","$$uibTypeaheadCss","otherModelValue","attributes","compareTo","$validate","feedback","processing","saveDisabled","SetModel","commPreferences","UpdatePreferences","payload","ReceiveEmails","receiveEmails","ReceiveTexts","receiveSMS","showAddCard","newCard","expMonth","expYear","SetCards","RemoveCardFromModel","AddCreditCard","cardObj","cardExpiry","maskedCardNumber","RemoveCreditCard","subscriptionPaymentToken","confirm","ToggleAddCard","cardBrand","makeField","btForm","cardNumber","invalid","hostedFieldsInstance","btFunctions","submitForm","validateForm","formIsInvalid","validateInput","createInputChangeEventListener","setValidityClasses","validity","validityChanged","cardTypeChanged","card","initBraintree","ClientToken","clientInstance","font-size","isError","refundSubmitted","confirmationCode","isMidtownWebsite","loyaltyVouchers","TicketsThatAreNotRefunded","seats","filteredSeats","RefundedStatus","IsFieldInvalid","$touched","frm","$submitted","bookingData","loadBooking","grecaptcha","execute","action","bookingId","archivable","ProcessRefund","BookingId","getParameterByName","cardBalance","CheckBalance","formattedCardNumber","pinNumber","captchaToken","Balance","loadingmore","loadedAll","filterBy","getSeatsForFirstOrders","ordersGottenSoFar","filteredTransactions","vistaTransactionId","seatDetail","isGetty","noSeats","gettingMoreDetails","getMoreDetails","transactions","lastPage","GetLocations","locArray","locationName","distinctArray","showOrderBarcode","IsTransactionVisible","lowerLimit","upperLimit","transactionidparam","cinemaidparam","transactionid","bookingid","ResponseData","seatList","Seats","Screen","screen","SelectUpdated","selectClass","cssWidth","locationFilteredItems","loadalltransactions","addLocationVisible","addLocationProcessing","removeLocationProcessing","savedLocations","siteGroups","AddLocation","addLocationFeedback","vistaID","UpdateModelPostRemove","RemoveLocation","removeLocationFeedback","IsLocationSaved","IsSiteGroupVisible","siteGroup","cinemasToDisplay","SetCreditCards","paymentMethods","selectedCardToken","GetSelectedCard","subscriptionId","ShowCancelModal","ShowCancelledModal","ShowReactivatedModal","CancelSubscription","cancellationProcessed","RestoreSubscription","restoreProcessed","isSelectedMethod","removedCardToken","States","AL","AK","AZ","AR","CA","CO","CT","DE","DC","FL","GA","HI","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY","formFeedback","queryString","SubmitForm","$valid","first","UpdatePasswordSubmit","updatePasswordClicked","updatePasswordProcessing","updatePasswordFeedback","updatePasswordModel","updatePasswordScreen","msg","CloseModal","CurrentPassword","NewPassword","ConfirmPassword","updatepwform","$setPristine","$setUntouched","numberOfYears","getYear","Years","Months","Days","NumberOfDays","findFormFeedback","findFormProcessing","accountFound","findFormModel","regFormModel","redirectToUrl","output","$this","area","pre","tel","IsLeapYear","selectedYear","GetNumberOfDaysInMonth","selectedMonth","DobYear","UpdateNumberOfDays","DobMonth","SubmitFindAcctForm","accountAlreadyRegistered","MemberNumber","accountInfo","DateOfBirth","RewardsMemberNumber","SubmitRegisterForm","regFormProcessing","regFormFeedback","reload","unlinkMemberCardNumber","unlinkMemberEmail","unlinkExternalMemberEmail","nicknameMemberCardNumber","nicknameMemberNickname","member_card_number","nicknamePrep","nickname","unlinkPrep","unlinkExternalPrep","unlinkExternal","externalEmail","errorMessage2","RemoveCardFromMyModel","updateNickName","cardnumberparam","nicknameparam","cardnumber","associatedMembers","unlink","member","externalemail","linkedEmails","linkAccount","newCardNumber","newEmail","mappedMember","quantityAvailable","QuantityAvailable","vipPoints","VIPPoints","removeFilmFeedback","removeFilmProcessing","removeShowFeedback","removeShowProcessing","watchlist","SetWatchlist","watchlistIDs","GoToEditEmail","RemoveFilm","slickIndex","jQueryIndex","RemoveShow","showCode","isPasswordReset","resetCode","currentScreen","signInModel","resetPwModel","ResetCode","ResetSignInForm","ResetForgotPwForm","SignInSubmit","signInClicked","RemoveQSParam","ForgotPwSubmit","fgtPwEmailEntered","emailAddress","fpemail","ResetPwSubmit","resetPasswordClicked","Username","Password","signinform","forgotpwform","IsVistaError","signInError","$name","forgotPwError","sourceURL","rtn","params_arr","msDateRE","formatStr","formatted","rewriteLinks","$httpProvider","defaults"],"mappings":"AACA,SAASA,kBAAkBC,GAAGA,EAAEC,eAAe,gBAAgBD,EAAEE,WAAW,GAAGF,EAAEE,WAAW,GAAGC,WAAW,WAAWH,EAAEI,KAAK,IAAIC,KAAKC,MAAMN,EAAEE,YAAY,GAAG,MAAMF,EAAEO,QAAQ,KAAKP,EAAEQ,WAAWC,SAAS,GAAGC,OAAOV,EAAEQ,WAAWC,SAAS,GAAGC,OAAO,8CAA8CV,EAAEW,MAAMC,WAAW,WAAW,SAASC,mBAAmBb,GAAGA,EAAEW,MAAMC,WAAW,UAAUT,WAAW,WAAWH,EAAEW,MAAMC,WAAW,WAAW,MAD5a,SAASZ,EAAEc,GAAG,iBAAiBC,SAAS,iBAAiBC,OAAOA,OAAOD,QAAQD,IAAI,mBAAmBG,QAAQA,OAAOC,IAAID,OAAO,GAAGH,GAAG,iBAAiBC,QAAQA,QAAQI,IAAIL,IAAId,EAAEmB,IAAIL,IAArL,CAA0LM,KAAK,WAAW,OAAO,SAASpB,GAAG,SAASc,EAAEO,GAAG,GAAGC,EAAED,GAAG,OAAOC,EAAED,GAAGN,QAAQ,IAAIQ,EAAED,EAAED,GAAG,CAACN,QAAQ,GAAGS,GAAGH,EAAEI,QAAO,GAAI,OAAOzB,EAAEqB,GAAGK,KAAKH,EAAER,QAAQQ,EAAEA,EAAER,QAAQD,GAAGS,EAAEE,QAAO,EAAGF,EAAER,QAAQ,IAAIO,EAAE,GAAG,OAAOR,EAAEa,EAAE3B,EAAEc,EAAEc,EAAEN,EAAER,EAAEe,EAAE,QAAQf,EAAE,GAAvM,CAA2M,CAAC,SAASd,EAAEc,EAAEQ,GAAG,aAAa,SAASD,EAAErB,GAAG,OAAOA,GAAGA,EAAE8B,WAAW9B,EAAE,CAAC+B,QAAQ/B,GAAG,IAAIuB,EAAES,OAAOC,QAAQ,SAASjC,GAAG,IAAI,IAAIc,EAAE,EAAEA,EAAEoB,UAAUC,OAAOrB,IAAI,CAAC,IAAIQ,EAAEY,UAAUpB,GAAG,IAAI,IAAIO,KAAKC,EAAEU,OAAOI,UAAUnC,eAAeyB,KAAKJ,EAAED,KAAKrB,EAAEqB,GAAGC,EAAED,IAAI,OAAOrB,GAAGqC,GAAGhB,EAAEC,EAAE,IAAIA,EAAE,IAAIgB,EAAEjB,EAAEgB,GAAGT,EAAEP,EAAEC,EAAE,IAAIiB,EAAElB,EAAEC,EAAE,IAAIkB,EAAEnB,EAAEC,EAAE,IAAImB,EAAEpB,EAAEC,EAAE,KAAKoB,EAAErB,EAAEC,EAAE,KAAKqB,EAAEtB,EAAEC,EAAE,KAAKK,EAAE,GAAGE,GAAE,EAAGe,EAAE,CAACC,OAAO,IAAIC,MAAM,EAAEC,OAAO,OAAOC,SAAS,IAAIC,SAAQ,EAAGC,MAAK,EAAGC,WAAW,mBAAmBC,cAAc,GAAGC,cAAc,GAAGC,yBAAwB,GAAIC,EAAE,WAAW,GAAGrB,UAAUC,OAAO,QAAG,IAASD,UAAU,IAAIA,UAAU,KAAKL,GAAE,GAAIA,EAAE,OAAOF,GAAE,EAAGe,EAAEX,SAASJ,EAAEiB,IAAG,EAAGH,EAAEV,SAASJ,EAAEiB,EAAEM,MAAMvB,GAAG6B,EAAE,WAAW7B,GAAE,EAAGgB,EAAEZ,WAAWwB,KAAKvD,EAAEe,QAAQ,CAAC0C,KAAK,SAASzD,GAAG4C,EAAErB,EAAEqB,EAAE5C,GAAG2B,GAAE,EAAGgB,EAAEZ,WAAW,IAAIjB,EAAE4C,SAASC,MAAMC,OAAOC,KAAK,OAAO,SAAS7D,GAAG,OAAM,IAAKA,GAAG,WAAWA,GAAGwC,EAAET,QAAQ+B,UAAU,UAAU9D,GAAGwC,EAAET,QAAQgC,SAAS,WAAW/D,GAAGwC,EAAET,QAAQiC,UAAU,mBAAmBhE,IAAG,IAAKA,IAAzJ,CAA8J4C,EAAEK,UAAUnC,OAAOa,EAAEsC,QAAQ,SAASjE,EAAEc,GAAGd,EAAEkE,KAAKC,gBAAgB,YAAYnE,EAAEkE,KAAKC,gBAAgB,mBAAmBnE,EAAEkE,KAAKC,gBAAgB,qBAAqBnE,EAAEkE,KAAKC,gBAAgB,qBAAqBT,SAASU,cAAc,QAAQC,aAAa,kBAAkBzB,EAAEG,QAAQW,SAASU,cAAc,QAAQC,aAAa,oBAAoBzB,EAAEI,UAAUU,SAASU,cAAc,QAAQC,aAAa,iBAAiBzB,EAAEE,OAAO,qBAAqBF,EAAEO,YAAY,CAAC,WAAW,eAAemB,QAAQZ,SAASa,aAAa,EAAEhB,GAAE,GAAI,SAASX,EAAEO,WAAWS,OAAOY,iBAAiB5B,EAAEO,WAAW,WAAWI,GAAE,KAAMG,SAASc,iBAAiB5B,EAAEO,WAAW,WAAWI,GAAE,KAAMK,OAAOY,iBAAiB,UAAS,EAAG5C,EAAEG,SAASwB,EAAEX,EAAES,eAAc,IAAKO,OAAOY,iBAAiB,qBAAoB,EAAG5C,EAAEG,SAASwB,EAAEX,EAAES,eAAc,IAAKO,OAAOY,iBAAiB,UAAS,EAAGlC,EAAEP,SAAS,YAAW,EAAGU,EAAEV,SAASJ,EAAEiB,EAAEM,OAAON,EAAEQ,gBAAgBR,EAAEU,0BAAyB,EAAGf,EAAER,SAAS,aAAayB,GAAG7B,IAAI8C,QAAQlB,EAAEmB,YAAYlB,IAAI,SAASxD,EAAEc,KAAK,CAAC,CAAC,CAAC,CAAC,SAASd,EAAEc,IAAG,SAAUA,GAAG,aAAa,SAASQ,EAAEtB,EAAEc,EAAEQ,GAAG,SAASC,EAAET,GAAG,IAAIQ,EAAEoB,EAAErB,EAAEsB,EAAE,OAAOD,EAAEC,OAAE,EAAOa,EAAE1C,EAAEe,EAAE7B,EAAE2E,MAAMtD,EAAEC,GAAG,SAASgB,EAAEtC,GAAG,IAAIsB,EAAEtB,EAAEuD,EAAE,YAAO,IAASA,GAAGjC,GAAGR,GAAGQ,EAAE,GAAGsD,GAAG5E,EAAEwD,GAAG7B,EAAE,SAASY,IAAI,IAAIvC,EAAE6E,IAAI,OAAOvC,EAAEtC,GAAGwC,EAAExC,QAAQ4C,EAAEzC,WAAWoC,EAAE,SAASvC,GAAG,IAAIsB,EAAER,GAAGd,EAAEuD,GAAG,OAAOqB,EAAEE,EAAExD,EAAEK,GAAG3B,EAAEwD,IAAIlC,EAAhD,CAAmDtB,KAAK,SAASwC,EAAExC,GAAG,OAAO4C,OAAE,EAAOmC,GAAGrC,EAAEnB,EAAEvB,IAAI0C,EAAEC,OAAE,EAAOd,GAAG,SAASY,IAAI,IAAIzC,EAAE6E,IAAIvD,EAAEgB,EAAEtC,GAAG,GAAG0C,EAAER,UAAUS,EAAEvB,KAAKmC,EAAEvD,EAAEsB,EAAE,CAAC,QAAG,IAASsB,EAAE,OAAO,SAAS5C,GAAG,OAAOwD,EAAExD,EAAE4C,EAAEzC,WAAWoC,EAAEzB,GAAGkE,EAAEzD,EAAEvB,GAAG6B,EAAhD,CAAmD0B,GAAG,GAAGqB,EAAE,OAAOhC,EAAEzC,WAAWoC,EAAEzB,GAAGS,EAAEgC,GAAG,YAAO,IAASX,IAAIA,EAAEzC,WAAWoC,EAAEzB,IAAIe,EAAE,IAAIa,EAAEC,EAAEhB,EAAEE,EAAEe,EAAEW,EAAEC,EAAE,EAAEwB,GAAE,EAAGJ,GAAE,EAAGG,GAAE,EAAG,GAAG,mBAAmB/E,EAAE,MAAM,IAAIiF,UAAUrD,GAAG,OAAOd,EAAEuB,EAAEvB,IAAI,EAAEO,EAAEC,KAAK0D,IAAI1D,EAAE4D,QAAQvD,GAAGiD,EAAE,YAAYtD,GAAG6D,EAAE9C,EAAEf,EAAE8D,UAAU,EAAEtE,GAAGa,EAAEoD,EAAE,aAAazD,IAAIA,EAAE+D,SAASN,GAAGtC,EAAE6C,OAAO,gBAAW,IAAS1C,GAAG2C,aAAa3C,GAAGY,EAAE,EAAEd,EAAEa,EAAEZ,EAAEC,OAAE,GAAQH,EAAE+C,MAAM,WAAW,YAAO,IAAS5C,EAAEf,EAAEW,EAAEqC,MAAMpC,EAAE,SAASpB,EAAErB,GAAG,IAAIc,OAAE,IAASd,EAAE,YAAYsC,EAAEtC,GAAG,QAAQA,IAAI,UAAUc,GAAG,YAAYA,GAAiJ,SAASuB,EAAErC,GAAG,GAAG,iBAAiBA,EAAE,OAAOA,EAAE,GAA3L,SAAWA,GAAG,MAAM,gBAAW,IAASA,EAAE,YAAYsC,EAAEtC,KAAK,SAASA,GAAG,QAAQA,GAAG,gBAAW,IAASA,EAAE,YAAYsC,EAAEtC,IAA3D,CAAgEA,IAAIgF,EAAEtD,KAAK1B,IAAIwC,EAAkDjB,CAAEvB,GAAG,OAAOuC,EAAE,GAAGlB,EAAErB,GAAG,CAAC,IAAIc,EAAE,mBAAmBd,EAAEyF,QAAQzF,EAAEyF,UAAUzF,EAAEA,EAAEqB,EAAEP,GAAGA,EAAE,GAAGA,EAAE,GAAG,iBAAiBd,EAAE,OAAO,IAAIA,EAAEA,GAAGA,EAAEA,EAAEA,EAAE0F,QAAQjD,EAAE,IAAI,IAAInB,EAAEqB,EAAEgD,KAAK3F,GAAG,OAAOsB,GAAGK,EAAEgE,KAAK3F,GAAG6B,EAAE7B,EAAE4F,MAAM,GAAGtE,EAAE,EAAE,GAAGoB,EAAEiD,KAAK3F,GAAGuC,GAAGvC,EAAE,IAAIsC,EAAE,mBAAmBuD,QAAQ,iBAAiBA,OAAOC,SAAS,SAAS9F,GAAG,cAAcA,GAAG,SAASA,GAAG,OAAOA,GAAG,mBAAmB6F,QAAQ7F,EAAE+F,cAAcF,QAAQ7F,IAAI6F,OAAOzD,UAAU,gBAAgBpC,GAAG4B,EAAE,sBAAsBW,EAAEyD,IAAIxD,EAAE,kBAAkBC,EAAE,aAAaC,EAAE,qBAAqBC,EAAE,aAAahB,EAAE,cAAcE,EAAEoE,SAASrD,EAAE,gBAAW,IAAS9B,EAAE,YAAYwB,EAAExB,KAAKA,GAAGA,EAAEkB,SAASA,QAAQlB,EAAEyC,EAAE,WAAW,oBAAoB2C,KAAK,YAAY5D,EAAE4D,QAAQA,MAAMA,KAAKlE,SAASA,QAAQkE,KAAK1C,EAAEZ,GAAGW,GAAG4C,SAAS,cAATA,GAA0BnB,EAAEhD,OAAOI,UAAUgE,SAASjB,EAAEkB,KAAKC,IAAIxB,EAAEuB,KAAKE,IAAI1B,EAAE,WAAW,OAAOrB,EAAEnD,KAAKC,OAAON,EAAEe,QAAQ,SAASf,EAAEc,EAAES,GAAG,IAAIc,GAAE,EAAGC,GAAE,EAAG,GAAG,mBAAmBtC,EAAE,MAAM,IAAIiF,UAAUrD,GAAG,OAAOP,EAAEE,KAAKc,EAAE,YAAYd,IAAIA,EAAE2D,QAAQ7C,EAAEC,EAAE,aAAaf,IAAIA,EAAE8D,SAAS/C,GAAGhB,EAAEtB,EAAEc,EAAE,CAACoE,QAAQ7C,EAAE+C,QAAQtE,EAAEuE,SAAS/C,OAAOZ,KAAKZ,EAAE,WAAW,OAAOM,KAAlB,KAA4B,SAASpB,EAAEc,IAAG,SAAUA,GAAG,aAAa,SAASQ,EAAEtB,GAAG,IAAIc,OAAE,IAASd,EAAE,YAAYqC,EAAErC,GAAG,QAAQA,IAAI,UAAUc,GAAG,YAAYA,GAAiJ,SAASS,EAAEvB,GAAG,GAAG,iBAAiBA,EAAE,OAAOA,EAAE,GAA3L,SAAWA,GAAG,MAAM,gBAAW,IAASA,EAAE,YAAYqC,EAAErC,KAAK,SAASA,GAAG,QAAQA,GAAG,gBAAW,IAASA,EAAE,YAAYqC,EAAErC,IAA3D,CAAgEA,IAAIwD,EAAE9B,KAAK1B,IAAIuC,EAAkDlB,CAAErB,GAAG,OAAO4B,EAAE,GAAGN,EAAEtB,GAAG,CAAC,IAAIc,EAAE,mBAAmBd,EAAEyF,QAAQzF,EAAEyF,UAAUzF,EAAEA,EAAEsB,EAAER,GAAGA,EAAE,GAAGA,EAAE,GAAG,iBAAiBd,EAAE,OAAO,IAAIA,EAAEA,GAAGA,EAAEA,EAAEA,EAAE0F,QAAQlD,EAAE,IAAI,IAAIjB,EAAEmB,EAAEiD,KAAK3F,GAAG,OAAOuB,GAAGoB,EAAEgD,KAAK3F,GAAG2B,EAAE3B,EAAE4F,MAAM,GAAGrE,EAAE,EAAE,GAAGkB,EAAEkD,KAAK3F,GAAG4B,GAAG5B,EAAE,IAAIqC,EAAE,mBAAmBwD,QAAQ,iBAAiBA,OAAOC,SAAS,SAAS9F,GAAG,cAAcA,GAAG,SAASA,GAAG,OAAOA,GAAG,mBAAmB6F,QAAQ7F,EAAE+F,cAAcF,QAAQ7F,IAAI6F,OAAOzD,UAAU,gBAAgBpC,GAA2B4B,EAAEoE,IAAIzD,EAAE,kBAAkBC,EAAE,aAAaC,EAAE,qBAAqBC,EAAE,aAAaC,EAAE,cAAchB,EAAEsE,SAASpE,EAAE,gBAAW,IAASf,EAAE,YAAYuB,EAAEvB,KAAKA,GAAGA,EAAEkB,SAASA,QAAQlB,EAAE8B,EAAE,WAAW,oBAAoBsD,KAAK,YAAY7D,EAAE6D,QAAQA,MAAMA,KAAKlE,SAASA,QAAQkE,KAAK3C,EAAE1B,GAAGe,GAAGuD,SAAS,cAATA,GAA0B3C,EAAExB,OAAOI,UAAUgE,SAASpB,EAAEqB,KAAKC,IAAInB,EAAEkB,KAAKE,IAAIzB,EAAE,WAAW,OAAOvB,EAAElD,KAAKC,OAAON,EAAEe,QAAQ,SAASf,EAAEc,EAAEO,GAAG,SAASgB,EAAEvB,GAAG,IAAIQ,EAAEoB,EAAErB,EAAEsB,EAAE,OAAOD,EAAEC,OAAE,EAAOa,EAAE1C,EAAEe,EAAE7B,EAAE2E,MAAMtD,EAAEC,GAAG,SAASM,EAAE5B,GAAG,IAAIsB,EAAEtB,EAAEuD,EAAE,YAAO,IAASA,GAAGjC,GAAGR,GAAGQ,EAAE,GAAGsD,GAAG5E,EAAEwD,GAAG7B,EAAE,SAASY,IAAI,IAAIvC,EAAE8E,IAAI,OAAOlD,EAAE5B,GAAGwC,EAAExC,QAAQ4C,EAAEzC,WAAWoC,EAAE,SAASvC,GAAG,IAAIsB,EAAER,GAAGd,EAAEuD,GAAG,OAAOqB,EAAEO,EAAE7D,EAAEK,GAAG3B,EAAEwD,IAAIlC,EAAhD,CAAmDtB,KAAK,SAASwC,EAAExC,GAAG,OAAO4C,OAAE,EAAOmC,GAAGrC,EAAEL,EAAErC,IAAI0C,EAAEC,OAAE,EAAOd,GAAG,SAASY,IAAI,IAAIzC,EAAE8E,IAAIxD,EAAEM,EAAE5B,GAAG,GAAG0C,EAAER,UAAUS,EAAEvB,KAAKmC,EAAEvD,EAAEsB,EAAE,CAAC,QAAG,IAASsB,EAAE,OAAO,SAAS5C,GAAG,OAAOwD,EAAExD,EAAE4C,EAAEzC,WAAWoC,EAAEzB,GAAG+D,EAAExC,EAAErC,GAAG6B,EAAhD,CAAmD0B,GAAG,GAAGqB,EAAE,OAAOhC,EAAEzC,WAAWoC,EAAEzB,GAAGuB,EAAEkB,GAAG,YAAO,IAASX,IAAIA,EAAEzC,WAAWoC,EAAEzB,IAAIe,EAAE,IAAIa,EAAEC,EAAEhB,EAAEE,EAAEe,EAAEW,EAAEC,EAAE,EAAEqB,GAAE,EAAGD,GAAE,EAAGG,GAAE,EAAG,GAAG,mBAAmB/E,EAAE,MAAM,IAAIiF,UAAj/B,uBAA8/B,OAAOnE,EAAES,EAAET,IAAI,EAAEQ,EAAED,KAAKwD,IAAIxD,EAAE6D,QAAQvD,GAAGiD,EAAE,YAAYvD,GAAG2D,EAAEzD,EAAEF,EAAE+D,UAAU,EAAEtE,GAAGa,EAAEoD,EAAE,aAAa1D,IAAIA,EAAEgE,SAASN,GAAGtC,EAAE6C,OAAO,gBAAW,IAAS1C,GAAG2C,aAAa3C,GAAGY,EAAE,EAAEd,EAAEa,EAAEZ,EAAEC,OAAE,GAAQH,EAAE+C,MAAM,WAAW,YAAO,IAAS5C,EAAEf,EAAEW,EAAEsC,MAAMrC,KAAKf,KAAKZ,EAAE,WAAW,OAAOM,KAAlB,KAA4B,SAASpB,EAAEc,GAAG,aAAa,SAASQ,EAAEtB,GAAGA,GAAGA,EAAEiE,QAAQ,SAASjE,GAAG,IAAIc,EAAE0F,MAAMpE,UAAUwD,MAAMlE,KAAK1B,EAAEyG,YAAYnF,EAAEkF,MAAMpE,UAAUwD,MAAMlE,KAAK1B,EAAE0G,cAAc5F,EAAE6F,OAAOrF,GAAGsF,OAAO,SAAS5G,GAAG,OAAOA,EAAE6G,cAAc7G,EAAE6G,aAAa,cAAc1E,QAAQd,MAAMW,OAAO8E,eAAehG,EAAE,aAAa,CAACiG,OAAM,IAAK,IAAI1F,EAAE,aAAaP,EAAEiB,QAAQ,SAAS/B,EAAEc,GAAG,IAAIS,EAAEqC,OAAOF,SAASrB,EAAE,IAAIuB,OAAOoD,kBAAkBpD,OAAOqD,wBAAwBrD,OAAOsD,qBAAqB5F,GAAGD,EAAEP,EAAEuB,EAAE8E,QAAQ5F,EAAE6F,gBAAgB,CAACC,WAAU,EAAGC,SAAQ,EAAGZ,cAAa,MAAO,SAAS1G,EAAEc,GAAG,aAAa,SAASQ,IAAI,OAAOiG,UAAUC,WAAWD,UAAUE,QAAQ7D,OAAO8D,OAAO,GAAG1F,OAAO8E,eAAehG,EAAE,aAAa,CAACiG,OAAM,IAAK,IAAI1F,EAAE,WAAW,SAASrB,EAAEA,EAAEc,GAAG,IAAI,IAAIQ,EAAE,EAAEA,EAAER,EAAEqB,OAAOb,IAAI,CAAC,IAAID,EAAEP,EAAEQ,GAAGD,EAAEsG,WAAWtG,EAAEsG,aAAY,EAAGtG,EAAEuG,cAAa,EAAG,UAAUvG,IAAIA,EAAEwG,UAAS,GAAI7F,OAAO8E,eAAe9G,EAAEqB,EAAEyG,IAAIzG,IAAI,OAAO,SAASP,EAAEQ,EAAED,GAAG,OAAOC,GAAGtB,EAAEc,EAAEsB,UAAUd,GAAGD,GAAGrB,EAAEc,EAAEO,GAAGP,GAA7O,GAAmPS,EAAE,2TAA2Tc,EAAE,0kDAA0kDC,EAAE,sVAAsVV,EAAE,0kDAA0kDW,EAAE,WAAW,SAASvC,KAAK,SAASA,EAAEc,GAAG,KAAKd,aAAac,GAAG,MAAM,IAAImE,UAAU,qCAAvD,CAA6F7D,KAAKpB,GAAG,OAAOqB,EAAErB,EAAE,CAAC,CAAC8H,IAAI,QAAQf,MAAM,WAAW,IAAI/G,EAAEsB,IAAI,SAASC,EAAEoE,KAAK3F,KAAKqC,EAAEsD,KAAK3F,EAAE+H,OAAO,EAAE,OAAO,CAACD,IAAI,SAASf,MAAM,WAAW,IAAI/G,EAAEsB,IAAI,SAASgB,EAAEqD,KAAK3F,KAAK4B,EAAE+D,KAAK3F,EAAE+H,OAAO,EAAE,OAAO,CAACD,IAAI,SAASf,MAAM,WAAW,OAAO3F,KAAK0C,WAAW1C,KAAK2C,YAAY/D,EAA9X,GAAmYc,EAAEiB,QAAQ,IAAIQ,GAAG,SAASvC,EAAEc,GAAG,aAAakB,OAAO8E,eAAehG,EAAE,aAAa,CAACiG,OAAM,IAAKjG,EAAEiB,QAAQ,SAAS/B,EAAEc,GAAG,IAAIQ,EAAEsC,OAAOoE,YAAY3G,EAAEuC,OAAOqE,YAAYjI,EAAEiE,QAAQ,SAASjE,EAAEuB,IAAI,SAASvB,EAAEc,EAAEQ,GAAG,IAAID,EAAErB,EAAEkE,KAAKgE,aAAa,iBAAiBpH,EAAEd,EAAEmI,SAASnI,EAAEkE,KAAKkE,UAAUC,IAAI,oBAAe,IAAShH,IAAI,UAAUA,IAAIC,GAAG,SAASD,IAAIrB,EAAEkE,KAAKkE,UAAUE,OAAO,eAA/K,CAA+LtI,EAAEqB,EAAEC,EAAER,OAAO,SAASd,EAAEc,EAAEQ,GAAG,aAAaU,OAAO8E,eAAehG,EAAE,aAAa,CAACiG,OAAM,IAAK,IAAI1F,EAAE,SAASrB,GAAG,OAAOA,GAAGA,EAAE8B,WAAW9B,EAAE,CAAC+B,QAAQ/B,GAA9C,CAAkDsB,EAAE,KAAKR,EAAEiB,QAAQ,SAAS/B,EAAEc,GAAG,OAAOd,EAAEiE,QAAQ,SAASjE,EAAEsB,GAAGtB,EAAEkE,KAAKkE,UAAUC,IAAI,YAAYrI,EAAEmI,UAAS,EAAG9G,EAAEU,SAAS/B,EAAEkE,KAAKpD,EAAE+B,UAAU7C,IAAI,SAASA,EAAEc,EAAEQ,GAAG,aAAaU,OAAO8E,eAAehG,EAAE,aAAa,CAACiG,OAAM,IAAK,IAAI1F,EAAE,SAASrB,GAAG,OAAOA,GAAGA,EAAE8B,WAAW9B,EAAE,CAAC+B,QAAQ/B,GAA9C,CAAkDsB,EAAE,KAAKR,EAAEiB,QAAQ,SAAS/B,EAAEc,GAAG,IAAIQ,EAAE,EAAEC,EAAE,EAAEc,EAAEuB,OAAOqE,YAAY3F,EAAE,CAACO,OAAO7C,EAAEkI,aAAa,mBAAmBK,OAAOvI,EAAEkI,aAAa,mBAAmBM,gBAAgBxI,EAAEkI,aAAa,8BAA8B,OAAO5F,EAAEO,SAAS4F,MAAMnG,EAAEO,UAAUtB,EAAE0E,SAAS3D,EAAEO,SAASP,EAAEiG,QAAQ7E,SAASgF,iBAAiBpG,EAAEiG,UAAUvI,EAAE0D,SAASgF,iBAAiBpG,EAAEiG,QAAQ,IAAIjH,GAAE,EAAGD,EAAEU,SAAS/B,GAAG2I,IAAIrG,EAAEkG,iBAAiB,IAAI,aAAa,MAAM,IAAI,gBAAgBlH,GAAGtB,EAAE4I,aAAa,EAAE,MAAM,IAAI,gBAAgBtH,GAAGtB,EAAE4I,aAAa,MAAM,IAAI,aAAatH,GAAGe,EAAE,EAAE,MAAM,IAAI,gBAAgBf,GAAGe,EAAE,EAAErC,EAAE4I,aAAa,MAAM,IAAI,gBAAgBtH,GAAGe,EAAE,EAAErC,EAAE4I,aAAa,EAAE,MAAM,IAAI,UAAUtH,GAAGe,EAAE,MAAM,IAAI,aAAaf,GAAGtB,EAAE4I,aAAavG,EAAE,MAAM,IAAI,aAAaf,GAAGtB,EAAE4I,aAAa,EAAEvG,EAAE,OAAOC,EAAEkG,iBAAiBlG,EAAEO,QAAQ4F,MAAM3H,KAAKS,EAAET,GAAGQ,EAAEC,IAAI,SAASvB,EAAEc,GAAG,aAAakB,OAAO8E,eAAehG,EAAE,aAAa,CAACiG,OAAM,IAAKjG,EAAEiB,QAAQ,SAAS/B,GAAG,IAAI,IAAIc,EAAE,EAAEQ,EAAE,EAAEtB,IAAIyI,MAAMzI,EAAE6I,cAAcJ,MAAMzI,EAAE8I,YAAYhI,GAAGd,EAAE6I,YAAY,QAAQ7I,EAAE+I,QAAQ/I,EAAEgJ,WAAW,GAAG1H,GAAGtB,EAAE8I,WAAW,QAAQ9I,EAAE+I,QAAQ/I,EAAEiJ,UAAU,GAAGjJ,EAAEA,EAAEkJ,aAAa,MAAM,CAACP,IAAIrH,EAAE6H,KAAKrI,KAAK,SAASd,EAAEc,GAAG,aAAakB,OAAO8E,eAAehG,EAAE,aAAa,CAACiG,OAAM,IAAKjG,EAAEiB,QAAQ,SAAS/B,GAAG,OAAOA,EAAEA,GAAG0D,SAASgF,iBAAiB,cAAclC,MAAMpE,UAAUgH,IAAI1H,KAAK1B,EAAE,SAASA,GAAG,MAAM,CAACkE,KAAKlE,WAElob,OAAO4D,QAAQyF,IAAIA,GAAG5F,MAAM4F,GAAG5F,OACvB,SAAS3C,GAAG,IAAId,EAAE,SAASc,GAAG,MAAM,CAACwI,SAAS,IAAIC,KAAK,SAASvJ,EAAEqC,EAAEhB,GAAG,IAAIiB,EAAEjB,EAAEmI,eAAe1I,EAAEO,EAAEmI,gBAAgB,KAAKnH,EAAEoH,GAAG,WAAW,SAAS3I,GAAG,GAAG,KAAKA,EAAE4I,QAAQ,OAAO5I,EAAE6I,iBAAiB7I,EAAE8I,kBAAkBtH,GAAGtC,EAAE6J,OAAOvH,IAAG,OAAQtC,EAAE8J,QAAQ,CAAC,UAAU,IAAIzH,EAAE,WAAW,SAASvB,EAAEA,EAAEd,EAAEqC,EAAEhB,EAAEiB,GAAG,IAAIE,EAAElB,EAAEC,EAAEF,EAAE0I,KAAK,GAAG,cAAcpE,KAAKpE,GAAG,CAACD,EAAEtB,EAAEgK,OAAO,IAAI3I,EAAE4I,aAAa3I,IAAIA,EAAE4I,QAAQC,SAAS7I,GAAGkB,EAAEH,EAAEhB,EAAE4I,aAAa5I,EAAE4I,YAAY3F,QAAQ,WAAW,EAAE9B,EAAE1B,EAAE,CAACsJ,OAAO9I,IAAIkB,EAAEP,QAAQO,EAAEP,OAAOnB,EAAEQ,GAAGtB,EAAEsI,UAAU,MAAMxH,GAAGwB,EAAE+H,MAAM,mCAAmChJ,EAAE4I,YAAY,OAAO,OAAOnJ,EAAEgJ,QAAQ,CAAC,SAAS,WAAW,SAAS,SAAS,QAAQhJ,EAAvX,GAA4XoJ,QAAQlJ,OAAO,MAAMsJ,UAAU,iBAAiBtK,GAAGsK,UAAU,cAAc,WAAW,MAAM,CAAChB,SAAS,IAAIiB,WAAWlI,KAAtvB,CAA4vBgH,KAAKA,GAAG,KAC5wB,IAAIA,GAMAmB,OANGC,UAAUrJ,MAAMA,KAAKqJ,WAAW,SAAS3J,EAAEd,GAAG,IAAI,IAAIqC,KAAKrC,EAAEA,EAAEC,eAAeoC,KAAKvB,EAAEuB,GAAGrC,EAAEqC,IAAI,SAASf,IAAIF,KAAK2E,YAAYjF,EAAEA,EAAEsB,UAAU,OAAOpC,EAAEgC,OAAO0I,OAAO1K,IAAIsB,EAAEc,UAAUpC,EAAEoC,UAAU,IAAId,KAAK,SAASR,IAAI,SAASA,GAAGoJ,QAAQlJ,OAAO,YAAY,IAAIF,EAAE6J,aAAa,IAAI7J,EAAE8J,cAAc,IAAI9J,EAAE+J,aAAa,GAAG/J,EAAEgK,iBAAiB,OAAOhK,EAAEiK,iBAAiB,OAAOjK,EAAEkK,iBAAiB,OAAO,IAAIhL,EAAE,SAASc,GAAG,SAASd,EAAEA,EAAEqC,GAAGvB,EAAEmK,SAASC,SAASC,sBAAsB9I,EAAE8I,oBAAoBrK,EAAEmK,SAASG,KAAK,UAAUC,mBAAmBrL,GAAGc,EAAEmK,SAAShJ,OAAOI,EAAE,WAAWgJ,mBAAmBrL,IAAI,MAAM,CAACsJ,SAAS,IAAIC,KAAK,SAASzI,EAAEuB,EAAEf,GAAG,IAAIC,EAAE2I,QAAQoB,QAAQhK,EAAEiK,kBAAkB,gBAAgBlJ,GAAGG,EAAE0H,QAAQoB,QAAQhK,EAAEkK,mBAAmB,OAAOnJ,GAAGf,EAAEmK,aAAa,IAAIlK,EAAEY,QAAQK,EAAEL,SAASZ,EAAEkI,GAAG,WAAW,SAASpH,GAAG,KAAKA,EAAEqH,SAASnI,EAAEmK,QAAQrJ,EAAEsH,iBAAiBtH,EAAEuH,kBAAkB9I,EAAE+I,OAAO,WAAW7J,EAAEuB,EAAEmK,MAAMpK,EAAEmK,kBAAkBjJ,EAAEiH,GAAG,QAAQ,SAASpH,GAAGd,EAAEmK,OAAO5K,EAAE+I,OAAO,WAAW7J,EAAEuB,EAAEmK,MAAMpK,EAAEmK,qBAAqBzL,EAAE8J,QAAQ,CAAC,WAAWI,QAAQlJ,OAAO,aAAasJ,UAAU,cAActK,GAAz2B,CAA62Bc,EAAE6K,SAAS7K,EAAE6K,OAAO,KAA94B,CAAo5BtC,KAAKA,GAAG,KAAK,SAASvI,IAAI,SAASA,GAAG,IAAId,EAAE,WAAW,SAASA,EAAEA,EAAEqC,GAAG,IAAIf,EAAEF,KAAKA,KAAKwK,MAAM9K,EAAE+J,aAAa7K,EAAE6L,IAAI,mBAAmB,SAAS/K,GAAGuB,EAAEyJ,mBAAmBxK,EAAEsK,MAAMtK,EAAEyK,WAAW,OAAO/L,EAAE8J,QAAQ,CAAC,aAAa,kBAAkB9J,EAAhM,GAAqMkK,QAAQlJ,OAAO,aAAauJ,WAAW,wBAAwBvK,GAAtR,CAA0Rc,EAAE6K,SAAS7K,EAAE6K,OAAO,KAA3T,CAAiUtC,KAAKA,GAAG,KAAK,SAASvI,IAAI,SAASA,GAAG,IAAId,EAAE,WAAW,SAASA,EAAEA,EAAEqC,EAAEf,GAAG,IAAIC,EAAEH,KAAKA,KAAK4K,aAAa3J,EAAEjB,KAAK6K,KAAK3K,EAAEF,KAAKwK,MAAM9K,EAAE+J,aAAazJ,KAAK8K,eAAc,EAAG9K,KAAK+K,OAAO,IAAIrL,EAAEsL,OAAOC,oBAAoBjL,KAAK+K,OAAOG,SAAS,WAAW/K,EAAEgL,WAAWvM,EAAE6L,IAAI,mBAAmB,SAAS/K,GAAGS,EAAEyK,aAAaQ,eAAejL,EAAEqK,MAAMrK,EAAEkL,KAAKlL,EAAE4K,UAAUnM,EAAE6L,IAAI,eAAe,SAAS/K,EAAEd,EAAEqC,GAAG,IAAIf,EAAEtB,EAAEuB,EAAEkL,OAAO,GAAGlL,EAAE4K,OAAOO,iBAAiBpL,GAAE,IAAKe,EAAEsK,KAAKpL,EAAEqK,SAAS,OAAO5J,OAAO8E,eAAe9G,EAAEoC,UAAU,QAAQ,CAACwK,IAAI,WAAW,OAAOxL,KAAK+K,QAAQU,IAAI,SAAS7M,GAAG,IAAIqC,EAAEjB,KAAKA,KAAK+K,OAAOhK,OAAO,EAAEnC,EAAEiE,QAAQ,SAASjE,GAAGqC,EAAE8J,OAAOQ,KAAKzC,QAAQ4C,OAAO,IAAIhM,EAAEsL,OAAOW,UAAU1K,EAAE8J,QAAQnM,OAAO2H,YAAW,EAAGC,cAAa,IAAK5H,EAAEoC,UAAU4K,aAAa,WAAW,IAAIlM,EAAEM,KAAK6L,MAAMzG,MAAM0G,QAAQ9L,KAAK6L,OAAO7L,KAAK6L,MAAM,CAAC7L,KAAK6L,OAAO,GAAG7L,KAAK+K,OAAOgB,eAAerM,IAAId,EAAEoC,UAAUgL,OAAO,SAAStM,GAAGM,KAAK+K,OAAOiB,OAAOtM,EAAEM,KAAK8K,gBAAgBlM,EAAEoC,UAAUiG,IAAI,SAASvH,GAAGM,KAAK+K,OAAOkB,OAAOvM,EAAEM,KAAK8K,gBAAgBlM,EAAEoC,UAAUkG,OAAO,SAASxH,GAAGM,KAAK+K,OAAOmB,SAASxM,IAAId,EAAEoC,UAAUmK,OAAO,WAAWnL,KAAK4K,aAAauB,OAAOnM,KAAKqL,KAAKrL,KAAKwK,QAAQ5L,EAAE8J,QAAQ,CAAC,aAAa,iBAAiB,QAAQ9J,EAA3mC,GAAgnCkK,QAAQlJ,OAAO,aAAauJ,WAAW,mBAAmBvK,GAA5rC,CAAgsCc,EAAE6K,SAAS7K,EAAE6K,OAAO,KAAjuC,CAAuuCtC,KAAKA,GAAG,KAAK,SAASvI,IAAI,SAASA,GAAG,IAAId,EAAE,WAAW,SAASA,EAAEA,EAAEsB,EAAEC,EAAEiB,EAAEnB,EAAEiB,EAAEV,GAAG,IAAIW,EAAEnB,KAAKA,KAAKoM,WAAWlM,EAAEF,KAAKqM,UAAUlM,EAAEH,KAAKsM,MAAMlL,EAAEpB,KAAKuM,GAAGtM,EAAED,KAAK6K,KAAK3J,EAAElB,KAAKwM,UAAUhM,EAAER,KAAKyM,YAAY,GAAGzM,KAAK0M,YAAY,GAAG1M,KAAK2M,QAAQ,GAAG3M,KAAK4M,YAAW,EAAG5M,KAAK6M,kBAAkB,GAAG7M,KAAK8M,eAAe,KAAK9M,KAAK+M,iBAAiB,GAAGnO,EAAEoO,IAAI,mBAAmBpO,EAAEoO,IAAI,wBAAwBhN,KAAKiN,gBAAgBrO,EAAE4M,IAAI,kBAAkBxL,KAAKkN,qBAAqBtO,EAAE4M,IAAI,wBAAwBtK,EAAE+H,MAAM,sGAAsG/I,EAAEuK,IAAI,yBAAyB,SAAS7L,EAAEwC,EAAEnB,GAAG,GAAGkB,EAAEyL,WAAW,CAAC1M,EAAEiN,MAAM,oBAAoB,IAAI3M,EAAEI,OAAOwM,KAAKjM,EAAEsL,aAAajM,EAAE6M,QAAQlM,EAAE0L,mBAAmB5L,EAAEsC,MAAM,KAAK/C,GAAG,IAAIW,EAAE2L,eAAe,CAAC,IAAI/I,EAAE+E,QAAQwE,KAAKnN,EAAEoK,UAAUxG,EAAEwJ,aAAaxJ,EAAEwJ,KAAKzE,QAAQjG,QAAQkB,EAAE,SAASnF,EAAEqC,GAAGA,IAAIvB,EAAEgK,mBAAmB3F,EAAE9C,GAAGrC,EAAE4O,MAAM9N,EAAE6J,iBAAiB,IAAI9I,EAAE,GAAGP,EAAEiN,MAAM,eAAepJ,EAAEtD,GAAGA,EAAEoC,QAAQ,SAASnD,GAAGyB,EAAEsM,aAAa/N,KAAKyB,EAAEyL,YAAYzL,EAAE0L,kBAAkBhK,QAAQ,SAASnD,GAAGyB,EAAE+L,qBAAqBxN,GAAGgO,cAAcvM,EAAEsM,aAAa/N,KAAKyB,EAAE2L,gBAAgB3L,EAAE2L,eAAe/L,SAASG,EAAEyM,MAAM,iBAAiBxM,EAAE2L,gBAAgB3L,EAAE2L,eAAejK,QAAQ,SAASnD,GAAGyB,EAAEyM,aAAalO,KAAKyB,EAAE2L,eAAe,MAAM3L,EAAEyL,YAAW,IAAK,OAAOhO,EAAEoC,UAAUoK,eAAe,SAASxM,EAAEqC,EAAEf,GAAGtB,EAAEA,GAAGc,EAAE+J,aAAa,IAAItJ,EAAEH,KAAKyM,YAAY7N,GAAGoB,KAAKyM,YAAY7N,IAAI,GAAGqC,GAAGf,IAAIkF,MAAM0G,QAAQ5L,GAAGA,EAAEa,SAASZ,EAAEc,GAAGf,GAAGC,EAAEc,GAAGf,IAAItB,EAAEoC,UAAU6M,QAAQ,SAASjP,EAAEqC,GAAGA,EAAEA,GAAGvB,EAAE+J,aAAazJ,KAAK8N,UAAU7M,KAAKrC,IAAIoB,KAAKqM,UAAU9B,OAAO7K,EAAEiK,iBAAiB/K,EAAE,EAAEA,EAAE,MAAMoB,KAAKyN,aAAaxM,KAAKrC,EAAEoC,UAAU+M,UAAU,SAASnP,GAAG,IAAI,IAAIqC,EAAE,GAAGf,EAAE,EAAEA,EAAEY,UAAUC,OAAOb,IAAIe,EAAEf,EAAE,GAAGY,UAAUZ,GAAGtB,EAAEA,GAAGc,EAAE+J,aAAa,IAAItJ,EAAEH,KAAKgO,UAAUpP,GAAG,IAAIkK,QAAQmF,OAAO9N,EAAEc,GAAG,CAAC,IAAIG,EAAE,KAAKH,GAAGA,EAAEF,SAASK,EAAEH,EAAEiN,OAAO,SAASxO,EAAEd,GAAG,OAAOA,IAAIA,EAAEA,EAAEuP,SAASzO,EAAE6L,KAAK3M,GAAGc,GAAG,IAAI0O,KAAK1O,EAAE8J,gBAAgB,IAAIxJ,KAAK8N,UAAUlP,IAAIoB,KAAKqM,UAAU9B,OAAO7K,EAAEiK,iBAAiB,MAAM3J,KAAKqM,UAAU9B,OAAO7K,EAAEkK,iBAAiBxI,GAAG,MAAMpB,KAAKyN,aAAa7O,KAAKA,EAAEoC,UAAU0J,mBAAmB,SAAS9L,EAAEsB,GAAG,IAAIC,GAAE,EAAGvB,EAAEA,GAAGc,EAAE+J,aAAa,IAAIrI,EAAEpB,KAAK+M,iBAAiBnO,GAAGoB,KAAK+M,iBAAiBnO,IAAI,GAAGkK,QAAQjG,QAAQ3C,EAAE,SAASR,EAAEd,GAAG,IAAI,IAAIqC,EAAEG,EAAExC,GAAGwC,EAAExC,IAAI,GAAGsB,EAAE,EAAEA,EAAER,EAAEqB,OAAOb,IAAIR,EAAEQ,KAAKe,EAAEsK,KAAK7L,EAAEQ,IAAIC,GAAE,KAAMA,GAAGc,EAAEjB,KAAK6M,kBAAkBjO,IAAIA,EAAEoC,UAAUmL,OAAO,SAASvN,EAAEqC,EAAEf,QAAG,IAASA,IAAIA,GAAE,GAAIe,EAAEA,GAAGvB,EAAE+J,aAAa,IAAItJ,EAAEH,KAAKyM,YAAYxL,GAAG,GAAGd,EAAE,CAAC,IAAIiB,EAAE,KAAKxC,IAAIc,EAAEgK,iBAAiBvJ,EAAEkO,MAAMlO,EAAEkO,KAAKA,OAAOjN,EAAEjB,EAAEkO,KAAKA,MAAMjN,EAAEjB,EAAEvB,GAAGoB,KAAKsO,UAAUlN,EAAExC,GAAG,IAAIoB,KAAK8N,UAAU7M,IAAIjB,KAAKqM,UAAU9B,OAAO7K,EAAEiK,iBAAiB,MAAMzJ,GAAGF,KAAKyN,aAAaxM,GAAGjB,KAAKoM,WAAWe,MAAM,kBAAkBlM,EAAErC,EAAEwC,GAAGpB,KAAK6K,KAAK8C,MAAM,iBAAiB1M,EAAErC,EAAEwC,KAAKxC,EAAEoC,UAAUsN,UAAU,SAAS1P,EAAEqC,GAAG,IAAIf,EAAEtB,EAAE,iBAAiBA,EAAEsB,EAAEtB,EAAEA,EAAEmC,SAASb,EAAEtB,EAAEsP,OAAO,SAASxO,EAAEd,GAAG,OAAOA,EAAE2P,UAAU7O,EAAE6L,KAAK3M,EAAEyM,MAAM3L,GAAG,IAAI0O,KAAK1O,EAAE6J,eAAerJ,EAAE,KAAKA,IAAIA,EAAE,MAAMF,KAAKqM,UAAUmC,QAAQxO,KAAKqM,UAAUmC,KAAK,KAAKxO,KAAKqM,UAAU9B,OAAOtJ,EAAEf,IAAItB,EAAEoC,UAAU4M,aAAa,SAAShP,GAAG,IAAIqC,EAAEjB,KAAKE,EAAE,CAACuO,QAAQ,GAAGC,MAAM9P,GAAG,GAAGoB,KAAKiN,iBAAiBjN,KAAKkN,qBAAqB,CAAC,IAAI/M,GAAE,EAAGiB,GAAE,EAAGnB,EAAED,KAAKkN,qBAAqBtO,GAAG,GAAGqB,EAAE0O,UAAU,CAACzO,EAAE0O,aAAa3O,EAAE4O,aAAa3O,EAAE4O,SAAS7O,EAAE8O,SAAS7O,EAAE8O,aAAa/O,EAAEgP,aAAa/O,EAAEgP,kBAAkBjP,EAAEkP,kBAAkB,IAAIjO,EAAElB,KAAK+M,iBAAiBnO,IAAI,GAAGkK,QAAQjG,QAAQ3B,EAAE,SAASxB,EAAEd,GAAG,IAAIqC,EAAEf,EAAEuO,QAAQ7P,GAAG,GAAG,GAAGA,GAAGc,EAAE,IAAI,IAAIS,EAAE,EAAEA,EAAET,EAAEqB,OAAOZ,IAAIT,EAAES,KAAKc,EAAEsK,KAAK7L,EAAES,IAAIiB,GAAE,KAAM,IAAIZ,EAAER,KAAKyM,YAAY7N,GAAG,GAAGkK,QAAQjG,QAAQrC,EAAE,SAAS5B,EAAEqC,GAAG,GAAGA,IAAIvB,EAAEgK,iBAAiB,CAAC,IAAItI,EAAExC,EAAEwC,GAAGA,EAAEiN,OAAOnO,EAAEkP,KAAKhO,EAAEiN,WAAWzP,EAAEiE,QAAQ,SAASnD,GAAGA,EAAE6O,YAAYrO,EAAEuO,QAAQxN,GAAGf,EAAEuO,QAAQxN,IAAI,IAAIsK,KAAK7L,EAAEU,IAAID,GAAE,OAASA,GAAGiB,UAAUlB,EAAEuO,QAAQxO,EAAEoP,kBAAkBnP,EAAEkP,MAAMjP,EAAE,CAACH,KAAK0M,YAAY9N,IAAG,EAAG,IAAIuC,EAAE,GAAG4C,EAAE/D,KAAK8N,UAAUlP,GAAG6B,EAAET,KAAKgO,UAAUpP,GAAGsB,EAAEoP,KAAKpP,EAAE0O,cAAc7K,EAAE,GAAGtD,GAAGA,EAAEM,SAASb,EAAEqP,OAAO9O,GAAG,IAAIc,EAAEvB,KAAKwP,gBAAgBtP,EAAED,EAAE0O,WAAW,GAAG5K,EAAE,GAAG/D,KAAK4M,YAAY3M,EAAEwP,mBAAmB,KAAK1L,EAAE,GAAGA,KAAK7D,EAAE4I,QAAQwE,KAAKpN,IAAIoP,KAAKpP,EAAE0O,cAAc7K,EAAE,GAAG5C,EAAEoK,KAAKvL,KAAKwP,gBAAgBtP,EAAED,EAAE0O,YAAYxN,EAAEoK,KAAKhK,GAAGvB,KAAKuM,GAAGhK,IAAIpB,GAAGuO,KAAK,SAAShQ,GAAG,IAAIQ,EAAER,EAAEsI,IAAI,SAAStI,GAAG,OAAOA,EAAEiQ,OAAOxP,EAAE,IAAID,EAAEa,OAAOb,EAAE,GAAGA,EAAEe,EAAE0L,QAAQ/N,GAAGsB,EAAEA,EAAEa,OAAO,GAAGE,EAAEmL,WAAWe,MAAM,mBAAmBhN,EAAEvB,GAAGqC,EAAE4J,KAAK8C,MAAM,2BAA2B/O,EAAE,YAAYuB,IAAI,SAAST,GAAGuB,EAAE4J,KAAK5B,MAAM,qCAAqCrK,EAAE,gBAAgBc,KAAKkQ,QAAQ,WAAW3O,EAAEyL,YAAY9N,IAAG,SAAUoB,KAAK2M,QAAQ/N,GAAG,KAAKoB,KAAKoM,WAAWe,MAAM,mBAAmB,KAAKvO,GAAGoB,KAAK6K,KAAK8C,MAAM,4BAA4B/O,QAAQoB,KAAK6K,KAAK5B,MAAM,iCAAiCrK,EAAE,WAAWA,EAAE,IAAI,mBAAmBA,EAAEoC,UAAU8M,UAAU,SAASlP,GAAG,IAAIqC,EAAEf,EAAEF,KAAKqM,UAAU9B,SAAS,GAAGtJ,EAAEjB,KAAK6M,kBAAkB9L,OAAO,EAAEb,GAAGtB,GAAGc,EAAE+J,cAAc/J,EAAE6J,aAAa7J,EAAEiK,kBAAkBzJ,EAAER,EAAEiK,kBAAkB,CAAC,IAAIxJ,EAAE0E,SAAS5D,EAAE,IAAI,GAAGd,EAAE,EAAE,OAAOA,EAAE,OAAO,GAAGvB,EAAEoC,UAAUgN,UAAU,SAASpP,GAAG,IAAIqC,EAAEf,EAAEF,KAAKqM,UAAU9B,SAAS,OAAOtJ,EAAEjB,KAAK6M,kBAAkB9L,OAAO,EAAEb,GAAGtB,GAAGc,EAAE+J,cAAc/J,EAAE6J,aAAa7J,EAAEkK,kBAAkB1J,EAAER,EAAEkK,mBAAmB3I,EAAEuM,MAAM9N,EAAE8J,eAAe0E,OAAO,SAASxO,EAAEd,GAAG,OAAOA,IAAIA,EAAEA,EAAEuP,SAASzO,EAAE6L,KAAK3M,GAAGc,GAAG,IAAI,IAAId,EAAEoC,UAAUwO,gBAAgB,SAAS9P,EAAEd,GAAG,IAAIqC,EAAE,GAAGf,EAAEF,KAAKwM,UAAU,GAAGxG,gBAAgB6J,KAAK,OAAO3P,IAAIe,EAAE6O,QAAQ,CAACC,kBAAkB7P,IAAIF,KAAKiN,gBAAgB+C,SAAStQ,EAAEuQ,OAAOjQ,KAAKiN,gBAAgB+C,QAAQhQ,KAAKsM,MAAM4D,KAAKlQ,KAAKiN,gBAAgBkD,SAAS,IAAIvR,EAAEc,EAAEuB,IAAIrC,EAAEoC,UAAUyM,aAAa,SAAS7O,GAAGoB,KAAK8M,iBAAiB9M,KAAK8M,eAAe,IAAI7L,EAAEjB,KAAK8M,eAAelO,GAAGc,EAAE+J,eAAe7K,EAAE8J,QAAQ,CAAC,YAAY,aAAa,YAAY,QAAQ,KAAK,OAAO,aAAa9J,EAAp5K,GAAy5K,SAASqC,EAAEvB,GAAG,IAAI,IAAId,EAAE,GAAGqC,EAAE,EAAEA,EAAEH,UAAUC,OAAOE,IAAIrC,EAAEqC,EAAE,GAAGH,UAAUG,GAAGrC,GAAGA,EAAEmC,QAAQnC,EAAEiE,QAAQ,SAASjE,IAAI,IAAIc,EAAEwD,QAAQtE,IAAIc,EAAE6L,KAAK3M,KAAKkK,QAAQlJ,OAAO,aAAawQ,QAAQ,iBAAiBxR,GAA5mL,CAAgnLc,EAAE6K,SAAS7K,EAAE6K,OAAO,KAAjpL,CAAupLtC,KAAKA,GAAG,KAAK,SAASvI,IAAI,SAASA,IAAI,SAASA,GAAG,IAAId,EAAE,WAAW,SAASc,EAAEA,GAAGM,KAAKqQ,QAAQ3Q,EAAEM,KAAKsQ,WAAU,EAAG,OAAO1P,OAAO8E,eAAehG,EAAEsB,UAAU,WAAW,CAACwK,IAAI,WAAW,OAAOxL,KAAKsQ,WAAW7E,IAAI,SAAS/L,GAAGM,KAAKsQ,YAAY5Q,IAAIM,KAAKsQ,UAAU5Q,EAAEM,KAAKqQ,QAAQlF,WAAW5E,YAAW,EAAGC,cAAa,IAAK9G,EAAnQ,GAAwQA,EAAEiM,UAAU/M,EAAE,IAAIqC,EAAE,SAASvB,GAAG,SAASd,IAAIc,EAAE6D,MAAMvD,KAAKc,WAAWd,KAAKuQ,UAAU,GAAGvQ,KAAKwQ,iBAAiB,KAAK,OAAOnH,UAAUzK,EAAEc,GAAGd,EAAEoC,UAAUyP,UAAU,SAAS/Q,GAAG,IAAI,IAAId,EAAE,EAAEA,EAAEoB,KAAKe,OAAOnC,IAAI,GAAGc,IAAIM,KAAKpB,GAAGwB,GAAG,OAAOxB,EAAE,OAAO,GAAGA,EAAEoC,UAAU0P,YAAY,SAAShR,GAAG,IAAI,IAAId,EAAE,EAAEA,EAAEoB,KAAKe,OAAOnC,IAAI,GAAGc,IAAIM,KAAKpB,GAAGyM,KAAK,OAAOzM,EAAE,OAAO,GAAGA,EAAEoC,UAAUkK,SAAS,SAASxL,GAAGM,KAAKuQ,UAAUhF,KAAK7L,IAAId,EAAEoC,UAAUmK,OAAO,WAAWnL,KAAKwQ,iBAAiBxQ,KAAKwQ,iBAAiBG,UAAS,EAAG3Q,KAAKuQ,UAAU1N,QAAQ,SAASnD,GAAGA,OAAOd,EAAEoC,UAAU4P,eAAe,SAASlR,GAAG,GAAGA,EAAE,CAAC,IAAId,EAAEoB,KAAKwQ,iBAAiBxQ,KAAKwQ,iBAAiB,CAACG,UAAS,GAAIjR,IAAI,IAAIuB,EAAEjB,KAAKwQ,iBAAiBG,SAAS,OAAO3Q,KAAKwQ,iBAAiB5R,EAAEqC,EAAE,OAAM,GAAIrC,EAAEoC,UAAU6P,cAAc,SAASnR,GAAG,IAAId,EAAEoB,UAAK,IAASN,IAAIA,GAAE,GAAI,IAAIuB,EAAEjB,KAAK4Q,eAAe,WAAWhS,EAAEiE,QAAQ,SAASnD,GAAGA,EAAE6O,UAAS,MAAO,OAAOtN,GAAGvB,GAAGM,KAAKmL,SAASlK,GAAGrC,EAAEoC,UAAU+K,eAAe,SAASrM,EAAEd,QAAG,IAASA,IAAIA,GAAE,GAAI,IAAIqC,EAAEjB,KAAK8Q,YAAYpR,EAAE,MAAM,OAAOuB,GAAGrC,GAAGoB,KAAKmL,SAASlK,GAAGrC,EAAEoC,UAAUsK,iBAAiB,SAAS5L,EAAEd,QAAG,IAASA,IAAIA,GAAE,GAAI,IAAIqC,EAAEjB,KAAK8Q,YAAYpR,EAAE,QAAQ,OAAOuB,GAAGrC,GAAGoB,KAAKmL,SAASlK,GAAGrC,EAAEoC,UAAU8P,YAAY,SAASpR,EAAEd,GAAG,IAAIqC,EAAEjB,KAAK,OAAOA,KAAK4Q,eAAe,WAAW3P,EAAE4B,QAAQ,SAAS5B,GAAGA,EAAEsN,WAAW7O,GAAGA,EAAEwD,QAAQjC,EAAErC,KAAK,OAAOA,EAAEoC,UAAU+P,SAAS,SAASrR,GAAG,IAAId,EAAEqC,EAAE,KAAK,YAAO,IAASvB,IAAIM,KAAKkD,QAAQxD,IAAI,EAAEuB,EAAEvB,EAAE,iBAAiBA,EAAEuB,EAAEjB,KAAKN,GAAGA,EAAEU,KAAKxB,EAAEoB,KAAKyQ,UAAU/Q,EAAEU,MAAM,EAAEa,EAAEjB,KAAKpB,GAAGc,EAAE2L,OAAOzM,EAAEoB,KAAK0Q,YAAYhR,EAAE2L,QAAQ,IAAIpK,EAAEjB,KAAKpB,KAAKqC,GAAGrC,EAAEoC,UAAUgL,OAAO,SAAStM,EAAEd,GAAG,IAAIqC,EAAEjB,KAAK+Q,SAASrR,GAAGuB,IAAIA,EAAEsN,SAAStN,EAAEsN,UAAS,GAAI3P,GAAGoB,KAAK6Q,eAAc,GAAI5P,EAAEsN,UAAS,KAAM3P,EAAEoC,UAAUiL,OAAO,SAASvM,EAAEd,GAAG,IAAIqC,EAAEjB,KAAK+Q,SAASrR,GAAGuB,IAAIA,EAAEsN,WAAW3P,GAAGoB,KAAK6Q,eAAc,GAAI5P,EAAEsN,UAAS,IAAK3P,EAAEoC,UAAUkL,SAAS,SAASxM,GAAG,IAAId,EAAEoB,KAAK+Q,SAASrR,GAAGd,GAAGA,EAAE2P,WAAW3P,EAAE2P,UAAS,IAAK3P,EAA7xD,CAAgyDwG,OAAO1F,EAAEuL,oBAAoBhK,EAA3mE,CAA8mEvB,EAAEsL,SAAStL,EAAEsL,OAAO,KAA/oE,CAAqpEtL,EAAE6K,SAAS7K,EAAE6K,OAAO,KAAtrE,CAA4rEtC,KAAKA,GAAG,KAAK,SAASvI,GAAG,IAAId,EAAEqC,EAAErC,EAAEc,EAAE6K,SAAS7K,EAAE6K,OAAO,IAAItJ,EAAE,WAAW,SAASvB,EAAEA,EAAEuB,GAAG,IAAIf,EAAEF,KAAKA,KAAKgR,eAAe/P,EAAEjB,KAAKwK,MAAM5L,EAAE6K,aAAa/J,EAAE+K,IAAI,mBAAmB,SAAS/K,GAAGuB,EAAEmK,eAAelL,EAAEsK,MAAM5L,EAAE8K,iBAAiBxJ,KAAKR,EAAE+K,IAAI,eAAe,SAAS/K,EAAEd,EAAEqC,GAAGf,EAAE+Q,QAAQrS,EAAEyP,MAAMnO,EAAE2L,QAAQjN,EAAEyP,OAAOnO,EAAE+Q,MAAM/Q,EAAE2L,MAAMjN,EAAEyP,KAAKpN,EAAEsK,KAAKrL,EAAEsK,UAAU,OAAO5J,OAAO8E,eAAehG,EAAEsB,UAAU,OAAO,CAACwK,IAAI,WAAW,OAAOxL,KAAKiR,OAAOxF,IAAI,SAAS/L,GAAGM,KAAKiR,QAAQvR,IAAIM,KAAKiR,MAAMjR,KAAK6L,MAAMnM,EAAEM,KAAKgR,eAAe7E,OAAOvN,EAAE8K,iBAAiB1J,KAAKwK,SAASjE,YAAW,EAAGC,cAAa,IAAK9G,EAAEsB,UAAUmK,OAAO,WAAWnL,KAAKqO,KAAKrO,KAAK6L,OAAOnM,EAAEgJ,QAAQ,CAAC,aAAa,kBAAkBhJ,EAAtmB,GAA2mBoJ,QAAQlJ,OAAO,aAAauJ,WAAW,kBAAkBlI,GAAptB,CAAwtBgH,KAAKA,GAAG,KAAK,SAASvI,GAAG,IAAId,EAAEqC,EAAErC,EAAEc,EAAE6K,SAAS7K,EAAE6K,OAAO,IAAItJ,EAAE,WAAW,SAASvB,EAAEA,EAAEuB,GAAG,IAAIf,EAAEF,KAAKA,KAAK4K,aAAa3J,EAAEjB,KAAKwK,MAAM5L,EAAE6K,aAAazJ,KAAKkR,MAAM,GAAGxR,EAAE+K,IAAI,mBAAmB,SAAS/K,GAAGQ,EAAE0K,aAAaQ,eAAelL,EAAEsK,SAAS9K,EAAE+K,IAAI,eAAe,SAAS/K,EAAEuB,EAAEd,GAAG,IAAIiB,EAAElB,EAAE0K,aAAakD,UAAU5N,EAAEsK,OAAOtK,EAAEiR,aAAa/P,GAAE,IAAKjB,EAAEoL,KAAKrL,EAAEsK,OAAO,IAAIvK,EAAEC,EAAE0K,aAAaoD,UAAU9N,EAAEsK,OAAO4D,KAAKxP,EAAE4K,eAAevJ,GAAGC,EAAEkR,SAASnR,IAAIC,EAAEkR,OAAOnR,EAAEE,EAAEoL,KAAKrL,EAAEsK,UAAU9K,EAAE+K,IAAI,mBAAmB,SAAS/K,EAAEd,EAAEqC,GAAG,IAAI6H,QAAQuI,YAAYpQ,IAAIA,IAAIf,EAAEsK,MAAM,GAAGpF,MAAM0G,QAAQlN,GAAGA,EAAEmC,SAASb,EAAEyM,QAAQ/N,EAAEA,EAAEmC,OAAO,IAAIb,EAAEyM,QAAQ/N,EAAEsB,EAAEyM,QAAQ,CAACzM,EAAEgR,MAAMnQ,OAAOb,EAAEyM,QAAQ2E,MAAM,IAAI,IAAInR,EAAE,EAAEA,EAAED,EAAEyM,QAAQ2E,MAAMnR,IAAID,EAAEgR,MAAM/Q,GAAGD,EAAEgR,MAAM/Q,GAAGoR,SAASpR,IAAID,EAAEyM,QAAQ6E,KAAK,EAAEtR,EAAEgR,MAAM/Q,GAAG,CAACC,GAAGD,EAAE,EAAEoR,SAASpR,IAAID,EAAEyM,QAAQ6E,KAAK,QAAQtR,EAAEgR,MAAMnQ,OAAO,IAAI,OAAOH,OAAO8E,eAAehG,EAAEsB,UAAU,cAAc,CAACwK,IAAI,WAAW,OAAOxL,KAAK4K,aAAa8B,YAAY1M,KAAKwK,QAAQjE,YAAW,EAAGC,cAAa,IAAK9G,EAAEsB,UAAUyQ,WAAW,SAAS/R,EAAEd,GAAG,YAAO,IAASA,IAAIA,GAAE,GAAIoB,KAAKmR,aAAazR,EAAEU,GAAGxB,IAAIc,EAAEsB,UAAU0Q,gBAAgB,SAAShS,EAAEd,GAAG,IAAIqC,EAAE,YAAO,IAASrC,IAAIA,GAAE,MAAO,GAAGc,GAAGA,EAAEM,KAAKkR,MAAMnQ,SAASE,EAAEjB,KAAKkR,MAAMxR,MAAMM,KAAKmR,aAAalQ,EAAEb,GAAGxB,IAAIc,EAAEsB,UAAUmQ,aAAa,SAASzR,EAAEd,QAAG,IAASA,IAAIA,GAAE,GAAI,IAAIqC,GAAE,EAAG,OAAOjB,KAAKkR,MAAMrO,QAAQ,SAASjE,GAAGA,EAAEwB,KAAKV,EAAEd,EAAE2S,WAAW3S,EAAE2S,UAAS,EAAGtQ,GAAE,GAAIrC,EAAE2S,WAAW3S,EAAE2S,UAAS,EAAGtQ,GAAE,KAAMA,GAAGrC,GAAGoB,KAAK4K,aAAaiD,QAAQnO,EAAEM,KAAKwK,OAAOvJ,GAAGvB,EAAEsB,UAAU2Q,SAAS,WAAW,IAAI,IAAIjS,EAAE,EAAEd,EAAE,EAAEA,EAAEoB,KAAKkR,MAAMnQ,OAAOnC,IAAI,CAAC,IAAIqC,EAAEjB,KAAKkR,MAAMtS,GAAG,GAAGqC,EAAEsQ,SAAS,CAAC3S,EAAE,EAAEoB,KAAKkR,MAAMnQ,SAASE,EAAEsQ,UAAS,EAAGvR,KAAKkR,MAAMtS,EAAE,GAAG2S,UAAS,EAAG7R,EAAEM,KAAKkR,MAAMtS,EAAE,GAAGwB,IAAI,OAAO,OAAOV,EAAE,IAAIM,KAAK4K,aAAaiD,QAAQnO,EAAEM,KAAKwK,QAAO,IAAK9K,EAAEsB,UAAU4Q,SAAS,WAAW,IAAI,IAAIlS,EAAE,EAAEd,EAAE,EAAEA,EAAEoB,KAAKkR,MAAMnQ,OAAOnC,IAAI,CAAC,IAAIqC,EAAEjB,KAAKkR,MAAMtS,GAAG,GAAGqC,EAAEsQ,SAAS,CAAC3S,EAAE,IAAIqC,EAAEsQ,UAAS,EAAGvR,KAAKkR,MAAMtS,EAAE,GAAG2S,UAAS,EAAG7R,EAAEM,KAAKkR,MAAMtS,EAAE,GAAGwB,IAAI,OAAO,OAAOV,EAAE,IAAIM,KAAK4K,aAAaiD,QAAQnO,EAAEM,KAAKwK,QAAO,IAAK9K,EAAEsB,UAAU6Q,YAAY,WAAW,IAAInS,GAAGM,KAAKoR,QAAQ,IAAI5D,MAAM5O,EAAE4K,eAAe9J,EAAE2N,QAAQrN,KAAKwK,OAAOxK,KAAK4K,aAAamD,UAAUxK,MAAMvD,KAAK4K,aAAalL,IAAIA,EAAEgJ,QAAQ,CAAC,aAAa,kBAAkBhJ,EAAniE,GAAwiEoJ,QAAQlJ,OAAO,aAAauJ,WAAW,2BAA2BlI,GAA1pE,CAA8pEgH,KAAKA,GAAG,KACv6a,WAAW,SAASrJ,EAAEA,EAAEc,EAAES,GAAG,IAAIiB,EAAEpB,KAAKA,KAAK4K,aAAalL,EAAEM,KAAKwK,MAAMvC,GAAGsC,OAAOd,aAAazJ,KAAKkR,MAAM,GAAGtS,EAAE6L,IAAI,mBAAmB,SAAS7L,GAAGwC,EAAEwJ,aAAaQ,eAAehK,EAAEoJ,SAAS5L,EAAE6L,IAAI,eAAe,SAAS7L,EAAEc,EAAES,GAAG,IAAIc,EAAEG,EAAEwJ,aAAakD,UAAU1M,EAAEoJ,OAAOpJ,EAAE+P,aAAalQ,GAAE,IAAKd,EAAEoL,KAAKnK,EAAEoJ,SAAS5L,EAAE6L,IAAI,mBAAmB,SAAS/K,EAAES,EAAEc,GAAG,IAAI6H,QAAQuI,YAAYpQ,IAAIA,IAAIG,EAAEoJ,MAAM,CAAC,GAAGpF,MAAM0G,QAAQ3L,GAAGA,EAAEY,SAASf,KAAK2M,QAAQxM,EAAEA,EAAEY,OAAO,IAAIK,EAAEuL,QAAQxM,EAAEiB,EAAEuL,QAAQ,CAACvL,EAAE8P,MAAMnQ,OAAOK,EAAEuL,QAAQ2E,MAAM,IAAI,IAAIpQ,EAAE,EAAEA,EAAEE,EAAEuL,QAAQ2E,MAAMpQ,IAAIE,EAAE8P,MAAMhQ,GAAGE,EAAE8P,MAAMhQ,GAAGqQ,SAASrQ,IAAIE,EAAEuL,QAAQ6E,KAAK,EAAEpQ,EAAE8P,MAAMhQ,GAAG,CAACd,GAAGc,EAAE,EAAEqQ,SAASrQ,IAAIE,EAAEuL,QAAQ6E,KAAK,QAAQpQ,EAAE8P,MAAMnQ,OAAO,EAAEnC,EAAEkT,OAAO,WAAWC,EAAE,gBAAgBhR,OAAO,GAAGgR,EAAE,gBAAgBC,KAAK,WAAWD,EAAE/R,MAAMiS,cAAc,CAACC,UAAU,IAAIvJ,KAAK,SAASwJ,WAAU,EAAGC,iBAAgB,WAAYtJ,QAAQlJ,OAAO,MAAMuJ,WAAW,mCAAmCvK,GAAGA,EAAE8J,QAAQ,CAAC,aAAa,iBAAiB,aAAa9H,OAAO8E,eAAe9G,EAAEoC,UAAU,cAAc,CAACwK,IAAI,WAAW,OAAOxL,KAAK4K,aAAa8B,YAAY1M,KAAKwK,QAAQjE,YAAW,EAAGC,cAAa,IAAK5H,EAAEoC,UAAUyQ,WAAW,SAAS7S,GAAG,OAAOmT,EAAE,cAAcM,QAAQ,CAACxK,UAAU,GAAG,KAAK7H,KAAKmR,aAAavS,EAAEwB,IAAG,IAAKxB,EAAEoC,UAAUmQ,aAAa,SAASvS,EAAEc,GAAG,IAAIS,GAAE,EAAG,OAAOH,KAAKkR,MAAMrO,QAAQ,SAASnD,GAAGA,EAAEU,KAAKxB,EAAEc,EAAE6R,WAAW7R,EAAE6R,UAAS,EAAGpR,GAAE,GAAIT,EAAE6R,WAAW7R,EAAE6R,UAAS,EAAGpR,GAAE,KAAMA,GAAGT,GAAGM,KAAK4K,aAAaiD,QAAQjP,EAAEoB,KAAKwK,OAAOrK,GAAGvB,EAAEoC,UAAU2Q,SAAS,WAAW,IAAI,IAAI/S,EAAE,EAAEc,EAAE,EAAEA,EAAEM,KAAKkR,MAAMnQ,OAAOrB,IAAI,CAAC,IAAIS,EAAEH,KAAKkR,MAAMxR,GAAG,GAAGS,EAAEoR,SAAS,CAAC7R,EAAE,EAAEM,KAAKkR,MAAMnQ,SAASZ,EAAEoR,UAAS,EAAGvR,KAAKkR,MAAMxR,EAAE,GAAG6R,UAAS,EAAG3S,EAAEoB,KAAKkR,MAAMxR,EAAE,GAAGU,IAAI,OAAO,OAAOxB,EAAE,IAAIoB,KAAK4K,aAAaiD,QAAQjP,EAAEoB,KAAKwK,OAAOuH,EAAE,cAAcM,QAAQ,CAACxK,UAAU,GAAG,MAAK,IAAKjJ,EAAEoC,UAAU4Q,SAAS,WAAW,IAAI,IAAIhT,EAAE,EAAEc,EAAE,EAAEA,EAAEM,KAAKkR,MAAMnQ,OAAOrB,IAAI,CAAC,IAAIS,EAAEH,KAAKkR,MAAMxR,GAAG,GAAGS,EAAEoR,SAAS,CAAC7R,EAAE,IAAIS,EAAEoR,UAAS,EAAGvR,KAAKkR,MAAMxR,EAAE,GAAG6R,UAAS,EAAG3S,EAAEoB,KAAKkR,MAAMxR,EAAE,GAAGU,IAAI,OAAO,OAAOxB,EAAE,IAAIoB,KAAK4K,aAAaiD,QAAQjP,EAAEoB,KAAKwK,OAAOuH,EAAE,cAAcM,QAAQ,CAACxK,UAAU,GAAG,MAAK,IAAKjJ,EAAEoC,UAAUsR,SAAS,SAAS1T,EAAEc,EAAES,GAAG,OAAOT,EAAE,GAA7gE,GACDoJ,QAAQlJ,OAAO,MAAMuJ,WAAW,uBAAuB,CAAC,SAAS,SAASjJ,GAAGA,EAAEqS,YAAY,EAAErS,EAAEsS,YAAY,GAAGtS,EAAEuS,SAAS,GAAGvS,EAAEmC,KAAK,SAASpC,GAAGC,EAAEsS,YAAYvS,GAAGC,EAAEwS,kBAAkB,SAASxS,GAAGyS,QAAQC,IAAI,mBAAmB1S,OAAO4I,QAAQlJ,OAAO,MAAMuJ,WAAW,kBAAkB,CAAC,SAAS,SAASjJ,GAAGA,EAAEwS,kBAAkB,SAASxS,GAAGyS,QAAQC,IAAI,iBAAiB1S,OAC1W,WAAW,IAAItB,EAAE,YAAYkK,QAAQlJ,OAAO,MAAMsJ,UAAU,cAAc,CAAC,WAAW,SAAS,oBAAoB,SAASxJ,EAAEO,EAAEE,GAAG,MAAM,CAAC0S,UAAS,EAAGC,cAAa,EAAGC,SAAS,IAAIC,QAAQ,SAAS9R,EAAED,GAAG0R,QAAQC,IAAI,oBAAoB,IAAIxR,EAAEH,EAAEgS,YAAY/S,EAAEkB,EAAE8R,MAAM,8FAA8FtP,EAAE,sEAAsE,GAAG,OAAO1D,EAAE,GAAGgT,MAAMtP,GAAG,KAAK,+DAA+D,IAAIpD,EAAEN,EAAE,GAAGoE,QAAQV,EAAE,IAAIzC,EAAElB,EAAEO,IAAI,SAAS5B,GAAGkK,QAAQjG,QAAQjE,EAAE,SAASA,GAAG,IAAIA,EAAEuU,UAAUrK,QAAQoB,QAAQtL,GAAGwU,KAAK,2BAA0B,KAA5G,CAAmHlS,GAAG,IAAIK,EAAEN,EAAEoS,cAAczU,EAAE,OAAOuB,EAAEmT,iBAAiB/R,GAAG,SAASL,EAAED,EAAEf,GAAG,IAAI0D,EAAE3D,EAAEC,EAAEmT,aAAJpT,CAAkBiB,IAAIhB,EAAEmT,cAAczU,EAAEuB,EAAEmT,iBAAiB1P,GAAG,IAAIpD,EAAE,SAASd,EAAEO,GAAG,IAAIE,IAAIT,EAAEwT,MAAM,sCAAsC,OAAOjT,IAAIrB,GAAGuB,EAAET,EAAEA,EAAE4E,QAAQ,oCAAoC,SAASrE,EAAE,KAA/I,CAAqJmB,EAAEwC,IAAI,SAAShF,EAAEc,EAAEO,GAAGrB,EAAE,GAAG6G,aAAa,uBAAuB7G,EAAE,GAAG6G,aAAa,4BAA4B/F,EAAE6T,KAAK,gBAAgBtT,GAAGrB,EAAE4U,GAAG5U,EAAEmC,OAAO,GAAGqS,KAAK,iBAAgB,IAAK1T,EAAE6T,KAAK,WAAWtT,GAA9L,CAAkMgB,EAAEf,EAAEM,GAAG,SAAS5B,GAAGkK,QAAQjG,QAAQjE,EAAE,SAASA,GAAG,IAAIA,EAAEuU,UAAUrK,QAAQoB,QAAQtL,GAAG6U,WAAW,6BAA6B7U,EAAE4U,GAAG,GAAGC,WAAW,sBAAsBA,WAAW,gBAAgBA,WAAW,2BAA2BA,WAAW,qBAAqB7U,EAAE4U,GAAG5U,EAAEmC,OAAO,GAAG0S,WAAW,oBAAoBA,WAAW,yBAA1T,CAAoVxS,GAAG,IAAIM,EAAE7B,EAAEuB,GAAGK,EAAE,SAAS1C,EAAEc,EAAES,GAAG,IAAIe,EAAE,GAAGxB,EAAE6S,YAAYrR,EAAEjB,EAAEP,EAAE6S,iBAAiB,CAAC,IAAItR,GAAGd,EAAE,iBAAiBmE,QAAQ,MAAM,KAAK1F,EAAEqC,GAAG,EAAEC,EAAEjB,EAAEgB,GAAG,OAAOC,EAAjI,CAAoIA,EAAEhB,EAAE0D,GAAGzD,EAAEuT,qBAAqB9P,EAAEtC,EAAEJ,QAAG,IAAShB,EAAEyT,YAAYxT,EAAEyT,iBAAiBhQ,GAAG1C,EAAE4Q,OAAO,WAAW,OAAO7R,EAAEC,EAAEyT,WAAJ1T,CAAgBiB,IAAI,SAAStC,GAAG,GAAGA,GAAGuB,EAAE0T,oBAAoBjQ,EAAEhF,OAAOuB,EAAE2T,kBAAkBlQ,GAAG1C,EAAE6S,iBAAiB,WAAW,OAAO5S,EAAED,IAAI,SAAStC,GAAG,GAAGA,EAAE,CAAC,IAAIc,EAAEd,aAAawG,MAAMxG,EAAEmC,OAAOH,OAAOwM,KAAKxO,GAAGmC,OAAOZ,EAAE0T,oBAAoBjQ,EAAElE,OAAO6B,EAAEL,SAASgI,UAAU,uBAAuB,WAAW,MAAM,CAAC6J,SAAS,IAAIF,UAAS,KAAM3J,UAAU,wBAAwB,CAAC,oBAAoB,qBAAqB,SAASxJ,EAAEO,GAAG,IAAIE,EAAE,QAAQe,EAAE,CAACgH,SAAS,KAAK8L,MAAM,CAACC,QAAQ,KAAKC,aAAa,KAAKb,aAAa,KAAKc,SAAS,MAAMhM,KAAK,SAASlI,EAAEiB,EAAED,GAAG,IAAIf,EAAEe,EAAEoS,cAAczU,EAAEgF,EAAE3D,EAAEoT,cAAcpS,EAAEoS,cAAczU,EAAE,IAAIc,EAAE0U,aAAaxQ,KAAKlE,EAAE0U,aAAalU,GAAG,CAAC,IAAIM,EAAEoD,IAAIhF,EAAE,SAASgF,EAAE,KAAK,IAAIpB,OAAOmQ,SAASA,QAAQ0B,KAAK,gDAAgD7T,EAAE,oGAAoGP,EAAEgU,UAAUhU,EAAEgU,QAAQ,GAAGhU,EAAEkU,cAAS,IAASlU,EAAEkU,UAAUlU,EAAEkU,SAASlU,EAAEqU,gBAAgBxL,QAAQyL,UAAUtT,EAAEqT,iBAAiBrU,EAAEuU,QAAQC,MAAMxT,EAAEqT,gBAAgBrU,EAAEyU,gBAAgB5L,QAAQyL,UAAUtT,EAAEyT,gBAAgBzU,EAAEuU,QAAQC,MAAMxT,EAAEyT,eAAe,IAAIvT,EAAE8D,KAAKC,IAAIjF,EAAEgU,QAAQ,GAAG,SAAS1S,EAAE3C,GAAG,GAAGc,EAAE0U,aAAaxQ,IAAIvC,EAAEzC,GAAG,CAAC,IAAIuB,EAAEF,EAAE0U,WAAWC,QAAQ3U,EAAEiR,MAAM9P,EAAExC,EAAEc,EAAEmV,oBAAoBjR,GAAGlE,EAAEoV,gBAAgBlR,GAAGzC,GAAGlB,EAAE0U,WAAWC,QAAQhW,EAAE6B,IAAIR,EAAEiU,cAAcjU,EAAEiU,aAAa,CAACa,cAAcnW,EAAEoW,cAAc7U,KAAK,SAASmB,IAAI,GAAG5B,EAAE0U,aAAaxQ,GAAG,CAAC,IAAIhF,EAAEiG,SAASnF,EAAEuV,eAAerR,KAAK,EAAE3D,EAAEiR,MAAM9P,EAAExC,EAAEc,EAAEmV,oBAAoBjR,GAAGlE,EAAEoV,gBAAgBlR,GAAGzC,GAAGlB,EAAE0U,WAAWC,QAAQhW,EAAEqB,EAAE0U,WAAWO,KAAKjV,EAAEiR,MAAMjR,EAAEiR,MAAMnQ,OAAO,GAAGd,EAAE0U,WAAWO,KAAKjV,EAAE0U,WAAWC,QAAQ3U,EAAEkV,WAAWlV,EAAE0U,WAAWO,MAAMzU,KAAK,SAASA,IAAI,GAAGf,EAAE0U,aAAaxQ,GAAG,CAAC,IAAIhF,EAAEc,EAAEuV,eAAerR,GAAGzD,EAAET,EAAEoV,gBAAgBlR,GAAG1C,EAAExB,EAAEmV,oBAAoBjR,GAAG3D,EAAEmV,MAAMC,OAAOzW,EAAE,GAAGuB,EAAE,EAAEF,EAAEmV,MAAME,MAAMrQ,KAAKE,IAAIvG,EAAEuB,EAAEe,GAAGjB,EAAEmV,MAAMG,MAAMrU,GAAG,SAASG,EAAEzC,GAAG,OAAOuB,EAAEoE,KAAK3F,IAAI,EAAEA,GAAGA,GAAGqB,EAAE0U,WAAWO,KAAKjV,EAAEiR,MAAM,GAAGjR,EAAE0U,WAAW,CAACO,KAAK,EAAEN,QAAQ,GAAG3U,EAAEmV,MAAM,CAACC,MAAM,EAAEC,MAAM,EAAEC,MAAM,GAAGtV,EAAE6R,OAAO,UAAU,SAASlT,GAAGA,IAAIuC,EAAE8D,KAAKC,IAAIjF,EAAEgU,QAAQ,GAAG3S,OAAOrB,EAAE6R,OAAO,WAAW,GAAGpS,EAAE0U,aAAaxQ,GAAG,OAAOlE,EAAEmV,oBAAoBjR,GAAG,GAAGlE,EAAEoV,gBAAgBlR,IAAI,SAAShF,GAAG,EAAEA,GAAG0C,MAAMrB,EAAE6R,OAAO,WAAW,GAAGpS,EAAE0U,aAAaxQ,GAAG,OAAOlE,EAAEoV,gBAAgBlR,IAAI,SAAShF,EAAEc,GAAGd,GAAGc,QAAG,IAASA,GAAG6B,EAAEtB,EAAE0U,WAAWC,WAAW3U,EAAE6R,OAAO,WAAW,GAAGpS,EAAE0U,aAAaxQ,GAAG,OAAOlE,EAAEuV,eAAerR,IAAI,SAAShF,EAAEc,GAAGd,GAAGc,GAAG6B,EAAE3C,KAAKqB,EAAEkV,WAAW,SAASvW,GAAGc,EAAE0U,aAAaxQ,IAAIvC,EAAEzC,KAAKA,EAAEiG,SAASjG,EAAE,IAAIc,EAAE8V,eAAe5R,EAAEhF,KAAKqB,EAAEwV,QAAQ,SAAS7W,EAAEc,GAAG,OAAOd,EAAE,IAAIc,KAAKuB,EAAEhB,EAAEyV,YAAmG,YAAvF,IAASzU,EAAEC,EAAEyU,SAAS1U,EAAEC,EAAE0U,YAAY,SAAShX,EAAEc,GAAG,OAAOA,EAAEkW,aAAa3V,EAAE4V,WAAkB3U,EAAE,SAASE,EAAExC,EAAEc,EAAEO,EAAEE,GAAG,IAAIe,EAAED,EAAE,GAAGG,EAAE6D,KAAK6Q,KAAKpW,EAAEO,GAAG2D,EAAEqB,KAAK6Q,KAAK3V,EAAE,GAAGe,EAAEtC,GAAGgF,EAAE,QAAQxC,EAAEwC,EAAEhF,EAAE,MAAM,SAAS,IAAI,IAAI4B,EAAEL,EAAEiB,EAAED,EAAE,EAAEA,GAAGC,GAAGD,GAAGhB,GAAG,CAAC,IAAIoB,EAAErB,EAAEiB,EAAEvC,EAAEuB,EAAEiB,GAA6EZ,IAAxE,IAAIW,IAAI,WAAWD,GAAG,QAAQA,IAAKC,IAAIhB,EAAE,IAAI,WAAWe,GAAG,UAAUA,IAAaD,EAAEsK,KAAK,OAAOtK,EAAEsK,KAAKhK,GAAGJ,IAAI,OAAOF,EAAE,SAASf,EAAEtB,EAAEc,EAAEO,EAAEE,GAAG,IAAIe,EAAE+D,KAAK6Q,KAAK7V,EAAE,GAAG,OAAOrB,IAAIqB,EAAEE,EAAE,IAAIvB,EAAEA,EAAEqB,EAAEE,EAAEA,EAAEe,EAAExB,EAAES,EAAEF,EAAErB,EAAEsC,EAAExB,EAAEA,EAAEwB,EAAEtC,EAAEA,EAAEA,MAAM4G,OAAO,eAAe,CAAC,oBAAoB,SAAS9F,GAAG,OAAO,SAASO,EAAEE,EAAEe,GAAG,QAAG,IAASA,IAAIA,EAAEtC,IAAIc,EAAE0U,aAAalT,GAAG,KAAK,2DAA2DA,EAAE,+CAA+C,IAAID,EAAEG,EAAE,GAAG0H,QAAQiN,SAAS9V,GAAG,CAAC,GAAGE,EAAE0E,SAAS1E,IAAI,WAA0Dc,GAA/CG,EAAE1B,EAAEsW,YAAY9U,GAAG,GAAGxB,EAAEuV,eAAe/T,GAAG,GAAGf,GAAMA,EAAET,EAAEuW,gBAAgB/U,EAAEf,GAAGF,aAAamF,MAAM,OAAOnF,EAAEuE,MAAMpD,EAAEH,GAAG,IAAIf,EAAE,GAAG,OAAO4I,QAAQjG,QAAQ,SAASjE,GAAG,GAAGgC,OAAOwM,KAAK,OAAOxM,OAAOwM,KAAKxO,GAAG,IAAIc,EAAE,GAAG,IAAI,IAAIO,KAAKrB,EAAEA,EAAEC,eAAeoB,IAAIP,EAAE6L,KAAKtL,GAAG,OAAOP,EAA/G,CAAkHO,GAAGuE,MAAMpD,EAAEH,GAAG,SAASrC,GAAGsB,EAAEtB,GAAGqB,EAAErB,KAAKsB,EAAE,OAAOD,MAAMmQ,QAAQ,oBAAoB,WAAW,IAAIxR,EAAEc,EAAE,GAAGM,KAAKsT,iBAAiB,SAASrT,QAAG,IAASP,EAAEO,KAAKP,EAAEO,GAAG,CAACiW,WAAU,GAAItX,EAAEqB,IAAID,KAAKmW,mBAAmB,SAASvX,UAAUc,EAAEd,IAAIoB,KAAKoU,aAAa,SAASxV,GAAG,YAAO,IAASc,EAAEd,IAAIoB,KAAKoW,kBAAkB,WAAW,OAAOxX,GAAGoB,KAAK0T,qBAAqB,SAAS9U,EAAEqB,EAAEE,GAAGT,EAAEd,GAAGyX,kBAAkBpW,EAAEP,EAAEd,GAAG0X,QAAQnW,GAAGH,KAAKwV,eAAe,SAAS5W,EAAEqB,GAAGP,EAAEd,GAAGyX,kBAAkBxV,OAAOnB,EAAEd,GAAG0X,QAAQrW,IAAID,KAAKiV,eAAe,SAASrW,GAAG,IAAIqB,EAAEP,EAAEd,GAAGyX,kBAAkB,OAAOpW,EAAEA,EAAEP,EAAEd,GAAG0X,SAAS,GAAGtW,KAAKiW,gBAAgB,SAASrX,EAAEqB,GAAGP,EAAEd,GAAGiQ,aAAa5O,GAAGD,KAAK8U,gBAAgB,SAASlW,GAAG,OAAOc,EAAEd,GAAGiQ,cAAc7O,KAAK6T,oBAAoB,SAASjV,EAAEqB,GAAGP,EAAEd,GAAG2X,iBAAiBtW,GAAGD,KAAK6U,oBAAoB,SAASjW,GAAG,OAAOc,EAAEd,GAAG2X,kBAAkBvW,KAAK4T,iBAAiB,SAAShV,GAAGc,EAAEd,GAAGsX,WAAU,GAAIlW,KAAK8T,kBAAkB,SAASlV,GAAGc,EAAEd,GAAGsX,WAAU,GAAIlW,KAAKgW,YAAY,SAASpX,GAAG,OAAOc,EAAEd,GAAGsX,aAAaM,SAAS,qBAAqB,WAAW,IAAI5X,EAAEc,EAAE,iDAAiDM,KAAKyW,QAAQ,SAAS7X,GAAGc,EAAEd,GAAGoB,KAAK0W,UAAU,SAAShX,GAAGd,EAAEc,GAAGM,KAAK2W,KAAK,WAAW,MAAM,CAACd,QAAQ,WAAW,OAAOnW,GAAGgW,UAAU,WAAW,OAAO9W,OAAOgY,IAAI,CAAC,iBAAiB,SAAShY,GAAGA,EAAEiY,IAAI,iDAAiD,o7BAA39M,GACD/N,QAAQlJ,OAAO,MAAMsJ,UAAU,kBAAkB,WAAW,MAAM,CAAC4N,QAAQ,UAAU3O,KAAK,SAASlI,EAAEgB,EAAEvB,EAAEd,GAAGA,EAAEmY,SAASxL,KAAK,SAAStL,GAAG,OAAO,MAAMA,EAAE4E,SAAS5E,EAAE,IAAI,OAAOrB,EAAEoY,YAAYzL,KAAK,SAAStL,GAAG,OAAO,MAAMA,EAAE,GAAGA,EAAE,WAAW6I,QAAQlJ,OAAO,MAAMqX,QAAQ,qBAAqB,WAAW,MAAMhX,EAAE,SAASA,GAAG,OAAO,MAAMA,GAAG,KAAKA,GAAG,MAAM,CAACiX,WAAW,WAAW,OAAO,WAAW,IAAIjW,EAAE,GAAG,MAAM,CAACkW,MAAM,WAAWlW,EAAE,IAAIwK,IAAI,SAASxL,EAAEP,GAAGuB,EAAEhB,GAAGP,GAAGsN,IAAI,SAAStN,GAAG,GAAGA,EAAE,OAAOO,EAAEgB,EAAEvB,IAAI,CAAC,IAAIA,GAAE,EAAG,IAAI,IAAId,KAAKqC,EAAE,GAAGA,EAAEpC,eAAeD,KAAKqB,EAAEgB,EAAErC,IAAI,CAACc,GAAE,EAAG,MAAM,OAAOA,IAAI8L,IAAI,SAAS9L,GAAG,GAAGA,EAAE,OAAOuB,EAAEvB,GAAG,CAAC,IAAIA,EAAE,GAAG,IAAI,IAAId,KAAKqC,EAAEA,EAAEpC,eAAeD,KAAKqB,EAAEgB,EAAErC,KAAKc,EAAE6L,KAAKtK,EAAErC,KAAK,OAAOc,IAAI0X,KAAK,SAASnX,GAAG,GAAGA,EAAE,IAAI,IAAIP,EAAE,EAAEA,EAAEO,EAAEc,OAAOrB,IAAIuB,EAAEhB,EAAEP,GAAG2X,KAAKpX,EAAEP,GAAG4X,UAArX,OACvX,SAAS5X,GAAG,SAASd,EAAEqC,GAAG,GAAGhB,EAAEgB,GAAG,OAAOhB,EAAEgB,GAAGtB,QAAQ,IAAIQ,EAAEF,EAAEgB,GAAG,CAACd,EAAEc,EAAEM,GAAE,EAAG5B,QAAQ,IAAI,OAAOD,EAAEuB,GAAGX,KAAKH,EAAER,QAAQQ,EAAEA,EAAER,QAAQf,GAAGuB,EAAEoB,GAAE,EAAGpB,EAAER,QAAQ,IAAIM,EAAE,GAAGrB,EAAE2B,EAAEb,EAAEd,EAAE4B,EAAEP,EAAErB,EAAEuB,EAAE,SAAST,GAAG,OAAOA,GAAGd,EAAE0C,EAAE,SAAS5B,EAAEd,EAAEqB,GAAGW,OAAO8E,eAAehG,EAAEd,EAAE,CAAC4H,cAAa,EAAGD,YAAW,EAAGiF,IAAIvL,KAAKrB,EAAEqB,EAAE,SAASP,GAAG,IAAIO,EAAEP,GAAGA,EAAEgB,WAAW,WAAW,OAAOhB,EAAEiB,SAAS,WAAW,OAAOjB,GAAG,OAAOd,EAAE0C,EAAErB,EAAE,IAAIA,GAAGA,GAAGrB,EAAEsB,EAAE,SAASR,EAAEd,GAAG,OAAOgC,OAAOI,UAAUnC,eAAeyB,KAAKZ,EAAEd,IAAIA,EAAE6B,EAAE,GAAG7B,EAAEA,EAAEwC,EAAE,IAAvd,CAA4d,CAAC,SAAS1B,EAAEd,GAAG,aAAagC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1F,EAAE,WAAW,SAASP,KAAI,SAAUA,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,GAAGM,KAAKuX,SAAS,MAAMvX,KAAKwX,OAAO,MAAMxX,KAAKyX,UAAU,QAAQzX,KAAK0X,QAAQ,CAAC,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW1X,KAAK2X,QAAQ,CAAC,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW3X,KAAK4X,QAAQ,CAAC,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,OAAOlY,EAAEsB,UAAU6W,OAAO,SAASnY,EAAEd,EAAEqB,GAAG,IAAIgB,EAAE,GAAGhB,EAAEA,GAAG,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAET,EAAEqB,OAAOZ,IAAI,KAAKvB,EAAEuB,GAAGc,GAAGjB,KAAK0X,QAAQhY,EAAES,IAAI,KAAKvB,EAAEuB,GAAGc,GAAGjB,KAAK2X,QAAQjY,EAAES,IAAI,KAAKvB,EAAEuB,KAAKc,GAAGjB,KAAK4X,QAAQlY,EAAES,KAAKA,EAAET,EAAEqB,OAAO,IAAIE,GAAGhB,GAAG,OAAOgB,GAAGvB,EAA7uB,GAAkvBd,EAAE+B,QAAQV,GAAG,SAASP,EAAEd,GAAG,aAAa,SAASqB,EAAEP,EAAEd,GAAG,IAAI,IAAIqB,EAAE,EAAEA,EAAErB,EAAEqB,IAAIP,EAAE,IAAIA,EAAE,OAAOA,EAAEkB,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAE,WAAW,SAASvB,EAAEd,IAAG,SAAUc,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,GAAGM,KAAK8X,OAAOlZ,EAAE,OAAOc,EAAEsB,UAAU6W,OAAO,WAAW,IAAI,IAAInY,EAAE,MAAMd,EAAE,EAAEA,EAAEoB,KAAK8X,OAAO/W,OAAOnC,IAAI,CAAC,IAAIqC,EAAE4D,SAAS7E,KAAK8X,OAAOlZ,IAAIoG,SAAS,GAAG/D,EAAEhB,EAAEgB,EAAE,EAAEA,EAAEF,QAAQ,IAAI,IAAIZ,EAAE,EAAEA,EAAEc,EAAEF,OAAOZ,IAAIT,GAAG,KAAKuB,EAAEd,GAAG,MAAM,MAAM,MAAM,CAACwP,KAAKjQ,GAAG,OAAOqY,KAAK/X,KAAK8X,SAASpY,EAAEsB,UAAUgX,MAAM,WAAW,OAAO,IAAIhY,KAAK8X,OAAOvN,OAAO,aAAa7K,EAAnc,GAAwcd,EAAE+B,QAAQM,GAAG,SAASvB,EAAEd,GAAG,aAAagC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK/G,EAAE+B,QAAQ,SAASjB,EAAEd,GAAG,IAAIqB,EAAEgB,EAAE,GAAG,IAAIhB,KAAKP,EAAEA,EAAEb,eAAeoB,KAAKgB,EAAEhB,GAAGP,EAAEO,IAAI,IAAIA,KAAKrB,EAAEA,EAAEC,eAAeoB,SAAI,IAASrB,EAAEqB,KAAKgB,EAAEhB,GAAGrB,EAAEqB,IAAI,OAAOgB,IAAI,SAASvB,EAAEd,GAAG,aAAagC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1F,EAAE,WAAW,SAASP,EAAEd,IAAG,SAAUc,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,GAAGM,KAAKiY,MAAM,GAAG,IAAI,IAAIhY,EAAE,EAAEA,EAAErB,EAAEmC,SAASd,EAAED,KAAKiY,MAAM1M,KAAK3M,EAAEsZ,WAAWjY,IAAID,KAAK8X,OAAOlZ,EAAEuZ,UAAU,GAAGnY,KAAKoY,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,OAAO1Y,EAAEsB,UAAU6W,OAAO,WAAW,IAAInY,EAAEd,EAAEoB,KAAKiY,MAAMhY,EAAErB,EAAEyZ,QAAQ,IAAI,OAAO,MAAMpY,EAAEP,EAAEM,KAAKsY,MAAM1Z,EAAE,GAAG,MAAMqB,EAAEP,EAAEM,KAAKuY,MAAM3Z,EAAE,GAAG,MAAMqB,IAAIP,EAAEM,KAAKwY,MAAM5Z,EAAE,IAAI,CAACmZ,KAAK/X,KAAK8X,OAAOxT,QAAQ,gBAAgB,IAAIqL,KAAK3P,KAAKyY,YAAYxY,GAAGP,EAAEgZ,OAAO1Y,KAAKyY,aAAa/Y,EAAEiZ,SAAS1Y,GAAG,KAAKD,KAAKyY,YAAY,OAAO/Y,EAAEsB,UAAUyX,YAAY,SAAS/Y,GAAG,OAAOM,KAAKoY,UAAU1Y,IAAIM,KAAKoY,UAAU1Y,GAAG,KAAKsF,SAAS,GAAG,IAAItF,EAAEsB,UAAUgX,MAAM,WAAW,OAAO,IAAIhY,KAAK8X,OAAOvN,OAAO,4BAA4B7K,EAAEsB,UAAUsX,MAAM,SAAS5Y,EAAEd,GAAG,GAAGc,EAAEqB,QAAQ,EAAE,MAAM,CAAC2X,OAAO,GAAGC,SAAS,GAAG,IAAI1Y,EAAEgB,EAAE,GAAGvB,EAAE,IAAI,IAAIuB,EAAEvB,EAAE,GAAG,IAAIA,EAAE2Y,QAAQ,KAAKpX,EAAEhB,EAAED,KAAKwY,MAAM9Y,EAAEd,EAAE,GAAG,MAAMqC,EAAEhB,EAAED,KAAKuY,MAAM7Y,EAAEd,EAAE,GAAG,KAAKqC,GAAGvB,EAAE,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAGO,EAAED,KAAKsY,MAAM5Y,EAAEd,EAAE,IAAIqB,EAAED,KAAKsY,MAAM5Y,EAAEd,EAAE,OAAO,CAAC,IAAIuB,EAAET,EAAE,GAAGuB,EAAEd,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGT,EAAE2Y,QAAQpY,EAAED,KAAKsY,MAAM5Y,EAAEd,EAAE,GAAG,IAAIsB,EAAEe,EAAErC,EAAE,MAAM,CAAC8Z,OAAO1Y,KAAKyY,YAAYxX,GAAGhB,EAAEyY,OAAOC,SAASzY,EAAED,EAAE0Y,WAAWjZ,EAAEsB,UAAUuX,MAAM,SAAS7Y,EAAEd,GAAG,GAAGc,EAAEqB,QAAQ,EAAE,MAAM,CAAC2X,OAAO,GAAGC,SAAS,GAAG,IAAI1Y,EAAEgB,EAAEvB,EAAE,IAAI,KAAKuB,EAAEvB,EAAE,GAAG,IAAIA,EAAE2Y,QAAQ,KAAKpX,EAAEhB,EAAED,KAAKwY,MAAM9Y,EAAEd,EAAE,GAAG,MAAMqC,EAAEhB,EAAED,KAAKsY,MAAM5Y,EAAEd,EAAE,GAAG,KAAKqC,GAAGvB,EAAE,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAGO,EAAED,KAAKuY,MAAM7Y,EAAEd,EAAE,IAAIqB,EAAED,KAAKuY,MAAM7Y,EAAEd,EAAE,KAAKqC,EAAEvB,EAAE,GAAG,GAAGA,EAAE2Y,QAAQpY,EAAED,KAAKuY,MAAM7Y,EAAEd,EAAE,IAAI,IAAIuB,EAAEc,EAAErC,EAAE,MAAM,CAAC8Z,OAAO1Y,KAAKyY,YAAYxX,GAAGhB,EAAEyY,OAAOC,SAASxY,EAAEF,EAAE0Y,WAAWjZ,EAAEsB,UAAUwX,MAAM,SAAS9Y,EAAEd,GAAG,GAAGc,EAAEqB,QAAQ,EAAE,MAAM,CAAC2X,OAAO,GAAGC,SAAS,GAAG,IAAI1Y,EAAEgB,EAAEvB,EAAE,IAAI,KAAKuB,EAAEvB,EAAE,GAAG,IAAIA,EAAE2Y,QAAQpY,EAAE,MAAMgB,EAAEjB,KAAKuY,MAAM7Y,EAAEd,EAAE,GAAG,MAAMqC,EAAEjB,KAAKsY,MAAM5Y,EAAEd,EAAE,GAAGoB,KAAKwY,MAAM9Y,EAAEd,EAAE,KAAKqC,EAAE,IAAIvB,EAAE,GAAG,IAAIA,EAAE,GAAG,GAAGA,EAAE2Y,QAAQ3Y,EAAE2Y,QAAQpY,EAAED,KAAKwY,MAAM9Y,EAAEd,EAAE,IAAI,IAAIuB,EAAEc,EAAErC,EAAE,MAAM,CAAC8Z,OAAO1Y,KAAKyY,YAAYxX,GAAGhB,EAAEyY,OAAOC,SAASxY,EAAEF,EAAE0Y,WAAWjZ,EAApsE,GAAysEd,EAAE+B,QAAQV,GAAG,SAASP,EAAEd,GAAG,aAAagC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK/G,EAAEga,MAAM,SAASlZ,GAAG,IAAI,IAAId,EAAE,EAAEqB,EAAE,EAAEA,EAAEP,EAAEqB,OAAOd,IAAI,CAAC,IAAIgB,EAAE4D,SAASnF,EAAEO,IAAIrB,IAAIqB,EAAEP,EAAEqB,QAAQ,GAAG,EAAEE,EAAE,EAAEA,EAAE,GAAGgE,KAAK4T,MAAM,EAAE5X,EAAE,IAAI,OAAO,GAAGrC,EAAE,IAAI,IAAIA,EAAEka,MAAM,SAASpZ,GAAG,IAAI,IAAId,EAAE,EAAEqB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGgB,EAAE,EAAEA,EAAEvB,EAAEqB,OAAOE,IAAI,CAAC,IAAId,EAAE0E,SAASnF,EAAEA,EAAEqB,OAAO,EAAEE,IAAIrC,GAAGqB,EAAEgB,EAAEhB,EAAEc,QAAQZ,EAAE,OAAO,GAAGvB,EAAE,IAAI,KAAK,SAASc,EAAEd,GAAG,aAAagC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK/G,EAAE+B,QAAQ,CAACoY,MAAM,EAAEC,OAAO,IAAIC,OAAO,OAAOC,cAAa,EAAGC,YAAY,GAAGC,KAAK,YAAYC,UAAU,SAASC,aAAa,SAASC,WAAW,EAAEC,SAAS,GAAGC,WAAW,UAAUC,UAAU,UAAUC,OAAO,GAAGC,eAAU,EAAOC,kBAAa,EAAOC,gBAAW,EAAOC,iBAAY,EAAO/B,MAAM,eAAe,SAAStY,EAAEd,GAAG,aAAa,SAASqB,EAAEP,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,qCAAqC,SAAS5C,EAAEvB,EAAEd,GAAG,IAAIc,EAAE,MAAM,IAAIsa,eAAe,6DAA6D,OAAOpb,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAEc,EAAEd,EAAE,SAASuB,EAAET,EAAEd,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIiF,UAAU,kEAAkEjF,GAAGc,EAAEsB,UAAUJ,OAAO0I,OAAO1K,GAAGA,EAAEoC,UAAU,CAAC2D,YAAY,CAACgB,MAAMjG,EAAE6G,YAAW,EAAGE,UAAS,EAAGD,cAAa,KAAM5H,IAAIgC,OAAOqZ,eAAerZ,OAAOqZ,eAAeva,EAAEd,GAAGc,EAAEwa,UAAUtb,GAAGgC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAIzF,EAAE,SAASR,GAAG,SAASd,EAAEuB,EAAED,GAAGD,EAAED,KAAKpB,GAAG,IAAIwC,EAAEH,EAAEjB,KAAKN,EAAEY,KAAKN,OAAO,OAAOoB,EAAEiK,KAAK,wBAAwBjK,EAAE+Y,UAAUha,EAAEiB,EAAEgZ,MAAMla,EAAEkB,EAAEiZ,QAAQ,IAAIjZ,EAAEgZ,MAAM,8BAA8BhZ,EAAE+Y,UAAU/Y,EAAE,OAAOjB,EAAEvB,EAAEc,GAAGd,EAA/M,CAAkN0b,OAAOlZ,EAAE,SAAS1B,GAAG,SAASd,IAAIqB,EAAED,KAAKpB,GAAG,IAAIuB,EAAEc,EAAEjB,KAAKN,EAAEY,KAAKN,OAAO,OAAOG,EAAEkL,KAAK,0BAA0BlL,EAAEka,QAAQ,kCAAkCla,EAAE,OAAOA,EAAEvB,EAAEc,GAAGd,EAAlK,CAAqK0b,OAAOpZ,EAAE,SAASxB,GAAG,SAASd,IAAIqB,EAAED,KAAKpB,GAAG,IAAIuB,EAAEc,EAAEjB,KAAKN,EAAEY,KAAKN,OAAO,OAAOG,EAAEkL,KAAK,qBAAqBlL,EAAEka,QAAQ,2BAA2Bla,EAAE,OAAOA,EAAEvB,EAAEc,GAAGd,EAAtJ,CAAyJ0b,OAAO1b,EAAE2b,sBAAsBra,EAAEtB,EAAE4b,wBAAwBpZ,EAAExC,EAAE6b,mBAAmBvZ,GAAG,SAASxB,EAAEd,EAAEqB,GAAG,aAAa,SAASgB,EAAEvB,EAAEd,GAAG,OAAOA,EAAEoa,QAAQpa,EAAEsa,cAAcxZ,EAAEqY,KAAKhX,OAAO,EAAEnC,EAAE4a,SAAS5a,EAAE2a,WAAW,GAAG3a,EAAEgb,UAAUhb,EAAEib,aAAa,SAAS1Z,EAAET,EAAEd,EAAEqB,GAAG,GAAGA,EAAEiZ,cAActa,EAAEc,EAAE,CAAC,GAAG,UAAUO,EAAEoZ,UAAU,OAAOpU,KAAK4T,OAAOnZ,EAAEd,GAAG,GAAG,GAAG,QAAQqB,EAAEoZ,UAAU,OAAO,EAAE,GAAG,SAASpZ,EAAEoZ,UAAU,OAAOpU,KAAK4T,MAAMnZ,EAAEd,GAAG,OAAO,EAAE,SAASsB,EAAER,EAAEd,EAAEqB,GAAG,IAAIgB,EAAE,OAAOA,OAAE,IAAShB,EAAEqC,SAASoY,cAAc,UAAUC,WAAW,MAAM1a,GAAGmZ,KAAKxa,EAAEua,YAAY,IAAIva,EAAE4a,SAAS,MAAM5a,EAAEwa,KAAKnY,EAAE2Z,YAAYlb,GAAGqZ,MAAMnY,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK/G,EAAEic,yBAAyBjc,EAAEkc,4BAA4Blc,EAAEmc,kBAAkBnc,EAAEoc,kBAAkBpc,EAAEqc,iCAA4B,EAAO,IAAI7Z,EAAE,SAAS1B,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIrB,EAAEqc,4BAA4B,SAASvb,GAAG,IAAI,IAAId,EAAE,EAAEqB,EAAE,EAAEA,EAAEP,EAAEqB,OAAOd,IAAIP,EAAEO,GAAG+Y,OAAOpa,IAAIA,EAAEc,EAAEO,GAAG+Y,QAAQ,OAAOpa,GAAGA,EAAEoc,kBAAkB/Z,EAAErC,EAAEmc,kBAAkB5a,EAAEvB,EAAEkc,4BAA4B,SAASpb,EAAEd,EAAEqB,GAAG,IAAI,IAAIiB,EAAE,EAAEA,EAAExB,EAAEqB,OAAOG,IAAI,CAAC,IAAIC,EAAEzB,EAAEwB,GAAGV,GAAE,EAAGY,EAAET,SAAS/B,EAAEuC,EAAE+Z,SAAS7Z,EAAEnB,EAAEiB,EAAE4W,KAAKvX,EAAEP,GAAG8D,EAAE5C,EAAEwO,KAAK5O,OAAOP,EAAEuY,MAAM5X,EAAE4X,MAAM9T,KAAK6Q,KAAK7Q,KAAKC,IAAI7D,EAAE0C,IAAI5C,EAAE6X,OAAO/X,EAAEE,EAAEX,GAAGW,EAAEga,eAAehb,EAAEkB,EAAE0C,EAAEvD,KAAK5B,EAAEic,yBAAyB,SAASnb,GAAG,IAAI,IAAId,EAAE,EAAEqB,EAAE,EAAEA,EAAEP,EAAEqB,OAAOd,IAAIrB,GAAGc,EAAEO,GAAG8Y,MAAM,OAAOna,IAAI,SAASc,EAAEd,EAAEqB,GAAG,aAAaW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAEhB,EAAE,IAAIE,EAAEF,EAAE,IAAIC,EAAED,EAAE,IAAImB,EAAEnB,EAAE,IAAIiB,EAAEjB,EAAE,IAAIkB,EAAElB,EAAE,IAAIO,EAAEP,EAAE,IAAIoB,EAAEpB,EAAE,IAAIrB,EAAE+B,QAAQ,CAACya,OAAOna,EAAEma,OAAOC,QAAQlb,EAAEkb,QAAQC,SAASnb,EAAEmb,SAASC,SAASpb,EAAEob,SAASC,SAASrb,EAAEqb,SAASC,MAAMvb,EAAEub,MAAMC,KAAKxb,EAAEwb,KAAKC,KAAKzb,EAAEyb,KAAKC,KAAK1b,EAAE0b,KAAKC,IAAI3b,EAAE2b,IAAIC,MAAM1a,EAAE0a,MAAMC,IAAI7a,EAAE6a,IAAIC,IAAI7a,EAAE6a,IAAIC,MAAM9a,EAAE8a,MAAMC,MAAM/a,EAAE+a,MAAMC,QAAQhb,EAAEgb,QAAQC,QAAQjb,EAAEib,QAAQC,WAAW7b,EAAE6b,WAAWC,eAAejb,EAAEib,iBAAiB,SAAS5c,EAAEd,GAAG,aAAagC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1F,EAAE,WAAW,SAASP,EAAEd,IAAG,SAAUc,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,GAAGM,KAAKuc,IAAI3d,EAAE,OAAOc,EAAEsB,UAAUwb,YAAY,SAAS9c,GAAG,GAAG,0BAA0BA,EAAE2L,KAAK,MAAM3L,EAAE,GAAGM,KAAKuc,IAAIE,SAASzE,QAAQhY,KAAKuc,IAAIG,UAAU1E,MAAM,MAAMtY,EAAE2a,QAAQra,KAAKuc,IAAIE,SAASzE,OAAM,GAAIhY,KAAKuc,IAAII,OAAO,cAAcjd,EAAEsB,UAAU4b,gBAAgB,SAASld,GAAG,IAAI,IAAId,EAAEc,EAAE6D,WAAM,EAAOzC,WAAW,OAAOd,KAAKuc,IAAIE,SAASzE,OAAM,GAAIpZ,EAAE,MAAMc,GAAG,OAAOM,KAAKwc,YAAY9c,GAAGM,KAAKuc,MAAM7c,EAAlgB,GAAugBd,EAAE+B,QAAQV,GAAG,SAASP,EAAEd,GAAG,aAAagC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK/G,EAAE+B,QAAQ,SAASjB,GAAG,OAAOA,EAAEka,UAAUla,EAAEka,WAAWla,EAAEia,OAAOja,EAAEma,aAAana,EAAEma,cAAcna,EAAEia,OAAOja,EAAEqa,YAAYra,EAAEqa,aAAara,EAAEia,OAAOja,EAAEoa,WAAWpa,EAAEoa,YAAYpa,EAAEia,OAAOja,IAAI,SAASA,EAAEd,EAAEqB,GAAG,aAAm9BW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAIxF,EAAE,SAAST,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,KAAKC,EAAED,EAAE,IAAImB,EAAEnB,EAAE,GAAGrB,EAAE+B,QAAvkC,SAASM,EAAEvB,GAAG,GAAG,iBAAiBA,EAAE,OAAO,SAASA,GAAG,IAAId,EAAE0D,SAASgF,iBAAiB5H,GAAG,GAAG,IAAId,EAAEmC,OAAO,MAAM,IAAIK,EAAEqZ,mBAAmB,IAAI,IAAIxa,EAAE,GAAGE,EAAE,EAAEA,EAAEvB,EAAEmC,OAAOZ,IAAIF,EAAEsL,KAAKtK,EAAErC,EAAEuB,KAAK,OAAOF,EAArJ,CAAwJP,GAAG,GAAG0F,MAAM0G,QAAQpM,GAAG,CAAC,IAAI,IAAId,EAAE,GAAGqB,EAAE,EAAEA,EAAEP,EAAEqB,OAAOd,IAAIrB,EAAE2M,KAAKtK,EAAEvB,EAAEO,KAAK,OAAOrB,EAAE,GAAG,oBAAoBie,mBAAmBnd,aAAaod,iBAAiB,OAAO,SAASpd,GAAG,IAAId,EAAE0D,SAASoY,cAAc,UAAU,MAAM,CAACxQ,QAAQtL,EAAEsc,SAAQ,EAAG/a,EAAEQ,SAASjB,GAAGqd,UAAS,EAAG7c,EAAE8c,kBAAkB,UAAUC,YAAY,WAAWvd,EAAEuD,aAAa,MAAMrE,EAAEse,eAArL,CAAqMxd,GAAG,GAAG,oBAAoByd,YAAYzd,aAAayd,WAAW,MAAM,CAACjT,QAAQxK,EAAEwb,SAAQ,EAAG/a,EAAEQ,SAASjB,GAAGqd,UAAS,EAAG7c,EAAE8c,kBAAkB,QAAQ,GAAG,oBAAoBH,mBAAmBnd,aAAamd,kBAAkB,MAAM,CAAC3S,QAAQxK,EAAEwb,SAAQ,EAAG/a,EAAEQ,SAASjB,GAAGqd,UAAS,EAAG7c,EAAE8c,kBAAkB,WAAW,GAAGtd,EAAEib,WAAW,MAAM,CAACzQ,QAAQxK,EAAEqd,UAAS,EAAG7c,EAAE8c,kBAAkB,WAAW,MAAM,IAAI5b,EAAEoZ,0BAAoK,SAAS9a,EAAEd,GAAG,aAAagC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK/G,EAAE+B,QAAQ,SAASjB,GAAG,IAAId,EAAE,GAAG,OAAO,SAASc,EAAEO,GAAG,GAAGmF,MAAM0G,QAAQ7L,GAAG,IAAI,IAAIgB,EAAE,EAAEA,EAAEhB,EAAEc,OAAOE,IAAIvB,EAAEO,EAAEgB,SAAShB,EAAE8X,KAAK9X,EAAE8X,MAAM,GAAG9X,EAAE0P,KAAK1P,EAAE0P,MAAM,GAAG/Q,EAAE2M,KAAKtL,GAArH,CAAyHP,GAAGd,IAAI,SAASc,EAAEd,EAAEqB,GAAG,aAAaW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAE,SAASvB,GAAG,SAASd,EAAEqB,GAAG,OAAO,SAASP,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,qCAAvD,CAA6F7D,KAAKpB,GAAG,SAASc,EAAEd,GAAG,IAAIc,EAAE,MAAM,IAAIsa,eAAe,6DAA6D,OAAOpb,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAEc,EAAEd,EAA/J,CAAkKoB,KAAKN,EAAEY,KAAKN,KAAKod,OAAOC,aAAa,KAAKpd,IAAI,OAAO,SAASP,EAAEd,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIiF,UAAU,kEAAkEjF,GAAGc,EAAEsB,UAAUJ,OAAO0I,OAAO1K,GAAGA,EAAEoC,UAAU,CAAC2D,YAAY,CAACgB,MAAMjG,EAAE6G,YAAW,EAAGE,UAAS,EAAGD,cAAa,KAAM5H,IAAIgC,OAAOqZ,eAAerZ,OAAOqZ,eAAeva,EAAEd,GAAGc,EAAEwa,UAAUtb,GAAtT,CAA0TA,EAAEc,GAAGd,EAAEoC,UAAUgX,MAAM,WAAW,OAAO,IAAIhY,KAAK8X,OAAOvN,OAAO,4BAA4B3L,EAAnvB,CAAsvB,SAASc,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIU,SAAS/B,EAAE+B,QAAQM,GAAG,SAASvB,EAAEd,EAAEqB,GAAG,aAAaW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAE,SAASvB,GAAG,SAASd,EAAEqB,GAAG,OAAO,SAASP,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,qCAAvD,CAA6F7D,KAAKpB,GAAG,SAASc,EAAEd,GAAG,IAAIc,EAAE,MAAM,IAAIsa,eAAe,6DAA6D,OAAOpb,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAEc,EAAEd,EAA/J,CAAkKoB,KAAKN,EAAEY,KAAKN,KAAKod,OAAOC,aAAa,KAAKpd,IAAI,OAAO,SAASP,EAAEd,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIiF,UAAU,kEAAkEjF,GAAGc,EAAEsB,UAAUJ,OAAO0I,OAAO1K,GAAGA,EAAEoC,UAAU,CAAC2D,YAAY,CAACgB,MAAMjG,EAAE6G,YAAW,EAAGE,UAAS,EAAGD,cAAa,KAAM5H,IAAIgC,OAAOqZ,eAAerZ,OAAOqZ,eAAeva,EAAEd,GAAGc,EAAEwa,UAAUtb,GAAtT,CAA0TA,EAAEc,GAAGd,EAAEoC,UAAUgX,MAAM,WAAW,OAAO,IAAIhY,KAAK8X,OAAOvN,OAAO,4BAA4B3L,EAAnvB,CAAsvB,SAASc,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIU,SAAS/B,EAAE+B,QAAQM,GAAG,SAASvB,EAAEd,EAAEqB,GAAG,aAAaW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAE,SAASvB,GAAG,SAASd,EAAEqB,GAAG,OAAO,SAASP,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,qCAAvD,CAA6F7D,KAAKpB,GAAG,SAASc,EAAEd,GAAG,IAAIc,EAAE,MAAM,IAAIsa,eAAe,6DAA6D,OAAOpb,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAEc,EAAEd,EAA/J,CAAkKoB,KAAKN,EAAEY,KAAKN,KAAKod,OAAOC,aAAa,KAAKpd,IAAI,OAAO,SAASP,EAAEd,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIiF,UAAU,kEAAkEjF,GAAGc,EAAEsB,UAAUJ,OAAO0I,OAAO1K,GAAGA,EAAEoC,UAAU,CAAC2D,YAAY,CAACgB,MAAMjG,EAAE6G,YAAW,EAAGE,UAAS,EAAGD,cAAa,KAAM5H,IAAIgC,OAAOqZ,eAAerZ,OAAOqZ,eAAeva,EAAEd,GAAGc,EAAEwa,UAAUtb,GAAtT,CAA0TA,EAAEc,GAAGd,EAAEoC,UAAUgX,MAAM,WAAW,OAAO,IAAIhY,KAAK8X,OAAOvN,OAAO,4BAA4B3L,EAAnvB,CAAsvB,SAASc,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIU,SAAS/B,EAAE+B,QAAQM,GAAG,SAASvB,EAAEd,EAAEqB,GAAG,aAAa,SAASgB,EAAEvB,EAAEd,GAAG,IAAIc,EAAE,MAAM,IAAIsa,eAAe,6DAA6D,OAAOpb,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAEc,EAAEd,EAAE,SAASuB,EAAET,GAAG,IAAId,EAAEc,EAAEwT,MAAM,uDAAuD,GAAGtU,EAAE,OAAOA,EAAE,GAAGwe,OAAOC,aAAa,KAAKjc,EAAE1B,EAAEyY,UAAUvZ,EAAE,GAAGmC,SAAS,IAAId,EAAEP,EAAEwT,MAAM,0BAA0B,OAAOjT,EAAE,GAAGc,SAASrB,EAAEqB,OAAOrB,EAAEO,EAAE,GAAGmd,OAAOC,aAAa,KAAKnd,EAAER,EAAEyY,UAAUlY,EAAE,GAAGc,SAAS,SAASb,EAAER,GAAG,IAAId,EAAEc,EAAEwT,MAAM,uDAAuD,GAAGtU,EAAE,OAAOA,EAAE,GAAGwe,OAAOC,aAAa,KAAKjc,EAAE1B,EAAEyY,UAAUvZ,EAAE,GAAGmC,SAAS,IAAId,EAAEP,EAAEwT,MAAM,0BAA0B,OAAOjT,EAAE,GAAGc,SAASrB,EAAEqB,OAAOrB,EAAEO,EAAE,GAAGmd,OAAOC,aAAa,KAAKld,EAAET,EAAEyY,UAAUlY,EAAE,GAAGc,SAAS,SAASK,EAAE1B,GAAG,IAAId,EAAEc,EAAEwT,MAAM,0BAA0B,GAAGjT,EAAErB,EAAEmC,OAAO,OAAOd,IAAIP,EAAEqB,OAAOrB,GAAGA,EAAEA,EAAEyY,UAAUlY,IAAIiT,MAAM,0BAA0B,GAAGnS,QAAQrB,EAAEwT,MAAM,0BAA0B,GAAGnS,OAAOnC,EAAEwe,OAAOC,aAAa,KAAKld,EAAET,GAAGd,EAAEwe,OAAOC,aAAa,KAAKnd,EAAER,GAAGkB,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAIzE,EAAE,SAASxB,GAAG,SAASd,EAAEqB,GAAG,GAAG,SAASP,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,qCAAvD,CAA6F7D,KAAKpB,IAAI,IAAIqB,EAAEsK,OAAO,2BAA2B,IAAIrJ,EAAED,EAAEjB,KAAKN,EAAEY,KAAKN,KAAK,SAASN,GAAG,IAAId,EAAEc,EAAEwT,MAAM,0BAA0B,GAAGnS,OAAOd,EAAEP,EAAEwT,MAAM,0BAA0B,GAAGnS,OAAO,OAAOrB,EAAEwT,MAAM,0BAA0B,GAAGnS,QAAQ,EAAEqc,OAAOC,aAAa,KAAKjc,EAAE1B,GAAGd,EAAEqB,EAAEmd,OAAOC,aAAa,KAAKld,EAAET,GAAG0d,OAAOC,aAAa,KAAKnd,EAAER,IAAI4E,QAAQ,4BAA4B,SAAS5E,EAAEd,GAAG,OAAOwe,OAAOC,aAAa,KAAKze,IAAnV,CAAwVqB,UAAUiB,EAAED,EAAEjB,KAAKN,EAAEY,KAAKN,KAAKC,IAAI,OAAOgB,EAAEC,GAAG,OAAO,SAASxB,EAAEd,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIiF,UAAU,kEAAkEjF,GAAGc,EAAEsB,UAAUJ,OAAO0I,OAAO1K,GAAGA,EAAEoC,UAAU,CAAC2D,YAAY,CAACgB,MAAMjG,EAAE6G,YAAW,EAAGE,UAAS,EAAGD,cAAa,KAAM5H,IAAIgC,OAAOqZ,eAAerZ,OAAOqZ,eAAeva,EAAEd,GAAGc,EAAEwa,UAAUtb,GAAtT,CAA0TA,EAAEc,GAAGd,EAAj5B,CAAo5B,SAASc,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIU,SAAS/B,EAAE+B,QAAQO,GAAG,SAASxB,EAAEd,EAAEqB,GAAG,aAAa,SAASgB,EAAEvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAAGkB,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK/G,EAAE4c,SAAS5c,EAAE2c,SAAS3c,EAAE0c,SAAS1c,EAAEyc,aAAQ,EAAO,IAAIlb,EAAEc,EAAEhB,EAAE,KAAKC,EAAEe,EAAEhB,EAAE,KAAKmB,EAAEH,EAAEhB,EAAE,KAAKiB,EAAED,EAAEhB,EAAE,KAAKrB,EAAEyc,QAAQlb,EAAEQ,QAAQ/B,EAAE0c,SAASpb,EAAES,QAAQ/B,EAAE2c,SAASna,EAAET,QAAQ/B,EAAE4c,SAASta,EAAEP,SAAS,SAASjB,EAAEd,GAAG,aAAagC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1F,EAAE,WAAW,SAASP,EAAEd,EAAEqB,IAAG,SAAUP,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,GAAGM,KAAK8X,OAAOlZ,EAAE0e,cAActd,KAAKud,aAAatd,EAAEud,QAAO,EAAGxd,KAAKyd,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKzd,KAAKoY,UAAU,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO1Y,EAAEsB,UAAUyX,YAAY,SAAS/Y,GAAG,OAAOM,KAAK0d,UAAU1d,KAAK2d,eAAeje,KAAKA,EAAEsB,UAAU0c,UAAU,SAAShe,GAAG,OAAOM,KAAKoY,UAAU1Y,GAAGsF,SAAS,IAAItF,EAAEsB,UAAU4c,aAAa,SAASle,GAAG,OAAOM,KAAKyd,WAAW/d,IAAIA,EAAEsB,UAAU2c,eAAe,SAASje,GAAG,OAAOM,KAAKyd,WAAWva,QAAQxD,IAAIA,EAAEsB,UAAU6W,OAAO,WAAW,IAAI,IAAInY,EAAEM,KAAK8X,OAAOlZ,EAAEoB,KAAKyY,YAAY,KAAKxY,EAAE,EAAEA,EAAED,KAAK8X,OAAO/W,OAAOd,IAAIrB,GAAGoB,KAAKyY,YAAYzY,KAAK8X,OAAO7X,IAAI,IAAI,GAAGD,KAAKud,aAAa,CAAC,IAAI,IAAItc,EAAE,EAAEd,EAAE,EAAEA,EAAEH,KAAK8X,OAAO/W,OAAOZ,IAAIc,GAAGjB,KAAK2d,eAAe3d,KAAK8X,OAAO3X,IAAIc,GAAG,GAAGrC,GAAGoB,KAAK0d,UAAUzc,GAAG,IAAIvB,GAAGM,KAAK4d,aAAa3c,GAAG,MAAM,CAAC0O,KAAK/Q,GAAGoB,KAAKyY,YAAY,KAAKV,KAAKrY,IAAIA,EAAEsB,UAAUgX,MAAM,WAAW,OAAO,IAAIhY,KAAK8X,OAAOvN,OAAO,8BAA8B7K,EAAx3C,GAA63Cd,EAAEwc,OAAOnb,GAAG,SAASP,EAAEd,EAAEqB,GAAG,aAAaW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAE,SAASvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIE,EAAE,WAAW,SAAST,EAAEd,EAAEqB,IAAG,SAAUP,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,IAAI,IAAId,EAAE2L,OAAO,eAAevK,KAAK8X,OAAOlZ,EAAEoB,KAAK2Y,SAAS/Z,GAAGoB,KAAK8X,OAAOlZ,EAAEoB,KAAKkZ,aAAajZ,EAAEiZ,aAAalZ,KAAK6d,UAAU,CAAC,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU5d,EAAEuZ,SAAS,GAAGvZ,EAAE8Y,MAAM/Y,KAAKwZ,SAAS,GAAGvZ,EAAE8Y,MAAM/Y,KAAKwZ,SAASvZ,EAAEuZ,SAASxZ,KAAK8d,YAAY7d,EAAE+Y,OAAOhZ,KAAKwZ,SAAS,EAAEvZ,EAAEsZ,WAAWvZ,KAAK+d,SAAS9d,EAAE8d,SAAS,OAAOre,EAAEsB,UAAUgX,MAAM,WAAW,OAAO,IAAIhY,KAAK8X,OAAOvN,OAAO,gBAAgBvK,KAAK8X,OAAO,KAAK9X,KAAK2Y,SAAS3Y,KAAK8X,SAASpY,EAAEsB,UAAU6W,OAAO,WAAW,IAAInY,EAAE,IAAIuB,EAAEN,QAAQ/B,EAAE,GAAGqB,EAAED,KAAK6d,UAAU7d,KAAK8X,OAAO,IAAI3X,EAAEH,KAAK8X,OAAOnR,OAAO,EAAE,GAAGzG,EAAEF,KAAK8X,OAAOnR,OAAO,EAAE,GAAG,OAAO3G,KAAKkZ,cAActa,EAAE2M,KAAK,CAACoE,KAAK,eAAeoI,KAAK/X,KAAK8X,OAAO,GAAGoD,QAAQ,CAAC7B,UAAU,OAAOG,SAASxZ,KAAKwZ,YAAY5a,EAAE2M,KAAK,CAACoE,KAAK,MAAMuL,QAAQ,CAAClC,OAAOhZ,KAAK8d,eAAelf,EAAE2M,KAAK,CAACoE,KAAKjQ,EAAEmY,OAAO1X,EAAEF,GAAG8X,KAAK5X,EAAE+a,QAAQ,CAAC1B,SAASxZ,KAAKwZ,YAAY5a,EAAE2M,KAAK,CAACoE,KAAK,QAAQuL,QAAQ,CAAClC,OAAOhZ,KAAK8d,eAAelf,EAAE2M,KAAK,CAACoE,KAAKjQ,EAAEmY,OAAO3X,EAAE,UAAU6X,KAAK7X,EAAEgb,QAAQ,CAAC1B,SAASxZ,KAAKwZ,YAAY5a,EAAE2M,KAAK,CAACoE,KAAK,MAAMuL,QAAQ,CAAClC,OAAOhZ,KAAK8d,eAAe9d,KAAK+d,UAAU/d,KAAKkZ,eAAeta,EAAE2M,KAAK,CAACoE,KAAK,OAAO/Q,EAAE2M,KAAK,CAACoE,KAAK,QAAQoI,KAAK/X,KAAK+d,SAAS7C,QAAQ,CAAC1B,SAASxZ,KAAKwZ,aAAa5a,GAAGc,EAAEsB,UAAU2X,SAAS,SAASjZ,GAAG,IAAId,EAAEqB,EAAE,EAAE,IAAIrB,EAAE,EAAEA,EAAE,GAAGA,GAAG,EAAEqB,GAAG4E,SAASnF,EAAEd,IAAI,IAAIA,EAAE,EAAEA,EAAE,GAAGA,GAAG,EAAEqB,GAAG,EAAE4E,SAASnF,EAAEd,IAAI,OAAO,GAAGqB,EAAE,IAAI,IAAIP,EAAh8C,GAAq8Cd,EAAE+B,QAAQR,GAAG,SAAST,EAAEd,EAAEqB,GAAG,aAAaW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAE,SAASvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIE,EAAE,WAAW,SAAST,EAAEd,IAAG,SAAUc,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,GAAGM,KAAK8X,OAAOlZ,EAAEoB,KAAK6d,UAAU,CAAC,KAAK,KAAK,KAAK,MAAM,OAAOne,EAAEsB,UAAUgX,MAAM,WAAW,OAAO,IAAIhY,KAAK8X,OAAOvN,OAAO,eAAe7K,EAAEsB,UAAU6W,OAAO,WAAW,IAAInY,EAAE,IAAIuB,EAAEN,QAAQ/B,EAAEoB,KAAK6d,UAAUhZ,SAAS7E,KAAK8X,QAAQ,GAAG7X,EAAE,OAAO,MAAM,CAAC0P,KAAK1P,GAAGP,EAAEmY,OAAO7X,KAAK8X,OAAOlZ,EAAE,MAAMmZ,KAAK/X,KAAK8X,SAASpY,EAAxa,GAA6ad,EAAE+B,QAAQR,GAAG,SAAST,EAAEd,EAAEqB,GAAG,aAAaW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAE,SAASvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIE,EAAE,WAAW,SAAST,EAAEd,IAAG,SAAUc,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,GAAGM,KAAK8X,OAAOlZ,EAAEoB,KAAK6d,UAAU,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,OAAOne,EAAEsB,UAAUgX,MAAM,WAAW,OAAO,IAAIhY,KAAK8X,OAAOvN,OAAO,eAAe7K,EAAEsB,UAAU6W,OAAO,WAAW,IAAInY,EAAE,IAAIuB,EAAEN,QAAQ/B,EAAEoB,KAAK2Y,WAAW1Y,EAAE,OAAO,MAAM,CAAC0P,KAAK1P,GAAGP,EAAEmY,OAAO7X,KAAK8X,OAAO9X,KAAK6d,UAAUjf,GAAG,MAAMmZ,KAAK/X,KAAK8X,SAASpY,EAAEsB,UAAU2X,SAAS,WAAW,IAAIjZ,EAAE,EAAE,OAAOA,GAAG,EAAEmF,SAAS7E,KAAK8X,OAAO,IAAIpY,GAAG,EAAEmF,SAAS7E,KAAK8X,OAAO,IAAIpY,GAAG,EAAEmF,SAAS7E,KAAK8X,OAAO,IAAIpY,GAAG,EAAEmF,SAAS7E,KAAK8X,OAAO,KAAKpY,GAAG,EAAEmF,SAAS7E,KAAK8X,OAAO,KAAK,IAAIpY,EAAvqB,GAA4qBd,EAAE+B,QAAQR,GAAG,SAAST,EAAEd,EAAEqB,GAAG,aAAaW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAE,SAASvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIE,EAAE,WAAW,SAAST,EAAEd,IAAG,SAAUc,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,IAAI,IAAId,EAAE2L,OAAO,cAAcvK,KAAK8X,OAAOlZ,EAAEoB,KAAK2Y,SAAS/Z,GAAGoB,KAAK8X,OAAOlZ,EAAE,OAAOc,EAAEsB,UAAUgX,MAAM,WAAW,OAAO,IAAIhY,KAAK8X,OAAOvN,OAAO,eAAevK,KAAK8X,OAAO,IAAI9X,KAAK2Y,SAAS3Y,KAAK8X,SAASpY,EAAEsB,UAAU6W,OAAO,WAAW,IAAInY,EAAE,IAAIuB,EAAEN,QAAQ/B,EAAE,GAAGqB,EAAED,KAAK8X,OAAOnR,OAAO,EAAE,GAAGxG,EAAEH,KAAK8X,OAAOnR,OAAO,EAAE,GAAG,OAAO/H,GAAGc,EAAE6X,SAAS3Y,GAAGc,EAAEmY,OAAO5X,EAAE,QAAQrB,GAAGc,EAAE+X,UAAU7Y,GAAGc,EAAEmY,OAAO1X,EAAE,QAAQ,CAACwP,KAAK/Q,GAAGc,EAAE8X,OAAOO,KAAK/X,KAAK8X,SAASpY,EAAEsB,UAAU2X,SAAS,SAASjZ,GAAG,IAAId,EAAEqB,EAAE,EAAE,IAAIrB,EAAE,EAAEA,EAAE,EAAEA,GAAG,EAAEqB,GAAG,EAAE4E,SAASnF,EAAEd,IAAI,IAAIA,EAAE,EAAEA,EAAE,EAAEA,GAAG,EAAEqB,GAAG4E,SAASnF,EAAEd,IAAI,OAAO,GAAGqB,EAAE,IAAI,IAAIP,EAA7qB,GAAkrBd,EAAE+B,QAAQR,GAAG,SAAST,EAAEd,EAAEqB,GAAG,aAAaW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAE,SAASvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIE,EAAE,WAAW,SAAST,EAAEd,EAAEqB,IAAG,SAAUP,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,IAAI,IAAId,EAAE2L,OAAO,eAAevK,KAAK8X,OAAOlZ,EAAEoB,KAAK2Y,SAAS/Z,GAAGoB,KAAK8X,OAAOlZ,EAAEoB,KAAKkZ,aAAajZ,EAAEiZ,aAAajZ,EAAEuZ,SAAS,GAAGvZ,EAAE8Y,MAAM/Y,KAAKwZ,SAAS,GAAGvZ,EAAE8Y,MAAM/Y,KAAKwZ,SAASvZ,EAAEuZ,SAASxZ,KAAK8d,YAAY7d,EAAE+Y,OAAOhZ,KAAKwZ,SAAS,EAAEvZ,EAAEsZ,WAAW,OAAO7Z,EAAEsB,UAAUgX,MAAM,WAAW,OAAO,IAAIhY,KAAK8X,OAAOvN,OAAO,gBAAgBvK,KAAK8X,OAAO,KAAK9X,KAAK2Y,SAAS3Y,KAAK8X,SAASpY,EAAEsB,UAAU6W,OAAO,WAAW,IAAInY,EAAE,IAAIuB,EAAEN,QAAQ/B,EAAE,GAAG,OAAOoB,KAAKkZ,cAActa,EAAE2M,KAAK,CAACoE,KAAK,WAAWoI,KAAK/X,KAAK8X,OAAO,GAAGoD,QAAQ,CAAC7B,UAAU,OAAOG,SAASxZ,KAAKwZ,YAAY5a,EAAE2M,KAAK,CAACoE,KAAK,MAAMjQ,EAAEmY,OAAO7X,KAAK8X,OAAO,GAAG,KAAKoD,QAAQ,CAAClC,OAAOhZ,KAAK8d,eAAelf,EAAE2M,KAAK,CAACoE,KAAKjQ,EAAEmY,OAAO7X,KAAK8X,OAAOnR,OAAO,EAAE,GAAG,SAASoR,KAAK/X,KAAK8X,OAAOnR,OAAO,EAAE,GAAGuU,QAAQ,CAAC1B,SAASxZ,KAAKwZ,YAAY5a,EAAE2M,KAAK,CAACoE,KAAK,QAAQuL,QAAQ,CAAClC,OAAOhZ,KAAK8d,eAAelf,EAAE2M,KAAK,CAACoE,KAAKjQ,EAAEmY,OAAO7X,KAAK8X,OAAOnR,OAAO,EAAE,GAAG,SAASoR,KAAK/X,KAAK8X,OAAOnR,OAAO,EAAE,GAAGuU,QAAQ,CAAC1B,SAASxZ,KAAKwZ,YAAY5a,EAAE2M,KAAK,CAACoE,KAAKjQ,EAAEmY,OAAO7X,KAAK8X,OAAO,IAAI,KAAK,MAAMoD,QAAQ,CAAClC,OAAOhZ,KAAK8d,eAAe9d,KAAKkZ,cAActa,EAAE2M,KAAK,CAACoE,KAAK,WAAWoI,KAAK/X,KAAK8X,OAAO,IAAIoD,QAAQ,CAAC7B,UAAU,QAAQG,SAASxZ,KAAKwZ,YAAY5a,GAAGc,EAAEsB,UAAU2X,SAAS,SAASjZ,GAAG,IAAId,EAAEqB,EAAE,EAAE,IAAIrB,EAAE,EAAEA,EAAE,GAAGA,GAAG,EAAEqB,GAAG4E,SAASnF,EAAEd,IAAI,IAAIA,EAAE,EAAEA,EAAE,GAAGA,GAAG,EAAEqB,GAAG,EAAE4E,SAASnF,EAAEd,IAAI,OAAO,GAAGqB,EAAE,IAAI,IAAIP,EAA72C,GAAk3Cd,EAAE+B,QAAQR,GAAG,SAAST,EAAEd,EAAEqB,GAAG,aAAa,SAASgB,EAAEvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAAGkB,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK/G,EAAEid,IAAIjd,EAAEgd,KAAKhd,EAAE+c,KAAK/c,EAAE8c,KAAK9c,EAAE6c,WAAM,EAAO,IAAItb,EAAEc,EAAEhB,EAAE,KAAKC,EAAEe,EAAEhB,EAAE,KAAKmB,EAAEH,EAAEhB,EAAE,KAAKiB,EAAED,EAAEhB,EAAE,KAAKkB,EAAEF,EAAEhB,EAAE,KAAKrB,EAAE6c,MAAMtb,EAAEQ,QAAQ/B,EAAE8c,KAAKxb,EAAES,QAAQ/B,EAAE+c,KAAKva,EAAET,QAAQ/B,EAAEgd,KAAK1a,EAAEP,QAAQ/B,EAAEid,IAAI1a,EAAER,SAAS,SAASjB,EAAEd,GAAG,aAAagC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1F,EAAE,WAAW,SAASP,EAAEd,IAAG,SAAUc,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,GAAGM,KAAK8X,OAAOlZ,EAAE,OAAOc,EAAEsB,UAAU6W,OAAO,WAAW,MAAM,CAAClI,KAAK,4CAA4CoI,KAAK/X,KAAK8X,SAASpY,EAAEsB,UAAUgX,MAAM,WAAW,OAAM,GAAItY,EAArS,GAA0Sd,EAAE0d,eAAerc,GAAG,SAASP,EAAEd,GAAG,aAAagC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1F,EAAE,WAAW,SAASP,EAAEd,IAAG,SAAUc,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,GAAGM,KAAK8X,OAAOlZ,EAAEoB,KAAKge,qBAAqB,CAACC,EAAE,QAAQC,EAAE,QAAQC,EAAE,QAAQC,EAAE,QAAQC,EAAE,QAAQC,EAAE,QAAQC,EAAE,QAAQC,EAAE,QAAQC,EAAE,QAAQC,EAAE,SAAS,OAAOhf,EAAEsB,UAAUgX,MAAM,WAAW,OAAO,IAAIhY,KAAK8X,OAAOvN,OAAO,kBAAkB7K,EAAEsB,UAAU6W,OAAO,WAAW,IAAI,IAAInY,EAAE,OAAOd,EAAE,EAAEA,EAAEoB,KAAK8X,OAAO/W,OAAOnC,GAAG,EAAEc,GAAGM,KAAK2e,cAAc3e,KAAK8X,OAAOnR,OAAO/H,EAAE,IAAI,MAAM,CAAC+Q,KAAKjQ,GAAG,QAAQqY,KAAK/X,KAAK8X,SAASpY,EAAEsB,UAAU2d,cAAc,SAASjf,GAAG,IAAI,IAAId,EAAE,GAAGqB,EAAED,KAAKge,qBAAqBte,EAAE,IAAIuB,EAAEjB,KAAKge,qBAAqBte,EAAE,IAAIS,EAAE,EAAEA,EAAE,EAAEA,IAAIvB,GAAG,KAAKqB,EAAEE,GAAG,MAAM,IAAIvB,GAAG,KAAKqC,EAAEd,GAAG,MAAM,IAAI,OAAOvB,GAAGc,EAAnsB,GAAwsBd,EAAEmd,IAAI9b,GAAG,SAASP,EAAEd,GAAG,aAAagC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1F,EAAE,WAAW,SAASP,EAAEd,IAAG,SAAUc,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,GAAGM,KAAK8X,OAAOlZ,GAAG,IAAIA,EAAE2L,OAAO,iBAAiBvK,KAAK8X,QAAQ9X,KAAK2Y,SAAS/Z,IAAIoB,KAAKge,qBAAqB,CAACC,EAAE,QAAQC,EAAE,QAAQC,EAAE,QAAQC,EAAE,QAAQC,EAAE,QAAQC,EAAE,QAAQC,EAAE,QAAQC,EAAE,QAAQC,EAAE,QAAQC,EAAE,SAAS,OAAOhf,EAAEsB,UAAUgX,MAAM,WAAW,OAAO,IAAIhY,KAAK8X,OAAOvN,OAAO,gBAAgBvK,KAAK8X,OAAO,KAAK9X,KAAK2Y,YAAYjZ,EAAEsB,UAAU6W,OAAO,WAAW,IAAI,IAAInY,EAAE,OAAOd,EAAE,EAAEA,EAAE,GAAGA,GAAG,EAAEc,GAAGM,KAAK2e,cAAc3e,KAAK8X,OAAOnR,OAAO/H,EAAE,IAAI,MAAM,CAAC+Q,KAAKjQ,GAAG,QAAQqY,KAAK/X,KAAK8X,SAASpY,EAAEsB,UAAU2d,cAAc,SAASjf,GAAG,IAAI,IAAId,EAAE,GAAGqB,EAAED,KAAKge,qBAAqBte,EAAE,IAAIuB,EAAEjB,KAAKge,qBAAqBte,EAAE,IAAIS,EAAE,EAAEA,EAAE,EAAEA,IAAIvB,GAAG,KAAKqB,EAAEE,GAAG,MAAM,IAAIvB,GAAG,KAAKqC,EAAEd,GAAG,MAAM,IAAI,OAAOvB,GAAGc,EAAEsB,UAAU2X,SAAS,WAAW,IAAI,IAAIjZ,EAAE,EAAEd,EAAE,EAAEA,EAAE,GAAGA,IAAIc,GAAGmF,SAAS7E,KAAK8X,OAAOlZ,KAAK,EAAEA,EAAE,EAAE,GAAG,OAAO,GAAGqG,KAAK6Q,KAAKpW,EAAE,IAAIA,GAAGA,EAA74B,GAAk5Bd,EAAEkd,MAAM7b,GAAG,SAASP,EAAEd,EAAEqB,GAAG,aAAaW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAE,SAASvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIE,EAAEF,EAAE,GAAGC,EAAE,SAASR,GAAG,SAASd,EAAEqB,IAAI,SAASP,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,qCAAvD,CAA6F7D,KAAKpB,GAAG,IAAIqC,EAAE,SAASvB,EAAEd,GAAG,IAAIc,EAAE,MAAM,IAAIsa,eAAe,6DAA6D,OAAOpb,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAEc,EAAEd,EAA/J,CAAkKoB,KAAKN,EAAEY,KAAKN,KAAKC,IAAI,OAAOgB,EAAE6W,SAAQ,EAAG3X,EAAEyY,OAAO3X,EAAE6W,QAAQ7W,EAAE,OAAO,SAASvB,EAAEd,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIiF,UAAU,kEAAkEjF,GAAGc,EAAEsB,UAAUJ,OAAO0I,OAAO1K,GAAGA,EAAEoC,UAAU,CAAC2D,YAAY,CAACgB,MAAMjG,EAAE6G,YAAW,EAAGE,UAAS,EAAGD,cAAa,KAAM5H,IAAIgC,OAAOqZ,eAAerZ,OAAOqZ,eAAeva,EAAEd,GAAGc,EAAEwa,UAAUtb,GAAtT,CAA0TA,EAAEc,GAAGd,EAA5qB,CAA+qBqC,EAAEN,SAAS/B,EAAE+B,QAAQT,GAAG,SAASR,EAAEd,EAAEqB,GAAG,aAAaW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAE,SAASvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIE,EAAEF,EAAE,GAAGC,EAAE,SAASR,GAAG,SAASd,EAAEqB,IAAI,SAASP,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,qCAAvD,CAA6F7D,KAAKpB,GAAG,IAAIqC,EAAE,SAASvB,EAAEd,GAAG,IAAIc,EAAE,MAAM,IAAIsa,eAAe,6DAA6D,OAAOpb,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAEc,EAAEd,EAA/J,CAAkKoB,KAAKN,EAAEY,KAAKN,KAAKC,IAAI,OAAOgB,EAAE6W,SAAQ,EAAG3X,EAAEyY,OAAO3X,EAAE6W,QAAQ7W,EAAE6W,SAAQ,EAAG3X,EAAEyY,OAAO3X,EAAE6W,QAAQ7W,EAAE,OAAO,SAASvB,EAAEd,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIiF,UAAU,kEAAkEjF,GAAGc,EAAEsB,UAAUJ,OAAO0I,OAAO1K,GAAGA,EAAEoC,UAAU,CAAC2D,YAAY,CAACgB,MAAMjG,EAAE6G,YAAW,EAAGE,UAAS,EAAGD,cAAa,KAAM5H,IAAIgC,OAAOqZ,eAAerZ,OAAOqZ,eAAeva,EAAEd,GAAGc,EAAEwa,UAAUtb,GAAtT,CAA0TA,EAAEc,GAAGd,EAA5sB,CAA+sBqC,EAAEN,SAAS/B,EAAE+B,QAAQT,GAAG,SAASR,EAAEd,EAAEqB,GAAG,aAAaW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAE,SAASvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIE,EAAEF,EAAE,GAAGC,EAAE,SAASR,GAAG,SAASd,EAAEqB,IAAI,SAASP,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,qCAAvD,CAA6F7D,KAAKpB,GAAG,IAAIqC,EAAE,SAASvB,EAAEd,GAAG,IAAIc,EAAE,MAAM,IAAIsa,eAAe,6DAA6D,OAAOpb,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAEc,EAAEd,EAA/J,CAAkKoB,KAAKN,EAAEY,KAAKN,KAAKC,IAAI,OAAOgB,EAAE6W,SAAQ,EAAG3X,EAAE2Y,OAAO7X,EAAE6W,QAAQ7W,EAAE,OAAO,SAASvB,EAAEd,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIiF,UAAU,kEAAkEjF,GAAGc,EAAEsB,UAAUJ,OAAO0I,OAAO1K,GAAGA,EAAEoC,UAAU,CAAC2D,YAAY,CAACgB,MAAMjG,EAAE6G,YAAW,EAAGE,UAAS,EAAGD,cAAa,KAAM5H,IAAIgC,OAAOqZ,eAAerZ,OAAOqZ,eAAeva,EAAEd,GAAGc,EAAEwa,UAAUtb,GAAtT,CAA0TA,EAAEc,GAAGd,EAA5qB,CAA+qBqC,EAAEN,SAAS/B,EAAE+B,QAAQT,GAAG,SAASR,EAAEd,EAAEqB,GAAG,aAAaW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAE,SAASvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIE,EAAEF,EAAE,GAAGC,EAAE,SAASR,GAAG,SAASd,EAAEqB,IAAI,SAASP,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,qCAAvD,CAA6F7D,KAAKpB,GAAG,IAAIqC,EAAE,SAASvB,EAAEd,GAAG,IAAIc,EAAE,MAAM,IAAIsa,eAAe,6DAA6D,OAAOpb,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAEc,EAAEd,EAA/J,CAAkKoB,KAAKN,EAAEY,KAAKN,KAAKC,IAAI,OAAOgB,EAAE6W,SAAQ,EAAG3X,EAAE2Y,OAAO7X,EAAE6W,QAAQ7W,EAAE6W,SAAQ,EAAG3X,EAAEyY,OAAO3X,EAAE6W,QAAQ7W,EAAE,OAAO,SAASvB,EAAEd,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIiF,UAAU,kEAAkEjF,GAAGc,EAAEsB,UAAUJ,OAAO0I,OAAO1K,GAAGA,EAAEoC,UAAU,CAAC2D,YAAY,CAACgB,MAAMjG,EAAE6G,YAAW,EAAGE,UAAS,EAAGD,cAAa,KAAM5H,IAAIgC,OAAOqZ,eAAerZ,OAAOqZ,eAAeva,EAAEd,GAAGc,EAAEwa,UAAUtb,GAAtT,CAA0TA,EAAEc,GAAGd,EAA5sB,CAA+sBqC,EAAEN,SAAS/B,EAAE+B,QAAQT,GAAG,SAASR,EAAEd,EAAEqB,GAAG,aAAa,SAASgB,EAAEvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAAGkB,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK/G,EAAEwd,QAAQxd,EAAEud,QAAQvd,EAAEsd,MAAMtd,EAAEqd,MAAMrd,EAAEod,SAAI,EAAO,IAAI7b,EAAEc,EAAEhB,EAAE,IAAIC,EAAEe,EAAEhB,EAAE,KAAKmB,EAAEH,EAAEhB,EAAE,KAAKiB,EAAED,EAAEhB,EAAE,KAAKkB,EAAEF,EAAEhB,EAAE,KAAKrB,EAAEod,IAAI7b,EAAEQ,QAAQ/B,EAAEqd,MAAM/b,EAAES,QAAQ/B,EAAEsd,MAAM9a,EAAET,QAAQ/B,EAAEud,QAAQjb,EAAEP,QAAQ/B,EAAEwd,QAAQjb,EAAER,SAAS,SAASjB,EAAEd,GAAG,aAAagC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1F,EAAE,WAAW,SAASP,EAAEd,IAAG,SAAUc,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,GAAGM,KAAK4e,OAAO/Z,SAASjG,EAAE,IAAI,OAAOc,EAAEsB,UAAU6W,OAAO,WAAW,IAAI,IAAInY,EAAEM,KAAK4e,OAAOhgB,EAAE,IAAIyI,MAAM3H,IAAI,GAAGA,GAAGA,EAAE,GAAG,GAAGd,EAAE,QAAQA,EAAEc,GAAGA,EAAE,GAAG,IAAId,EAAE,MAAMA,EAAEc,GAAGA,EAAE,GAAG,GAAG,MAAM,CAACiQ,KAAK/Q,EAAEA,EAAE4F,MAAM,GAAG,GAAGuT,KAAK/X,KAAK4e,OAAO,KAAKlf,EAAEsB,UAAUgX,MAAM,WAAW,OAAOhY,KAAK4e,QAAQ,GAAG5e,KAAK4e,QAAQ,QAAQlf,EAA5Z,GAAiad,EAAEyd,WAAWpc,GAAG,SAASP,EAAEd,EAAEqB,GAAG,aAAa,SAASgB,EAAEvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAAGkB,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAIxF,EAAEc,EAAEhB,EAAE,KAAKC,EAAEe,EAAEhB,EAAE,IAAIrB,EAAE+B,QAAQ,SAASjB,GAAG,IAAId,EAAE,GAAG,IAAI,IAAIqB,KAAKC,EAAES,QAAQT,EAAES,QAAQ9B,eAAeoB,KAAKP,EAAE+F,aAAa,aAAaxF,EAAE4e,iBAAiBjgB,EAAEqB,GAAGP,EAAEoH,aAAa,aAAa7G,EAAE4e,gBAAgBnf,EAAE+F,aAAa,QAAQxF,EAAE4e,iBAAiBjgB,EAAEqB,GAAGP,EAAEoH,aAAa,QAAQ7G,EAAE4e,iBAAiB,OAAOjgB,EAAE+G,MAAMjG,EAAEoH,aAAa,oBAAoBpH,EAAEoH,aAAa,eAAc,EAAG3G,EAAEQ,SAAS/B,KAAK,SAASc,EAAEd,GAAG,aAAagC,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK/G,EAAE+B,QAAQ,SAASjB,GAAG,IAAId,EAAE,CAAC,QAAQ,SAAS,aAAa,WAAW,SAAS,YAAY,eAAe,aAAa,eAAe,IAAI,IAAIqB,KAAKrB,EAAEA,EAAEC,eAAeoB,IAAI,iBAAiBP,EAAEO,EAAErB,EAAEqB,MAAMP,EAAEO,GAAG4E,SAASnF,EAAEO,GAAG,KAAK,MAAM,iBAAiBP,EAAEwZ,eAAexZ,EAAEwZ,aAAa,SAASxZ,EAAEwZ,cAAcxZ,IAAI,SAASA,EAAEd,EAAEqB,GAAG,aAAaW,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAI1E,EAAE,SAASvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIE,EAAEF,EAAE,GAAGC,EAAE,WAAW,SAASR,EAAEd,EAAEqB,EAAEgB,IAAG,SAAUvB,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,GAAGM,KAAK8e,OAAOlgB,EAAEoB,KAAKoY,UAAUnY,EAAED,KAAKkb,QAAQja,EAAE,OAAOvB,EAAEsB,UAAU2b,OAAO,WAAW,IAAI3c,KAAK8e,OAAOnE,WAAW,MAAM,IAAIL,MAAM,wCAAwCta,KAAK+e,gBAAgB,IAAI,IAAIrf,EAAE,EAAEA,EAAEM,KAAKoY,UAAUrX,OAAOrB,IAAI,CAAC,IAAId,GAAE,EAAGqC,EAAEN,SAASX,KAAKkb,QAAQlb,KAAKoY,UAAU1Y,GAAGwb,SAASlb,KAAKgf,kBAAkBpgB,EAAEoB,KAAKoY,UAAU1Y,IAAIM,KAAKif,eAAergB,EAAEoB,KAAKoY,UAAU1Y,IAAIM,KAAKkf,kBAAkBlf,KAAKoY,UAAU1Y,IAAIM,KAAKmf,iBAAiBzf,EAAEsB,UAAU+d,cAAc,WAAW,IAAIrf,EAAEM,KAAK8e,OAAOnE,WAAW,MAAMjb,EAAE0f,QAAO,EAAGjf,EAAE2a,6BAA6B9a,KAAKoY,UAAUpY,KAAKkb,QAAQxb,GAAG,IAAId,GAAE,EAAGuB,EAAE0a,0BAA0B7a,KAAKoY,WAAWnY,GAAE,EAAGE,EAAE8a,6BAA6Bjb,KAAKoY,WAAWpY,KAAK8e,OAAO/F,MAAMna,EAAEoB,KAAKkb,QAAQpB,WAAW9Z,KAAKkb,QAAQnB,YAAY/Z,KAAK8e,OAAO9F,OAAO/Y,EAAEP,EAAE2f,UAAU,EAAE,EAAErf,KAAK8e,OAAO/F,MAAM/Y,KAAK8e,OAAO9F,QAAQhZ,KAAKkb,QAAQzB,aAAa/Z,EAAE4f,UAAUtf,KAAKkb,QAAQzB,WAAW/Z,EAAE6f,SAAS,EAAE,EAAEvf,KAAK8e,OAAO/F,MAAM/Y,KAAK8e,OAAO9F,SAAStZ,EAAE8f,UAAUxf,KAAKkb,QAAQpB,WAAW,IAAIpa,EAAEsB,UAAUge,kBAAkB,SAAStf,EAAEd,GAAG,IAAIqB,EAAEgB,EAAEjB,KAAK8e,OAAOnE,WAAW,MAAMxa,EAAEvB,EAAE+Q,KAAK1P,EAAE,OAAOP,EAAE4Z,aAAa5Z,EAAEka,UAAUla,EAAE8Z,SAAS9Z,EAAE6Z,WAAW7Z,EAAEka,UAAU3Y,EAAEqe,UAAU5f,EAAEga,UAAU,IAAI,IAAIxZ,EAAE,EAAEA,EAAEC,EAAEY,OAAOb,IAAI,CAAC,IAAIkB,EAAElB,EAAER,EAAEqZ,MAAMna,EAAEuc,eAAe,MAAMhb,EAAED,GAAGe,EAAEse,SAASne,EAAEnB,EAAEP,EAAEqZ,MAAMrZ,EAAEsZ,QAAQ7Y,EAAED,IAAIe,EAAEse,SAASne,EAAEnB,EAAEP,EAAEqZ,MAAMrZ,EAAEsZ,OAAO7Y,EAAED,MAAMR,EAAEsB,UAAUie,eAAe,SAASvf,EAAEd,GAAG,IAAIqB,EAAEgB,EAAEd,EAAEH,KAAK8e,OAAOnE,WAAW,MAAMza,EAAER,EAAEyZ,YAAY,IAAIzZ,EAAE8Z,SAAS,MAAM9Z,EAAE0Z,KAAK1Z,EAAEwZ,eAAejY,EAAE,OAAOvB,EAAE4Z,aAAa5Z,EAAEka,UAAUla,EAAE8Z,SAAS9Z,EAAE6Z,WAAW7Z,EAAEsZ,OAAOtZ,EAAE6Z,WAAW7Z,EAAEka,UAAUla,EAAE8Z,SAASrZ,EAAEiZ,KAAKlZ,EAAE,QAAQR,EAAE2Z,WAAWza,EAAEuc,eAAe,GAAGlb,EAAE,EAAEE,EAAEkZ,UAAU,QAAQ,SAAS3Z,EAAE2Z,WAAWpZ,EAAErB,EAAEma,MAAM,EAAE5Y,EAAEkZ,UAAU,UAAUpZ,EAAErB,EAAEma,MAAM,EAAE5Y,EAAEkZ,UAAU,UAAUlZ,EAAEsf,SAAS7gB,EAAEmZ,KAAK9X,EAAEgB,KAAKvB,EAAEsB,UAAUke,kBAAkB,SAASxf,GAAGM,KAAK8e,OAAOnE,WAAW,MAAM6E,UAAU9f,EAAEqZ,MAAM,IAAIrZ,EAAEsB,UAAUme,cAAc,WAAWnf,KAAK8e,OAAOnE,WAAW,MAAM+E,WAAWhgB,EAA9gE,GAAmhEd,EAAE+B,QAAQT,GAAG,SAASR,EAAEd,EAAEqB,GAAG,aAAa,SAASgB,EAAEvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAAGkB,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK/G,EAAEoe,sBAAiB,EAAO,IAAI7c,EAAEc,EAAEhB,EAAE,KAAKC,EAAEe,EAAEhB,EAAE,KAAKrB,EAAEoe,iBAAiB,SAAStd,GAAG,OAAOA,GAAG,IAAI,SAAS,OAAOS,EAAEQ,QAAQ,IAAI,MAAM,OAAOT,EAAES,QAAQ,QAAQ,MAAM,IAAI2Z,MAAM,sBAAsB,SAAS5a,EAAEd,EAAEqB,GAAG,aAAa,SAASgB,EAAEvB,EAAEd,EAAEqB,GAAG,IAAIgB,EAAEqB,SAASqd,gBAAgBxe,EAAE,KAAK,OAAOF,EAAEgC,aAAa,YAAY,aAAavD,EAAE,KAAKd,EAAE,KAAKqB,EAAE2f,YAAY3e,GAAGA,EAAE,SAASd,EAAET,EAAEd,GAAGc,EAAEuD,aAAa,QAAQ,QAAQrE,EAAE8a,UAAU,KAAK,SAASxZ,EAAER,EAAEd,EAAEqB,EAAEgB,EAAEd,GAAG,IAAID,EAAEoC,SAASqd,gBAAgBxe,EAAE,QAAQjB,EAAE+C,aAAa,IAAIvD,GAAGQ,EAAE+C,aAAa,IAAIrE,GAAGsB,EAAE+C,aAAa,QAAQhD,GAAGC,EAAE+C,aAAa,SAAShC,GAAGd,EAAEyf,YAAY1f,GAAGU,OAAO8E,eAAe9G,EAAE,aAAa,CAAC+G,OAAM,IAAK,IAAIvE,EAAE,SAAS1B,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAA9C,CAAkDO,EAAE,IAAIiB,EAAEjB,EAAE,GAAGkB,EAAE,6BAA6BX,EAAE,WAAW,SAASd,EAAEd,EAAEqB,EAAEgB,IAAG,SAAUvB,EAAEd,GAAG,KAAKc,aAAad,GAAG,MAAM,IAAIiF,UAAU,sCAAxD,CAA+F7D,KAAKN,GAAGM,KAAK6f,IAAIjhB,EAAEoB,KAAKoY,UAAUnY,EAAED,KAAKkb,QAAQja,EAAE,OAAOvB,EAAEsB,UAAU2b,OAAO,WAAW,IAAIjd,EAAEM,KAAKkb,QAAQpB,WAAW9Z,KAAK8f,aAAa,IAAI,IAAIlhB,EAAE,EAAEA,EAAEoB,KAAKoY,UAAUrX,OAAOnC,IAAI,CAAC,IAAIqB,EAAED,KAAKoY,UAAUxZ,GAAGsB,GAAE,EAAGkB,EAAET,SAASX,KAAKkb,QAAQjb,EAAEib,SAASha,EAAED,EAAEvB,EAAEQ,EAAE0Z,UAAU5Z,KAAK6f,KAAK1f,EAAEe,EAAEhB,GAAGF,KAAK+f,eAAe7e,EAAEhB,EAAED,GAAGD,KAAKggB,YAAY9e,EAAEhB,EAAED,GAAGP,GAAGO,EAAE8Y,QAAQrZ,EAAEsB,UAAU8e,WAAW,WAAW,KAAK9f,KAAK6f,IAAII,YAAYjgB,KAAK6f,IAAIK,YAAYlgB,KAAK6f,IAAII,aAAY,EAAG/e,EAAE4Z,6BAA6B9a,KAAKoY,UAAUpY,KAAKkb,SAAS,IAAIxb,GAAE,EAAGwB,EAAE2Z,0BAA0B7a,KAAKoY,WAAWxZ,GAAE,EAAGsC,EAAE+Z,6BAA6Bjb,KAAKoY,WAAWnY,EAAEP,EAAEM,KAAKkb,QAAQpB,WAAW9Z,KAAKkb,QAAQnB,YAAY/Z,KAAKmgB,iBAAiBlgB,EAAErB,IAAIc,EAAEsB,UAAU+e,eAAe,SAASrgB,EAAEd,EAAEqB,GAAG,IAAIgB,EAAEd,EAAEF,EAAE0P,KAAK1O,EAAE,OAAOrC,EAAE0a,aAAa1a,EAAE4a,SAAS5a,EAAE2a,WAAW,EAAE,IAAI,IAAInY,EAAE,EAAEF,EAAE,EAAEC,EAAE,EAAEA,EAAEhB,EAAEY,OAAOI,IAAID,EAAEC,EAAEvC,EAAEma,MAAM9Y,EAAEkb,eAAe,MAAMhb,EAAEgB,GAAGC,IAAIA,EAAE,IAAIlB,EAAEgB,EAAEtC,EAAEma,MAAM3X,EAAEH,EAAErC,EAAEma,MAAM3X,EAAExC,EAAEoa,OAAOtZ,GAAG0B,EAAE,GAAGA,EAAE,GAAGlB,EAAEgB,EAAEtC,EAAEma,OAAO3X,EAAE,GAAGH,EAAErC,EAAEma,MAAM3X,EAAExC,EAAEoa,OAAOtZ,IAAIA,EAAEsB,UAAUgf,YAAY,SAAStgB,EAAEd,EAAEqB,GAAG,IAAIgB,EAAEd,EAAED,EAAEoC,SAASqd,gBAAgBxe,EAAE,QAAQvC,EAAEsa,eAAehZ,EAAE+C,aAAa,QAAQ,QAAQrE,EAAEua,YAAY,IAAIva,EAAE4a,SAAS,MAAM5a,EAAEwa,MAAMjZ,EAAE,OAAOvB,EAAE0a,aAAa1a,EAAE4a,SAAS5a,EAAE2a,WAAW3a,EAAEoa,OAAOpa,EAAE2a,WAAW3a,EAAE4a,SAAS,QAAQ5a,EAAEya,WAAWpZ,EAAEkb,eAAe,GAAGla,EAAE,EAAEf,EAAE+C,aAAa,cAAc,UAAU,SAASrE,EAAEya,WAAWpY,EAAEhB,EAAE8Y,MAAM,EAAE7Y,EAAE+C,aAAa,cAAc,SAAShC,EAAEhB,EAAE8Y,MAAM,EAAE7Y,EAAE+C,aAAa,cAAc,WAAW/C,EAAE+C,aAAa,IAAIhC,GAAGf,EAAE+C,aAAa,IAAI9C,GAAGD,EAAE0f,YAAYtd,SAAS8d,eAAengB,EAAE8X,OAAOrY,EAAEkgB,YAAY1f,KAAKR,EAAEsB,UAAUmf,iBAAiB,SAASzgB,EAAEd,GAAG,IAAIqB,EAAED,KAAK6f,IAAI5f,EAAEgD,aAAa,QAAQvD,EAAE,MAAMO,EAAEgD,aAAa,SAASrE,EAAE,MAAMqB,EAAEgD,aAAa,IAAI,OAAOhD,EAAEgD,aAAa,IAAI,OAAOhD,EAAEgD,aAAa,UAAU,OAAOvD,EAAE,IAAId,GAAGqB,EAAEgD,aAAa,QAAQ9B,GAAGlB,EAAEgD,aAAa,UAAU,OAAOhD,EAAEV,MAAM8gB,UAAU,iBAAiBrgB,KAAKkb,QAAQzB,aAAaxZ,EAAEV,MAAMka,WAAWzZ,KAAKkb,QAAQzB,aAAa/Z,EAApgE,GAAygEd,EAAE+B,QAAQH,GAAG,SAASd,EAAEd,EAAEqB,GAAG,aAAa,SAASgB,EAAEvB,GAAG,OAAOA,GAAGA,EAAEgB,WAAWhB,EAAE,CAACiB,QAAQjB,GAAG,SAASS,EAAET,EAAEd,GAAGwD,EAAEpB,UAAUpC,GAAGwD,EAAEpB,UAAUpC,EAAE0e,eAAelb,EAAEpB,UAAUpC,EAAEigB,eAAe,SAAS5e,EAAEgB,GAAG,IAAId,EAAEH,KAAK,OAAOG,EAAEmgB,cAAc1D,gBAAgB,WAAW,IAAIxb,GAAE,EAAGZ,EAAEG,SAASR,EAAEsc,SAASxb,GAAGC,EAAExB,EAAEd,GAAGuC,EAAEjB,EAAED,EAAEiB,EAAEE,GAAG,OAAOjB,EAAEogB,WAAWhV,KAAKpK,GAAGhB,KAAK,SAASD,EAAER,EAAEd,EAAEqB,GAAG,IAAIgB,EAAE,IAAIrC,EAAEc,EAAE,GAAGA,EAAEO,GAAG,IAAIgB,EAAE+W,QAAQ,MAAM,IAAIvX,EAAE8Z,sBAAsBtZ,EAAE0D,YAAY0G,KAAK3L,GAAG,IAAIS,EAAEc,EAAE4W,SAAS1X,GAAE,EAAGkB,EAAEV,SAASR,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAEY,OAAOb,IAAIC,EAAED,GAAGgb,SAAQ,EAAG1a,EAAEG,SAASV,EAAEE,EAAED,GAAGgb,SAAS,OAAO/a,EAAE,SAASiB,IAAI,OAAOD,EAAER,QAAQ0a,QAAQ,UAAUza,OAAOwM,KAAKjM,EAAER,SAAS,GAAG,SAASO,EAAExB,EAAEd,EAAEqB,GAAGrB,GAAE,EAAGyC,EAAEV,SAAS/B,GAAG,IAAI,IAAIqC,EAAE,EAAEA,EAAErC,EAAEmC,OAAOE,IAAIrC,EAAEqC,GAAGia,SAAQ,EAAG1a,EAAEG,SAASV,EAAErB,EAAEqC,GAAGia,UAAS,EAAGnX,EAAEpD,SAAS/B,EAAEqC,GAAGia,UAAS,EAAGnX,EAAEpD,SAASV,GAAG,IAAG,EAAGP,EAAEqd,UAAUrd,EAAEwK,QAAQtL,EAAEqB,GAAG0c,SAASjd,EAAEud,aAAavd,EAAEud,cAAc,IAAI9b,EAAEF,EAAEhB,EAAE,IAAIO,EAAES,EAAEhB,EAAE,IAAIoB,EAAEJ,EAAEhB,EAAE,KAAK8D,EAAE9C,EAAEhB,EAAE,KAAKsB,EAAEN,EAAEhB,EAAE,KAAKqB,EAAEL,EAAEhB,EAAE,IAAIQ,EAAER,EAAE,GAAG2D,EAAE3C,EAAEhB,EAAE,IAAImC,EAAE,aAAaD,EAAE,SAASzC,EAAEd,EAAEqB,GAAG,IAAIgB,EAAE,IAAImB,EAAE,QAAG,IAAS1C,EAAE,MAAM4a,MAAM,yCAAyC,OAAOrZ,EAAEuf,mBAAkB,EAAGjf,EAAEZ,SAASjB,GAAGuB,EAAEsf,WAAW,GAAGtf,EAAEwb,SAAS7Y,EAAEjD,QAAQM,EAAEqf,cAAc,IAAIhf,EAAEX,QAAQM,QAAG,IAASrC,KAAKqB,EAAEA,GAAG,IAAIgZ,SAAShZ,EAAEgZ,OAAO7X,KAAKH,EAAEia,QAAQjb,GAAGA,EAAEgZ,QAAQra,EAAEqB,GAAG0c,UAAU1b,GAAG,IAAI,IAAIO,KAAKW,EAAEse,UAAU,SAAS/gB,GAAG,OAAOyB,EAAER,QAAQjB,IAAIyB,EAAER,QAAQQ,EAAER,QAAQ9B,eAAe2C,IAAIrB,EAAEgB,EAAER,QAAQa,GAAGY,EAAEpB,UAAUka,QAAQ,SAASxb,GAAG,OAAOM,KAAKyc,UAAS,EAAGjc,EAAEG,SAASX,KAAKyc,SAAS/c,GAAGM,MAAMoC,EAAEpB,UAAU0f,MAAM,SAAShhB,GAAG,IAAId,EAAE,IAAI+hB,OAAOjhB,GAAG,OAAOM,KAAKugB,WAAWhV,KAAK,CAACoE,KAAK/Q,IAAIoB,MAAMoC,EAAEpB,UAAUqB,KAAK,WAAW,IAAI3C,EAAE,IAAI,IAAId,KAAKwG,MAAM0G,QAAQ9L,KAAKwgB,qBAAqBxgB,KAAKwgB,kBAAkB,CAACxgB,KAAKwgB,oBAAoBxgB,KAAKwgB,kBAAkB,CAAC9gB,EAAEM,KAAKwgB,kBAAkB5hB,GAAG,IAAIqB,GAAE,EAAGO,EAAEG,SAASX,KAAKyc,SAAS/c,EAAEwb,SAAS,QAAQjb,EAAEgZ,SAAShZ,EAAEgZ,OAAO7X,KAAKF,EAAExB,EAAEQ,EAAED,EAAE0F,MAAMxE,EAAER,QAAQV,EAAEgZ,OAAOqE,eAAerd,GAAGA,KAAKmC,EAAEpB,UAAU2b,OAAO,WAAW,GAAGvX,MAAM0G,QAAQ9L,KAAKwgB,mBAAmB,IAAI,IAAI9gB,KAAKM,KAAKwgB,kBAAkBtf,EAAElB,KAAKwgB,kBAAkB9gB,GAAGM,KAAKugB,WAAWvgB,KAAKyc,eAAevb,EAAElB,KAAKwgB,kBAAkBxgB,KAAKugB,WAAWvgB,KAAKyc,UAAU,OAAOzc,MAAMoC,EAAEpB,UAAU0b,UAAU9Y,EAAEjD,QAAQ,oBAAoB6B,SAASA,OAAOoe,UAAUze,GAAG,oBAAoB0e,SAASA,OAAOC,GAAGF,UAAU,SAASlhB,EAAEd,GAAG,IAAIqB,EAAE,GAAG,OAAO4gB,OAAO7gB,MAAMgS,KAAK,WAAW/R,EAAEsL,KAAKvL,QAAQmC,EAAElC,EAAEP,EAAEd,KAAKc,EAAEC,QAAQwC,KACx8pC,WAAW,SAASzC,EAAEA,GAAGM,KAAK+gB,KAAK3f,EAAE4f,eAAehhB,KAAK2P,KAAKjQ,EAAEM,KAAKihB,WAAW,GAAG,IAAI,IAAIriB,EAAE,GAAGqC,EAAE,EAAEf,EAAEF,KAAK2P,KAAK5O,OAAOb,EAAEe,EAAEA,IAAI,CAAC,IAAId,EAAEH,KAAK2P,KAAKuI,WAAWjX,GAAGd,EAAE,OAAOvB,EAAE,GAAG,KAAK,QAAQuB,KAAK,GAAGvB,EAAE,GAAG,KAAK,OAAOuB,KAAK,GAAGvB,EAAE,GAAG,KAAK,KAAKuB,KAAK,EAAEvB,EAAE,GAAG,IAAI,GAAGuB,GAAGA,EAAE,MAAMvB,EAAE,GAAG,KAAK,MAAMuB,KAAK,GAAGvB,EAAE,GAAG,KAAK,KAAKuB,KAAK,EAAEvB,EAAE,GAAG,IAAI,GAAGuB,GAAGA,EAAE,KAAKvB,EAAE,GAAG,KAAK,KAAKuB,KAAK,EAAEvB,EAAE,GAAG,IAAI,GAAGuB,GAAGvB,EAAE,GAAGuB,EAAEH,KAAKihB,WAAWjhB,KAAKihB,WAAW1b,OAAO3G,GAAGoB,KAAKihB,WAAWlgB,QAAQf,KAAK2P,KAAK5O,SAASf,KAAKihB,WAAW5T,QAAQ,KAAKrN,KAAKihB,WAAW5T,QAAQ,KAAKrN,KAAKihB,WAAW5T,QAAQ,MAAM,SAASzO,EAAEc,EAAEd,GAAGoB,KAAKkhB,WAAWxhB,EAAEM,KAAKmhB,kBAAkBviB,EAAEoB,KAAKohB,QAAQ,KAAKphB,KAAKqhB,YAAY,EAAErhB,KAAKshB,UAAU,KAAKthB,KAAKuhB,SAAS,GAAG,SAAStgB,EAAEvB,EAAEd,GAAG,GAAG,MAAMc,EAAEqB,OAAO,MAAM,IAAIuZ,MAAM5a,EAAEqB,OAAO,IAAInC,GAAG,IAAI,IAAIqC,EAAE,EAAEA,EAAEvB,EAAEqB,QAAQ,GAAGrB,EAAEuB,IAAIA,IAAIjB,KAAKwhB,IAAI,IAAIpc,MAAM1F,EAAEqB,OAAOE,EAAErC,GAAG,IAAI,IAAIsB,EAAE,EAAEA,EAAER,EAAEqB,OAAOE,EAAEf,IAAIF,KAAKwhB,IAAIthB,GAAGR,EAAEQ,EAAEe,GAAG,SAASf,EAAER,EAAEd,GAAGoB,KAAKyhB,WAAW/hB,EAAEM,KAAK0hB,UAAU9iB,EAAE,SAASuB,IAAIH,KAAK2hB,OAAO,GAAG3hB,KAAKe,OAAO,EAAE,SAASd,IAAI,IAAIP,GAAE,EAAGd,EAAEuH,UAAUC,UAAU,MAAM,WAAW7B,KAAK3F,KAAKc,GAAE,EAAGkiB,KAAKhjB,EAAEoG,WAAWkO,MAAM,2BAA2B0O,MAAMA,KAAK,KAAKliB,EAAEmiB,WAAWD,KAAK,MAAMliB,EAAoWA,EAAEsB,UAAU,CAAC8gB,UAAU,WAAW,OAAO9hB,KAAKihB,WAAWlgB,QAAQghB,MAAM,SAASriB,GAAG,IAAI,IAAId,EAAE,EAAEqC,EAAEjB,KAAKihB,WAAWlgB,OAAOE,EAAErC,EAAEA,IAAIc,EAAEmX,IAAI7W,KAAKihB,WAAWriB,GAAG,KAAKA,EAAEoC,UAAU,CAACghB,QAAQ,SAASpjB,GAAG,IAAIqC,EAAE,IAAIvB,EAAEd,GAAGoB,KAAKuhB,SAAShW,KAAKtK,GAAGjB,KAAKshB,UAAU,MAAMW,OAAO,SAASviB,EAAEd,GAAG,GAAG,EAAEc,GAAGM,KAAKqhB,aAAa3hB,GAAG,EAAEd,GAAGoB,KAAKqhB,aAAaziB,EAAE,MAAM,IAAI0b,MAAM5a,EAAE,IAAId,GAAG,OAAOoB,KAAKohB,QAAQ1hB,GAAGd,IAAIsjB,eAAe,WAAW,OAAOliB,KAAKqhB,aAAac,KAAK,WAAWniB,KAAKoiB,UAAS,EAAGpiB,KAAKqiB,uBAAuBD,SAAS,SAAS1iB,EAAEuB,GAAGjB,KAAKqhB,YAAY,EAAErhB,KAAKkhB,WAAW,GAAGlhB,KAAKohB,QAAQ,IAAIhc,MAAMpF,KAAKqhB,aAAa,IAAI,IAAInhB,EAAE,EAAEA,EAAEF,KAAKqhB,YAAYnhB,IAAI,CAACF,KAAKohB,QAAQlhB,GAAG,IAAIkF,MAAMpF,KAAKqhB,aAAa,IAAI,IAAIlhB,EAAE,EAAEA,EAAEH,KAAKqhB,YAAYlhB,IAAIH,KAAKohB,QAAQlhB,GAAGC,GAAG,KAAKH,KAAKsiB,0BAA0B,EAAE,GAAGtiB,KAAKsiB,0BAA0BtiB,KAAKqhB,YAAY,EAAE,GAAGrhB,KAAKsiB,0BAA0B,EAAEtiB,KAAKqhB,YAAY,GAAGrhB,KAAKuiB,6BAA6BviB,KAAKwiB,qBAAqBxiB,KAAKyiB,cAAc/iB,EAAEuB,GAAGjB,KAAKkhB,YAAY,GAAGlhB,KAAK0iB,gBAAgBhjB,GAAG,MAAMM,KAAKshB,YAAYthB,KAAKshB,UAAU1iB,EAAE+jB,WAAW3iB,KAAKkhB,WAAWlhB,KAAKmhB,kBAAkBnhB,KAAKuhB,WAAWvhB,KAAK4iB,QAAQ5iB,KAAKshB,UAAUrgB,IAAIqhB,0BAA0B,SAAS5iB,EAAEd,GAAG,IAAI,IAAIqC,GAAG,EAAE,GAAGA,EAAEA,IAAI,MAAM,GAAGvB,EAAEuB,GAAGjB,KAAKqhB,aAAa3hB,EAAEuB,GAAG,IAAI,IAAIf,GAAG,EAAE,GAAGA,EAAEA,KAAK,GAAGtB,EAAEsB,GAAGF,KAAKqhB,aAAaziB,EAAEsB,IAAIF,KAAKohB,QAAQ1hB,EAAEuB,GAAGrC,EAAEsB,GAAGe,GAAG,GAAG,GAAGA,IAAI,GAAGf,GAAG,GAAGA,IAAIA,GAAG,GAAG,GAAGA,IAAI,GAAGe,GAAG,GAAGA,IAAIA,GAAG,GAAG,GAAGA,GAAGf,GAAG,GAAG,GAAGA,IAAImiB,mBAAmB,WAAW,IAAI,IAAI3iB,EAAE,EAAEd,EAAE,EAAEqC,EAAE,EAAE,EAAEA,EAAEA,IAAI,CAACjB,KAAKoiB,UAAS,EAAGnhB,GAAG,IAAIf,EAAEqB,EAAEshB,aAAa7iB,OAAO,GAAGiB,GAAGvB,EAAEQ,KAAKR,EAAEQ,EAAEtB,EAAEqC,GAAG,OAAOrC,GAAGkkB,gBAAgB,SAASpjB,EAAEd,EAAEqC,GAAG,IAAIf,EAAER,EAAEqjB,qBAAqBnkB,EAAEqC,GAAGjB,KAAKmiB,OAAO,IAAI,IAAIhiB,EAAE,EAAEA,EAAEH,KAAKohB,QAAQrgB,OAAOZ,IAAI,IAAI,IAAIF,EAAE,EAAEE,EAAEe,EAAE,EAAEA,EAAElB,KAAKohB,QAAQjhB,GAAGY,OAAOG,IAAI,CAAC,IAAIE,EAAE,EAAEF,EAAElB,KAAKohB,QAAQjhB,GAAGe,KAAKhB,EAAE8iB,UAAU,EAAE,KAAK9iB,EAAE+iB,OAAO7hB,EAAEnB,GAAGC,EAAEgjB,OAAO9hB,EAAE,EAAEnB,GAAGC,EAAEgjB,OAAO9hB,EAAE,EAAEnB,EAAE,GAAGC,EAAEgjB,OAAO9hB,EAAEnB,EAAE,GAAGC,EAAEijB,WAAW,OAAOjjB,GAAGsiB,mBAAmB,WAAW,IAAI,IAAI9iB,EAAE,EAAEA,EAAEM,KAAKqhB,YAAY,EAAE3hB,IAAI,MAAMM,KAAKohB,QAAQ1hB,GAAG,KAAKM,KAAKohB,QAAQ1hB,GAAG,GAAG,GAAGA,EAAE,GAAG,IAAI,IAAId,EAAE,EAAEA,EAAEoB,KAAKqhB,YAAY,EAAEziB,IAAI,MAAMoB,KAAKohB,QAAQ,GAAGxiB,KAAKoB,KAAKohB,QAAQ,GAAGxiB,GAAG,GAAGA,EAAE,IAAI2jB,2BAA2B,WAAW,IAAI,IAAI7iB,EAAE6B,EAAE6hB,mBAAmBpjB,KAAKkhB,YAAYtiB,EAAE,EAAEA,EAAEc,EAAEqB,OAAOnC,IAAI,IAAI,IAAIqC,EAAE,EAAEA,EAAEvB,EAAEqB,OAAOE,IAAI,CAAC,IAAIf,EAAER,EAAEd,GAAGuB,EAAET,EAAEuB,GAAG,GAAG,MAAMjB,KAAKohB,QAAQlhB,GAAGC,GAAG,IAAI,IAAIF,GAAG,EAAE,GAAGA,EAAEA,IAAI,IAAI,IAAIiB,GAAG,EAAE,GAAGA,EAAEA,IAAIlB,KAAKohB,QAAQlhB,EAAED,GAAGE,EAAEe,IAAI,GAAGjB,GAAG,GAAGA,IAAI,GAAGiB,GAAG,GAAGA,GAAG,GAAGjB,GAAG,GAAGiB,IAAIwhB,gBAAgB,SAAShjB,GAAG,IAAI,IAAId,EAAE2C,EAAE8hB,iBAAiBrjB,KAAKkhB,YAAYjgB,EAAE,EAAE,GAAGA,EAAEA,IAAI,CAAC,IAAIf,GAAGR,GAAG,IAAI,EAAEd,GAAGqC,GAAGjB,KAAKohB,QAAQnc,KAAK4T,MAAM5X,EAAE,IAAIA,EAAE,EAAEjB,KAAKqhB,YAAY,EAAE,GAAGnhB,EAAE,IAAIe,EAAE,EAAE,GAAGA,EAAEA,IAAKf,GAAGR,GAAG,IAAI,EAAEd,GAAGqC,GAAGjB,KAAKohB,QAAQngB,EAAE,EAAEjB,KAAKqhB,YAAY,EAAE,GAAGpc,KAAK4T,MAAM5X,EAAE,IAAIf,GAAIuiB,cAAc,SAAS/iB,EAAEd,GAAG,IAAI,IAAIqC,EAAEjB,KAAKmhB,mBAAmB,EAAEviB,EAAEsB,EAAEqB,EAAE+hB,eAAeriB,GAAGd,EAAE,EAAE,GAAGA,EAAEA,IAAI,CAAC,IAAIF,GAAGP,GAAG,IAAI,EAAEQ,GAAGC,GAAG,EAAEA,EAAEH,KAAKohB,QAAQjhB,GAAG,GAAGF,EAAE,EAAEE,EAAEH,KAAKohB,QAAQjhB,EAAE,GAAG,GAAGF,EAAED,KAAKohB,QAAQphB,KAAKqhB,YAAY,GAAGlhB,GAAG,GAAGF,EAAE,IAAIE,EAAE,EAAE,GAAGA,EAAEA,IAAKF,GAAGP,GAAG,IAAI,EAAEQ,GAAGC,GAAG,EAAEA,EAAEH,KAAKohB,QAAQ,GAAGphB,KAAKqhB,YAAYlhB,EAAE,GAAGF,EAAE,EAAEE,EAAEH,KAAKohB,QAAQ,GAAG,GAAGjhB,EAAE,EAAE,GAAGF,EAAED,KAAKohB,QAAQ,GAAG,GAAGjhB,EAAE,GAAGF,EAAED,KAAKohB,QAAQphB,KAAKqhB,YAAY,GAAG,IAAI3hB,GAAGkjB,QAAQ,SAASljB,EAAEd,GAAG,IAAI,IAAIqC,GAAG,EAAEf,EAAEF,KAAKqhB,YAAY,EAAElhB,EAAE,EAAEF,EAAE,EAAEiB,EAAElB,KAAKqhB,YAAY,EAAEngB,EAAE,EAAEA,GAAG,EAAE,IAAI,GAAGA,GAAGA,MAAM,CAAC,IAAI,IAAIE,EAAE,EAAE,EAAEA,EAAEA,IAAI,GAAG,MAAMpB,KAAKohB,QAAQlhB,GAAGgB,EAAEE,GAAG,CAAC,IAAI2C,GAAE,EAAG9D,EAAEP,EAAEqB,SAASgD,EAAE,IAAI,EAAErE,EAAEO,KAAKE,IAAIoB,EAAEgiB,QAAQ3kB,EAAEsB,EAAEgB,EAAEE,KAAK2C,GAAGA,GAAG/D,KAAKohB,QAAQlhB,GAAGgB,EAAEE,GAAG2C,GAAG,KAAK5D,IAAIF,IAAIE,EAAE,GAAG,GAAG,GAAGD,GAAGe,IAAIjB,KAAKqhB,aAAanhB,EAAE,CAACA,GAAGe,EAAEA,GAAGA,EAAE,UAAUrC,EAAE4kB,KAAK,IAAI5kB,EAAE6kB,KAAK,GAAG7kB,EAAE+jB,WAAW,SAASjjB,EAAEuB,EAAEhB,GAAG,IAAI,IAAIiB,EAAEhB,EAAEwjB,YAAYhkB,EAAEuB,GAAGG,EAAE,IAAIjB,EAAE4D,EAAE,EAAEA,EAAE9D,EAAEc,OAAOgD,IAAI,CAAC,IAAI5C,EAAElB,EAAE8D,GAAG3C,EAAEyV,IAAI1V,EAAE4f,KAAK,GAAG3f,EAAEyV,IAAI1V,EAAE2gB,YAAYvgB,EAAEoiB,gBAAgBxiB,EAAE4f,KAAKrhB,IAAIyB,EAAE4gB,MAAM3gB,GAAG,IAAIC,EAAE,EAAE,IAAI0C,EAAE,EAAEA,EAAE7C,EAAEH,OAAOgD,IAAI1C,GAAGH,EAAE6C,GAAG2d,UAAU,GAAGtgB,EAAEuiB,kBAAkB,EAAEtiB,EAAE,MAAM,IAAIiZ,MAAM,0BAA0BlZ,EAAEuiB,kBAAkB,IAAI,EAAEtiB,EAAE,KAAK,IAAID,EAAEuiB,kBAAkB,GAAG,EAAEtiB,GAAGD,EAAEyV,IAAI,EAAE,GAAG,GAAGzV,EAAEuiB,kBAAkB,GAAGviB,EAAEwiB,QAAO,GAAI,OAAOxiB,EAAEuiB,mBAAmB,EAAEtiB,IAAKD,EAAEyV,IAAIjY,EAAE4kB,KAAK,GAAKpiB,EAAEuiB,mBAAmB,EAAEtiB,KAAKD,EAAEyV,IAAIjY,EAAE6kB,KAAK,GAAG,OAAO7kB,EAAEilB,YAAYziB,EAAEF,IAAItC,EAAEilB,YAAY,SAASnkB,EAAEd,GAAG,IAAI,IAAIsB,EAAE,EAAEC,EAAE,EAAEF,EAAE,EAAEiB,EAAE,IAAIkE,MAAMxG,EAAEmC,QAAQK,EAAE,IAAIgE,MAAMxG,EAAEmC,QAAQgD,EAAE,EAAEA,EAAEnF,EAAEmC,OAAOgD,IAAI,CAAC,IAAI5C,EAAEvC,EAAEmF,GAAG2d,UAAUrgB,EAAEzC,EAAEmF,GAAG0d,WAAWtgB,EAAEhB,EAAE8E,KAAKC,IAAI/E,EAAEgB,GAAGlB,EAAEgF,KAAKC,IAAIjF,EAAEoB,GAAGH,EAAE6C,GAAG,IAAIqB,MAAMjE,GAAG,IAAI,IAAIyC,EAAE,EAAEA,EAAE1C,EAAE6C,GAAGhD,OAAO6C,IAAI1C,EAAE6C,GAAGH,GAAG,IAAIlE,EAAEiiB,OAAO/d,EAAE1D,GAAGA,GAAGiB,EAAE,IAAIG,EAAEC,EAAEuiB,0BAA0BziB,GAAGb,EAAE,IAAIS,EAAEC,EAAE6C,GAAGzC,EAAEwgB,YAAY,GAAGiC,IAAIziB,GAAmC,IAAhCF,EAAE2C,GAAG,IAAIqB,MAAM9D,EAAEwgB,YAAY,GAAOle,EAAE,EAAEA,EAAExC,EAAE2C,GAAGhD,OAAO6C,IAAI,CAAC,IAAInD,EAAEmD,EAAEpD,EAAEshB,YAAY1gB,EAAE2C,GAAGhD,OAAOK,EAAE2C,GAAGH,GAAGnD,GAAG,EAAED,EAAEgL,IAAI/K,GAAG,GAAG,IAAIF,EAAE,EAAE,IAAIqD,EAAE,EAAEA,EAAEhF,EAAEmC,OAAO6C,IAAIrD,GAAG3B,EAAEgF,GAAG6d,WAAW,IAAIuC,EAAE,IAAI5e,MAAM7E,GAAG4B,EAAE,EAAE,IAAIyB,EAAE,EAAEzD,EAAEyD,EAAEA,IAAI,IAAIG,EAAE,EAAEA,EAAEnF,EAAEmC,OAAOgD,IAAIH,EAAE1C,EAAE6C,GAAGhD,SAASijB,EAAE7hB,KAAKjB,EAAE6C,GAAGH,IAAI,IAAIA,EAAE,EAAE3D,EAAE2D,EAAEA,IAAI,IAAIG,EAAE,EAAEA,EAAEnF,EAAEmC,OAAOgD,IAAIH,EAAExC,EAAE2C,GAAGhD,SAASijB,EAAE7hB,KAAKf,EAAE2C,GAAGH,IAAI,OAAOogB,GAAG,IAAI,IAAI5iB,EAAE,CAAC6iB,YAAY,EAAEC,eAAe,EAAElD,eAAe,EAAEmD,WAAW,GAAGpgB,EAAE,CAACqgB,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,GAAGpjB,EAAE,CAACqjB,WAAW,EAAEC,WAAW,EAAEC,WAAW,EAAEC,WAAW,EAAEC,WAAW,EAAEC,WAAW,EAAEC,WAAW,EAAEC,WAAW,GAAGxjB,EAAE,CAACyjB,uBAAuB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,MAAMC,IAAI,KAAKC,IAAI,KAAKC,SAAS,MAAM7B,eAAe,SAAS5jB,GAAG,IAAI,IAAId,EAAEc,GAAG,GAAG6B,EAAE6jB,YAAYxmB,GAAG2C,EAAE6jB,YAAY7jB,EAAE0jB,MAAM,GAAGrmB,GAAG2C,EAAE0jB,KAAK1jB,EAAE6jB,YAAYxmB,GAAG2C,EAAE6jB,YAAY7jB,EAAE0jB,KAAK,OAAOvlB,GAAG,GAAGd,GAAG2C,EAAE4jB,UAAU9B,iBAAiB,SAAS3jB,GAAG,IAAI,IAAId,EAAEc,GAAG,GAAG6B,EAAE6jB,YAAYxmB,GAAG2C,EAAE6jB,YAAY7jB,EAAE2jB,MAAM,GAAGtmB,GAAG2C,EAAE2jB,KAAK3jB,EAAE6jB,YAAYxmB,GAAG2C,EAAE6jB,YAAY7jB,EAAE2jB,KAAK,OAAOxlB,GAAG,GAAGd,GAAGwmB,YAAY,SAAS1lB,GAAG,IAAI,IAAId,EAAE,EAAE,GAAGc,GAAGd,IAAIc,KAAK,EAAE,OAAOd,GAAGwkB,mBAAmB,SAAS1jB,GAAG,OAAO6B,EAAEyjB,uBAAuBtlB,EAAE,IAAI6jB,QAAQ,SAAS7jB,EAAEd,EAAEqC,GAAG,OAAOvB,GAAG,KAAKyB,EAAEqjB,WAAW,OAAO,IAAI5lB,EAAEqC,GAAG,EAAE,KAAKE,EAAEsjB,WAAW,OAAO,GAAG7lB,EAAE,EAAE,KAAKuC,EAAEujB,WAAW,OAAO,GAAGzjB,EAAE,EAAE,KAAKE,EAAEwjB,WAAW,OAAO,IAAI/lB,EAAEqC,GAAG,EAAE,KAAKE,EAAEyjB,WAAW,OAAO,IAAI3f,KAAK4T,MAAMja,EAAE,GAAGqG,KAAK4T,MAAM5X,EAAE,IAAI,EAAE,KAAKE,EAAE0jB,WAAW,OAAO,GAAGjmB,EAAEqC,EAAE,EAAErC,EAAEqC,EAAE,EAAE,KAAKE,EAAE2jB,WAAW,OAAO,IAAIlmB,EAAEqC,EAAE,EAAErC,EAAEqC,EAAE,GAAG,EAAE,KAAKE,EAAE4jB,WAAW,OAAO,IAAInmB,EAAEqC,EAAE,GAAGrC,EAAEqC,GAAG,GAAG,EAAE,QAAQ,MAAM,IAAIqZ,MAAM,mBAAmB5a,KAAKokB,0BAA0B,SAASpkB,GAAG,IAAI,IAAId,EAAE,IAAIqC,EAAE,CAAC,GAAG,GAAGf,EAAE,EAAER,EAAEQ,EAAEA,IAAItB,EAAEA,EAAEymB,SAAS,IAAIpkB,EAAE,CAAC,EAAEI,EAAEikB,KAAKplB,IAAI,IAAI,OAAOtB,GAAG+kB,gBAAgB,SAASjkB,EAAEd,GAAG,GAAGA,GAAG,GAAG,GAAGA,EAAE,OAAOc,GAAG,KAAK0B,EAAE6iB,YAAY,OAAO,GAAG,KAAK7iB,EAAE8iB,eAAe,OAAO,EAAE,KAAK9iB,EAAE4f,eAAe,KAAK5f,EAAE+iB,WAAW,OAAO,EAAE,QAAQ,MAAM,IAAI7J,MAAM,QAAQ5a,QAAQ,GAAG,GAAGd,EAAE,OAAOc,GAAG,KAAK0B,EAAE6iB,YAAY,OAAO,GAAG,KAAK7iB,EAAE8iB,eAAe,OAAO,GAAG,KAAK9iB,EAAE4f,eAAe,OAAO,GAAG,KAAK5f,EAAE+iB,WAAW,OAAO,GAAG,QAAQ,MAAM,IAAI7J,MAAM,QAAQ5a,OAAO,CAAC,KAAK,GAAGd,GAAG,MAAM,IAAI0b,MAAM,QAAQ1b,GAAG,OAAOc,GAAG,KAAK0B,EAAE6iB,YAAY,OAAO,GAAG,KAAK7iB,EAAE8iB,eAAe,OAAO,GAAG,KAAK9iB,EAAE4f,eAAe,OAAO,GAAG,KAAK5f,EAAE+iB,WAAW,OAAO,GAAG,QAAQ,MAAM,IAAI7J,MAAM,QAAQ5a,MAAMmjB,aAAa,SAASnjB,GAAG,IAAI,IAAId,EAAEc,EAAEwiB,iBAAiBjhB,EAAE,EAAEf,EAAE,EAAEtB,EAAEsB,EAAEA,IAAI,IAAI,IAAIC,EAAE,EAAEvB,EAAEuB,EAAEA,IAAI,CAAC,IAAI,IAAIF,EAAE,EAAEiB,EAAExB,EAAEuiB,OAAO/hB,EAAEC,GAAGiB,GAAG,EAAE,GAAGA,EAAEA,IAAI,KAAK,EAAElB,EAAEkB,GAAGlB,EAAEkB,GAAGxC,GAAG,IAAI,IAAImF,GAAG,EAAE,GAAGA,EAAEA,IAAI,EAAE5D,EAAE4D,GAAG5D,EAAE4D,GAAGnF,IAAI,GAAGwC,GAAG,GAAG2C,IAAI7C,GAAGxB,EAAEuiB,OAAO/hB,EAAEkB,EAAEjB,EAAE4D,IAAI9D,IAAIA,EAAE,IAAIgB,GAAG,EAAEhB,EAAE,GAAG,IAAIC,EAAE,EAAEtB,EAAE,EAAEsB,EAAEA,IAAI,IAAIC,EAAE,EAAEvB,EAAE,EAAEuB,EAAEA,IAAI,CAAC,IAAIgB,EAAE,EAAEzB,EAAEuiB,OAAO/hB,EAAEC,IAAIgB,IAAIzB,EAAEuiB,OAAO/hB,EAAE,EAAEC,IAAIgB,IAAIzB,EAAEuiB,OAAO/hB,EAAEC,EAAE,IAAIgB,IAAIzB,EAAEuiB,OAAO/hB,EAAE,EAAEC,EAAE,IAAIgB,KAAK,GAAGA,GAAG,GAAGA,KAAKF,GAAG,GAAG,IAAIf,EAAE,EAAEtB,EAAEsB,EAAEA,IAAI,IAAIC,EAAE,EAAEvB,EAAE,EAAEuB,EAAEA,IAAIT,EAAEuiB,OAAO/hB,EAAEC,KAAKT,EAAEuiB,OAAO/hB,EAAEC,EAAE,IAAIT,EAAEuiB,OAAO/hB,EAAEC,EAAE,IAAIT,EAAEuiB,OAAO/hB,EAAEC,EAAE,IAAIT,EAAEuiB,OAAO/hB,EAAEC,EAAE,KAAKT,EAAEuiB,OAAO/hB,EAAEC,EAAE,IAAIT,EAAEuiB,OAAO/hB,EAAEC,EAAE,KAAKc,GAAG,IAAI,IAAId,EAAE,EAAEvB,EAAEuB,EAAEA,IAAI,IAAID,EAAE,EAAEtB,EAAE,EAAEsB,EAAEA,IAAIR,EAAEuiB,OAAO/hB,EAAEC,KAAKT,EAAEuiB,OAAO/hB,EAAE,EAAEC,IAAIT,EAAEuiB,OAAO/hB,EAAE,EAAEC,IAAIT,EAAEuiB,OAAO/hB,EAAE,EAAEC,IAAIT,EAAEuiB,OAAO/hB,EAAE,EAAEC,KAAKT,EAAEuiB,OAAO/hB,EAAE,EAAEC,IAAIT,EAAEuiB,OAAO/hB,EAAE,EAAEC,KAAKc,GAAG,IAAI,IAAIM,EAAE,EAAE,IAAIpB,EAAE,EAAEvB,EAAEuB,EAAEA,IAAI,IAAID,EAAE,EAAEtB,EAAEsB,EAAEA,IAAIR,EAAEuiB,OAAO/hB,EAAEC,IAAIoB,IAAI,OAAON,EAAMgE,KAAKsgB,IAAI,IAAIhkB,EAAE3C,EAAEA,EAAE,IAAI,EAA3B,KAAgCyC,EAAE,CAACmkB,KAAK,SAAS9lB,GAAG,GAAG,EAAEA,EAAE,MAAM,IAAI4a,MAAM,QAAQ5a,EAAE,KAAK,OAAO2B,EAAEokB,UAAU/lB,IAAI4lB,KAAK,SAAS5lB,GAAG,KAAK,EAAEA,GAAGA,GAAG,IAAI,KAAKA,GAAG,KAAKA,GAAG,IAAI,OAAO2B,EAAEqkB,UAAUhmB,IAAIgmB,UAAU,IAAItgB,MAAM,KAAKqgB,UAAU,IAAIrgB,MAAM,MAAMxB,EAAE,EAAE,EAAEA,EAAEA,IAAIvC,EAAEqkB,UAAU9hB,GAAG,GAAGA,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAEA,IAAIvC,EAAEqkB,UAAU9hB,GAAGvC,EAAEqkB,UAAU9hB,EAAE,GAAGvC,EAAEqkB,UAAU9hB,EAAE,GAAGvC,EAAEqkB,UAAU9hB,EAAE,GAAGvC,EAAEqkB,UAAU9hB,EAAE,GAAG,IAAIA,EAAE,EAAE,IAAIA,EAAEA,IAAIvC,EAAEokB,UAAUpkB,EAAEqkB,UAAU9hB,IAAIA,EAAE3C,EAAED,UAAU,CAACwK,IAAI,SAAS9L,GAAG,OAAOM,KAAKwhB,IAAI9hB,IAAIoiB,UAAU,WAAW,OAAO9hB,KAAKwhB,IAAIzgB,QAAQskB,SAAS,SAAS3lB,GAAG,IAAI,IAAId,EAAE,IAAIwG,MAAMpF,KAAK8hB,YAAYpiB,EAAEoiB,YAAY,GAAG5hB,EAAE,EAAEA,EAAEF,KAAK8hB,YAAY5hB,IAAI,IAAI,IAAIC,EAAE,EAAEA,EAAET,EAAEoiB,YAAY3hB,IAAIvB,EAAEsB,EAAEC,IAAIkB,EAAEikB,KAAKjkB,EAAEmkB,KAAKxlB,KAAKwL,IAAItL,IAAImB,EAAEmkB,KAAK9lB,EAAE8L,IAAIrL,KAAK,OAAO,IAAIc,EAAErC,EAAE,IAAImlB,IAAI,SAASrkB,GAAG,GAAGM,KAAK8hB,YAAYpiB,EAAEoiB,YAAY,EAAE,OAAO9hB,KAAK,IAAI,IAAIpB,EAAEyC,EAAEmkB,KAAKxlB,KAAKwL,IAAI,IAAInK,EAAEmkB,KAAK9lB,EAAE8L,IAAI,IAAItL,EAAE,IAAIkF,MAAMpF,KAAK8hB,aAAa3hB,EAAE,EAAEA,EAAEH,KAAK8hB,YAAY3hB,IAAID,EAAEC,GAAGH,KAAKwL,IAAIrL,GAAG,IAAIA,EAAE,EAAEA,EAAET,EAAEoiB,YAAY3hB,IAAID,EAAEC,IAAIkB,EAAEikB,KAAKjkB,EAAEmkB,KAAK9lB,EAAE8L,IAAIrL,IAAIvB,GAAG,OAAO,IAAIqC,EAAEf,EAAE,GAAG6jB,IAAIrkB,KAAKQ,EAAEylB,eAAe,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,C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","file":"CelebrationScripts.min.js","sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(n){if(o[n])return o[n].exports;var i=o[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var o={};return t.m=e,t.c=o,t.p=\"dist/\",t(0)}([function(e,t,o){\"use strict\";function n(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},r=(n(o(1)),o(6)),a=n(r),c=n(o(7)),u=n(o(8)),s=n(o(9)),f=n(o(10)),d=n(o(11)),l=n(o(14)),m=[],p=!1,b={offset:120,delay:0,easing:\"ease\",duration:400,disable:!1,once:!1,startEvent:\"DOMContentLoaded\",throttleDelay:99,debounceDelay:50,disableMutationObserver:!1},v=function(){if(arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&(p=!0),p)return m=(0,d.default)(m,b),(0,f.default)(m,b.once),m},y=function(){m=(0,l.default)(),v()};e.exports={init:function(e){b=i(b,e),m=(0,l.default)();var t=document.all&&!window.atob;return function(e){return!0===e||\"mobile\"===e&&s.default.mobile()||\"phone\"===e&&s.default.phone()||\"tablet\"===e&&s.default.tablet()||\"function\"==typeof e&&!0===e()}(b.disable)||t?void m.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")}):(document.querySelector(\"body\").setAttribute(\"data-aos-easing\",b.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",b.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",b.delay),\"DOMContentLoaded\"===b.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?v(!0):\"load\"===b.startEvent?window.addEventListener(b.startEvent,function(){v(!0)}):document.addEventListener(b.startEvent,function(){v(!0)}),window.addEventListener(\"resize\",(0,c.default)(v,b.debounceDelay,!0)),window.addEventListener(\"orientationchange\",(0,c.default)(v,b.debounceDelay,!0)),window.addEventListener(\"scroll\",(0,a.default)(function(){(0,f.default)(m,b.once)},b.throttleDelay)),b.disableMutationObserver||(0,u.default)(\"[data-aos]\",y),m)},refresh:v,refreshHard:y}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function o(e,t,o){function i(t){var o=d,n=l;return d=l=void 0,y=t,p=e.apply(n,o)}function a(e){var o=e-v;return void 0===v||o>=t||o<0||x&&e-y>=m}function u(){var e=k();return a(e)?s(e):void(b=setTimeout(u,function(e){var o=t-(e-v);return x?w(o,m-(e-y)):o}(e)))}function s(e){return b=void 0,j&&d?i(e):(d=l=void 0,p)}function f(){var e=k(),o=a(e);if(d=arguments,l=this,v=e,o){if(void 0===b)return function(e){return y=e,b=setTimeout(u,t),g?i(e):p}(v);if(x)return b=setTimeout(u,t),i(v)}return void 0===b&&(b=setTimeout(u,t)),p}var d,l,m,p,b,v,y=0,g=!1,x=!1,j=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=r(t)||0,n(o)&&(g=!!o.leading,m=(x=\"maxWait\"in o)?h(r(o.maxWait)||0,t):m,j=\"trailing\"in o?!!o.trailing:j),f.cancel=function(){void 0!==b&&clearTimeout(b),y=0,d=v=l=b=void 0},f.flush=function(){return void 0===b?p:s(k())},f}function n(e){var t=void 0===e?\"undefined\":a(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return\"symbol\"==(void 0===e?\"undefined\":a(e))||function(e){return!!e&&\"object\"==(void 0===e?\"undefined\":a(e))}(e)&&g.call(e)==s}function r(e){if(\"number\"==typeof e)return e;if(i(e))return u;if(n(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=n(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(f,\"\");var o=l.test(e);return o||m.test(e)?p(e.slice(2),o?2:8):d.test(e)?u:+e}var a=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"Expected a function\",u=NaN,s=\"[object Symbol]\",f=/^\\s+|\\s+$/g,d=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,m=/^0o[0-7]+$/i,p=parseInt,b=\"object\"==(void 0===t?\"undefined\":a(t))&&t&&t.Object===Object&&t,v=\"object\"==(\"undefined\"==typeof self?\"undefined\":a(self))&&self&&self.Object===Object&&self,y=b||v||Function(\"return this\")(),g=Object.prototype.toString,h=Math.max,w=Math.min,k=function(){return y.Date.now()};e.exports=function(e,t,i){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(c);return n(i)&&(r=\"leading\"in i?!!i.leading:r,a=\"trailing\"in i?!!i.trailing:a),o(e,t,{leading:r,maxWait:t,trailing:a})}}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function o(e){var t=void 0===e?\"undefined\":r(e);return!!e&&(\"object\"==t||\"function\"==t)}function n(e){return\"symbol\"==(void 0===e?\"undefined\":r(e))||function(e){return!!e&&\"object\"==(void 0===e?\"undefined\":r(e))}(e)&&y.call(e)==u}function i(e){if(\"number\"==typeof e)return e;if(n(e))return c;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(s,\"\");var i=d.test(e);return i||l.test(e)?m(e.slice(2),i?2:8):f.test(e)?c:+e}var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},a=\"Expected a function\",c=NaN,u=\"[object Symbol]\",s=/^\\s+|\\s+$/g,f=/^[-+]0x[0-9a-f]+$/i,d=/^0b[01]+$/i,l=/^0o[0-7]+$/i,m=parseInt,p=\"object\"==(void 0===t?\"undefined\":r(t))&&t&&t.Object===Object&&t,b=\"object\"==(\"undefined\"==typeof self?\"undefined\":r(self))&&self&&self.Object===Object&&self,v=p||b||Function(\"return this\")(),y=Object.prototype.toString,g=Math.max,h=Math.min,w=function(){return v.Date.now()};e.exports=function(e,t,n){function r(t){var o=d,n=l;return d=l=void 0,y=t,p=e.apply(n,o)}function c(e){var o=e-v;return void 0===v||o>=t||o<0||x&&e-y>=m}function u(){var e=w();return c(e)?s(e):void(b=setTimeout(u,function(e){var o=t-(e-v);return x?h(o,m-(e-y)):o}(e)))}function s(e){return b=void 0,j&&d?r(e):(d=l=void 0,p)}function f(){var e=w(),o=c(e);if(d=arguments,l=this,v=e,o){if(void 0===b)return function(e){return y=e,b=setTimeout(u,t),k?r(e):p}(v);if(x)return b=setTimeout(u,t),r(v)}return void 0===b&&(b=setTimeout(u,t)),p}var d,l,m,p,b,v,y=0,k=!1,x=!1,j=!0;if(\"function\"!=typeof e)throw new TypeError(a);return t=i(t)||0,o(n)&&(k=!!n.leading,m=(x=\"maxWait\"in n)?g(i(n.maxWait)||0,t):m,j=\"trailing\"in n?!!n.trailing:j),f.cancel=function(){void 0!==b&&clearTimeout(b),y=0,d=v=l=b=void 0},f.flush=function(){return void 0===b?p:s(w())},f}}).call(t,function(){return this}())},function(e,t){\"use strict\";function o(e){e&&e.forEach(function(e){var t=Array.prototype.slice.call(e.addedNodes),o=Array.prototype.slice.call(e.removedNodes);t.concat(o).filter(function(e){return e.hasAttribute&&e.hasAttribute(\"data-aos\")}).length&&n()})}Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(){};t.default=function(e,t){var i=window.document,r=new(window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver)(o);n=t,r.observe(i.documentElement,{childList:!0,subtree:!0,removedNodes:!0})}},function(e,t){\"use strict\";function o(){return navigator.userAgent||navigator.vendor||window.opera||\"\"}Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),i=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,r=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,a=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i,c=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,u=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e)}return n(e,[{key:\"phone\",value:function(){var e=o();return!(!i.test(e)&&!r.test(e.substr(0,4)))}},{key:\"mobile\",value:function(){var e=o();return!(!a.test(e)&&!c.test(e.substr(0,4)))}},{key:\"tablet\",value:function(){return this.mobile()&&!this.phone()}}]),e}();t.default=new u},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});t.default=function(e,t){var o=window.pageYOffset,n=window.innerHeight;e.forEach(function(e,i){!function(e,t,o){var n=e.node.getAttribute(\"data-aos-once\");t>e.position?e.node.classList.add(\"aos-animate\"):void 0!==n&&(\"false\"===n||!o&&\"true\"!==n)&&e.node.classList.remove(\"aos-animate\")}(e,n+o,t)})}},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e&&e.__esModule?e:{default:e}}(o(12));t.default=function(e,t){return e.forEach(function(e,o){e.node.classList.add(\"aos-init\"),e.position=(0,n.default)(e.node,t.offset)}),e}},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e&&e.__esModule?e:{default:e}}(o(13));t.default=function(e,t){var o=0,i=0,r=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(i=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),o=(0,n.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":o+=e.offsetHeight/2;break;case\"bottom-bottom\":o+=e.offsetHeight;break;case\"top-center\":o+=r/2;break;case\"bottom-center\":o+=r/2+e.offsetHeight;break;case\"center-center\":o+=r/2+e.offsetHeight/2;break;case\"top-top\":o+=r;break;case\"bottom-top\":o+=e.offsetHeight+r;break;case\"center-top\":o+=e.offsetHeight/2+r}return a.anchorPlacement||a.offset||isNaN(t)||(i=t),o+i}},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});t.default=function(e){for(var t=0,o=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),o+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:o,left:t}}},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});t.default=function(e){return e=e||document.querySelectorAll(\"[data-aos]\"),Array.prototype.map.call(e,function(e){return{node:e}})}}])});\nfunction missingImageError(e){e.hasOwnProperty(\"retryCount\")||(e.retryCount=0),e.retryCount<10?setTimeout(function(){e.src+=\"&\"+Date.now(),e.retryCount+=1},2e3):(e.onerror=null,e.parentNode.children[0].srcset=e.parentNode.children[1].srcset=\"/Assets/Celebration/Icons/MissingPoster.jpg\",e.style.visibility=\"visible\")}function missingImageLoaded(e){e.style.visibility=\"visible\",setTimeout(function(){e.style.visibility=\"visible\"},1e3)}\n\"st\"in window&&st&&st.init&&st.init();\nvar st;!function(t){var e=function(t){return{restrict:\"A\",link:function(e,r,n){var a=n.stPreventEnter?t(n.stPreventEnter):null;r.on(\"keypress\",function(t){if(13===t.keyCode)return t.preventDefault(),t.stopPropagation(),a&&e.$apply(a),!1})}}};e.$inject=[\"$parse\"];var r=function(){function t(t,e,r,n,a){var s,o,i=n.type;if(/text\\/json/i.test(i)){o=e.html();try{n.stScopeData&&o&&(o=angular.fromJson(o),s=r(n.stScopeData),n.stScopeData.indexOf(\"$value\")>=0?s(t,{$value:o}):s.assign&&s.assign(t,o),e.remove())}catch(t){a.error('Invalid JSON for st-scope-data=\"'+n.stScopeData+'\"')}}}return t.$inject=[\"$scope\",\"$element\",\"$parse\",\"$attrs\",\"$log\"],t}();angular.module(\"st\").directive(\"stPreventEnter\",e).directive(\"stScopeData\",function(){return{restrict:\"A\",controller:r}})}(st||(st={}));\nvar st,__extends=this&&this.__extends||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);function o(){this.constructor=t}t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)};!function(t){!function(t){angular.module(\"st.search\",[]),t.UrlSeparator=\":\",t.SortSeparator=\",\",t.DefaultGroup=\"\",t.TermPropertyName=\"term\",t.PagePropertyName=\"page\",t.SortPropertyName=\"sort\";var e=function(t){function e(e,r){t.location.pathname.toLocaleUpperCase()===r.toLocaleUpperCase()?t.location.hash=\"/?term=\"+encodeURIComponent(e):t.location.assign(r+\"#/?term=\"+encodeURIComponent(e))}return{restrict:\"A\",link:function(t,r,o){var i=angular.element(o.stSearchBoxInput||\".form-control\",r),s=angular.element(o.stSearchBoxButton||\".btn\",r);o.stSearchBox&&1===i.length&&s.length&&(i.on(\"keypress\",function(r){13===r.keyCode&&i.val()&&(r.preventDefault(),r.stopPropagation(),t.$apply(function(){e(i.val(),o.stSearchBox)}))}),s.on(\"click\",function(r){i.val()&&t.$apply(function(){e(i.val(),o.stSearchBox)})}))}}};e.$inject=[\"$window\"],angular.module(\"st.search\").directive(\"stSearchBox\",e)}(t.search||(t.search={}))}(st||(st={})),function(t){!function(t){var e=function(){function e(e,r){var o=this;this.group=t.DefaultGroup,e.$on(\"stRegisterFacets\",function(t){r.addConstantFilters(o.group,o.filters)})}return e.$inject=[\"$rootScope\",\"stFacetService\"],e}();angular.module(\"st.search\").controller(\"stConstantFiltersCtrl\",e)}(t.search||(t.search={}))}(st||(st={})),function(t){!function(t){var e=function(){function e(e,r,o){var i=this;this.facetService=r,this.$log=o,this.group=t.DefaultGroup,this.allowMultiple=!1,this._items=new t.models.FacetItemCollection,this._items.addWatch(function(){i.notify()}),e.$on(\"stRegisterFacets\",function(t){i.facetService.registerFacets(i.group,i.name,i._items)}),e.$on(\"stFacetsInit\",function(t,e,r){var o=e[i.name]||[];i._items.setSelectedNames(o,!1)&&r.push(i.group)})}return Object.defineProperty(e.prototype,\"items\",{get:function(){return this._items},set:function(e){var r=this;this._items.length=0,e.forEach(function(e){r._items.push(angular.extend(new t.models.FacetItem(r._items),e))})},enumerable:!0,configurable:!0}),e.prototype.modelChanged=function(){var t=this.model?Array.isArray(this.model)?this.model:[this.model]:[];this._items.setSelectedIds(t)},e.prototype.toggle=function(t){this._items.toggle(t,this.allowMultiple)},e.prototype.add=function(t){this._items.select(t,this.allowMultiple)},e.prototype.remove=function(t){this._items.deselect(t)},e.prototype.notify=function(){this.facetService.update(this.name,this.group)},e.$inject=[\"$rootScope\",\"stFacetService\",\"$log\"],e}();angular.module(\"st.search\").controller(\"stFacetItemsCtrl\",e)}(t.search||(t.search={}))}(st||(st={})),function(t){!function(t){var e=function(){function e(e,o,i,s,n,a,c){var u=this;this.$rootScope=o,this.$location=i,this.$http=s,this.$q=n,this.$log=a,this.$document=c,this.facetGroups={},this.isSearching={},this.results={},this._firstLoad=!0,this._registeredGroups=[],this._groupsUpdated=null,this._constantFilters={},e.has(\"stSearchConfig\")&&e.has(\"stSearchGroupConfig\")?(this._stSearchConfig=e.get(\"stSearchConfig\"),this._stSearchGroupConfig=e.get(\"stSearchGroupConfig\")):a.error(\"Search Configuration was never declared. You must place a Facet Search Results widget on the page.\"),o.$on(\"$locationChangeSuccess\",function(e,s,n){if(u._firstLoad){o.$emit(\"stRegisterFacets\");var c=Object.keys(u.facetGroups);c.unshift(u._registeredGroups),r.apply(null,c)}if(!u._groupsUpdated){var h=angular.copy(i.search());h.page&&delete h.page,angular.forEach(h,function(e,r){r!==t.TermPropertyName&&(h[r]=e.split(t.UrlSeparator))});var p=[];o.$emit(\"stFacetsInit\",h,p),p.forEach(function(t){u.groupUpdated(t)})}u._firstLoad&&u._registeredGroups.forEach(function(t){u._stSearchGroupConfig[t].searchOnLoad&&u.groupUpdated(t)}),u._groupsUpdated&&u._groupsUpdated.length&&(a.debug(\"perform search\",u._groupsUpdated),u._groupsUpdated.forEach(function(t){u.submitSearch(t)}),u._groupsUpdated=null),u._firstLoad=!1})}return e.prototype.registerFacets=function(e,r,o){e=e||t.DefaultGroup;var i=this.facetGroups[e]=this.facetGroups[e]||{};r&&o&&(Array.isArray(o)?o.length&&(i[r]=o):i[r]=o)},e.prototype.setPage=function(e,r){r=r||t.DefaultGroup,this.getPageId(r)!==e&&(this.$location.search(t.PagePropertyName,e>1?e:null),this.groupUpdated(r))},e.prototype.setSortBy=function(e){for(var r=[],o=1;o<arguments.length;o++)r[o-1]=arguments[o];e=e||t.DefaultGroup;var i=this.getSortBy(e);if(!angular.equals(i,r)){var s=null;r&&r.length&&(s=r.reduce(function(t,e){return e&&(e=e.trim())&&t.push(e),t},[]).join(t.SortSeparator)),1!==this.getPageId(e)&&this.$location.search(t.PagePropertyName,null),this.$location.search(t.SortPropertyName,s||null),this.groupUpdated(e)}},e.prototype.addConstantFilters=function(e,o){var i=!1;e=e||t.DefaultGroup;var s=this._constantFilters[e]=this._constantFilters[e]||{};angular.forEach(o,function(t,e){for(var r=s[e]=s[e]||[],o=0;o<t.length;o++)t[o]&&(r.push(t[o]),i=!0)}),i&&r(this._registeredGroups,e)},e.prototype.update=function(e,r,o){void 0===o&&(o=!0),r=r||t.DefaultGroup;var i=this.facetGroups[r];if(i){var s=null;e===t.TermPropertyName?i.term&&i.term.term&&(s=i.term.term):s=i[e],this.updateUrl(s,e),1!==this.getPageId(r)&&this.$location.search(t.PagePropertyName,null),o&&this.groupUpdated(r),this.$rootScope.$emit(\"stSearchUpdated\",r,e,s),this.$log.debug(\"stFacetUpdated\",r,e,s)}},e.prototype.updateUrl=function(e,r){var o;e?\"string\"==typeof e?o=e:e.length&&(o=e.reduce(function(t,e){return e.selected&&t.push(e.name),t},[]).join(t.UrlSeparator)):o=null,o||(o=null),this.$location.path()||this.$location.path(\"/\"),this.$location.search(r,o)},e.prototype.submitSearch=function(e){var r=this,o={Filters:{},Group:e};if(this._stSearchConfig&&this._stSearchGroupConfig){var i=!1,s=!1,n=this._stSearchGroupConfig[e];if(n.indexName){o.ItemsPerPage=n.itemsPerPage,o.OrFacets=n.orFacets,o.SearchFields=n.searchFields,o.HighlightedFields=n.highlightedFields;var a=this._constantFilters[e]||{};angular.forEach(a,function(t,e){var r=o.Filters[e]=[];if(e&&t)for(var i=0;i<t.length;i++)t[i]&&(r.push(t[i]),s=!0)});var c=this.facetGroups[e];if(angular.forEach(c,function(e,r){if(r===t.TermPropertyName){var s=e;s&&s.term&&(o.Term=s.term)}else{e.forEach(function(t){t.selected&&((o.Filters[r]=o.Filters[r]||[]).push(t.id),i=!0)})}}),i||s||delete o.Filters,n.allowEmptySearch||o.Term||i){this.isSearching[e]=!0;var u=[],h=this.getPageId(e),p=this.getSortBy(e);o.Skip=o.ItemsPerPage*(h-1),p&&p.length&&(o.SortBy=p);var l=this.submitSearchReq(o,n.indexName);if(h>1&&this._firstLoad&&n.loadAllPagesOnInit)for(;h>1;)h--,(o=angular.copy(o)).Skip=o.ItemsPerPage*(h-1),u.push(this.submitSearchReq(o,n.indexName));u.push(l),this.$q.all(u).then(function(t){var o=t.map(function(t){return t.data}),i=1===o.length?o[0]:o;r.results[e]=o[o.length-1],r.$rootScope.$emit(\"stSearchResponse\",i,e),r.$log.debug(\"Search result for group:\",e,\"; Result:\",i)},function(t){r.$log.error(\"Error submitting search for group:\",e,\"; Error data:\",t)}).finally(function(){r.isSearching[e]=!1})}else this.results[e]=null,this.$rootScope.$emit(\"stSearchResponse\",null,e),this.$log.debug(\"Search Cleared for group:\",e)}else this.$log.error(\"Search Index not specified for\",e?'group: \"'+e+'\"':\"default group\")}},e.prototype.getPageId=function(e){var r,o=this.$location.search();if(r=this._registeredGroups.length>1?o[(e||t.DefaultGroup)+t.UrlSeparator+t.PagePropertyName]:o[t.PagePropertyName]){var i=parseInt(r,10);if(i>1)return i}return 1},e.prototype.getSortBy=function(e){var r,o=this.$location.search();return(r=this._registeredGroups.length>1?o[(e||t.DefaultGroup)+t.UrlSeparator+t.SortPropertyName]:o[t.SortPropertyName])?r.split(t.SortSeparator).reduce(function(t,e){return e&&(e=e.trim())&&t.push(e),t},[]):[]},e.prototype.submitSearchReq=function(t,e){var r={},o=this.$document[0].documentElement.lang;return o&&(r.headers={\"Accept-Language\":o}),this._stSearchConfig.siteId&&(t.SiteId=this._stSearchConfig.siteId),this.$http.post(this._stSearchConfig.endpoint+\"/\"+e,t,r)},e.prototype.groupUpdated=function(e){this._groupsUpdated||(this._groupsUpdated=[]),r(this._groupsUpdated,e||t.DefaultGroup)},e.$inject=[\"$injector\",\"$rootScope\",\"$location\",\"$http\",\"$q\",\"$log\",\"$document\"],e}();function r(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];e&&e.length&&e.forEach(function(e){-1===t.indexOf(e)&&t.push(e)})}angular.module(\"st.search\").service(\"stFacetService\",e)}(t.search||(t.search={}))}(st||(st={})),function(t){!function(t){!function(t){var e=function(){function t(t){this._parent=t,this._selected=!1}return Object.defineProperty(t.prototype,\"selected\",{get:function(){return this._selected},set:function(t){this._selected!==t&&(this._selected=t,this._parent.notify())},enumerable:!0,configurable:!0}),t}();t.FacetItem=e;var r=function(t){function e(){t.apply(this,arguments),this._watchers=[],this._notificationCtx=null}return __extends(e,t),e.prototype.indexOfId=function(t){for(var e=0;e<this.length;e++)if(t===this[e].id)return e;return-1},e.prototype.indexOfName=function(t){for(var e=0;e<this.length;e++)if(t===this[e].name)return e;return-1},e.prototype.addWatch=function(t){this._watchers.push(t)},e.prototype.notify=function(){this._notificationCtx?this._notificationCtx.notified=!0:this._watchers.forEach(function(t){t()})},e.prototype.suppressNotify=function(t){if(t){var e=this._notificationCtx;this._notificationCtx={notified:!1},t();var r=this._notificationCtx.notified;return this._notificationCtx=e,r}return!1},e.prototype.clearSelected=function(t){var e=this;void 0===t&&(t=!0);var r=this.suppressNotify(function(){e.forEach(function(t){t.selected=!1})});return r&&t&&this.notify(),r},e.prototype.setSelectedIds=function(t,e){void 0===e&&(e=!0);var r=this.setSelected(t,\"id\");return r&&e&&this.notify(),r},e.prototype.setSelectedNames=function(t,e){void 0===e&&(e=!0);var r=this.setSelected(t,\"name\");return r&&e&&this.notify(),r},e.prototype.setSelected=function(t,e){var r=this;return this.suppressNotify(function(){r.forEach(function(r){r.selected=!!t&&t.indexOf(r[e])>=0})})},e.prototype.findItem=function(t){var e,r=null;return void 0!==t&&(this.indexOf(t)>-1?r=t:\"number\"==typeof t?r=this[t]:t.id&&(e=this.indexOfId(t.id))>-1?r=this[e]:t.name&&(e=this.indexOfName(t.name))>-1&&(r=this[e])),r},e.prototype.toggle=function(t,e){var r=this.findItem(t);r&&(r.selected?r.selected=!1:(e||this.clearSelected(!1),r.selected=!0))},e.prototype.select=function(t,e){var r=this.findItem(t);r&&!r.selected&&(e||this.clearSelected(!1),r.selected=!0)},e.prototype.deselect=function(t){var e=this.findItem(t);e&&e.selected&&(e.selected=!1)},e}(Array);t.FacetItemCollection=r}(t.models||(t.models={}))}(t.search||(t.search={}))}(st||(st={})),function(t){var e,r;e=t.search||(t.search={}),r=function(){function t(t,r){var o=this;this.stFacetService=r,this.group=e.DefaultGroup,t.$on(\"stRegisterFacets\",function(t){r.registerFacets(o.group,e.TermPropertyName,o)}),t.$on(\"stFacetsInit\",function(t,e,r){o._term===e.term&&o.model===e.term||(o._term=o.model=e.term,r.push(o.group))})}return Object.defineProperty(t.prototype,\"term\",{get:function(){return this._term},set:function(t){this._term!==t&&(this._term=this.model=t,this.stFacetService.update(e.TermPropertyName,this.group))},enumerable:!0,configurable:!0}),t.prototype.notify=function(){this.term=this.model},t.$inject=[\"$rootScope\",\"stFacetService\"],t}(),angular.module(\"st.search\").controller(\"stTermFacetCtrl\",r)}(st||(st={})),function(t){var e,r;e=t.search||(t.search={}),r=function(){function t(t,r){var o=this;this.facetService=r,this.group=e.DefaultGroup,this.pages=[],t.$on(\"stRegisterFacets\",function(t){o.facetService.registerFacets(o.group)}),t.$on(\"stFacetsInit\",function(t,r,i){var s=o.facetService.getPageId(o.group);o.selectPageId(s,!1)&&i.push(o.group);var n=o.facetService.getSortBy(o.group).join(e.SortSeparator);n&&o.sortBy!==n&&(o.sortBy=n,i.push(o.group))}),t.$on(\"stSearchResponse\",function(t,e,r){if(!angular.isUndefined(r)&&r===o.group)if(Array.isArray(e)?e.length&&(o.results=e[e.length-1]):o.results=e,o.results){o.pages.length=o.results.Pages;for(var i=0;i<o.results.Pages;i++)o.pages[i]?o.pages[i].isActive=i===o.results.Page-1:o.pages[i]={id:i+1,isActive:i===o.results.Page-1}}else o.pages.length=0})}return Object.defineProperty(t.prototype,\"isSearching\",{get:function(){return this.facetService.isSearching[this.group]},enumerable:!0,configurable:!0}),t.prototype.selectPage=function(t,e){return void 0===e&&(e=!0),this.selectPageId(t.id,e)},t.prototype.selectPageIndex=function(t,e){var r;return void 0===e&&(e=!0),!!(0<=t&&t<this.pages.length&&(r=this.pages[t]))&&this.selectPageId(r.id,e)},t.prototype.selectPageId=function(t,e){void 0===e&&(e=!0);var r=!1;return this.pages.forEach(function(e){e.id===t?e.isActive||(e.isActive=!0,r=!0):e.isActive&&(e.isActive=!1,r=!0)}),r&&e&&this.facetService.setPage(t,this.group),r},t.prototype.nextPage=function(){for(var t=0,e=0;e<this.pages.length;e++){var r=this.pages[e];if(r.isActive){e+1<this.pages.length&&(r.isActive=!1,this.pages[e+1].isActive=!0,t=this.pages[e+1].id);break}}return t>0&&(this.facetService.setPage(t,this.group),!0)},t.prototype.prevPage=function(){for(var t=0,e=0;e<this.pages.length;e++){var r=this.pages[e];if(r.isActive){e>0&&(r.isActive=!1,this.pages[e-1].isActive=!0,t=this.pages[e-1].id);break}}return t>0&&(this.facetService.setPage(t,this.group),!0)},t.prototype.sortChanged=function(){var t=(this.sortBy||\"\").split(e.SortSeparator);t.unshift(this.group),this.facetService.setSortBy.apply(this.facetService,t)},t.$inject=[\"$rootScope\",\"stFacetService\"],t}(),angular.module(\"st.search\").controller(\"stFacetSearchResultsCtrl\",r)}(st||(st={}));\n!function(){function e(e,t,i){var s=this;this.facetService=t,this.group=st.search.DefaultGroup,this.pages=[],e.$on(\"stRegisterFacets\",function(e){s.facetService.registerFacets(s.group)}),e.$on(\"stFacetsInit\",function(e,t,i){var r=s.facetService.getPageId(s.group);s.selectPageId(r,!1)&&i.push(s.group)}),e.$on(\"stSearchResponse\",function(t,i,r){if(!angular.isUndefined(r)&&r===s.group){if(Array.isArray(i)?i.length&&(this.results=i[i.length-1]):s.results=i,s.results){s.pages.length=s.results.Pages;for(var a=0;a<s.results.Pages;a++)s.pages[a]?s.pages[a].isActive=a===s.results.Page-1:s.pages[a]={id:a+1,isActive:a===s.results.Page-1}}else s.pages.length=0;e.$watch(function(){$(\".popup-video\").length>0&&$(\".popup-video\").each(function(){$(this).magnificPopup({disableOn:575,type:\"iframe\",preloader:!1,fixedContentPos:!0})})})}})}angular.module(\"st\").controller(\"stLoadNextFacetSearchResultsCtrl\",e),e.$inject=[\"$rootScope\",\"stFacetService\",\"$location\"],Object.defineProperty(e.prototype,\"isSearching\",{get:function(){return this.facetService.isSearching[this.group]},enumerable:!0,configurable:!0}),e.prototype.selectPage=function(e){return $(\"html, body\").animate({scrollTop:0},100),this.selectPageId(e.id,!0)},e.prototype.selectPageId=function(e,t){var i=!1;return this.pages.forEach(function(t){t.id===e?t.isActive||(t.isActive=!0,i=!0):t.isActive&&(t.isActive=!1,i=!0)}),i&&t&&this.facetService.setPage(e,this.group),i},e.prototype.nextPage=function(){for(var e=0,t=0;t<this.pages.length;t++){var i=this.pages[t];if(i.isActive){t+1<this.pages.length&&(i.isActive=!1,this.pages[t+1].isActive=!0,e=this.pages[t+1].id);break}}return e>0&&(this.facetService.setPage(e,this.group),$(\"html, body\").animate({scrollTop:0},100),!0)},e.prototype.prevPage=function(){for(var e=0,t=0;t<this.pages.length;t++){var i=this.pages[t];if(i.isActive){t>0&&(i.isActive=!1,this.pages[t-1].isActive=!0,e=this.pages[t-1].id);break}}return e>0&&(this.facetService.setPage(e,this.group),$(\"html, body\").animate({scrollTop:0},100),!0)},e.prototype.takeEven=function(e,t,i){return t%2}}();\nangular.module(\"st\").controller(\"PaginationController\",[\"$scope\",function(o){o.currentPage=1,o.customItems=[],o.pageSize=10,o.init=function(n){o.customItems=n},o.pageChangeHandler=function(o){console.log(\"page changed to \"+o)}}]),angular.module(\"st\").controller(\"OtherController\",[\"$scope\",function(o){o.pageChangeHandler=function(o){console.log(\"going to page \"+o)}}]);\n!function(){var e=\"__default\";angular.module(\"st\").directive(\"dirPaginate\",[\"$compile\",\"$parse\",\"paginationService\",function(t,n,i){return{terminal:!0,multiElement:!0,priority:100,compile:function(a,r){console.log(\"directive loaded\");var s=r.dirPaginate,o=s.match(/^\\s*([\\s\\S]+?)\\s+in\\s+([\\s\\S]+?)(?:\\s+as\\s+([\\s\\S]+?))?(?:\\s+track\\s+by\\s+([\\s\\S]+?))?\\s*$/),g=/\\|\\s*itemsPerPage\\s*:\\s*(.*\\(\\s*\\w*\\)|([^\\)]*?(?=\\s+as\\s+))|[^\\)]*)/;if(null===o[2].match(g))throw\"pagination directive: the 'itemsPerPage' filter must be set.\";var c=o[2].replace(g,\"\"),u=n(c);!function(e){angular.forEach(e,function(e){1===e.nodeType&&angular.element(e).attr(\"dir-paginate-no-compile\",!0)})}(a);var l=r.paginationId||e;return i.registerInstance(l),function(a,r,o){var g=n(o.paginationId)(a)||o.paginationId||e;i.registerInstance(g);var c=function(t,n){var i=!!t.match(/(\\|\\s*itemsPerPage\\s*:[^|]*:[^|]*)/);return n===e||i?t:t.replace(/(\\|\\s*itemsPerPage\\s*:\\s*[^|\\s]*)/,\"$1 : '\"+n+\"'\")}(s,g);!function(e,t,n){e[0].hasAttribute(\"dir-paginate-start\")||e[0].hasAttribute(\"data-dir-paginate-start\")?(t.$set(\"ngRepeatStart\",n),e.eq(e.length-1).attr(\"ng-repeat-end\",!0)):t.$set(\"ngRepeat\",n)}(r,o,c),function(e){angular.forEach(e,function(e){1===e.nodeType&&angular.element(e).removeAttr(\"dir-paginate-no-compile\")}),e.eq(0).removeAttr(\"dir-paginate-start\").removeAttr(\"dir-paginate\").removeAttr(\"data-dir-paginate-start\").removeAttr(\"data-dir-paginate\"),e.eq(e.length-1).removeAttr(\"dir-paginate-end\").removeAttr(\"data-dir-paginate-end\")}(r);var l=t(r),d=function(e,t,i){var a;if(t.currentPage)a=n(t.currentPage);else{var r=(i+\"__currentPage\").replace(/\\W/g,\"_\");e[r]=1,a=n(r)}return a}(a,o,g);i.setCurrentPageParser(g,d,a),void 0!==o.totalItems?(i.setAsyncModeTrue(g),a.$watch(function(){return n(o.totalItems)(a)},function(e){0<=e&&i.setCollectionLength(g,e)})):(i.setAsyncModeFalse(g),a.$watchCollection(function(){return u(a)},function(e){if(e){var t=e instanceof Array?e.length:Object.keys(e).length;i.setCollectionLength(g,t)}})),l(a)}}}}]).directive(\"dirPaginateNoCompile\",function(){return{priority:5e3,terminal:!0}}).directive(\"dirPaginationControls\",[\"paginationService\",\"paginationTemplate\",function(t,n){var i=/^\\d+$/,a={restrict:\"AE\",scope:{maxSize:\"=?\",onPageChange:\"&?\",paginationId:\"=?\",autoHide:\"=?\"},link:function(n,a,r){var o=r.paginationId||e,g=n.paginationId||r.paginationId||e;if(!t.isRegistered(g)&&!t.isRegistered(o)){var c=g!==e?\" (id: \"+g+\") \":\" \";window.console&&console.warn(\"Pagination directive: the pagination controls\"+c+\"cannot be used without the corresponding pagination directive, which was not found at link time.\")}n.maxSize||(n.maxSize=9);n.autoHide=void 0===n.autoHide||n.autoHide,n.directionLinks=!angular.isDefined(r.directionLinks)||n.$parent.$eval(r.directionLinks),n.boundaryLinks=!!angular.isDefined(r.boundaryLinks)&&n.$parent.$eval(r.boundaryLinks);var u=Math.max(n.maxSize,5);function l(e){if(t.isRegistered(g)&&f(e)){var i=n.pagination.current;n.pages=s(e,t.getCollectionLength(g),t.getItemsPerPage(g),u),n.pagination.current=e,p(),n.onPageChange&&n.onPageChange({newPageNumber:e,oldPageNumber:i})}}function d(){if(t.isRegistered(g)){var e=parseInt(t.getCurrentPage(g))||1;n.pages=s(e,t.getCollectionLength(g),t.getItemsPerPage(g),u),n.pagination.current=e,n.pagination.last=n.pages[n.pages.length-1],n.pagination.last<n.pagination.current?n.setCurrent(n.pagination.last):p()}}function p(){if(t.isRegistered(g)){var e=t.getCurrentPage(g),i=t.getItemsPerPage(g),a=t.getCollectionLength(g);n.range.lower=(e-1)*i+1,n.range.upper=Math.min(e*i,a),n.range.total=a}}function f(e){return i.test(e)&&0<e&&e<=n.pagination.last}n.pages=[],n.pagination={last:1,current:1},n.range={lower:1,upper:1,total:1},n.$watch(\"maxSize\",function(e){e&&(u=Math.max(n.maxSize,5),d())}),n.$watch(function(){if(t.isRegistered(g))return(t.getCollectionLength(g)+1)*t.getItemsPerPage(g)},function(e){0<e&&d()}),n.$watch(function(){if(t.isRegistered(g))return t.getItemsPerPage(g)},function(e,t){e!=t&&void 0!==t&&l(n.pagination.current)}),n.$watch(function(){if(t.isRegistered(g))return t.getCurrentPage(g)},function(e,t){e!=t&&l(e)}),n.setCurrent=function(e){t.isRegistered(g)&&f(e)&&(e=parseInt(e,10),t.setCurrentPage(g,e))},n.tracker=function(e,t){return e+\"_\"+t}}},r=n.getString();void 0!==r?a.template=r:a.templateUrl=function(e,t){return t.templateUrl||n.getPath()};return a;function s(e,t,n,i){var a,r=[],s=Math.ceil(t/n),g=Math.ceil(i/2);a=e<=g?\"start\":s-g<e?\"end\":\"middle\";for(var c=i<s,u=1;u<=s&&u<=i;){var l=o(u,e,i,s),d=2===u&&(\"middle\"===a||\"end\"===a),p=u===i-1&&(\"middle\"===a||\"start\"===a);c&&(d||p)?r.push(\"...\"):r.push(l),u++}return r}function o(e,t,n,i){var a=Math.ceil(n/2);return e===n?i:1===e?e:n<i?i-a<t?i-n+e:a<t?t-a+e:e:e}}]).filter(\"itemsPerPage\",[\"paginationService\",function(t){return function(n,i,a){if(void 0===a&&(a=e),!t.isRegistered(a))throw\"pagination directive: the itemsPerPage id argument (id: \"+a+\") does not match a registered pagination-id.\";var r,s;if(angular.isObject(n)){if(i=parseInt(i)||9999999999,s=t.isAsyncMode(a)?0:(t.getCurrentPage(a)-1)*i,r=s+i,t.setItemsPerPage(a,i),n instanceof Array)return n.slice(s,r);var o={};return angular.forEach(function(e){if(Object.keys)return Object.keys(e);var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t}(n).slice(s,r),function(e){o[e]=n[e]}),o}return n}}]).service(\"paginationService\",function(){var e,t={};this.registerInstance=function(n){void 0===t[n]&&(t[n]={asyncMode:!1},e=n)},this.deregisterInstance=function(e){delete t[e]},this.isRegistered=function(e){return void 0!==t[e]},this.getLastInstanceId=function(){return e},this.setCurrentPageParser=function(e,n,i){t[e].currentPageParser=n,t[e].context=i},this.setCurrentPage=function(e,n){t[e].currentPageParser.assign(t[e].context,n)},this.getCurrentPage=function(e){var n=t[e].currentPageParser;return n?n(t[e].context):1},this.setItemsPerPage=function(e,n){t[e].itemsPerPage=n},this.getItemsPerPage=function(e){return t[e].itemsPerPage},this.setCollectionLength=function(e,n){t[e].collectionLength=n},this.getCollectionLength=function(e){return t[e].collectionLength},this.setAsyncModeTrue=function(e){t[e].asyncMode=!0},this.setAsyncModeFalse=function(e){t[e].asyncMode=!1},this.isAsyncMode=function(e){return t[e].asyncMode}}).provider(\"paginationTemplate\",function(){var e,t=\"angularUtils.directives.dirPagination.template\";this.setPath=function(e){t=e},this.setString=function(t){e=t},this.$get=function(){return{getPath:function(){return t},getString:function(){return e}}}}).run([\"$templateCache\",function(e){e.put(\"angularUtils.directives.dirPagination.template\",'<ul class=\"pagination\" ng-if=\"1 < pages.length || !autoHide\"><li ng-if=\"boundaryLinks\" ng-class=\"{ disabled : pagination.current == 1 }\"><a href=\"\" ng-click=\"setCurrent(1)\">«</a></li><li ng-if=\"directionLinks\" ng-class=\"{ disabled : pagination.current == 1 }\"><a href=\"\" ng-click=\"setCurrent(pagination.current - 1)\">‹</a></li><li ng-repeat=\"pageNumber in pages track by tracker(pageNumber, $index)\" ng-class=\"{ active : pagination.current == pageNumber, disabled : pageNumber == \\'...\\' || ( ! autoHide && pages.length === 1 ) }\"><a href=\"\" ng-click=\"setCurrent(pageNumber)\">{{ pageNumber }}</a></li><li ng-if=\"directionLinks\" ng-class=\"{ disabled : pagination.current == pagination.last }\"><a href=\"\" ng-click=\"setCurrent(pagination.current + 1)\">›</a></li><li ng-if=\"boundaryLinks\" ng-class=\"{ disabled : pagination.current == pagination.last }\"><a href=\"\" ng-click=\"setCurrent(pagination.last)\">»</a></li></ul>')}])}();\nangular.module(\"st\").directive(\"convertToNumber\",function(){return{require:\"ngModel\",link:function(n,r,t,e){e.$parsers.push(function(n){return null!=n?parseInt(n,10):null}),e.$formatters.push(function(n){return null!=n?\"\"+n:null})}}}),angular.module(\"st\").factory(\"messageListFactory\",function(){const n=function(n){return null==n||\"\"===n};return{createList:function(){return function(){let r={};return{clear:function(){r={}},set:function(n,t){r[n]=t},has:function(t){if(t)return!n(r[t]);{let t=!1;for(var e in r)if(r.hasOwnProperty(e)&&!n(r[e])){t=!0;break}return t}},get:function(t){if(t)return r[t];{let t=[];for(let e in r)r.hasOwnProperty(e)&&(n(r[e])||t.push(r[e]));return t}},load:function(n){if(n)for(let t=0;t<n.length;t++)r[n[t].Key]=n[t].Message}}}()}}});\n!function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,e,n){Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=39)}([function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),this.startBin=\"101\",this.endBin=\"101\",this.middleBin=\"01010\",this.Lbinary=[\"0001101\",\"0011001\",\"0010011\",\"0111101\",\"0100011\",\"0110001\",\"0101111\",\"0111011\",\"0110111\",\"0001011\"],this.Gbinary=[\"0100111\",\"0110011\",\"0011011\",\"0100001\",\"0011101\",\"0111001\",\"0000101\",\"0010001\",\"0001001\",\"0010111\"],this.Rbinary=[\"1110010\",\"1100110\",\"1101100\",\"1000010\",\"1011100\",\"1001110\",\"1010000\",\"1000100\",\"1001000\",\"1110100\"]}return t.prototype.encode=function(t,e,n){var r=\"\";n=n||\"\";for(var i=0;i<t.length;i++)\"L\"==e[i]?r+=this.Lbinary[t[i]]:\"G\"==e[i]?r+=this.Gbinary[t[i]]:\"R\"==e[i]&&(r+=this.Rbinary[t[i]]),i<t.length-1&&(r+=n);return r},t}();e.default=n},function(t,e){\"use strict\";function n(t,e){for(var n=0;n<e;n++)t=\"0\"+t;return t}Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(){function t(e){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),this.string=e}return t.prototype.encode=function(){for(var t=\"110\",e=0;e<this.string.length;e++){var r=parseInt(this.string[e]).toString(2);r=n(r,4-r.length);for(var i=0;i<r.length;i++)t+=\"0\"==r[i]?\"100\":\"110\"}return{data:t+=\"1001\",text:this.string}},t.prototype.valid=function(){return-1!==this.string.search(/^[0-9]+$/)},t}();e.default=r},function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function(t,e){var n,r={};for(n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);for(n in e)e.hasOwnProperty(n)&&void 0!==e[n]&&(r[n]=e[n]);return r}},function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(e){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),this.bytes=[];for(var n=0;n<e.length;++n)this.bytes.push(e.charCodeAt(n));this.string=e.substring(1),this.encodings=[740,644,638,176,164,100,224,220,124,608,604,572,436,244,230,484,260,254,650,628,614,764,652,902,868,836,830,892,844,842,752,734,590,304,112,94,416,128,122,672,576,570,464,422,134,496,478,142,910,678,582,768,762,774,880,862,814,896,890,818,914,602,930,328,292,200,158,68,62,424,412,232,218,76,74,554,616,978,556,146,340,212,182,508,268,266,956,940,938,758,782,974,400,310,118,512,506,960,954,502,518,886,966,668,680,692,5379]}return t.prototype.encode=function(){var t,e=this.bytes,n=e.shift()-105;return 103===n?t=this.nextA(e,1):104===n?t=this.nextB(e,1):105===n&&(t=this.nextC(e,1)),{text:this.string.replace(/[^\\x20-\\x7E]/g,\"\"),data:this.getEncoding(n)+t.result+this.getEncoding((t.checksum+n)%103)+this.getEncoding(106)}},t.prototype.getEncoding=function(t){return this.encodings[t]?(this.encodings[t]+1e3).toString(2):\"\"},t.prototype.valid=function(){return-1!==this.string.search(/^[\\x00-\\x7F\\xC8-\\xD3]+$/)},t.prototype.nextA=function(t,e){if(t.length<=0)return{result:\"\",checksum:0};var n,r;if(t[0]>=200)r=t[0]-105,t.shift(),99===r?n=this.nextC(t,e+1):100===r?n=this.nextB(t,e+1):98===r?(t[0]=t[0]>95?t[0]-96:t[0],n=this.nextA(t,e+1)):n=this.nextA(t,e+1);else{var i=t[0];r=i<32?i+64:i-32,t.shift(),n=this.nextA(t,e+1)}var o=r*e;return{result:this.getEncoding(r)+n.result,checksum:o+n.checksum}},t.prototype.nextB=function(t,e){if(t.length<=0)return{result:\"\",checksum:0};var n,r;t[0]>=200?(r=t[0]-105,t.shift(),99===r?n=this.nextC(t,e+1):101===r?n=this.nextA(t,e+1):98===r?(t[0]=t[0]<32?t[0]+96:t[0],n=this.nextB(t,e+1)):n=this.nextB(t,e+1)):(r=t[0]-32,t.shift(),n=this.nextB(t,e+1));var i=r*e;return{result:this.getEncoding(r)+n.result,checksum:i+n.checksum}},t.prototype.nextC=function(t,e){if(t.length<=0)return{result:\"\",checksum:0};var n,r;t[0]>=200?(r=t[0]-105,t.shift(),n=100===r?this.nextB(t,e+1):101===r?this.nextA(t,e+1):this.nextC(t,e+1)):(r=10*(t[0]-48)+t[1]-48,t.shift(),t.shift(),n=this.nextC(t,e+1));var i=r*e;return{result:this.getEncoding(r)+n.result,checksum:i+n.checksum}},t}();e.default=n},function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.mod10=function(t){for(var e=0,n=0;n<t.length;n++){var r=parseInt(t[n]);e+=(n+t.length)%2==0?r:2*r%10+Math.floor(2*r/10)}return(10-e%10)%10},e.mod11=function(t){for(var e=0,n=[2,3,4,5,6,7],r=0;r<t.length;r++){var i=parseInt(t[t.length-1-r]);e+=n[r%n.length]*i}return(11-e%11)%11}},function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});e.default={width:2,height:100,format:\"auto\",displayValue:!0,fontOptions:\"\",font:\"monospace\",textAlign:\"center\",textPosition:\"bottom\",textMargin:2,fontSize:20,background:\"#ffffff\",lineColor:\"#000000\",margin:10,marginTop:void 0,marginBottom:void 0,marginLeft:void 0,marginRight:void 0,valid:function(){}}},function(t,e){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function r(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var o=function(t){function e(i,o){n(this,e);var s=r(this,t.call(this));return s.name=\"InvalidInputException\",s.symbology=i,s.input=o,s.message='\"'+s.input+'\" is not a valid input for '+s.symbology,s}return i(e,t),e}(Error),s=function(t){function e(){n(this,e);var i=r(this,t.call(this));return i.name=\"InvalidElementException\",i.message=\"Not supported type to render on\",i}return i(e,t),e}(Error),a=function(t){function e(){n(this,e);var i=r(this,t.call(this));return i.name=\"NoElementException\",i.message=\"No element to render on.\",i}return i(e,t),e}(Error);e.InvalidInputException=o,e.InvalidElementException=s,e.NoElementException=a},function(t,e,n){\"use strict\";function r(t,e){return e.height+(e.displayValue&&t.text.length>0?e.fontSize+e.textMargin:0)+e.marginTop+e.marginBottom}function i(t,e,n){if(n.displayValue&&e<t){if(\"center\"==n.textAlign)return Math.floor((t-e)/2);if(\"left\"==n.textAlign)return 0;if(\"right\"==n.textAlign)return Math.floor(t-e)}return 0}function o(t,e,n){var r;return(r=void 0===n?document.createElement(\"canvas\").getContext(\"2d\"):n).font=e.fontOptions+\" \"+e.fontSize+\"px \"+e.font,r.measureText(t).width}Object.defineProperty(e,\"__esModule\",{value:!0}),e.getTotalWidthOfEncodings=e.calculateEncodingAttributes=e.getBarcodePadding=e.getEncodingHeight=e.getMaximumHeightOfEncodings=void 0;var s=function(t){return t&&t.__esModule?t:{default:t}}(n(2));e.getMaximumHeightOfEncodings=function(t){for(var e=0,n=0;n<t.length;n++)t[n].height>e&&(e=t[n].height);return e},e.getEncodingHeight=r,e.getBarcodePadding=i,e.calculateEncodingAttributes=function(t,e,n){for(var a=0;a<t.length;a++){var u=t[a],c=(0,s.default)(e,u.options),f=o(u.text,c,n),h=u.data.length*c.width;u.width=Math.ceil(Math.max(f,h)),u.height=r(u,c),u.barcodePadding=i(f,h,c)}},e.getTotalWidthOfEncodings=function(t){for(var e=0,n=0;n<t.length;n++)e+=t[n].width;return e}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=n(18),i=n(17),o=n(24),s=n(27),a=n(26),u=n(32),c=n(33),f=n(25);e.default={CODE39:r.CODE39,CODE128:i.CODE128,CODE128A:i.CODE128A,CODE128B:i.CODE128B,CODE128C:i.CODE128C,EAN13:o.EAN13,EAN8:o.EAN8,EAN5:o.EAN5,EAN2:o.EAN2,UPC:o.UPC,ITF14:s.ITF14,ITF:a.ITF,MSI:u.MSI,MSI10:u.MSI10,MSI11:u.MSI11,MSI1010:u.MSI1010,MSI1110:u.MSI1110,pharmacode:c.pharmacode,GenericBarcode:f.GenericBarcode}},function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(e){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),this.api=e}return t.prototype.handleCatch=function(t){if(\"InvalidInputException\"!==t.name)throw t;if(this.api._options.valid===this.api._defaults.valid)throw t.message;this.api._options.valid(!1),this.api.render=function(){}},t.prototype.wrapBarcodeCall=function(t){try{var e=t.apply(void 0,arguments);return this.api._options.valid(!0),e}catch(t){return this.handleCatch(t),this.api}},t}();e.default=n},function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function(t){return t.marginTop=t.marginTop||t.margin,t.marginBottom=t.marginBottom||t.margin,t.marginRight=t.marginRight||t.margin,t.marginLeft=t.marginLeft||t.margin,t}},function(t,e,n){\"use strict\";function r(t){if(\"string\"==typeof t)return function(t){var e=document.querySelectorAll(t);if(0===e.length)throw new s.NoElementException;for(var n=[],i=0;i<e.length;i++)n.push(r(e[i]));return n}(t);if(Array.isArray(t)){for(var e=[],n=0;n<t.length;n++)e.push(r(t[n]));return e}if(\"undefined\"!=typeof HTMLCanvasElement&&t instanceof HTMLImageElement)return function(t){var e=document.createElement(\"canvas\");return{element:e,options:(0,i.default)(t),renderer:(0,o.getRendererClass)(\"canvas\"),afterRender:function(){t.setAttribute(\"src\",e.toDataURL())}}}(t);if(\"undefined\"!=typeof SVGElement&&t instanceof SVGElement)return{element:t,options:(0,i.default)(t),renderer:(0,o.getRendererClass)(\"svg\")};if(\"undefined\"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement)return{element:t,options:(0,i.default)(t),renderer:(0,o.getRendererClass)(\"canvas\")};if(t.getContext)return{element:t,renderer:(0,o.getRendererClass)(\"canvas\")};throw new s.InvalidElementException}Object.defineProperty(e,\"__esModule\",{value:!0});var i=function(t){return t&&t.__esModule?t:{default:t}}(n(34)),o=n(37),s=n(6);e.default=r},function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function(t){var e=[];return function t(n){if(Array.isArray(n))for(var r=0;r<n.length;r++)t(n[r]);else n.text=n.text||\"\",n.data=n.data||\"\",e.push(n)}(t),e}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(t){function e(n){return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),function(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}(this,t.call(this,String.fromCharCode(208)+n))}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.valid=function(){return-1!==this.string.search(/^[\\x00-\\x5F\\xC8-\\xCF]+$/)},e}(function(t){return t&&t.__esModule?t:{default:t}}(n(3)).default);e.default=r},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(t){function e(n){return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),function(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}(this,t.call(this,String.fromCharCode(209)+n))}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.valid=function(){return-1!==this.string.search(/^[\\x20-\\x7F\\xC8-\\xCF]+$/)},e}(function(t){return t&&t.__esModule?t:{default:t}}(n(3)).default);e.default=r},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(t){function e(n){return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),function(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}(this,t.call(this,String.fromCharCode(210)+n))}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.valid=function(){return-1!==this.string.search(/^(\\xCF*[0-9]{2}\\xCF*)+$/)},e}(function(t){return t&&t.__esModule?t:{default:t}}(n(3)).default);e.default=r},function(t,e,n){\"use strict\";function r(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t){var e=t.match(/^([\\x00-\\x5F\\xC8-\\xCF]+?)(([0-9]{2}){2,})([^0-9]|$)/);if(e)return e[1]+String.fromCharCode(204)+s(t.substring(e[1].length));var n=t.match(/^[\\x00-\\x5F\\xC8-\\xCF]+/);return n[0].length===t.length?t:n[0]+String.fromCharCode(205)+o(t.substring(n[0].length))}function o(t){var e=t.match(/^([\\x20-\\x7F\\xC8-\\xCF]+?)(([0-9]{2}){2,})([^0-9]|$)/);if(e)return e[1]+String.fromCharCode(204)+s(t.substring(e[1].length));var n=t.match(/^[\\x20-\\x7F\\xC8-\\xCF]+/);return n[0].length===t.length?t:n[0]+String.fromCharCode(206)+i(t.substring(n[0].length))}function s(t){var e=t.match(/^(\\xCF*[0-9]{2}\\xCF*)+/)[0],n=e.length;return n===t.length?t:(t=t.substring(n)).match(/^[\\x00-\\x5F\\xC8-\\xCF]*/)[0].length>=t.match(/^[\\x20-\\x7F\\xC8-\\xCF]*/)[0].length?e+String.fromCharCode(206)+i(t):e+String.fromCharCode(205)+o(t)}Object.defineProperty(e,\"__esModule\",{value:!0});var a=function(t){function e(n){if(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),-1!==n.search(/^[\\x00-\\x7F\\xC8-\\xD3]+$/))var a=r(this,t.call(this,function(t){var e=t.match(/^[\\x00-\\x5F\\xC8-\\xCF]*/)[0].length,n=t.match(/^[\\x20-\\x7F\\xC8-\\xCF]*/)[0].length;return(t.match(/^(\\xCF*[0-9]{2}\\xCF*)*/)[0].length>=2?String.fromCharCode(210)+s(t):e>n?String.fromCharCode(208)+i(t):String.fromCharCode(209)+o(t)).replace(/[\\xCD\\xCE]([^])[\\xCD\\xCE]/,function(t,e){return String.fromCharCode(203)+e})}(n)));else a=r(this,t.call(this,n));return r(a)}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(function(t){return t&&t.__esModule?t:{default:t}}(n(3)).default);e.default=a},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.CODE128C=e.CODE128B=e.CODE128A=e.CODE128=void 0;var i=r(n(16)),o=r(n(13)),s=r(n(14)),a=r(n(15));e.CODE128=i.default,e.CODE128A=o.default,e.CODE128B=s.default,e.CODE128C=a.default},function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(e,n){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),this.string=e.toUpperCase(),this.mod43Enabled=n.mod43||!1,this.characters=[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\"-\",\".\",\" \",\"$\",\"/\",\"+\",\"%\",\"*\"],this.encodings=[20957,29783,23639,30485,20951,29813,23669,20855,29789,23645,29975,23831,30533,22295,30149,24005,21623,29981,23837,22301,30023,23879,30545,22343,30161,24017,21959,30065,23921,22385,29015,18263,29141,17879,29045,18293,17783,29021,18269,17477,17489,17681,20753,35770]}return t.prototype.getEncoding=function(t){return this.getBinary(this.characterValue(t))},t.prototype.getBinary=function(t){return this.encodings[t].toString(2)},t.prototype.getCharacter=function(t){return this.characters[t]},t.prototype.characterValue=function(t){return this.characters.indexOf(t)},t.prototype.encode=function(){for(var t=this.string,e=this.getEncoding(\"*\"),n=0;n<this.string.length;n++)e+=this.getEncoding(this.string[n])+\"0\";if(this.mod43Enabled){for(var r=0,i=0;i<this.string.length;i++)r+=this.characterValue(this.string[i]);r%=43,e+=this.getBinary(r)+\"0\",t+=this.getCharacter(r)}return{data:e+=this.getEncoding(\"*\"),text:t}},t.prototype.valid=function(){return-1!==this.string.search(/^[0-9A-Z\\-\\.\\ \\$\\/\\+\\%]+$/)},t}();e.CODE39=n},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(t){return t&&t.__esModule?t:{default:t}}(n(0)),i=function(){function t(e,n){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),-1!==e.search(/^[0-9]{12}$/)?this.string=e+this.checksum(e):this.string=e,this.displayValue=n.displayValue,this.structure=[\"LLLLLL\",\"LLGLGG\",\"LLGGLG\",\"LLGGGL\",\"LGLLGG\",\"LGGLLG\",\"LGGGLL\",\"LGLGLG\",\"LGLGGL\",\"LGGLGL\"],n.fontSize>10*n.width?this.fontSize=10*n.width:this.fontSize=n.fontSize,this.guardHeight=n.height+this.fontSize/2+n.textMargin,this.lastChar=n.lastChar}return t.prototype.valid=function(){return-1!==this.string.search(/^[0-9]{13}$/)&&this.string[12]==this.checksum(this.string)},t.prototype.encode=function(){var t=new r.default,e=[],n=this.structure[this.string[0]],i=this.string.substr(1,6),o=this.string.substr(7,6);return this.displayValue&&e.push({data:\"000000000000\",text:this.string[0],options:{textAlign:\"left\",fontSize:this.fontSize}}),e.push({data:\"101\",options:{height:this.guardHeight}}),e.push({data:t.encode(i,n),text:i,options:{fontSize:this.fontSize}}),e.push({data:\"01010\",options:{height:this.guardHeight}}),e.push({data:t.encode(o,\"RRRRRR\"),text:o,options:{fontSize:this.fontSize}}),e.push({data:\"101\",options:{height:this.guardHeight}}),this.lastChar&&this.displayValue&&(e.push({data:\"00\"}),e.push({data:\"00000\",text:this.lastChar,options:{fontSize:this.fontSize}})),e},t.prototype.checksum=function(t){var e,n=0;for(e=0;e<12;e+=2)n+=parseInt(t[e]);for(e=1;e<12;e+=2)n+=3*parseInt(t[e]);return(10-n%10)%10},t}();e.default=i},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(t){return t&&t.__esModule?t:{default:t}}(n(0)),i=function(){function t(e){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),this.string=e,this.structure=[\"LL\",\"LG\",\"GL\",\"GG\"]}return t.prototype.valid=function(){return-1!==this.string.search(/^[0-9]{2}$/)},t.prototype.encode=function(){var t=new r.default,e=this.structure[parseInt(this.string)%4],n=\"1011\";return{data:n+=t.encode(this.string,e,\"01\"),text:this.string}},t}();e.default=i},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(t){return t&&t.__esModule?t:{default:t}}(n(0)),i=function(){function t(e){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),this.string=e,this.structure=[\"GGLLL\",\"GLGLL\",\"GLLGL\",\"GLLLG\",\"LGGLL\",\"LLGGL\",\"LLLGG\",\"LGLGL\",\"LGLLG\",\"LLGLG\"]}return t.prototype.valid=function(){return-1!==this.string.search(/^[0-9]{5}$/)},t.prototype.encode=function(){var t=new r.default,e=this.checksum(),n=\"1011\";return{data:n+=t.encode(this.string,this.structure[e],\"01\"),text:this.string}},t.prototype.checksum=function(){var t=0;return t+=3*parseInt(this.string[0]),t+=9*parseInt(this.string[1]),t+=3*parseInt(this.string[2]),t+=9*parseInt(this.string[3]),(t+=3*parseInt(this.string[4]))%10},t}();e.default=i},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(t){return t&&t.__esModule?t:{default:t}}(n(0)),i=function(){function t(e){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),-1!==e.search(/^[0-9]{7}$/)?this.string=e+this.checksum(e):this.string=e}return t.prototype.valid=function(){return-1!==this.string.search(/^[0-9]{8}$/)&&this.string[7]==this.checksum(this.string)},t.prototype.encode=function(){var t=new r.default,e=\"\",n=this.string.substr(0,4),i=this.string.substr(4,4);return e+=t.startBin,e+=t.encode(n,\"LLLL\"),e+=t.middleBin,e+=t.encode(i,\"RRRR\"),{data:e+=t.endBin,text:this.string}},t.prototype.checksum=function(t){var e,n=0;for(e=0;e<7;e+=2)n+=3*parseInt(t[e]);for(e=1;e<7;e+=2)n+=parseInt(t[e]);return(10-n%10)%10},t}();e.default=i},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(t){return t&&t.__esModule?t:{default:t}}(n(0)),i=function(){function t(e,n){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),-1!==e.search(/^[0-9]{11}$/)?this.string=e+this.checksum(e):this.string=e,this.displayValue=n.displayValue,n.fontSize>10*n.width?this.fontSize=10*n.width:this.fontSize=n.fontSize,this.guardHeight=n.height+this.fontSize/2+n.textMargin}return t.prototype.valid=function(){return-1!==this.string.search(/^[0-9]{12}$/)&&this.string[11]==this.checksum(this.string)},t.prototype.encode=function(){var t=new r.default,e=[];return this.displayValue&&e.push({data:\"00000000\",text:this.string[0],options:{textAlign:\"left\",fontSize:this.fontSize}}),e.push({data:\"101\"+t.encode(this.string[0],\"L\"),options:{height:this.guardHeight}}),e.push({data:t.encode(this.string.substr(1,5),\"LLLLL\"),text:this.string.substr(1,5),options:{fontSize:this.fontSize}}),e.push({data:\"01010\",options:{height:this.guardHeight}}),e.push({data:t.encode(this.string.substr(6,5),\"RRRRR\"),text:this.string.substr(6,5),options:{fontSize:this.fontSize}}),e.push({data:t.encode(this.string[11],\"R\")+\"101\",options:{height:this.guardHeight}}),this.displayValue&&e.push({data:\"00000000\",text:this.string[11],options:{textAlign:\"right\",fontSize:this.fontSize}}),e},t.prototype.checksum=function(t){var e,n=0;for(e=1;e<11;e+=2)n+=parseInt(t[e]);for(e=0;e<11;e+=2)n+=3*parseInt(t[e]);return(10-n%10)%10},t}();e.default=i},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.UPC=e.EAN2=e.EAN5=e.EAN8=e.EAN13=void 0;var i=r(n(19)),o=r(n(22)),s=r(n(21)),a=r(n(20)),u=r(n(23));e.EAN13=i.default,e.EAN8=o.default,e.EAN5=s.default,e.EAN2=a.default,e.UPC=u.default},function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(e){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),this.string=e}return t.prototype.encode=function(){return{data:\"10101010101010101010101010101010101010101\",text:this.string}},t.prototype.valid=function(){return!0},t}();e.GenericBarcode=n},function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(e){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),this.string=e,this.binaryRepresentation={0:\"00110\",1:\"10001\",2:\"01001\",3:\"11000\",4:\"00101\",5:\"10100\",6:\"01100\",7:\"00011\",8:\"10010\",9:\"01010\"}}return t.prototype.valid=function(){return-1!==this.string.search(/^([0-9]{2})+$/)},t.prototype.encode=function(){for(var t=\"1010\",e=0;e<this.string.length;e+=2)t+=this.calculatePair(this.string.substr(e,2));return{data:t+=\"11101\",text:this.string}},t.prototype.calculatePair=function(t){for(var e=\"\",n=this.binaryRepresentation[t[0]],r=this.binaryRepresentation[t[1]],i=0;i<5;i++)e+=\"1\"==n[i]?\"111\":\"1\",e+=\"1\"==r[i]?\"000\":\"0\";return e},t}();e.ITF=n},function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(e){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),this.string=e,-1!==e.search(/^[0-9]{13}$/)&&(this.string+=this.checksum(e)),this.binaryRepresentation={0:\"00110\",1:\"10001\",2:\"01001\",3:\"11000\",4:\"00101\",5:\"10100\",6:\"01100\",7:\"00011\",8:\"10010\",9:\"01010\"}}return t.prototype.valid=function(){return-1!==this.string.search(/^[0-9]{14}$/)&&this.string[13]==this.checksum()},t.prototype.encode=function(){for(var t=\"1010\",e=0;e<14;e+=2)t+=this.calculatePair(this.string.substr(e,2));return{data:t+=\"11101\",text:this.string}},t.prototype.calculatePair=function(t){for(var e=\"\",n=this.binaryRepresentation[t[0]],r=this.binaryRepresentation[t[1]],i=0;i<5;i++)e+=\"1\"==n[i]?\"111\":\"1\",e+=\"1\"==r[i]?\"000\":\"0\";return e},t.prototype.checksum=function(){for(var t=0,e=0;e<13;e++)t+=parseInt(this.string[e])*(3-e%2*2);return 10*Math.ceil(t/10)-t},t}();e.ITF14=n},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(t){return t&&t.__esModule?t:{default:t}}(n(1)),i=n(4),o=function(t){function e(n){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}(this,t.call(this,n));return r.string+=(0,i.mod10)(r.string),r}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(r.default);e.default=o},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(t){return t&&t.__esModule?t:{default:t}}(n(1)),i=n(4),o=function(t){function e(n){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}(this,t.call(this,n));return r.string+=(0,i.mod10)(r.string),r.string+=(0,i.mod10)(r.string),r}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(r.default);e.default=o},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(t){return t&&t.__esModule?t:{default:t}}(n(1)),i=n(4),o=function(t){function e(n){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}(this,t.call(this,n));return r.string+=(0,i.mod11)(r.string),r}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(r.default);e.default=o},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(t){return t&&t.__esModule?t:{default:t}}(n(1)),i=n(4),o=function(t){function e(n){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}(this,t.call(this,n));return r.string+=(0,i.mod11)(r.string),r.string+=(0,i.mod10)(r.string),r}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(r.default);e.default=o},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.MSI1110=e.MSI1010=e.MSI11=e.MSI10=e.MSI=void 0;var i=r(n(1)),o=r(n(28)),s=r(n(30)),a=r(n(29)),u=r(n(31));e.MSI=i.default,e.MSI10=o.default,e.MSI11=s.default,e.MSI1010=a.default,e.MSI1110=u.default},function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(e){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),this.number=parseInt(e,10)}return t.prototype.encode=function(){for(var t=this.number,e=\"\";!isNaN(t)&&0!=t;)t%2==0?(e=\"11100\"+e,t=(t-2)/2):(e=\"100\"+e,t=(t-1)/2);return{data:e=e.slice(0,-2),text:this.number+\"\"}},t.prototype.valid=function(){return this.number>=3&&this.number<=131070},t}();e.pharmacode=n},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0});var i=r(n(35)),o=r(n(5));e.default=function(t){var e={};for(var n in o.default)o.default.hasOwnProperty(n)&&(t.hasAttribute(\"jsbarcode-\"+n.toLowerCase())&&(e[n]=t.getAttribute(\"jsbarcode-\"+n.toLowerCase())),t.hasAttribute(\"data-\"+n.toLowerCase())&&(e[n]=t.getAttribute(\"data-\"+n.toLowerCase())));return e.value=t.getAttribute(\"jsbarcode-value\")||t.getAttribute(\"data-value\"),(0,i.default)(e)}},function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function(t){var e=[\"width\",\"height\",\"textMargin\",\"fontSize\",\"margin\",\"marginTop\",\"marginBottom\",\"marginLeft\",\"marginRight\"];for(var n in e)e.hasOwnProperty(n)&&\"string\"==typeof t[n=e[n]]&&(t[n]=parseInt(t[n],10));return\"string\"==typeof t.displayValue&&(t.displayValue=\"false\"!=t.displayValue),t}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(t){return t&&t.__esModule?t:{default:t}}(n(2)),i=n(7),o=function(){function t(e,n,r){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),this.canvas=e,this.encodings=n,this.options=r}return t.prototype.render=function(){if(!this.canvas.getContext)throw new Error(\"The browser does not support canvas.\");this.prepareCanvas();for(var t=0;t<this.encodings.length;t++){var e=(0,r.default)(this.options,this.encodings[t].options);this.drawCanvasBarcode(e,this.encodings[t]),this.drawCanvasText(e,this.encodings[t]),this.moveCanvasDrawing(this.encodings[t])}this.restoreCanvas()},t.prototype.prepareCanvas=function(){var t=this.canvas.getContext(\"2d\");t.save(),(0,i.calculateEncodingAttributes)(this.encodings,this.options,t);var e=(0,i.getTotalWidthOfEncodings)(this.encodings),n=(0,i.getMaximumHeightOfEncodings)(this.encodings);this.canvas.width=e+this.options.marginLeft+this.options.marginRight,this.canvas.height=n,t.clearRect(0,0,this.canvas.width,this.canvas.height),this.options.background&&(t.fillStyle=this.options.background,t.fillRect(0,0,this.canvas.width,this.canvas.height)),t.translate(this.options.marginLeft,0)},t.prototype.drawCanvasBarcode=function(t,e){var n,r=this.canvas.getContext(\"2d\"),i=e.data;n=\"top\"==t.textPosition?t.marginTop+t.fontSize+t.textMargin:t.marginTop,r.fillStyle=t.lineColor;for(var o=0;o<i.length;o++){var s=o*t.width+e.barcodePadding;\"1\"===i[o]?r.fillRect(s,n,t.width,t.height):i[o]&&r.fillRect(s,n,t.width,t.height*i[o])}},t.prototype.drawCanvasText=function(t,e){var n,r,i=this.canvas.getContext(\"2d\"),o=t.fontOptions+\" \"+t.fontSize+\"px \"+t.font;t.displayValue&&(r=\"top\"==t.textPosition?t.marginTop+t.fontSize-t.textMargin:t.height+t.textMargin+t.marginTop+t.fontSize,i.font=o,\"left\"==t.textAlign||e.barcodePadding>0?(n=0,i.textAlign=\"left\"):\"right\"==t.textAlign?(n=e.width-1,i.textAlign=\"right\"):(n=e.width/2,i.textAlign=\"center\"),i.fillText(e.text,n,r))},t.prototype.moveCanvasDrawing=function(t){this.canvas.getContext(\"2d\").translate(t.width,0)},t.prototype.restoreCanvas=function(){this.canvas.getContext(\"2d\").restore()},t}();e.default=o},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.getRendererClass=void 0;var i=r(n(36)),o=r(n(38));e.getRendererClass=function(t){switch(t){case\"canvas\":return i.default;case\"svg\":return o.default;default:throw new Error(\"Invalid rederer\")}}},function(t,e,n){\"use strict\";function r(t,e,n){var r=document.createElementNS(u,\"g\");return r.setAttribute(\"transform\",\"translate(\"+t+\", \"+e+\")\"),n.appendChild(r),r}function i(t,e){t.setAttribute(\"style\",\"fill:\"+e.lineColor+\";\")}function o(t,e,n,r,i){var o=document.createElementNS(u,\"rect\");o.setAttribute(\"x\",t),o.setAttribute(\"y\",e),o.setAttribute(\"width\",n),o.setAttribute(\"height\",r),i.appendChild(o)}Object.defineProperty(e,\"__esModule\",{value:!0});var s=function(t){return t&&t.__esModule?t:{default:t}}(n(2)),a=n(7),u=\"http://www.w3.org/2000/svg\",c=function(){function t(e,n,r){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),this.svg=e,this.encodings=n,this.options=r}return t.prototype.render=function(){var t=this.options.marginLeft;this.prepareSVG();for(var e=0;e<this.encodings.length;e++){var n=this.encodings[e],o=(0,s.default)(this.options,n.options),a=r(t,o.marginTop,this.svg);i(a,o),this.drawSvgBarcode(a,o,n),this.drawSVGText(a,o,n),t+=n.width}},t.prototype.prepareSVG=function(){for(;this.svg.firstChild;)this.svg.removeChild(this.svg.firstChild);(0,a.calculateEncodingAttributes)(this.encodings,this.options);var t=(0,a.getTotalWidthOfEncodings)(this.encodings),e=(0,a.getMaximumHeightOfEncodings)(this.encodings),n=t+this.options.marginLeft+this.options.marginRight;this.setSvgAttributes(n,e)},t.prototype.drawSvgBarcode=function(t,e,n){var r,i=n.data;r=\"top\"==e.textPosition?e.fontSize+e.textMargin:0;for(var s=0,a=0,u=0;u<i.length;u++)a=u*e.width+n.barcodePadding,\"1\"===i[u]?s++:s>0&&(o(a-e.width*s,r,e.width*s,e.height,t),s=0);s>0&&o(a-e.width*(s-1),r,e.width*s,e.height,t)},t.prototype.drawSVGText=function(t,e,n){var r,i,o=document.createElementNS(u,\"text\");e.displayValue&&(o.setAttribute(\"style\",\"font:\"+e.fontOptions+\" \"+e.fontSize+\"px \"+e.font),i=\"top\"==e.textPosition?e.fontSize-e.textMargin:e.height+e.textMargin+e.fontSize,\"left\"==e.textAlign||n.barcodePadding>0?(r=0,o.setAttribute(\"text-anchor\",\"start\")):\"right\"==e.textAlign?(r=n.width-1,o.setAttribute(\"text-anchor\",\"end\")):(r=n.width/2,o.setAttribute(\"text-anchor\",\"middle\")),o.setAttribute(\"x\",r),o.setAttribute(\"y\",i),o.appendChild(document.createTextNode(n.text)),t.appendChild(o))},t.prototype.setSvgAttributes=function(t,e){var n=this.svg;n.setAttribute(\"width\",t+\"px\"),n.setAttribute(\"height\",e+\"px\"),n.setAttribute(\"x\",\"0px\"),n.setAttribute(\"y\",\"0px\"),n.setAttribute(\"viewBox\",\"0 0 \"+t+\" \"+e),n.setAttribute(\"xmlns\",u),n.setAttribute(\"version\",\"1.1\"),n.style.transform=\"translate(0,0)\",this.options.background&&(n.style.background=this.options.background)},t}();e.default=c},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){y.prototype[e]=y.prototype[e.toUpperCase()]=y.prototype[e.toLowerCase()]=function(n,r){var i=this;return i._errorHandler.wrapBarcodeCall(function(){var s=(0,c.default)(i._options,r),a=t[e],u=o(n,a,s);return i._encodings.push(u),i})}}function o(t,e,n){var r=new e(t=\"\"+t,n);if(!r.valid())throw new p.InvalidInputException(r.constructor.name,t);var i=r.encode();i=(0,f.default)(i);for(var o=0;o<i.length;o++)i[o].options=(0,c.default)(n,i[o].options);return i}function s(){return u.default.CODE128?\"CODE128\":Object.keys(u.default)[0]}function a(t,e,n){e=(0,f.default)(e);for(var r=0;r<e.length;r++)e[r].options=(0,c.default)(n,e[r].options),(0,h.default)(e[r].options);(0,h.default)(n),new(0,t.renderer)(t.element,e,n).render(),t.afterRender&&t.afterRender()}var u=r(n(8)),c=r(n(2)),f=r(n(12)),h=r(n(10)),l=r(n(11)),d=r(n(9)),p=n(6),g=r(n(5)),y=function(){},v=function(t,e,n){var r=new y;if(void 0===t)throw Error(\"No element to render on was provided.\");return r._renderProperties=(0,l.default)(t),r._encodings=[],r._options=g.default,r._errorHandler=new d.default(r),void 0!==e&&((n=n||{}).format||(n.format=s()),r.options(n)[n.format](e,n).render()),r};for(var b in v.getModule=function(t){return u.default[t]},u.default)u.default.hasOwnProperty(b)&&i(u.default,b);y.prototype.options=function(t){return this._options=(0,c.default)(this._options,t),this},y.prototype.blank=function(t){var e=\"0\".repeat(t);return this._encodings.push({data:e}),this},y.prototype.init=function(){var t;for(var e in Array.isArray(this._renderProperties)||(this._renderProperties=[this._renderProperties]),this._renderProperties){t=this._renderProperties[e];var n=(0,c.default)(this._options,t.options);\"auto\"==n.format&&(n.format=s()),a(t,o(n.value,u.default[n.format.toUpperCase()],n),n)}},y.prototype.render=function(){if(Array.isArray(this._renderProperties))for(var t in this._renderProperties)a(this._renderProperties[t],this._encodings,this._options);else a(this._renderProperties,this._encodings,this._options);return this},y.prototype._defaults=g.default,\"undefined\"!=typeof window&&(window.JsBarcode=v),\"undefined\"!=typeof jQuery&&(jQuery.fn.JsBarcode=function(t,e){var n=[];return jQuery(this).each(function(){n.push(this)}),v(n,t,e)}),t.exports=v}]);\nvar QRCode;!function(){function t(t){this.mode=s.MODE_8BIT_BYTE,this.data=t,this.parsedData=[];for(var e=[],r=0,o=this.data.length;o>r;r++){var i=this.data.charCodeAt(r);i>65536?(e[0]=240|(1835008&i)>>>18,e[1]=128|(258048&i)>>>12,e[2]=128|(4032&i)>>>6,e[3]=128|63&i):i>2048?(e[0]=224|(61440&i)>>>12,e[1]=128|(4032&i)>>>6,e[2]=128|63&i):i>128?(e[0]=192|(1984&i)>>>6,e[1]=128|63&i):e[0]=i,this.parsedData=this.parsedData.concat(e)}this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function e(t,e){this.typeNumber=t,this.errorCorrectLevel=e,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function r(t,e){if(null==t.length)throw new Error(t.length+\"/\"+e);for(var r=0;r<t.length&&0==t[r];)r++;this.num=new Array(t.length-r+e);for(var o=0;o<t.length-r;o++)this.num[o]=t[o+r]}function o(t,e){this.totalCount=t,this.dataCount=e}function i(){this.buffer=[],this.length=0}function n(){var t=!1,e=navigator.userAgent;return/android/i.test(e)&&(t=!0,aMat=e.toString().match(/android ([0-9]\\.[0-9])/i),aMat&&aMat[1]&&(t=parseFloat(aMat[1]))),t}function a(t,e){for(var r=1,o=function(t){var e=encodeURI(t).toString().replace(/\\%[0-9a-fA-F]{2}/g,\"a\");return e.length+(e.length!=t?3:0)}(t),i=0,n=d.length;n>=i;i++){var a=0;switch(e){case h.L:a=d[i][0];break;case h.M:a=d[i][1];break;case h.Q:a=d[i][2];break;case h.H:a=d[i][3]}if(a>=o)break;r++}if(r>d.length)throw new Error(\"Too long data\");return r}t.prototype={getLength:function(){return this.parsedData.length},write:function(t){for(var e=0,r=this.parsedData.length;r>e;e++)t.put(this.parsedData[e],8)}},e.prototype={addData:function(e){var r=new t(e);this.dataList.push(r),this.dataCache=null},isDark:function(t,e){if(0>t||this.moduleCount<=t||0>e||this.moduleCount<=e)throw new Error(t+\",\"+e);return this.modules[t][e]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(t,r){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++){this.modules[o]=new Array(this.moduleCount);for(var i=0;i<this.moduleCount;i++)this.modules[o][i]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(t,r),this.typeNumber>=7&&this.setupTypeNumber(t),null==this.dataCache&&(this.dataCache=e.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,r)},setupPositionProbePattern:function(t,e){for(var r=-1;7>=r;r++)if(!(-1>=t+r||this.moduleCount<=t+r))for(var o=-1;7>=o;o++)-1>=e+o||this.moduleCount<=e+o||(this.modules[t+r][e+o]=r>=0&&6>=r&&(0==o||6==o)||o>=0&&6>=o&&(0==r||6==r)||r>=2&&4>=r&&o>=2&&4>=o)},getBestMaskPattern:function(){for(var t=0,e=0,r=0;8>r;r++){this.makeImpl(!0,r);var o=l.getLostPoint(this);(0==r||t>o)&&(t=o,e=r)}return e},createMovieClip:function(t,e,r){var o=t.createEmptyMovieClip(e,r);this.make();for(var i=0;i<this.modules.length;i++)for(var n=1*i,a=0;a<this.modules[i].length;a++){var s=1*a;this.modules[i][a]&&(o.beginFill(0,100),o.moveTo(s,n),o.lineTo(s+1,n),o.lineTo(s+1,n+1),o.lineTo(s,n+1),o.endFill())}return o},setupTimingPattern:function(){for(var t=8;t<this.moduleCount-8;t++)null==this.modules[t][6]&&(this.modules[t][6]=0==t%2);for(var e=8;e<this.moduleCount-8;e++)null==this.modules[6][e]&&(this.modules[6][e]=0==e%2)},setupPositionAdjustPattern:function(){for(var t=l.getPatternPosition(this.typeNumber),e=0;e<t.length;e++)for(var r=0;r<t.length;r++){var o=t[e],i=t[r];if(null==this.modules[o][i])for(var n=-2;2>=n;n++)for(var a=-2;2>=a;a++)this.modules[o+n][i+a]=-2==n||2==n||-2==a||2==a||0==n&&0==a}},setupTypeNumber:function(t){for(var e=l.getBCHTypeNumber(this.typeNumber),r=0;18>r;r++){var o=!t&&1==(1&e>>r);this.modules[Math.floor(r/3)][r%3+this.moduleCount-8-3]=o}for(r=0;18>r;r++){o=!t&&1==(1&e>>r);this.modules[r%3+this.moduleCount-8-3][Math.floor(r/3)]=o}},setupTypeInfo:function(t,e){for(var r=this.errorCorrectLevel<<3|e,o=l.getBCHTypeInfo(r),i=0;15>i;i++){var n=!t&&1==(1&o>>i);6>i?this.modules[i][8]=n:8>i?this.modules[i+1][8]=n:this.modules[this.moduleCount-15+i][8]=n}for(i=0;15>i;i++){n=!t&&1==(1&o>>i);8>i?this.modules[8][this.moduleCount-i-1]=n:9>i?this.modules[8][15-i-1+1]=n:this.modules[8][15-i-1]=n}this.modules[this.moduleCount-8][8]=!t},mapData:function(t,e){for(var r=-1,o=this.moduleCount-1,i=7,n=0,a=this.moduleCount-1;a>0;a-=2)for(6==a&&a--;;){for(var s=0;2>s;s++)if(null==this.modules[o][a-s]){var h=!1;n<t.length&&(h=1==(1&t[n]>>>i)),l.getMask(e,o,a-s)&&(h=!h),this.modules[o][a-s]=h,-1==--i&&(n++,i=7)}if(0>(o+=r)||this.moduleCount<=o){o-=r,r=-r;break}}}},e.PAD0=236,e.PAD1=17,e.createData=function(t,r,n){for(var a=o.getRSBlocks(t,r),s=new i,h=0;h<n.length;h++){var u=n[h];s.put(u.mode,4),s.put(u.getLength(),l.getLengthInBits(u.mode,t)),u.write(s)}var f=0;for(h=0;h<a.length;h++)f+=a[h].dataCount;if(s.getLengthInBits()>8*f)throw new Error(\"code length overflow. (\"+s.getLengthInBits()+\">\"+8*f+\")\");for(s.getLengthInBits()+4<=8*f&&s.put(0,4);0!=s.getLengthInBits()%8;)s.putBit(!1);for(;!(s.getLengthInBits()>=8*f)&&(s.put(e.PAD0,8),!(s.getLengthInBits()>=8*f));)s.put(e.PAD1,8);return e.createBytes(s,a)},e.createBytes=function(t,e){for(var o=0,i=0,n=0,a=new Array(e.length),s=new Array(e.length),h=0;h<e.length;h++){var u=e[h].dataCount,f=e[h].totalCount-u;i=Math.max(i,u),n=Math.max(n,f),a[h]=new Array(u);for(var g=0;g<a[h].length;g++)a[h][g]=255&t.buffer[g+o];o+=u;var d=l.getErrorCorrectPolynomial(f),c=new r(a[h],d.getLength()-1).mod(d);s[h]=new Array(d.getLength()-1);for(g=0;g<s[h].length;g++){var p=g+c.getLength()-s[h].length;s[h][g]=p>=0?c.get(p):0}}var m=0;for(g=0;g<e.length;g++)m+=e[g].totalCount;var _=new Array(m),v=0;for(g=0;i>g;g++)for(h=0;h<e.length;h++)g<a[h].length&&(_[v++]=a[h][g]);for(g=0;n>g;g++)for(h=0;h<e.length;h++)g<s[h].length&&(_[v++]=s[h][g]);return _};for(var s={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},h={L:1,M:0,Q:3,H:2},u={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},l={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(t){for(var e=t<<10;l.getBCHDigit(e)-l.getBCHDigit(l.G15)>=0;)e^=l.G15<<l.getBCHDigit(e)-l.getBCHDigit(l.G15);return(t<<10|e)^l.G15_MASK},getBCHTypeNumber:function(t){for(var e=t<<12;l.getBCHDigit(e)-l.getBCHDigit(l.G18)>=0;)e^=l.G18<<l.getBCHDigit(e)-l.getBCHDigit(l.G18);return t<<12|e},getBCHDigit:function(t){for(var e=0;0!=t;)e++,t>>>=1;return e},getPatternPosition:function(t){return l.PATTERN_POSITION_TABLE[t-1]},getMask:function(t,e,r){switch(t){case u.PATTERN000:return 0==(e+r)%2;case u.PATTERN001:return 0==e%2;case u.PATTERN010:return 0==r%3;case u.PATTERN011:return 0==(e+r)%3;case u.PATTERN100:return 0==(Math.floor(e/2)+Math.floor(r/3))%2;case u.PATTERN101:return 0==e*r%2+e*r%3;case u.PATTERN110:return 0==(e*r%2+e*r%3)%2;case u.PATTERN111:return 0==(e*r%3+(e+r)%2)%2;default:throw new Error(\"bad maskPattern:\"+t)}},getErrorCorrectPolynomial:function(t){for(var e=new r([1],0),o=0;t>o;o++)e=e.multiply(new r([1,f.gexp(o)],0));return e},getLengthInBits:function(t,e){if(e>=1&&10>e)switch(t){case s.MODE_NUMBER:return 10;case s.MODE_ALPHA_NUM:return 9;case s.MODE_8BIT_BYTE:case s.MODE_KANJI:return 8;default:throw new Error(\"mode:\"+t)}else if(27>e)switch(t){case s.MODE_NUMBER:return 12;case s.MODE_ALPHA_NUM:return 11;case s.MODE_8BIT_BYTE:return 16;case s.MODE_KANJI:return 10;default:throw new Error(\"mode:\"+t)}else{if(!(41>e))throw new Error(\"type:\"+e);switch(t){case s.MODE_NUMBER:return 14;case s.MODE_ALPHA_NUM:return 13;case s.MODE_8BIT_BYTE:return 16;case s.MODE_KANJI:return 12;default:throw new Error(\"mode:\"+t)}}},getLostPoint:function(t){for(var e=t.getModuleCount(),r=0,o=0;e>o;o++)for(var i=0;e>i;i++){for(var n=0,a=t.isDark(o,i),s=-1;1>=s;s++)if(!(0>o+s||o+s>=e))for(var h=-1;1>=h;h++)0>i+h||i+h>=e||(0!=s||0!=h)&&a==t.isDark(o+s,i+h)&&n++;n>5&&(r+=3+n-5)}for(o=0;e-1>o;o++)for(i=0;e-1>i;i++){var u=0;t.isDark(o,i)&&u++,t.isDark(o+1,i)&&u++,t.isDark(o,i+1)&&u++,t.isDark(o+1,i+1)&&u++,(0==u||4==u)&&(r+=3)}for(o=0;e>o;o++)for(i=0;e-6>i;i++)t.isDark(o,i)&&!t.isDark(o,i+1)&&t.isDark(o,i+2)&&t.isDark(o,i+3)&&t.isDark(o,i+4)&&!t.isDark(o,i+5)&&t.isDark(o,i+6)&&(r+=40);for(i=0;e>i;i++)for(o=0;e-6>o;o++)t.isDark(o,i)&&!t.isDark(o+1,i)&&t.isDark(o+2,i)&&t.isDark(o+3,i)&&t.isDark(o+4,i)&&!t.isDark(o+5,i)&&t.isDark(o+6,i)&&(r+=40);var l=0;for(i=0;e>i;i++)for(o=0;e>o;o++)t.isDark(o,i)&&l++;return r+10*(Math.abs(100*l/e/e-50)/5)}},f={glog:function(t){if(1>t)throw new Error(\"glog(\"+t+\")\");return f.LOG_TABLE[t]},gexp:function(t){for(;0>t;)t+=255;for(;t>=256;)t-=255;return f.EXP_TABLE[t]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},g=0;8>g;g++)f.EXP_TABLE[g]=1<<g;for(g=8;256>g;g++)f.EXP_TABLE[g]=f.EXP_TABLE[g-4]^f.EXP_TABLE[g-5]^f.EXP_TABLE[g-6]^f.EXP_TABLE[g-8];for(g=0;255>g;g++)f.LOG_TABLE[f.EXP_TABLE[g]]=g;r.prototype={get:function(t){return this.num[t]},getLength:function(){return this.num.length},multiply:function(t){for(var e=new Array(this.getLength()+t.getLength()-1),o=0;o<this.getLength();o++)for(var i=0;i<t.getLength();i++)e[o+i]^=f.gexp(f.glog(this.get(o))+f.glog(t.get(i)));return new r(e,0)},mod:function(t){if(this.getLength()-t.getLength()<0)return this;for(var e=f.glog(this.get(0))-f.glog(t.get(0)),o=new Array(this.getLength()),i=0;i<this.getLength();i++)o[i]=this.get(i);for(i=0;i<t.getLength();i++)o[i]^=f.gexp(f.glog(t.get(i))+e);return new r(o,0).mod(t)}},o.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],o.getRSBlocks=function(t,e){var r=o.getRsBlockTable(t,e);if(null==r)throw new Error(\"bad rs block @ typeNumber:\"+t+\"/errorCorrectLevel:\"+e);for(var i=r.length/3,n=[],a=0;i>a;a++)for(var s=r[3*a+0],h=r[3*a+1],u=r[3*a+2],l=0;s>l;l++)n.push(new o(h,u));return n},o.getRsBlockTable=function(t,e){switch(e){case h.L:return o.RS_BLOCK_TABLE[4*(t-1)+0];case h.M:return o.RS_BLOCK_TABLE[4*(t-1)+1];case h.Q:return o.RS_BLOCK_TABLE[4*(t-1)+2];case h.H:return o.RS_BLOCK_TABLE[4*(t-1)+3];default:return}},i.prototype={get:function(t){var e=Math.floor(t/8);return 1==(1&this.buffer[e]>>>7-t%8)},put:function(t,e){for(var r=0;e>r;r++)this.putBit(1==(1&t>>>e-r-1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}};var d=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]],c=function(){var t=function(t,e){this._el=t,this._htOption=e};return t.prototype.draw=function(t){function e(t,e){var r=document.createElementNS(\"http://www.w3.org/2000/svg\",t);for(var o in e)e.hasOwnProperty(o)&&r.setAttribute(o,e[o]);return r}var r=this._htOption,o=this._el,i=t.getModuleCount();Math.floor(r.width/i),Math.floor(r.height/i),this.clear();var n=e(\"svg\",{viewBox:\"0 0 \"+String(i)+\" \"+String(i),width:\"100%\",height:\"100%\",fill:r.colorLight});n.setAttributeNS(\"http://www.w3.org/2000/xmlns/\",\"xmlns:xlink\",\"http://www.w3.org/1999/xlink\"),o.appendChild(n),n.appendChild(e(\"rect\",{fill:r.colorDark,width:\"1\",height:\"1\",id:\"template\"}));for(var a=0;i>a;a++)for(var s=0;i>s;s++)if(t.isDark(a,s)){var h=e(\"use\",{x:String(a),y:String(s)});h.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",\"#template\"),n.appendChild(h)}},t.prototype.clear=function(){for(;this._el.hasChildNodes();)this._el.removeChild(this._el.lastChild)},t}(),p=\"svg\"===document.documentElement.tagName.toLowerCase()?c:\"undefined\"!=typeof CanvasRenderingContext2D?function(){function t(){this._elImage.src=this._elCanvas.toDataURL(\"image/png\"),this._elImage.style.display=\"block\",this._elCanvas.style.display=\"none\"}if(this._android&&this._android<=2.1){var e=1/window.devicePixelRatio,r=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(t,o,i,n,a,s,h,u){if(\"nodeName\"in t&&/img/i.test(t.nodeName))for(var l=arguments.length-1;l>=1;l--)arguments[l]=arguments[l]*e;else void 0===u&&(arguments[1]*=e,arguments[2]*=e,arguments[3]*=e,arguments[4]*=e);r.apply(this,arguments)}}var o=function(t,e){this._bIsPainted=!1,this._android=n(),this._htOption=e,this._elCanvas=document.createElement(\"canvas\"),this._elCanvas.width=e.width,this._elCanvas.height=e.height,t.appendChild(this._elCanvas),this._el=t,this._oContext=this._elCanvas.getContext(\"2d\"),this._bIsPainted=!1,this._elImage=document.createElement(\"img\"),this._elImage.style.display=\"none\",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return o.prototype.draw=function(t){var e=this._elImage,r=this._oContext,o=this._htOption,i=t.getModuleCount(),n=o.width/i,a=o.height/i,s=Math.round(n),h=Math.round(a);e.style.display=\"none\",this.clear();for(var u=0;i>u;u++)for(var l=0;i>l;l++){var f=t.isDark(u,l),g=l*n,d=u*a;r.strokeStyle=f?o.colorDark:o.colorLight,r.lineWidth=1,r.fillStyle=f?o.colorDark:o.colorLight,r.fillRect(g,d,n,a),r.strokeRect(Math.floor(g)+.5,Math.floor(d)+.5,s,h),r.strokeRect(Math.ceil(g)-.5,Math.ceil(d)-.5,s,h)}this._bIsPainted=!0},o.prototype.makeImage=function(){this._bIsPainted&&function(t,e){var r=this;if(r._fFail=e,r._fSuccess=t,null===r._bSupportDataURI){var o=document.createElement(\"img\"),i=function(){r._bSupportDataURI=!1,r._fFail&&_fFail.call(r)};return o.onabort=i,o.onerror=i,o.onload=function(){r._bSupportDataURI=!0,r._fSuccess&&r._fSuccess.call(r)},void(o.src=\"data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==\")}!0===r._bSupportDataURI&&r._fSuccess?r._fSuccess.call(r):!1===r._bSupportDataURI&&r._fFail&&r._fFail.call(r)}.call(this,t)},o.prototype.isPainted=function(){return this._bIsPainted},o.prototype.clear=function(){this._oContext.clearRect(0,0,this._elCanvas.width,this._elCanvas.height),this._bIsPainted=!1},o.prototype.round=function(t){return t?Math.floor(1e3*t)/1e3:t},o}():function(){var t=function(t,e){this._el=t,this._htOption=e};return t.prototype.draw=function(t){for(var e=this._htOption,r=this._el,o=t.getModuleCount(),i=Math.floor(e.width/o),n=Math.floor(e.height/o),a=['<table style=\"border:0;border-collapse:collapse;\">'],s=0;o>s;s++){a.push(\"<tr>\");for(var h=0;o>h;h++)a.push('<td style=\"border:0;border-collapse:collapse;padding:0;margin:0;width:'+i+\"px;height:\"+n+\"px;background-color:\"+(t.isDark(s,h)?e.colorDark:e.colorLight)+';\"></td>');a.push(\"</tr>\")}a.push(\"</table>\"),r.innerHTML=a.join(\"\");var u=r.childNodes[0],l=(e.width-u.offsetWidth)/2,f=(e.height-u.offsetHeight)/2;l>0&&f>0&&(u.style.margin=f+\"px \"+l+\"px\")},t.prototype.clear=function(){this._el.innerHTML=\"\"},t}();(QRCode=function(t,e){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:\"#000000\",colorLight:\"#ffffff\",correctLevel:h.H},\"string\"==typeof e&&(e={text:e}),e)for(var r in e)this._htOption[r]=e[r];\"string\"==typeof t&&(t=document.getElementById(t)),this._android=n(),this._el=t,this._oQRCode=null,this._oDrawing=new p(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)}).prototype.makeCode=function(t){this._oQRCode=new e(a(t,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(t),this._oQRCode.make(),this._el.title=t,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){\"function\"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=h}();\n//# sourceMappingURL=GlobalScripts.min.js.map\n","defer(function() {\r\n window.jQuery(document).ready(function() {\r\n //JQuery for site-wide use\r\n //console.log('Celebration script loaded');\r\n\r\n\r\n //crewards and groups pages smooth scrolling\r\n $(document).on('click', '.tab-styled-navigation-account.smooth-scroll a[href^=\"#\"]', function (event) {\r\n event.preventDefault();\r\n\r\n $('html, body').animate({\r\n scrollTop: $($.attr(this, 'href')).offset().top\r\n }, 500);\r\n });\r\n\r\n //function shareThisCinemasShowtimes(this) {\r\n //$('.cinema-location-share-icon').on('click', function() {\r\n $(document).on('click', '.cinema-location-share-icon', function() {\r\n console.log('cinema box click');\r\n var s_cinema = $(this).data('cinemaValue');\r\n var s_url = $(\"#share-film-url\").val();\r\n var s_title = $(\"#share-film-title\").val();\r\n var s_hocode = $(\"#share-film-hocode\").val();\r\n var s_date = $(\"#share-film-date\").val();\r\n var s_format = $(\"#share-film-format\").val();\r\n\r\n //console.log('sharing cinema share', s_url, s_title, s_hocode, s_cinema, s_date, s_format);\r\n \r\n //showtime string builder\r\n var showtimelist = \"\";\r\n var showtimeboxcontainer = $(this).parent('.card.movie-card').find('.show-time-box-container');\r\n var formats = $(showtimeboxcontainer).find('.format-container');\r\n var flength = formats.length;\r\n //console.log('formats', flength);\r\n $(formats).each(function() {\r\n var formatTitle = $(this).find('h3').text().trim();\r\n var times = $(this).find('.show-time-col');\r\n showtimelist += \" \\n\\n\"+formatTitle +\": \";\r\n var slength = times.length;\r\n //console.log('shows', slength);\r\n $(times).each(function(index, elm) {\r\n var a_showing = $(this).find('.show-time-box').data('showtimeValue').toString();\r\n //console.log(index, (slength - 1));\r\n if (index === (slength - 1)) {\r\n showtimelist += a_showing;\r\n } else {\r\n showtimelist += a_showing + \", \";\r\n }\r\n });\r\n });\r\n\r\n shareShowtimeLink(s_url, s_title, s_hocode, s_cinema, s_date, s_format, 'cinema', $(this), showtimelist);\r\n });\r\n //}\r\n\r\n $('#share-film-button-mobile, #share-film-button-desktop').on('click', function() {\r\n //console.log('film click');\r\n var s_url = $(\"#share-film-url\").val();\r\n var s_title = $(\"#share-film-title\").val();\r\n var s_hocode = $(\"#share-film-hocode\").val();\r\n var s_cinema = $(\"#share-film-cinema\").val();\r\n var s_date = $(\"#share-film-date\").val();\r\n var s_format = $(\"#share-film-format\").val();\r\n\r\n //console.log('sharing film share', s_url, s_title, s_hocode, s_cinema, s_date, s_format);\r\n shareShowtimeLink(s_url, s_title, s_hocode, s_cinema, s_date, s_format, 'film', $(this), \"\");\r\n });\r\n\r\n function shareShowtimeLink(s_url, s_title, s_hocode, s_cinema, s_date, s_format, share_button, self, showtimelist) {\r\n //var s_url = $(\"#share-film-url\").val();\r\n //var s_title = $(\"#share-film-title\").val();\r\n //var s_hocode = $(\"#share-film-hocode\").val();\r\n //var s_cinema = $(\"#share-film-cinema\").val();\r\n //var s_date = $(\"#share-film-date\").val();\r\n //var s_format = $(\"#share-film-format\").val();\r\n \r\n console.log('film share values', s_url, s_title, s_hocode, s_cinema, s_date, s_format, share_button, showtimelist);\r\n\r\n var mTime = new Date()\r\n var dayOfWeekAndMonth = new Date();\r\n var nowDate = moment().tz('America/New_York');\r\n\t\t\t\tvar iscurrentDate = null;\r\n \r\n //console.log('1');\r\n if (s_date) {\r\n //let fDate = new Date(s_date);\r\n\t\t\t\t let mDate = moment(s_date, \"YYYY-MM-DD\", 'America/New_York');\r\n var iscurrentDate = mDate.isSame(nowDate, \"day\");\r\n dayOfWeekAndMonth = moment(mDate).format('dddd, MMM. Do');\r\n } else {\r\n //no date, just assume it is today/no filter\r\n iscurrentDate = true;\r\n }\r\n //console.log('2');\r\n //url builder\r\n var filterAdded = false;\r\n\r\n if (s_date) {\r\n var formattedDate = moment(s_date, \"YYYY-MM-DD\").format(\"YYYY-MM-DD\");\r\n if (filterAdded) {\r\n s_url += \"&date=\" + formattedDate;\r\n } else {\r\n s_url += \"?date=\" + formattedDate;\r\n filterAdded = true;\r\n } \r\n }\r\n if (s_cinema) {\r\n if (filterAdded) {\r\n s_url += \"&cinema=\" + s_cinema;\r\n } else {\r\n s_url += \"?cinema=\" + s_cinema;\r\n filterAdded = true;\r\n } \r\n }\r\n if (s_format) {\r\n if (filterAdded) {\r\n s_url += \"&format=\" + encodeURIComponent(s_format);\r\n } else {\r\n s_url += \"?format=\" + encodeURIComponent(s_format);\r\n filterAdded = true;\r\n } \r\n }\r\n\r\n var cinema_names=[{id:\"002\",name:\"GR North\"},{id:\"003\",name:\"Crossroads\"},{id:\"004\",name:\"GR South\"},{id:\"005\",name:\"Rivertown\"},{id:\"006\",name:\"Lansing\"},{id:\"007\",name:\"Benton Harbor\"},{id:\"008\",name:\"Mt Pleasant\"},{id:\"009\",name:\"Cinema Carousel\"},{id:\"011\",name:\"Getty\"},{id:\"012\",name:\"Meridian Mall\"},{id:\"013\",name:\"Studio Park\"}];\r\n cinemaNameText = \". \";\r\n if (s_cinema) {\r\n var cinemaName = _.find(cinema_names, {\"id\":s_cinema}).name;\r\n cinemaNameText = \" at \" + cinemaName + \". \";\r\n }\r\n\r\n var messageText = \"\";\r\n\t\t\t\tif (iscurrentDate) {\r\n\t\t\t\t\tmessageText = \"Check out showtimes for \" + s_title + \" playing Today\" + cinemaNameText + showtimelist + \"\\n\" + s_url;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmessageText = \"Check out showtimes for \" + s_title + \" on \" + dayOfWeekAndMonth + cinemaNameText + showtimelist + \"\\n\" + s_url;\r\n\t\t\t\t}\r\n \r\n console.log(messageText);\r\n\r\n //share logic\r\n //try to also use web api's share feature\r\n\t\t\t\t\ttry {\r\n navigator.clipboard.writeText(messageText); \r\n\t\t\t\t\t const userAgent = navigator.userAgent.toLowerCase();\r\n\t\t\t\t\t\tconst isMobile = /android|iphone|ipod/i.test(userAgent);\r\n\t\t\t\t\t\tconst isTablet = /ipad|tablet/i.test(userAgent) && !isMobile;\r\n\r\n\t\t\t\t\t\t//console.log('device info. isMobile: ' + isMobile + '. isTablet: ' + isTablet + '. UserAgent:', userAgent);\r\n\t\t\t\t\t\tif (isMobile || isTablet) {\r\n\t\t\t\t\t\t\tif (!navigator.canShare) {\r\n\t\t\t\t\t\t\t\tconsole.log(\"Your browser doesn't support the Web Share API.\");\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t } else {\r\n\t\t\t\t\t\t\t\tconsole.log('can use navigator.share');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tconst shareData = {\r\n\t\t\t\t\t\t\t\ttitle: \"Celebration! Cinema: \" + s_title,\r\n\t\t\t\t\t\t\t\ttext: messageText,\r\n\t\t\t\t\t\t\t\t//url: s_url,\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tconsole.log('share', shareData);\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tnavigator.share(shareData);\r\n\t\t\t\t\t\t\t\tconsole.log('sharing...');\r\n\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\tconsole.log(\"can't share\", error);\r\n\t\t\t\t\t\t\t\t//alert(error);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} catch (err) {\r\n\t\t\t\t\t\t//do nothing, copy to clipboard is also firing\r\n\t\t\t\t\t\tconsole.log('nothing to copy to navigator clipboard',err);\r\n\t\t\t\t\t}\r\n\r\n\r\n if (share_button === 'film') {\r\n //progress bar alert\r\n $('.share-film-button-container').fadeOut(250);\r\n\t\t\t setTimeout(() => {\r\n\t\t\t\t\t$('.share-film-button-text').fadeIn(250);\r\n $('.share-film-button-progress').fadeIn(250);\r\n\t\t\t\t\tvar totalTime = 10000 - 250;\r\n\t\t\t\t\tsmoothTimer(totalTime, 100, (progress) => {\r\n\t\t\t\t\t\tvar percent = Math.round(progress * 100);\r\n\t\t\t\t\t\tvar remaining = 100 - percent;\r\n\t\t\t\t\t\tvar styleWidth = remaining+'%';\r\n $('.progress').css('width', styleWidth)\r\n\t\t\t\t\t\t//console.log(`Progress: ${percent}%`);\r\n\t\t\t\t\t\t});\t\r\n\t\t\t\t}, 250);\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t$('.share-film-button-text').fadeOut(250); \r\n $('.share-film-button-progress').fadeOut(250); \r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t$('.share-film-button-container').fadeIn(250);\r\n\t\t\t\t\t}, 500);\r\n\t\t\t\t}, 10000);\r\n }\r\n\r\n if (share_button === 'cinema') {\r\n $(self).find('.cinema-showtimes-copied').fadeIn(500);\r\n setTimeout(() => {\r\n $(self).find('.cinema-showtimes-copied').fadeOut(500);\r\n\t\t\t\t }, 5000);\r\n }\r\n }\r\n\r\n //film showtime share progress bar\r\n function smoothTimer(duration, steps, callback) {\r\n\t\t\tconst interval = duration / steps;\r\n\t\t\tfor (let i = 1; i <= steps; i++) {\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tcallback(i / steps);\r\n\t\t\t\t}, interval * i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n //showtime confirmation modal/drawer\r\n var enabled = true;\r\n if (enabled) {\r\n $('#showtime-confirmation-modal').modal({ show: true, backdrop: 'static', keyboard: false });\r\n }\r\n var isShowtimeConfirmationPage = !!$('#showtime-confirmation-modal').length;\r\n if (enabled && isShowtimeConfirmationPage) {\r\n //convert time to EST via moment \r\n var showtimeOG = $('#showtime-confirmation-modal .time-container').text().trim().toString();\r\n if (showtimeOG && window.moment) {\r\n //var ESTtime = moment.utc(showtimeOG, \"YYYY-MM-DDTHH:mm:ssZ\").tz('America/New_York').format('MMMM Do @ h:mm a');\r\n //var ESTtimeDayOfWeek = moment.utc(showtimeOG, \"YYYY-MM-DDTHH:mm:ssZ\").tz('America/New_York').format('dddd'); \r\n var ESTtime = moment.utc(showtimeOG, \"YYYY-MM-DDTHH:mm:ssZ\").format('MMMM Do @ h:mm a');\r\n var ESTtimeDayOfWeek = moment.utc(showtimeOG, \"YYYY-MM-DDTHH:mm:ssZ\").format('dddd'); \r\n /**\r\n console.log('-----testing times------');\r\n console.log('1', moment(showtimeOG, \"YYYY-MM-DDTHH:mm:ss\").tz('America/New_York').format('MMMM Do @ h:mm a'));\r\n console.log('2', moment(showtimeOG, \"YYYY-MM-DDTHH:mm:ssZ\").tz('America/New_York').format('MMMM Do @ h:mm a'));\r\n console.log('3', moment.utc(showtimeOG, \"YYYY-MM-DDTHH:mm:ssZ\").tz('America/New_York').format('MMMM Do @ h:mm a'));\r\n console.log('4', moment.utc(showtimeOG, \"YYYY-MM-DDTHH:mm:ssZ\").tz('America/New_York').format('MMMM Do @ h:mm a'));\r\n console.log('5', moment(showtimeOG, \"YYYY-MM-DDTHH:mm:ss\").format('MMMM Do @ h:mm a'));\r\n console.log('6', moment(showtimeOG, \"YYYY-MM-DDTHH:mm:ssZ\").format('MMMM Do @ h:mm a'));\r\n console.log('7', moment.utc(showtimeOG, \"YYYY-MM-DDTHH:mm:ssZ\").format('MMMM Do @ h:mm a'));\r\n console.log('8', moment.utc(showtimeOG, \"YYYY-MM-DDTHH:mm:ssZ\").format('MMMM Do @ h:mm a'));\r\n console.log('-----------'); \r\n console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)\r\n **/\r\n var $div = \"<span class='day-of-week'>\" + ESTtimeDayOfWeek + \"</span>\" + \"<span class='date-of-week'>\" + ESTtime + \"</span>\";\r\n $('#showtime-confirmation-modal .time-container').html($div);\r\n $('#showtime-confirmation-modal .time-container').css('opacity', 1);\r\n\r\n $('#showtime-confirmation-drawer .time-container').text(ESTtime);\r\n $('#showtime-confirmation-drawer .time-container').css('opacity', 1);\r\n }\r\n // do something...\r\n };\r\n\r\n //Tab System bug fixes for url updating and consuming\r\n //Onload consuming \r\n var hash = window.location.hash;\r\n\r\n if (hash) {\r\n //set a minor timeout (any time works), as handlers are attached during .ready() so we need to do this on the next event loop.\r\n setTimeout(function() {\r\n\r\n //random url bugs\r\n hash = hash.replace(\"#!#\", \"#\");\r\n hash = hash.replace(\"#\", \"\");\r\n\r\n //reroute tab active view\r\n if ($('.sfs-tabstrip-configurator.nav.nav-tabs a[aria-controls=\"' + hash + '\"]')) {\r\n $('.sfs-tabstrip-configurator.nav.nav-tabs a[aria-controls=\"' + hash + '\"]').trigger('click');\r\n }\r\n }, 10);\r\n }\r\n\r\n //On click updating\r\n $('ul.nav-tabs li a[role=\"tab\"]').click(function(e) {\r\n //$(\"html, body\").animate({ scrollTop: 0 }, \"fast\");\r\n $('ul.nav-tabs li.active').removeClass('active')\r\n $(this).parent('li').addClass('active')\r\n var tabTop = $(this).offset().top - 150;\r\n window.scrollTo(0, tabTop);\r\n\r\n //var newValue = e.target.getAttribute(\"aria-controls\");\r\n //const urlParams = new URLSearchParams(window.location.search);\r\n //urlParams.set('tab', newValue);\r\n //window.location.search = urlParams;\r\n\r\n var newValue = e.target.getAttribute(\"aria-controls\");\r\n const url = new URL(window.location.href);\r\n url.searchParams.delete('tab');\r\n url.searchParams.delete('updatepassword');\r\n url.searchParams.set('tab', newValue);\r\n window.history.replaceState(null, null, url); // or pushState\r\n\r\n e.preventDefault();\r\n });\r\n\r\n const convertTabsToDD = function() {\r\n\r\n $(\".sfs-tabstrip:not(.dd-converted)\").each(function() {\r\n let strip = $(this);\r\n let menu = $(this).find(\".tab-configurator\");\r\n let tabs = $(this).find(\".tab-content.tab-panels\");\r\n\r\n let selectEl = $(\"<select class='form-control' />\").appendTo($(\"<div class='sfs-tab-dropdown d-block d-md-none'><div class='form-group form-custom-select no-label'></div></div>\").insertAfter(menu));\r\n let i = 0;\r\n $(menu).find(\".sfs-tabstrip-configurator a\").each(function() {\r\n let active = false,\r\n el = $(this);\r\n let opt = $(\"<option value='\" + ++i + \"'>\" + el.text() + \"</option>\").appendTo(selectEl);\r\n if (el.parent().hasClass(\"active\")) opt.attr(\"selected\", true);\r\n });\r\n\r\n $(selectEl).change(function() {\r\n tabs.find(\".sfs-tabitem.tab-pane\").removeClass(\"active\");\r\n var opt = $(menu).find(\".sfs-tabstrip-configurator li:nth-child(\" + $(this).val() + \") a\");\r\n tabs.find(opt.attr(\"href\")).addClass(\"active\");\r\n });\r\n\r\n menu.addClass(\"d-none d-md-flex\");\r\n strip.addClass(\"dd-converted\");\r\n });\r\n };\r\n\r\n convertTabsToDD();\r\n\r\n\r\n\r\n $('#sub-page-navigation-mobile').on('change', function() {\r\n var url = $(this).val();\r\n if (url) { // require a URL\r\n window.location = url;\r\n }\r\n return false;\r\n });\r\n });\r\n});\r\n\r\nfunction defer(method) {\r\n if (window.jQuery) {\r\n method();\r\n } else {\r\n setTimeout(function() { defer(method) }, 50);\r\n }\r\n}\r\n\r\nwindow.jQuery(document).ready(function() {\r\n AOS.init({ once: true });\r\n});\r\n\r\n\r\n$(document).on('click', '.tab-styled-navigation a[href^=\"#\"]', function(event) {\r\n event.preventDefault();\r\n\r\n $('html, body').animate({\r\n scrollTop: $($.attr(this, 'href')).offset().top - 200\r\n }, 500);\r\n});\r\n\r\n$(\".current-film\").on(\"click\", function() {\r\n $('.film-list').slideToggle(750);\r\n $('.change-film-dropdown').toggleClass(\"open\");\r\n $('body').toggleClass('nav-open');\r\n});\r\n\r\n$(\".film-list > div\").on(\"click\", function() {\r\n window.location.href = $(this).attr('value');\r\n});\r\n\r\n$('.movie-card-content-mask-text.show').on(\"click\", function() {\r\n $('.movie-card-content').addClass('open');\r\n //$('.movie-card-content-mask').addClass('open');\r\n $('.movie-card-content-mask-text.show').hide();\r\n $('.movie-card-content-mask-text.hide').show();\r\n});\r\n$('.movie-card-content-mask-text.hide').on(\"click\", function() {\r\n $('.movie-card-content').removeClass('open');\r\n //$('.movie-card-content-mask').removeClass('open');\r\n $('.movie-card-content-mask-text.show').show();\r\n $('.movie-card-content-mask-text.hide').hide();\r\n});\r\n\r\nwindow.jQuery(document).ready(function() {\r\n let confirmationParam = new URLSearchParams(window.location.search);\r\n let swapped = confirmationParam.get('confirmation');\r\n\r\n //if seat was swapped (i.e. confirmation param exists) then remove the param and show success message\r\n if (swapped === \"true\") {\r\n //clear out confirmation message in case they reload page now\r\n window.history.pushState({}, \"\", window.location.href.split(\"&confirmation=true\")[0]);\r\n\r\n window.scrollTo({\r\n top: 0,\r\n behavior: 'smooth'\r\n });\r\n\r\n //show swap confirmation\r\n $('.seat-swap-alert.success').show();\r\n } else if (swapped === \"false\") {\r\n //clear out confirmation message in case they reload page now\r\n window.history.pushState({}, \"\", window.location.href.split(\"&confirmation=false\")[0]);\r\n\r\n window.scrollTo({\r\n top: 0,\r\n behavior: 'smooth'\r\n });\r\n\r\n //show swap confirmation\r\n $('.seat-swap-alert.fail').show();\r\n }\r\n\r\n $('#no-seat-swap-allowed .new-order-number').on('keypress', function(event) {\r\n if (event.key === \"Enter\") {\r\n if ($(this).val() != '') {\r\n event.preventDefault();\r\n $('#loadNewBookingId i').css('display', 'inline-block');\r\n $('#no-seat-swap-allowed #loadNewBookingId').prop('disabled', true);\r\n $('#no-seat-swap-allowed #loadNewBookingId').click();\r\n }\r\n }\r\n });\r\n\r\n $('#no-seat-swap-allowed .new-order-number').on('input', function() {\r\n console.log('change');\r\n if ($(this).val() != '') {\r\n $('#no-seat-swap-allowed #loadNewBookingId').prop('disabled', false);\r\n } else {\r\n $('#no-seat-swap-allowed #loadNewBookingId').prop('disabled', true);\r\n }\r\n });\r\n\r\n $(\"#no-seat-swap-allowed #loadNewBookingId\").on('click', function() {\r\n let ordernum = $('#no-seat-swap-allowed .new-order-number').val();\r\n\r\n let orderURL = location.protocol + '//' + location.host + location.pathname;\r\n orderURL += \"?bookingId=\" + ordernum;\r\n\r\n $('#loadNewBookingId i').css('display', 'inline-block');\r\n $('#no-seat-swap-allowed #loadNewBookingId').prop('disabled', true);\r\n\r\n window.location = orderURL;\r\n });\r\n});\r\n\r\nfunction dismissShowtimeDrawer() {\r\n $('#showtime-confirmation-drawer').animate({ 'left': '-205px' }, 500, function() {\r\n $('#showtime-confirmation-drawer').addClass('drawer-hide');\r\n });\r\n}","var isFormSubmitting = false;\r\njQuery(document).ready(function () {\r\n //console.log('form.all in jQuery');\r\n $(\"div[data-sf-role='form-container'] form\").on('submit', function(e) {\r\n if(!isFormSubmitting) {\r\n isFormSubmitting = true;\r\n $('button[type=\"submit\"]').addClass('sf-form-submitting');\r\n $('input[type=\"submit\"]').addClass('sf-form-submitting');\r\n }\r\n });\r\n});","!function(e){var t;\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):((t=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).braintree||(t.braintree={})).client=e()}(function(){return function n(i,o,a){function s(t,e){if(!o[t]){if(!i[t]){var r=\"function\"==typeof require&&require;if(!e&&r)return r(t,!0);if(c)return c(t,!0);throw(e=new Error(\"Cannot find module '\"+t+\"'\")).code=\"MODULE_NOT_FOUND\",e}r=o[t]={exports:{}},i[t][0].call(r.exports,function(e){return s(i[t][1][e]||e)},r,r.exports,n,i,o,a)}return o[t].exports}for(var c=\"function\"==typeof require&&require,e=0;e<a.length;e++)s(a[e]);return s}({1:[function(e,t,r){\"use strict\";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},n=(Object.defineProperty(r,\"__esModule\",{value:!0}),r.PromiseGlobal=void 0,n(e(\"promise-polyfill\"))),e=\"undefined\"!=typeof Promise?Promise:n.default;r.PromiseGlobal=e},{\"promise-polyfill\":15}],2:[function(e,t,r){\"use strict\";var a=e(\"./lib/promise\"),s={};function n(r){var e,n,t,i,o=JSON.stringify(r);return!r.forceScriptReload&&(e=s[o])||(n=document.createElement(\"script\"),t=r.dataAttributes||{},i=r.container||document.head,n.src=r.src,n.id=r.id||\"\",n.async=!0,r.crossorigin&&n.setAttribute(\"crossorigin\",\"\"+r.crossorigin),Object.keys(t).forEach(function(e){n.setAttribute(\"data-\"+e,\"\"+t[e])}),e=new a.PromiseGlobal(function(e,t){n.addEventListener(\"load\",function(){e(n)}),n.addEventListener(\"error\",function(){t(new Error(r.src+\" failed to load.\"))}),n.addEventListener(\"abort\",function(){t(new Error(r.src+\" has aborted.\"))}),i.appendChild(n)}),s[o]=e),e}n.clearCache=function(){s={}},t.exports=n},{\"./lib/promise\":1}],3:[function(e,t,r){t.exports=e(\"./dist/load-script\")},{\"./dist/load-script\":2}],4:[function(e,t,r){\"use strict\";var n=e(\"./is-ie11\");t.exports=function(e){return-1!==(e=e||window.navigator.userAgent).indexOf(\"MSIE\")||n(e)}},{\"./is-ie11\":5}],5:[function(e,t,r){\"use strict\";t.exports=function(e){return-1!==(e=e||window.navigator.userAgent).indexOf(\"Trident/7\")}},{}],6:[function(e,t,r){\"use strict\";t.exports=function(e){return-1!==(e=e||window.navigator.userAgent).indexOf(\"MSIE 9\")}},{}],7:[function(e,t,r){t.exports=e(\"./dist/is-ie\")},{\"./dist/is-ie\":4}],8:[function(e,t,r){t.exports=e(\"./dist/is-ie9\")},{\"./dist/is-ie9\":6}],9:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Promise?Promise:null,n=(i.defaultOnResolve=function(e){return i.Promise.resolve(e)},i.defaultOnReject=function(e){return i.Promise.reject(e)},i.setPromise=function(e){i.Promise=e},i.shouldCatchExceptions=function(e){return e.hasOwnProperty(\"suppressUnhandledPromiseMessage\")?Boolean(e.suppressUnhandledPromiseMessage):Boolean(i.suppressUnhandledPromiseMessage)},i.all=function(e){return i.Promise.all(e)},i.allSettled=function(e){return i.Promise.allSettled(e)},i.race=function(e){return i.Promise.race(e)},i.reject=function(e){return i.Promise.reject(e)},i.resolve=function(e){return i.Promise.resolve(e)},i.prototype.then=function(){for(var e,t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return(e=this._promise).then.apply(e,t)},i.prototype.catch=function(){for(var e,t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return(e=this._promise).catch.apply(e,t)},i.prototype.resolve=function(e){var t=this;return this.isFulfilled||(this._setResolved(),i.Promise.resolve().then(function(){return t._onResolve(e)}).then(function(e){t._resolveFunction(e)}).catch(function(e){t._resetState(),t.reject(e)})),this},i.prototype.reject=function(e){var t=this;return this.isFulfilled||(this._setRejected(),i.Promise.resolve().then(function(){return t._onReject(e)}).then(function(e){t._setResolved(),t._resolveFunction(e)}).catch(function(e){return t._rejectFunction(e)})),this},i.prototype._resetState=function(){this.isFulfilled=!1,this.isResolved=!1,this.isRejected=!1},i.prototype._setResolved=function(){this.isFulfilled=!0,this.isResolved=!0,this.isRejected=!1},i.prototype._setRejected=function(){this.isFulfilled=!0,this.isResolved=!1,this.isRejected=!0},i.Promise=n,i);function i(e){var r=this;\"function\"==typeof e?this._promise=new i.Promise(e):(this._promise=new i.Promise(function(e,t){r._resolveFunction=e,r._rejectFunction=t}),this._onResolve=(e=e||{}).onResolve||i.defaultOnResolve,this._onReject=e.onReject||i.defaultOnReject,i.shouldCatchExceptions(e)&&this._promise.catch(function(){}),this._resetState())}t.exports=n},{}],10:[function(e,t,r){\"use strict\";t.exports=function(){return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return(\"x\"===e?t:3&t|8).toString(16)})}},{}],11:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.deferred=function(r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];setTimeout(function(){try{r.apply(void 0,e)}catch(e){console.log(\"Error in callback function\"),console.log(e)}},1)}}},{}],12:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.once=function(r){var n=!1;return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];n||(n=!0,r.apply(void 0,e))}}},{}],13:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.promiseOrCallback=function(e,t){if(!t)return e;e.then(function(e){return t(null,e)}).catch(function(e){return t(e)})}},{}],14:[function(e,t,r){\"use strict\";var i=e(\"./lib/deferred\"),o=e(\"./lib/once\"),a=e(\"./lib/promise-or-callback\");function s(n){return function(){for(var e,t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return\"function\"==typeof t[t.length-1]&&(e=t.pop(),e=o.once(i.deferred(e))),a.promiseOrCallback(n.apply(this,t),e)}}s.wrapPrototype=function(n,e){var i=(e=void 0===e?{}:e).ignoreMethods||[],o=!0===e.transformPrivateMethods;return Object.getOwnPropertyNames(n.prototype).filter(function(e){var t=\"constructor\"!==e&&\"function\"==typeof n.prototype[e],r=-1===i.indexOf(e),e=o||\"_\"!==e.charAt(0);return t&&e&&r}).forEach(function(e){var t=n.prototype[e];n.prototype[e]=s(t)}),n},t.exports=s},{\"./lib/deferred\":11,\"./lib/once\":12,\"./lib/promise-or-callback\":13}],15:[function(e,t,r){\"use strict\";var n=setTimeout;function c(e){return Boolean(e&&void 0!==e.length)}function i(){}function o(e){if(!(this instanceof o))throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof e)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],l(e,this)}function a(r,n){for(;3===r._state;)r=r._value;0===r._state?r._deferreds.push(n):(r._handled=!0,o._immediateFn(function(){var e,t=1===r._state?n.onFulfilled:n.onRejected;if(null===t)(1===r._state?s:u)(n.promise,r._value);else{try{e=t(r._value)}catch(e){return void u(n.promise,e)}s(n.promise,e)}}))}function s(t,e){try{if(e===t)throw new TypeError(\"A promise cannot be resolved with itself.\");if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var r=e.then;if(e instanceof o)return t._state=3,t._value=e,void d(t);if(\"function\"==typeof r)return void l((n=r,i=e,function(){n.apply(i,arguments)}),t)}t._state=1,t._value=e,d(t)}catch(e){u(t,e)}var n,i}function u(e,t){e._state=2,e._value=t,d(e)}function d(e){2===e._state&&0===e._deferreds.length&&o._immediateFn(function(){e._handled||o._unhandledRejectionFn(e._value)});for(var t=0,r=e._deferreds.length;t<r;t++)a(e,e._deferreds[t]);e._deferreds=null}function p(e,t,r){this.onFulfilled=\"function\"==typeof e?e:null,this.onRejected=\"function\"==typeof t?t:null,this.promise=r}function l(e,t){var r=!1;try{e(function(e){r||(r=!0,s(t,e))},function(e){r||(r=!0,u(t,e))})}catch(e){r||(r=!0,u(t,e))}}o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){var r=new this.constructor(i);return a(this,new p(e,t,r)),r},o.prototype.finally=function(t){var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){return r.reject(e)})})},o.all=function(t){return new o(function(i,o){if(!c(t))return o(new TypeError(\"Promise.all accepts an array\"));var a=Array.prototype.slice.call(t);if(0===a.length)return i([]);var s=a.length;for(var e=0;e<a.length;e++)!function t(r,e){try{if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var n=e.then;if(\"function\"==typeof n)return void n.call(e,function(e){t(r,e)},o)}a[r]=e,0==--s&&i(a)}catch(e){o(e)}}(e,a[e])})},o.allSettled=function(r){return new this(function(i,e){if(!r||void 0===r.length)return e(new TypeError(typeof r+\" \"+r+\" is not iterable(cannot read property Symbol(Symbol.iterator))\"));var o=Array.prototype.slice.call(r);if(0===o.length)return i([]);var a=o.length;for(var t=0;t<o.length;t++)!function t(r,e){if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var n=e.then;if(\"function\"==typeof n)return void n.call(e,function(e){t(r,e)},function(e){o[r]={status:\"rejected\",reason:e},0==--a&&i(o)})}o[r]={status:\"fulfilled\",value:e},0==--a&&i(o)}(t,o[t])})},o.resolve=function(t){return t&&\"object\"==typeof t&&t.constructor===o?t:new o(function(e){e(t)})},o.reject=function(r){return new o(function(e,t){t(r)})},o.race=function(i){return new o(function(e,t){if(!c(i))return t(new TypeError(\"Promise.race accepts an array\"));for(var r=0,n=i.length;r<n;r++)o.resolve(i[r]).then(e,t)})},o._immediateFn=\"function\"==typeof setImmediate?function(e){setImmediate(e)}:function(e){n(e,0)},o._unhandledRejectionFn=function(e){\"undefined\"!=typeof console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",e)},t.exports=o},{}],16:[function(e,t,r){\"use strict\";var n=e(\"@braintree/browser-detection/is-ie\"),e=e(\"@braintree/browser-detection/is-ie9\");t.exports={isIe:n,isIe9:e}},{\"@braintree/browser-detection/is-ie\":7,\"@braintree/browser-detection/is-ie9\":8}],17:[function(e,t,r){\"use strict\";var u=e(\"./constants\").BRAINTREE_VERSION,n=e(\"./request/graphql\"),i=e(\"./request\"),o=e(\"../lib/is-verified-domain\"),d=e(\"../lib/braintree-error\"),p=e(\"../lib/convert-to-braintree-error\"),a=e(\"./get-configuration\").getConfiguration,s=e(\"../lib/create-authorization-data\"),l=e(\"../lib/add-metadata\"),f=e(\"../lib/promise\"),c=e(\"@braintree/wrap-promise\"),h=e(\"../lib/once\"),y=e(\"../lib/deferred\"),E=e(\"../lib/assign\").assign,I=e(\"../lib/analytics\"),g=e(\"./errors\"),m=e(\"../lib/constants\").VERSION,_=e(\"../lib/constants\").GRAPHQL_URLS,A=e(\"../lib/methods\"),N=e(\"../lib/convert-methods-to-error\"),T=e(\"../lib/assets\"),R=e(\"../lib/constants\").FRAUDNET_FNCLS,C=e(\"../lib/constants\").FRAUDNET_SOURCE,b=e(\"../lib/constants\").FRAUDNET_URL,v={};function O(e){var t,r;if(e=e||{},t=JSON.stringify(e),!(r=e.gatewayConfiguration))throw new d(g.CLIENT_MISSING_GATEWAY_CONFIGURATION);if([\"assetsUrl\",\"clientApiUrl\",\"configUrl\"].forEach(function(e){if(e in r&&!o(r[e]))throw new d({type:g.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.type,code:g.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.code,message:e+\" property is on an invalid domain.\"})}),this.getConfiguration=function(){return JSON.parse(t)},this._request=i,this._configuration=this.getConfiguration(),this._clientApiBaseUrl=r.clientApiUrl+\"/v1/\",r.graphQL){if(!o(r.graphQL.url))throw new d({type:g.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.type,code:g.CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN.code,message:\"graphQL.url property is on an invalid domain.\"});this._graphQL=new n({graphQL:r.graphQL})}}O.initialize=function(t){var r,e,n=v[t.authorization];if(n)return I.sendEvent(n,\"custom.client.load.cached\"),n;try{e=s(t.authorization)}catch(e){return f.reject(new d(g.CLIENT_INVALID_AUTHORIZATION))}return n=a(e).then(function(e){return t.debug&&(e.isDebug=!0),e.authorization=t.authorization,r=new O(e)}),v[t.authorization]=n,I.sendEvent(n,\"custom.client.load.initialized\"),n.then(function(e){return I.sendEvent(r,\"custom.client.load.succeeded\"),e}).catch(function(e){return delete v[t.authorization],f.reject(e)})},O.clearCache=function(){v={}},O.prototype._findOrCreateFraudnetJSON=function(e){var t,r,n=document.querySelector('script[fncls=\"'+R+'\"]');n||((n=document.body.appendChild(document.createElement(\"script\"))).type=\"application/json\",n.setAttribute(\"fncls\",R)),r=this.getConfiguration(),t={rda_tenant:\"bt_card\",mid:r.gatewayConfiguration.merchantId},(r=r.authorizationFingerprint)&&r.split(\"&\").forEach(function(e){e=e.split(\"=\");\"customer_id\"===e[0]&&1<e.length&&(t.cid=e[1])}),r={f:e.substr(0,32),fp:t,bu:!1,s:C},n.text=JSON.stringify(r)},O.prototype.request=function(s,r){var c=this,e=new f(function(n,i){var o,e,t,r,a=Boolean(\"payment_methods/credit_cards\"===s.endpoint&&c.getConfiguration().gatewayConfiguration.creditCards.collectDeviceData);if(\"graphQLApi\"!==s.api&&(s.method?s.endpoint||(t=\"options.endpoint\"):t=\"options.method\"),t)throw new d({type:g.CLIENT_OPTION_REQUIRED.type,code:g.CLIENT_OPTION_REQUIRED.code,message:t+\" is required when making a request.\"});if(o=\"api\"in s?s.api:\"clientApi\",t={method:s.method,graphQL:c._graphQL,timeout:s.timeout,metadata:c._configuration.analyticsMetadata},\"clientApi\"===o)e=c._clientApiBaseUrl,t.data=l(c._configuration,s.data);else{if(\"graphQLApi\"!==o)throw new d({type:g.CLIENT_OPTION_INVALID.type,code:g.CLIENT_OPTION_INVALID.code,message:\"options.api is invalid.\"});e=_[c._configuration.gatewayConfiguration.environment],s.endpoint=\"\",t.method=\"post\",t.data=E({clientSdkMetadata:{platform:c._configuration.analyticsMetadata.platform,source:c._configuration.analyticsMetadata.source,integration:c._configuration.analyticsMetadata.integration,sessionId:c._configuration.analyticsMetadata.sessionId,version:m}},s.data),t.headers={Authorization:\"Bearer \"+((r=c._configuration).authorizationFingerprint||r.authorization),\"Braintree-Version\":u}}t.url=e+s.endpoint,t.sendAnalyticsEvent=function(e){I.sendEvent(c,e)},c._request(t,function(e,t,r){var e=function(e,t){var r;-1===e?r=new d(g.CLIENT_REQUEST_TIMEOUT):401===e?r=new d(g.CLIENT_AUTHORIZATION_INVALID):403===e?r=new d(g.CLIENT_AUTHORIZATION_INSUFFICIENT):429===e?r=new d(g.CLIENT_RATE_LIMITED):500<=e?r=new d(g.CLIENT_GATEWAY_NETWORK):(e<200||400<=e)&&(r=p(t,{type:g.CLIENT_REQUEST_ERROR.type,code:g.CLIENT_REQUEST_ERROR.code,message:g.CLIENT_REQUEST_ERROR.message}));if(r)return r.details=r.details||{},r.details.httpStatus=e,r}(r,e);e?i(e):\"graphQLApi\"===o&&t.errors?i(p(t.errors,{type:g.CLIENT_GRAPHQL_REQUEST_ERROR.type,code:g.CLIENT_GRAPHQL_REQUEST_ERROR.code,message:g.CLIENT_GRAPHQL_REQUEST_ERROR.message})):(e=E({_httpStatus:r},t),a&&e.creditCards&&0<e.creditCards.length&&(c._findOrCreateFraudnetJSON(e.creditCards[0].nonce),T.loadScript({src:b,forceScriptReload:!0})),n(e))})});if(\"function\"!=typeof r)return e;r=h(y(r)),e.then(function(e){r(null,e,e._httpStatus)}).catch(function(e){var t=e&&e.details&&e.details.httpStatus;r(e,null,t)})},O.prototype.toJSON=function(){return this.getConfiguration()},O.prototype.getVersion=function(){return m},O.prototype.teardown=c(function(){return delete v[this.getConfiguration().authorization],N(this,A(O.prototype)),f.resolve()}),t.exports=O},{\"../lib/add-metadata\":38,\"../lib/analytics\":39,\"../lib/assets\":40,\"../lib/assign\":41,\"../lib/braintree-error\":42,\"../lib/constants\":43,\"../lib/convert-methods-to-error\":44,\"../lib/convert-to-braintree-error\":45,\"../lib/create-authorization-data\":46,\"../lib/deferred\":47,\"../lib/is-verified-domain\":51,\"../lib/methods\":53,\"../lib/once\":54,\"../lib/promise\":55,\"./constants\":18,\"./errors\":19,\"./get-configuration\":20,\"./request\":32,\"./request/graphql\":30,\"@braintree/wrap-promise\":14}],18:[function(e,t,r){\"use strict\";t.exports={BRAINTREE_VERSION:\"2018-05-10\"}},{}],19:[function(e,t,r){\"use strict\";e=e(\"../lib/braintree-error\");t.exports={CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN:{type:e.types.MERCHANT,code:\"CLIENT_GATEWAY_CONFIGURATION_INVALID_DOMAIN\"},CLIENT_OPTION_REQUIRED:{type:e.types.MERCHANT,code:\"CLIENT_OPTION_REQUIRED\"},CLIENT_OPTION_INVALID:{type:e.types.MERCHANT,code:\"CLIENT_OPTION_INVALID\"},CLIENT_MISSING_GATEWAY_CONFIGURATION:{type:e.types.INTERNAL,code:\"CLIENT_MISSING_GATEWAY_CONFIGURATION\",message:\"Missing gatewayConfiguration.\"},CLIENT_INVALID_AUTHORIZATION:{type:e.types.MERCHANT,code:\"CLIENT_INVALID_AUTHORIZATION\",message:\"Authorization is invalid. Make sure your client token or tokenization key is valid.\"},CLIENT_GATEWAY_NETWORK:{type:e.types.NETWORK,code:\"CLIENT_GATEWAY_NETWORK\",message:\"Cannot contact the gateway at this time.\"},CLIENT_REQUEST_TIMEOUT:{type:e.types.NETWORK,code:\"CLIENT_REQUEST_TIMEOUT\",message:\"Request timed out waiting for a reply.\"},CLIENT_REQUEST_ERROR:{type:e.types.NETWORK,code:\"CLIENT_REQUEST_ERROR\",message:\"There was a problem with your request.\"},CLIENT_GRAPHQL_REQUEST_ERROR:{type:e.types.NETWORK,code:\"CLIENT_GRAPHQL_REQUEST_ERROR\",message:\"There was a problem with your request.\"},CLIENT_RATE_LIMITED:{type:e.types.MERCHANT,code:\"CLIENT_RATE_LIMITED\",message:\"You are being rate-limited; please try again in a few minutes.\"},CLIENT_AUTHORIZATION_INSUFFICIENT:{type:e.types.MERCHANT,code:\"CLIENT_AUTHORIZATION_INSUFFICIENT\",message:\"The authorization used has insufficient privileges.\"},CLIENT_AUTHORIZATION_INVALID:{type:e.types.MERCHANT,code:\"CLIENT_AUTHORIZATION_INVALID\",message:\"Either the client token has expired and a new one should be generated or the tokenization key has been deactivated or deleted.\"}}},{\"../lib/braintree-error\":42}],20:[function(e,t,r){\"use strict\";var c=e(\"../lib/braintree-error\"),n=e(\"../lib/promise\"),i=e(\"@braintree/wrap-promise\"),u=e(\"./request\"),d=e(\"@braintree/uuid\"),p=e(\"../lib/constants\"),l=e(\"./errors\"),f=e(\"./request/graphql\"),h=e(\"../lib/constants\").GRAPHQL_URLS,y=e(\"../lib/is-date-string-before-or-on\"),E=e(\"./constants\").BRAINTREE_VERSION;t.exports={getConfiguration:i(function(t){return new n(function(n,i){var o,e=d(),a={merchantAppId:window.location.host,platform:p.PLATFORM,sdkVersion:p.VERSION,source:p.SOURCE,integration:p.INTEGRATION,integrationType:p.INTEGRATION,sessionId:e},s=t.attrs,e=t.configUrl;s._meta=a,s.braintreeLibraryVersion=p.BRAINTREE_LIBRARY_VERSION,s.configVersion=\"3\",e={url:e,method:\"GET\",data:s},s.authorizationFingerprint&&t.graphQL?(y(t.graphQL.date,E)&&(e.graphQL=new f({graphQL:{url:t.graphQL.url,features:[\"configuration\"]}})),e.metadata=a):s.tokenizationKey&&(e.graphQL=new f({graphQL:{url:h[t.environment],features:[\"configuration\"]}}),e.metadata=a),u(e,function(e,t,r){e?(r=403===r?l.CLIENT_AUTHORIZATION_INSUFFICIENT:401===r?l.CLIENT_AUTHORIZATION_INVALID:l.CLIENT_GATEWAY_NETWORK,i(new c({type:r.type,code:r.code,message:r.message,details:{originalError:e}}))):(o={authorizationType:s.tokenizationKey?\"TOKENIZATION_KEY\":\"CLIENT_TOKEN\",authorizationFingerprint:s.authorizationFingerprint,analyticsMetadata:a,gatewayConfiguration:t},n(o))})})})}},{\"../lib/braintree-error\":42,\"../lib/constants\":43,\"../lib/is-date-string-before-or-on\":50,\"../lib/promise\":55,\"./constants\":18,\"./errors\":19,\"./request\":32,\"./request/graphql\":30,\"@braintree/uuid\":10,\"@braintree/wrap-promise\":14}],21:[function(e,t,r){\"use strict\";var n=e(\"../lib/braintree-error\"),i=e(\"./client\"),o=e(\"../lib/promise\"),a=e(\"@braintree/wrap-promise\"),s=e(\"../lib/errors\");t.exports={create:a(function(e){return e.authorization?i.initialize(e):o.reject(new n({type:s.INSTANTIATION_OPTION_REQUIRED.type,code:s.INSTANTIATION_OPTION_REQUIRED.code,message:\"options.authorization is required when instantiating a client.\"}))}),VERSION:\"3.91.0\"}},{\"../lib/braintree-error\":42,\"../lib/errors\":49,\"../lib/promise\":55,\"./client\":17,\"@braintree/wrap-promise\":14}],22:[function(e,t,r){\"use strict\";var y=e(\"../../lib/querystring\"),E=e(\"../../lib/assign\").assign,I=e(\"./prep-body\"),g=e(\"./parse-body\"),m=e(\"./xhr\"),_=m.isAvailable,A=e(\"./graphql/request\"),N=e(\"./default-request\"),T=1,R=408;function C(t,r,n){var i,o,a,e,s,c,u=t.url,d=t.graphQL,p=t.timeout,l=m.getRequestObject(),f=n,h=Boolean(d&&d.isGraphQLRequest(u,t.data));t.headers=E({\"Content-Type\":\"application/json\"},t.headers),u=(a=new(h?A:N)(t)).getUrl(),d=a.getBody(),e=a.getMethod(),s=a.getHeaders(),\"GET\"===e&&(u=y.queryify(u,d),d=null),_?l.onreadystatechange=function(){var e;4===l.readyState&&(0===l.status&&h?(delete t.graphQL,C(t,r,n)):(c=g(l.responseText),o=a.adaptResponseBody(c),400<=(i=a.determineStatus(l.status,c))||i<200?!h||\"UNKNOWN\"!==(e=!(e=c).data&&e.errors&&e.errors[0]&&e.errors[0].extensions&&e.errors[0].extensions.errorClass)&&\"INTERNAL\"!==e?r<T&&(!(e=i)||e===R)?C(t,++r,n):f(o||\"error\",null,i||500):(delete t.graphQL,C(t,r,n)):f(null,o,i)))}:(t.headers&&(u=y.queryify(u,s)),l.onload=function(){f(null,g(l.responseText),l.status)},l.onerror=function(){f(\"error\",null,500)},l.onprogress=function(){},l.ontimeout=function(){f(\"timeout\",null,-1)});try{l.open(e,u,!0)}catch(e){if(h)return delete t.graphQL,void C(t,r,n);throw e}l.timeout=p,_&&Object.keys(s).forEach(function(e){l.setRequestHeader(e,s[e])});try{l.send(I(e,d))}catch(e){}}t.exports={request:function(e,t){C(e,0,t)}}},{\"../../lib/assign\":41,\"../../lib/querystring\":56,\"./default-request\":23,\"./graphql/request\":31,\"./parse-body\":35,\"./prep-body\":36,\"./xhr\":37}],23:[function(e,t,r){\"use strict\";function n(e){this._url=e.url,this._data=e.data,this._method=e.method,this._headers=e.headers}n.prototype.getUrl=function(){return this._url},n.prototype.getBody=function(){return this._data},n.prototype.getMethod=function(){return this._method},n.prototype.getHeaders=function(){return this._headers},n.prototype.adaptResponseBody=function(e){return e},n.prototype.determineStatus=function(e){return e},t.exports=n},{}],24:[function(e,t,r){\"use strict\";t.exports=function(){return window.navigator.userAgent}},{}],25:[function(e,t,r){\"use strict\";var n=e(\"./error\"),i=e(\"../../../../lib/assign\").assign,o={creditCard:{AMERICAN_EXPRESS:\"American Express\",DISCOVER:\"Discover\",INTERNATIONAL_MAESTRO:\"Maestro\",JCB:\"JCB\",MASTERCARD:\"MasterCard\",SOLO:\"Solo\",UK_MAESTRO:\"UK Maestro\",UNION_PAY:\"UnionPay\",VISA:\"Visa\",ELO:\"Elo\",HIPER:\"Hiper\",HIPERCARD:\"Hipercard\"},applePayWeb:{VISA:\"visa\",MASTERCARD:\"mastercard\",DISCOVER:\"discover\",AMERICAN_EXPRESS:\"amex\",INTERNATIONAL_MAESTRO:\"maestro\",ELO:\"elo\"},visaCheckout:{VISA:\"Visa\",MASTERCARD:\"MasterCard\",DISCOVER:\"Discover\",AMERICAN_EXPRESS:\"American Express\"},googlePay:{VISA:\"visa\",MASTERCARD:\"mastercard\",DISCOVER:\"discover\",AMERICAN_EXPRESS:\"amex\",INTERNATIONAL_MAESTRO:\"maestro\",ELO:\"elo\"},masterpass:{VISA:\"visa\",MASTERCARD:\"master\",DISCOVER:\"discover\",AMERICAN_EXPRESS:\"amex\",DINERS:\"diners\",INTERNATIONAL_MAESTRO:\"maestro\",JCB:\"jcb\"}};function a(e,r){return e.reduce(function(e,t){return r.hasOwnProperty(t)?e.concat(r[t]):e},[])}t.exports=function(e,t){return t=e.data&&!e.errors?function(e,t){var r,e=e.data.clientConfiguration;r={environment:e.environment.toLowerCase(),clientApiUrl:e.clientApiUrl,assetsUrl:e.assetsUrl,analytics:{url:e.analyticsUrl},merchantId:e.merchantId,venmo:\"off\"},e.supportedFeatures&&(r.graphQL={url:t._graphQL._config.url,features:e.supportedFeatures.map(function(e){return e.toLowerCase()})});e.braintreeApi&&(r.braintreeApi=e.braintreeApi);e.applePayWeb&&(r.applePayWeb=e.applePayWeb,r.applePayWeb.supportedNetworks=a(e.applePayWeb.supportedCardBrands,o.applePayWeb),delete r.applePayWeb.supportedCardBrands);e.ideal&&(r.ideal=e.ideal);e.kount&&(r.kount={kountMerchantId:e.kount.merchantId});e.creditCard?(r.challenges=e.creditCard.challenges.map(function(e){return e.toLowerCase()}),r.creditCards={supportedCardTypes:a(e.creditCard.supportedCardBrands,o.creditCard)},r.threeDSecureEnabled=e.creditCard.threeDSecureEnabled,r.threeDSecure=e.creditCard.threeDSecure):(r.challenges=[],r.creditCards={supportedCardTypes:[]},r.threeDSecureEnabled=!1);e.googlePay&&(r.androidPay={displayName:e.googlePay.displayName,enabled:!0,environment:e.googlePay.environment.toLowerCase(),googleAuthorizationFingerprint:e.googlePay.googleAuthorization,paypalClientId:e.googlePay.paypalClientId,supportedNetworks:a(e.googlePay.supportedCardBrands,o.googlePay)});e.venmo&&(r.payWithVenmo={merchantId:e.venmo.merchantId,accessToken:e.venmo.accessToken,environment:e.venmo.environment.toLowerCase()});e.paypal?(r.paypalEnabled=!0,r.paypal=i({},e.paypal),r.paypal.currencyIsoCode=r.paypal.currencyCode,r.paypal.environment=r.paypal.environment.toLowerCase(),delete r.paypal.currencyCode):r.paypalEnabled=!1;e.unionPay&&(r.unionPay={enabled:!0,merchantAccountId:e.unionPay.merchantAccountId});e.visaCheckout&&(r.visaCheckout={apikey:e.visaCheckout.apiKey,encryptionKey:e.visaCheckout.encryptionKey,externalClientId:e.visaCheckout.externalClientId,supportedCardTypes:a(e.visaCheckout.supportedCardBrands,o.visaCheckout)});e.masterpass&&(r.masterpass={merchantCheckoutId:e.masterpass.merchantCheckoutId,supportedNetworks:a(e.masterpass.supportedCardBrands,o.masterpass)});e.usBankAccount&&(r.usBankAccount={routeId:e.usBankAccount.routeId,plaid:{publicKey:e.usBankAccount.plaidPublicKey}});return r}(e,t):n(e)}},{\"../../../../lib/assign\":41,\"./error\":27}],26:[function(e,t,r){\"use strict\";var n=e(\"./error\"),i={AMERICAN_EXPRESS:\"American Express\",DINERS:\"Discover\",DISCOVER:\"Discover\",ELO:\"Elo\",HIPER:\"Hiper\",HIPERCARD:\"Hipercard\",INTERNATIONAL_MAESTRO:\"Maestro\",JCB:\"JCB\",MASTERCARD:\"MasterCard\",UK_MAESTRO:\"Maestro\",UNION_PAY:\"UnionPay\",VISA:\"Visa\"},o={YES:\"Yes\",NO:\"No\",UNKNOWN:\"Unknown\"},a={PSDTWO:\"psd2\"};t.exports=function(e){return e=(e.data&&!e.errors?function(e){var e=e.data.tokenizeCreditCard,t=e.creditCard,r=t.last4?t.last4.substr(2,4):\"\",n=t.binData;n&&([\"commercial\",\"debit\",\"durbinRegulated\",\"healthcare\",\"payroll\",\"prepaid\"].forEach(function(e){n[e]?n[e]=o[n[e]]:n[e]=\"Unknown\"}),[\"issuingBank\",\"countryOfIssuance\",\"productId\"].forEach(function(e){n[e]||(n[e]=\"Unknown\")}));t={creditCards:[{binData:n,consumed:!1,description:r?\"ending in \"+r:\"\",nonce:e.token,details:{cardholderName:t.cardholderName,expirationMonth:t.expirationMonth,expirationYear:t.expirationYear,bin:t.bin||\"\",cardType:i[t.brandCode]||\"Unknown\",lastFour:t.last4||\"\",lastTwo:r},type:\"CreditCard\",threeDSecureInfo:null}]},e.authenticationInsight&&(r=e.authenticationInsight.customerAuthenticationRegulationEnvironment,t.creditCards[0].authenticationInsight={regulationEnvironment:a[r]||r.toLowerCase()});return t}:n)(e)}},{\"./error\":27}],27:[function(e,t,r){\"use strict\";t.exports=function(e){var t,r=e.errors&&e.errors[0]&&e.errors[0].extensions&&e.errors[0].extensions.errorClass,n=\"VALIDATION\"===r?0!==(n=function(e){var t=[];return e.forEach(function(e){e.extensions&&e.extensions.inputPath&&!function e(t,r,n){var i;var o=r.extensions.legacyCode;var a=t[0];if(1===t.length)return void n.push({code:o,field:a,message:r.message});n.forEach(function(e){e.field===a&&(i=e)});i||(i={field:a,fieldErrors:[]},n.push(i));e(t.slice(1),r,i.fieldErrors)}(e.extensions.inputPath.slice(1),e,t)}),t}((t=e).errors)).length?{error:{message:function(e){e=e[0].field;return{creditCard:\"Credit card is invalid\"}[e]}(n)},fieldErrors:n}:{error:{message:t.errors[0].message}}:r?{error:{message:e.errors[0].message},fieldErrors:[]}:{error:{message:\"There was a problem serving your request\"},fieldErrors:[]};return n}},{}],28:[function(e,t,r){\"use strict\";t.exports=function(){return{query:\"query ClientConfiguration { clientConfiguration { analyticsUrl environment merchantId assetsUrl clientApiUrl creditCard { supportedCardBrands challenges threeDSecureEnabled threeDSecure { cardinalAuthenticationJWT } } applePayWeb { countryCode currencyCode merchantIdentifier supportedCardBrands } googlePay { displayName supportedCardBrands environment googleAuthorization paypalClientId } ideal { routeId assetsUrl } kount { merchantId } masterpass { merchantCheckoutId supportedCardBrands } paypal { displayName clientId privacyUrl userAgreementUrl assetsUrl environment environmentNoNetwork unvettedMerchant braintreeClientId billingAgreementsEnabled merchantAccountId currencyCode payeeEmail } unionPay { merchantAccountId } usBankAccount { routeId plaidPublicKey } venmo { merchantId accessToken environment } visaCheckout { apiKey externalClientId supportedCardBrands } braintreeApi { accessToken url } supportedFeatures } }\",operationName:\"ClientConfiguration\"}}},{}],29:[function(e,t,r){\"use strict\";var a=e(\"../../../../lib/assign\").assign;function i(e,t){var r=e.creditCard,n=r&&r.billingAddress,i=r&&r.expirationDate,o=r&&(r.expirationMonth||i&&i.split(\"/\")[0].trim()),i=r&&(r.expirationYear||i&&i.split(\"/\")[1].trim()),o={input:{creditCard:{number:r&&r.number,expirationMonth:o,expirationYear:i,cvv:r&&r.cvv,cardholderName:r&&r.cardholderName},options:{}}};return t.hasAuthenticationInsight&&(o.authenticationInsightInput={merchantAccountId:e.merchantAccountId}),n&&(o.input.creditCard.billingAddress=n),o.input=function(e,t){var r;e.creditCard&&e.creditCard.options&&\"boolean\"==typeof e.creditCard.options.validate?r=e.creditCard.options.validate:e.authorizationFingerprint&&e.tokenizationKey||e.authorizationFingerprint?r=!0:e.tokenizationKey&&(r=!1);\"boolean\"==typeof r&&(t.options=a({validate:r},t.options));return t}(e,o.input),o}t.exports=function(e){var t,r,n={hasAuthenticationInsight:Boolean(e.authenticationInsight&&e.merchantAccountId)};return{query:(t=(t=n).hasAuthenticationInsight,r=\"mutation TokenizeCreditCard($input: TokenizeCreditCardInput!\",t&&(r+=\", $authenticationInsightInput: AuthenticationInsightInput!\"),r+=\") { tokenizeCreditCard(input: $input) { token creditCard { bin brandCode last4 cardholderName expirationMonth expirationYear binData { prepaid healthcare debit durbinRegulated commercial payroll issuingBank countryOfIssuance productId } } \",t&&(r+=\" authenticationInsight(input: $authenticationInsightInput) { customerAuthenticationRegulationEnvironment }\"),r+=\" } }\"),variables:i(e,n),operationName:\"TokenizeCreditCard\"}}},{\"../../../../lib/assign\":41}],30:[function(e,t,r){\"use strict\";var i=e(\"../../browser-detection\"),o={tokenize_credit_cards:\"payment_methods/credit_cards\",configuration:\"configuration\"},a=[\"creditCard.options.unionPayEnrollment\"];function n(e){this._config=e.graphQL}n.prototype.getGraphQLEndpoint=function(){return this._config.url},n.prototype.isGraphQLRequest=function(e,t){var r,n=this.getClientApiPath(e);return!(!this._isGraphQLEnabled()||!n||i.isIe9())&&(e=this._config.features.some(function(e){return o[e]===n}),r=t,!a.some(function(e){return void 0!==e.split(\".\").reduce(function(e,t){return e&&e[t]},r)})&&e)},n.prototype.getClientApiPath=function(e){var t,e=e.split(\"/client_api/v1/\");return t=1<e.length?e[1].split(\"?\")[0]:t},n.prototype._isGraphQLEnabled=function(){return Boolean(this._config)},t.exports=n},{\"../../browser-detection\":16}],31:[function(e,t,r){\"use strict\";var n=e(\"../../constants\").BRAINTREE_VERSION,i=e(\"../../../lib/assign\").assign,o=e(\"../../../lib/snake-case-to-camel-case\"),a=e(\"./generators/credit-card-tokenization\"),s=e(\"./adapters/credit-card-tokenization\"),c=e(\"./generators/configuration\"),e=e(\"./adapters/configuration\"),u={\"payment_methods/credit_cards\":a,configuration:c},d={\"payment_methods/credit_cards\":s,configuration:e};function p(e){var t=e.graphQL.getClientApiPath(e.url);this._graphQL=e.graphQL,this._data=e.data,this._method=e.method,this._headers=e.headers,this._clientSdkMetadata={source:e.metadata.source,integration:e.metadata.integration,sessionId:e.metadata.sessionId},this._sendAnalyticsEvent=e.sendAnalyticsEvent||Function.prototype,this._generator=u[t],this._adapter=d[t],this._sendAnalyticsEvent(\"graphql.init\")}p.prototype.getUrl=function(){return this._graphQL.getGraphQLEndpoint()},p.prototype.getBody=function(){var e=function r(n){var i={};Object.keys(n).forEach(function(e){var t=o(e);\"object\"==typeof n[e]?i[t]=r(n[e]):\"number\"==typeof n[e]?i[t]=String(n[e]):i[t]=n[e]});return i}(this._data),e=this._generator(e),e=i({clientSdkMetadata:this._clientSdkMetadata},e);return JSON.stringify(e)},p.prototype.getMethod=function(){return\"POST\"},p.prototype.getHeaders=function(){var e=this._data.authorizationFingerprint?(this._sendAnalyticsEvent(\"graphql.authorization-fingerprint\"),this._data.authorizationFingerprint):(this._sendAnalyticsEvent(\"graphql.tokenization-key\"),this._data.tokenizationKey);return i({},this._headers,{Authorization:\"Bearer \"+e,\"Braintree-Version\":n})},p.prototype.adaptResponseBody=function(e){return this._adapter(e,this)},p.prototype.determineStatus=function(e,t){var r=200===e?(r=t.errors&&t.errors[0]&&t.errors[0].extensions&&t.errors[0].extensions.errorClass,t.data&&!t.errors?200:\"VALIDATION\"===r?422:\"AUTHORIZATION\"===r?403:\"AUTHENTICATION\"===r?401:(t=t,!r&&t.errors[0].message?403:500)):e||500;return this._sendAnalyticsEvent(\"graphql.status.\"+e),this._sendAnalyticsEvent(\"graphql.determinedStatus.\"+r),r},t.exports=p},{\"../../../lib/assign\":41,\"../../../lib/snake-case-to-camel-case\":57,\"../../constants\":18,\"./adapters/configuration\":25,\"./adapters/credit-card-tokenization\":26,\"./generators/configuration\":28,\"./generators/credit-card-tokenization\":29}],32:[function(e,t,r){\"use strict\";var n,i=e(\"../../lib/once\"),o=e(\"./jsonp-driver\"),a=e(\"./ajax-driver\"),s=e(\"./get-user-agent\"),c=e(\"./is-http\");t.exports=function(e,t){t=i(t||Function.prototype),e.method=(e.method||\"GET\").toUpperCase(),e.timeout=null==e.timeout?6e4:e.timeout,e.data=e.data||{},((n=null==n?!(c()&&/MSIE\\s(8|9)/.test(s())):n)?a:o).request(e,t)}},{\"../../lib/once\":54,\"./ajax-driver\":22,\"./get-user-agent\":24,\"./is-http\":33,\"./jsonp-driver\":34}],33:[function(e,t,r){\"use strict\";t.exports=function(){return\"http:\"===window.location.protocol}},{}],34:[function(e,t,r){\"use strict\";var f,h=e(\"@braintree/uuid\"),y=e(\"../../lib/querystring\"),E={};function I(t){try{delete window[t]}catch(e){window[t]=null}}t.exports={request:function(e,t){var r,n,i,o,a,s,c,u=\"callback_json_\"+h().replace(/-/g,\"\"),d=e.url,p=e.data,l=e.method,e=e.timeout,d=y.queryify(d,p);d=y.queryify(d,{_method:l,callback:u}),p=d,r=u,n=document.createElement(\"script\"),i=!1,n.src=p,n.async=!0,n.onerror=function(){window[r]({message:\"error\",status:500})},n.onload=n.onreadystatechange=function(){i||this.readyState&&\"loaded\"!==this.readyState&&\"complete\"!==this.readyState||(i=!0,n.onload=n.onreadystatechange=null)},o=l=n,a=t,s=u,window[s]=function(e){var t=e.status||500,r=null,n=null;delete e.status,400<=t||t<200?r=e:n=e,I(s),(e=o)&&e.parentNode&&e.parentNode.removeChild(e),clearTimeout(E[s]),a(r,n,t)},E[c=u]=setTimeout(function(){E[c]=null,window[c]({error:\"timeout\",status:-1}),window[c]=function(){I(c)}},e),(f=f||document.getElementsByTagName(\"head\")[0]).appendChild(l)}}},{\"../../lib/querystring\":56,\"@braintree/uuid\":10}],35:[function(e,t,r){\"use strict\";t.exports=function(e){try{e=JSON.parse(e)}catch(e){}return e}},{}],36:[function(e,t,r){\"use strict\";t.exports=function(e,t){if(\"string\"!=typeof e)throw new Error(\"Method must be a string\");return t=\"get\"!==e.toLowerCase()&&null!=t?\"string\"==typeof t?t:JSON.stringify(t):t}},{}],37:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof window&&window.XMLHttpRequest&&\"withCredentials\"in new window.XMLHttpRequest;t.exports={isAvailable:n,getRequestObject:function(){return new(n?window.XMLHttpRequest:window.XDomainRequest)}}},{}],38:[function(e,t,r){\"use strict\";var o=e(\"./create-authorization-data\"),a=e(\"./json-clone\"),s=e(\"./constants\");t.exports=function(e,t){var r,n=t?a(t):{},t=o(e.authorization).attrs,i=a(e.analyticsMetadata);for(r in n.braintreeLibraryVersion=s.BRAINTREE_LIBRARY_VERSION,n._meta)n._meta.hasOwnProperty(r)&&(i[r]=n._meta[r]);return n._meta=i,t.tokenizationKey?n.tokenizationKey=t.tokenizationKey:n.authorizationFingerprint=t.authorizationFingerprint,n}},{\"./constants\":43,\"./create-authorization-data\":46,\"./json-clone\":52}],39:[function(e,t,r){\"use strict\";var n=e(\"./promise\"),s=e(\"./constants\"),c=e(\"./add-metadata\");t.exports={sendEvent:function(e,i,o){var a=Date.now();return n.resolve(e).then(function(e){var t=Date.now(),r=e.getConfiguration(),e=e._request,n=r.gatewayConfiguration.analytics.url,t={analytics:[{kind:s.ANALYTICS_PREFIX+i,isAsync:Math.floor(t/1e3)!==Math.floor(a/1e3),timestamp:a}]};e({url:n,method:\"post\",data:c(r,t),timeout:s.ANALYTICS_REQUEST_TIMEOUT_MS},o)}).catch(function(e){o&&o(e)})}}},{\"./add-metadata\":38,\"./constants\":43,\"./promise\":55}],40:[function(e,t,r){\"use strict\";e=e(\"@braintree/asset-loader/load-script\");t.exports={loadScript:e}},{\"@braintree/asset-loader/load-script\":3}],41:[function(e,t,r){\"use strict\";var n=\"function\"==typeof Object.assign?Object.assign:i;function i(e){for(var t,r,n=1;n<arguments.length;n++)for(r in t=arguments[n])t.hasOwnProperty(r)&&(e[r]=t[r]);return e}t.exports={assign:n,_assign:i}},{}],42:[function(e,t,r){\"use strict\";e=e(\"./enumerate\");function n(e){if(!n.types.hasOwnProperty(e.type))throw new Error(e.type+\" is not a valid type.\");if(!e.code)throw new Error(\"Error code required.\");if(!e.message)throw new Error(\"Error message required.\");this.name=\"BraintreeError\",this.code=e.code,this.message=e.message,this.type=e.type,this.details=e.details}((n.prototype=Object.create(Error.prototype)).constructor=n).types=e([\"CUSTOMER\",\"MERCHANT\",\"NETWORK\",\"INTERNAL\",\"UNKNOWN\"]),n.findRootError=function(e){return e instanceof n&&e.details&&e.details.originalError?n.findRootError(e.details.originalError):e},t.exports=n},{\"./enumerate\":48}],43:[function(e,t,r){\"use strict\";t.exports={ANALYTICS_PREFIX:\"web.\",ANALYTICS_REQUEST_TIMEOUT_MS:2e3,ASSETS_URLS:{production:\"https://assets.braintreegateway.com\",sandbox:\"https://assets.braintreegateway.com\"},CLIENT_API_URLS:{production:\"https://api.braintreegateway.com:443\",sandbox:\"https://api.sandbox.braintreegateway.com:443\"},FRAUDNET_SOURCE:\"BRAINTREE_SIGNIN\",FRAUDNET_FNCLS:\"fnparams-dede7cc5-15fd-4c75-a9f4-36c430ee3a99\",FRAUDNET_URL:\"https://c.paypal.com/da/r/fb.js\",BUS_CONFIGURATION_REQUEST_EVENT:\"BUS_CONFIGURATION_REQUEST\",GRAPHQL_URLS:{production:\"https://payments.braintree-api.com/graphql\",sandbox:\"https://payments.sandbox.braintree-api.com/graphql\"},INTEGRATION_TIMEOUT_MS:6e4,VERSION:\"3.91.0\",INTEGRATION:\"custom\",SOURCE:\"client\",PLATFORM:\"web\",BRAINTREE_LIBRARY_VERSION:\"braintree/web/3.91.0\"}},{}],44:[function(e,t,r){\"use strict\";var n=e(\"./braintree-error\"),i=e(\"./errors\");t.exports=function(t,e){e.forEach(function(e){t[e]=function(){throw new n({type:i.METHOD_CALLED_AFTER_TEARDOWN.type,code:i.METHOD_CALLED_AFTER_TEARDOWN.code,message:e+\" cannot be called after teardown.\"})}})}},{\"./braintree-error\":42,\"./errors\":49}],45:[function(e,t,r){\"use strict\";var n=e(\"./braintree-error\");t.exports=function(e,t){return e instanceof n?e:new n({type:t.type,code:t.code,message:t.message,details:{originalError:e}})}},{\"./braintree-error\":42}],46:[function(e,t,r){\"use strict\";var i=e(\"../lib/vendor/polyfill\").atob,o=e(\"../lib/constants\").CLIENT_API_URLS;t.exports=function(e){var t,r,n={attrs:{},configUrl:\"\"};return/^[a-zA-Z0-9]+_[a-zA-Z0-9]+_[a-zA-Z0-9_]+$/.test(e)?(r=(t=(t=e).split(\"_\"))[0],t={merchantId:t.slice(2).join(\"_\"),environment:r},n.environment=t.environment,n.attrs.tokenizationKey=e,n.configUrl=o[t.environment]+\"/merchants/\"+t.merchantId+\"/client_api/v1/configuration\"):(r=JSON.parse(i(e)),n.environment=r.environment,n.attrs.authorizationFingerprint=r.authorizationFingerprint,n.configUrl=r.configUrl,n.graphQL=r.graphQL),n}},{\"../lib/constants\":43,\"../lib/vendor/polyfill\":58}],47:[function(e,t,r){\"use strict\";t.exports=function(t){return function(){var e=arguments;setTimeout(function(){t.apply(null,e)},1)}}},{}],48:[function(e,t,r){\"use strict\";t.exports=function(e,r){return r=null==r?\"\":r,e.reduce(function(e,t){return e[t]=r+t,e},{})}},{}],49:[function(e,t,r){\"use strict\";e=e(\"./braintree-error\");t.exports={INVALID_USE_OF_INTERNAL_FUNCTION:{type:e.types.INTERNAL,code:\"INVALID_USE_OF_INTERNAL_FUNCTION\"},INSTANTIATION_OPTION_REQUIRED:{type:e.types.MERCHANT,code:\"INSTANTIATION_OPTION_REQUIRED\"},INCOMPATIBLE_VERSIONS:{type:e.types.MERCHANT,code:\"INCOMPATIBLE_VERSIONS\"},CLIENT_SCRIPT_FAILED_TO_LOAD:{type:e.types.NETWORK,code:\"CLIENT_SCRIPT_FAILED_TO_LOAD\",message:\"Braintree client script could not be loaded.\"},METHOD_CALLED_AFTER_TEARDOWN:{type:e.types.MERCHANT,code:\"METHOD_CALLED_AFTER_TEARDOWN\"}}},{\"./braintree-error\":42}],50:[function(e,t,r){\"use strict\";function n(e){e=e.split(\"-\");return new Date(e[0],e[1],e[2])}t.exports=function(e,t){return n(e)<=n(t)}},{}],51:[function(e,t,r){\"use strict\";var n,i={\"paypal.com\":1,\"braintreepayments.com\":1,\"braintreegateway.com\":1,\"braintree-api.com\":1};t.exports=function(e){return e=e.toLowerCase(),!!/^https:/.test(e)&&((n=n||document.createElement(\"a\")).href=e,e=n.hostname.split(\".\").slice(-2).join(\".\"),i.hasOwnProperty(e))}},{}],52:[function(e,t,r){\"use strict\";t.exports=function(e){return JSON.parse(JSON.stringify(e))}},{}],53:[function(e,t,r){\"use strict\";t.exports=function(t){return Object.keys(t).filter(function(e){return\"function\"==typeof t[e]})}},{}],54:[function(e,t,r){\"use strict\";t.exports=function(e){var t=!1;return function(){t||(t=!0,e.apply(null,arguments))}}},{}],55:[function(e,t,r){\"use strict\";var n=e(\"promise-polyfill\"),e=e(\"@braintree/extended-promise\"),n=\"undefined\"!=typeof Promise?Promise:n;e.suppressUnhandledPromiseMessage=!0,e.setPromise(n),t.exports=n},{\"@braintree/extended-promise\":9,\"promise-polyfill\":15}],56:[function(e,t,r){\"use strict\";function n(e){return e=e||window.location.href,/\\?/.test(e)}function a(e,t){var r,n,i,o=[];for(n in e)e.hasOwnProperty(n)&&(r=e[n],i=t?(i=e)&&\"object\"==typeof i&&\"number\"==typeof i.length&&\"[object Array]\"===Object.prototype.toString.call(i)?t+\"[]\":t+\"[\"+n+\"]\":n,o.push(\"object\"==typeof r?a(r,i):encodeURIComponent(i)+\"=\"+encodeURIComponent(r)));return o.join(\"&\")}t.exports={parse:function(e){return n(e=e||window.location.href)?(e.split(\"?\")[1]||\"\").replace(/#.*$/,\"\").split(\"&\").reduce(function(e,t){var t=t.split(\"=\"),r=decodeURIComponent(t[0]),t=decodeURIComponent(t[1]);return e[r]=t,e},{}):{}},stringify:a,queryify:function(e,t){return e=e||\"\",e=null!=t&&\"object\"==typeof t&&function(e){for(var t in e)if(e.hasOwnProperty(t))return 1}(t)?(e=(e+=-1===e.indexOf(\"?\")?\"?\":\"\")+(-1!==e.indexOf(\"=\")?\"&\":\"\"))+a(t):e},hasQueryParams:n}},{}],57:[function(e,t,r){\"use strict\";t.exports=function(e){return-1===e.indexOf(\"_\")?e:e.toLowerCase().replace(/(\\_\\w)/g,function(e){return e[1].toUpperCase()})}},{}],58:[function(e,t,r){\"use strict\";var n=\"function\"==typeof atob?atob:i;function i(e){var t,r,n,i,o,a=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",s=\"\";if(!new RegExp(\"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})([=]{1,2})?$\").test(e))throw new Error(\"Non base64 encoded input passed to window.atob polyfill\");for(o=0;r=a.indexOf(e.charAt(o++)),t=(15&(n=a.indexOf(e.charAt(o++))))<<4|(i=a.indexOf(e.charAt(o++)))>>2&15,i=(3&i)<<6|63&a.indexOf(e.charAt(o++)),s+=String.fromCharCode((63&r)<<2|n>>4&3)+(t?String.fromCharCode(t):\"\")+(i?String.fromCharCode(i):\"\"),o<e.length;);return s}t.exports={atob:function(e){return n.call(window,e)},_atob:i}},{}]},{},[21])(21)});","!function(e){var t;\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):((t=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).braintree||(t.braintree={})).hostedFields=e()}(function(){return function r(i,o,s){function a(t,e){if(!o[t]){if(!i[t]){var n=\"function\"==typeof require&&require;if(!e&&n)return n(t,!0);if(c)return c(t,!0);throw(e=new Error(\"Cannot find module '\"+t+\"'\")).code=\"MODULE_NOT_FOUND\",e}n=o[t]={exports:{}},i[t][0].call(n.exports,function(e){return a(i[t][1][e]||e)},n,n.exports,r,i,o,s)}return o[t].exports}for(var c=\"function\"==typeof require&&require,e=0;e<s.length;e++)a(s[e]);return a}({1:[function(e,t,n){\"use strict\";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},r=(Object.defineProperty(n,\"__esModule\",{value:!0}),n.PromiseGlobal=void 0,r(e(\"promise-polyfill\"))),e=\"undefined\"!=typeof Promise?Promise:r.default;n.PromiseGlobal=e},{\"promise-polyfill\":64}],2:[function(e,t,n){\"use strict\";var s=e(\"./lib/promise\"),a={};function r(n){var e,r,t,i,o=JSON.stringify(n);return!n.forceScriptReload&&(e=a[o])||(r=document.createElement(\"script\"),t=n.dataAttributes||{},i=n.container||document.head,r.src=n.src,r.id=n.id||\"\",r.async=!0,n.crossorigin&&r.setAttribute(\"crossorigin\",\"\"+n.crossorigin),Object.keys(t).forEach(function(e){r.setAttribute(\"data-\"+e,\"\"+t[e])}),e=new s.PromiseGlobal(function(e,t){r.addEventListener(\"load\",function(){e(r)}),r.addEventListener(\"error\",function(){t(new Error(n.src+\" failed to load.\"))}),r.addEventListener(\"abort\",function(){t(new Error(n.src+\" has aborted.\"))}),i.appendChild(r)}),a[o]=e),e}r.clearCache=function(){a={}},t.exports=r},{\"./lib/promise\":1}],3:[function(e,t,n){t.exports=e(\"./dist/load-script\")},{\"./dist/load-script\":2}],4:[function(e,t,n){\"use strict\";t.exports=function(e){return e=e||window.navigator.userAgent,/Android/i.test(e)}},{}],5:[function(e,t,n){\"use strict\";t.exports=function(e){return e=e||window.navigator.userAgent,/CrOS/i.test(e)}},{}],6:[function(e,t,n){\"use strict\";var r=e(\"./is-edge\"),i=e(\"./is-samsung\"),o=e(\"./is-duckduckgo\"),s=e(\"./is-opera\"),a=e(\"./is-silk\");t.exports=function(e){return!(-1===(e=e||window.navigator.userAgent).indexOf(\"Chrome\")&&-1===e.indexOf(\"CriOS\")||r(e)||i(e)||o(e)||s(e)||a(e))}},{\"./is-duckduckgo\":7,\"./is-edge\":8,\"./is-opera\":17,\"./is-samsung\":18,\"./is-silk\":19}],7:[function(e,t,n){\"use strict\";t.exports=function(e){return-1!==(e=e||window.navigator.userAgent).indexOf(\"DuckDuckGo/\")}},{}],8:[function(e,t,n){\"use strict\";t.exports=function(e){return-1!==(e=e||window.navigator.userAgent).indexOf(\"Edge/\")}},{}],9:[function(e,t,n){\"use strict\";t.exports=function(e){return e=e||window.navigator.userAgent,/Firefox/i.test(e)}},{}],10:[function(e,t,n){\"use strict\";var r=e(\"./is-ie11\");t.exports=function(e){return-1!==(e=e||window.navigator.userAgent).indexOf(\"MSIE\")||r(e)}},{\"./is-ie11\":12}],11:[function(e,t,n){\"use strict\";t.exports=function(e){return-1!==(e=e||window.navigator.userAgent).indexOf(\"MSIE 10\")}},{}],12:[function(e,t,n){\"use strict\";t.exports=function(e){return-1!==(e=e||window.navigator.userAgent).indexOf(\"Trident/7\")}},{}],13:[function(e,t,n){\"use strict\";t.exports=function(e){return-1!==(e=e||window.navigator.userAgent).indexOf(\"MSIE 9\")}},{}],14:[function(e,t,n){\"use strict\";var r=e(\"./is-ios\");t.exports=function(e){return e=e||window.navigator.userAgent,r(e)&&/\\bGSA\\b/.test(e)}},{\"./is-ios\":16}],15:[function(e,t,n){\"use strict\";var r=e(\"./is-ios\"),i=e(\"./is-ios-google-search-app\");t.exports=function(e){return e=e||window.navigator.userAgent,!!r(e)&&(!!i(e)||/.+AppleWebKit(?!.*Safari)/i.test(e))}},{\"./is-ios\":16,\"./is-ios-google-search-app\":14}],16:[function(e,t,n){\"use strict\";t.exports=function(e){return e=e||window.navigator.userAgent,/iPhone|iPod|iPad/i.test(e)}},{}],17:[function(e,t,n){\"use strict\";t.exports=function(e){return-1!==(e=e||window.navigator.userAgent).indexOf(\"OPR/\")||-1!==e.indexOf(\"Opera/\")||-1!==e.indexOf(\"OPT/\")}},{}],18:[function(e,t,n){\"use strict\";t.exports=function(e){return e=e||window.navigator.userAgent,/SamsungBrowser/i.test(e)}},{}],19:[function(e,t,n){\"use strict\";t.exports=function(e){return-1!==(e=e||window.navigator.userAgent).indexOf(\"Silk/\")}},{}],20:[function(e,t,n){t.exports=e(\"./dist/is-android\")},{\"./dist/is-android\":4}],21:[function(e,t,n){t.exports=e(\"./dist/is-chrome-os\")},{\"./dist/is-chrome-os\":5}],22:[function(e,t,n){t.exports=e(\"./dist/is-chrome\")},{\"./dist/is-chrome\":6}],23:[function(e,t,n){t.exports=e(\"./dist/is-edge\")},{\"./dist/is-edge\":8}],24:[function(e,t,n){t.exports=e(\"./dist/is-firefox\")},{\"./dist/is-firefox\":9}],25:[function(e,t,n){t.exports=e(\"./dist/is-ie\")},{\"./dist/is-ie\":10}],26:[function(e,t,n){t.exports=e(\"./dist/is-ie10\")},{\"./dist/is-ie10\":11}],27:[function(e,t,n){t.exports=e(\"./dist/is-ie9\")},{\"./dist/is-ie9\":13}],28:[function(e,t,n){t.exports=e(\"./dist/is-ios-webview\")},{\"./dist/is-ios-webview\":15}],29:[function(e,t,n){t.exports=e(\"./dist/is-ios\")},{\"./dist/is-ios\":16}],30:[function(e,t,n){\"use strict\";function r(e){return e.className.trim().split(/\\s+/)}function i(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];e.className=r(e).filter(function(e){return-1===t.indexOf(e)}).concat(t).join(\" \")}function o(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];e.className=r(e).filter(function(e){return-1===t.indexOf(e)}).join(\" \")}Object.defineProperty(n,\"__esModule\",{value:!0}),n.toggle=n.remove=n.add=void 0,n.add=i,n.remove=o,n.toggle=function(e,t,n){(n?i:o)(e,t)}},{}],31:[function(e,t,n){\"use strict\";function r(){this._events={}}r.prototype.on=function(e,t){this._events[e]?this._events[e].push(t):this._events[e]=[t]},r.prototype.off=function(e,t){e=this._events[e];e&&(t=e.indexOf(t),e.splice(t,1))},r.prototype._emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];e=this._events[e];e&&e.forEach(function(e){e.apply(void 0,t)})},r.prototype.hasListener=function(e){e=this._events[e];return!!e&&0<e.length},r.createChild=function(e){e.prototype=Object.create(r.prototype,{constructor:e})},t.exports=r},{}],32:[function(e,t,n){\"use strict\";var r=\"undefined\"!=typeof Promise?Promise:null,r=(i.defaultOnResolve=function(e){return i.Promise.resolve(e)},i.defaultOnReject=function(e){return i.Promise.reject(e)},i.setPromise=function(e){i.Promise=e},i.shouldCatchExceptions=function(e){return e.hasOwnProperty(\"suppressUnhandledPromiseMessage\")?Boolean(e.suppressUnhandledPromiseMessage):Boolean(i.suppressUnhandledPromiseMessage)},i.all=function(e){return i.Promise.all(e)},i.allSettled=function(e){return i.Promise.allSettled(e)},i.race=function(e){return i.Promise.race(e)},i.reject=function(e){return i.Promise.reject(e)},i.resolve=function(e){return i.Promise.resolve(e)},i.prototype.then=function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return(e=this._promise).then.apply(e,t)},i.prototype.catch=function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return(e=this._promise).catch.apply(e,t)},i.prototype.resolve=function(e){var t=this;return this.isFulfilled||(this._setResolved(),i.Promise.resolve().then(function(){return t._onResolve(e)}).then(function(e){t._resolveFunction(e)}).catch(function(e){t._resetState(),t.reject(e)})),this},i.prototype.reject=function(e){var t=this;return this.isFulfilled||(this._setRejected(),i.Promise.resolve().then(function(){return t._onReject(e)}).then(function(e){t._setResolved(),t._resolveFunction(e)}).catch(function(e){return t._rejectFunction(e)})),this},i.prototype._resetState=function(){this.isFulfilled=!1,this.isResolved=!1,this.isRejected=!1},i.prototype._setResolved=function(){this.isFulfilled=!0,this.isResolved=!0,this.isRejected=!1},i.prototype._setRejected=function(){this.isFulfilled=!0,this.isResolved=!1,this.isRejected=!0},i.Promise=r,i);function i(e){var n=this;\"function\"==typeof e?this._promise=new i.Promise(e):(this._promise=new i.Promise(function(e,t){n._resolveFunction=e,n._rejectFunction=t}),this._onResolve=(e=e||{}).onResolve||i.defaultOnResolve,this._onReject=e.onReject||i.defaultOnReject,i.shouldCatchExceptions(e)&&this._promise.catch(function(){}),this._resetState())}t.exports=r},{}],33:[function(e,t,n){\"use strict\";var r=e(\"./lib/set-attributes\"),i=e(\"./lib/default-attributes\"),o=e(\"./lib/assign\");t.exports=function(e){void 0===e&&(e={});var t=document.createElement(\"iframe\"),e=o.assign({},i.defaultAttributes,e);return e.style&&\"string\"!=typeof e.style&&(o.assign(t.style,e.style),delete e.style),r.setAttributes(t,e),t.getAttribute(\"id\")||(t.id=t.name),t}},{\"./lib/assign\":34,\"./lib/default-attributes\":35,\"./lib/set-attributes\":36}],34:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.assign=void 0,n.assign=function(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];return e.forEach(function(t){\"object\"==typeof t&&Object.keys(t).forEach(function(e){n[e]=t[e]})}),n}},{}],35:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.defaultAttributes=void 0,n.defaultAttributes={src:\"about:blank\",frameBorder:0,allowtransparency:!0,scrolling:\"no\"}},{}],36:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.setAttributes=void 0,n.setAttributes=function(e,t){for(var n in t){var r;t.hasOwnProperty(n)&&(null==(r=t[n])?e.removeAttribute(n):e.setAttribute(n,r))}}},{}],37:[function(e,t,n){\"use strict\";t.exports=function(){return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return(\"x\"===e?t:3&t|8).toString(16)})}},{}],38:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.deferred=function(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];setTimeout(function(){try{n.apply(void 0,e)}catch(e){console.log(\"Error in callback function\"),console.log(e)}},1)}}},{}],39:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.once=function(n){var r=!1;return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];r||(r=!0,n.apply(void 0,e))}}},{}],40:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.promiseOrCallback=function(e,t){if(!t)return e;e.then(function(e){return t(null,e)}).catch(function(e){return t(e)})}},{}],41:[function(e,t,n){\"use strict\";var i=e(\"./lib/deferred\"),o=e(\"./lib/once\"),s=e(\"./lib/promise-or-callback\");function a(r){return function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return\"function\"==typeof t[t.length-1]&&(e=t.pop(),e=o.once(i.deferred(e))),s.promiseOrCallback(r.apply(this,t),e)}}a.wrapPrototype=function(r,e){var i=(e=void 0===e?{}:e).ignoreMethods||[],o=!0===e.transformPrivateMethods;return Object.getOwnPropertyNames(r.prototype).filter(function(e){var t=\"constructor\"!==e&&\"function\"==typeof r.prototype[e],n=-1===i.indexOf(e),e=o||\"_\"!==e.charAt(0);return t&&e&&n}).forEach(function(e){var t=r.prototype[e];r.prototype[e]=a(t)}),r},t.exports=a},{\"./lib/deferred\":38,\"./lib/once\":39,\"./lib/promise-or-callback\":40}],42:[function(e,t,n){\"use strict\";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},i=e(\"./lib/card-types\"),o=e(\"./lib/add-matching-cards-to-results\"),s=e(\"./lib/is-valid-input-type\"),a=e(\"./lib/find-best-match\"),c=e(\"./lib/clone\"),u={},e={VISA:\"visa\",MASTERCARD:\"mastercard\",AMERICAN_EXPRESS:\"american-express\",DINERS_CLUB:\"diners-club\",DISCOVER:\"discover\",JCB:\"jcb\",UNIONPAY:\"unionpay\",MAESTRO:\"maestro\",ELO:\"elo\",MIR:\"mir\",HIPER:\"hiper\",HIPERCARD:\"hipercard\"},d=[e.VISA,e.MASTERCARD,e.AMERICAN_EXPRESS,e.DINERS_CLUB,e.DISCOVER,e.JCB,e.UNIONPAY,e.MAESTRO,e.ELO,e.MIR,e.HIPER,e.HIPERCARD],l=c.clone(d);function f(e){return u[e]||i[e]}function p(e,t){void 0===t&&(t=!1);var n=l.indexOf(e);if(t||-1!==n)return n;throw new Error('\"'+e+'\" is not a supported card type.')}function h(t){var n=[];if(!s.isValidInputType(t))return n;if(0===t.length)return l.map(function(e){return c.clone(f(e))});l.forEach(function(e){e=f(e);o.addMatchingCardsToResults(t,e,n)});var e=a.findBestMatch(n);return e?[e]:n}h.getTypeInfo=function(e){return c.clone(f(e))},h.removeCard=function(e){e=p(e);l.splice(e,1)},h.addCard=function(e){var t=p(e.type,!0);u[e.type]=e,-1===t&&l.push(e.type)},h.updateCard=function(e,t){var n=u[e]||i[e];if(!n)throw new Error('\"'+e+\"\\\" is not a recognized type. Use `addCard` instead.'\");if(t.type&&n.type!==t.type)throw new Error(\"Cannot overwrite type parameter.\");e=c.clone(n),e=r(r({},e),t);u[e.type]=e},h.changeOrder=function(e,t){var n=p(e);l.splice(n,1),l.splice(t,0,e)},h.resetModifications=function(){l=c.clone(d),u={}},h.types=e,t.exports=h},{\"./lib/add-matching-cards-to-results\":43,\"./lib/card-types\":44,\"./lib/clone\":45,\"./lib/find-best-match\":46,\"./lib/is-valid-input-type\":47}],43:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.addMatchingCardsToResults=void 0;var s=e(\"./clone\"),a=e(\"./matches\");n.addMatchingCardsToResults=function(e,t,n){for(var r=0;r<t.patterns.length;r++){var i=t.patterns[r];if(a.matches(e,i)){var o=s.clone(t),i=(Array.isArray(i)?String(i[0]):String(i)).length;e.length>=i&&(o.matchStrength=i),n.push(o);break}}}},{\"./clone\":45,\"./matches\":48}],44:[function(e,t,n){\"use strict\";t.exports={visa:{niceType:\"Visa\",type:\"visa\",patterns:[4],gaps:[4,8,12],lengths:[16,18,19],code:{name:\"CVV\",size:3}},mastercard:{niceType:\"Mastercard\",type:\"mastercard\",patterns:[[51,55],[2221,2229],[223,229],[23,26],[270,271],2720],gaps:[4,8,12],lengths:[16],code:{name:\"CVC\",size:3}},\"american-express\":{niceType:\"American Express\",type:\"american-express\",patterns:[34,37],gaps:[4,10],lengths:[15],code:{name:\"CID\",size:4}},\"diners-club\":{niceType:\"Diners Club\",type:\"diners-club\",patterns:[[300,305],36,38,39],gaps:[4,10],lengths:[14,16,19],code:{name:\"CVV\",size:3}},discover:{niceType:\"Discover\",type:\"discover\",patterns:[6011,[644,649],65],gaps:[4,8,12],lengths:[16,19],code:{name:\"CID\",size:3}},jcb:{niceType:\"JCB\",type:\"jcb\",patterns:[2131,1800,[3528,3589]],gaps:[4,8,12],lengths:[16,17,18,19],code:{name:\"CVV\",size:3}},unionpay:{niceType:\"UnionPay\",type:\"unionpay\",patterns:[620,[624,626],[62100,62182],[62184,62187],[62185,62197],[62200,62205],[622010,622999],622018,[622019,622999],[62207,62209],[622126,622925],[623,626],6270,6272,6276,[627700,627779],[627781,627799],[6282,6289],6291,6292,810,[8110,8131],[8132,8151],[8152,8163],[8164,8171]],gaps:[4,8,12],lengths:[14,15,16,17,18,19],code:{name:\"CVN\",size:3}},maestro:{niceType:\"Maestro\",type:\"maestro\",patterns:[493698,[5e5,504174],[504176,506698],[506779,508999],[56,59],63,67,6],gaps:[4,8,12],lengths:[12,13,14,15,16,17,18,19],code:{name:\"CVC\",size:3}},elo:{niceType:\"Elo\",type:\"elo\",patterns:[401178,401179,438935,457631,457632,431274,451416,457393,504175,[506699,506778],[509e3,509999],627780,636297,636368,[650031,650033],[650035,650051],[650405,650439],[650485,650538],[650541,650598],[650700,650718],[650720,650727],[650901,650978],[651652,651679],[655e3,655019],[655021,655058]],gaps:[4,8,12],lengths:[16],code:{name:\"CVE\",size:3}},mir:{niceType:\"Mir\",type:\"mir\",patterns:[[2200,2204]],gaps:[4,8,12],lengths:[16,17,18,19],code:{name:\"CVP2\",size:3}},hiper:{niceType:\"Hiper\",type:\"hiper\",patterns:[637095,63737423,63743358,637568,637599,637609,637612],gaps:[4,8,12],lengths:[16],code:{name:\"CVC\",size:3}},hipercard:{niceType:\"Hipercard\",type:\"hipercard\",patterns:[606282],gaps:[4,8,12],lengths:[16],code:{name:\"CVC\",size:3}}}},{}],45:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.clone=void 0,n.clone=function(e){return e?JSON.parse(JSON.stringify(e)):null}},{}],46:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.findBestMatch=void 0,n.findBestMatch=function(e){var t,n;return 0<(n=(t=e).filter(function(e){return e.matchStrength}).length)&&n===t.length?e.reduce(function(e,t){return!e||Number(e.matchStrength)<Number(t.matchStrength)?t:e}):null}},{}],47:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.isValidInputType=void 0,n.isValidInputType=function(e){return\"string\"==typeof e||e instanceof String}},{}],48:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.matches=void 0,n.matches=function(e,t){var n,r,i,o;return Array.isArray(t)?(i=e,o=t[0],n=t[1],r=String(o).length,i=i.substr(0,r),r=parseInt(i,10),o=parseInt(String(o).substr(0,i.length),10),n=parseInt(String(n).substr(0,i.length),10),o<=r&&r<=n):(i=e,o=t,(o=String(o)).substring(0,i.length)===i.substring(0,o.length))}},{}],49:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Framebus=void 0;var o=e(\"./lib/is-not-string\"),a=e(\"./lib/subscription-args-invalid\"),s=e(\"./lib/broadcast\"),c=e(\"./lib/package-payload\"),u=e(\"./lib/send-message\"),d=e(\"./lib/constants\"),e=\"undefined\"!=typeof window&&window.Promise;function l(e){this.origin=(e=void 0===e?{}:e).origin||\"*\",this.channel=e.channel||\"\",this.verifyDomain=e.verifyDomain,this.targetFrames=e.targetFrames||[],this.limitBroadcastToFramesArray=Boolean(e.targetFrames),this.isDestroyed=!1,this.listeners=[],this.hasAdditionalChecksForOnListeners=Boolean(this.verifyDomain||this.limitBroadcastToFramesArray)}l.setPromise=function(e){l.Promise=e},l.target=function(e){return new l(e)},l.prototype.addTargetFrame=function(e){this.limitBroadcastToFramesArray&&this.targetFrames.push(e)},l.prototype.include=function(e){return null!=e&&(null!=e.Window&&(e.constructor===e.Window&&(d.childWindows.push(e),!0)))},l.prototype.target=function(e){return l.target(e)},l.prototype.emit=function(e,t,n){if(this.isDestroyed)return!1;var r=this.origin;if(e=this.namespaceEvent(e),(0,o.isntString)(e))return!1;if((0,o.isntString)(r))return!1;\"function\"==typeof t&&(n=t,t=void 0);var i=(0,c.packagePayload)(e,r,t,n);return!!i&&(this.limitBroadcastToFramesArray?this.targetFramesAsWindows().forEach(function(e){(0,u.sendMessage)(e,i,r)}):(0,s.broadcast)(i,{origin:r,frame:window.top||window.self}),!0)},l.prototype.emitAsPromise=function(n,r){var i=this;return new l.Promise(function(t,e){i.emit(n,r,function(e){t(e)})||e(new Error('Listener not added for \"'.concat(n,'\"')))})},l.prototype.on=function(e,n){var r,t,i;return!this.isDestroyed&&(t=(r=this).origin,i=n,e=this.namespaceEvent(e),!(0,a.subscriptionArgsInvalid)(e,i,t)&&(this.hasAdditionalChecksForOnListeners&&(i=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];r.passesVerifyDomainCheck(this&&this.origin)&&r.hasMatchingTargetFrame(this&&this.source)&&n.apply(void 0,e)}),this.listeners.push({eventName:e,handler:i,originalHandler:n}),d.subscribers[t]=d.subscribers[t]||{},d.subscribers[t][e]=d.subscribers[t][e]||[],d.subscribers[t][e].push(i),!0))},l.prototype.off=function(e,t){var n=t;if(!this.isDestroyed){if(this.verifyDomain)for(var r=0;r<this.listeners.length;r++){var i=this.listeners[r];i.originalHandler===t&&(n=i.handler)}e=this.namespaceEvent(e);var o=this.origin;if(!(0,a.subscriptionArgsInvalid)(e,n,o)){var s=d.subscribers[o]&&d.subscribers[o][e];if(s)for(r=0;r<s.length;r++)if(s[r]===n)return s.splice(r,1),!0}}return!1},l.prototype.teardown=function(){if(!this.isDestroyed){this.isDestroyed=!0;for(var e=0;e<this.listeners.length;e++){var t=this.listeners[e];this.off(t.eventName,t.handler)}this.listeners.length=0}},l.prototype.passesVerifyDomainCheck=function(e){return!this.verifyDomain||this.checkOrigin(e)},l.prototype.targetFramesAsWindows=function(){return this.limitBroadcastToFramesArray?this.targetFrames.map(function(e){return e instanceof HTMLIFrameElement?e.contentWindow:e}).filter(function(e){return e}):[]},l.prototype.hasMatchingTargetFrame=function(t){var e;return!this.limitBroadcastToFramesArray||(e=this.targetFramesAsWindows().find(function(e){return e===t}),Boolean(e))},l.prototype.checkOrigin=function(e){var t,n=document.createElement(\"a\");return n.href=location.href,t=\"https:\"===n.protocol?n.host.replace(/:443$/,\"\"):\"http:\"===n.protocol?n.host.replace(/:80$/,\"\"):n.host,n.protocol+\"//\"+t===e||(!this.verifyDomain||this.verifyDomain(e))},l.prototype.namespaceEvent=function(e){return this.channel?\"\".concat(this.channel,\":\").concat(e):e},l.Promise=e,n.Framebus=l},{\"./lib/broadcast\":53,\"./lib/constants\":54,\"./lib/is-not-string\":57,\"./lib/package-payload\":59,\"./lib/send-message\":60,\"./lib/subscription-args-invalid\":62}],50:[function(e,t,n){\"use strict\";var r=e(\"./lib/attach\"),e=e(\"./framebus\");(0,r.attach)(),t.exports=e.Framebus},{\"./framebus\":49,\"./lib/attach\":51}],51:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.detach=n.attach=void 0;var r=e(\"./message\"),i=!1;n.attach=function(){i||\"undefined\"==typeof window||(i=!0,window.addEventListener(\"message\",r.onmessage,!1))},n.detach=function(){i=!1,window.removeEventListener(\"message\",r.onmessage,!1)}},{\"./message\":58}],52:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.broadcastToChildWindows=void 0;var o=e(\"./broadcast\"),s=e(\"./constants\");n.broadcastToChildWindows=function(e,t,n){for(var r=s.childWindows.length-1;0<=r;r--){var i=s.childWindows[r];i.closed?s.childWindows.splice(r,1):n!==i&&(0,o.broadcast)(e,{origin:t,frame:i.top})}}},{\"./broadcast\":53,\"./constants\":54}],53:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.broadcast=void 0;var a=e(\"./has-opener\");n.broadcast=function e(t,n){var r,i=0,o=n.origin,s=n.frame;try{for(s.postMessage(t,o),(0,a.hasOpener)(s)&&s.opener.top!==window.top&&e(t,{origin:o,frame:s.opener.top});r=s.frames[i];)e(t,{origin:o,frame:r}),i++}catch(e){}}},{\"./has-opener\":56}],54:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.subscribers=n.childWindows=n.prefix=void 0,n.prefix=\"/*framebus*/\",n.childWindows=[],n.subscribers={}},{}],55:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.dispatch=void 0;var a=e(\"./constants\");n.dispatch=function(e,t,n,r,i){if(a.subscribers[e]&&a.subscribers[e][t]){var o=[];n&&o.push(n),r&&o.push(r);for(var s=0;s<a.subscribers[e][t].length;s++)a.subscribers[e][t][s].apply(i,o)}}},{\"./constants\":54}],56:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.hasOpener=void 0,n.hasOpener=function(e){return e.top===e&&(null!=e.opener&&(e.opener!==e&&!0!==e.opener.closed))}},{}],57:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.isntString=void 0,n.isntString=function(e){return\"string\"!=typeof e}},{}],58:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.onmessage=void 0;var i=e(\"./is-not-string\"),o=e(\"./unpack-payload\"),s=e(\"./dispatch\"),a=e(\"./broadcast-to-child-windows\");n.onmessage=function(e){var t,n,r;(0,i.isntString)(e.data)||(t=(0,o.unpackPayload)(e))&&(n=t.eventData,r=t.reply,(0,s.dispatch)(\"*\",t.event,n,r,e),(0,s.dispatch)(e.origin,t.event,n,r,e),(0,a.broadcastToChildWindows)(e.data,t.origin,e.source))}},{\"./broadcast-to-child-windows\":52,\"./dispatch\":55,\"./is-not-string\":57,\"./unpack-payload\":63}],59:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.packagePayload=void 0;var o=e(\"./subscribe-replier\"),s=e(\"./constants\");n.packagePayload=function(e,t,n,r){var i,e={event:e,origin:t};\"function\"==typeof r&&(e.reply=(0,o.subscribeReplier)(r,t)),e.eventData=n;try{i=s.prefix+JSON.stringify(e)}catch(e){throw new Error(\"Could not stringify event: \".concat(e.message))}return i}},{\"./constants\":54,\"./subscribe-replier\":61}],60:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.sendMessage=void 0,n.sendMessage=function(e,t,n){try{e.postMessage(t,n)}catch(e){}}},{}],61:[function(e,t,n){\"use strict\";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},s=(Object.defineProperty(n,\"__esModule\",{value:!0}),n.subscribeReplier=void 0,e(\"../framebus\")),a=r(e(\"@braintree/uuid\"));n.subscribeReplier=function(r,i){var o=(0,a.default)();return s.Framebus.target({origin:i}).on(o,function e(t,n){r(t,n),s.Framebus.target({origin:i}).off(o,e)}),o}},{\"../framebus\":49,\"@braintree/uuid\":37}],62:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.subscriptionArgsInvalid=void 0;var r=e(\"./is-not-string\");n.subscriptionArgsInvalid=function(e,t,n){return!!(0,r.isntString)(e)||(\"function\"!=typeof t||(0,r.isntString)(n))}},{\"./is-not-string\":57}],63:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.unpackPayload=void 0;var o=e(\"./constants\"),s=e(\"./package-payload\");n.unpackPayload=function(e){var t,n,r,i;if(e.data.slice(0,o.prefix.length)!==o.prefix)return!1;try{t=JSON.parse(e.data.slice(o.prefix.length))}catch(e){return!1}return t.reply&&(n=e.origin,r=e.source,i=t.reply,t.reply=function(e){!r||(e=(0,s.packagePayload)(i,n,e))&&r.postMessage(e,n)}),t}},{\"./constants\":54,\"./package-payload\":59}],64:[function(e,t,n){\"use strict\";var r=setTimeout;function c(e){return Boolean(e&&void 0!==e.length)}function i(){}function o(e){if(!(this instanceof o))throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof e)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],f(e,this)}function s(n,r){for(;3===n._state;)n=n._value;0===n._state?n._deferreds.push(r):(n._handled=!0,o._immediateFn(function(){var e,t=1===n._state?r.onFulfilled:r.onRejected;if(null===t)(1===n._state?a:u)(r.promise,n._value);else{try{e=t(n._value)}catch(e){return void u(r.promise,e)}a(r.promise,e)}}))}function a(t,e){try{if(e===t)throw new TypeError(\"A promise cannot be resolved with itself.\");if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var n=e.then;if(e instanceof o)return t._state=3,t._value=e,void d(t);if(\"function\"==typeof n)return void f((r=n,i=e,function(){r.apply(i,arguments)}),t)}t._state=1,t._value=e,d(t)}catch(e){u(t,e)}var r,i}function u(e,t){e._state=2,e._value=t,d(e)}function d(e){2===e._state&&0===e._deferreds.length&&o._immediateFn(function(){e._handled||o._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t<n;t++)s(e,e._deferreds[t]);e._deferreds=null}function l(e,t,n){this.onFulfilled=\"function\"==typeof e?e:null,this.onRejected=\"function\"==typeof t?t:null,this.promise=n}function f(e,t){var n=!1;try{e(function(e){n||(n=!0,a(t,e))},function(e){n||(n=!0,u(t,e))})}catch(e){n||(n=!0,u(t,e))}}o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){var n=new this.constructor(i);return s(this,new l(e,t,n)),n},o.prototype.finally=function(t){var n=this.constructor;return this.then(function(e){return n.resolve(t()).then(function(){return e})},function(e){return n.resolve(t()).then(function(){return n.reject(e)})})},o.all=function(t){return new o(function(i,o){if(!c(t))return o(new TypeError(\"Promise.all accepts an array\"));var s=Array.prototype.slice.call(t);if(0===s.length)return i([]);var a=s.length;for(var e=0;e<s.length;e++)!function t(n,e){try{if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var r=e.then;if(\"function\"==typeof r)return void r.call(e,function(e){t(n,e)},o)}s[n]=e,0==--a&&i(s)}catch(e){o(e)}}(e,s[e])})},o.allSettled=function(n){return new this(function(i,e){if(!n||void 0===n.length)return e(new TypeError(typeof n+\" \"+n+\" is not iterable(cannot read property Symbol(Symbol.iterator))\"));var o=Array.prototype.slice.call(n);if(0===o.length)return i([]);var s=o.length;for(var t=0;t<o.length;t++)!function t(n,e){if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var r=e.then;if(\"function\"==typeof r)return void r.call(e,function(e){t(n,e)},function(e){o[n]={status:\"rejected\",reason:e},0==--s&&i(o)})}o[n]={status:\"fulfilled\",value:e},0==--s&&i(o)}(t,o[t])})},o.resolve=function(t){return t&&\"object\"==typeof t&&t.constructor===o?t:new o(function(e){e(t)})},o.reject=function(n){return new o(function(e,t){t(n)})},o.race=function(i){return new o(function(e,t){if(!c(i))return t(new TypeError(\"Promise.race accepts an array\"));for(var n=0,r=i.length;n<r;n++)o.resolve(i[n]).then(e,t)})},o._immediateFn=\"function\"==typeof setImmediate?function(e){setImmediate(e)}:function(e){r(e,0)},o._unhandledRejectionFn=function(e){\"undefined\"!=typeof console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",e)},t.exports=o},{}],65:[function(e,t,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.isIos=n.isIE9=n.isSamsungBrowser=n.isAndroidChrome=n.isKitKatWebview=void 0;var r=\"undefined\"!=typeof window&&window.navigator&&window.navigator.userAgent,i=e(\"@braintree/browser-detection/is-android\"),o=e(\"@braintree/browser-detection/is-chrome-os\"),s=e(\"@braintree/browser-detection/is-chrome\"),a=e(\"@braintree/browser-detection/is-ios\"),a=(n.isIos=a,e(\"@braintree/browser-detection/is-ie9\")),c=(n.isIE9=a,/Version\\/\\d\\.\\d* Chrome\\/\\d*\\.0\\.0\\.0/);n.isKitKatWebview=function(e){return i(e=void 0===e?r:e)&&c.test(e)},n.isAndroidChrome=function(e){return(i(e=void 0===e?r:e)||o(e))&&s(e)},n.isSamsungBrowser=function(e){return void 0===e&&(e=r),/SamsungBrowser/.test(e)||!s(e=e)&&-1<e.indexOf(\"Samsung\")}},{\"@braintree/browser-detection/is-android\":20,\"@braintree/browser-detection/is-chrome\":22,\"@braintree/browser-detection/is-chrome-os\":21,\"@braintree/browser-detection/is-ie9\":27,\"@braintree/browser-detection/is-ios\":29}],66:[function(e,t,n){\"use strict\";var r=e(\"./lib/device\");t.exports=function(){return!(0,r.isSamsungBrowser)()}},{\"./lib/device\":65}],67:[function(e,t,n){t.exports=e(\"./dist/supports-input-formatting\")},{\"./dist/supports-input-formatting\":66}],68:[function(e,t,n){\"use strict\";var r=e(\"../../lib/braintree-error\"),i=e(\"../shared/errors\"),o=e(\"../shared/constants\").allowedAttributes;t.exports=function(e,t){var n;return o.hasOwnProperty(e)?null==t||function(e,t){{if(\"string\"===o[e])return\"string\"==typeof t||\"number\"==typeof t;if(\"boolean\"===o[e])return\"true\"===String(t)||\"false\"===String(t)}return}(e,t)||(n=new r({type:i.HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED.type,code:i.HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED.code,message:'Value \"'+t+'\" is not allowed for \"'+e+'\" attribute.'})):n=new r({type:i.HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED.type,code:i.HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED.code,message:'The \"'+e+'\" attribute is not supported in Hosted Fields.'}),n}},{\"../../lib/braintree-error\":87,\"../shared/constants\":76,\"../shared/errors\":77}],69:[function(e,t,n){\"use strict\";var r=e(\"../shared/constants\"),i=e(\"../../lib/use-min\");t.exports=function(e,t,n){return e+\"/web/\"+r.VERSION+\"/html/hosted-fields-frame\"+i(n)+\".html#\"+t}},{\"../../lib/use-min\":103,\"../shared/constants\":76}],70:[function(e,t,n){\"use strict\";var c=e(\"../shared/constants\").navigationDirections,r=e(\"../shared/browser-detection\"),u=e(\"../shared/focus-intercept\"),d=e(\"../shared/find-parent-tags\"),i=[\"INPUT\",\"SELECT\",\"TEXTAREA\"],o=[\"hidden\",\"button\",\"reset\",\"submit\",\"checkbox\",\"radio\",\"file\"];function l(e){return r.hasSoftwareKeyboard()?-1<i.indexOf(e.tagName)&&o.indexOf(e.type)<0:\"hidden\"!==e.type}function s(e){for(var t,n=0;n<e.length;n++)if(l(t=e[n]))return t;return null}t.exports={removeExtraFocusElements:function(e,t){e=Array.prototype.slice.call(e.elements);[s(e),s(e.reverse())].forEach(function(e){e&&u.matchFocusElement(e.getAttribute(\"id\"))&&t(e.getAttribute(\"id\"))})},createFocusChangeHandler:function(s,a){return function(e){var t,n,r,i,o=document.getElementById(\"bt-\"+e.field+\"-\"+e.direction+\"-\"+s);if(o)if(r=d(o,\"form\")[0],document.forms.length<1||!r)a.onRemoveFocusIntercepts();else{t=(r=[].slice.call(r.elements)).indexOf(o),i=function(e,t){switch(e){case c.BACK:return{checkIndexBounds:function(e){return e<0},indexChange:-1};case c.FORWARD:return{checkIndexBounds:function(e){return t-1<e},indexChange:1}}return{}}(e.direction,r.length);do{if(t+=i.indexChange,i.checkIndexBounds(t))return}while(!l(n=r[t]));u.matchFocusElement(n.getAttribute(\"id\"))?a.onTriggerInputFocus(n.getAttribute(\"data-braintree-type\")):n.focus()}}}}},{\"../shared/browser-detection\":75,\"../shared/constants\":76,\"../shared/find-parent-tags\":78,\"../shared/focus-intercept\":79}],71:[function(e,t,n){\"use strict\";var i=e(\"../shared/constants\").allowedStyles;t.exports=function(e){var n,t=document.createElement(\"input\"),r={};return\".\"===e[0]&&(e=e.substring(1)),t.className=e,t.style.display=\"none !important\",t.style.position=\"fixed !important\",t.style.left=\"-99999px !important\",t.style.top=\"-99999px !important\",document.body.appendChild(t),n=window.getComputedStyle(t),i.forEach(function(e){var t=n[e];t&&(r[e]=t)}),document.body.removeChild(t),r}},{\"../shared/constants\":76}],72:[function(e,t,s){\"use strict\";var r=e(\"../../lib/assign\").assign,f=e(\"../../lib/create-assets-url\"),p=e(\"../../lib/is-verified-domain\"),h=e(\"../../lib/destructor\"),E=e(\"@braintree/class-list\"),_=e(\"@braintree/iframer\"),m=e(\"framebus\"),b=e(\"../../lib/create-deferred-client\"),y=e(\"../../lib/braintree-error\"),g=e(\"./compose-url\"),I=e(\"./get-styles-from-class\"),v=e(\"../shared/constants\"),T=e(\"../shared/errors\"),O=e(\"../../lib/constants\").INTEGRATION_TIMEOUT_MS,S=e(\"@braintree/uuid\"),a=e(\"../shared/find-parent-tags\"),D=e(\"../shared/browser-detection\"),w=v.events,A=e(\"@braintree/event-emitter\"),F=e(\"./inject-frame\"),N=e(\"../../lib/analytics\"),i=v.allowedFields,L=e(\"../../lib/methods\"),R=e(\"../../lib/shadow\"),c=e(\"../../lib/find-root-node\"),C=e(\"../../lib/convert-methods-to-error\"),x=e(\"../../lib/errors\"),P=e(\"../shared/get-card-types\"),o=e(\"./attribute-validation-error\"),M=e(\"../../lib/promise\"),n=e(\"@braintree/wrap-promise\"),H=e(\"./focus-change\"),V=e(\"../shared/focus-intercept\").destroy;function U(o){var n,e,t,s,i,a=this,c={},u={},d=[],l=S();if(this._merchantConfigurationOptions=r({},o),t=o.client?(e=(t=o.client.getConfiguration()).gatewayConfiguration.assetsUrl,t.isDebug):(e=f.create(o.authorization),Boolean(o.isDebug)),this._clientPromise=b.create({client:o.client,authorization:o.authorization,debug:t,assetsUrl:e,name:\"Hosted Fields\"}),s=g(e,l,t),!o.fields||0===Object.keys(o.fields).length)throw new y({type:x.INSTANTIATION_OPTION_REQUIRED.type,code:x.INSTANTIATION_OPTION_REQUIRED.code,message:\"options.fields is required when instantiating Hosted Fields.\"});A.call(this),this._injectedNodes=[],this._destructor=new h,this._fields=c,this._state={fields:{},cards:P(\"\")},this._bus=new m({channel:l,verifyDomain:p,targetFrames:[]}),this._destructor.registerFunctionForTeardown(function(){a._bus.teardown()}),o.client?N.sendEvent(this._clientPromise,\"custom.hosted-fields.initialized\"):N.sendEvent(this._clientPromise,\"custom.hosted-fields.initialized.deferred-client\"),Object.keys(o.fields).forEach(function(t){var e,n,r,i;if(!v.allowedFields.hasOwnProperty(t))throw new y({type:T.HOSTED_FIELDS_INVALID_FIELD_KEY.type,code:T.HOSTED_FIELDS_INVALID_FIELD_KEY.code,message:'\"'+t+'\" is not a valid field.'});if(!(e=\"string\"==typeof(e=(i=o.fields[t]).container||i.selector)?document.querySelector(e):e)||1!==e.nodeType)throw new y({type:T.HOSTED_FIELDS_INVALID_FIELD_SELECTOR.type,code:T.HOSTED_FIELDS_INVALID_FIELD_SELECTOR.code,message:T.HOSTED_FIELDS_INVALID_FIELD_SELECTOR.message,details:{fieldSelector:i.selector,fieldContainer:i.container,fieldKey:t}});if(e.querySelector('iframe[name^=\"braintree-\"]'))throw new y({type:T.HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME.type,code:T.HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME.code,message:T.HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME.message,details:{fieldSelector:i.selector,fieldContainer:i.container,fieldKey:t}});if(n=e,R.isShadowElement(n)&&(n=R.transformToSlot(n,\"height: 100%\")),i.maxlength&&\"number\"!=typeof i.maxlength)throw new y({type:T.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.type,code:T.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.code,message:\"The value for maxlength must be a number.\",details:{fieldKey:t}});if(i.minlength&&\"number\"!=typeof i.minlength)throw new y({type:T.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.type,code:T.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.code,message:\"The value for minlength must be a number.\",details:{fieldKey:t}});r=_({type:t,name:\"braintree-hosted-field-\"+t,style:v.defaultIFrameStyle,title:i.iframeTitle||\"Secure Credit Card Frame - \"+v.allowedFields[t].label}),this._bus.addTargetFrame(r),this._injectedNodes.push.apply(this._injectedNodes,F(l,r,n,function(){a.focus(t)})),this._setupLabelFocus(t,e),c[t]={frameElement:r,containerElement:e},i=new M(function(e){u[t]=e}),d.push(i),this._state.fields[t]={isEmpty:!0,isValid:!1,isPotentiallyValid:!0,isFocused:!1,container:e},setTimeout(function(){D.isIE()||D.isEdge()?(r.src=\"about:blank\",setTimeout(function(){r.src=s},0)):r.src=s},0)}.bind(this)),this._merchantConfigurationOptions.styles&&Object.keys(this._merchantConfigurationOptions.styles).forEach(function(e){var t=a._merchantConfigurationOptions.styles[e];\"string\"==typeof t&&(a._merchantConfigurationOptions.styles[e]=I(t))}),this._bus.on(w.REMOVE_FOCUS_INTERCEPTS,function(e){V(e&&e.id)}),this._bus.on(w.TRIGGER_FOCUS_CHANGE,H.createFocusChangeHandler(l,{onRemoveFocusIntercepts:function(e){a._bus.emit(w.REMOVE_FOCUS_INTERCEPTS,{id:e})},onTriggerInputFocus:function(e){a.focus(e)}})),this._bus.on(w.READY_FOR_CLIENT,function(t){a._clientPromise.then(function(e){t(e)})}),this._bus.on(w.CARD_FORM_ENTRY_HAS_BEGUN,function(){N.sendEvent(a._clientPromise,\"hosted-fields.input.started\")}),this._bus.on(w.BIN_AVAILABLE,function(e){a._emit(\"binAvailable\",{bin:e})}),n=setTimeout(function(){N.sendEvent(a._clientPromise,\"custom.hosted-fields.load.timed-out\"),a._emit(\"timeout\")},O),M.all(d).then(function(e){var t,e=e[0];clearTimeout(n),e((e=a._merchantConfigurationOptions,(t=r({},e)).fields=r({},t.fields),Object.keys(t.fields).forEach(function(e){t.fields[e]=r({},t.fields[e]),delete t.fields[e].container}),t)),a._cleanUpFocusIntercepts(),a._emit(\"ready\")}),this._bus.on(w.FRAME_READY,function(e,t){u[e.field](t)}),this._bus.on(w.INPUT_EVENT,(i=c,function(e){var t=e.merchantPayload,n=t.emittedBy,r=i[n].containerElement;Object.keys(t.fields).forEach(function(e){t.fields[e].container=i[e].containerElement}),n=t.fields[n],E.toggle(r,v.externalClasses.FOCUSED,n.isFocused),E.toggle(r,v.externalClasses.VALID,n.isValid),E.toggle(r,v.externalClasses.INVALID,!n.isPotentiallyValid),this._state={cards:t.cards,fields:t.fields},this._emit(e.type,t)}.bind(this))),this._destructor.registerFunctionForTeardown(function(){for(var e,t,n=0;n<a._injectedNodes.length;n++)(t=(e=a._injectedNodes[n]).parentNode).removeChild(e),E.remove(t,v.externalClasses.FOCUSED,v.externalClasses.INVALID,v.externalClasses.VALID)}),this._destructor.registerFunctionForTeardown(function(){V()}),this._destructor.registerFunctionForTeardown(function(){var e=L(U.prototype).concat(L(A.prototype));C(a,e)})}A.createChild(U),U.prototype._setupLabelFocus=function(e,t){var n,r,i=this,o=c(t);if(null!=t.id){for(n=Array.prototype.slice.call(document.querySelectorAll('label[for=\"'+t.id+'\"]')),n=(n=(n=o!==document?n.concat(Array.prototype.slice.call(o.querySelectorAll('label[for=\"'+t.id+'\"]'))):n).concat(a(t,\"label\"))).filter(function(e,t,n){return n.indexOf(e)===t}),r=0;r<n.length;r++)n[r].addEventListener(\"click\",s,!1);this._destructor.registerFunctionForTeardown(function(){for(r=0;r<n.length;r++)n[r].removeEventListener(\"click\",s,!1)})}function s(){i.focus(e)}},U.prototype._getAnyFieldContainer=function(){var n=this;return Object.keys(this._fields).reduce(function(e,t){return e||n._fields[t].containerElement},null)},U.prototype._cleanUpFocusIntercepts=function(){var e;!(document.forms.length<1)&&(e=this._getAnyFieldContainer(),e=a(e,\"form\")[0])?H.removeExtraFocusElements(e,function(e){this._bus.emit(w.REMOVE_FOCUS_INTERCEPTS,{id:e})}.bind(this)):this._bus.emit(w.REMOVE_FOCUS_INTERCEPTS)},U.prototype._attachInvalidFieldContainersToError=function(t){t.details&&t.details.invalidFieldKeys&&0<t.details.invalidFieldKeys.length&&(t.details.invalidFields={},t.details.invalidFieldKeys.forEach(function(e){t.details.invalidFields[e]=this._fields[e].containerElement}.bind(this)))},U.prototype.getChallenges=function(){return this._clientPromise.then(function(e){return e.getConfiguration().gatewayConfiguration.challenges})},U.prototype.getSupportedCardTypes=function(){return this._clientPromise.then(function(e){return e.getConfiguration().gatewayConfiguration.creditCards.supportedCardTypes.map(function(e){return\"MasterCard\"===e?\"Mastercard\":e})})},U.prototype.teardown=function(){var r=this;return new M(function(t,n){r._destructor.teardown(function(e){N.sendEvent(r._clientPromise,\"custom.hosted-fields.teardown-completed\"),e?n(e):t()})})},U.prototype.tokenize=function(e){var i=this;return e=e||{},new M(function(n,r){i._bus.emit(w.TOKENIZATION_REQUEST,e,function(e){var t=e[0],e=e[1];t?(i._attachInvalidFieldContainersToError(t),r(new y(t))):n(e)})})},U.prototype.addClass=function(e,t){var n;return i.hasOwnProperty(e)?this._fields.hasOwnProperty(e)?this._bus.emit(w.ADD_CLASS,{field:e,classname:t}):n=new y({type:T.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,code:T.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,message:'Cannot add class to \"'+e+'\" field because it is not part of the current Hosted Fields options.'}):n=new y({type:T.HOSTED_FIELDS_FIELD_INVALID.type,code:T.HOSTED_FIELDS_FIELD_INVALID.code,message:'\"'+e+'\" is not a valid field. You must use a valid field option when adding a class.'}),n?M.reject(n):M.resolve()},U.prototype.removeClass=function(e,t){var n;return i.hasOwnProperty(e)?this._fields.hasOwnProperty(e)?this._bus.emit(w.REMOVE_CLASS,{field:e,classname:t}):n=new y({type:T.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,code:T.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,message:'Cannot remove class from \"'+e+'\" field because it is not part of the current Hosted Fields options.'}):n=new y({type:T.HOSTED_FIELDS_FIELD_INVALID.type,code:T.HOSTED_FIELDS_FIELD_INVALID.code,message:'\"'+e+'\" is not a valid field. You must use a valid field option when removing a class.'}),n?M.reject(n):M.resolve()},U.prototype.setAttribute=function(e){var t,n;return i.hasOwnProperty(e.field)?this._fields.hasOwnProperty(e.field)?(t=o(e.attribute,e.value))?n=t:this._bus.emit(w.SET_ATTRIBUTE,{field:e.field,attribute:e.attribute,value:e.value}):n=new y({type:T.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,code:T.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,message:'Cannot set attribute for \"'+e.field+'\" field because it is not part of the current Hosted Fields options.'}):n=new y({type:T.HOSTED_FIELDS_FIELD_INVALID.type,code:T.HOSTED_FIELDS_FIELD_INVALID.code,message:'\"'+e.field+'\" is not a valid field. You must use a valid field option when setting an attribute.'}),n?M.reject(n):M.resolve()},U.prototype.setMonthOptions=function(t){var e,n=this,r=this._merchantConfigurationOptions.fields;return r.expirationMonth?r.expirationMonth.select||(e=\"Expiration month field must be a select element.\"):e=\"Expiration month field must exist to use setMonthOptions.\",e?M.reject(new y({type:T.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.type,code:T.HOSTED_FIELDS_FIELD_PROPERTY_INVALID.code,message:e})):new M(function(e){n._bus.emit(w.SET_MONTH_OPTIONS,t,e)})},U.prototype.setMessage=function(e){this._bus.emit(w.SET_MESSAGE,{field:e.field,message:e.message})},U.prototype.removeAttribute=function(e){var t,n;return i.hasOwnProperty(e.field)?this._fields.hasOwnProperty(e.field)?(t=o(e.attribute))?n=t:this._bus.emit(w.REMOVE_ATTRIBUTE,{field:e.field,attribute:e.attribute}):n=new y({type:T.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,code:T.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,message:'Cannot remove attribute for \"'+e.field+'\" field because it is not part of the current Hosted Fields options.'}):n=new y({type:T.HOSTED_FIELDS_FIELD_INVALID.type,code:T.HOSTED_FIELDS_FIELD_INVALID.code,message:'\"'+e.field+'\" is not a valid field. You must use a valid field option when removing an attribute.'}),n?M.reject(n):M.resolve()},U.prototype.setPlaceholder=function(e,t){return this.setAttribute({field:e,attribute:\"placeholder\",value:t})},U.prototype.clear=function(e){var t;return i.hasOwnProperty(e)?this._fields.hasOwnProperty(e)?this._bus.emit(w.CLEAR_FIELD,{field:e}):t=new y({type:T.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,code:T.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,message:'Cannot clear \"'+e+'\" field because it is not part of the current Hosted Fields options.'}):t=new y({type:T.HOSTED_FIELDS_FIELD_INVALID.type,code:T.HOSTED_FIELDS_FIELD_INVALID.code,message:'\"'+e+'\" is not a valid field. You must use a valid field option when clearing a field.'}),t?M.reject(t):M.resolve()},U.prototype.focus=function(e){var t,r=this._fields[e];return i.hasOwnProperty(e)?this._fields.hasOwnProperty(e)?(r.frameElement.focus(),this._bus.emit(w.TRIGGER_INPUT_FOCUS,{field:e}),D.isIos()&&setTimeout(function(){var e,t,n;e=(e=r.containerElement).getBoundingClientRect(),t=Math.floor(e.height/2),n=Math.floor(e.width/2),e.top<(window.innerHeight-t||document.documentElement.clientHeight-t)&&e.right>n&&e.bottom>t&&e.left<(window.innerWidth-n||document.documentElement.clientWidth-n)||r.containerElement.scrollIntoView()},5)):t=new y({type:T.HOSTED_FIELDS_FIELD_NOT_PRESENT.type,code:T.HOSTED_FIELDS_FIELD_NOT_PRESENT.code,message:'Cannot focus \"'+e+'\" field because it is not part of the current Hosted Fields options.'}):t=new y({type:T.HOSTED_FIELDS_FIELD_INVALID.type,code:T.HOSTED_FIELDS_FIELD_INVALID.code,message:'\"'+e+'\" is not a valid field. You must use a valid field option when focusing a field.'}),t?M.reject(t):M.resolve()},U.prototype.getState=function(){return this._state},t.exports=n.wrapPrototype(U)},{\"../../lib/analytics\":82,\"../../lib/assign\":84,\"../../lib/braintree-error\":87,\"../../lib/constants\":88,\"../../lib/convert-methods-to-error\":89,\"../../lib/create-assets-url\":90,\"../../lib/create-deferred-client\":92,\"../../lib/destructor\":93,\"../../lib/errors\":95,\"../../lib/find-root-node\":96,\"../../lib/is-verified-domain\":97,\"../../lib/methods\":99,\"../../lib/promise\":101,\"../../lib/shadow\":102,\"../shared/browser-detection\":75,\"../shared/constants\":76,\"../shared/errors\":77,\"../shared/find-parent-tags\":78,\"../shared/focus-intercept\":79,\"../shared/get-card-types\":80,\"./attribute-validation-error\":68,\"./compose-url\":69,\"./focus-change\":70,\"./get-styles-from-class\":71,\"./inject-frame\":73,\"@braintree/class-list\":30,\"@braintree/event-emitter\":31,\"@braintree/iframer\":33,\"@braintree/uuid\":37,\"@braintree/wrap-promise\":41,framebus:50}],73:[function(e,t,n){\"use strict\";var c=e(\"../shared/focus-intercept\"),u=e(\"../shared/constants\").navigationDirections;t.exports=function(e,t,n,r){var i=t.getAttribute(\"type\"),o=document.createElement(\"div\"),s=document.createDocumentFragment(),a=c.generate(e,i,u.BACK,r),e=c.generate(e,i,u.FORWARD,r);return o.style.clear=\"both\",s.appendChild(a),s.appendChild(t),s.appendChild(e),s.appendChild(o),n.appendChild(s),[t,o]}},{\"../shared/constants\":76,\"../shared/focus-intercept\":79}],74:[function(e,t,n){\"use strict\";var r=e(\"./external/hosted-fields\"),i=e(\"../lib/basic-component-verification\"),o=e(\"./shared/errors\"),s=e(\"restricted-input/supports-input-formatting\"),a=e(\"@braintree/wrap-promise\"),c=e(\"../lib/braintree-error\"),u=e(\"../lib/promise\");t.exports={supportsInputFormatting:s,create:a(function(e){return i.verify({name:\"Hosted Fields\",authorization:e.authorization,client:e.client}).then(function(){var n=new r(e);return new u(function(e,t){n.on(\"ready\",function(){e(n)}),n.on(\"timeout\",function(){t(new c(o.HOSTED_FIELDS_TIMEOUT))})})})}),VERSION:\"3.91.0\"}},{\"../lib/basic-component-verification\":85,\"../lib/braintree-error\":87,\"../lib/promise\":101,\"./external/hosted-fields\":72,\"./shared/errors\":77,\"@braintree/wrap-promise\":41,\"restricted-input/supports-input-formatting\":67}],75:[function(e,t,n){\"use strict\";var r=e(\"@braintree/browser-detection/is-android\"),i=e(\"@braintree/browser-detection/is-chrome-os\"),o=e(\"@braintree/browser-detection/is-ios\"),s=e(\"@braintree/browser-detection/is-chrome\");t.exports={isIE:e(\"@braintree/browser-detection/is-ie\"),isEdge:e(\"@braintree/browser-detection/is-edge\"),isIe9:e(\"@braintree/browser-detection/is-ie9\"),isIe10:e(\"@braintree/browser-detection/is-ie10\"),isAndroid:r,isChromeOS:i,isChromeIos:function(){return s()&&o()},isFirefox:e(\"@braintree/browser-detection/is-firefox\"),isIos:o,isIosWebview:e(\"@braintree/browser-detection/is-ios-webview\"),hasSoftwareKeyboard:function(){return r()||i()||o()}}},{\"@braintree/browser-detection/is-android\":20,\"@braintree/browser-detection/is-chrome\":22,\"@braintree/browser-detection/is-chrome-os\":21,\"@braintree/browser-detection/is-edge\":23,\"@braintree/browser-detection/is-firefox\":24,\"@braintree/browser-detection/is-ie\":25,\"@braintree/browser-detection/is-ie10\":26,\"@braintree/browser-detection/is-ie9\":27,\"@braintree/browser-detection/is-ios\":29,\"@braintree/browser-detection/is-ios-webview\":28}],76:[function(e,t,n){\"use strict\";var r=e(\"../../lib/enumerate\"),e=e(\"./errors\"),e={VERSION:\"3.91.0\",maxExpirationYearAge:19,externalEvents:{FOCUS:\"focus\",BLUR:\"blur\",EMPTY:\"empty\",NOT_EMPTY:\"notEmpty\",VALIDITY_CHANGE:\"validityChange\",CARD_TYPE_CHANGE:\"cardTypeChange\"},defaultMaxLengths:{number:19,postalCode:8,expirationDate:7,expirationMonth:2,expirationYear:4,cvv:3},externalClasses:{FOCUSED:\"braintree-hosted-fields-focused\",INVALID:\"braintree-hosted-fields-invalid\",VALID:\"braintree-hosted-fields-valid\"},navigationDirections:{BACK:\"before\",FORWARD:\"after\"},defaultIFrameStyle:{border:\"none\",width:\"100%\",height:\"100%\",float:\"left\"},tokenizationErrorCodes:{81724:e.HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE,81736:e.HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED},allowedStyles:[\"-moz-appearance\",\"-moz-box-shadow\",\"-moz-osx-font-smoothing\",\"-moz-tap-highlight-color\",\"-moz-transition\",\"-webkit-appearance\",\"-webkit-box-shadow\",\"-webkit-font-smoothing\",\"-webkit-tap-highlight-color\",\"-webkit-transition\",\"appearance\",\"box-shadow\",\"color\",\"direction\",\"font\",\"font-family\",\"font-size\",\"font-size-adjust\",\"font-stretch\",\"font-style\",\"font-variant\",\"font-variant-alternates\",\"font-variant-caps\",\"font-variant-east-asian\",\"font-variant-ligatures\",\"font-variant-numeric\",\"font-weight\",\"letter-spacing\",\"line-height\",\"margin\",\"margin-top\",\"margin-right\",\"margin-bottom\",\"margin-left\",\"opacity\",\"outline\",\"padding\",\"padding-top\",\"padding-right\",\"padding-bottom\",\"padding-left\",\"text-align\",\"text-shadow\",\"transition\"],allowedFields:{cardholderName:{name:\"cardholder-name\",label:\"Cardholder Name\"},number:{name:\"credit-card-number\",label:\"Credit Card Number\"},cvv:{name:\"cvv\",label:\"CVV\"},expirationDate:{name:\"expiration\",label:\"Expiration Date\"},expirationMonth:{name:\"expiration-month\",label:\"Expiration Month\"},expirationYear:{name:\"expiration-year\",label:\"Expiration Year\"},postalCode:{name:\"postal-code\",label:\"Postal Code\"}},allowedAttributes:{\"aria-invalid\":\"boolean\",\"aria-required\":\"boolean\",disabled:\"boolean\",placeholder:\"string\"},autocompleteMappings:{\"cardholder-name\":\"cc-name\",\"credit-card-number\":\"cc-number\",expiration:\"cc-exp\",\"expiration-month\":\"cc-exp-month\",\"expiration-year\":\"cc-exp-year\",cvv:\"cc-csc\",\"postal-code\":\"billing postal-code\"}};e.events=r([\"ADD_CLASS\",\"AUTOFILL_DATA_AVAILABLE\",\"BIN_AVAILABLE\",\"CARD_FORM_ENTRY_HAS_BEGUN\",\"CLEAR_FIELD\",\"CONFIGURATION\",\"FRAME_READY\",\"INPUT_EVENT\",\"READY_FOR_CLIENT\",\"REMOVE_ATTRIBUTE\",\"REMOVE_CLASS\",\"REMOVE_FOCUS_INTERCEPTS\",\"SET_ATTRIBUTE\",\"SET_MESSAGE\",\"SET_MONTH_OPTIONS\",\"TOKENIZATION_REQUEST\",\"TRIGGER_FOCUS_CHANGE\",\"TRIGGER_INPUT_FOCUS\",\"VALIDATE_STRICT\"],\"hosted-fields:\"),t.exports=e},{\"../../lib/enumerate\":94,\"./errors\":77}],77:[function(e,t,n){\"use strict\";e=e(\"../../lib/braintree-error\");t.exports={HOSTED_FIELDS_TIMEOUT:{type:e.types.UNKNOWN,code:\"HOSTED_FIELDS_TIMEOUT\",message:\"Hosted Fields timed out when attempting to set up.\"},HOSTED_FIELDS_INVALID_FIELD_KEY:{type:e.types.MERCHANT,code:\"HOSTED_FIELDS_INVALID_FIELD_KEY\"},HOSTED_FIELDS_INVALID_FIELD_SELECTOR:{type:e.types.MERCHANT,code:\"HOSTED_FIELDS_INVALID_FIELD_SELECTOR\",message:\"Selector does not reference a valid DOM node.\"},HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME:{type:e.types.MERCHANT,code:\"HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME\",message:\"Element already contains a Braintree iframe.\"},HOSTED_FIELDS_FIELD_INVALID:{type:e.types.MERCHANT,code:\"HOSTED_FIELDS_FIELD_INVALID\"},HOSTED_FIELDS_FIELD_NOT_PRESENT:{type:e.types.MERCHANT,code:\"HOSTED_FIELDS_FIELD_NOT_PRESENT\"},HOSTED_FIELDS_TOKENIZATION_NETWORK_ERROR:{type:e.types.NETWORK,code:\"HOSTED_FIELDS_TOKENIZATION_NETWORK_ERROR\",message:\"A tokenization network error occurred.\"},HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE:{type:e.types.CUSTOMER,code:\"HOSTED_FIELDS_TOKENIZATION_FAIL_ON_DUPLICATE\",message:\"This credit card already exists in the merchant's vault.\"},HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED:{type:e.types.CUSTOMER,code:\"HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED\",message:\"CVV verification failed during tokenization.\"},HOSTED_FIELDS_FAILED_TOKENIZATION:{type:e.types.CUSTOMER,code:\"HOSTED_FIELDS_FAILED_TOKENIZATION\",message:\"The supplied card data failed tokenization.\"},HOSTED_FIELDS_FIELDS_EMPTY:{type:e.types.CUSTOMER,code:\"HOSTED_FIELDS_FIELDS_EMPTY\",message:\"All fields are empty. Cannot tokenize empty card fields.\"},HOSTED_FIELDS_FIELDS_INVALID:{type:e.types.CUSTOMER,code:\"HOSTED_FIELDS_FIELDS_INVALID\",message:\"Some payment input fields are invalid. Cannot tokenize invalid card fields.\"},HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED:{type:e.types.MERCHANT,code:\"HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED\"},HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED:{type:e.types.MERCHANT,code:\"HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED\"},HOSTED_FIELDS_FIELD_PROPERTY_INVALID:{type:e.types.MERCHANT,code:\"HOSTED_FIELDS_FIELD_PROPERTY_INVALID\"}}},{\"../../lib/braintree-error\":87}],78:[function(e,t,n){\"use strict\";t.exports=function(e,t){for(var n=e.parentNode,r=[];null!=n;)null!=n.tagName&&n.tagName.toLowerCase()===t&&r.push(n),n=n.parentNode;return r}},{}],79:[function(e,t,n){\"use strict\";var o=e(\"./browser-detection\"),s=e(\"@braintree/class-list\"),e=e(\"./constants\"),r=Object.keys(e.allowedFields),i=e.navigationDirections,a={generate:function(e,t,n,r){var i=document.createElement(\"input\");return o.hasSoftwareKeyboard()||o.isFirefox()||o.isIE()?(i.setAttribute(\"aria-hidden\",\"true\"),i.setAttribute(\"autocomplete\",\"off\"),i.setAttribute(\"data-braintree-direction\",n),i.setAttribute(\"data-braintree-type\",t),i.setAttribute(\"id\",\"bt-\"+t+\"-\"+n+\"-\"+e),i.setAttribute(\"style\",JSON.stringify({border:\"none !important\",display:\"block !important\",height:\"1px !important\",left:\"-1px !important\",opacity:\"0 !important\",position:\"absolute !important\",top:\"-1px !important\",width:\"1px !important\"}).replace(/[{}\"]/g,\"\").replace(/,/g,\";\")),s.add(i,\"focus-intercept\"),i.addEventListener(\"focus\",function(e){r(e),o.hasSoftwareKeyboard()||i.blur()}),i):document.createDocumentFragment()},destroy:function(e){var t=e?[document.getElementById(e)]:(t=document.querySelectorAll(\"[data-braintree-direction]\"),[].slice.call(t));t.forEach(function(e){e&&1===e.nodeType&&a.matchFocusElement(e.getAttribute(\"id\"))&&e.parentNode.removeChild(e)})},matchFocusElement:function(e){var t,n;return!!e&&(!((e=e.split(\"-\")).length<4)&&(t=\"bt\"===e[0],n=-1<r.indexOf(e[1]),e=e[2]===i.BACK||e[2]===i.FORWARD,Boolean(t&&n&&e)))}};t.exports=a},{\"./browser-detection\":75,\"./constants\":76,\"@braintree/class-list\":30}],80:[function(e,t,n){\"use strict\";var r=e(\"credit-card-type\");t.exports=function(e){e=r(e);return e.forEach(function(e){\"mastercard\"===e.type&&(e.type=\"master-card\")}),e}},{\"credit-card-type\":42}],81:[function(e,t,n){\"use strict\";var o=e(\"./create-authorization-data\"),s=e(\"./json-clone\"),a=e(\"./constants\");t.exports=function(e,t){var n,r=t?s(t):{},t=o(e.authorization).attrs,i=s(e.analyticsMetadata);for(n in r.braintreeLibraryVersion=a.BRAINTREE_LIBRARY_VERSION,r._meta)r._meta.hasOwnProperty(n)&&(i[n]=r._meta[n]);return r._meta=i,t.tokenizationKey?r.tokenizationKey=t.tokenizationKey:r.authorizationFingerprint=t.authorizationFingerprint,r}},{\"./constants\":88,\"./create-authorization-data\":91,\"./json-clone\":98}],82:[function(e,t,n){\"use strict\";var r=e(\"./promise\"),a=e(\"./constants\"),c=e(\"./add-metadata\");t.exports={sendEvent:function(e,i,o){var s=Date.now();return r.resolve(e).then(function(e){var t=Date.now(),n=e.getConfiguration(),e=e._request,r=n.gatewayConfiguration.analytics.url,t={analytics:[{kind:a.ANALYTICS_PREFIX+i,isAsync:Math.floor(t/1e3)!==Math.floor(s/1e3),timestamp:s}]};e({url:r,method:\"post\",data:c(n,t),timeout:a.ANALYTICS_REQUEST_TIMEOUT_MS},o)}).catch(function(e){o&&o(e)})}}},{\"./add-metadata\":81,\"./constants\":88,\"./promise\":101}],83:[function(e,t,n){\"use strict\";e=e(\"@braintree/asset-loader/load-script\");t.exports={loadScript:e}},{\"@braintree/asset-loader/load-script\":3}],84:[function(e,t,n){\"use strict\";var r=\"function\"==typeof Object.assign?Object.assign:i;function i(e){for(var t,n,r=1;r<arguments.length;r++)for(n in t=arguments[r])t.hasOwnProperty(n)&&(e[n]=t[n]);return e}t.exports={assign:r,_assign:i}},{}],85:[function(e,t,n){\"use strict\";var r=e(\"./braintree-error\"),i=e(\"./promise\"),o=e(\"./errors\");t.exports={verify:function(e){var t,n;return e?(n=e.name,t=e.client,e=e.authorization,t||e?e||\"3.91.0\"===t.getVersion()?i.resolve():i.reject(new r({type:o.INCOMPATIBLE_VERSIONS.type,code:o.INCOMPATIBLE_VERSIONS.code,message:\"Client (version \"+t.getVersion()+\") and \"+n+\" (version 3.91.0) components must be from the same SDK version.\"})):i.reject(new r({type:o.INSTANTIATION_OPTION_REQUIRED.type,code:o.INSTANTIATION_OPTION_REQUIRED.code,message:\"options.client is required when instantiating \"+n+\".\"}))):i.reject(new r({type:o.INVALID_USE_OF_INTERNAL_FUNCTION.type,code:o.INVALID_USE_OF_INTERNAL_FUNCTION.code,message:\"Options must be passed to basicComponentVerification function.\"}))}}},{\"./braintree-error\":87,\"./errors\":95,\"./promise\":101}],86:[function(e,t,n){\"use strict\";var u=e(\"./once\");t.exports=function(e,t){var n,r,i,o=e.length,s=o,a=u(t);if(0===o)a(null);else for(n=0;n<o;n++)r=e[n],i=c,0===r.length?(r(),i(null)):r(i);function c(e){e?a(e):0===--s&&a(null)}}},{\"./once\":100}],87:[function(e,t,n){\"use strict\";e=e(\"./enumerate\");function r(e){if(!r.types.hasOwnProperty(e.type))throw new Error(e.type+\" is not a valid type.\");if(!e.code)throw new Error(\"Error code required.\");if(!e.message)throw new Error(\"Error message required.\");this.name=\"BraintreeError\",this.code=e.code,this.message=e.message,this.type=e.type,this.details=e.details}((r.prototype=Object.create(Error.prototype)).constructor=r).types=e([\"CUSTOMER\",\"MERCHANT\",\"NETWORK\",\"INTERNAL\",\"UNKNOWN\"]),r.findRootError=function(e){return e instanceof r&&e.details&&e.details.originalError?r.findRootError(e.details.originalError):e},t.exports=r},{\"./enumerate\":94}],88:[function(e,t,n){\"use strict\";t.exports={ANALYTICS_PREFIX:\"web.\",ANALYTICS_REQUEST_TIMEOUT_MS:2e3,ASSETS_URLS:{production:\"https://assets.braintreegateway.com\",sandbox:\"https://assets.braintreegateway.com\"},CLIENT_API_URLS:{production:\"https://api.braintreegateway.com:443\",sandbox:\"https://api.sandbox.braintreegateway.com:443\"},FRAUDNET_SOURCE:\"BRAINTREE_SIGNIN\",FRAUDNET_FNCLS:\"fnparams-dede7cc5-15fd-4c75-a9f4-36c430ee3a99\",FRAUDNET_URL:\"https://c.paypal.com/da/r/fb.js\",BUS_CONFIGURATION_REQUEST_EVENT:\"BUS_CONFIGURATION_REQUEST\",GRAPHQL_URLS:{production:\"https://payments.braintree-api.com/graphql\",sandbox:\"https://payments.sandbox.braintree-api.com/graphql\"},INTEGRATION_TIMEOUT_MS:6e4,VERSION:\"3.91.0\",INTEGRATION:\"custom\",SOURCE:\"client\",PLATFORM:\"web\",BRAINTREE_LIBRARY_VERSION:\"braintree/web/3.91.0\"}},{}],89:[function(e,t,n){\"use strict\";var r=e(\"./braintree-error\"),i=e(\"./errors\");t.exports=function(t,e){e.forEach(function(e){t[e]=function(){throw new r({type:i.METHOD_CALLED_AFTER_TEARDOWN.type,code:i.METHOD_CALLED_AFTER_TEARDOWN.code,message:e+\" cannot be called after teardown.\"})}})}},{\"./braintree-error\":87,\"./errors\":95}],90:[function(e,t,n){\"use strict\";var r=e(\"./constants\").ASSETS_URLS;t.exports={create:function(e){return r.production}}},{\"./constants\":88}],91:[function(e,t,n){\"use strict\";var i=e(\"../lib/vendor/polyfill\").atob,o=e(\"../lib/constants\").CLIENT_API_URLS;t.exports=function(e){var t,n,r={attrs:{},configUrl:\"\"};return/^[a-zA-Z0-9]+_[a-zA-Z0-9]+_[a-zA-Z0-9_]+$/.test(e)?(n=(t=(t=e).split(\"_\"))[0],t={merchantId:t.slice(2).join(\"_\"),environment:n},r.environment=t.environment,r.attrs.tokenizationKey=e,r.configUrl=o[t.environment]+\"/merchants/\"+t.merchantId+\"/client_api/v1/configuration\"):(n=JSON.parse(i(e)),r.environment=n.environment,r.attrs.authorizationFingerprint=n.authorizationFingerprint,r.configUrl=n.configUrl,r.graphQL=n.graphQL),r}},{\"../lib/constants\":88,\"../lib/vendor/polyfill\":104}],92:[function(e,t,n){\"use strict\";var r=e(\"./braintree-error\"),i=e(\"./promise\"),o=e(\"./assets\"),s=e(\"./errors\"),a=\"3.91.0\";t.exports={create:function(e){var t=i.resolve();return e.client?i.resolve(e.client):(t=window.braintree&&window.braintree.client?t:o.loadScript({src:e.assetsUrl+\"/web/\"+a+\"/js/client.min.js\"}).catch(function(e){return i.reject(new r({type:s.CLIENT_SCRIPT_FAILED_TO_LOAD.type,code:s.CLIENT_SCRIPT_FAILED_TO_LOAD.code,message:s.CLIENT_SCRIPT_FAILED_TO_LOAD.message,details:{originalError:e}}))})).then(function(){return window.braintree.client.VERSION!==a?i.reject(new r({type:s.INCOMPATIBLE_VERSIONS.type,code:s.INCOMPATIBLE_VERSIONS.code,message:\"Client (version \"+window.braintree.client.VERSION+\") and \"+e.name+\" (version \"+a+\") components must be from the same SDK version.\"})):window.braintree.client.create({authorization:e.authorization,debug:e.debug})})}}},{\"./assets\":83,\"./braintree-error\":87,\"./errors\":95,\"./promise\":101}],93:[function(e,t,n){\"use strict\";var r=e(\"./batch-execute-functions\");function i(){this._teardownRegistry=[],this._isTearingDown=!1}i.prototype.registerFunctionForTeardown=function(e){\"function\"==typeof e&&this._teardownRegistry.push(e)},i.prototype.teardown=function(t){this._isTearingDown?t(new Error(\"Destructor is already tearing down\")):(this._isTearingDown=!0,r(this._teardownRegistry,function(e){this._teardownRegistry=[],this._isTearingDown=!1,\"function\"==typeof t&&t(e)}.bind(this)))},t.exports=i},{\"./batch-execute-functions\":86}],94:[function(e,t,n){\"use strict\";t.exports=function(e,n){return n=null==n?\"\":n,e.reduce(function(e,t){return e[t]=n+t,e},{})}},{}],95:[function(e,t,n){\"use strict\";e=e(\"./braintree-error\");t.exports={INVALID_USE_OF_INTERNAL_FUNCTION:{type:e.types.INTERNAL,code:\"INVALID_USE_OF_INTERNAL_FUNCTION\"},INSTANTIATION_OPTION_REQUIRED:{type:e.types.MERCHANT,code:\"INSTANTIATION_OPTION_REQUIRED\"},INCOMPATIBLE_VERSIONS:{type:e.types.MERCHANT,code:\"INCOMPATIBLE_VERSIONS\"},CLIENT_SCRIPT_FAILED_TO_LOAD:{type:e.types.NETWORK,code:\"CLIENT_SCRIPT_FAILED_TO_LOAD\",message:\"Braintree client script could not be loaded.\"},METHOD_CALLED_AFTER_TEARDOWN:{type:e.types.MERCHANT,code:\"METHOD_CALLED_AFTER_TEARDOWN\"}}},{\"./braintree-error\":87}],96:[function(e,t,n){\"use strict\";t.exports=function(e){for(;e.parentNode;)e=e.parentNode;return e}},{}],97:[function(e,t,n){\"use strict\";var r,i={\"paypal.com\":1,\"braintreepayments.com\":1,\"braintreegateway.com\":1,\"braintree-api.com\":1};t.exports=function(e){return e=e.toLowerCase(),!!/^https:/.test(e)&&((r=r||document.createElement(\"a\")).href=e,e=r.hostname.split(\".\").slice(-2).join(\".\"),i.hasOwnProperty(e))}},{}],98:[function(e,t,n){\"use strict\";t.exports=function(e){return JSON.parse(JSON.stringify(e))}},{}],99:[function(e,t,n){\"use strict\";t.exports=function(t){return Object.keys(t).filter(function(e){return\"function\"==typeof t[e]})}},{}],100:[function(e,t,n){\"use strict\";t.exports=function(e){var t=!1;return function(){t||(t=!0,e.apply(null,arguments))}}},{}],101:[function(e,t,n){\"use strict\";var r=e(\"promise-polyfill\"),e=e(\"@braintree/extended-promise\"),r=\"undefined\"!=typeof Promise?Promise:r;e.suppressUnhandledPromiseMessage=!0,e.setPromise(r),t.exports=r},{\"@braintree/extended-promise\":32,\"promise-polyfill\":64}],102:[function(e,t,n){\"use strict\";var c=e(\"@braintree/uuid\"),u=e(\"./find-root-node\");function d(e){return\"[object ShadowRoot]\"===(e=u(e)).toString()}function l(e){return d(e=u(e))?e.host:null}t.exports={isShadowElement:d,getShadowHost:l,transformToSlot:function e(t,n){var r=u(t).querySelector(\"style\"),i=l(t),o=\"shadow-slot-\"+c(),s=document.createElement(\"slot\"),a=document.createElement(\"div\");return s.setAttribute(\"name\",o),t.appendChild(s),a.setAttribute(\"slot\",o),i.appendChild(a),n&&(r||(r=document.createElement(\"style\"),t.appendChild(r)),r.sheet.insertRule('::slotted([slot=\"'+o+'\"]) { '+n+\" }\")),d(i)?e(a,n):a}}},{\"./find-root-node\":96,\"@braintree/uuid\":37}],103:[function(e,t,n){\"use strict\";t.exports=function(e){return e?\"\":\".min\"}},{}],104:[function(e,t,n){\"use strict\";var r=\"function\"==typeof atob?atob:i;function i(e){var t,n,r,i,o,s=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",a=\"\";if(!new RegExp(\"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})([=]{1,2})?$\").test(e))throw new Error(\"Non base64 encoded input passed to window.atob polyfill\");for(o=0;n=s.indexOf(e.charAt(o++)),t=(15&(r=s.indexOf(e.charAt(o++))))<<4|(i=s.indexOf(e.charAt(o++)))>>2&15,i=(3&i)<<6|63&s.indexOf(e.charAt(o++)),a+=String.fromCharCode((63&n)<<2|r>>4&3)+(t?String.fromCharCode(t):\"\")+(i?String.fromCharCode(i):\"\"),o<e.length;);return a}t.exports={atob:function(e){return r.call(window,e)},_atob:i}},{}]},{},[74])(74)});","!function(e){var t;\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):((t=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).braintree||(t.braintree={})).applePay=e()}(function(){return function n(o,i,a){function s(t,e){if(!i[t]){if(!o[t]){var r=\"function\"==typeof require&&require;if(!e&&r)return r(t,!0);if(c)return c(t,!0);throw(e=new Error(\"Cannot find module '\"+t+\"'\")).code=\"MODULE_NOT_FOUND\",e}r=i[t]={exports:{}},o[t][0].call(r.exports,function(e){return s(o[t][1][e]||e)},r,r.exports,n,o,i,a)}return i[t].exports}for(var c=\"function\"==typeof require&&require,e=0;e<a.length;e++)s(a[e]);return s}({1:[function(e,t,r){\"use strict\";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},n=(Object.defineProperty(r,\"__esModule\",{value:!0}),r.PromiseGlobal=void 0,n(e(\"promise-polyfill\"))),e=\"undefined\"!=typeof Promise?Promise:n.default;r.PromiseGlobal=e},{\"promise-polyfill\":9}],2:[function(e,t,r){\"use strict\";var a=e(\"./lib/promise\"),s={};function n(r){var e,n,t,o,i=JSON.stringify(r);return!r.forceScriptReload&&(e=s[i])||(n=document.createElement(\"script\"),t=r.dataAttributes||{},o=r.container||document.head,n.src=r.src,n.id=r.id||\"\",n.async=!0,r.crossorigin&&n.setAttribute(\"crossorigin\",\"\"+r.crossorigin),Object.keys(t).forEach(function(e){n.setAttribute(\"data-\"+e,\"\"+t[e])}),e=new a.PromiseGlobal(function(e,t){n.addEventListener(\"load\",function(){e(n)}),n.addEventListener(\"error\",function(){t(new Error(r.src+\" failed to load.\"))}),n.addEventListener(\"abort\",function(){t(new Error(r.src+\" has aborted.\"))}),o.appendChild(n)}),s[i]=e),e}n.clearCache=function(){s={}},t.exports=n},{\"./lib/promise\":1}],3:[function(e,t,r){t.exports=e(\"./dist/load-script\")},{\"./dist/load-script\":2}],4:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Promise?Promise:null,n=(o.defaultOnResolve=function(e){return o.Promise.resolve(e)},o.defaultOnReject=function(e){return o.Promise.reject(e)},o.setPromise=function(e){o.Promise=e},o.shouldCatchExceptions=function(e){return e.hasOwnProperty(\"suppressUnhandledPromiseMessage\")?Boolean(e.suppressUnhandledPromiseMessage):Boolean(o.suppressUnhandledPromiseMessage)},o.all=function(e){return o.Promise.all(e)},o.allSettled=function(e){return o.Promise.allSettled(e)},o.race=function(e){return o.Promise.race(e)},o.reject=function(e){return o.Promise.reject(e)},o.resolve=function(e){return o.Promise.resolve(e)},o.prototype.then=function(){for(var e,t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return(e=this._promise).then.apply(e,t)},o.prototype.catch=function(){for(var e,t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return(e=this._promise).catch.apply(e,t)},o.prototype.resolve=function(e){var t=this;return this.isFulfilled||(this._setResolved(),o.Promise.resolve().then(function(){return t._onResolve(e)}).then(function(e){t._resolveFunction(e)}).catch(function(e){t._resetState(),t.reject(e)})),this},o.prototype.reject=function(e){var t=this;return this.isFulfilled||(this._setRejected(),o.Promise.resolve().then(function(){return t._onReject(e)}).then(function(e){t._setResolved(),t._resolveFunction(e)}).catch(function(e){return t._rejectFunction(e)})),this},o.prototype._resetState=function(){this.isFulfilled=!1,this.isResolved=!1,this.isRejected=!1},o.prototype._setResolved=function(){this.isFulfilled=!0,this.isResolved=!0,this.isRejected=!1},o.prototype._setRejected=function(){this.isFulfilled=!0,this.isResolved=!1,this.isRejected=!0},o.Promise=n,o);function o(e){var r=this;\"function\"==typeof e?this._promise=new o.Promise(e):(this._promise=new o.Promise(function(e,t){r._resolveFunction=e,r._rejectFunction=t}),this._onResolve=(e=e||{}).onResolve||o.defaultOnResolve,this._onReject=e.onReject||o.defaultOnReject,o.shouldCatchExceptions(e)&&this._promise.catch(function(){}),this._resetState())}t.exports=n},{}],5:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.deferred=function(r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];setTimeout(function(){try{r.apply(void 0,e)}catch(e){console.log(\"Error in callback function\"),console.log(e)}},1)}}},{}],6:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.once=function(r){var n=!1;return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];n||(n=!0,r.apply(void 0,e))}}},{}],7:[function(e,t,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.promiseOrCallback=function(e,t){if(!t)return e;e.then(function(e){return t(null,e)}).catch(function(e){return t(e)})}},{}],8:[function(e,t,r){\"use strict\";var o=e(\"./lib/deferred\"),i=e(\"./lib/once\"),a=e(\"./lib/promise-or-callback\");function s(n){return function(){for(var e,t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return\"function\"==typeof t[t.length-1]&&(e=t.pop(),e=i.once(o.deferred(e))),a.promiseOrCallback(n.apply(this,t),e)}}s.wrapPrototype=function(n,e){var o=(e=void 0===e?{}:e).ignoreMethods||[],i=!0===e.transformPrivateMethods;return Object.getOwnPropertyNames(n.prototype).filter(function(e){var t=\"constructor\"!==e&&\"function\"==typeof n.prototype[e],r=-1===o.indexOf(e),e=i||\"_\"!==e.charAt(0);return t&&e&&r}).forEach(function(e){var t=n.prototype[e];n.prototype[e]=s(t)}),n},t.exports=s},{\"./lib/deferred\":5,\"./lib/once\":6,\"./lib/promise-or-callback\":7}],9:[function(e,t,r){\"use strict\";var n=setTimeout;function c(e){return Boolean(e&&void 0!==e.length)}function o(){}function i(e){if(!(this instanceof i))throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof e)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],f(e,this)}function a(r,n){for(;3===r._state;)r=r._value;0===r._state?r._deferreds.push(n):(r._handled=!0,i._immediateFn(function(){var e,t=1===r._state?n.onFulfilled:n.onRejected;if(null===t)(1===r._state?s:u)(n.promise,r._value);else{try{e=t(r._value)}catch(e){return void u(n.promise,e)}s(n.promise,e)}}))}function s(t,e){try{if(e===t)throw new TypeError(\"A promise cannot be resolved with itself.\");if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var r=e.then;if(e instanceof i)return t._state=3,t._value=e,void l(t);if(\"function\"==typeof r)return void f((n=r,o=e,function(){n.apply(o,arguments)}),t)}t._state=1,t._value=e,l(t)}catch(e){u(t,e)}var n,o}function u(e,t){e._state=2,e._value=t,l(e)}function l(e){2===e._state&&0===e._deferreds.length&&i._immediateFn(function(){e._handled||i._unhandledRejectionFn(e._value)});for(var t=0,r=e._deferreds.length;t<r;t++)a(e,e._deferreds[t]);e._deferreds=null}function p(e,t,r){this.onFulfilled=\"function\"==typeof e?e:null,this.onRejected=\"function\"==typeof t?t:null,this.promise=r}function f(e,t){var r=!1;try{e(function(e){r||(r=!0,s(t,e))},function(e){r||(r=!0,u(t,e))})}catch(e){r||(r=!0,u(t,e))}}i.prototype.catch=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var r=new this.constructor(o);return a(this,new p(e,t,r)),r},i.prototype.finally=function(t){var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){return r.reject(e)})})},i.all=function(t){return new i(function(o,i){if(!c(t))return i(new TypeError(\"Promise.all accepts an array\"));var a=Array.prototype.slice.call(t);if(0===a.length)return o([]);var s=a.length;for(var e=0;e<a.length;e++)!function t(r,e){try{if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var n=e.then;if(\"function\"==typeof n)return void n.call(e,function(e){t(r,e)},i)}a[r]=e,0==--s&&o(a)}catch(e){i(e)}}(e,a[e])})},i.allSettled=function(r){return new this(function(o,e){if(!r||void 0===r.length)return e(new TypeError(typeof r+\" \"+r+\" is not iterable(cannot read property Symbol(Symbol.iterator))\"));var i=Array.prototype.slice.call(r);if(0===i.length)return o([]);var a=i.length;for(var t=0;t<i.length;t++)!function t(r,e){if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var n=e.then;if(\"function\"==typeof n)return void n.call(e,function(e){t(r,e)},function(e){i[r]={status:\"rejected\",reason:e},0==--a&&o(i)})}i[r]={status:\"fulfilled\",value:e},0==--a&&o(i)}(t,i[t])})},i.resolve=function(t){return t&&\"object\"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(r){return new i(function(e,t){t(r)})},i.race=function(o){return new i(function(e,t){if(!c(o))return t(new TypeError(\"Promise.race accepts an array\"));for(var r=0,n=o.length;r<n;r++)i.resolve(o[r]).then(e,t)})},i._immediateFn=\"function\"==typeof setImmediate?function(e){setImmediate(e)}:function(e){n(e,0)},i._unhandledRejectionFn=function(e){\"undefined\"!=typeof console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",e)},t.exports=i},{}],10:[function(e,t,r){\"use strict\";var n=e(\"../lib/braintree-error\"),o=e(\"../lib/analytics\"),i=e(\"./errors\"),a=e(\"../lib/promise\"),s=e(\"../lib/methods\"),c=e(\"../lib/convert-methods-to-error\"),e=e(\"@braintree/wrap-promise\");function u(e){this._instantiatedWithClient=Boolean(!e.useDeferredClient),this._client=e.client,this._createPromise=e.createPromise,this._client&&this._setMerchantIdentifier()}u.prototype._waitForClient=function(){return this._client?a.resolve():this._createPromise.then(function(e){this._client=e,this._setMerchantIdentifier()}.bind(this))},u.prototype._setMerchantIdentifier=function(){var e=this._client.getConfiguration().gatewayConfiguration.applePayWeb;e&&Object.defineProperty(this,\"merchantIdentifier\",{value:e.merchantIdentifier,configurable:!1,writable:!1})},u.prototype.createPaymentRequest=function(e){return this._instantiatedWithClient?this._createPaymentRequestSynchronously(e):this._waitForClient().then(function(){return this._createPaymentRequestSynchronously(e)}.bind(this))},u.prototype._createPaymentRequestSynchronously=function(e){var t=this._client.getConfiguration().gatewayConfiguration.applePayWeb,t={countryCode:t.countryCode,currencyCode:t.currencyCode,merchantCapabilities:t.merchantCapabilities||[\"supports3DS\"],supportedNetworks:t.supportedNetworks.map(function(e){return\"mastercard\"===e?\"masterCard\":e})};return Object.assign({},t,e)},u.prototype.performValidation=function(t){var r=this;return t&&t.validationURL?this._waitForClient().then(function(){var e={validationUrl:t.validationURL,domainName:t.domainName||window.location.hostname,merchantIdentifier:t.merchantIdentifier||r.merchantIdentifier};return null!=t.displayName&&(e.displayName=t.displayName),r._client.request({method:\"post\",endpoint:\"apple_pay_web/sessions\",data:{_meta:{source:\"apple-pay\"},applePayWebSession:e}})}).then(function(e){return o.sendEvent(r._client,\"applepay.performValidation.succeeded\"),a.resolve(e)}).catch(function(e){return o.sendEvent(r._client,\"applepay.performValidation.failed\"),\"CLIENT_REQUEST_ERROR\"===e.code?a.reject(new n({type:i.APPLE_PAY_MERCHANT_VALIDATION_FAILED.type,code:i.APPLE_PAY_MERCHANT_VALIDATION_FAILED.code,message:i.APPLE_PAY_MERCHANT_VALIDATION_FAILED.message,details:{originalError:e.details.originalError}})):a.reject(new n({type:i.APPLE_PAY_MERCHANT_VALIDATION_NETWORK.type,code:i.APPLE_PAY_MERCHANT_VALIDATION_NETWORK.code,message:i.APPLE_PAY_MERCHANT_VALIDATION_NETWORK.message,details:{originalError:e}}))}):a.reject(new n(i.APPLE_PAY_VALIDATION_URL_REQUIRED))},u.prototype.tokenize=function(e){var t=this;return e.token?this._waitForClient().then(function(){return t._client.request({method:\"post\",endpoint:\"payment_methods/apple_payment_tokens\",data:{_meta:{source:\"apple-pay\"},applePaymentToken:Object.assign({},e.token,{paymentData:btoa(JSON.stringify(e.token.paymentData))})}})}).then(function(e){return o.sendEvent(t._client,\"applepay.tokenize.succeeded\"),a.resolve(e.applePayCards[0])}).catch(function(e){return o.sendEvent(t._client,\"applepay.tokenize.failed\"),a.reject(new n({type:i.APPLE_PAY_TOKENIZATION.type,code:i.APPLE_PAY_TOKENIZATION.code,message:i.APPLE_PAY_TOKENIZATION.message,details:{originalError:e}}))}):a.reject(new n(i.APPLE_PAY_PAYMENT_TOKEN_REQUIRED))},u.prototype.teardown=function(){return c(this,s(u.prototype)),a.resolve()},t.exports=e.wrapPrototype(u)},{\"../lib/analytics\":14,\"../lib/braintree-error\":17,\"../lib/convert-methods-to-error\":19,\"../lib/methods\":26,\"../lib/promise\":27,\"./errors\":11,\"@braintree/wrap-promise\":8}],11:[function(e,t,r){\"use strict\";e=e(\"../lib/braintree-error\");t.exports={APPLE_PAY_NOT_ENABLED:{type:e.types.MERCHANT,code:\"APPLE_PAY_NOT_ENABLED\",message:\"Apple Pay is not enabled for this merchant.\"},APPLE_PAY_VALIDATION_URL_REQUIRED:{type:e.types.MERCHANT,code:\"APPLE_PAY_VALIDATION_URL_REQUIRED\",message:\"performValidation must be called with a validationURL.\"},APPLE_PAY_MERCHANT_VALIDATION_NETWORK:{type:e.types.NETWORK,code:\"APPLE_PAY_MERCHANT_VALIDATION_NETWORK\",message:\"A network error occurred when validating the Apple Pay merchant.\"},APPLE_PAY_MERCHANT_VALIDATION_FAILED:{type:e.types.MERCHANT,code:\"APPLE_PAY_MERCHANT_VALIDATION_FAILED\",message:\"Make sure you have registered your domain name in the Braintree Control Panel.\"},APPLE_PAY_PAYMENT_TOKEN_REQUIRED:{type:e.types.MERCHANT,code:\"APPLE_PAY_PAYMENT_TOKEN_REQUIRED\",message:\"tokenize must be called with a payment token.\"},APPLE_PAY_TOKENIZATION:{type:e.types.NETWORK,code:\"APPLE_PAY_TOKENIZATION\",message:\"A network error occurred when processing the Apple Pay payment.\"}}},{\"../lib/braintree-error\":17}],12:[function(e,t,r){\"use strict\";var o=e(\"./apple-pay\"),i=e(\"../lib/analytics\"),a=e(\"../lib/braintree-error\"),s=e(\"../lib/basic-component-verification\"),c=e(\"../lib/create-assets-url\"),u=e(\"../lib/create-deferred-client\"),l=e(\"../lib/promise\"),p=e(\"./errors\"),e=e(\"@braintree/wrap-promise\");t.exports={create:e(function(r){var n=\"Apple Pay\";return s.verify({name:n,client:r.client,authorization:r.authorization}).then(function(){var t,e=u.create({authorization:r.authorization,client:r.client,debug:r.debug,assetsUrl:c.create(r.authorization),name:n}).then(function(e){return e.getConfiguration().gatewayConfiguration.applePayWeb?(i.sendEvent(e,\"applepay.initialized\"),e):l.reject(new a(p.APPLE_PAY_NOT_ENABLED))});return r.createPromise=e,t=new o(r),r.useDeferredClient?t:e.then(function(e){return t._client=e,t})})}),VERSION:\"3.91.0\"}},{\"../lib/analytics\":14,\"../lib/basic-component-verification\":16,\"../lib/braintree-error\":17,\"../lib/create-assets-url\":20,\"../lib/create-deferred-client\":22,\"../lib/promise\":27,\"./apple-pay\":10,\"./errors\":11,\"@braintree/wrap-promise\":8}],13:[function(e,t,r){\"use strict\";var i=e(\"./create-authorization-data\"),a=e(\"./json-clone\"),s=e(\"./constants\");t.exports=function(e,t){var r,n=t?a(t):{},t=i(e.authorization).attrs,o=a(e.analyticsMetadata);for(r in n.braintreeLibraryVersion=s.BRAINTREE_LIBRARY_VERSION,n._meta)n._meta.hasOwnProperty(r)&&(o[r]=n._meta[r]);return n._meta=o,t.tokenizationKey?n.tokenizationKey=t.tokenizationKey:n.authorizationFingerprint=t.authorizationFingerprint,n}},{\"./constants\":18,\"./create-authorization-data\":21,\"./json-clone\":25}],14:[function(e,t,r){\"use strict\";var n=e(\"./promise\"),s=e(\"./constants\"),c=e(\"./add-metadata\");t.exports={sendEvent:function(e,o,i){var a=Date.now();return n.resolve(e).then(function(e){var t=Date.now(),r=e.getConfiguration(),e=e._request,n=r.gatewayConfiguration.analytics.url,t={analytics:[{kind:s.ANALYTICS_PREFIX+o,isAsync:Math.floor(t/1e3)!==Math.floor(a/1e3),timestamp:a}]};e({url:n,method:\"post\",data:c(r,t),timeout:s.ANALYTICS_REQUEST_TIMEOUT_MS},i)}).catch(function(e){i&&i(e)})}}},{\"./add-metadata\":13,\"./constants\":18,\"./promise\":27}],15:[function(e,t,r){\"use strict\";e=e(\"@braintree/asset-loader/load-script\");t.exports={loadScript:e}},{\"@braintree/asset-loader/load-script\":3}],16:[function(e,t,r){\"use strict\";var n=e(\"./braintree-error\"),o=e(\"./promise\"),i=e(\"./errors\");t.exports={verify:function(e){var t,r;return e?(r=e.name,t=e.client,e=e.authorization,t||e?e||\"3.91.0\"===t.getVersion()?o.resolve():o.reject(new n({type:i.INCOMPATIBLE_VERSIONS.type,code:i.INCOMPATIBLE_VERSIONS.code,message:\"Client (version \"+t.getVersion()+\") and \"+r+\" (version 3.91.0) components must be from the same SDK version.\"})):o.reject(new n({type:i.INSTANTIATION_OPTION_REQUIRED.type,code:i.INSTANTIATION_OPTION_REQUIRED.code,message:\"options.client is required when instantiating \"+r+\".\"}))):o.reject(new n({type:i.INVALID_USE_OF_INTERNAL_FUNCTION.type,code:i.INVALID_USE_OF_INTERNAL_FUNCTION.code,message:\"Options must be passed to basicComponentVerification function.\"}))}}},{\"./braintree-error\":17,\"./errors\":24,\"./promise\":27}],17:[function(e,t,r){\"use strict\";e=e(\"./enumerate\");function n(e){if(!n.types.hasOwnProperty(e.type))throw new Error(e.type+\" is not a valid type.\");if(!e.code)throw new Error(\"Error code required.\");if(!e.message)throw new Error(\"Error message required.\");this.name=\"BraintreeError\",this.code=e.code,this.message=e.message,this.type=e.type,this.details=e.details}((n.prototype=Object.create(Error.prototype)).constructor=n).types=e([\"CUSTOMER\",\"MERCHANT\",\"NETWORK\",\"INTERNAL\",\"UNKNOWN\"]),n.findRootError=function(e){return e instanceof n&&e.details&&e.details.originalError?n.findRootError(e.details.originalError):e},t.exports=n},{\"./enumerate\":23}],18:[function(e,t,r){\"use strict\";t.exports={ANALYTICS_PREFIX:\"web.\",ANALYTICS_REQUEST_TIMEOUT_MS:2e3,ASSETS_URLS:{production:\"https://assets.braintreegateway.com\",sandbox:\"https://assets.braintreegateway.com\"},CLIENT_API_URLS:{production:\"https://api.braintreegateway.com:443\",sandbox:\"https://api.sandbox.braintreegateway.com:443\"},FRAUDNET_SOURCE:\"BRAINTREE_SIGNIN\",FRAUDNET_FNCLS:\"fnparams-dede7cc5-15fd-4c75-a9f4-36c430ee3a99\",FRAUDNET_URL:\"https://c.paypal.com/da/r/fb.js\",BUS_CONFIGURATION_REQUEST_EVENT:\"BUS_CONFIGURATION_REQUEST\",GRAPHQL_URLS:{production:\"https://payments.braintree-api.com/graphql\",sandbox:\"https://payments.sandbox.braintree-api.com/graphql\"},INTEGRATION_TIMEOUT_MS:6e4,VERSION:\"3.91.0\",INTEGRATION:\"custom\",SOURCE:\"client\",PLATFORM:\"web\",BRAINTREE_LIBRARY_VERSION:\"braintree/web/3.91.0\"}},{}],19:[function(e,t,r){\"use strict\";var n=e(\"./braintree-error\"),o=e(\"./errors\");t.exports=function(t,e){e.forEach(function(e){t[e]=function(){throw new n({type:o.METHOD_CALLED_AFTER_TEARDOWN.type,code:o.METHOD_CALLED_AFTER_TEARDOWN.code,message:e+\" cannot be called after teardown.\"})}})}},{\"./braintree-error\":17,\"./errors\":24}],20:[function(e,t,r){\"use strict\";var n=e(\"./constants\").ASSETS_URLS;t.exports={create:function(e){return n.production}}},{\"./constants\":18}],21:[function(e,t,r){\"use strict\";var o=e(\"../lib/vendor/polyfill\").atob,i=e(\"../lib/constants\").CLIENT_API_URLS;t.exports=function(e){var t,r,n={attrs:{},configUrl:\"\"};return/^[a-zA-Z0-9]+_[a-zA-Z0-9]+_[a-zA-Z0-9_]+$/.test(e)?(r=(t=(t=e).split(\"_\"))[0],t={merchantId:t.slice(2).join(\"_\"),environment:r},n.environment=t.environment,n.attrs.tokenizationKey=e,n.configUrl=i[t.environment]+\"/merchants/\"+t.merchantId+\"/client_api/v1/configuration\"):(r=JSON.parse(o(e)),n.environment=r.environment,n.attrs.authorizationFingerprint=r.authorizationFingerprint,n.configUrl=r.configUrl,n.graphQL=r.graphQL),n}},{\"../lib/constants\":18,\"../lib/vendor/polyfill\":28}],22:[function(e,t,r){\"use strict\";var n=e(\"./braintree-error\"),o=e(\"./promise\"),i=e(\"./assets\"),a=e(\"./errors\"),s=\"3.91.0\";t.exports={create:function(e){var t=o.resolve();return e.client?o.resolve(e.client):(t=window.braintree&&window.braintree.client?t:i.loadScript({src:e.assetsUrl+\"/web/\"+s+\"/js/client.min.js\"}).catch(function(e){return o.reject(new n({type:a.CLIENT_SCRIPT_FAILED_TO_LOAD.type,code:a.CLIENT_SCRIPT_FAILED_TO_LOAD.code,message:a.CLIENT_SCRIPT_FAILED_TO_LOAD.message,details:{originalError:e}}))})).then(function(){return window.braintree.client.VERSION!==s?o.reject(new n({type:a.INCOMPATIBLE_VERSIONS.type,code:a.INCOMPATIBLE_VERSIONS.code,message:\"Client (version \"+window.braintree.client.VERSION+\") and \"+e.name+\" (version \"+s+\") components must be from the same SDK version.\"})):window.braintree.client.create({authorization:e.authorization,debug:e.debug})})}}},{\"./assets\":15,\"./braintree-error\":17,\"./errors\":24,\"./promise\":27}],23:[function(e,t,r){\"use strict\";t.exports=function(e,r){return r=null==r?\"\":r,e.reduce(function(e,t){return e[t]=r+t,e},{})}},{}],24:[function(e,t,r){\"use strict\";e=e(\"./braintree-error\");t.exports={INVALID_USE_OF_INTERNAL_FUNCTION:{type:e.types.INTERNAL,code:\"INVALID_USE_OF_INTERNAL_FUNCTION\"},INSTANTIATION_OPTION_REQUIRED:{type:e.types.MERCHANT,code:\"INSTANTIATION_OPTION_REQUIRED\"},INCOMPATIBLE_VERSIONS:{type:e.types.MERCHANT,code:\"INCOMPATIBLE_VERSIONS\"},CLIENT_SCRIPT_FAILED_TO_LOAD:{type:e.types.NETWORK,code:\"CLIENT_SCRIPT_FAILED_TO_LOAD\",message:\"Braintree client script could not be loaded.\"},METHOD_CALLED_AFTER_TEARDOWN:{type:e.types.MERCHANT,code:\"METHOD_CALLED_AFTER_TEARDOWN\"}}},{\"./braintree-error\":17}],25:[function(e,t,r){\"use strict\";t.exports=function(e){return JSON.parse(JSON.stringify(e))}},{}],26:[function(e,t,r){\"use strict\";t.exports=function(t){return Object.keys(t).filter(function(e){return\"function\"==typeof t[e]})}},{}],27:[function(e,t,r){\"use strict\";var n=e(\"promise-polyfill\"),e=e(\"@braintree/extended-promise\"),n=\"undefined\"!=typeof Promise?Promise:n;e.suppressUnhandledPromiseMessage=!0,e.setPromise(n),t.exports=n},{\"@braintree/extended-promise\":4,\"promise-polyfill\":9}],28:[function(e,t,r){\"use strict\";var n=\"function\"==typeof atob?atob:o;function o(e){var t,r,n,o,i,a=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",s=\"\";if(!new RegExp(\"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})([=]{1,2})?$\").test(e))throw new Error(\"Non base64 encoded input passed to window.atob polyfill\");for(i=0;r=a.indexOf(e.charAt(i++)),t=(15&(n=a.indexOf(e.charAt(i++))))<<4|(o=a.indexOf(e.charAt(i++)))>>2&15,o=(3&o)<<6|63&a.indexOf(e.charAt(i++)),s+=String.fromCharCode((63&r)<<2|n>>4&3)+(t?String.fromCharCode(t):\"\")+(o?String.fromCharCode(o):\"\"),i<e.length;);return s}t.exports={atob:function(e){return n.call(window,e)},_atob:o}},{}]},{},[12])(12)});","/*\r\nSimpleYouTubePlayer\r\nby John E Maddox\r\n*/\r\n\r\n$(document).ready(function(){\r\nvar MOBILE_WIDTH_SIZE = 1; //change this value to make the Youtube video appear as a link instead in a modal. When its a link, it will try to open a phone app. We have changed this back to off/1 as Studio C would prefer a modal still on mobile\r\n\r\n // display video player\r\n $('#mList A').on('click',function(e){\r\n\r\n e.preventDefault();\r\n\r\n // get video url\r\n var u = $(this).attr('href');\r\n\r\n // display video or go to youtube depending on window size\r\n // this is an attempt to load videos on mobile devices in the youtube app\r\n if($(window).width() > MOBILE_WIDTH_SIZE){\r\n\r\n // get video id\r\n var i = u.substring(u.search('=')+1,u.length);\r\n\r\n // build player\r\n $('#mPlayer DIV').html('<iframe width=\"800\" height=\"450\" src=\"https://www.youtube.com/embed/' + i + '\" frameborder=\"0\" allowfullscreen></iframe>');\r\n\r\n // display player\r\n $('#mPlayer').fadeIn(500);\r\n\r\n }else{\r\n window.location.href = u;\r\n }\r\n }); // eof display player\r\n\r\n // hide video player\r\n $('#mPlayer').on('click',function(e){\r\n\r\n // hide player\r\n $('#mPlayer').fadeOut(500);\r\n\r\n // destroy player\r\n $('#mPlayer DIV').empty();\r\n\r\n }); // eof hide player\r\n\r\n //custom code, we need this as if you click video before the script above fully runs the user will just get sent to YT versus seeing the pop-up\r\n setTimeout(function () {\r\n $('.wait-till-loaded').css(\"pointer-events\", \"auto\"); //console.log('unlocking video'); }, 1000);\r\n });\r\n});\r\n","angular.module('st').requires.push('ngSanitize');\r\nangular.module('st').requires.push('AngularWebService');\r\nangular.module('st').requires.push('AngularMapService');\r\nangular.module('st').requires.push('AngularUtilityService');\r\nangular.module('st').requires.push('AngularGeoService');\r\n\r\n\r\n//console.info(\"load\", locationsMapCtrl);\r\nangular\r\n .module('st')\r\n .controller('locationsMapCtrl', locationsMapCtrl)\r\n .directive('ngEnter', function () {\r\n return function (scope, element, attrs) {\r\n element.bind(\"keydown keypress\", function (event) {\r\n if (event.which === 13) {\r\n scope.$apply(function () {\r\n scope.$eval(attrs.ngEnter);\r\n });\r\n\r\n event.preventDefault();\r\n }\r\n });\r\n };\r\n });\r\n\r\nlocationsMapCtrl.$inject = ['$scope', '$rootScope', '$sce', '$filter', 'WebService', 'MapService', 'UtilityService', 'GeoService'];\r\n\r\nfunction locationsMapCtrl($scope, $rootScope, $sce, $filter, WebService, MapService, UtilityService, GeoService) {\r\n var vm = this;\r\n\r\n console.info(\"locations ctrl\");\r\n\r\n vm.findNearMe = findNearMe;\r\n vm.getInputLocations = GetInputLocations;\r\n //vm.manualLocationCookie = '';\r\n vm.init = Init;\r\n\r\n var apiKey;\r\n var baseUrl;\r\n\r\n function Init(api, mapId, pageUrl, showAllLocations, items) {\r\n console.info(\"init items\", items);\r\n\r\n apiKey = api;\r\n baseUrl = pageUrl;\r\n\r\n GeoService.Init(api);\r\n InitMap(mapId);\r\n PlaceMarkers(items);\r\n }\r\n\r\n function InitMap(mapId) {\r\n var mapOptions = {\r\n center: new google.maps.LatLng(42.9564627, -85.7301286),\r\n zoom: 7,\r\n disableDefaultUI: true,\r\n gestureHandling: 'cooperative'\r\n };\r\n\r\n MapService.Init(mapId, mapOptions, baseUrl);\r\n }\r\n\r\n function PlaceMarkers(items) {\r\n items.forEach(function (item, i) {\r\n SetMarker(item);\r\n });\r\n }\r\n\r\n function findNearMe() {\r\n // TODO: make sure Near Me works with current location\r\n console.info(\"near me start\", GeoService);\r\n GeoService.GetUserLocation().then(function (result) {\r\n setLocation(result);\r\n });\r\n }\r\n\r\n function setLocation(result) {\r\n console.info(\"GetInputLocation\", result);\r\n\r\n locationData = {\r\n \"Latitude\": result.Latitude,\r\n \"Longitude\": result.Longitude,\r\n \"DiameterToSearch\": 100,\r\n \"Skip\": 0\r\n };\r\n\r\n retries = 0;\r\n\r\n var mapsPos = { lat: result.Latitude, lng: result.Longitude };\r\n\r\n MapService.SetCenter(mapsPos);\r\n }\r\n\r\n function SetMarker(item) {\r\n var directionsLink = \"http://maps.apple.com/?saddr=\" + item.Address + \" \" + item.Address2;\r\n\r\n var contentString = '\\\r\n <div class=\"info-window\">\\\r\n <div class=\"info-window-contain\">\\\r\n <span>' + item.LocationName + '</span>\\\r\n <p>' + item.Address + '<br />' + item.Address2 + '</p>\\\r\n <a href=\"' + directionsLink + '\" target=\"_blank\" class=\"contact-link\"><img src=\"/Assets/Celebration/Icons/location_small_white.svg\" /> Directions</a>\\\r\n <a href=\"' + item.PhoneNumber.split(\"-\").join(\"\") + '\" class=\"contact-link\"><img src=\"/Assets/Celebration/Icons/phone_small_white.svg\" /> ' + item.PhoneNumber + '</a>\\\r\n </div>\\\r\n </div>\\\r\n ';\r\n\r\n var latLng = item.GoogleMapUrl.split(\",\");\r\n var markerPos = { lat: parseFloat(latLng[0]), lng: parseFloat(latLng[1]) };\r\n\r\n console.info(\"marker\", markerPos);\r\n\r\n MapService.AddInfoMarker(markerPos, \"/assets/celebration/icons/movie_theater_map-pin.svg\", contentString);\r\n }\r\n\r\n var retries = 0;\r\n function GetInputLocations() {\r\n if (typeof (vm.userInputAddress) != 'undefined') {\r\n vm.locations = [];\r\n\r\n $rootScope.inputLocation = vm.userInputAddress;\r\n //if (navigator.cookieEnabled) document.cookie = vm.manualLocationCookie + '=' + vm.userInputAddress;\r\n\r\n console.info(\"GetInputLocations\", vm.userInputAddress);\r\n\r\n GeoService.GetInputLocation().then(function (result) {\r\n setLocation(result);\r\n }, function () {\r\n if (retries !== 5) {\r\n GetInputLocations();\r\n retries++;\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\n\r\n","angular.module('st').requires.push('ngSanitize');\r\n\r\nangular.module('st').config(['$locationProvider', function($locationProvider){\r\n // hack for html5Mode customization, this hack makes it so locationprovider can work without breaking non angulars route links by adding the \"target\" attribute to normal html a tags\r\n $('a').each(function(){\r\n $a = $(this);\r\n if ($a.is('[target]') || $a.is('[ng-href]')){\r\n } else {\r\n $a.attr('target', '_self');\r\n }\r\n });\r\n\r\n$locationProvider.html5Mode({\r\n enabled: true,\r\n requireBase: false\r\n })\r\n}])\r\n\r\n//console.info(\"load\", locationsListCtrl);\r\nangular.module('st').controller('locationsListCtrl', locationsListCtrl);\r\n\r\nlocationsListCtrl.$inject = ['$scope', '$rootScope', '$sce', '$filter', '$location'];\r\n\r\nfunction locationsListCtrl($scope, $rootScope, $sce, $filter, $location) {\r\n var vm = this;\r\n var queryLocation = $location.search().location;\r\n console.info(\"locations list ctrl\");\r\n\r\n $scope.regionSelector = queryLocation || \"default\";\r\n\r\n vm.changeRegion = function(newLocation) {\r\n console.log('new region', newLocation);\r\n $location.search('location', newLocation);\r\n };\r\n\r\n vm.init = function () {\r\n console.info(\"init\");\r\n }\r\n\r\n}\r\n\r\n\r\n","angular.module('st').controller('SyncDebuggerController', SyncDebuggerController);\r\nSyncDebuggerController.$inject = ['$scope', '$rootScope', '$sce', '$filter', '$http', '$q', '$timeout', '$interval'];\r\n\r\nfunction SyncDebuggerController($scope, $rootScope, $sce, $filter, $http, $q, $timeout, $interval) {\r\n var sdm = this;\r\n sdm.buttonSpinner = false;\r\n sdm.errorMessage = \"\";\r\n sdm.successMessage = \"\";\r\n sdm.alertCounter = 0;\r\n sdm.timerSpeed = 8;\r\n sdm.timermultiplerspeed = 4;\r\n sdm.alertVariable = 0;\r\n sdm.overviewWastTimeChecked = null;\r\n sdm.overviewLastSync = null;\r\n sdm.overviewLastSyncStart = null;\r\n sdm.overviewMissingIdsFromVistaCount = null;\r\n sdm.nonSyncingCount = null;\r\n sdm.overviewCinemas = null;\r\n sdm.overviewOldCinemas = null;\r\n sdm.currentSyncStatus = null;\r\n sdm.lastSyncTimeOld = null;\r\n sdm.cinemaconcessions = null;\r\n sdm.adminsettings = null;\r\n sdm.linkedAccountEmail = null;\r\n sdm.mylinkedaccounts = null;\r\n sdm.linkedtome = null;\r\n sdm.btsubscription = null;\r\n sdm.btsubscriptionid = null;\r\n\r\n const timer = ms => new Promise(res => setTimeout(res, ms));\r\n sdm.CINEMA_KEY = [{\r\n \"id\": \"001\",\r\n \"name\": \"\",\r\n \"enabled\": false,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"002\",\r\n \"name\": \"GR North\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"003\",\r\n \"name\": \"Crossroads\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"004\",\r\n \"name\": \"GR South\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"005\",\r\n \"name\": \"Rivertown\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"006\",\r\n \"name\": \"Lansing\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"007\",\r\n \"name\": \"Benton\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"008\",\r\n \"name\": \"Mt Pleasant\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"009\",\r\n \"name\": \"Carousel\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"010\",\r\n \"name\": \"\",\r\n \"enabled\": false,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"011\",\r\n \"name\": \"Getty\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"012\",\r\n \"name\": \"Meridian Mall\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"013\",\r\n \"name\": \"Studio Park/MT\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }];\r\n\r\n sdm.showJson = false;\r\n sdm.showtimeResponse = \"awaiting response\";\r\n sdm.tab = 1;\r\n sdm.lastshowtimes = false;\r\n sdm.oldshowtimes = null;\r\n sdm.oldshowtimescount = 0;\r\n sdm.oldshowtimeCinemas = [];\r\n sdm.missingshowtimes = null;\r\n sdm.processingsubscriptions = null;\r\n\r\n\r\nsdm.isFutureDate = function(date) {\r\nvar now = moment();\r\nvar date = moment(date);\r\nif (now > date) {\r\nreturn true;\r\n} else {\r\nreturn false;\r\n}\r\nconsole.log('date check');\r\nconsole.log(date);\r\n}\r\n\r\n\r\nsdm.getBTSub = function() {\r\n if (sdm.buttonLocksAndMessage()) {\r\n return;\r\n }\r\n if (!sdm.btsubscriptionid) {\r\n sdm.errorMessage =\"Enter BT Sub ID\";\r\n }\r\n sdm.btsubscription = null;\r\n\r\n getBTSubscription(sdm.btsubscriptionid)\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n console.log(r);\r\n var p = JSON.parse(r);\r\n if (p) {\r\n console.log(p);\r\n sdm.btsubscription = p;\r\n \r\n } else {\r\n sdm.errorMessage = \"Failed to get bt subscription\";\r\n }\r\n }\r\n })\r\n .catch(function(response) {\r\n sdm.errorMessage = 'something went wrong with the vip signups request. Contact support.';\r\n })\r\n .finally(function(response) {\r\n sdm.buttonSpinner = false;\r\n });\r\n}\r\n\r\n sdm.getVIPClass = function(user) {\r\n\r\n var btCount = 0;\r\n var vipCount = user.vippoints;\r\n\r\n _.forOwn(user.sub, function(value, key) { \r\n if (value) {\r\n ++btCount;\r\n }\r\n });\r\n\r\n if (btCount !== vipCount) {\r\n return \"problem\";\r\n } else {\r\n return \"okay\";\r\n }\r\n }\r\n\r\n sdm.getVIPSignUpsFn = function() {\r\n if (sdm.buttonLocksAndMessage()) {\r\n return;\r\n }\r\n sdm.processingsubscriptions = null;\r\n\r\n getVIPSignUps()\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n console.log(r);\r\n var p = JSON.parse(r);\r\n if (p) {\r\n console.log(p);\r\n sdm.processingsubscriptions = p;\r\n \r\n } else {\r\n sdm.errorMessage = \"Failed to get vip signups\";\r\n }\r\n }\r\n })\r\n .catch(function(response) {\r\n sdm.errorMessage = 'something went wrong with the vip signups request. Contact support.';\r\n })\r\n .finally(function(response) {\r\n sdm.buttonSpinner = false;\r\n });\r\n }\r\n\r\n sdm.setTab = function(newTab) {\r\n sdm.tab = newTab;\r\n };\r\n\r\n sdm.isSet = function(tabNum) {\r\n return sdm.tab === tabNum;\r\n };\r\n\r\n sdm.esttime = function(time) {\r\n return moment(time).tz('America/New_York').format('MM/DD/YYY h:mm A');\r\n }\r\n\r\n sdm.alertTimer = async function() {\r\n //console.log('start timer');\r\n for (sdm.alertVariable = 0; sdm.alertVariable <= sdm.timerSpeed * sdm.timermultiplerspeed; sdm.alertVariable++) {\r\n var multiplier = sdm.alertVariable === 0 ? 0 : (100 / (sdm.timerSpeed * sdm.timermultiplerspeed));\r\n var percent = 100 - (sdm.alertVariable * multiplier);\r\n //console.log(sdm.alertVariable, multiplier, percent);\r\n $scope.$applyAsync(sdm.alertCounter = percent);\r\n if (percent === 0) {\r\n $timeout(function() {\r\n $scope.$applyAsync(sdm.errorMessage = null);\r\n $scope.$applyAsync(sdm.successMessage = null);\r\n }, 1000 / sdm.timermultiplerspeed);\r\n }\r\n await timer(1000 / sdm.timermultiplerspeed);\r\n }\r\n }\r\n\r\n $scope.$watch('sdm.errorMessage', function(newValue, oldValue) {\r\n if (newValue) {\r\n sdm.alertTimer();\r\n // $timeout(function() {\r\n // $scope.$applyAsync(sdm.errorMessage = null);\r\n // }, sdm.timerSpeed * 1000);\r\n }\r\n }, true);\r\n $scope.$watch('sdm.successMessage', function(newValue, oldValue) {\r\n if (newValue) {\r\n sdm.alertTimer();\r\n // $timeout(function() {\r\n // $scope.$applyAsync(sdm.successMessage = null);\r\n // }, sdm.timerSpeed * 1000);\r\n }\r\n }, true);\r\n\r\n sdm.bytetomb = function(byte) {\r\n var mb = byte /1000000;\r\n var mbceil = Math.ceil(mb);\r\n var mbstring = String(mbceil).replace(/(.)(?=(\\d{3})+$)/g,'$1,');\r\n return mbstring + \" MB\";\r\n }\r\n\r\n sdm.getAdminSettings = function() {\r\n if (sdm.buttonLocksAndMessage()) {\r\n return;\r\n }\r\n sdm.adminsettings = null;\r\n getAdminSettings()\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n console.log(r);\r\n var p = JSON.parse(r);\r\n if (p) {\r\n sdm.adminsettings = p;\r\n console.log(p);\r\n } else {\r\n sdm.errorMessage = \"Failed to get admin settings.\";\r\n }\r\n }\r\n })\r\n .catch(function(response) {\r\n sdm.errorMessage = 'something went wrong with the admin settings request. Contact support.';\r\n })\r\n .finally(function(response) {\r\n\r\n });\r\n }\r\n\r\n getCinemaConcessionStatus = function() {\r\n getCinemaConcessions()\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n console.log(r);\r\n var p = JSON.parse(r);\r\n if (p) {\r\n sdm.cinemaconcessions = p;\r\n _.each(sdm.cinemaconcessions, function(cinema) {\r\n let index = _.findIndex(sdm.CINEMA_KEY, function(i) { return i.id === cinema.id })\r\n if (index < 0) {\r\n return;\r\n }\r\n sdm.CINEMA_KEY[index].concessionsf = cinema.enabledsf;\r\n sdm.CINEMA_KEY[index].concessionsvista = cinema.enabledvista;\r\n });\r\n console.log(p);\r\n } else {\r\n sdm.errorMessage = \"Failed to get cinema concessions.\";\r\n }\r\n }\r\n })\r\n .catch(function(response) {\r\n sdm.errorMessage = 'something went wrong with the cinema concessions request. Contact support.';\r\n })\r\n .finally(function(response) {\r\n\r\n });\r\n }\r\n\r\n\r\n sdm.overViewStats = function() {\r\n sdm.clearOverviewStats();\r\n\r\n getCinemaConcessionStatus();\r\n\r\n //get missing showtimes, only look at vistas though\r\n getMissingShowtimes()\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var successFlag = response.data.Success;\r\n var r = response.data.Data;\r\n var p = JSON.parse(r);\r\n if (p && successFlag) {\r\n sdm.overviewMissingIdsFromVistaCount = p.vistaidsnotinsf.length;\r\n var cinemasObj = _.countBy(_.flatMap(p.vistaidsnotinsf, (id) => id.split('-')[0]));\r\n\r\n sdm.overviewCinemas = Object.keys(cinemasObj).map(key => ({ count: cinemasObj[key], id: key }));\r\n _.each(sdm.overviewCinemas, function(cinema) {\r\n let index = _.findIndex(sdm.CINEMA_KEY, function(i) { return i.id === cinema.id })\r\n if (index < 0) {\r\n return;\r\n }\r\n sdm.CINEMA_KEY[index].affected = true;\r\n sdm.CINEMA_KEY[index].count = cinema.count;\r\n });\r\n } else {\r\n sdm.errorMessage = \"Failed to get missing showtime count.\";\r\n }\r\n }\r\n })\r\n .catch(function(response) {\r\n sdm.errorMessage = 'something went wrong with the missing showtimes request. Contact support.';\r\n })\r\n .finally(function(response) {\r\n\r\n });\r\n\r\n\r\n getCurrentSyncingAndLastSync()\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n var p = JSON.parse(r);\r\n if (p) {\r\n var currentlysyncing = p.currentlysyncing;\r\n sdm.overviewLastSync = p.lastsynctime;\r\n sdm.overviewLastSyncStart = p.lastsyncstart;\r\n\r\n //if last sync was less than hour ago, then lastSyncTimeOld is false, as it was recent.\r\n if (moment(p.lastsynctime).isAfter(moment().subtract(1, 'hours'))) {\r\n sdm.lastSyncTimeOld = false;\r\n } else {\r\n sdm.lastSyncTimeOld = true;\r\n }\r\n\r\n var syncstopped = p.syncstopped;\r\n\r\n sdm.currentSyncStatus = currentlysyncing;\r\n } else {\r\n sdm.errorMessage = \"Failed to get currently syncing status\";\r\n }\r\n }\r\n })\r\n .catch(function(response) {\r\n sdm.errorMessage = 'Failed to get currently syncing status.';\r\n })\r\n .finally(function(response) {\r\n\r\n });\r\n\r\n\r\n\r\n getLastSyncShowtimes()\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n var p = JSON.parse(r);\r\n if (p) {\r\n let result = Object.keys(p).map(key => ({\r\n id: key,\r\n value: p[key]\r\n }));\r\n sdm.oldshowtimes = result;\r\n sdm.nonSyncingCount = Object.keys(sdm.oldshowtimes).length\r\n\r\n //var cinemasObj = _.countBy(_.flatMap(Object.keys(result), (id) => id.split('-')[0]));\r\n var cinemasObj = _.countBy(_.flatMap(result, (x) => x.id.split('-')[0]));\r\n\r\n sdm.overviewOldCinemas = Object.keys(cinemasObj).map(key => ({ count: cinemasObj[key], id: key }));\r\n\r\n _.each(sdm.overviewOldCinemas, function(cinema) {\r\n let index = _.findIndex(sdm.CINEMA_KEY, function(i) { return i.id === cinema.id })\r\n if (index < 0) {\r\n return;\r\n }\r\n sdm.CINEMA_KEY[index].old = true;\r\n sdm.CINEMA_KEY[index].countold = cinema.count;\r\n });\r\n } else {\r\n sdm.errorMessage = \"Failed to get last sync showtimes.\";\r\n }\r\n }\r\n })\r\n .catch(function(response) {\r\n sdm.errorMessage = 'Failed to get last sync showtimes';\r\n })\r\n .finally(function(response) {});\r\n\r\n\r\n sdm.overviewWastTimeChecked = moment().tz('America/New_York').format('MM/DD h:mm A');\r\n }\r\n\r\n sdm.formatBytes = function(bytes, decimals = 2) {\r\n if (!+bytes) return '0 Bytes'\r\n\r\n const k = 1024\r\n const dm = decimals < 0 ? 0 : decimals\r\n const sizes = ['Bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(k))\r\n\r\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`\r\n }\r\n\r\n sdm.TimeSince = function(t) {\r\n return moment(t).fromNow()\r\n }\r\n\r\n\r\n sdm.ToTheTop = function(id) {\r\n $scope.$applyAsync(sdm.showtimeLookupID = id);\r\n sdm.lookupShowtime();\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n }\r\n re = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/\r\n\r\n\r\n sdm.buttonLocksAndMessage = function() {\r\n if (sdm.buttonSpinner) {\r\n return true;\r\n } else {\r\n $scope.$applyAsync(sdm.alertCounter = 100);\r\n $scope.$applyAsync(sdm.alertVariable = 0);\r\n sdm.buttonSpinner = true;\r\n sdm.errorMessage = \"\";\r\n sdm.successMessage = \"\";\r\n return false;\r\n }\r\n }\r\n\r\n sdm.clearOverviewStats = function() {\r\n sdm.overviewWastTimeChecked = null;\r\n sdm.overviewLastSync = null;\r\n sdm.overviewLastSyncStart = null;\r\n sdm.overviewMissingIdsFromVistaCount = null;\r\n sdm.nonSyncingCount = null;\r\n sdm.overviewCinemas = null;\r\n sdm.currentSyncStatus = null;\r\n sdm.overviewOldCinemas = null;\r\n sdm.cinemaconcessions = null;\r\n sdm.lastSyncTimeOld = null;\r\n sdm.CINEMA_KEY = [{\r\n \"id\": \"001\",\r\n \"name\": \"\",\r\n \"enabled\": false,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"002\",\r\n \"name\": \"GR North\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"003\",\r\n \"name\": \"Crossroads\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"004\",\r\n \"name\": \"GR South\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"005\",\r\n \"name\": \"Rivertown\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"006\",\r\n \"name\": \"Lansing\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"007\",\r\n \"name\": \"Benton\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"008\",\r\n \"name\": \"Mt Pleasant\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"009\",\r\n \"name\": \"Carousel\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"010\",\r\n \"name\": \"\",\r\n \"enabled\": false,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"011\",\r\n \"name\": \"Getty\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"012\",\r\n \"name\": \"Meridian Mall\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }, {\r\n \"id\": \"013\",\r\n \"name\": \"Studio Park/MT\",\r\n \"enabled\": true,\r\n \"count\": 0,\r\n \"countold\": 0,\r\n \"affected\": false,\r\n \"old\": false,\r\n \"concessionsf\": false,\r\n \"concessionsvista\": false\r\n }];\r\n }\r\n\r\n sdm.showtimeFormatter = function(value) {\r\n if (re.test(value) && (value.toString().indexOf(\"T\") >= 0)) {\r\n return moment(value).tz('America/New_York').format('MM/DD h:mm A');\r\n } else {\r\n return value;\r\n }\r\n }\r\n\r\n sdm.getmissingshowtimes = function() {\r\n if (sdm.buttonLocksAndMessage()) {\r\n return;\r\n }\r\n\r\n sdm.missingshowtimes = null;\r\n\r\n getMissingShowtimes()\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var successFlag = response.data.Success;\r\n var r = response.data.Data;\r\n var p = JSON.parse(r);\r\n console.log(p);\r\n if (p && successFlag) {\r\n sdm.successMessage = \"Success! (if empty, then no old showtimes)\";\r\n sdm.missingshowtimes = p;\r\n } else {\r\n sdm.errorMessage = \"Failed to get missing showtimes.\";\r\n }\r\n }\r\n })\r\n .catch(function(response) {\r\n sdm.errorMessage = 'something went wrong with the missing showtimes request. Contact support.';\r\n })\r\n .finally(function(response) {\r\n sdm.buttonSpinner = false;\r\n });\r\n }\r\n\r\n sdm.CinemaFormatter = function(ary) {\r\n return ary.join(\", \");\r\n }\r\n\r\n sdm.getlastsyncshowtimes = function() {\r\n if (sdm.buttonLocksAndMessage()) {\r\n return;\r\n }\r\n\r\n sdm.oldshowtimes = null;\r\n sdm.oldshowtimescount = 0;\r\n sdm.oldshowtimeCinemas = [];\r\n\r\n getLastSyncShowtimes()\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n var p = JSON.parse(r);\r\n console.log(p);\r\n if (p) {\r\n sdm.successMessage = \"Success! (if empty, then no old showtimes)\";\r\n let result = Object.keys(p).map(key => ({\r\n id: key,\r\n value: p[key]\r\n }));\r\n sdm.oldshowtimes = result;\r\n sdm.oldshowtimescount = Object.keys(sdm.oldshowtimes).length\r\n sdm.oldshowtimeCinemas = _.uniq(_.flatMap(sdm.oldshowtimes, ({ id }) => id.split('-')[0]));\r\n } else {\r\n sdm.errorMessage = \"Failed to get last sync showtimes.\";\r\n }\r\n }\r\n })\r\n .catch(function(response) {\r\n sdm.errorMessage = 'something went wrong with the last sync showtimes request. Contact support.';\r\n })\r\n .finally(function(response) {\r\n sdm.buttonSpinner = false;\r\n });\r\n }\r\n\r\n\r\n sdm.forceSyncShowtime = function() {\r\n if (sdm.buttonLocksAndMessage()) {\r\n return;\r\n }\r\n\r\n\r\n showtimeSync(sdm.showtimeLookupID)\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n var p = JSON.parse(r);\r\n\r\n if (p) {\r\n sdm.successMessage = \"Synced into Sitefinity. You may lookup again.\";\r\n } else {\r\n sdm.errorMessage = \"Failed to syn the showtime sync into Sitefinity.\";\r\n }\r\n }\r\n })\r\n .catch(function(response) {\r\n sdm.errorMessage = 'something went wrong with the showtimesync request. Contact support.';\r\n })\r\n .finally(function(response) {\r\n sdm.buttonSpinner = false;\r\n });\r\n }\r\n\r\n sdm.init = function() {\r\n sdm.overViewStats();\r\n }\r\n\r\n sdm.lookupLinkedAccounts = function() {\r\n if (sdm.buttonLocksAndMessage()) {\r\n return;\r\n }\r\n\r\n sdm.linkedtome = null;\r\n sdm.mylinkedaccounts = null;\r\n\r\n if (!sdm.linkedAccountEmail) {\r\n sdm.errorMessage = 'no email entered';\r\n sdm.buttonSpinner = false;\r\n return;\r\n }\r\n\r\n\r\n getLinkedAccounts(sdm.linkedAccountEmail)\r\n .then(function(response) {\r\n if (response && response.data) {\r\n if (!response.data.Success) {\r\n \r\n sdm.errorMessage = response.data.Message || 'something went wrong with the VIP lookup request. Contact support.'; \r\n sdm.buttonSpinner = false; \r\n return; \r\n }\r\n\r\n var r = response.data.Data;\r\n var p = JSON.parse(r); \r\n\r\n sdm.mylinkedaccounts = p.mylinkedaccounts;\r\n\r\n if (p.linkedtome) {\r\n sdm.linkedtome = _.remove(p.linkedtome, function(n) {\r\n return n.Email.toLowerCase() !== sdm.linkedAccountEmail.toLowerCase();\r\n });\r\n } else {\r\n sdm.linkedtome = p.linkedtome;\r\n }\r\n\r\n sdm.successMessage = 'found links!';\r\n $(function () {\r\n $('[data-toggle=\"tooltip\"]').tooltip()\r\n });\r\n }\r\n })\r\n .catch(function(response) {\r\n sdm.errorMessage = 'something went wrong with the VIP lookup request. Contact support.';\r\n })\r\n .finally(function(response) {\r\n sdm.buttonSpinner = false;\r\n });\r\n }\r\n\r\n sdm.lookupShowtime = function() {\r\n if (sdm.buttonLocksAndMessage()) {\r\n return;\r\n }\r\n\r\n sdm.sitefinityResponseString = sdm.showtimeResponse;\r\n sdm.vistaResponseString = sdm.showtimeResponse;\r\n sdm.sitefinityResponse = null;\r\n sdm.vistaResponse = null;\r\n\r\n if (!sdm.showtimeLookupID) {\r\n sdm.errorMessage = 'no id entered';\r\n sdm.buttonSpinner = false;\r\n return;\r\n }\r\n\r\n showtimeLookup(sdm.showtimeLookupID)\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n var p = JSON.parse(r); \r\n\r\n sdm.sitefinityResponseString = p.sitefinityjson;\r\n sdm.vistaResponseString = p.vistajson;\r\n\r\n sdm.vistaResponse = JSON.parse(p.vistajson);\r\n sdm.sitefinityResponse = JSON.parse(p.sitefinityjson);\r\n\r\n sdm.sitefinityResponse['Date Created'] = p['sfDateCreated'] || null;\r\n sdm.sitefinityResponse['Last Synced'] = p['sfLastModified'] || null;\r\n\r\n if (p.filmname) {\r\n sdm.sitefinityResponse['Event/Film'] = p.filmname; \r\n }\r\n\r\n var combinederror = \"\";\r\n if (sdm.vistaResponse['message']) {\r\n combinederror += sdm.vistaResponse['message'] + \" \";\r\n }\r\n if (sdm.sitefinityResponse['message']) {\r\n combinederror += sdm.sitefinityResponse['message'];\r\n }\r\n if (combinederror) {\r\n sdm.errorMessage = combinederror;\r\n }\r\n sdm.successMessage = 'found showtimes!';\r\n }\r\n })\r\n .catch(function(response) {\r\n sdm.errorMessage = 'something went wrong with the showtime lookup request. Contact support.';\r\n })\r\n .finally(function(response) {\r\n sdm.buttonSpinner = false;\r\n });\r\n };\r\n\r\n function getCurrentSyncingAndLastSync() {\r\n var config = {\r\n params: {}\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/debugger/syncstats\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getAdminSettings() {\r\n var config = {\r\n params: {}\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/debugger/adminsettings\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getLinkedAccounts(lookupemail) {\r\n var config = {\r\n params: {\r\n email: lookupemail\r\n }\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/debugger/linkedvipusers\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function showtimeLookup(showtimeid) {\r\n var config = {\r\n params: {\r\n id: showtimeid\r\n }\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/debugger/showtimes\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function showtimeSync(showtimeid) {\r\n var config = {\r\n params: {\r\n id: showtimeid\r\n }\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/debugger/showtimesync\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getLastSyncShowtimes() {\r\n var config = {\r\n params: {}\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/debugger/showtimesmodified\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\nfunction getBTSubscription(btid) {\r\n var config = {\r\n params: {\r\n id: btid\r\n }\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/debugger/btsubscription\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\nfunction getVIPSignUps() {\r\n var config = {\r\n params: {}\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/debugger/vipsignups\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n\r\n function getMissingShowtimes() {\r\n var config = {\r\n params: {}\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/debugger/showtimesmissing\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getCinemaConcessions() {\r\n var config = {\r\n params: {}\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/debugger/cinemaconcessions\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n\r\n var seconds = 60;\r\n var minutes = 5;\r\n var ms = 1000;\r\n var total = minutes * ms * seconds;\r\n $interval(sdm.overViewStats, total);\r\n}","(function () {\r\n angular.module('st')\r\n .controller('AllMoviesController', [\r\n '$rootScope', '$scope', \"$timeout\", \"$http\",\r\n function ($rootScope, $scope, $timeout, $http) {\r\n var ctrl = this;\r\n var defaultRatingsOrder = [\"G\", \"PG\", \"PG13\", \"PG-13\", \"R\", \"NC-17\", \"NR\", \"TBC\"];\r\n\r\n ctrl.filterOptions = {\r\n searchTerm: null,\r\n genres: null,\r\n date: null,\r\n category: null,\r\n ratings: null\r\n }\r\n\r\n ctrl.genres = null;\r\n ctrl.categories = null;\r\n ctrl.dates = null;\r\n ctrl.ratings = null;\r\n\r\n ctrl.movies = null;\r\n\r\n ctrl.AOSRefresh = function() {\r\n $timeout(function() {\r\n AOS.refreshHard();\r\n }, 500);\r\n }\r\n\r\n $scope.init = function (json) {\r\n ctrl.movies = json;\r\n try {\r\n var tempratings = [...new Set(json.map(function(item){ return item.Rating; }))].sort() || null;\r\n ctrl.ratings = tempratings.sort((a, b) => {\r\n const aIndex = defaultRatingsOrder.indexOf(a);\r\n const bIndex = defaultRatingsOrder.indexOf(b);\r\n return aIndex - bIndex;\r\n });\r\n } catch (error) {\r\n ctrl.ratings = null;\r\n }\r\n try {\r\n \r\n ctrl.genres = [...new Set(json.flatMap(function(item){ return [...item.Genres]; }))].sort() || null;\r\n } catch (error) {\r\n ctrl.genres = null;\r\n }\r\n\r\n //console.log('r', ctrl.ratings);\r\n //console.log('g', ctrl.genres);\r\n AOS.init({once: false});\r\n } \r\n\r\n $scope.$watchCollection('amc.moviesFiltered', function() { \r\n //console.log('filtered');\r\n ctrl.AOSRefresh();\r\n }); \r\n\r\n $scope.filterByOptions = function(item) {\r\n var passesFilter = true;\r\n //console.log('filters', ctrl.filterOptions);\r\n\r\n if (ctrl.filterOptions.searchTerm) {\r\n if (item.Title.toLowerCase().includes(ctrl.filterOptions.searchTerm.toLowerCase())) {\r\n //do nothing it passes\r\n } else {\r\n passesFilter = false;\r\n }\r\n }\r\n \r\n if (ctrl.ratings) {\r\n if (ctrl.filterOptions.ratings) {\r\n if (ctrl.filterOptions.ratings.indexOf(item.Rating) > -1) {\r\n //do nothing it passes\r\n } else {\r\n passesFilter = false;\r\n }\r\n }\r\n }\r\n \r\n if (ctrl.genres) {\r\n if (ctrl.filterOptions.genres) {\r\n var casedItemGenres = item.Genres.map(v => v.toLowerCase());\r\n if (casedItemGenres.indexOf(ctrl.filterOptions.genres.toLowerCase()) > -1) {\r\n //if (ctrl.filterOptions.genres.toLowerCase().indexOf(casedItemGenres) > -1) {\r\n //do nothing it passes\r\n } else {\r\n passesFilter = false;\r\n }\r\n }\r\n }\r\n\r\n if (passesFilter) {\r\n return item;\r\n }\r\n }\r\n\r\n }]);\r\n})();\r\n\r\n","\r\n$(document).ready(function () {\r\n\t$('.js-image-carousel').each(function () {\r\n\t\tvar slickInduvidual = $(this);\r\n\t\tif (slickInduvidual.length) {\r\n\t\t\tslickInduvidual.slick({\r\n\t\t\t\tdots: true,\r\n\t\t\t\tfade: true,\r\n\t\t\t\tadaptiveHeight: true, \r\n\t\t\t\tslidesToShow: 1,\r\n\t\t\t\tslide: '.image-carousel-item',\r\n\t\t\t\tnextArrow: '<span class=\"fal fa-long-arrow-right\"></span>',\r\n\t\t\t\tprevArrow: '<span class=\"fal fa-long-arrow-left\"></span>',\r\n\t\t\t\tappendArrows: $(this).find('.image-carousel-controls'),\r\n appendDots: $(this).find('.image-carousel-dots'),\r\n autoplay: true,\r\n autoplaySpeed: 8000,\r\n lazyLoad: 'ondemand',\r\n\t\t\t});\r\n\t\t}\r\n });\r\n\r\n if ($('.desktop-row .watchlist-item').length > 3) {\r\n $('.movie-poster-carousel').slick({\r\n slidesToShow: 4,\r\n arrows: true,\r\n centerMode: false,\r\n prevArrow: $('.l-arrow'),\r\n nextArrow: $('.r-arrow'),\r\n variableWidth: true,\r\n infinite: false,\r\n swipeToSlide: true,\r\n responsive: [\r\n {\r\n breakpoint: 1400,\r\n settings: {\r\n slidesToShow: 3\r\n }\r\n },\r\n {\r\n breakpoint: 1000,\r\n settings: {\r\n slidesToShow: 2\r\n }\r\n }\r\n ]\r\n });\r\n }\r\n}); \r\n\r\n\r\n$('.js-image-carousel').on('lazyLoaded', function(evt, slick, $img) {\r\n\r\n $img\r\n // Find the parent <picture> tag of img\r\n .closest('picture')\r\n // Find <source> tags with data-lazy-srcset attribute\r\n .find('source[data-lazy-srcset]')\r\n // Copy data-lazy-srcset to srcset\r\n .each(function (i, source) {\r\n $source = $(source);\r\n $source.attr('srcset', $source.data('lazy-srcset'));\r\n }); \r\n\r\n $('.js-image-carousel').slick(\"resize\");\r\n //setTimeout($('.js-image-carousel').slick(\"resize\"), 5000);\r\n});\r\n","(function () {\n angular.module('st')\n .controller('CelebrationContentTypeController', [\n '$rootScope', '$scope', '$sce', \"$http\",\n function ($rootScope, $scope, $sce, $http) {\n var ctrl = this;\n\n //lock toggle buttons while searching\n ctrl.searching = true;\n\n ctrl.toggle = function (facetCtrl,index,event) { \r\n facetCtrl.toggle(index);\r\n }\n\n $rootScope.$on('stSearchResponse', function (e, response, group) { \n $scope.$applyAsync(ctrl.searching = false);\n });\n\n\n $rootScope.$on('stSearchUpdated', function (e, response, group) { \n $scope.$applyAsync(ctrl.searching = true); \n });\n\n }]);\n})();\n\n","(function () {\n angular.module('st')\n .controller('CelebrationSearchController', [\n '$rootScope', '$scope', '$sce', \"$http\",\n function ($rootScope, $scope, $sce, $http) {\n var ctrl = this;\n ctrl.assignPolyfill = function () {\n if (typeof Object.assign !== 'function') {\r\n // Must be writable: true, enumerable: false, configurable: true\r\n Object.defineProperty(Object, \"assign\", {\r\n value: function assign(target, varArgs) { // .length of function is 2\r\n 'use strict';\r\n if (target === null || target === undefined) {\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n\r\n var to = Object(target);\r\n\r\n for (var index = 1; index < arguments.length; index++) {\r\n var nextSource = arguments[index];\r\n\r\n if (nextSource !== null && nextSource !== undefined) {\r\n for (var nextKey in nextSource) {\r\n // Avoid bugs when hasOwnProperty is shadowed\r\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n return to;\r\n },\r\n writable: true,\r\n configurable: true\r\n });\r\n }\r\n }\n ctrl.assignPolyfill();\n ctrl.results = []\n $rootScope.searchResults = {}\n ctrl.resultTypes = ['Movies','Deals','Events', 'FAQs','Cinema Locations', 'Upcoming Films']\n $rootScope.$on('stSearchUpdated', function (value) {\n });\n\n $rootScope.$on('searchCleared', function (value) {\n ctrl.results = []\n });\n\n $scope.$watch('$parent.ctrl.results.Results', function (value) {\n if (value == null || value == undefined) {\n return;\r\n }\n\n ctrl.results = [];\n\n for (var i = 0; i < value.length; i++) {\n var result = value[i];\n var type = ctrl.GetType(result['ContentType']);\n\n ctrl.results[type] = ctrl.results[type] == null ? [] : ctrl.results[type];\n ctrl.results[type].push(result)\r\n }\n\n //change upcoming film results if both films and upcoming film results are present. i.e. /film/ instead of /upcomingfilm/ if a film exists\n if (ctrl.results) { \n var hasFilms = !!(ctrl.results.Movies && ctrl.results.Movies.length > 0);\n var hasUpcoming = !!(ctrl.results['Upcoming Films'] && ctrl.results['Upcoming Films'].length > 0); \n var updatedUpcomingFilms = [];\n\n //if both are in results, remove dupe upcoming films\n if (hasFilms && hasUpcoming) {\n console.log('upcoming results', ctrl.results['Upcoming Films'].length);\n ctrl.results['Upcoming Films'].forEach((upcoming) => {\n if (ctrl.results.Movies.find(e => e.Title === upcoming.Title)) {\r\n //we found a result so skip this\r\n } else {\n //we didnt find a match, so keep this result\n updatedUpcomingFilms.push(upcoming);\n }\n });\n\n //update list to show only unique upcoming films that are not also in films\n ctrl.results['Upcoming Films'] = updatedUpcomingFilms;\n console.log('upcoming results', ctrl.results['Upcoming Films'].length);\n }\n }\n\n console.log('results', ctrl.results);\n $rootScope.searchResults = Object.assign({},ctrl.results);\n });\n\n ctrl.GetType = function (contentType) {\n var type = '';\n if (contentType.indexOf('.Film') > -1) {\r\n type = 'Movies';\r\n } else if (contentType.indexOf('.Deal') > -1) {\r\n type = 'Deals';\r\n } else if (contentType.indexOf('.Cinemaevent') > -1) {\r\n type = 'Events';\r\n } else if (contentType.indexOf('.FrequentlyAskedQuestion') > -1) {\r\n type = 'FAQs';\r\n } else if (contentType.indexOf('.Cinema') > -1) {\r\n type = 'Cinema Locations';\r\n } else if (contentType.indexOf('.Upcomingfilm') > -1) {\r\n type = 'Upcoming Films';\r\n } \r\n\r\n return type;\r\n }\n }]);\n})();\n\n","(function () {\n angular.module('st')\n .controller('CelebrationSearchTermController', [\n '$rootScope', '$scope', '$sce', \"$http\",\n function ($rootScope, $scope, $sce, $http) {\n var ctrl = this;\n $rootScope.searchTerm = '';\n\n ctrl.searchCleared = function () {\n $rootScope.$emit('searchCleared')\r\n $rootScope.searchTerm = '';\r\n }\n\n ctrl.UpdateTerm = function (term) {\n $rootScope.searchTerm = term;\r\n }\n\n ctrl.GetResultsCount = function () {\n var length = 0;\n Object.keys($rootScope.searchResults).forEach(function (key) {\n var arr = $rootScope.searchResults[key];\r\n length += arr.length;\n })\n\n return length;\r\n }\n\n ctrl.SearchInitiated = function (facetCtrl) {\n facetCtrl.notify();\r\n }\n }]);\n})();\n\n","(function() {\r\n //console.info(\"Load CRWRDS\")\r\n angular.module('st')\r\n .controller('CRewardsTopNavCtrl', [\r\n '$rootScope', '$scope', '$sce', \"$http\",\r\n function ($rootScope, $scope, $sce, $http) {\r\n //console.info(\"CRewards ctrl\");\r\n $('.loading-text-spacer').remove();\r\n var ctrl = this;\r\n var DEFAULT_TIER = {\r\n name: 'basic',\r\n };\r\n\r\n ctrl.apiCallFinished = false;\r\n ctrl.hasCard = true;\r\n\r\n ctrl.SignIn = function() {\r\n //console.log('signing in');\r\n ctrl.signedIn = true;\r\n };\r\n\r\n ctrl.SignOut = function() {\r\n //console.log('signing out');\r\n ctrl.signedIn = false;\r\n };\r\n\r\n ctrl.close = close;\r\n\r\n $scope.init = function() {\r\n $http.get(\"/rpc/membership/account/rewards-status?\" + new Date().getTime()\r\n /* date added to prevent IE11 from caching this api call (results in wrong info displayed after logging out) */\r\n )\r\n .then(function (d) {\r\n if (d.data.Success == true) {\r\n var model = d.data.Data;\r\n ctrl.firstName = model.FirstName;\r\n ctrl.lastName = model.LastName;\r\n if (ctrl.lastName) {\r\n ctrl.lastNameAbbreviation = ctrl.lastName.slice(0,1) + \".\";\r\n }\r\n if (ctrl.firstName) {\r\n try {\r\n var firstestName = ctrl.firstName.split(\" \").shift();\r\n ctrl.firstName = firstestName;\r\n } catch (Exception) {\r\n \r\n }\r\n }\r\n if (!ctrl.firstName) {\r\n ctrl.firstName = \"User\";\r\n }\r\n ctrl.points = model.Points;\r\n ctrl.signedIn = model.SignedIn;\r\n ctrl.qrcodevalue = model.CardNumber;\r\n\r\n if (ctrl.qrcodevalue) {\r\n ctrl.hasCard = true;\r\n } else {\r\n ctrl.hasCard = false;\r\n }\r\n\r\n if (ctrl.signedIn && ctrl.qrcodevalue) {\r\n window.MEMBER_CARD_NUMBER = ctrl.qrcodevalue;\r\n window.MEMBER_ID = model.MemberId;\r\n\r\n //get qr code elements (desktop and mobile)\r\n var $qr1 = document.getElementsByClassName(\"qrcodeclass\")[0];\r\n var $qr2 = document.getElementsByClassName(\"qrcodeclass\")[1];\r\n var $qrmodal = document.getElementById(\"qrcodemodal\");\r\n\r\n //get if qr code elements (desktop and mobile) already have code generated\r\n var hasDropDownCodeAlready1 = !!$($qr1).find('img').length;\r\n var hasDropDownCodeAlready2 = !!$($qr2).find('img').length;\r\n var hasDropDownCodeAlreadyModal = !!$($qrmodal).find('img').length;\r\n\r\n if ($('#qrcode').length && !hasDropDownCodeAlready1) {\r\n var qrcode1 = new QRCode($qr1, {\r\n text: ctrl.qrcodevalue,\r\n colorDark: \"#000000\",\r\n colorLight: \"#ffffff\",\r\n correctLevel: QRCode.CorrectLevel.H\r\n });\r\n }\r\n if ($('#qrcode').length && !hasDropDownCodeAlready2) {\r\n var qrcode2 = new QRCode($qr2, {\r\n text: ctrl.qrcodevalue,\r\n colorDark: \"#000000\",\r\n colorLight: \"#ffffff\",\r\n correctLevel: QRCode.CorrectLevel.H\r\n });\r\n }\r\n if ($('#qrcodemodal').length && !hasDropDownCodeAlreadyModal) {\r\n var qrcode3 = new QRCode(\"qrcodemodal\", {\r\n text: ctrl.qrcodevalue,\r\n colorDark: \"#000000\",\r\n colorLight: \"#ffffff\",\r\n correctLevel: QRCode.CorrectLevel.H\r\n });\r\n }\r\n }\r\n }\r\n\r\n $('.loading-text-wrapper').remove();\r\n $('.checkout-loading-container').remove();\r\n\r\n ctrl.apiCallFinished = true;\r\n $scope.$applyAsync();\r\n });\r\n };\r\n\r\n $scope.init();\r\n }\r\n ]);\r\n})();","$(document).ready(function () {\r\n\t// variables\r\n\tvar navToggle = $('.js-nav-toggle');\r\n\tvar userHeaderMenu = $('.header-user-menu .crewards-status-info');\r\n\tvar searchForm = $('.js-search-form');\r\n\tvar searchToggle = $('.js-search-toggle');\r\n\tvar mblHeaderSignIn = $('a.mobile-sign-in')\r\n\r\n\t// click events\r\n\tnavToggle.on('click', function (e) { e.stopPropagation(); toggleNav(e); });\r\n\tuserHeaderMenu.on('click', function (e) { if (e.target.className != 'sign-in-link') { e.stopPropagation(); toggleHeaderUserMenu(e); } });\r\n\tsearchToggle.on('click', function (e) { e.stopPropagation(); toggleSearch(e); });\r\n\tmblHeaderSignIn.on('click', function (e) { toggleNav(e); navToggle.toggleClass('open'); });\r\n\r\n\t// search form on enter input or button\r\n\tsearchForm.find('.form-control').on('keydown', function (e) { if (e.keyCode === 13) { searchTerm(e); } });\r\n\tsearchForm.find('button').on('click', function (e) { searchTerm(e); });\r\n\r\n\t$('.js-nav-toggle-children').on('click', function (e) { mobileNavItem(e); });\r\n $('.nav .crewards-status-info.signed-in-status-info').on('click', function (e) { mobileCrewardsMenu(e); });\r\n\r\n\t// prevent closing menus when clicking on menu itself\r\n\t$('.crewards-status-dropdown').on('click', function (e) { \t\t\r\n e.stopPropagation(); \r\n\t\t//allow modal pop-up for qr code\r\n\t\tif ($(e.target).closest('#qrcodelistitem').length) {\r\n\t\t\t$('#qr-code-modal').modal({show: true, backdrop: 'static', keyboard: false});\r\n\t\t\t$('.qrcodetext').html(window.MEMBER_CARD_NUMBER);\t\t\r\n\t\t}\r\n\t\t//if (e.target.tagName === \"IMG\" || e.target.tagName === \"CANVAS\") {\r\n\t\t//\t$('#qr-code-modal').modal({show: true, backdrop: 'static', keyboard: false});\r\n\t\t//\t$('.qrcodetext').html(window.MEMBER_CARD_NUMBER);\r\n\t\t//}\r\n\t});\r\n\r\n\t$('.search-mobile').on('click', function (e) { e.stopPropagation(); });\r\n\r\n\t$(document).click(function () {\r\n\t\t//Hide the menus if visible when clicking outside of them\r\n\t\t$('.search-mobile').removeClass('open');\r\n\t\t$('.search-mobile').slideUp();\r\n\r\n var parent = $('.crewards-status-content');\r\n\r\n if ($(parent).hasClass('open')) {\r\n $(parent).removeClass('open');\r\n $(parent).find('ul').slideUp();\r\n }\r\n\t});\r\n\r\n\tfunction mobileCrewardsMenu(e) {\r\n\t\te.preventDefault();\r\n\t\tvar parent = $('.crewards-status');\r\n\r\n\t\t$(parent).find('ul').slideToggle();\r\n\t\t$(parent).toggleClass('open');\r\n\t}\r\n\r\n\tfunction toggleNav(e) {\r\n\t\tvar target = $(e.currentTarget);\r\n\r\n\t\tif ($('.search-mobile').hasClass('open')) {\r\n\t\t\t$('.search-mobile').toggleClass('open');\r\n\t\t\t$('.search-mobile').slideToggle();\r\n\t\t}\r\n\r\n\t\ttarget.toggleClass('open');\r\n\t\t$('.nav').slideToggle();\r\n\t\t$('body').toggleClass('nav-open');\r\n\t}\r\n\r\n\tfunction toggleSearch(e) {\r\n\t\tif (navToggle.hasClass('open')) {\r\n\t\t\tnavToggle.toggleClass('open');\r\n\t\t\t$('.nav').slideToggle();\r\n\t\t\t$('body').toggleClass('nav-open');\r\n\t\t}\r\n\r\n\t\t$('.search-mobile').toggleClass('open');\r\n\r\n\t\t$('.search-mobile').slideToggle(\"slow\", function () {\r\n\t\t\t$('.search-mobile .form-control').focus();\r\n\t\t});\r\n\t}\r\n\r\n\tfunction searchTerm(e) {\r\n\t\te.preventDefault();\r\n\r\n var target = $(e.currentTarget).closest('div');\r\n\t\tvar input = $(target).find('.form-control');\r\n var value = $(input).val();\r\n\r\n //window.location.href = '/search/#!?term=' + value;\r\n\t\twindow.location.href = '/search?term=' + value;\r\n\t}\r\n\r\n\tfunction toggleHeaderUserMenu(e) {\r\n\t\tvar parent = $(userHeaderMenu).parent();\r\n\t\t$(parent).toggleClass('open');\r\n\t\t$(parent).find('ul').slideToggle();\r\n\t}\r\n\r\n\t// clicking on items in mobile nav\r\n\tfunction mobileNavItem(e) {\r\n\t\te.preventDefault();\r\n\t\tvar target = $(e.currentTarget);\r\n\t\tvar parent = target.closest('li');\r\n\t\t \r\n\t\t$(parent).find('> ul').slideToggle();\r\n\t\t$(parent).toggleClass('open');\r\n\t}\r\n\r\n\r\n //remove mobile nav toggled if width goes above 900 and mobile tab is still open\r\n var DesktopNavWidth = 900;\r\n $(window).on('resize', function () {\r\n if ($(this).width() >= DesktopNavWidth) {\r\n if ($(\"body\").hasClass( \"nav-open\" )) {\r\n\t\t\t\tif ($('.search-mobile').hasClass('open')) {\r\n\t\t\t\t\t$('.search-mobile').toggleClass('open');\r\n\t\t\t\t\t$('.search-mobile').slideToggle();\r\n\t\t\t\t}\r\n\r\n\t\t\t$('.nav-toggle.js-nav-toggle').removeClass('open');\r\n\t\t\t$('.nav').slideToggle();\r\n\t\t\t$('body').toggleClass('nav-open');\r\n }\r\n }\r\n });\r\n});","$(document).ready(function () {\r\n $('.free-membership').find('a').click(function (e) {\r\n var form = $('#crewards-signup-form');\r\n if (form != null && form != undefined) {\r\n e.preventDefault()\r\n\r\n $('html, body').animate(\r\n {\r\n scrollTop: form.offset().top - 200,\r\n },\r\n 500,\r\n 'linear'\r\n )\r\n }\r\n });\r\n});\r\n","(function () {\r\n angular.module('st').requires.push('countUpModule');\r\n\r\n function VIPSubscriptionController($scope, $compile, $timeout, $http, $q) {\r\n var ctrl = this;\r\n ctrl.resultcap = 50;\r\n ctrl.resultcapold = 50;\r\n\r\n ctrl.showMore = function () {\r\n ctrl.resultcap += 25;\r\n }\r\n \r\n ctrl.showMoreOld = function () {\r\n ctrl.resultcapold += 25;\r\n }\r\n\r\n //sorting active\r\n ctrl.sortByOptions = {\r\n customername: false,\r\n memberid: false,\r\n memberemail: false,\r\n vippoints: false,\r\n subscriptionstatus: false,\r\n PaidThroughDate: false,\r\n subscriptionid: false,\r\n btsubs: false\r\n }\r\n\r\n ctrl.propertyName = 'memberid';\r\n ctrl.sortByOptions['memberid'] = true;\r\n ctrl.reverse = true;\r\n\r\n ctrl.sortBy = function(propertyName) {\r\n Object.keys(ctrl.sortByOptions).forEach(v => ctrl.sortByOptions[v] = false);\r\n\r\n ctrl.reverse= (ctrl.propertyName === propertyName) ? !ctrl.reverse : false;\r\n ctrl.propertyName = propertyName;\r\n\r\n ctrl.sortByOptions[propertyName] = true;\r\n };\r\n \r\n //sorting old\r\n ctrl.sortByOptionsOld = {\r\n customername: false,\r\n memberid: false,\r\n memberemail: false,\r\n vippoints: false,\r\n subscriptionstatus: false,\r\n PaidThroughDate: false,\r\n subscriptionid: false,\r\n btsubs: false\r\n }\r\n ctrl.propertyNameOld = 'memberid';\r\n ctrl.sortByOptionsOld['memberid'] = true;\r\n ctrl.reverseOld = true;\r\n ctrl.sortByOld = function(propertyNameOld) {\r\n Object.keys(ctrl.sortByOptionsOld).forEach(v => ctrl.sortByOptionsOld[v] = false);\r\n\r\n ctrl.reverseOld = (ctrl.propertyNameOld === propertyNameOld) ? !ctrl.reverseOld : false;\r\n ctrl.propertyNameOld = propertyNameOld;\r\n\r\n ctrl.sortByOptionsOld[propertyNameOld] = true;\r\n };\r\n\r\n var memberByPointCount = {};\r\n\r\n ctrl.filterOptions = {\r\n searchTerm: null,\r\n viptype: null,\r\n status: null,\r\n vippoints: null,\r\n points: null\r\n }\r\n\r\n ctrl.formatDate = function (item) {\r\n if (item) {\r\n return moment(item).format('MMM Do');\r\n } else {\r\n return \"N/A\";\r\n }\r\n }\r\n\r\n $scope.init = function () {\r\n json = window.vipSubscriptions; \r\n \r\n //set null VIPs to 0 (sometimes valid use-case, but easy to find if they are 0)\r\n _.forEach(json, function(value) {\r\n if (value.vippoints === null) {\r\n value.vippoints = 0;\r\n }\r\n });\r\n \r\n //test visuals\r\n json[0].subscriptionstatus = 'canceled';\r\n json[1].subscriptionstatus = 'free';\r\n json[2].subscriptionstatus = 'expired';\r\n json[3].subscriptionstatus = 'pastdue';\r\n\r\n json = json.map(obj => ({ ...obj, viptype: obj.subscriptionstatus === 'free' ? 'free' : 'paid' }));\r\n json = _.map(json, o => _.extend({btsubs: 0}, o));\r\n\r\n //set null VIPs to 0 (sometimes valid use-case, but easy to find if they are 0)\r\n _.forEach(json, function(value) {\r\n if (value.vippoints === null) {\r\n value.vippoints = 0;\r\n }\r\n if (value.subscriptionstatus !== 'free' && !_.isEmpty(value.memberid)) {\r\n \r\n value.btsubs = _.filter(json, ['memberid', value.memberid]).length;\r\n }\r\n });\r\n\r\n try {\r\n ctrl.totalactivesubscriptions = _.filter(json, function (o) { return o.subscriptionstatus === 'active'; }).length;\r\n ctrl.totalactivesubscriptionsfree = _.filter(json, function (o) { return o.subscriptionstatus === 'free'; }).length;\r\n \r\n var totalFreePointUsers = totalactivesubscriptionsfree = _.filter(json, function (o) { return o.subscriptionstatus === 'free'; })\r\n var totalFreePoints = _.sumBy(totalFreePointUsers, 'vippoints');\r\n ctrl.totalusersubscriptionsPoints = totalFreePoints;\r\n } catch (error) {\r\n console.log('active total error', error);\r\n ctrl.subscriptions = null;\r\n } \r\n \r\n try {\r\n var adayago = moment().subtract(1, 'days').startOf('day');\r\n console.log('day ago', adayago)\r\n\r\n var oldSubs = _.filter(json, function (o) { return adayago.isAfter(o.LastModifiedDate); });\r\n var noPointSubs = _.filter(json, function (o) { return o.vippoints === null; });\r\n var noIdSubs = _.filter(json, function (o) { return _.isEmpty(o.memberid); });\r\n var noEmailSubs = _.filter(json, function (o) { return _.isEmpty(o.memberemail); });\r\n\r\n var combinedIssues = _.union(oldSubs, noPointSubs, noIdSubs, noEmailSubs);\r\n\r\n //if we have duplicate issues on a sub, just show the one version of it\r\n ctrl.subscriptionsold = _.uniqBy(combinedIssues, 'subscriptionid');\r\n\r\n console.log('--issue subs--', ctrl.subscriptionsold.length);\r\n console.log('old', oldSubs);\r\n console.log('points', noPointSubs);\r\n console.log('ids', noIdSubs);\r\n console.log('emails', noEmailSubs);\r\n } catch (error) {\r\n console.log('sub old total error', error);\r\n ctrl.subscriptions = null;\r\n }\r\n\r\n ctrl.totalactivebutendingsubscriptions = _.filter(json, function (o) { return o.subscriptionstatus !== 'active' && o.subscriptionstatus !== 'free'; }).length;\r\n\r\n try {\r\n var nonfree = _.filter(json, function (o) { return o.subscriptionstatus !== 'free'; }).length;\r\n var free = _.sumBy(_.filter(json, function (o) { return o.subscriptionstatus === 'free'; }), 'vippoints');\r\n ctrl.grandtotalactivesubscriptions = free + nonfree;\r\n } catch (error) {\r\n console.log('grand total error', error);\r\n ctrl.subscriptions = null;\r\n }\r\n try {\r\n //BT points\r\n var combinedPaidSubs = _.filter(json, function (o) { return o.subscriptionstatus !== 'free'; });\r\n var combinedSubs = _.groupBy(combinedPaidSubs, 'memberid');\r\n\r\n ctrl.totalvipsubsperuser = combinedSubs;\r\n ctrl.totalusersubscriptions = Object.keys(combinedSubs).length;\r\n\r\n //Total VIP Users\r\n var combinedSubs2 = _.groupBy(json, 'memberid');\r\n ctrl.totalvipusersubscriptions = Object.keys(combinedSubs2).length;\r\n } catch (error) {\r\n console.log('subscriber total error', error);\r\n ctrl.subscriptions = null;\r\n }\r\n try {\r\n ctrl.subscriptions = _.sortBy(json, ['memberid', 'memberemail']);\r\n } catch (error) {\r\n console.log('sort subs error', error);\r\n ctrl.subscriptions = null;\r\n }\r\n try {\r\n var substatuses = [...new Set(ctrl.subscriptions.map(function (item) { return item.subscriptionstatus; }))].sort() || null;\r\n ctrl.filtersubscriptionstatuses = substatuses.sort();\r\n } catch (error) {\r\n console.log('error sub status filter', error);\r\n }\r\n try {\r\n var a = Object.entries(ctrl.totalvipsubsperuser).map((e) => ({ 'id': e[0], 'count': e[1].length }));\r\n var b = [...new Set(a.map(function (item) { return item.count; }))]\r\n memberByPointCount = a;\r\n ctrl.filtersubscriptionpoints = b.sort();\r\n } catch (error) {\r\n console.log('error sub status filter', error);\r\n }\r\n try {\r\n // var vipoints = [...new Set(ctrl.subscriptions.map(function (item) { return item.vippoints || 0; }))].sort() || null;\r\n var vipoints = [...new Set(ctrl.subscriptions.map(function (item) { return _.isNumber(_.toNumber(item.vippoints)) ? (item.vippoints == null ? 0 : item.vippoints) : 0; }))].sort() || 0;\r\n //console.log('allpoints', vipoints);\r\n // var vipointsempty = _.filter(ctrl.subscriptions, function(o) { return _.isNaN(o.vippoints); });\r\n var vipointsempty = _.groupBy(_.filter(ctrl.subscriptions, function(o) { return o.vippoints === null; }), \"memberid\");\r\n //console.log('no points', vipointsempty)\r\n //console.log('---');\r\n ctrl.filtervippoints = vipoints.sort();\r\n } catch (error) {\r\n console.log('error sub status filter', error);\r\n }\r\n\r\n $(document).ready(function () {\r\n $(function () {\r\n $('[data-toggle=\"tooltip\"]').tooltip()\r\n });\r\n });\r\n }\r\n\r\n $scope.filterByOptions = function (item) {\r\n var passesFilter = true;\r\n //console.log('filters', ctrl.filterOptions);\r\n\r\n if (ctrl.filterOptions.searchTerm) {\r\n if (item.customername.toLowerCase().includes(ctrl.filterOptions.searchTerm.toLowerCase()) ||\r\n item.subscriptionid.toLowerCase().includes(ctrl.filterOptions.searchTerm.toLowerCase()) ||\r\n item.memberid.toLowerCase().includes(ctrl.filterOptions.searchTerm.toLowerCase()) ||\r\n item.memberemail.toLowerCase().includes(ctrl.filterOptions.searchTerm.toLowerCase())) {\r\n //do nothing it passes\r\n } else {\r\n passesFilter = false;\r\n }\r\n }\r\n\r\n if (ctrl.filtersubscriptionstatuses) {\r\n if (ctrl.filterOptions.status) {\r\n if (ctrl.filterOptions.status.indexOf(item.subscriptionstatus) > -1) {\r\n //do nothing it passes\r\n } else {\r\n passesFilter = false;\r\n }\r\n }\r\n }\r\n if (ctrl.filtervippoints) {\r\n if (_.isNumber(ctrl.filterOptions.vippoints)) {\r\n if (ctrl.filterOptions.vippoints === item.vippoints) {\r\n //do nothing it passes\r\n } else {\r\n passesFilter = false;\r\n }\r\n }\r\n }\r\n\r\n if (ctrl.filtersubscriptionpoints) {\r\n if (_.isNumber(ctrl.filterOptions.points)) {\r\n var result = _.find(memberByPointCount, { 'id': item.memberid, 'count': ctrl.filterOptions.points });\r\n if (result) {\r\n //do nothing it passes\r\n } else {\r\n passesFilter = false;\r\n }\r\n }\r\n }\r\n\r\n\r\n if (ctrl.filterOptions.viptype) { \r\n if (ctrl.filterOptions.viptype === item.viptype) {\r\n //do nothing it passes\r\n } else {\r\n passesFilter = false;\r\n }\r\n }\r\n\r\n\r\n if (passesFilter) {\r\n return item;\r\n }\r\n }\r\n\r\n };\r\n\r\n VIPSubscriptionController.$inject = [\"$rootScope\", \"$scope\"];\r\n angular\r\n .module(\"st\")\r\n .controller(\"VIPSubscriptionController\", VIPSubscriptionController);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AngularGeoService', ['AngularWebService'])\r\n .factory('GeoService', GeoService);\r\n\r\n GeoService.$inject = ['$rootScope', '$q', 'WebService'];\r\n\r\n function GeoService($rootScope, $q, WebService) {\r\n\r\n var api;\r\n var LatLongData = [];\r\n var LocationData = [];\r\n var googleBase = \"https://maps.googleapis.com/maps/api/geocode/json?\";\r\n\r\n var latString;\r\n var lngString;\r\n var locString;\r\n\r\n /* SERVICE OBJECT */\r\n var serviceCalls = {\r\n Init: Init,\r\n GetUserLocation: getUserLocation,\r\n GetInputLocation: getInputLocation,\r\n GetUserStringLocation: getUserStringLocation\r\n };\r\n\r\n return serviceCalls;\r\n\r\n function Init(apiKey) {\r\n api = apiKey;\r\n }\r\n\r\n\r\n function getCookie(cname) {\r\n var name = cname + \"=\";\r\n var decodedCookie = decodeURIComponent(document.cookie);\r\n var ca = decodedCookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n function getUserLocation() {\r\n var defer = $q.defer();\r\n\r\n if (navigator.geolocation) {\r\n var options = {\r\n enableHighAccuracy: true,\r\n timeout: 10000,\r\n maximumAge: 60000\r\n };\r\n\r\n navigator.geolocation.getCurrentPosition(function (p) {\r\n LatLongData.Latitude = p.coords.latitude;\r\n LatLongData.Longitude = p.coords.longitude;\r\n defer.resolve(LatLongData);\r\n },\r\n function (e) {\r\n console.log(e);\r\n LatLongData.Latitude = 47.253935;\r\n LatLongData.Longitude = -122.436841;\r\n defer.resolve(LatLongData);\r\n },\r\n options);\r\n } else {\r\n console.error(\"navigation geolocation not enabled\", LatLongData);\r\n defer.resolve(LatLongData);\r\n }\r\n return defer.promise;\r\n }\r\n\r\n function getInputLocation() {\r\n var defer = $q.defer();\r\n\r\n var addressString = $rootScope.inputLocation;\r\n\r\n if (addressString != '') {\r\n if (api == 'undefined' || api == null || api.indexOf('key') == -1)\r\n api = 'key=AIzaSyC1sm2AjUsvvkgY2SxUEg_5BdWWCdFbi7E';\r\n var url = \"https://maps.googleapis.com/maps/api/geocode/json?address=\" + addressString + \"&\" + api;\r\n\r\n var location = WebService.Get(url).then(function (data) {\r\n if (data !== null && !data.data.error_message) {\r\n if (typeof (data.data.results != 'undefined')) {\r\n LatLongData.Latitude = data.data.results[0].geometry.location.lat;\r\n LatLongData.Longitude = data.data.results[0].geometry.location.lng;\r\n defer.resolve(LatLongData);\r\n }\r\n } else if (data.data.error_message) {\r\n console.log(data.data.error_message);\r\n defer.reject(data.data.error_message);\r\n return defer.promise\r\n ;\r\n }\r\n });\r\n }\r\n\r\n return defer.promise;\r\n }\r\n\r\n function getUserStringLocation() {\r\n var defer = $q.defer();\r\n var definedLocation;\r\n\r\n if (typeof (LatLongData.Latitude) !== 'undefined' && typeof (LatLongData.Longitude) !== 'undefined') {\r\n if (typeof (LocationData.Location) == 'undefined') {\r\n var url = googleBase + \"latlng=\" + LatLongData.Latitude + \",\" + LatLongData.Longitude + \"&\" + api;\r\n var location = WebService.Get(url).then(function (data) {\r\n if (data !== null && !data.data.error_message) {\r\n if (typeof (data.data.results != 'undefined')) {\r\n var resultString = decodeUserLocation(data.data.results);\r\n defer.resolve(resultString);\r\n }\r\n } else if (data !== null && data.data !== null && data.data.error_message) {\r\n defer.reject(console.log(data.data.error_message));\r\n }\r\n });\r\n } else {\r\n defer.resolve(LocationData.Location);\r\n }\r\n } else {\r\n getUserLocation().then(function (result) {\r\n var url = googleBase + \"latlng=\" + LatLongData.Latitude + \",\" + LatLongData.Longitude + \"&\" + api;\r\n var location = WebService.Get(url).then(function (data) {\r\n if (data !== null && !data.data.error_message) {\r\n if (typeof (data.data.results != 'undefined')) {\r\n var resultString = decodeUserLocation(data.data.results);\r\n defer.resolve(resultString);\r\n }\r\n } else if (data !== null && data.data !== null && data.data.error_message) {\r\n defer.reject(console.log(data.data.error_message));\r\n }\r\n });\r\n });\r\n }\r\n\r\n return defer.promise;\r\n }\r\n\r\n function decodeUserLocation(data) {\r\n var state = \"\";\r\n var country = \"\";\r\n\r\n var allComps;\r\n\r\n if (data.length > 0) {\r\n allComps = data[0].address_components;\r\n }\r\n\r\n for (var i = 0; i < allComps.length; i++) {\r\n if (allComps[i].types.includes('administrative_area_level_1')) {\r\n state = allComps[i].short_name;\r\n }\r\n if (allComps[i].types.includes('country')) {\r\n country = allComps[i].short_name;\r\n }\r\n }\r\n\r\n if (country != \"\" && state != \"\") {\r\n var newLocation = country + \"-\" + state;\r\n return newLocation;\r\n }\r\n else {\r\n console.log(data.data.error_message);\r\n return \"US-WA\";\r\n }\r\n }\r\n }\r\n})();\r\n","(function () {\n 'use strict';\n\n //console.info(\"loading mapservice\");\n\n angular\n .module('AngularMapService', [])\n .factory('MapService', MapService);\n\n MapService.$inject = ['$rootScope'];\n\n function MapService($rootScope) {\n\n //console.info(\"mapservice factory\");\n\n var mainMap;\n var markers = [];\n var infoWindows = [];\n var baseUrl;\n\n /* SERVICE OBJECT */\n var serviceCalls = {\n Init: Init,\n AddMarker: AddMarker,\n AddInfoMarker: AddInfoMarker,\n SetCenter: SetCenter,\n ClearMarkers: ClearMarkers,\n GetCenter: GetCenter,\n GetNeCorner: GetNeCorner\n };\n return serviceCalls;\n\n function Init(mapId, options, urlbase) {\n baseUrl = urlbase;\n\n mainMap = new google.maps.Map(\n document.getElementById(mapId), options\n );\n\n google.maps.event.addListener(mainMap, 'dragend', function () {\n MapMover();\n });\n\n google.maps.event.addListener(mainMap, 'zoom_changed', function () {\n MapMover();\n });\n\n }\n\n function SetCenter(position) {\n mainMap.setCenter(position);\n }\n\n function GetCenter() {\n return mainMap.getCenter();\n }\n\n function GetNeCorner() {\n return mainMap.getBounds().getNorthEast();\n }\n\n function AddMarker(position, markerValue) {\n var newMarker = new google.maps.Marker({\n map: mainMap,\n position: position,\n label: {\n text: markerValue.toString(),\n color: 'rgba(255,255,255,1)',\n fontSize: '14px',\n fontWeight: 'bold'\n }\n });\n\n google.maps.event.addListener(newMarker, 'click', function () {\n window.location.href = baseUrl + pos.Url.substring(1);\n });\n\n markers.push(newMarker);\n }\n\n function AddInfoMarker(position, markerIcon, windowValue) {\n var infowindow = new google.maps.InfoWindow({\n content: windowValue\n });\n\n infoWindows[infoWindows.length] = infowindow;\n\n var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;\r\n var markerIconObj = isIE11 == true ? { url: markerIcon, scaledSize: new google.maps.Size(32, 32) } : markerIcon;\n\n var markerData = {\n position: position,\n map: mainMap,\n icon: markerIconObj,\n optimized: false,\n }\n\n //if (markerValue !== null) {\n // markerData[\"label\"] = {\n // //text: markerValue.toString(),\n // //color: 'rgba(255,255,255,1)',\n // //fontSize: '14px',\n // //fontWeight: 'bold'\n // };\n //}\n\n var marker = new google.maps.Marker(markerData);\n\n marker.addListener('click', function () {\n infoWindows.forEach(function (infoWindow) {\n infoWindow.close();\n });\n infowindow.open(mainMap, marker);\n });\n\n mainMap.setZoom(11);\n }\n\n function ClearMarkers() {\n for (var i = 0; i < markers.length; i++) {\n markers[i].setMap(null);\n }\n }\n\n function MapMover() {\n $rootScope.$broadcast('mapMoved');\n }\n\n }\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AngularUtilityService', [])\r\n .factory('UtilityService', UtilityService);\r\n\r\n function UtilityService() {\r\n\r\n /* SERVICE OBJECT */\r\n var serviceCalls = {\r\n SortByDistance: sortByDistance,\r\n GetDistance: getDistanceFromLatLonInKm,\r\n GetStateInfo: getStateInfo,\r\n GetStates: getStates\r\n };\r\n return serviceCalls;\r\n\r\n function sortByDistance(arrayOfThings) {\r\n var byFilter = arrayOfThings.slice(0);\r\n byFilter.sort(function (a, b) {\r\n return a.distance - b.distance;\r\n });\r\n\r\n return byFilter;\r\n }\r\n\r\n function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2) {\r\n var R = 6371; // Radius of the earth in km\r\n var dLat = Deg2Rad(lat2 - lat1); // deg2rad below\r\n var dLon = Deg2Rad(lon2 - lon1);\r\n var a =\r\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n Math.cos(Deg2Rad(lat1)) * Math.cos(Deg2Rad(lat2)) *\r\n Math.sin(dLon / 2) * Math.sin(dLon / 2)\r\n ;\r\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n var d = R * c; // Distance in km\r\n return d;\r\n }\r\n\r\n function Deg2Rad(deg) {\r\n return deg * Math.PI / 180;\r\n }\r\n\r\n function getStateInfo(code) {\r\n var states = getStates();\r\n for (var s = 0; s < states.length; s++) {\r\n if (states[s].Code == code) {\r\n return states[s];\r\n }\r\n }\r\n }\r\n\r\n function getStates() {\r\n var states = [];\r\n states.push({ \"Name\": \"Alabama\", \"Code\": \"US-AL\" });\r\n states.push({ \"Name\": \"Alaska\", \"Code\": \"US-AK\" });\r\n states.push({ \"Name\": \"Arizona\", \"Code\": \"US-AZ\" });\r\n states.push({ \"Name\": \"Arkansas\", \"Code\": \"US-AR\" });\r\n states.push({ \"Name\": \"California\", \"Code\": \"US-CA\" });\r\n states.push({ \"Name\": \"Colorado\", \"Code\": \"US-CO\" });\r\n states.push({ \"Name\": \"Connecticut\", \"Code\": \"US-CT\" });\r\n states.push({ \"Name\": \"Delaware\", \"Code\": \"US-DE\" });\r\n states.push({ \"Name\": \"Florida\", \"Code\": \"US-FL\" });\r\n states.push({ \"Name\": \"Georgia\", \"Code\": \"US-GA\" });\r\n states.push({ \"Name\": \"Hawaii\", \"Code\": \"US-HI\" });\r\n states.push({ \"Name\": \"Idaho\", \"Code\": \"US-ID\" });\r\n states.push({ \"Name\": \"Illinois\", \"Code\": \"US-IL\" });\r\n states.push({ \"Name\": \"Indiana\", \"Code\": \"US-IN\" });\r\n states.push({ \"Name\": \"Iowa\", \"Code\": \"US-IA\" });\r\n states.push({ \"Name\": \"Kansas\", \"Code\": \"US-KS\" });\r\n states.push({ \"Name\": \"Kentucky\", \"Code\": \"US-KY\" });\r\n states.push({ \"Name\": \"Louisiana\", \"Code\": \"US-LA\" });\r\n states.push({ \"Name\": \"Maine\", \"Code\": \"US-ME\" });\r\n states.push({ \"Name\": \"Maryland\", \"Code\": \"US-MD\" });\r\n states.push({ \"Name\": \"Massachusetts\", \"Code\": \"US-MA\" });\r\n states.push({ \"Name\": \"Michigan\", \"Code\": \"US-MI\" });\r\n states.push({ \"Name\": \"Minnesota\", \"Code\": \"US-MN\" });\r\n states.push({ \"Name\": \"Mississippi\", \"Code\": \"US-MS\" });\r\n states.push({ \"Name\": \"Missouri\", \"Code\": \"US-MO\" });\r\n states.push({ \"Name\": \"Montana\", \"Code\": \"US-MT\" });\r\n states.push({ \"Name\": \"Nebraska\", \"Code\": \"US-NE\" });\r\n states.push({ \"Name\": \"Nevada\", \"Code\": \"US-NV\" });\r\n states.push({ \"Name\": \"New Hampshire\", \"Code\": \"US-NH\" });\r\n states.push({ \"Name\": \"New Jersey\", \"Code\": \"US-NJ\" });\r\n states.push({ \"Name\": \"New Mexico\", \"Code\": \"US-NM\" });\r\n states.push({ \"Name\": \"New York\", \"Code\": \"US-NY\" });\r\n states.push({ \"Name\": \"North Carolina\", \"Code\": \"US-NC\" });\r\n states.push({ \"Name\": \"North Dakota\", \"Code\": \"US-ND\" });\r\n states.push({ \"Name\": \"Ohio\", \"Code\": \"US-OH\" });\r\n states.push({ \"Name\": \"Oklahoma\", \"Code\": \"US-OK\" });\r\n states.push({ \"Name\": \"Oregon\", \"Code\": \"US-OR\" });\r\n states.push({ \"Name\": \"Pennsylvania\", \"Code\": \"US-PA\" });\r\n states.push({ \"Name\": \"Puerto Rico\", \"Code\": \"US-PR\" });\r\n states.push({ \"Name\": \"Rhode Island\", \"Code\": \"US-RI\" });\r\n states.push({ \"Name\": \"South Carolina\", \"Code\": \"US-SC\" });\r\n states.push({ \"Name\": \"South Dakota\", \"Code\": \"US-SD\" });\r\n states.push({ \"Name\": \"Tennessee\", \"Code\": \"US-TN\" });\r\n states.push({ \"Name\": \"Texas\", \"Code\": \"US-TX\" });\r\n states.push({ \"Name\": \"Utah\", \"Code\": \"US-UT\" });\r\n states.push({ \"Name\": \"Vermont\", \"Code\": \"US-VT\" });\r\n states.push({ \"Name\": \"Virginia\", \"Code\": \"US-VA\" });\r\n states.push({ \"Name\": \"Washington\", \"Code\": \"US-WA\" });\r\n states.push({ \"Name\": \"Washington, D.C.\", \"Code\": \"US-DC\" });\r\n states.push({ \"Name\": \"West Virginia\", \"Code\": \"US-WV\" });\r\n states.push({ \"Name\": \"Wisconsin\", \"Code\": \"US-WI\" });\r\n states.push({ \"Name\": \"Wyoming\", \"Code\": \"US-WY\" });\r\n states.push({ \"Name\": \"Alberta\", \"Code\": \"CA-AB\" });\r\n states.push({ \"Name\": \"British Columbia\", \"Code\": \"CA-BC\" });\r\n states.push({ \"Name\": \"Manitoba\", \"Code\": \"CA-MB\" });\r\n states.push({ \"Name\": \"New Brunswick\", \"Code\": \"CA-NB\" });\r\n states.push({ \"Name\": \"Newfoundland\", \"Code\": \"CA-NF\" });\r\n states.push({ \"Name\": \"Nova Scotia\", \"Code\": \"CA-NS\" });\r\n states.push({ \"Name\": \"Prince Edward Island\", \"Code\": \"CA-PE\" });\r\n states.push({ \"Name\": \"Quebec\", \"Code\": \"CA-QC\" });\r\n states.push({ \"Name\": \"Saskatchewan\", \"Code\": \"CA-SK\" });\r\n states.push({ \"Name\": \"Northwest Territories\", \"Code\": \"CA-NT\" });\r\n states.push({ \"Name\": \"Nunavut\", \"Code\": \"CA-NU\" });\r\n states.push({ \"Name\": \"Yukon\", \"Code\": \"CA-YT\" });\r\n states.push({ \"Name\": \"Ontario\", \"Code\": \"CA-ON\" });\r\n return states;\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AngularWebService', [])\r\n .factory('WebService', WebService);\r\n\r\n WebService.$inject = ['$http'];\r\n\r\n function WebService($http) {\r\n\r\n /* SERVICE OBJECT */\r\n var serviceCalls = {\r\n Get: Get,\r\n Post: Post\r\n };\r\n return serviceCalls;\r\n\r\n /* SERVICE FUNCTION DEFINITIONS */\r\n function Get(url) {\r\n return $http.get(url)\r\n .then(function (data) {\r\n return data;\r\n }, function (data) {\r\n console.log(data);\r\n return null;\r\n });\r\n }\r\n\r\n function Post(url, data) {\r\n return $http.post(url, data)\r\n .then(function (data) {\r\n return data;\r\n }, function (data) {\r\n console.log(data);\r\n return null;\r\n });\r\n }\r\n }\r\n})();","!function(a,n){\"function\"==typeof define&&define.amd?define(n):\"object\"==typeof exports?module.exports=n(require,exports,module):a.CountUp=n()}(this,function(a,n,t){var e=function(a,n,t,e,i,r){function o(a){var n,t,e,i,r,o,s=a<0;if(a=Math.abs(a).toFixed(l.decimals),a+=\"\",n=a.split(\".\"),t=n[0],e=n.length>1?l.options.decimal+n[1]:\"\",l.options.useGrouping){for(i=\"\",r=0,o=t.length;r<o;++r)0!==r&&r%3===0&&(i=l.options.separator+i),i=t[o-r-1]+i;t=i}return l.options.numerals.length&&(t=t.replace(/[0-9]/g,function(a){return l.options.numerals[+a]}),e=e.replace(/[0-9]/g,function(a){return l.options.numerals[+a]})),(s?\"-\":\"\")+l.options.prefix+t+e+l.options.suffix}function s(a,n,t,e){return t*(-Math.pow(2,-10*a/e)+1)*1024/1023+n}function u(a){return\"number\"==typeof a&&!isNaN(a)}var l=this;if(l.version=function(){return\"1.9.3\"},l.options={useEasing:!0,useGrouping:!0,separator:\",\",decimal:\".\",easingFn:s,formattingFn:o,prefix:\"\",suffix:\"\",numerals:[]},r&&\"object\"==typeof r)for(var m in l.options)r.hasOwnProperty(m)&&null!==r[m]&&(l.options[m]=r[m]);\"\"===l.options.separator?l.options.useGrouping=!1:l.options.separator=\"\"+l.options.separator;for(var d=0,c=[\"webkit\",\"moz\",\"ms\",\"o\"],f=0;f<c.length&&!window.requestAnimationFrame;++f)window.requestAnimationFrame=window[c[f]+\"RequestAnimationFrame\"],window.cancelAnimationFrame=window[c[f]+\"CancelAnimationFrame\"]||window[c[f]+\"CancelRequestAnimationFrame\"];window.requestAnimationFrame||(window.requestAnimationFrame=function(a,n){var t=(new Date).getTime(),e=Math.max(0,16-(t-d)),i=window.setTimeout(function(){a(t+e)},e);return d=t+e,i}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)}),l.initialize=function(){return!!l.initialized||(l.error=\"\",l.d=\"string\"==typeof a?document.getElementById(a):a,l.d?(l.startVal=Number(n),l.endVal=Number(t),u(l.startVal)&&u(l.endVal)?(l.decimals=Math.max(0,e||0),l.dec=Math.pow(10,l.decimals),l.duration=1e3*Number(i)||2e3,l.countDown=l.startVal>l.endVal,l.frameVal=l.startVal,l.initialized=!0,!0):(l.error=\"[CountUp] startVal (\"+n+\") or endVal (\"+t+\") is not a number\",!1)):(l.error=\"[CountUp] target is null or undefined\",!1))},l.printValue=function(a){var n=l.options.formattingFn(a);\"INPUT\"===l.d.tagName?this.d.value=n:\"text\"===l.d.tagName||\"tspan\"===l.d.tagName?this.d.textContent=n:this.d.innerHTML=n},l.count=function(a){l.startTime||(l.startTime=a),l.timestamp=a;var n=a-l.startTime;l.remaining=l.duration-n,l.options.useEasing?l.countDown?l.frameVal=l.startVal-l.options.easingFn(n,0,l.startVal-l.endVal,l.duration):l.frameVal=l.options.easingFn(n,l.startVal,l.endVal-l.startVal,l.duration):l.countDown?l.frameVal=l.startVal-(l.startVal-l.endVal)*(n/l.duration):l.frameVal=l.startVal+(l.endVal-l.startVal)*(n/l.duration),l.countDown?l.frameVal=l.frameVal<l.endVal?l.endVal:l.frameVal:l.frameVal=l.frameVal>l.endVal?l.endVal:l.frameVal,l.frameVal=Math.round(l.frameVal*l.dec)/l.dec,l.printValue(l.frameVal),n<l.duration?l.rAF=requestAnimationFrame(l.count):l.callback&&l.callback()},l.start=function(a){l.initialize()&&(l.callback=a,l.rAF=requestAnimationFrame(l.count))},l.pauseResume=function(){l.paused?(l.paused=!1,delete l.startTime,l.duration=l.remaining,l.startVal=l.frameVal,requestAnimationFrame(l.count)):(l.paused=!0,cancelAnimationFrame(l.rAF))},l.reset=function(){l.paused=!1,delete l.startTime,l.initialized=!1,l.initialize()&&(cancelAnimationFrame(l.rAF),l.printValue(l.startVal))},l.update=function(a){if(l.initialize()){if(a=Number(a),!u(a))return void(l.error=\"[CountUp] update() - new endVal is not a number: \"+a);l.error=\"\",a!==l.frameVal&&(cancelAnimationFrame(l.rAF),l.paused=!1,delete l.startTime,l.startVal=l.frameVal,l.endVal=a,l.countDown=l.startVal>l.endVal,l.rAF=requestAnimationFrame(l.count))}},l.initialize()&&l.printValue(l.startVal)};return e});","!function(n){\"use strict\";var t=n.module(\"countUpModule\",[]);t.directive(\"countUp\",[\"$filter\",function(t){return{restrict:\"A\",scope:{startVal:\"=?\",endVal:\"=?\",duration:\"=?\",decimals:\"=?\",reanimateOnClick:\"=?\",filter:\"@\",options:\"=?\"},link:function(a,e,i){function r(){var n=a.filter.split(\":\"),e=n.shift();return function(a){var i=[a];return Array.prototype.push.apply(i,n),a=t(e).apply(null,i)}}function l(n,t,a,i){n=n||0,isNaN(n)&&(n=Number(n.match(/[\\d\\-\\.]+/g).join(\"\"))),t=t||0,isNaN(t)&&(t=Number(t.match(/[\\d\\-\\.]+/g).join(\"\"))),i=Number(i)||2,a=Number(a)||0;var r=new CountUp(e[0],n,t,a,i,u);return t>999&&(r=new CountUp(e[0],n,t-100,a,i/2,u)),r}function o(){s.reset(),a.endVal>999?s.start(function(){s.update(a.endVal)}):s.start()}var u={};if(a.filter){var c=r();u.formattingFn=c}a.options&&n.extend(u,a.options);var s=l(a.startVal,a.endVal,a.decimals,a.duration);i.scrollSpyEvent?a.$on(i.scrollSpyEvent,function(n,t){t===i.id&&o()}):o();var d=!n.isDefined(a.reanimateOnClick)||a.reanimateOnClick;d&&e.on(\"click\",function(){o()}),a.$watch(\"endVal\",function(n,t){null!==n&&n!==t&&(null!==s?s.update(a.endVal):(s=l(a.startVal,a.endVal,a.decimals,a.duration),o()))})}}}])}(angular);","(function() {\r\n //angular.module('st').requires.push('ngVis');\r\n angular.module('st').requires.push('cstudioApp.services');\r\n angular.module('st').requires.push('cstudioApp.filters');\r\n angular.module('st').requires.push('cstudioApp.directives');\r\n angular.module('st').requires.push('cstudioApp.controllers');\r\n angular.module('st').requires.push('ui.bootstrap');\r\n\r\n //angular.module(\"cstudioApp.controllers\", ['ngVis', 'ngAnimate']);\r\n angular.module(\"cstudioApp.controllers\", ['ngAnimate']);\r\n angular.module(\"cstudioApp.services\", []);\r\n angular.module(\"cstudioApp.filters\", []);\r\n angular.module(\"cstudioApp.directives\", []);\r\n\r\n //timelines next\r\n //http://visjs.org/docs/timeline/#Example\r\n\r\n\r\n //console.info(\"instantiated\");\r\n\r\n //function MovieController($scope, $compile, $timeout, $http, VisDataSet) {\r\n function MovieController($scope, $compile, $timeout, $http, $q) {\r\n //console.info(\"controller loaded\");\r\n let GET_ALL_SJO_DATA = false;\r\n let SJO_DATA_AND_CACHE_ENABLED = false;\r\n\r\n var mvm = this;\r\n mvm.ALLOW_GET_ALL_SJO_DATA = false;\r\n mvm.hello = \"hello world\";\r\n mvm.CURRENT_DATE = moment().format('MMM Do YYYY');\r\n mvm.CURRENT_DATE_URL = moment().format('YYYY-MM-DD');\r\n mvm.showTimeline = false;\r\n mvm.buildingTimeline = true;\r\n mvm.filteredItemsVariable = [];\r\n mvm.dates = [];\r\n mvm.dateArray = [];\r\n mvm.Datelimit = 0;\r\n mvm.hasShowTimes = false;\r\n mvm.movieFormatCodes = null;\r\n //var movieObj = movieData.slice(0, 20);\r\n mvm.filterByPlayingType = 'nowplaying';\r\n mvm.NowPlayingTab = true;\r\n var CINEMAS = [];\r\n var ORIGINAL_SHOWTIMES = [];\r\n var SHOWTIMES = [];\r\n var ORIGINAL_MOVIES = [];\r\n var MOVIES = [];\r\n //var TIMELINE = new vis.DataSet();\r\n //var ITEMS = new vis.DataSet();\r\n var TIMELINE = [];\r\n var ITEMS = [];\r\n\r\n var CALENDAR_DATA = {\r\n max_date: moment(),\r\n min_date: moment(),\r\n all_dates: []\r\n };\r\n mvm.SHOWTIMES_WITH_STATUSES = {};\r\n mvm.showtimeSelectedDate = moment().format('YYYY-MM-DD');\r\n //console.log('selected dated', mvm.showtimeSelectedDate);\r\n mvm.isNowPlaying = true;\r\n mvm.isComingSoon = false;\r\n mvm.isLoading = true;\r\n //mvm.isLoading = true;\r\n\r\n var counter = 0;\r\n var counter2 = 0;\r\n var SELECTED_DATE = moment();\r\n mvm.nextDay = nextDay;\r\n mvm.prevDay = prevDay;\r\n\r\n mvm.sortorder = \"+FilmTitle\";\r\n\r\n $scope.$watch('mvm.filterByCinemaLocation', function(newValue, oldValue) {\r\n if (newValue) {\r\n mvm.filterByCinemaLocation = newValue;\r\n //console.log('cinema', newValue);\r\n $(\"#share-film-cinema\").val(newValue);\r\n } else {\r\n mvm.filterByCinemaLocation = undefined;\r\n $(\"#share-film-cinema\").val('');\r\n }\r\n });\r\n\r\n\r\n mvm.filterByMultipleMovieFormats = function(item) {\r\n //console.log(item, mvm.filterByMovieFormat);\r\n };\r\n\r\n $scope.$watch('mvm.filterByMovieFormat', function(newValue, oldValue) {\r\n if (newValue) {\r\n mvm.filterByMovieFormat = newValue;\r\n //console.log('format', newValue);\r\n $(\"#share-film-format\").val(newValue);\r\n } else {\r\n mvm.filterByMovieFormat = undefined;\r\n $(\"#share-film-format\").val('');\r\n }\r\n });\r\n\r\n\r\n mvm.next = function() {\r\n if ((mvm.Datelimit + 4 === mvm.dateArray.length) || (mvm.Datelimit + 4 >= mvm.dateArray.length)) {\r\n return;\r\n } else {\r\n mvm.Datelimit += 1;\r\n }\r\n\r\n };\r\n\r\n mvm.prev = function() {\r\n if (mvm.Datelimit === 0) {\r\n mvm.Datelimit = 0;\r\n } else {\r\n mvm.Datelimit -= 1;\r\n }\r\n };\r\n\r\n mvm.getFilteredItemsVariable = function() {\r\n return mvm.filteredItemsVariable;\r\n };\r\n\r\n function nextDay() {\r\n SELECTED_DATE = moment(SELECTED_DATE).add(1, 'days');\r\n //console.log(SELECTED_DATE);\r\n buildTimeline();\r\n }\r\n\r\n function prevDay() {\r\n SELECTED_DATE = moment(SELECTED_DATE).add(-1, 'days');\r\n //console.log(SELECTED_DATE);\r\n buildTimeline();\r\n }\r\n\r\n function getCount() {\r\n return ++counter;\r\n }\r\n\r\n function getCount2() {\r\n return ++counter2;\r\n }\r\n\r\n function getMomentFromTimeString(str) {\r\n var t = moment(str, 'HH:mm A');\r\n // Now t is a moment.js object of today's date at the time given in str\r\n\r\n if (t.get('hour') < 22) // If it's before 9 pm\r\n t.add('d', 1); // Add 1 day, so that t is tomorrow's date at the same time\r\n\r\n return t;\r\n }\r\n\r\n function checkCalendarInformation(start, end) {\r\n //check min and max date\r\n CALENDAR_DATA.min_date = start.isBefore(CALENDAR_DATA.min_date) ? start : CALENDAR_DATA.min_date;\r\n CALENDAR_DATA.max_date = end.isAfter(CALENDAR_DATA.max_date) ? end : CALENDAR_DATA.max_date;\r\n\r\n var startOfDay = moment(start).clone().format('YYYY-MM-DD');\r\n if (CALENDAR_DATA.all_dates.indexOf(startOfDay) === -1) {\r\n CALENDAR_DATA.all_dates.push(startOfDay);\r\n }\r\n }\r\n\r\n function addTheatersFromFilm(movie, movieGroupId) {\r\n var showTimes = _.find(SHOWTIMES, { 'FilmId': movie.FilmId });\r\n var cinemaIds = [];\r\n\r\n _.forOwn(showTimes.Cinemas, function(cinema, cinemaName) {\r\n var cinemaVistaId = getCount();\r\n\r\n var itemsAdded = false;\r\n\r\n\r\n _.each(cinema, function(showing) {\r\n //var itemObj = {};\r\n //console.log('showing', showing, movie);\r\n var startOfDay = moment(showing.DateTime).clone().startOf('day');\r\n var start = moment(showing.DateTime).clone();\r\n var end = start.clone().add(movie.RunTime, 'minutes');\r\n checkCalendarInformation(start, end);\r\n if (SELECTED_DATE.startOf('day').isSame(startOfDay)) {\r\n var showingVistaId = getCount2();\r\n\r\n var itemContent = \"\";\r\n itemContent = \"<div class='showtime-template'><div class='square-grid'><div class='checkered-bg'></div></div><div class='time'>\" + moment(start).format(\"LT\") + \"</div><div class='type'>IMAX</div><div class='event'>$</div></div>\";\r\n\r\n //add ID so that we know this theatre has a showing for the selected date\r\n ITEMS.add({\r\n id: showingVistaId,\r\n group: cinemaVistaId,\r\n content: itemContent,\r\n start: start,\r\n end: end,\r\n type: 'range'\r\n });\r\n itemsAdded = true;\r\n } else {\r\n // They are not on the same day\r\n }\r\n });\r\n\r\n //only cinema row if a movie is playing for them\r\n if (itemsAdded) {\r\n TIMELINE.add({\r\n id: cinemaVistaId,\r\n content: getCinemaDetails(cinema, cinemaName),\r\n });\r\n\r\n cinemaIds.push(cinemaVistaId);\r\n }\r\n });\r\n return cinemaIds;\r\n }\r\n\r\n function buildTimeline() {\r\n\r\n //console.log('3 A');\r\n mvm.buildingTimeline = true;\r\n //RESET DATA\r\n //TIMELINE = new vis.DataSet();\r\n //ITEMS = new vis.DataSet();\r\n TIMELINE = [];\r\n ITEMS = [];\r\n CALENDAR_DATA.min_date = moment();\r\n CALENDAR_DATA.max_date = moment();\r\n CALENDAR_DATA.all_dates.length = 0;\r\n MOVIES = _.clone(ORIGINAL_MOVIES, true);\r\n //console.log('loaded 3', MOVIES);\r\n SHOWTIMES = _.clone(ORIGINAL_SHOWTIMES, true);\r\n counter = 0;\r\n counter2 = 0;\r\n\r\n mvm.movies = MOVIES;\r\n\r\n CALENDAR_DATA.all_dates.sort();\r\n\r\n }\r\n\r\n function getCinemaDetails(cinema, cinemaName) {\r\n var htmlStart = \"<div class='timeline-cinema-parent-container'><div class='row'>\";\r\n var detailsEnd = htmlStart + \"<div class='title'>\" + cinemaName + \"</div>\";\r\n var htmlEnd = detailsEnd + \"</div></div>\";\r\n return htmlEnd;\r\n }\r\n\r\n mvm.filteredItemsCinemaLocation = function(items) {\r\n //mvm.filterByCinemaLocation = undefined;\r\n //mvm.filterByMovieFormat = undefined;\r\n //console.log('filtered pre', items);\r\n var result = {};\r\n mvm.filteredItemsVariable = [];\r\n angular.forEach(items, function(value, key) {\r\n var byFilm = _.get(value, 'currentShowtimes.byFilm');\r\n //console.log(key, value, byFilm);\r\n\r\n angular.forEach(byFilm, function(value2, key2) {\r\n delete value2['Formats'];\r\n delete value2['undefined'];\r\n\r\n angular.forEach(value2, function(value3, key3) {\r\n //console.log(key3,value3)\r\n if (value3.Date === mvm.showtimeSelectedDate) {\r\n result[key2] = result[key2] || [];\r\n result[key2].push(value3);\r\n }\r\n });\r\n //console.log('result', result);\r\n //if (result[key2]) {\r\n // result[key2]['Formats'] = _.groupBy(result[key2], 'FormatCode');\r\n //}\r\n if (result[key2]) {\r\n result[key2]['Formats'] = _.groupBy(result[key2], 'FormatCode');\r\n\r\n var temp = [];\r\n _.forOwn(result[key2]['Formats'], function(f, v) {\r\n var temp2 = _.map(f, function(o) { return _.extend({ 'FormatType': v.trim() }, o) });\r\n temp.push(temp2);\r\n });\r\n\r\n result[key2]['Formats'] = temp;\r\n }\r\n });\r\n });\r\n\r\n //console.log('filtered post', result);\r\n var a = Object.keys(result).map(function(key) {\r\n var temp = {};\r\n temp['Title'] = key;\r\n temp['Formats'] = _.clone(result[key]['Formats']);\r\n temp['HOFilmCode'] = _.get(result[key], '[0][FilmID]');\r\n return temp;\r\n });\r\n\r\n $scope.$evalAsync(function() {\r\n //convert to array for filtering/sorting\r\n var arr = _.clone(a);\r\n\r\n var t = [];\r\n _.each(result, function(o) { _.forOwn(o['Formats'], function(f) { t = t.concat(f); }); });\r\n\r\n mvm.movieFormatFilterArray = _(t).map('FormatCode').uniq().value().map(Function.prototype.call, String.prototype.trim);\r\n\r\n var arr2 = [];\r\n _.each(arr, function(e) {\r\n var g;\r\n var aItem = _.find(t, function(a) { return a.FilmID === e.HOFilmCode; });\r\n g = _.merge({}, e, aItem);\r\n g['FilmTitle'] = mvm.filmKey[g.ScheduledFilmId].Title;\r\n g['Title'] = mvm.filmKey[g.ScheduledFilmId].Title;\r\n g['KeyCombo'] = g.FilmID + g.CinemaID + g.FormatCode;\r\n g['ReleaseDateDT'] = mvm.filmKey[g.FilmID].ReleaseDateDT;\r\n g['HOFilmCode'] = g.FilmID;\r\n aItem = null;\r\n formats = null;\r\n arr2.push(g);\r\n });\r\n\r\n mvm.filteredItemsVariable = arr2;\r\n //console.log('filtered', mvm.filteredItemsVariable);\r\n mvm.hasShowTimes = _.isEmpty(mvm.filteredItemsVariable, true) ? false : true;\r\n });\r\n };\r\n mvm.addToWatchlist = function(filmCode, event) {\r\n event.preventDefault();\r\n\r\n $http.post(\"/rpc/membership/account/watchlist/add/\" + filmCode)\r\n .then(function(data) {\r\n if (data.data.Success == true) {\r\n $scope.isInWatchlist = true;\r\n // success\r\n } else {\r\n // vista error\r\n alert('Error occurred while adding film to the watchlist.')\r\n }\r\n }).catch(function(error) {\r\n // our server error\r\n alert('Error occurred while adding film to the watchlist.')\r\n })\r\n }\r\n\r\n mvm.removeFromWatchlist = function(filmCode, event) {\r\n event.preventDefault();\r\n\r\n $http.post(\"/rpc/membership/account/watchlist/remove/\" + filmCode)\r\n .then(function(data) {\r\n if (data.data.Success == true) {\r\n $scope.isInWatchlist = false;\r\n // success\r\n } else {\r\n // vista error\r\n alert('Error occurred while adding film to the watchlist.')\r\n }\r\n }).catch(function(error) {\r\n // our server error\r\n alert('Error occurred while adding film to the watchlist.')\r\n })\r\n }\r\n\r\n mvm.initWatchlist = function(filmCode) {\r\n $scope.isInWatchlist = false;\r\n $scope.showWatchlistLink = false;\r\n\r\n $http.get(\"/rpc/membership/account/watchlist\")\r\n .then(function(data) {\r\n if (data.data.Success == true) {\r\n // success\r\n $scope.showWatchlistLink = true;\r\n\r\n for (var i = 0; i < data.data.Data.length; i++) {\r\n var film = data.data.Data[i];\r\n if (film.HOFilmCode == filmCode) {\r\n $scope.isInWatchlist = true;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n mvm.filteredItemsHomePage = function(items) {\r\n //mvm.filterByCinemaLocation = undefined;\r\n //mvm.filterByMovieFormat = undefined;\r\n //console.log('filtered pre', items);\r\n var result = {};\r\n mvm.filteredItemsVariable = [];\r\n angular.forEach(items, function(value, key) {\r\n var byFilm = _.get(value, 'currentShowtimes.byCinema');\r\n //console.log(key, value, byFilm);\r\n\r\n angular.forEach(byFilm, function(value2, key2) {\r\n delete value2['Formats'];\r\n delete value2['undefined'];\r\n\r\n angular.forEach(value2, function(value3, key3) {\r\n //console.log(key3,value3)\r\n if (value3.Date === mvm.showtimeSelectedDate) {\r\n result[key2] = result[key2] || [];\r\n result[key2].push(value3);\r\n }\r\n });\r\n //console.log('result', result);\r\n if (result[key2]) {\r\n result[key2]['Formats'] = _.groupBy(result[key2], 'FormatCode');\r\n }\r\n });\r\n });\r\n\r\n //console.log('filtered post', result);\r\n\r\n $scope.$evalAsync(function() {\r\n var t = [];\r\n _.each(result, function(o) { _.forOwn(o['Formats'], function(f) { t = t.concat(f); }); });\r\n\r\n mvm.movieFormatFilterArray = _(t).map('FormatCode').uniq().value().map(Function.prototype.call, String.prototype.trim);\r\n var cinemaIdsInList = _(t).map('CinemaID').uniq().value().map(Function.prototype.call, String.prototype.trim);\r\n\r\n mvm.cinemaFilterArray = _(mvm.cinemaKeyArray)\r\n .keyBy('VistaID')\r\n .at(cinemaIdsInList)\r\n .value();\r\n\r\n var now = moment();\r\n\r\n _.each(t, function(e) {\r\n e['FilmTitle'] = mvm.filmKey[e.ScheduledFilmId].Title;\r\n e['KeyCombo'] = e.FilmID + e.CinemaID + e.FormatCode;\r\n //TODO nowplayinglogic\r\n //e['PlayingType'] = moment(mvm.filmKey[e.ScheduledFilmId].ReleaseDateDT).isSameOrAfter(now) ? 'comingsoon' : 'nowplaying';\r\n e['PlayingType'] = 'nowplaying';\r\n e['ReleaseDateDT'] = mvm.filmKey[e.ScheduledFilmId].ReleaseDateDT;\r\n\r\n try {\r\n e['ReleaseDateDT'] = moment(mvm.filmKey[e.ScheduledFilmId].ReleaseDateDT).unix();\r\n } catch (err) {}\r\n\r\n e['RunTime'] = 0;\r\n try {\r\n let runtimeinseconds = mvm.filmKey[e.ScheduledFilmId].Duration;\r\n if (runtimeinseconds) {\r\n //convert something like 1h 22m into 1:22\r\n var b = runtimeinseconds.replace('h', ':');\r\n var c = b.replace('m', '');\r\n var d = c.replace(' ', '');\r\n //convert something like 1:22 into 82 seconds\r\n e['RunTime'] = +(d.split(':').reduce((acc, time) => (60 * acc) + +time));\r\n console(runtimeinseconds, e['RunTime']);\r\n }\r\n } catch (err) {}\r\n });\r\n\r\n //mvm.filteredItemsVariable = _.uniqBy(t, 'ScheduledFilmId');\r\n\r\n mvm.filteredItemsVariable = t;\r\n //console.log('filtered', mvm.filteredItemsVariable);\r\n mvm.hasShowTimes = _.isEmpty(mvm.filteredItemsVariable, true) ? false : true;\r\n });\r\n\r\n };\r\n\r\n mvm.ShowNowPlaying = function() {\r\n mvm.ComingSoonTab = false;\r\n mvm.NowPlayingTab = true;\r\n mvm.filterByPlayingType = 'nowplaying';\r\n //AOS.init(); \r\n\r\n $timeout(function() {\r\n AOS.refreshHard();\r\n }, 0);\r\n };\r\n mvm.ShowComingSoon = function() {\r\n mvm.NowPlayingTab = false;\r\n mvm.ComingSoonTab = true;\r\n mvm.filterByPlayingType = 'comingsoon';\r\n\r\n $timeout(function() {\r\n //jQuery('.coming-soon-container').addClass(\"aos-animate\"); \r\n AOS.refreshHard();\r\n }, 0);\r\n };\r\n\r\n function getTimelineDetails(movie, vistaID) {\r\n var newScope = $scope.$new(true);\r\n newScope.movie = movie;\r\n newScope.showImage = 'false';\r\n var dirCode = \"<movie-poster-information movie='movie' align-text=\" + 'left' + \"></movie-poster-information>\";\r\n\r\n var htmlStart = \"<div class='timeline-content-parent-container'><div class='row'>\";\r\n var img = htmlStart + \"<div class='timeline-image'><img class='timeline-movie-poster' ng-src='{{movie.Img}}' /></div>\";\r\n var detailsStart = img + \"<div class='timeline-details'>\";\r\n var movieDirective = detailsStart + dirCode;\r\n var detailsEnd = movieDirective + \"</div>\";\r\n var htmlEnd = detailsEnd + \"</div></div>\";\r\n var compiled = $compile(htmlEnd)(newScope);\r\n\r\n $timeout(function() {\r\n //wait for digest cycle to finish, function has already finished though\r\n //so we have to remove/add in the new/compiled content HTML object\r\n //console.info(\"clone\", ggroups, vistaID);\r\n var copy = _.clone(ggroups._data[vistaID], true);\r\n if (typeof copy !== \"undefined\") {\r\n copy.content = compiled[0].outerHTML;\r\n mvm.data.groups.remove(vistaID);\r\n mvm.data.groups.add(copy);\r\n }\r\n }, 0);\r\n\r\n return htmlEnd;\r\n }\r\n\r\n\r\n //disable for now\r\n mvm.routeParams = function() {\r\n var params = \"?date=\";\r\n params += mvm.CURRENT_DATE_URL;\r\n if (mvm.filterByCinemaLocation) {\r\n params += \"&cinema=\" + encodeURIComponent(mvm.filterByCinemaLocation);\r\n }\r\n if (mvm.filterByMovieFormat) {\r\n params += \"&format=\" + encodeURIComponent(mvm.filterByMovieFormat);\r\n }\r\n\r\n return params;\r\n };\r\n\r\n\r\n mvm.setButtonClass = function($index) {\r\n var obj = mvm.dateArray[$index + mvm.Datelimit];\r\n $scope.selectedTab = moment(obj.Moment).format(\"YYYY-MM-DD\");\r\n };\r\n\r\n mvm.getButtonClass = function($index) {\r\n var obj = mvm.dateArray[$index + mvm.Datelimit];\r\n return (moment(obj.Moment).format(\"YYYY-MM-DD\") === $scope.selectedTab) ? 'active' : \"\";\r\n };\r\n\r\n mvm.getNowPlayingClass = function(name) {\r\n return (name === mvm.filterByPlayingType) ? 'active' : \"\";\r\n };\r\n\r\n mvm.filteredItemsByFilm = function(items) {\r\n var result = {};\r\n mvm.filteredItemsVariable = [];\r\n\r\n angular.forEach(items, function(value, key) {\r\n delete value['Formats'];\r\n delete value['undefined'];\r\n\r\n angular.forEach(value, function(value2, key2) {\r\n //console.log(key2, value2);\r\n if (value2.Date === mvm.showtimeSelectedDate) {\r\n result[key] = result[key] || [];\r\n result[key].push(value2);\r\n }\r\n });\r\n //console.log('result', result);\r\n if (result[key]) {\r\n result[key]['Formats'] = _.groupBy(result[key], 'FormatCode');\r\n\r\n var temp = [];\r\n _.forOwn(result[key]['Formats'], function(f, v) {\r\n var temp2 = _.map(f, function(o) { return _.extend({ 'FormatType': v.trim() }, o) });\r\n temp.push(temp2);\r\n });\r\n\r\n result[key]['Formats'] = temp;\r\n }\r\n });\r\n\r\n $scope.$evalAsync(function() {\r\n var t = [];\r\n\r\n var arr = _.values(result);\r\n\r\n _.each(result, function(o) { _.forOwn(o['Formats'], function(f) { t = t.concat(f); }); });\r\n\r\n mvm.movieFormatFilterArray = _(t).map('FormatCode').uniq().value().map(Function.prototype.call, String.prototype.trim);\r\n\r\n var cinemaIdsInList = _(t).map('CinemaID').uniq().value().map(Function.prototype.call, String.prototype.trim);\r\n\r\n mvm.cinemaFilterArray = _(mvm.cinemaKeyArray)\r\n .keyBy('VistaID')\r\n .at(cinemaIdsInList)\r\n .value();\r\n\r\n var arr2 = [];\r\n _.each(arr, function(e) {\r\n var g;\r\n var cinema = mvm.cinemaKey[e[0].CinemaID];\r\n g = _.merge({}, e, cinema);\r\n g['FilmID'] = g[0]['FilmID'];\r\n g['KeyCombo'] = g.FilmID + g.VistaID;\r\n g['CinemaID'] = g['VistaID'];\r\n g['MovieFormats'] = Object.keys(e.Formats).map(Function.prototype.call, String.prototype.trim);\r\n arr2.push(g);\r\n });\r\n\r\n mvm.filteredItemsVariable = arr2;\r\n //console.log('filtered', mvm.filteredItemsVariable);\r\n mvm.hasShowTimes = _.isEmpty(mvm.filteredItemsVariable, true) ? false : true;\r\n });\r\n\r\n };\r\n\r\n function loadFirstTimeData(data) {\r\n //console.log('2 A');\r\n if (!data) {\r\n return;\r\n }\r\n //console.log('acc data', data);\r\n //console.log('load first', data);\r\n ORIGINAL_MOVIES = data.reduce(function(acc, item) {\r\n acc.push({\r\n \"FilmId\": item.FilmId,\r\n \"Title\": item.Title,\r\n \"Cert\": item.Cert,\r\n \"Img\": item.Img,\r\n \"Trailer\": item.Trailer,\r\n \"ReleaseDate\": item.ReleaseDate,\r\n \"RunTime\": item.RunTime,\r\n \"Rating\": item.Rating,\r\n \"Genres\": item.Genres,\r\n \"Synopsis\": item.Synopsis,\r\n \"Teaser\": item.Teaser,\r\n \"Cast\": item.Cast,\r\n \"Director\": item.Director,\r\n \"FriendlyName\": item.FriendlyName,\r\n \"foregroundImage\": item.Img,\r\n \"currentShowtimes\": item.currentShowtimes\r\n\r\n });\r\n return acc;\r\n }, []);\r\n //console.log('load second', ORIGINAL_MOVIES);\r\n //console.log('1 show', data);\r\n ORIGINAL_SHOWTIMES = data.reduce(function(acc, item) {\r\n acc.push({\r\n \"Title\": item.Title,\r\n \"FilmId\": item.FilmId,\r\n \"currentShowtimes\": item.currentShowtimes,\r\n \"TicketsSellingFast\": item.TicketsSellingFast,\r\n \"ShowSoldOut\": item.ShowSoldOut,\r\n \"EventName\": item.EventName,\r\n \"hasEvent\": item.hasEvent,\r\n \"ShowtimeDetailUrl\": item.ShowtimeDetailUrl,\r\n \"OverrideShowtimeIcon\": item.OverrideShowtimeIcon,\r\n \"OverrideShowtimeIconDescription\": item.OverrideShowtimeIconDescription,\r\n \"OverrideShowtimeIconKey\": item.OverrideShowtimeIconKey,\r\n \"OverrideShowtimeIconDescriptionKey\": item.OverrideShowtimeIconDescriptionKey,\r\n \"OverrideShowtimeIconKeyOrder\": item.OverrideShowtimeIconKeyOrder\r\n });\r\n return acc;\r\n }, []);\r\n\r\n //Compile list of theatres based on data\r\n _.each(SHOWTIMES, function(time) {\r\n _.each(time.Dates, function(date) {\r\n var ary = Object.keys(date);\r\n CINEMAS.push(ary);\r\n });\r\n });\r\n\r\n CINEMAS = _(CINEMAS).flattenDeep().uniq().value();\r\n //console.log('2 B');\r\n }\r\n\r\n\r\n function randomScore() {\r\n return Math.floor(Math.random() * 100);\r\n }\r\n\r\n function randomHours() {\r\n return Math.floor(Math.random() * 10);\r\n }\r\n\r\n var handleSuccess = function(data, status) {\r\n //console.log('1');\r\n loadFirstTimeData(data);\r\n buildTimeline(data);\r\n $timeout(function() { mvm.buildingTimeline = false; }, 0);\r\n $scope.$evalAsync(mvm.pageLoaded = true);\r\n //buildCalendarPicker()\r\n };\r\n\r\n function setWithExpiry(key, value, ttl) {\r\n const now = new Date()\r\n\r\n // `item` is an object which contains the original value\r\n // as well as the time when it's supposed to expire\r\n\r\n //compress value \r\n var compressedValue = value;\r\n compressedValue.data = JSON.stringify(compressedValue.data);\r\n compressedValue.calendarDates = JSON.stringify(compressedValue.calendarDates);\r\n compressedValue.films = JSON.stringify(compressedValue.films);\r\n compressedValue.dates = JSON.stringify(compressedValue.dates);\r\n compressedValue.cinemas = JSON.stringify(compressedValue.cinemas);\r\n //var compressedValue = JSON.stringify(value);\r\n\r\n //console.log('size of sjos: ' + roughSizeOfObject(compressedValue));\r\n\r\n const item = {\r\n value: compressedValue,\r\n expiry: now.getTime() + ttl,\r\n }\r\n //console.log(item);\r\n localStorage.setItem(key, JSON.stringify(item))\r\n }\r\n\r\n function getWithExpiry(key) {\r\n //remove old way if it still exists \r\n let oldKey = \"allsjos\";\r\n const itemStrOld = localStorage.getItem(oldKey)\r\n if (itemStrOld) {\r\n localStorage.removeItem(oldKey)\r\n }\r\n\r\n const itemStr = localStorage.getItem(key)\r\n // if the item doesn't exist, return null\r\n if (!itemStr) {\r\n return null\r\n }\r\n const item = JSON.parse(itemStr)\r\n const now = new Date()\r\n // compare the expiry time of the item with the current time\r\n if (now.getTime() > item.expiry) {\r\n // If the item is expired, delete the item from storage\r\n // and return null\r\n localStorage.removeItem(key)\r\n return null\r\n }\r\n var timetogo = item.expiry - now.getTime();\r\n try {\r\n timetogo = timetogo / 1000;\r\n timetogo = timetogo.toString().split(\".\")[0];\r\n timetogo = timetogo + \" seconds.\";\r\n } catch (err) {\r\n timetogo = timetogo + \" milliseconds.\"\r\n }\r\n //console.log('found cache for ' + key + '. Expires in ' + timetogo);\r\n return item.value\r\n }\r\n\r\n //caching size calculator\r\n function roughSizeOfObject(object) {\r\n\r\n var objectList = [];\r\n var stack = [object];\r\n var bytes = 0;\r\n\r\n while (stack.length) {\r\n var value = stack.pop();\r\n\r\n if (typeof value === 'boolean') {\r\n bytes += 4;\r\n } else if (typeof value === 'string') {\r\n bytes += value.length * 2;\r\n } else if (typeof value === 'number') {\r\n bytes += 8;\r\n } else if (\r\n typeof value === 'object' &&\r\n objectList.indexOf(value) === -1\r\n ) {\r\n objectList.push(value);\r\n\r\n for (var i in value) {\r\n stack.push(value[i]);\r\n }\r\n }\r\n }\r\n return bytes;\r\n }\r\n\r\n function getBaseSJO(sjoID) {\r\n var deferred = $q.defer();\r\n getMoreDataAPI(sjoID)\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n deferred.resolve(r);\r\n }\r\n })\r\n .catch(function(response) {\r\n deferred.resolve();\r\n })\r\n .finally(function(response) {\r\n\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getMoreData(sjoID) {\r\n var deferred = $q.defer();\r\n getMoreDataAPI(sjoID)\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n deferred.resolve(r);\r\n }\r\n })\r\n .catch(function(response) {\r\n deferred.resolve();\r\n })\r\n .finally(function(response) {\r\n\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getMoreDataByTitle(sjoID) {\r\n var deferred = $q.defer();\r\n getMoreDataByTitleAPI(sjoID)\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n deferred.resolve(r);\r\n }\r\n })\r\n .catch(function(response) {\r\n deferred.resolve();\r\n })\r\n .finally(function(response) {\r\n\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getMoreDataAPIAll() {\r\n var config = {\r\n cache: true\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/data/sjo/getAll\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n\r\n function getMoreDataAPI(sjoid) {\r\n var config = {\r\n cache: true,\r\n params: {\r\n id: sjoid\r\n }\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/data/sjo/getSJO\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getMoreDataByTitleAPI(sjoid) {\r\n var config = {\r\n cache: true,\r\n params: {\r\n id: sjoid\r\n }\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/data/sjo/getSJOByTitle\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n //rivertownData.getAllData(handleSuccess);\r\n\r\n $scope.init = function(data, ShowtimeStatuses) {\r\n $scope.today();\r\n mvm.SHOWTIMES_WITH_STATUSES = {};\r\n\r\n if (ShowtimeStatuses) {\r\n var showtimesWithStatuses = ShowtimeStatuses;\r\n _.each(showtimesWithStatuses, function(s) {\r\n mvm.SHOWTIMES_WITH_STATUSES[s.ID] = {\r\n soldOut: s.ShowSoldOut,\r\n sellingFast: s.TicketsSellingFast\r\n };\r\n });\r\n }\r\n var newData = SitefinityToJs(data);\r\n\r\n mvm.hasShowtimesForSelecedDate();\r\n mvm.isLoading = false;\r\n };\r\n\r\n $scope.lazyLoadSJOCinemaDetail = function(sjoID, ShowtimeStatuses) {\r\n //console.log('lazy load params:', sjoID, ShowtimeStatuses);\r\n\r\n $scope.today();\r\n\r\n sjoID = sjoID.toString();\r\n if (sjoID.length === 1) {\r\n sjoID = \"00\" + sjoID;\r\n }\r\n\r\n if (sjoID.length === 2) {\r\n sjoID = \"00\" + sjoID;\r\n }\r\n\r\n mvm.SHOWTIMES_WITH_STATUSES = {};\r\n\r\n if (ShowtimeStatuses) {\r\n var showtimesWithStatuses = ShowtimeStatuses;\r\n _.each(showtimesWithStatuses, function(s) {\r\n mvm.SHOWTIMES_WITH_STATUSES[s.ID] = {\r\n soldOut: s.ShowSoldOut,\r\n sellingFast: s.TicketsSellingFast\r\n };\r\n });\r\n }\r\n\r\n //disable temporarily until json cleaned up\r\n let cachedItem = null;\r\n\r\n //if false then this view isnt caching its data\r\n let allSJOCacheKey = \"sjo-allsjos\";\r\n //cachedItem = getWithExpiry(allSJOCacheKey);\r\n\r\n\r\n if (cachedItem) {\r\n SitefinityToJs(cachedItem);\r\n mvm.hasShowtimesForSelecedDate();\r\n $scope.selectedTab = mvm.getTodaysSelectedTab();\r\n mvm.isLoading = false;\r\n } else {\r\n getMoreDataByTitle(sjoID)\r\n .then(function(response) {\r\n SitefinityToJs(response);\r\n mvm.hasShowtimesForSelecedDate();\r\n $scope.selectedTab = mvm.getTodaysSelectedTab();\r\n mvm.isLoading = false;\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n $scope.lazyLoadSJOHomepage = function(sjoIDLightweight, sjoIDFull, ShowtimeStatuses) {\r\n //console.log('lazy load params:', sjoIDFull, sjoIDLightweight, ShowtimeStatuses);\r\n\r\n $scope.today();\r\n\r\n mvm.SHOWTIMES_WITH_STATUSES = {};\r\n\r\n if (ShowtimeStatuses) {\r\n var showtimesWithStatuses = ShowtimeStatuses;\r\n _.each(showtimesWithStatuses, function(s) {\r\n mvm.SHOWTIMES_WITH_STATUSES[s.ID] = {\r\n soldOut: s.ShowSoldOut,\r\n sellingFast: s.TicketsSellingFast\r\n };\r\n });\r\n }\r\n\r\n //disable temporarily until json cleaned up \r\n let cacheKey = \"sjo-allsjos\";\r\n let cachedItem = null;\r\n\r\n //if false then this view isnt caching its data\r\n cachedItem = getWithExpiry(cacheKey);\r\n\r\n if (cachedItem) {\r\n SitefinityToJs(cachedItem);\r\n mvm.hasShowtimesForSelecedDate();\r\n $scope.selectedTab = mvm.getTodaysSelectedTab();\r\n mvm.isLoading = false;\r\n } else {\r\n getBaseSJO(sjoIDLightweight)\r\n .then(function(baseresponse) {\r\n SitefinityToJs(baseresponse);\r\n mvm.hasShowtimesForSelecedDate();\r\n $scope.selectedTab = mvm.getTodaysSelectedTab();\r\n mvm.isLoading = false;\r\n getMoreData(sjoIDFull)\r\n .then(function(response) {\r\n try {\r\n if (cacheKey && response) {\r\n var tllMinutes = 30;\r\n var cacheTimeMilliseconds = tllMinutes * 1000 * 60;\r\n //console.log('caching: ' + cacheKey + \" for \" + cacheTimeMilliseconds + \"ms\");\r\n setWithExpiry(cacheKey, response, cacheTimeMilliseconds);\r\n //console.log('cached!');\r\n }\r\n } catch (err) {\r\n //console.log('failed to cache', err);\r\n }\r\n SitefinityToJs(response);\r\n //mvm.hasShowtimesForSelecedDate();\r\n //$scope.selectedTab = mvm.getTodaysSelectedTab();\r\n });\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n mvm.AOSRefresh = function() {\r\n jQuery(\".now-playing-container\").removeClass(\"aos-animate\")\r\n $timeout(function() {\r\n AOS.refreshHard();\r\n }, 500);\r\n }\r\n\r\n mvm.hasShowtimesForSelecedDate = function() {\r\n return mvm.hasShowTimes;\r\n };\r\n\r\n mvm.formattedDate = function() {\r\n return moment($scope.dt).format('MMM Do YYYY');\r\n };\r\n\r\n\r\n $scope.today = function() {\r\n $scope.dt = new Date();\r\n mvm.showtimeSelectedDate = moment($scope.dt).format('YYYY-MM-DD');\r\n };\r\n\r\n\r\n $scope.clear = function() {\r\n $scope.dt = null;\r\n };\r\n\r\n mvm.DateChange = function(date) {\r\n var temp = moment(date).format('YYYY-MM-DD');\r\n mvm.CURRENT_DATE_URL = temp;\r\n mvm.CURRENT_DATE = moment(temp).format('MMM Do YYYY');\r\n $scope.$evalAsync(function() {\r\n $scope.selectedTab = temp.toString();\r\n\r\n var dateindex = _.findIndex(mvm.dateArray, { StringDate: moment(temp).format('YYYY-MM-DD') });\r\n //var modifier = dateindex <= 4 ? 0 : dateindex-3;\r\n //mvm.Datelimit = modifier;\r\n var sharedate = moment(temp).format('YYYY-MM-DD');\r\n $(\"#share-film-date\").val(sharedate);\r\n mvm.Datelimit = dateindex;\r\n });\r\n mvm.showtimeSelectedDate = temp;\r\n\r\n jQuery(\".now-playing-container\").removeClass(\"aos-animate\")\r\n $timeout(function() {\r\n AOS.refreshHard();\r\n }, 500);\r\n //console.log('date changed to: ', temp);\r\n };\r\n\r\n $scope.inlineOptions = {\r\n customClass: getDayClass,\r\n minDate: new Date(),\r\n showWeeks: true\r\n };\r\n var nextMonth = new Date();\r\n nextMonth.setMonth(nextMonth.getMonth() + 3);\r\n $scope.dateOptions = {\r\n dateDisabled: disabledTest,\r\n formatYear: 'yy',\r\n maxDate: nextMonth,\r\n minDate: new Date(),\r\n startingDay: 1,\r\n showWeeks: false\r\n\r\n };\r\n\r\n // Disable weekend selection\r\n function disabled(data) {\r\n var date = data.date,\r\n mode = data.mode;\r\n return mode === 'day' && (date.getDay() === 0 || date.getDay() === 6);\r\n }\r\n var dayDuration = 60 * 60 * 24 * 1000;\r\n\r\n function areDatesEqual(date1, date2) {\r\n return (parseInt(date1 / dayDuration)) === (parseInt(date2 / dayDuration));\r\n }\r\n //Disable all days but showtime days\r\n function disabledTest(data) {\r\n var date = data.date,\r\n mode = data.mode;\r\n\r\n var isRealDate = false;\r\n\r\n for (var i = 0; i < mvm.dates.length; i++) {\r\n //console.log('dates',mvm.dates);\r\n var momentDate = moment(mvm.dates[i]).toDate();\r\n if (areDatesEqual(momentDate, date)) {\r\n isRealDate = true;\r\n }\r\n }\r\n\r\n return mode === 'day' && !isRealDate; // && (date >= $scope.endDate);\r\n }\r\n\r\n $scope.toggleMin = function() {\r\n $scope.inlineOptions.minDate = $scope.inlineOptions.minDate ? null : new Date();\r\n $scope.dateOptions.minDate = $scope.inlineOptions.minDate;\r\n };\r\n\r\n $scope.toggleMin();\r\n\r\n $scope.open1 = function() {\r\n $scope.popup1.opened = true;\r\n };\r\n\r\n $scope.open2 = function() {\r\n $scope.popup2.opened = true;\r\n };\r\n\r\n mvm.filterByMultipleMovieFormatsFilmDetail = function(value) {\r\n var f = [];\r\n _.forOwn(value.Formats, function(v) { f.push(v[0].FormatCode.trim()); });\r\n\r\n if (!mvm.filterByMovieFormat) {\r\n return true;\r\n } else {\r\n if (f.indexOf(mvm.filterByMovieFormat) > -1) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n };\r\n\r\n mvm.filterByMovieFormatFunction = function(value) {\r\n var f = [];\r\n _.forOwn(value.Formats, function(v) { f.push(v[0].FormatCode.trim()); });\r\n\r\n if (!mvm.filterByMovieFormat) {\r\n return true;\r\n } else {\r\n if (f.indexOf(mvm.filterByMovieFormat) > -1) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n };\r\n\r\n mvm.getTodaysSelectedTab = function() {\r\n return moment().format('YYYY-MM-DD');\r\n };\r\n mvm.setManualDate = function($index) {\r\n var obj = mvm.dateArray[$index + mvm.Datelimit];\r\n $scope.setDate(obj.Moment.year(), obj.Moment.month(), obj.Moment.date());\r\n };\r\n $scope.setDate = function(year, month, day) {\r\n //console.log('1', year, month, day);\r\n $scope.dt = new Date(year, month, day);\r\n mvm.showtimeSelectedDate = moment().year(year).month(month).date(day).format('YYYY-MM-DD');\r\n\r\n var date= moment().year(year).month(month).date(day).format('YYYY-MM-DD');\r\n $(\"#share-film-date\").val(date);\r\n\r\n $scope.$evalAsync(function() {\r\n $scope.selectedTab = mvm.showtimeSelectedDate.toString();\r\n mvm.CURRENT_DATE_URL = mvm.showtimeSelectedDate;\r\n mvm.CURRENT_DATE = moment(mvm.showtimeSelectedDate).format('MMM Do YYYY');\r\n });\r\n //console.log(mvm.showtimeSelectedDate);\r\n //console.log('new date');\r\n jQuery(\".now-playing-container\").removeClass(\"aos-animate\")\r\n $timeout(function() {\r\n AOS.refreshHard();\r\n }, 500);\r\n };\r\n\r\n $scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];\r\n $scope.format = $scope.formats[0];\r\n $scope.altInputFormats = ['M!/d!/yyyy'];\r\n\r\n $scope.popup1 = {\r\n opened: false\r\n };\r\n\r\n $scope.popup2 = {\r\n opened: false\r\n };\r\n\r\n var tomorrow = new Date();\r\n tomorrow.setDate(tomorrow.getDate() + 1);\r\n var afterTomorrow = new Date();\r\n afterTomorrow.setDate(tomorrow.getDate() + 1);\r\n\r\n\r\n\r\n function getDayClass(data) {\r\n var date = data.date,\r\n mode = data.mode;\r\n if (mode === 'day') {\r\n var dayToCheck = new Date(date).setHours(0, 0, 0, 0);\r\n\r\n for (var i = 0; i < $scope.events.length; i++) {\r\n var currentDay = new Date($scope.events[i].date).setHours(0, 0, 0, 0);\r\n\r\n if (dayToCheck === currentDay) {\r\n return $scope.events[i].status;\r\n }\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n\r\n mvm.logs = {};\r\n\r\n function start() {\r\n startTime = new Date();\r\n }\r\n\r\n function end() {\r\n endTime = new Date();\r\n var timeDiff = endTime - startTime; //in ms\r\n // strip the ms\r\n timeDiff /= 1000;\r\n\r\n // get seconds \r\n seconds = Math.round(timeDiff);\r\n }\r\n\r\n function SitefinityToJs(data) {\r\n var now = moment();\r\n\r\n //homepage is structured with cleaner json than other view, so re-string this since its re-used till other pages use showtimeVMHomepage class in sync\r\n try {\r\n var testParsed = JSON.parse(data);\r\n testParsed.data = _.isString(testParsed.data) ? testParsed.data : JSON.stringify(testParsed.data);\r\n testParsed.calendarDates = _.isString(testParsed.calendarDates) ? testParsed.calendarDates : JSON.stringify(testParsed.calendarDates);\r\n testParsed.films = _.isString(testParsed.films) ? testParsed.films : JSON.stringify(testParsed.films);\r\n testParsed.dates = _.isString(testParsed.dates) ? testParsed.dates : JSON.stringify(testParsed.dates);\r\n testParsed.cinemas = _.isString(testParsed.cinemas) ? testParsed.cinemas : JSON.stringify(testParsed.cinemas);\r\n data = testParsed;\r\n } catch (ex) {\r\n // execution continues here when an error was thrown. You can also inspect the `ex`ception object\r\n }\r\n\r\n var dataParsed = data;\r\n\r\n var updatedData = JSON.parse(dataParsed.data);\r\n\r\n _.each(updatedData, function(u) {\r\n delete u['TicketsOnSale'];\r\n _.forOwn(u['currentShowtimes'], function(g) {\r\n delete g['TicketsOnSale'];\r\n });\r\n _.forOwn(u['Showtime'], function(g) {\r\n delete g['TicketsOnSale'];\r\n\r\n if (mvm.SHOWTIMES_WITH_STATUSES[g.Title]) {\r\n g.ShowSoldOut = mvm.SHOWTIMES_WITH_STATUSES[g.Title].soldOut;\r\n g.TicketsSellingFast = mvm.SHOWTIMES_WITH_STATUSES[g.Title].sellingFast;\r\n }\r\n });\r\n });\r\n\r\n var calDates = JSON.parse(dataParsed.calendarDates);\r\n mvm.filmKey = JSON.parse(dataParsed.films);\r\n\r\n _.each(mvm.filmKey, function(u) {\r\n var tos = _.get(u, 'TicketsOnSale');\r\n if (tos) {\r\n u['TicketsOnSale'] = moment(u['TicketsOnSale']).isBefore(now) ? true : false;\r\n } else {\r\n u['TicketsOnSale'] = true;\r\n }\r\n });\r\n\r\n mvm.cinemaKey = JSON.parse(dataParsed.cinemas);\r\n mvm.cinemaKeyArray = _.values(mvm.cinemaKey);\r\n var tempdates = JSON.parse(dataParsed.dates);\r\n\r\n\r\n\r\n _.each(updatedData, function(e) {\r\n e.Showtime = _.filter(e.Showtime, function(j) {\r\n var tempTime = moment(j.StartTime);\r\n var diff = tempTime.diff(now, 'minutes');\r\n //-11 is ~10 minutes past, so a showing at 12:00pm will still buy seeable/buyable at 12:10pm per Studio c\r\n var TimePastShowtimeToKeepShowingShowtime = -11;\r\n if (diff >= TimePastShowtimeToKeepShowingShowtime) {\r\n return j;\r\n } else {\r\n j;\r\n }\r\n });\r\n\r\n });\r\n\r\n\r\n //momentJS conversions\r\n calDates.forEach(function(el) {\r\n el['Moment'] = moment(el.Moment);\r\n el['StringDate'] = moment(el.Moment).format('YYYY-MM-DD');\r\n });\r\n\r\n var temparray = [];\r\n tempdates.forEach(function(d) {\r\n //var temp = d.split(\"-\");\r\n //var datetime = moment().year(temp[0]).month(temp[1]).date(temp[2]);\r\n //datetime = datetime.subtract(1, 'month');\r\n var datetime = moment(d);\r\n if (moment(datetime).isBefore(moment(), 'day')) {\r\n //dont include date\r\n } else {\r\n var iscurrentDate = datetime.isSameOrAfter(moment(), \"day\");\r\n if (iscurrentDate) {\r\n temparray.push(d);\r\n }\r\n }\r\n });\r\n\r\n mvm.dates = temparray;\r\n mvm.dateArray = calDates;\r\n\r\n mvm.calendarToday = {\r\n date: moment(),\r\n text: 'Today',\r\n dateString: moment().year() + \", \" + moment().month() + \", \" + moment().day()\r\n };\r\n mvm.calendarTomorrow = {\r\n date: moment(mvm.calendarToday.date).add(1, 'days'),\r\n text: moment(mvm.calendarToday.date).add(1, 'days').format('dddd'),\r\n dateString: moment(mvm.calendarToday.date).add(1, 'days').year() + \", \" + moment(mvm.calendarToday.date).add(1, 'days').month() + \", \" + moment(mvm.calendarToday.date).add(1, 'days').day()\r\n };\r\n mvm.calendarTomorrow2 = {\r\n date: moment(mvm.calendarToday.date).add(2, 'days'),\r\n text: moment(mvm.calendarToday.date).add(2, 'days').format('dddd'),\r\n dateString: moment(mvm.calendarToday.date).add(2, 'days').year() + \", \" + moment(mvm.calendarToday.date).add(2, 'days').month() + \", \" + moment(mvm.calendarToday.date).add(2, 'days').day()\r\n };\r\n\r\n _.each(updatedData, function(m) {\r\n m['currentShowtimes']['byFormat'] = {};\r\n m['currentShowtimes']['byCinema'] = {};\r\n m['currentShowtimes']['byFilm'] = {};\r\n\r\n m['currentShowtimes']['byFormat'] = _.groupBy(m.Showtime, 'FormatCode');\r\n m['currentShowtimes']['byCinema'] = _.groupBy(m.Showtime, function(x) { return mvm.cinemaKey[x.CinemaID].Title });\r\n m['currentShowtimes']['byFilm'] = _.groupBy(m.Showtime, function(x) { return mvm.filmKey[x.FilmID].Title; });\r\n\r\n //console.log('cinemas', m['currentShowtimes']['byCinema']);\r\n\r\n _.forOwn(m['currentShowtimes']['byCinema'], function(value, key) {\r\n m['currentShowtimes']['byCinema'][key]['Formats'] = _.groupBy(value, 'FormatCode');\r\n });\r\n\r\n _.forOwn(m['currentShowtimes']['byFilm'], function(value, key) {\r\n m['currentShowtimes']['byFilm'][key]['Formats'] = _.groupBy(value, 'FormatCode');\r\n });\r\n\r\n //overrite index values with only key/values\r\n var temp = {};\r\n temp['byFormat'] = m['currentShowtimes']['byFormat'];\r\n temp['byCinema'] = m['currentShowtimes']['byCinema'];\r\n temp['byFilm'] = m['currentShowtimes']['byFilm'];\r\n m['currentShowtimes'] = temp;\r\n\r\n var tempAry = [];\r\n var momentToday = moment();\r\n var counter = 0;\r\n _.each(mvm.dates, function(d) {\r\n\r\n var datetime = moment(d);\r\n var obj = {\r\n Text: moment(datetime).format(\"ddd M/D\"),\r\n Moment: datetime,\r\n ID: counter,\r\n StringDate: moment(datetime).format('YYYY-MM-DD')\r\n };\r\n\r\n var iscurrentDate = datetime.isSame(moment(), \"day\");\r\n if (iscurrentDate) {\r\n obj.Text = \"Today\";\r\n }\r\n var isTomorrowDate = datetime.isSame(moment().add(1, 'day'), \"day\");\r\n if (isTomorrowDate) {\r\n obj.Text = \"Tomorrow\";\r\n }\r\n\r\n if (moment(datetime).isBefore(moment(), 'day')) {\r\n //its an old date, don't show it\r\n } else {\r\n tempAry.push(obj);\r\n }\r\n counter++;\r\n //console.log(d, datetime);\r\n });\r\n\r\n //$scope.$evalAsync(function () {\r\n mvm.dateArray = tempAry;\r\n //});\r\n getQueryString = function() {\r\n var key = false,\r\n res = {},\r\n itm = null;\r\n // get the query string without the ?\r\n var qs = location.search.substring(1);\r\n // check for the key as an argument\r\n if (arguments.length > 0 && arguments[0].length > 1)\r\n key = arguments[0];\r\n // make a regex pattern to grab key/value\r\n var pattern = /([^&=]+)=([^&]*)/g;\r\n // loop the items in the query string, either\r\n // find a match to the argument, or build an object\r\n // with key/value pairs\r\n while (itm = pattern.exec(qs)) {\r\n if (key !== false && decodeURIComponent(itm[1]) === key)\r\n return decodeURIComponent(itm[2]);\r\n else if (key === false)\r\n res[decodeURIComponent(itm[1])] = decodeURIComponent(itm[2]);\r\n }\r\n\r\n return key === false ? res : null;\r\n }\r\n\r\n var dateparam = getQueryString(\"date\");\r\n var cinemaparam = getQueryString(\"cinema\");\r\n var formatparam = getQueryString(\"format\");\r\n\r\n if (dateparam) {\r\n var tempdate = moment(dateparam);\r\n if (tempdate && tempdate.isValid()) {\r\n //set calendar to this url param date\r\n $scope.setDate(tempdate.year(), tempdate.month(), tempdate.date());\r\n\r\n var dateindex = _.findIndex(mvm.dateArray, { StringDate: moment(tempdate).format('YYYY-MM-DD') });\r\n //var modifier = dateindex <= 4 ? 0 : dateindex - 3;\r\n //mvm.Datelimit = modifier;\r\n mvm.Datelimit = dateindex;\r\n //console.log('date param', moment(tempdate).format('YYYY-MM-DD'));\r\n }\r\n } else {\r\n if (mvm.dateArray && mvm.dateArray.length) {\r\n tempdate = _.get(mvm.dateArray, '[0].Moment');\r\n if (tempdate && tempdate.isValid()) {\r\n $scope.setDate(tempdate.year(), tempdate.month(), tempdate.date());\r\n \r\n //console.log('temp date', tempdate);\r\n dateindex = _.findIndex(mvm.dateArray, { StringDate: moment(tempdate).format('YYYY-MM-DD') });\r\n //var modifier = dateindex <= 4 ? 0 : dateindex - 3;\r\n //mvm.Datelimit = modifier;\r\n mvm.Datelimit = dateindex;\r\n }\r\n }\r\n }\r\n\r\n if (cinemaparam) {\r\n var cinema = decodeURIComponent(cinemaparam);\r\n mvm.filterByCinemaLocation = cinema;\r\n $(\"#share-film-cinema\").val(cinemaparam);\r\n //console.log('cinema param', cinemaparam);\r\n }\r\n\r\n if (formatparam) {\r\n var format = decodeURIComponent(formatparam);\r\n mvm.filterByMovieFormat = format;\r\n $(\"#share-film-format\").val(formatparam);\r\n //console.log('format param', formatparam);\r\n }\r\n //console.log('ary', mvm.dateArray);\r\n //console.log('current showtimes', m['currentShowtimes']);\r\n });\r\n\r\n handleSuccess(updatedData);\r\n }\r\n\r\n function publishTimeline() {\r\n\r\n //console.log('4');\r\n\r\n window.ggroups = TIMELINE;\r\n window.gitems = ITEMS;\r\n\r\n mvm.data = { groups: TIMELINE, items: ITEMS };\r\n\r\n var gstart = new Date(SELECTED_DATE);\r\n // gstart.setHours(6, 0, 0, 0);\r\n gstart.setHours(9, 0, 0, 0);\r\n gstart = moment(gstart);\r\n\r\n var gend = new Date(SELECTED_DATE);\r\n gend.setHours(23, 59, 59, 999);\r\n gend = moment(gend);\r\n\r\n mvm.options = {\r\n format: {\r\n minorLabels: function(date, scale, step) {\r\n return \"<strong>\" + moment(date).format('h a') + \"</strong>\";\r\n },\r\n majorLabels: function(date, scale, step) {\r\n return \"<strong>\" + moment(date).format('h a') + \"</strong>\";\r\n }\r\n },\r\n min: gstart,\r\n max: gend,\r\n orientation: {\r\n axis: \"both\"\r\n },\r\n timeAxis: {\r\n scale: 'hour'\r\n },\r\n zoomable: false,\r\n horizontalScroll: true,\r\n moveable: true,\r\n stack: true,\r\n showCurrentTime: false,\r\n showMajorLabels: false,\r\n showMinorLabels: true,\r\n autoResize: true,\r\n zoomMax: 28800000 // 8 hours in milliseconds\r\n };\r\n\r\n\r\n mvm.onSelect = function(items) {\r\n //console.log(arguments);\r\n // debugger;\r\n //console.log('select');\r\n };\r\n\r\n mvm.onClick = function(props) {\r\n props.event.stopPropagation();\r\n props.event.preventDefault();\r\n\r\n var ignoreClick = props['what'] === 'group-label' ? true : false;\r\n if (ignoreClick) {\r\n props.event.stopPropagation();\r\n props.event.preventDefault();\r\n }\r\n };\r\n\r\n mvm.onDoubleClick = function(props) {\r\n // debugger;\r\n //console.log('DoubleClick');\r\n };\r\n\r\n mvm.rightClick = function(props) {\r\n //console.log('Right click!');\r\n props.event.preventDefault();\r\n };\r\n\r\n mvm.onRangeChange = function(props) {\r\n //console.log('on range change');\r\n };\r\n\r\n mvm.onRangeChanged = function(props) {\r\n //console.log('on range changed');\r\n };\r\n mvm.events = {\r\n rangechange: mvm.onRangeChange,\r\n rangechanged: mvm.onRangeChanged,\r\n onload: mvm.onLoaded,\r\n select: mvm.onSelect,\r\n click: mvm.onClick,\r\n doubleClick: mvm.onDoubleClick,\r\n contextmenu: mvm.rightClick\r\n };\r\n\r\n mvm.selectedDate = SELECTED_DATE.format(\"MM/DD\");\r\n mvm.buildingTimeline = false;\r\n\r\n\r\n\r\n mvm.playingNow = function() {\r\n mvm.isComingSoon = false;\r\n mvm.isNowPlaying = true;\r\n //console.log('playing now');\r\n };\r\n\r\n mvm.comingSoon = function() {\r\n mvm.isNowPlaying = false;\r\n mvm.isComingSoon = true;\r\n //console.log('coming soon');\r\n };\r\n }\r\n //console.log('vis', vis);\r\n //console.log('mvm', mvm); \r\n\r\n\r\n }\r\n MovieController.$inject = [\"$scope\", \"$compile\", \"$timeout\", \"$http\", \"$q\"];\r\n angular\r\n .module(\"cstudioApp.controllers\")\r\n .controller(\"MovieController\", MovieController);\r\n})();\r\n\r\nangular\r\n .module(\"cstudioApp.controllers\")\r\n .filter('toArray', function() {\r\n return function(obj) {\r\n if (!(obj instanceof Object)) return obj;\r\n return _.map(obj, function(val, key) {\r\n return Object.defineProperty(val, '$key', { __proto__: null, value: key });\r\n });\r\n };\r\n });\r\n\r\nangular\r\n .module(\"cstudioApp.controllers\")\r\n .filter('unique', function() {\r\n return function(items, filterOn) {\r\n\r\n if (filterOn === false) {\r\n return items;\r\n }\r\n\r\n if ((filterOn || angular.isUndefined(filterOn)) && angular.isArray(items)) {\r\n var hashCheck = {},\r\n newItems = [];\r\n\r\n var extractValueToCompare = function(item) {\r\n if (angular.isObject(item) && angular.isString(filterOn)) {\r\n return item[filterOn];\r\n } else {\r\n return item;\r\n }\r\n };\r\n\r\n angular.forEach(items, function(item) {\r\n var valueToCheck, isDuplicate = false;\r\n\r\n for (var i = 0; i < newItems.length; i++) {\r\n if (angular.equals(extractValueToCompare(newItems[i]), extractValueToCompare(item))) {\r\n isDuplicate = true;\r\n break;\r\n }\r\n }\r\n if (!isDuplicate) {\r\n newItems.push(item);\r\n }\r\n\r\n });\r\n items = newItems;\r\n }\r\n return items;\r\n };\r\n });","// (function() {\r\n// function VisDataSet() {\r\n// return function (data, options) {\r\n// // Create the new dataSets\r\n// return new vis.DataSet(data, options);\r\n// };\r\n// }\r\n// VisDataSet.$inject = [];\r\n// angular.module(\"timelineVis\").factory(\"VisDataSet\", VisDataSet);\r\n// })();\r\n\r\n\r\n\r\n// (function() {\r\n// function visTimeline() {\r\n \r\n// 'use strict';\r\n// return {\r\n// restrict: 'EA',\r\n// transclude: false,\r\n// scope: {\r\n// data: '=',\r\n// options: '=',\r\n// events: '='\r\n// },\r\n// link: function (scope, element, attr) {\r\n// var timelineEvents = [\r\n// 'rangechange',\r\n// 'rangechanged',\r\n// 'timechange',\r\n// 'timechanged',\r\n// 'select',\r\n// 'doubleClick',\r\n// 'click',\r\n// 'contextmenu'\r\n// ];\r\n\r\n// // Declare the timeline\r\n// var timeline = null;\r\n\r\n// scope.$watch('data', function () {\r\n// // Sanity check\r\n// if (scope.data == null) {\r\n// return;\r\n// }\r\n\r\n// // If we've actually changed the data set, then recreate the graph\r\n// // We can always update the data by adding more data to the existing data set\r\n// if (timeline != null) {\r\n// timeline.destroy();\r\n// }\r\n\r\n// // Create the timeline object\r\n// timeline = new vis.Timeline(element[0], scope.data.items, scope.data.groups, scope.options);\r\n\r\n// // Attach an event handler if defined\r\n// angular.forEach(scope.events, function (callback, event) {\r\n// if (timelineEvents.indexOf(String(event)) >= 0) {\r\n// timeline.on(event, callback);\r\n// }\r\n// });\r\n\r\n// // onLoad callback\r\n// if (scope.events != null && scope.events.onload != null &&\r\n// angular.isFunction(scope.events.onload)) {\r\n// scope.events.onload(timeline);\r\n// }\r\n// });\r\n\r\n// scope.$watchCollection('options', function (options) {\r\n// if (timeline == null) {\r\n// return;\r\n// }\r\n// timeline.setOptions(options);\r\n// });\r\n// }\r\n// };\r\n// }\r\n\r\n// visTimeline.$inject = [];\r\n// angular.module(\"timelineVis\").directive(\"visTimeline\", visTimeline);\r\n// })();\r\n\r\n\r\n\r\n// (function() {\r\n// function visNetwork() {\r\n \r\n// return {\r\n// restrict: 'EA',\r\n// transclude: false,\r\n// scope: {\r\n// data: '=',\r\n// options: '=',\r\n// events: '='\r\n// },\r\n// link: function (scope, element, attr) {\r\n// var networkEvents = [\r\n// 'click',\r\n// 'doubleClick',\r\n// 'oncontext',\r\n// 'hold',\r\n// 'release',\r\n// 'selectNode',\r\n// 'selectEdge',\r\n// 'deselectNode',\r\n// 'deselectEdge',\r\n// 'dragStart',\r\n// 'dragging',\r\n// 'dragEnd',\r\n// 'hoverNode',\r\n// 'hoverEdge',\r\n// 'blurNode',\r\n// 'blurEdge',\r\n// 'zoom',\r\n// 'showPopup',\r\n// 'hidePopup',\r\n// 'startStabilizing',\r\n// 'stabilizationProgress',\r\n// 'stabilizationIterationsDone',\r\n// 'stabilized',\r\n// 'resize',\r\n// 'initRedraw',\r\n// 'beforeDrawing',\r\n// 'afterDrawing',\r\n// 'animationFinished'\r\n\r\n// ];\r\n\r\n// var network = null;\r\n\r\n// scope.$watch('data', function () {\r\n// // Sanity check\r\n// if (scope.data == null) {\r\n// return;\r\n// }\r\n\r\n// // If we've actually changed the data set, then recreate the graph\r\n// // We can always update the data by adding more data to the existing data set\r\n// if (network != null) {\r\n// network.destroy();\r\n// }\r\n\r\n// // Create the graph2d object\r\n// network = new vis.Network(element[0], scope.data, scope.options);\r\n\r\n// // Attach an event handler if defined\r\n// angular.forEach(scope.events, function (callback, event) {\r\n// if (networkEvents.indexOf(String(event)) >= 0) {\r\n// network.on(event, callback);\r\n// }\r\n// });\r\n\r\n// // onLoad callback\r\n// if (scope.events != null && scope.events.onload != null &&\r\n// angular.isFunction(scope.events.onload)) {\r\n// scope.events.onload(network);\r\n// }\r\n// });\r\n\r\n// scope.$watchCollection('options', function (options) {\r\n// if (network == null) {\r\n// return;\r\n// }\r\n// network.setOptions(options);\r\n// });\r\n// }\r\n// };\r\n// }\r\n\r\n// visNetwork.$inject = [];\r\n// angular.module(\"timelineVis\").directive(\"visNetwork\", visNetwork);\r\n// })();\r\n\r\n\r\n\r\n// (function() {\r\n// function visGraph2d() {\r\n \r\n// 'use strict';\r\n// return {\r\n// restrict: 'EA',\r\n// transclude: false,\r\n// scope: {\r\n// data: '=',\r\n// options: '=',\r\n// events: '='\r\n// },\r\n// link: function (scope, element, attr) {\r\n// var graphEvents = [\r\n// 'rangechange',\r\n// 'rangechanged',\r\n// 'timechange',\r\n// 'timechanged',\r\n// 'finishedRedraw'\r\n// ];\r\n\r\n// // Create the chart\r\n// var graph = null;\r\n\r\n// scope.$watch('data', function () {\r\n// // Sanity check\r\n// if (scope.data == null) {\r\n// return;\r\n// }\r\n\r\n// // If we've actually changed the data set, then recreate the graph\r\n// // We can always update the data by adding more data to the existing data set\r\n// if (graph != null) {\r\n// graph.destroy();\r\n// }\r\n\r\n// // Create the graph2d object\r\n// graph = new vis.Graph2d(element[0], scope.data.items, scope.data.groups, scope.options);\r\n\r\n// // Attach an event handler if defined\r\n// angular.forEach(scope.events, function (callback, event) {\r\n// if (graphEvents.indexOf(String(event)) >= 0) {\r\n// graph.on(event, callback);\r\n// }\r\n// });\r\n\r\n// // onLoad callback\r\n// if (scope.events != null && scope.events.onload != null &&\r\n// angular.isFunction(scope.events.onload)) {\r\n// scope.events.onload(graph);\r\n// }\r\n// });\r\n\r\n// scope.$watchCollection('options', function (options) {\r\n// if (graph == null) {\r\n// return;\r\n// }\r\n// graph.setOptions(options);\r\n// });\r\n// }\r\n// };\r\n// }\r\n// visGraph2d.$inject = [];\r\n// angular.module(\"timelineVis\").directive(\"visGraph2d\", visGraph2d);\r\n// })();\r\n\r\n\r\n\r\n(function() {\r\n\r\n angular.module('ngVis', [])\r\n\r\n .factory('VisDataSet', function () {\r\n 'use strict';\r\n return function (data, options) {\r\n // Create the new dataSets\r\n return new vis.DataSet(data, options);\r\n };\r\n })\r\n\r\n/**\r\n * TimeLine directive\r\n */\r\n .directive('visTimeline', function () {\r\n 'use strict';\r\n return {\r\n restrict: 'EA',\r\n transclude: false,\r\n scope: {\r\n data: '=',\r\n options: '=',\r\n events: '='\r\n },\r\n link: function (scope, element, attr) {\r\n var timelineEvents = [\r\n 'rangechange',\r\n 'rangechanged',\r\n 'timechange',\r\n 'timechanged',\r\n 'select',\r\n 'doubleClick',\r\n 'click',\r\n 'contextmenu'\r\n ];\r\n\r\n // Declare the timeline\r\n var timeline = null;\r\n\r\n scope.$watch('data', function () {\r\n // Sanity check\r\n if (scope.data == null) {\r\n return;\r\n }\r\n\r\n // If we've actually changed the data set, then recreate the graph\r\n // We can always update the data by adding more data to the existing data set\r\n if (timeline != null) {\r\n timeline.destroy();\r\n }\r\n\r\n // Create the timeline object\r\n timeline = new vis.Timeline(element[0], scope.data.items, scope.data.groups, scope.options);\r\n\r\n // Attach an event handler if defined\r\n angular.forEach(scope.events, function (callback, event) {\r\n if (timelineEvents.indexOf(String(event)) >= 0) {\r\n timeline.on(event, callback);\r\n }\r\n });\r\n\r\n // onLoad callback\r\n if (scope.events != null && scope.events.onload != null &&\r\n angular.isFunction(scope.events.onload)) {\r\n scope.events.onload(timeline);\r\n }\r\n });\r\n\r\n scope.$watchCollection('options', function (options) {\r\n if (timeline == null) {\r\n return;\r\n }\r\n timeline.setOptions(options);\r\n });\r\n }\r\n };\r\n })\r\n\r\n/**\r\n * Directive for network chart.\r\n */\r\n .directive('visNetwork', function () {\r\n return {\r\n restrict: 'EA',\r\n transclude: false,\r\n scope: {\r\n data: '=',\r\n options: '=',\r\n events: '='\r\n },\r\n link: function (scope, element, attr) {\r\n var networkEvents = [\r\n 'click',\r\n 'doubleClick',\r\n 'oncontext',\r\n 'hold',\r\n 'release',\r\n 'selectNode',\r\n 'selectEdge',\r\n 'deselectNode',\r\n 'deselectEdge',\r\n 'dragStart',\r\n 'dragging',\r\n 'dragEnd',\r\n 'hoverNode',\r\n 'hoverEdge',\r\n 'blurNode',\r\n 'blurEdge',\r\n 'zoom',\r\n 'showPopup',\r\n 'hidePopup',\r\n 'startStabilizing',\r\n 'stabilizationProgress',\r\n 'stabilizationIterationsDone',\r\n 'stabilized',\r\n 'resize',\r\n 'initRedraw',\r\n 'beforeDrawing',\r\n 'afterDrawing',\r\n 'animationFinished'\r\n\r\n ];\r\n\r\n var network = null;\r\n\r\n scope.$watch('data', function () {\r\n // Sanity check\r\n if (scope.data == null) {\r\n return;\r\n }\r\n\r\n // If we've actually changed the data set, then recreate the graph\r\n // We can always update the data by adding more data to the existing data set\r\n if (network != null) {\r\n network.destroy();\r\n }\r\n\r\n // Create the graph2d object\r\n network = new vis.Network(element[0], scope.data, scope.options);\r\n\r\n // Attach an event handler if defined\r\n angular.forEach(scope.events, function (callback, event) {\r\n if (networkEvents.indexOf(String(event)) >= 0) {\r\n network.on(event, callback);\r\n }\r\n });\r\n\r\n // onLoad callback\r\n if (scope.events != null && scope.events.onload != null &&\r\n angular.isFunction(scope.events.onload)) {\r\n scope.events.onload(network);\r\n }\r\n });\r\n\r\n scope.$watchCollection('options', function (options) {\r\n if (network == null) {\r\n return;\r\n }\r\n network.setOptions(options);\r\n });\r\n }\r\n };\r\n })\r\n\r\n/**\r\n * Directive for graph2d.\r\n */\r\n .directive('visGraph2d', function () {\r\n 'use strict';\r\n return {\r\n restrict: 'EA',\r\n transclude: false,\r\n scope: {\r\n data: '=',\r\n options: '=',\r\n events: '='\r\n },\r\n link: function (scope, element, attr) {\r\n var graphEvents = [\r\n 'rangechange',\r\n 'rangechanged',\r\n 'timechange',\r\n 'timechanged',\r\n 'finishedRedraw'\r\n ];\r\n\r\n // Create the chart\r\n var graph = null;\r\n\r\n scope.$watch('data', function () {\r\n // Sanity check\r\n if (scope.data == null) {\r\n return;\r\n }\r\n\r\n // If we've actually changed the data set, then recreate the graph\r\n // We can always update the data by adding more data to the existing data set\r\n if (graph != null) {\r\n graph.destroy();\r\n }\r\n\r\n // Create the graph2d object\r\n graph = new vis.Graph2d(element[0], scope.data.items, scope.data.groups, scope.options);\r\n\r\n // Attach an event handler if defined\r\n angular.forEach(scope.events, function (callback, event) {\r\n if (graphEvents.indexOf(String(event)) >= 0) {\r\n graph.on(event, callback);\r\n }\r\n });\r\n\r\n // onLoad callback\r\n if (scope.events != null && scope.events.onload != null &&\r\n angular.isFunction(scope.events.onload)) {\r\n scope.events.onload(graph);\r\n }\r\n });\r\n\r\n scope.$watchCollection('options', function (options) {\r\n if (graph == null) {\r\n return;\r\n }\r\n graph.setOptions(options);\r\n });\r\n }\r\n };\r\n })\r\n;\r\n\r\n})();","(function() {\r\n function AudienceRatingFormatter() {\r\n var score = \"\";\r\n return function(rating) {\r\n if (_.isNull(rating) || _.isUndefined(rating)) {\r\n return score;\r\n } else {\r\n switch (true) {\r\n case (rating < 50):\r\n score = \"audiencebad.png\";\r\n break;\r\n case (rating >= 50):\r\n score = \"audiencegood.png\";\r\n break;\r\n }\r\n\r\n return score;\r\n }\r\n };\r\n }\r\n AudienceRatingFormatter.$inject = [];\r\n angular\r\n .module(\"cstudioApp.filters\")\r\n .filter(\"AudienceRatingFormatter\", AudienceRatingFormatter);\r\n})();","(function() {\r\n angular.module(\"cstudioApp.services\").factory('genreData', function(){\r\n return [{\r\n ID: \"0000000001\",\r\n Name: \"Crime\",\r\n NameTranslations: [],\r\n Description: \"Crime\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"0000000002\",\r\n Name: \"Fantasy\",\r\n NameTranslations: [],\r\n Description: \"Fantasy\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"0000000003\",\r\n Name: \"History\",\r\n NameTranslations: [],\r\n Description: \"History\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000001\",\r\n Name: \"Comedy\",\r\n NameTranslations: [],\r\n Description: \"Comedy\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000002\",\r\n Name: \"Drama\",\r\n NameTranslations: [],\r\n Description: \"Drama\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000003\",\r\n Name: \"Horror\",\r\n NameTranslations: [],\r\n Description: \"Horror\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000004\",\r\n Name: \"Thriller\",\r\n NameTranslations: [],\r\n Description: \"Thriller\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000005\",\r\n Name: \"Documentary\",\r\n NameTranslations: [],\r\n Description: \"Documentary\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000006\",\r\n Name: \"Family\",\r\n NameTranslations: [],\r\n Description: \"Family/Children\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000007\",\r\n Name: \"Science Fiction\",\r\n NameTranslations: [],\r\n Description: \"Sci Fi/Fantasy\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000008\",\r\n Name: \"Childrens\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000009\",\r\n Name: \"Western\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000010\",\r\n Name: \"Action\",\r\n NameTranslations: [],\r\n Description: \"Action/Adventure\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000011\",\r\n Name: \"Adventure\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000012\",\r\n Name: \"Romance\",\r\n NameTranslations: [],\r\n Description: \"Romance\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000013\",\r\n Name: \"Musical\",\r\n NameTranslations: [],\r\n Description: \"Musical\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000014\",\r\n Name: \"War\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000015\",\r\n Name: \"Test\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000016\",\r\n Name: \"Outtakes Festival\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000017\",\r\n Name: \"Animated\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000018\",\r\n Name: \"Teen\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000019\",\r\n Name: \"Fantasy\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000020\",\r\n Name: \"Live Sport Broadcast\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000021\",\r\n Name: \"Indian\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000022\",\r\n Name: \"Festival\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000023\",\r\n Name: \"Foreign\",\r\n NameTranslations: [],\r\n Description: \"Foreign\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000024\",\r\n Name: \"Martial Arts\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000025\",\r\n Name: \"Concert\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000026\",\r\n Name: \"Biography\",\r\n NameTranslations: [],\r\n Description: \"Biography\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000027\",\r\n Name: \"Period Drama\",\r\n NameTranslations: [],\r\n Description: \"Period Drama\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000028\",\r\n Name: \"Cinema Asia\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000029\",\r\n Name: \"3D\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000030\",\r\n Name: \"IMAX\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n }\r\n ];\r\n \r\n });\r\n})();\r\n\r\n\r\n// (function() {\r\n// angular.module(\"cstudioApp.services\").factory(\"genreData\", function() {\r\n// return [{\r\n// ID: \"0000000001\",\r\n// Name: \"Crime\",\r\n// NameTranslations: [],\r\n// Description: \"Crime\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"0000000002\",\r\n// Name: \"Fantasy\",\r\n// NameTranslations: [],\r\n// Description: \"Fantasy\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"0000000003\",\r\n// Name: \"History\",\r\n// NameTranslations: [],\r\n// Description: \"History\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000001\",\r\n// Name: \"Comedy\",\r\n// NameTranslations: [],\r\n// Description: \"Comedy\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000002\",\r\n// Name: \"Drama\",\r\n// NameTranslations: [],\r\n// Description: \"Drama\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000003\",\r\n// Name: \"Horror\",\r\n// NameTranslations: [],\r\n// Description: \"Horror\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000004\",\r\n// Name: \"Thriller\",\r\n// NameTranslations: [],\r\n// Description: \"Thriller\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000005\",\r\n// Name: \"Documentary\",\r\n// NameTranslations: [],\r\n// Description: \"Documentary\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000006\",\r\n// Name: \"Family\",\r\n// NameTranslations: [],\r\n// Description: \"Family/Children\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000007\",\r\n// Name: \"Science Fiction\",\r\n// NameTranslations: [],\r\n// Description: \"Sci Fi/Fantasy\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000008\",\r\n// Name: \"Childrens\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000009\",\r\n// Name: \"Western\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000010\",\r\n// Name: \"Action\",\r\n// NameTranslations: [],\r\n// Description: \"Action/Adventure\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000011\",\r\n// Name: \"Adventure\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000012\",\r\n// Name: \"Romance\",\r\n// NameTranslations: [],\r\n// Description: \"Romance\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000013\",\r\n// Name: \"Musical\",\r\n// NameTranslations: [],\r\n// Description: \"Musical\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000014\",\r\n// Name: \"War\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000015\",\r\n// Name: \"Test\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000016\",\r\n// Name: \"Outtakes Festival\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000017\",\r\n// Name: \"Animated\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000018\",\r\n// Name: \"Teen\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000019\",\r\n// Name: \"Fantasy\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000020\",\r\n// Name: \"Live Sport Broadcast\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000021\",\r\n// Name: \"Indian\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000022\",\r\n// Name: \"Festival\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000023\",\r\n// Name: \"Foreign\",\r\n// NameTranslations: [],\r\n// Description: \"Foreign\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000024\",\r\n// Name: \"Martial Arts\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000025\",\r\n// Name: \"Concert\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000026\",\r\n// Name: \"Biography\",\r\n// NameTranslations: [],\r\n// Description: \"Biography\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000027\",\r\n// Name: \"Period Drama\",\r\n// NameTranslations: [],\r\n// Description: \"Period Drama\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000028\",\r\n// Name: \"Cinema Asia\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000029\",\r\n// Name: \"3D\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000030\",\r\n// Name: \"IMAX\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// }\r\n// ];\r\n// });\r\n// })();\r\n","(function() {\r\n function GenreFormatter(genreData) {\r\n return function(genreId) {\r\n var foundGenre = _.result(\r\n _.find(genreData, function(o) {\r\n return o.ID === genreId;\r\n }),\r\n \"Name\"\r\n );\r\n //console.log(foundGenre);\r\n return foundGenre;\r\n };\r\n }\r\n GenreFormatter.$inject = [\"genreData\"];\r\n angular\r\n .module(\"cstudioApp.filters\")\r\n .filter(\"GenreFormatter\", GenreFormatter);\r\n})();","\r\n(function() {\r\n //As an optional paramter to show Released or Releasing text in front of the date.\r\n //Example no text {{movie.OpeningDate | MonthDayFormatter}}\r\n //Example no text {{movie.OpeningDate | MonthDayFormatter: [false]}}\r\n //Example with text, {{movie.OpeningDate | MonthDayFormatter: [true]}}\r\n function MonthDayFormatter() {\r\n return function(datetime, includeText) {\r\n if (_.isNull(datetime) || _.isUndefined(datetime)) {\r\n return includeText ? \"Releasing: TBA\" : \"TBA\";\r\n } else {\r\n var releasingText = \"\";\r\n datetime = moment(datetime);\r\n if (includeText) {\r\n var today = moment();\r\n var dateDifference = datetime.diff(today);\r\n releasingText =\r\n dateDifference <= 0 ? \"Released: \" : \"Releasing: \";\r\n }\r\n return (releasingText) + moment(datetime).format(\"MMM. Do\");\r\n }\r\n };\r\n }\r\n MonthDayFormatter.$inject = [];\r\n angular\r\n .module(\"cstudioApp.filters\")\r\n .filter(\"MonthDayFormatter\", MonthDayFormatter);\r\n})();","(function() {\r\n function moviePosterInformation() {\r\n return {\r\n restrict: 'E',\r\n template: '<div ng-include=\"getTemplateUrl()\"></div>',\r\n //templateUrl: function (element, attrs) {\r\n // console.log(attrs['templateType']);\r\n // var url = \"\";\r\n\r\n // switch (attrs['templateType']) {\r\n // case 'movie-detail':\r\n // url = '/Assets/Templates/tmpl.moviePosterInformationMovieDetail.html';\r\n // break;\r\n // case 'location-detail':\r\n // url = '/Assets/Templates/tmpl.moviePosterInformationLocationDetail.html';\r\n // break;\r\n // default:\r\n // url = '/Assets/Templates/tmpl.moviePosterInformation.html';\r\n // break;\r\n // }\r\n // console.log('template: ' + url);\r\n // return url;\r\n //},\r\n //templateUrl: '/Assets/Templates/tmpl.moviePosterInformation.html',\r\n scope: {\r\n movie: \"=\",\r\n filteredShowtimes: '=totalShowings',\r\n ticketsOnSale: \"=\",\r\n movieFormatType: \"=\",\r\n alignText: \"@\",\r\n showImage: \"@\",\r\n cappedWidth: \"@\",\r\n cardType:\"@\",\r\n disabledShowtimesDir: \"=disabledshowtimes\"\r\n },\r\n link: function (scope, element, attrs) {\r\n //console.log('s',scope);\r\n scope.customClasses = \"\";\r\n //scope.filteredShowtimesLength = _.get(scope.$parent.filteredShowtimes,'length');\r\n if ('cardType' in attrs) {\r\n scope.cardType = attrs['alignText'];\r\n }\r\n\r\n if (scope.cappedWidth) {\r\n scope.customClasses+= \"capped-width\";\r\n }\r\n\r\n if ('alignText' in attrs) {\r\n scope.alignment = 'movie-text-align-'+attrs['alignText'];\r\n scope.customClasses+= \" \" + scope.alignment;\r\n }\r\n\r\n scope.titleText = function (show) {\r\n if (!scope.ticketsOnSale) {\r\n return 'Tickets coming soon';\r\n }\r\n if (show.ShowSoldOut) {\r\n return 'Tickets are sold out';\r\n }\r\n }\r\n\r\n\r\n scope.isDisabledShowtime2 = function(id, ids) { \r\n return (ids.indexOf(id) > -1);\r\n }\r\n\r\n //if (scope.filteredShowtimes) {\r\n // scope.showingCount = scope.filteredShowtimes.length;\r\n //}\r\n\r\n //if ($parent.filteredShowtimes) {\r\n // scope.showingCount = $parent.filteredShowtimes.length;\r\n //}\r\n //scope.$watch('$parent.filteredShowtimes', function (newItems, oldItems) {\r\n // console.log('l', _.get(newItems, 'length'));\r\n //});\r\n //scope.$watch('scope.filteredShowtimes', function (newItems, oldItems) {\r\n // console.log('2', _.get(newItems, 'length'));\r\n //});\r\n //scope.$watch('scope.$parent.filteredShowtimes', function (newItems, oldItems) {\r\n // console.log('3', _.get(newItems,'length'));\r\n //});\r\n //scope.$watch('$parent.filteredShowtimes', function (newItems, oldItems) {\r\n // console.log('2', newItems);\r\n //});\r\n\r\n\r\n scope.getTemplateUrl = function () {\r\n var url = \"\";\r\n\r\n switch (scope.cardType) {\r\n case 'movie-detail':\r\n url = '/Assets/Templates/tmpl.moviePosterInformationMovieDetail.html';\r\n break;\r\n case 'location-detail':\r\n url = '/Assets/Templates/tmpl.moviePosterInformationLocationDetail.html';\r\n break;\r\n case 'home-page':\r\n url = '/Assets/Templates/tmpl.moviePosterInformation.html';\r\n break;\r\n default:\r\n url = '/Assets/Templates/tmpl.moviePosterInformation.html';\r\n break;\r\n }\r\n //console.log('template: ' + url);\r\n return url;\r\n };\r\n }\r\n };\r\n }\r\n moviePosterInformation.$inject = [];\r\n angular\r\n .module(\"cstudioApp.directives\")\r\n .directive(\"moviePosterInformation\", moviePosterInformation);\r\n})();","function MovieRatingFormatter() {\r\n return function (rating) {\r\n return rating ? rating : \"NR\";\r\n };\r\n}\r\nMovieRatingFormatter.$inject = [];\r\nangular\r\n .module(\"cstudioApp.filters\")\r\n .filter(\"MovieRatingFormatter\", MovieRatingFormatter);\r\n","(function() {\r\n angular.module(\"cstudioApp.services\").factory('rivertownData', function($http, $q) {\r\n\r\n function getAllData(callback) {\r\n var defer = $q.defer();\r\n var promises = [];\r\n\r\n promises.push(getRivertownData());\r\n promises.push(getCinemaSouthData());\r\n promises.push(getNorthData());\r\n promises.push(getWoodlandData());\r\n promises.push(getCarouselData());\r\n promises.push(getPlazaData());\r\n promises.push(getMeridianData());\r\n promises.push(getLansingData());\r\n promises.push(getBentonHarborData());\r\n promises.push(getMtPleasantData());\r\n promises.push(getCrossroadsData());\r\n\r\n $q.all(promises)\r\n .then(function (response) {\r\n\r\n var newArray = [];\r\n //console.log(response);\r\n _.each(response, function (r) {\r\n newArray.push(_.get(r, 'data'));\r\n });\r\n\r\n //console.log(newArray);\r\n //combine all cinema movie data\r\n var merged = [].concat.apply([], newArray);\r\n\r\n// console.log('merged',merged);\r\n\r\n //combine all Sessions by FilmId\r\n var combinedShowTimes = _(merged).flattenDeep().groupBy(\"FilmId\").mapValues(function (x) { _.flatMapDeep(x, function (y) { return y.Sessions }) }).map(function (v, k) { ({ FilmId: Number(k), Sessions: v }) }).value();\r\n //var movie1 = _.clone(combinedShowTimes[0], true); \r\n\r\n //remap movies to have all showtimes\r\n _.each(merged, function(movie) {\r\n var combinedSessions = _.find(combinedShowTimes, { 'FilmId': movie.FilmId });\r\n if (combinedSessions) {\r\n movie.Sessions = combinedSessions.Sessions;\r\n }\r\n });\r\n\r\n //remove duplicate movies\r\n var unique = _.uniqBy(merged, 'FilmId');\r\n //sort movies by name\r\n var sorted = _.sortBy(unique, 'Title');\r\n\r\n //Build out Session structure by Date\r\n _.each(sorted, function(movie) {\r\n movie.Sessions = _.groupBy(movie.Sessions, 'NewDate');\r\n _.each(movie.Sessions, function(session, key) {\r\n var combinedShowTimesV2 = _(session).flattenDeep().groupBy(\"NewDate\").mapValues(function (x) { _.flatMapDeep(x, function (y) { return y.Times; }) }).map(function (v, k) { ({ NewDate: k, Times: v }) }).value();\r\n movie.Sessions[key] = _.groupBy(combinedShowTimesV2[0].Times, 'CinemaName');\r\n });\r\n });\r\n\r\n //Build out Session structure by Cinema \r\n _.each(sorted, function(movie) { \r\n _.forOwn(movie.Sessions, function(value, key) { \r\n movie['Cinemas'] = movie['Cinemas'] || [];\r\n _.forOwn(value, function(value2, key2) { \r\n movie.Cinemas[key2] = movie.Cinemas[key2] || [];\r\n value2 = _.map(value2, function (v) {\r\n v.Day = key;\r\n var timestring = key + \" \" + v.StartTime;\r\n v['DateTime'] = moment(timestring, 'YYYY-MM-DD hh:mm A');\r\n //v['DateTime'] = moment(timestring).format();\r\n //v.DateTime = moment(timestring).format('YYYY-MM-DD hh:mm A')\r\n //console.log(\"DT\", key + \" \" + v.StartTime);\r\n return v;\r\n });\r\n movie.Cinemas[key2]= _.union(movie.Cinemas[key2], value2);\r\n });\r\n });\r\n });\r\n\r\n //console.log('m', movie1);\r\n //console.log('s', _.find(sorted, {'FilmId':movie1.FilmId})['Sessions']);\r\n //console.log('c', _.find(sorted, {'FilmId':movie1.FilmId})['Cinemas']);\r\n\r\n //console.log(sorted);\r\n \r\n window.AllMovieData = sorted;\r\n console.log(sorted);\r\n //sorted = _.get(sorted, '[0].data');\r\n\r\n callback(sorted);\r\n //only take first 20\r\n //callback(sorted.slice(0,20));\r\n });\r\n }\r\n\r\n function getBentonHarborData() {\r\n var deferred = $q.defer();\r\n //console.log('getting benton harbor data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7815', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getCrossroadsData() {\r\n var deferred = $q.defer();\r\n //console.log('getting crossroads data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7816', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getNorthData() {\r\n var deferred = $q.defer();\r\n //console.log('getting north data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7817', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getCinemaSouthData() {\r\n var deferred = $q.defer();\r\n //console.log('getting south data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7818', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getLansingData() {\r\n var deferred = $q.defer();\r\n //console.log('getting lansing data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7819', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getMtPleasantData() {\r\n var deferred = $q.defer();\r\n //console.log('getting mt pleasant data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7820', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getRivertownData() {\r\n var deferred = $q.defer();\r\n //console.log('getting rivertown data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7821', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getWoodlandData() {\r\n var deferred = $q.defer();\r\n //console.log('getting woodland data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7822', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getCarouselData() {\r\n var deferred = $q.defer();\r\n //console.log('getting carousel data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7823', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getPlazaData() {\r\n var deferred = $q.defer();\r\n //console.log('getting plaza data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7824', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getMeridianData() {\r\n var deferred = $q.defer();\r\n //console.log('getting meridian data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7825', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n return {\r\n getAllData: getAllData\r\n };\r\n });\r\n})();","(function() {\r\n function RottenTomatoRatingFormatter() {\r\n var score = \"\";\r\n return function(rating) {\r\n if (_.isNull(rating) || _.isUndefined(rating)) {\r\n return score;\r\n } else {\r\n switch (true) {\r\n case (rating < 50):\r\n score = \"tomatobad.png\";\r\n break;\r\n case (rating >= 50 && rating < 90):\r\n score = \"tomatookay.png\";\r\n break;\r\n case (rating >= 90):\r\n score = \"tomatofresh.png\";\r\n break;\r\n }\r\n\r\n return score;\r\n }\r\n };\r\n }\r\n RottenTomatoRatingFormatter.$inject = [];\r\n angular\r\n .module(\"cstudioApp.filters\")\r\n .filter(\"RottenTomatoRatingFormatter\", RottenTomatoRatingFormatter);\r\n})();","(function() {\r\n function RunTimeFormatter() {\r\n return function(runtime) {\r\n runtime = Number(runtime); \r\n var hours = Math.floor(runtime / 60);\r\n var minutes = runtime % 60;\r\n return hours + \"h \" + minutes + \"m\";\r\n };\r\n }\r\n RunTimeFormatter.$inject = [];\r\n angular\r\n .module(\"cstudioApp.filters\")\r\n .filter(\"RunTimeFormatter\", RunTimeFormatter);\r\n})();","(function () {\r\n function ShowTimeFormatter() {\r\n return function (showing) {\r\n var start = showing.StartTime;\r\n //var v = moment(start).tz('America/New_York').format('h:mm A');\r\n var v = moment(start, \"YYYY-MM-DDTHH:mm:ss\").format('h:mm A');\r\n /**\r\n console.log('-----testing times------');\r\n console.log('1', moment(start, \"YYYY-MM-DDTHH:mm:ss\").tz('America/New_York').format('MMMM Do @ h:mm a'));\r\n console.log('2', moment(start, \"YYYY-MM-DDTHH:mm:ssZ\").tz('America/New_York').format('MMMM Do @ h:mm a'));\r\n console.log('3', moment.utc(start, \"YYYY-MM-DDTHH:mm:ssZ\").tz('America/New_York').format('MMMM Do @ h:mm a'));\r\n console.log('4', moment.utc(start, \"YYYY-MM-DDTHH:mm:ssZ\").tz('America/New_York').format('MMMM Do @ h:mm a'));\r\n console.log('5', moment(start, \"YYYY-MM-DDTHH:mm:ss\").format('MMMM Do @ h:mm a'));\r\n console.log('6', moment(start, \"YYYY-MM-DDTHH:mm:ssZ\").format('MMMM Do @ h:mm a'));\r\n console.log('7', moment.utc(start, \"YYYY-MM-DDTHH:mm:ssZ\").format('MMMM Do @ h:mm a'));\r\n console.log('8', moment.utc(start, \"YYYY-MM-DDTHH:mm:ssZ\").format('MMMM Do @ h:mm a'));\r\n console.log('-----------');\r\n console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)\r\n **/\r\n //console.log(showing, start, v);\r\n return v;\r\n };\r\n }\r\n ShowTimeFormatter.$inject = [];\r\n angular\r\n .module(\"cstudioApp.filters\")\r\n .filter(\"ShowTimeFormatter\", ShowTimeFormatter);\r\n})();"," $( document ).ready(function() {\r\nreturn;\r\n var now = moment().minutes(0).seconds(0).milliseconds(0);\r\n var groupCount = 3;\r\n var itemCount = 20;\r\n // create a data set with groups\r\n var names = ['John', 'Alston', 'Lee', 'Grant'];\r\n var groups = new vis.DataSet();\r\n for (var g = 0; g < groupCount; g++) {\r\n groups.add({id: g, content: names[g]});\r\n }\r\n // create a dataset with items\r\n var items = new vis.DataSet();\r\n for (var i = 0; i < itemCount; i++) {\r\n var start = now.clone().add(Math.random() * 200, 'hours');\r\n var group = Math.floor(Math.random() * groupCount);\r\n items.add({\r\n id: i,\r\n group: group,\r\n content: 'item ' + i +\r\n ' <span style=\"color:#97B0F8;\">(' + names[group] + ')</span>',\r\n start: start,\r\n type: 'box'\r\n });\r\n }\r\n // create visualization\r\n var container = document.getElementById('visualization');\r\n var options = {\r\n groupOrder: 'content' // groupOrder can be a property name or a sorting function\r\n };\r\n var timeline = new vis.Timeline(container);\r\n timeline.setOptions(options);\r\n timeline.setGroups(groups);\r\n timeline.setItems(items);\r\n\r\n});","/*\r\n * ui-bootstrap4\r\n * http://morgul.github.io/ui-bootstrap4/\r\n\r\n * Version: 3.0.6 - 2018-11-17\r\n * License: MIT\r\n */angular.module(\"ui.bootstrap\", [\"ui.bootstrap.tpls\", \"ui.bootstrap.collapse\",\"ui.bootstrap.tabindex\",\"ui.bootstrap.accordion\",\"ui.bootstrap.alert\",\"ui.bootstrap.buttons\",\"ui.bootstrap.carousel\",\"ui.bootstrap.common\",\"ui.bootstrap.dateparser\",\"ui.bootstrap.isClass\",\"ui.bootstrap.datepicker\",\"ui.bootstrap.position\",\"ui.bootstrap.datepickerPopup\",\"ui.bootstrap.debounce\",\"ui.bootstrap.multiMap\",\"ui.bootstrap.dropdown\",\"ui.bootstrap.stackedMap\",\"ui.bootstrap.modal\",\"ui.bootstrap.paging\",\"ui.bootstrap.pager\",\"ui.bootstrap.pagination\",\"ui.bootstrap.tooltip\",\"ui.bootstrap.popover\",\"ui.bootstrap.progressbar\",\"ui.bootstrap.rating\",\"ui.bootstrap.tabs\",\"ui.bootstrap.timepicker\",\"ui.bootstrap.typeahead\"]);\r\nangular.module(\"ui.bootstrap.tpls\", [\"uib/template/accordion/accordion-group.html\",\"uib/template/accordion/accordion.html\",\"uib/template/alert/alert.html\",\"uib/template/carousel/carousel.html\",\"uib/template/carousel/slide.html\",\"uib/template/datepicker/datepicker.html\",\"uib/template/datepicker/day.html\",\"uib/template/datepicker/month.html\",\"uib/template/datepicker/year.html\",\"uib/template/datepickerPopup/popup.html\",\"uib/template/modal/window.html\",\"uib/template/pager/pager.html\",\"uib/template/pagination/pagination.html\",\"uib/template/tooltip/tooltip-html-popup.html\",\"uib/template/tooltip/tooltip-popup.html\",\"uib/template/tooltip/tooltip-template-popup.html\",\"uib/template/popover/popover-html.html\",\"uib/template/popover/popover-template.html\",\"uib/template/popover/popover.html\",\"uib/template/progressbar/bar.html\",\"uib/template/progressbar/progress.html\",\"uib/template/progressbar/progressbar.html\",\"uib/template/rating/rating.html\",\"uib/template/tabs/tab.html\",\"uib/template/tabs/tabset.html\",\"uib/template/timepicker/timepicker.html\",\"uib/template/typeahead/typeahead-match.html\",\"uib/template/typeahead/typeahead-popup.html\"]);\r\nangular.module('ui.bootstrap.collapse', [])\r\n\r\n .directive('uibCollapse', ['$animate', '$q', '$parse', '$injector', function($animate, $q, $parse, $injector) {\r\n var $animateCss = $injector.has('$animateCss') ? $injector.get('$animateCss') : null;\r\n return {\r\n link: function(scope, element, attrs) {\r\n var expandingExpr = $parse(attrs.expanding),\r\n expandedExpr = $parse(attrs.expanded),\r\n collapsingExpr = $parse(attrs.collapsing),\r\n collapsedExpr = $parse(attrs.collapsed),\r\n horizontal = false,\r\n css = {},\r\n cssTo = {};\r\n\r\n init();\r\n\r\n function init() {\r\n horizontal = !!('horizontal' in attrs);\r\n if (horizontal) {\r\n css = {\r\n width: ''\r\n };\r\n cssTo = {width: '0'};\r\n } else {\r\n css = {\r\n height: ''\r\n };\r\n cssTo = {height: '0'};\r\n }\r\n if (!scope.$eval(attrs.uibCollapse)) {\r\n element.addClass('show')\r\n .addClass('collapse')\r\n .attr('aria-expanded', true)\r\n .attr('aria-hidden', false)\r\n .css(css);\r\n }\r\n }\r\n\r\n function getScrollFromElement(element) {\r\n if (horizontal) {\r\n return {width: element.scrollWidth + 'px'};\r\n }\r\n return {height: element.scrollHeight + 'px'};\r\n }\r\n\r\n function expand() {\r\n if (element.hasClass('collapse') && element.hasClass('show')) {\r\n return;\r\n }\r\n\r\n $q.resolve(expandingExpr(scope))\r\n .then(function() {\r\n element.removeClass('collapse')\r\n .addClass('collapsing')\r\n .attr('aria-expanded', true)\r\n .attr('aria-hidden', false);\r\n\r\n if ($animateCss) {\r\n $animateCss(element, {\r\n addClass: 'show',\r\n easing: 'ease',\r\n css: {\r\n overflow: 'hidden'\r\n },\r\n to: getScrollFromElement(element[0])\r\n }).start()['finally'](expandDone);\r\n } else {\r\n $animate.addClass(element, 'show', {\r\n css: {\r\n overflow: 'hidden'\r\n },\r\n to: getScrollFromElement(element[0])\r\n }).then(expandDone);\r\n }\r\n }, angular.noop);\r\n }\r\n\r\n function expandDone() {\r\n element.removeClass('collapsing')\r\n .addClass('collapse')\r\n .css(css);\r\n expandedExpr(scope);\r\n }\r\n\r\n function collapse() {\r\n if (!element.hasClass('collapse') && !element.hasClass('show')) {\r\n return collapseDone();\r\n }\r\n\r\n $q.resolve(collapsingExpr(scope))\r\n .then(function() {\r\n element\r\n // IMPORTANT: The width must be set before adding \"collapsing\" class.\r\n // Otherwise, the browser attempts to animate from width 0 (in\r\n // collapsing class) to the given width here.\r\n .css(getScrollFromElement(element[0]))\r\n // initially all card collapse have the collapse class, this removal\r\n // prevents the animation from jumping to collapsed state\r\n .removeClass('collapse')\r\n .addClass('collapsing')\r\n .attr('aria-expanded', false)\r\n .attr('aria-hidden', true);\r\n\r\n if ($animateCss) {\r\n $animateCss(element, {\r\n removeClass: 'show',\r\n to: cssTo\r\n }).start()['finally'](collapseDone);\r\n } else {\r\n $animate.removeClass(element, 'show', {\r\n to: cssTo\r\n }).then(collapseDone);\r\n }\r\n }, angular.noop);\r\n }\r\n\r\n function collapseDone() {\r\n element.css(cssTo); // Required so that collapse works when animation is disabled\r\n element.removeClass('collapsing')\r\n .addClass('collapse');\r\n collapsedExpr(scope);\r\n }\r\n\r\n scope.$watch(attrs.uibCollapse, function(shouldCollapse) {\r\n if (shouldCollapse) {\r\n collapse();\r\n } else {\r\n expand();\r\n }\r\n });\r\n }\r\n };\r\n }]);\r\n\r\nangular.module('ui.bootstrap.tabindex', [])\r\n\r\n.directive('uibTabindexToggle', function() {\r\n return {\r\n restrict: 'A',\r\n link: function(scope, elem, attrs) {\r\n attrs.$observe('disabled', function(disabled) {\r\n attrs.$set('tabindex', disabled ? -1 : null);\r\n });\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse', 'ui.bootstrap.tabindex'])\r\n\r\n.constant('uibAccordionConfig', {\r\n closeOthers: true\r\n})\r\n\r\n.controller('UibAccordionController', ['$scope', '$attrs', 'uibAccordionConfig', function($scope, $attrs, accordionConfig) {\r\n // This array keeps track of the accordion groups\r\n this.groups = [];\r\n\r\n // Ensure that all the groups in this accordion are closed, unless close-others explicitly says not to\r\n this.closeOthers = function(openGroup) {\r\n var closeOthers = angular.isDefined($attrs.closeOthers) ?\r\n $scope.$eval($attrs.closeOthers) : accordionConfig.closeOthers;\r\n if (closeOthers) {\r\n angular.forEach(this.groups, function(group) {\r\n if (group !== openGroup) {\r\n group.isOpen = false;\r\n }\r\n });\r\n }\r\n };\r\n\r\n // This is called from the accordion-group directive to add itself to the accordion\r\n this.addGroup = function(groupScope) {\r\n var that = this;\r\n this.groups.push(groupScope);\r\n\r\n groupScope.$on('$destroy', function(event) {\r\n that.removeGroup(groupScope);\r\n });\r\n };\r\n\r\n // This is called from the accordion-group directive when to remove itself\r\n this.removeGroup = function(group) {\r\n var index = this.groups.indexOf(group);\r\n if (index !== -1) {\r\n this.groups.splice(index, 1);\r\n }\r\n };\r\n}])\r\n\r\n// The accordion directive simply sets up the directive controller\r\n// and adds an accordion CSS class to itself element.\r\n.directive('uibAccordion', function() {\r\n return {\r\n controller: 'UibAccordionController',\r\n controllerAs: 'accordion',\r\n transclude: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/accordion/accordion.html';\r\n }\r\n };\r\n})\r\n\r\n// The accordion-group directive indicates a block of html that will expand and collapse in an accordion\r\n.directive('uibAccordionGroup', function() {\r\n return {\r\n require: '^uibAccordion', // We need this directive to be inside an accordion\r\n transclude: true, // It transcludes the contents of the directive into the template\r\n restrict: 'A',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/accordion/accordion-group.html';\r\n },\r\n scope: {\r\n heading: '@', // Interpolate the heading attribute onto this scope\r\n cardClass: '@?', // Ditto with cardClass\r\n isOpen: '=?',\r\n isDisabled: '=?'\r\n },\r\n controller: function() {\r\n this.setHeading = function(element) {\r\n this.heading = element;\r\n };\r\n },\r\n link: function(scope, element, attrs, accordionCtrl) {\r\n element.addClass('card');\r\n accordionCtrl.addGroup(scope);\r\n\r\n scope.openClass = attrs.openClass || 'card-open';\r\n scope.cardClass = attrs.cardClass || 'card-default';\r\n scope.$watch('isOpen', function(value) {\r\n element.toggleClass(scope.openClass, !!value);\r\n if (value) {\r\n accordionCtrl.closeOthers(scope);\r\n }\r\n });\r\n\r\n scope.toggleOpen = function($event) {\r\n if (!scope.isDisabled) {\r\n if (!$event || $event.which === 32) {\r\n scope.isOpen = !scope.isOpen;\r\n }\r\n }\r\n };\r\n\r\n var id = 'accordiongroup-' + scope.$id + '-' + Math.floor(Math.random() * 10000);\r\n scope.headingId = id + '-tab';\r\n scope.cardId = id + '-card';\r\n }\r\n };\r\n})\r\n\r\n// Use accordion-heading below an accordion-group to provide a heading containing HTML\r\n.directive('uibAccordionHeading', function() {\r\n return {\r\n transclude: true, // Grab the contents to be used as the heading\r\n template: '', // In effect remove this element!\r\n replace: true,\r\n require: '^uibAccordionGroup',\r\n link: function(scope, element, attrs, accordionGroupCtrl, transclude) {\r\n // Pass the heading to the accordion-group controller\r\n // so that it can be transcluded into the right place in the template\r\n // [The second parameter to transclude causes the elements to be cloned so that they work in ng-repeat]\r\n accordionGroupCtrl.setHeading(transclude(scope, angular.noop));\r\n }\r\n };\r\n})\r\n\r\n// Use in the accordion-group template to indicate where you want the heading to be transcluded\r\n// You must provide the property on the accordion-group controller that will hold the transcluded element\r\n.directive('uibAccordionTransclude', function() {\r\n return {\r\n require: '^uibAccordionGroup',\r\n link: function(scope, element, attrs, controller) {\r\n scope.$watch(function() { return controller[attrs.uibAccordionTransclude]; }, function(heading) {\r\n if (heading) {\r\n var elem = angular.element(element[0].querySelector(getHeaderSelectors()));\r\n elem.html('');\r\n elem.append(heading);\r\n }\r\n });\r\n }\r\n };\r\n\r\n function getHeaderSelectors() {\r\n return 'uib-accordion-header,' +\r\n 'data-uib-accordion-header,' +\r\n 'x-uib-accordion-header,' +\r\n 'uib\\\\:accordion-header,' +\r\n '[uib-accordion-header],' +\r\n '[data-uib-accordion-header],' +\r\n '[x-uib-accordion-header]';\r\n }\r\n});\r\n\r\nangular.module('ui.bootstrap.alert', [])\r\n\r\n.controller('UibAlertController', ['$scope', '$element', '$attrs', '$interpolate', '$timeout', function($scope, $element, $attrs, $interpolate, $timeout) {\r\n $scope.closeable = !!$attrs.close;\r\n $element.addClass('alert');\r\n $attrs.$set('role', 'alert');\r\n if ($scope.closeable) {\r\n $element.addClass('alert-dismissible');\r\n }\r\n\r\n var dismissOnTimeout = angular.isDefined($attrs.dismissOnTimeout) ?\r\n $interpolate($attrs.dismissOnTimeout)($scope.$parent) : null;\r\n\r\n if (dismissOnTimeout) {\r\n $timeout(function() {\r\n $scope.close();\r\n }, parseInt(dismissOnTimeout, 10));\r\n }\r\n}])\r\n\r\n.directive('uibAlert', function() {\r\n return {\r\n controller: 'UibAlertController',\r\n controllerAs: 'alert',\r\n restrict: 'A',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/alert/alert.html';\r\n },\r\n transclude: true,\r\n scope: {\r\n close: '&'\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.buttons', [])\r\n\r\n.constant('uibButtonConfig', {\r\n activeClass: 'active',\r\n toggleEvent: 'click'\r\n})\r\n\r\n.controller('UibButtonsController', ['uibButtonConfig', function(buttonConfig) {\r\n this.activeClass = buttonConfig.activeClass || 'active';\r\n this.toggleEvent = buttonConfig.toggleEvent || 'click';\r\n}])\r\n\r\n.directive('uibBtnRadio', ['$parse', function($parse) {\r\n return {\r\n require: ['uibBtnRadio', 'ngModel'],\r\n controller: 'UibButtonsController',\r\n controllerAs: 'buttons',\r\n link: function(scope, element, attrs, ctrls) {\r\n var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n var uncheckableExpr = $parse(attrs.uibUncheckable);\r\n\r\n element.find('input').css({display: 'none'});\r\n\r\n //model -> UI\r\n ngModelCtrl.$render = function() {\r\n element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.uibBtnRadio)));\r\n };\r\n\r\n //ui->model\r\n element.on(buttonsCtrl.toggleEvent, function() {\r\n if (attrs.disabled) {\r\n return;\r\n }\r\n\r\n var isActive = element.hasClass(buttonsCtrl.activeClass);\r\n\r\n if (!isActive || angular.isDefined(attrs.uncheckable)) {\r\n scope.$apply(function() {\r\n ngModelCtrl.$setViewValue(isActive ? null : scope.$eval(attrs.uibBtnRadio));\r\n ngModelCtrl.$render();\r\n });\r\n }\r\n });\r\n\r\n if (attrs.uibUncheckable) {\r\n scope.$watch(uncheckableExpr, function(uncheckable) {\r\n attrs.$set('uncheckable', uncheckable ? '' : undefined);\r\n });\r\n }\r\n }\r\n };\r\n}])\r\n\r\n.directive('uibBtnCheckbox', function() {\r\n return {\r\n require: ['uibBtnCheckbox', 'ngModel'],\r\n controller: 'UibButtonsController',\r\n controllerAs: 'button',\r\n link: function(scope, element, attrs, ctrls) {\r\n var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n element.find('input').css({display: 'none'});\r\n\r\n function getTrueValue() {\r\n return getCheckboxValue(attrs.btnCheckboxTrue, true);\r\n }\r\n\r\n function getFalseValue() {\r\n return getCheckboxValue(attrs.btnCheckboxFalse, false);\r\n }\r\n\r\n function getCheckboxValue(attribute, defaultValue) {\r\n return angular.isDefined(attribute) ? scope.$eval(attribute) : defaultValue;\r\n }\r\n\r\n //model -> UI\r\n ngModelCtrl.$render = function() {\r\n element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue()));\r\n };\r\n\r\n //ui->model\r\n element.on(buttonsCtrl.toggleEvent, function() {\r\n if (attrs.disabled) {\r\n return;\r\n }\r\n\r\n scope.$apply(function() {\r\n ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue());\r\n ngModelCtrl.$render();\r\n });\r\n });\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.carousel', [])\r\n\r\n.controller('UibCarouselController', ['$scope', '$element', '$interval', '$timeout', '$animate', function($scope, $element, $interval, $timeout, $animate) {\r\n var self = this,\r\n slides = self.slides = $scope.slides = [],\r\n SLIDE_DIRECTION = 'uib-slideDirection',\r\n currentIndex = $scope.active,\r\n currentInterval, isPlaying;\r\n\r\n var destroyed = false;\r\n $element.addClass('carousel');\r\n\r\n self.addSlide = function(slide, element) {\r\n slides.push({\r\n slide: slide,\r\n element: element\r\n });\r\n slides.sort(function(a, b) {\r\n return +a.slide.index - +b.slide.index;\r\n });\r\n //if this is the first slide or the slide is set to active, select it\r\n if (slide.index === $scope.active || slides.length === 1 && !angular.isNumber($scope.active)) {\r\n if ($scope.$currentTransition) {\r\n $scope.$currentTransition = null;\r\n }\r\n\r\n currentIndex = slide.index;\r\n $scope.active = slide.index;\r\n setActive(currentIndex);\r\n self.select(slides[findSlideIndex(slide)]);\r\n if (slides.length === 1) {\r\n $scope.play();\r\n }\r\n }\r\n };\r\n\r\n self.getCurrentIndex = function() {\r\n for (var i = 0; i < slides.length; i++) {\r\n if (slides[i].slide.index === currentIndex) {\r\n return i;\r\n }\r\n }\r\n };\r\n\r\n self.next = $scope.next = function() {\r\n var newIndex = (self.getCurrentIndex() + 1) % slides.length;\r\n\r\n if (newIndex === 0 && $scope.noWrap()) {\r\n $scope.pause();\r\n return;\r\n }\r\n\r\n return self.select(slides[newIndex], 'next');\r\n };\r\n\r\n self.prev = $scope.prev = function() {\r\n var newIndex = self.getCurrentIndex() - 1 < 0 ? slides.length - 1 : self.getCurrentIndex() - 1;\r\n\r\n if ($scope.noWrap() && newIndex === slides.length - 1) {\r\n $scope.pause();\r\n return;\r\n }\r\n\r\n return self.select(slides[newIndex], 'prev');\r\n };\r\n\r\n self.removeSlide = function(slide) {\r\n var index = findSlideIndex(slide);\r\n\r\n //get the index of the slide inside the carousel\r\n slides.splice(index, 1);\r\n if (slides.length > 0 && currentIndex === index) {\r\n if (index >= slides.length) {\r\n currentIndex = slides.length - 1;\r\n $scope.active = currentIndex;\r\n setActive(currentIndex);\r\n self.select(slides[slides.length - 1]);\r\n } else {\r\n currentIndex = index;\r\n $scope.active = currentIndex;\r\n setActive(currentIndex);\r\n self.select(slides[index]);\r\n }\r\n } else if (currentIndex > index) {\r\n currentIndex--;\r\n $scope.active = currentIndex;\r\n }\r\n\r\n //clean the active value when no more slide\r\n if (slides.length === 0) {\r\n currentIndex = null;\r\n $scope.active = null;\r\n }\r\n };\r\n\r\n /* direction: \"prev\" or \"next\" */\r\n self.select = $scope.select = function(nextSlide, direction) {\r\n var nextIndex = findSlideIndex(nextSlide.slide);\r\n //Decide direction if it's not given\r\n if (direction === undefined) {\r\n direction = nextIndex > self.getCurrentIndex() ? 'next' : 'prev';\r\n }\r\n //Prevent this user-triggered transition from occurring if there is already one in progress\r\n if (nextSlide.slide.index !== currentIndex &&\r\n !$scope.$currentTransition) {\r\n goNext(nextSlide.slide, nextIndex, direction);\r\n }\r\n };\r\n\r\n /* Allow outside people to call indexOf on slides array */\r\n $scope.indexOfSlide = function(slide) {\r\n return +slide.slide.index;\r\n };\r\n\r\n $scope.isActive = function(slide) {\r\n return $scope.active === slide.slide.index;\r\n };\r\n\r\n $scope.isPrevDisabled = function() {\r\n return $scope.active === 0 && $scope.noWrap();\r\n };\r\n\r\n $scope.isNextDisabled = function() {\r\n return $scope.active === slides.length - 1 && $scope.noWrap();\r\n };\r\n\r\n $scope.pause = function() {\r\n if (!$scope.noPause) {\r\n isPlaying = false;\r\n resetTimer();\r\n }\r\n };\r\n\r\n $scope.play = function() {\r\n if (!isPlaying) {\r\n isPlaying = true;\r\n restartTimer();\r\n }\r\n };\r\n\r\n $element.on('mouseenter', $scope.pause);\r\n $element.on('mouseleave', $scope.play);\r\n\r\n $scope.$on('$destroy', function() {\r\n destroyed = true;\r\n resetTimer();\r\n });\r\n\r\n $scope.$watch('noTransition', function(noTransition) {\r\n $animate.enabled($element, !noTransition);\r\n });\r\n\r\n $scope.$watch('interval', restartTimer);\r\n\r\n $scope.$watchCollection('slides', resetTransition);\r\n\r\n $scope.$watch('active', function(index) {\r\n if (angular.isNumber(index) && currentIndex !== index) {\r\n for (var i = 0; i < slides.length; i++) {\r\n if (slides[i].slide.index === index) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n var slide = slides[index];\r\n if (slide) {\r\n setActive(index);\r\n self.select(slides[index]);\r\n currentIndex = index;\r\n }\r\n }\r\n });\r\n\r\n function getSlideByIndex(index) {\r\n for (var i = 0, l = slides.length; i < l; ++i) {\r\n if (slides[i].index === index) {\r\n return slides[i];\r\n }\r\n }\r\n }\r\n\r\n function setActive(index) {\r\n for (var i = 0; i < slides.length; i++) {\r\n slides[i].slide.active = i === index;\r\n }\r\n }\r\n\r\n function goNext(slide, index, direction) {\r\n if (destroyed) {\r\n return;\r\n }\r\n\r\n angular.extend(slide, {direction: direction});\r\n angular.extend(slides[currentIndex].slide || {}, {direction: direction});\r\n if ($animate.enabled($element) && !$scope.$currentTransition &&\r\n slides[index].element && self.slides.length > 1) {\r\n slides[index].element.data(SLIDE_DIRECTION, slide.direction);\r\n var currentIdx = self.getCurrentIndex();\r\n\r\n if (angular.isNumber(currentIdx) && slides[currentIdx].element) {\r\n slides[currentIdx].element.data(SLIDE_DIRECTION, slide.direction);\r\n }\r\n\r\n $scope.$currentTransition = true;\r\n $animate.on('addClass', slides[index].element, function(element, phase) {\r\n if (phase === 'close') {\r\n $scope.$currentTransition = null;\r\n $animate.off('addClass', element);\r\n }\r\n });\r\n }\r\n\r\n $scope.active = slide.index;\r\n currentIndex = slide.index;\r\n setActive(index);\r\n\r\n //every time you change slides, reset the timer\r\n restartTimer();\r\n }\r\n\r\n function findSlideIndex(slide) {\r\n for (var i = 0; i < slides.length; i++) {\r\n if (slides[i].slide === slide) {\r\n return i;\r\n }\r\n }\r\n }\r\n\r\n function resetTimer() {\r\n if (currentInterval) {\r\n $interval.cancel(currentInterval);\r\n currentInterval = null;\r\n }\r\n }\r\n\r\n function resetTransition(slides) {\r\n if (!slides.length) {\r\n $scope.$currentTransition = null;\r\n }\r\n }\r\n\r\n function restartTimer() {\r\n resetTimer();\r\n var interval = +$scope.interval;\r\n if (!isNaN(interval) && interval > 0) {\r\n currentInterval = $interval(timerFn, interval);\r\n }\r\n }\r\n\r\n function timerFn() {\r\n var interval = +$scope.interval;\r\n if (isPlaying && !isNaN(interval) && interval > 0 && slides.length) {\r\n $scope.next();\r\n } else {\r\n $scope.pause();\r\n }\r\n }\r\n}])\r\n\r\n.directive('uibCarousel', function() {\r\n return {\r\n transclude: true,\r\n controller: 'UibCarouselController',\r\n controllerAs: 'carousel',\r\n restrict: 'A',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/carousel/carousel.html';\r\n },\r\n scope: {\r\n active: '=?',\r\n interval: '=',\r\n noTransition: '=',\r\n noPause: '=',\r\n noWrap: '&'\r\n }\r\n };\r\n})\r\n\r\n.directive('uibSlide', ['$animate', function($animate) {\r\n return {\r\n require: '^uibCarousel',\r\n restrict: 'A',\r\n transclude: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/carousel/slide.html';\r\n },\r\n scope: {\r\n actual: '=?',\r\n index: '=?'\r\n },\r\n link: function (scope, element, attrs, carouselCtrl) {\r\n element.addClass('carousel-item');\r\n carouselCtrl.addSlide(scope, element);\r\n //when the scope is destroyed then remove the slide from the current slides array\r\n scope.$on('$destroy', function() {\r\n carouselCtrl.removeSlide(scope);\r\n });\r\n\r\n scope.$watch('active', function(active) {\r\n $animate[active ? 'addClass' : 'removeClass'](element, 'active');\r\n });\r\n }\r\n };\r\n}])\r\n\r\n.animation('.carousel-item', ['$animateCss',\r\nfunction($animateCss) {\r\n var SLIDE_DIRECTION = 'uib-slideDirection';\r\n var classPrefix = 'carousel-item-';\r\n\r\n function removeClass(element, className, callback) {\r\n element.removeClass(className);\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n\r\n return {\r\n beforeAddClass: function(element, className, done) {\r\n if (className === 'active') {\r\n var stopped = false;\r\n var direction = element.data(SLIDE_DIRECTION);\r\n var directionClass = direction === 'next' ? classPrefix + 'left' : classPrefix + 'right';\r\n var removeClassFn = removeClass.bind(this, element, [directionClass, classPrefix + direction].join(' '), done);\r\n element.addClass(classPrefix + direction);\r\n\r\n $animateCss(element, {addClass: directionClass})\r\n .start()\r\n .done(removeClassFn);\r\n\r\n return function() {\r\n stopped = true;\r\n };\r\n }\r\n done();\r\n },\r\n beforeRemoveClass: function (element, className, done) {\r\n if (className === 'active') {\r\n var stopped = false;\r\n var direction = element.data(SLIDE_DIRECTION);\r\n var directionClass = direction === 'next' ? classPrefix + 'left' : classPrefix + 'right';\r\n var removeClassFn = removeClass.bind(this, element, directionClass, done);\r\n\r\n $animateCss(element, {addClass: directionClass})\r\n .start()\r\n .done(removeClassFn);\r\n\r\n return function() {\r\n stopped = true;\r\n };\r\n }\r\n done();\r\n }\r\n };\r\n}]);\r\n\r\nangular.module('ui.bootstrap.common', []);\r\n\r\nangular.module('ui.bootstrap.dateparser', [])\r\n\r\n.service('uibDateParser', ['$log', '$locale', 'dateFilter', 'orderByFilter', 'filterFilter', function($log, $locale, dateFilter, orderByFilter, filterFilter) {\r\n // Pulled from https://github.com/mbostock/d3/blob/master/src/format/requote.js\r\n var SPECIAL_CHARACTERS_REGEXP = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\r\n\r\n var localeId;\r\n var formatCodeToRegex;\r\n\r\n this.init = function() {\r\n localeId = $locale.id;\r\n\r\n this.parsers = {};\r\n this.formatters = {};\r\n\r\n formatCodeToRegex = [\r\n {\r\n key: 'yyyy',\r\n regex: '\\\\d{4}',\r\n apply: function(value) { this.year = +value; },\r\n formatter: function(date) {\r\n var _date = new Date();\r\n _date.setFullYear(Math.abs(date.getFullYear()));\r\n return dateFilter(_date, 'yyyy');\r\n }\r\n },\r\n {\r\n key: 'yy',\r\n regex: '\\\\d{2}',\r\n apply: function(value) { value = +value; this.year = value < 69 ? value + 2000 : value + 1900; },\r\n formatter: function(date) {\r\n var _date = new Date();\r\n _date.setFullYear(Math.abs(date.getFullYear()));\r\n return dateFilter(_date, 'yy');\r\n }\r\n },\r\n {\r\n key: 'y',\r\n regex: '\\\\d{1,4}',\r\n apply: function(value) { this.year = +value; },\r\n formatter: function(date) {\r\n var _date = new Date();\r\n _date.setFullYear(Math.abs(date.getFullYear()));\r\n return dateFilter(_date, 'y');\r\n }\r\n },\r\n {\r\n key: 'M!',\r\n regex: '0?[1-9]|1[0-2]',\r\n apply: function(value) { this.month = value - 1; },\r\n formatter: function(date) {\r\n var value = date.getMonth();\r\n if (/^[0-9]$/.test(value)) {\r\n return dateFilter(date, 'MM');\r\n }\r\n\r\n return dateFilter(date, 'M');\r\n }\r\n },\r\n {\r\n key: 'MMMM',\r\n regex: $locale.DATETIME_FORMATS.MONTH.join('|'),\r\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.MONTH.indexOf(value); },\r\n formatter: function(date) { return dateFilter(date, 'MMMM'); }\r\n },\r\n {\r\n key: 'MMM',\r\n regex: $locale.DATETIME_FORMATS.SHORTMONTH.join('|'),\r\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.SHORTMONTH.indexOf(value); },\r\n formatter: function(date) { return dateFilter(date, 'MMM'); }\r\n },\r\n {\r\n key: 'MM',\r\n regex: '0[1-9]|1[0-2]',\r\n apply: function(value) { this.month = value - 1; },\r\n formatter: function(date) { return dateFilter(date, 'MM'); }\r\n },\r\n {\r\n key: 'M',\r\n regex: '[1-9]|1[0-2]',\r\n apply: function(value) { this.month = value - 1; },\r\n formatter: function(date) { return dateFilter(date, 'M'); }\r\n },\r\n {\r\n key: 'd!',\r\n regex: '[0-2]?[0-9]{1}|3[0-1]{1}',\r\n apply: function(value) { this.date = +value; },\r\n formatter: function(date) {\r\n var value = date.getDate();\r\n if (/^[1-9]$/.test(value)) {\r\n return dateFilter(date, 'dd');\r\n }\r\n\r\n return dateFilter(date, 'd');\r\n }\r\n },\r\n {\r\n key: 'dd',\r\n regex: '[0-2][0-9]{1}|3[0-1]{1}',\r\n apply: function(value) { this.date = +value; },\r\n formatter: function(date) { return dateFilter(date, 'dd'); }\r\n },\r\n {\r\n key: 'd',\r\n regex: '[1-2]?[0-9]{1}|3[0-1]{1}',\r\n apply: function(value) { this.date = +value; },\r\n formatter: function(date) { return dateFilter(date, 'd'); }\r\n },\r\n {\r\n key: 'EEEE',\r\n regex: $locale.DATETIME_FORMATS.DAY.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'EEEE'); }\r\n },\r\n {\r\n key: 'EEE',\r\n regex: $locale.DATETIME_FORMATS.SHORTDAY.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'EEE'); }\r\n },\r\n {\r\n key: 'HH',\r\n regex: '(?:0|1)[0-9]|2[0-3]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'HH'); }\r\n },\r\n {\r\n key: 'hh',\r\n regex: '0[0-9]|1[0-2]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'hh'); }\r\n },\r\n {\r\n key: 'H',\r\n regex: '1?[0-9]|2[0-3]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'H'); }\r\n },\r\n {\r\n key: 'h',\r\n regex: '[0-9]|1[0-2]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'h'); }\r\n },\r\n {\r\n key: 'mm',\r\n regex: '[0-5][0-9]',\r\n apply: function(value) { this.minutes = +value; },\r\n formatter: function(date) { return dateFilter(date, 'mm'); }\r\n },\r\n {\r\n key: 'm',\r\n regex: '[0-9]|[1-5][0-9]',\r\n apply: function(value) { this.minutes = +value; },\r\n formatter: function(date) { return dateFilter(date, 'm'); }\r\n },\r\n {\r\n key: 'sss',\r\n regex: '[0-9][0-9][0-9]',\r\n apply: function(value) { this.milliseconds = +value; },\r\n formatter: function(date) { return dateFilter(date, 'sss'); }\r\n },\r\n {\r\n key: 'ss',\r\n regex: '[0-5][0-9]',\r\n apply: function(value) { this.seconds = +value; },\r\n formatter: function(date) { return dateFilter(date, 'ss'); }\r\n },\r\n {\r\n key: 's',\r\n regex: '[0-9]|[1-5][0-9]',\r\n apply: function(value) { this.seconds = +value; },\r\n formatter: function(date) { return dateFilter(date, 's'); }\r\n },\r\n {\r\n key: 'a',\r\n regex: $locale.DATETIME_FORMATS.AMPMS.join('|'),\r\n apply: function(value) {\r\n if (this.hours === 12) {\r\n this.hours = 0;\r\n }\r\n\r\n if (value === 'PM') {\r\n this.hours += 12;\r\n }\r\n },\r\n formatter: function(date) { return dateFilter(date, 'a'); }\r\n },\r\n {\r\n key: 'Z',\r\n regex: '[+-]\\\\d{4}',\r\n apply: function(value) {\r\n var matches = value.match(/([+-])(\\d{2})(\\d{2})/),\r\n sign = matches[1],\r\n hours = matches[2],\r\n minutes = matches[3];\r\n this.hours += toInt(sign + hours);\r\n this.minutes += toInt(sign + minutes);\r\n },\r\n formatter: function(date) {\r\n return dateFilter(date, 'Z');\r\n }\r\n },\r\n {\r\n key: 'ww',\r\n regex: '[0-4][0-9]|5[0-3]',\r\n formatter: function(date) { return dateFilter(date, 'ww'); }\r\n },\r\n {\r\n key: 'w',\r\n regex: '[0-9]|[1-4][0-9]|5[0-3]',\r\n formatter: function(date) { return dateFilter(date, 'w'); }\r\n },\r\n {\r\n key: 'GGGG',\r\n regex: $locale.DATETIME_FORMATS.ERANAMES.join('|').replace(/\\s/g, '\\\\s'),\r\n formatter: function(date) { return dateFilter(date, 'GGGG'); }\r\n },\r\n {\r\n key: 'GGG',\r\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'GGG'); }\r\n },\r\n {\r\n key: 'GG',\r\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'GG'); }\r\n },\r\n {\r\n key: 'G',\r\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'G'); }\r\n }\r\n ];\r\n\r\n if (angular.version.major >= 1 && angular.version.minor > 4) {\r\n formatCodeToRegex.push({\r\n key: 'LLLL',\r\n regex: $locale.DATETIME_FORMATS.STANDALONEMONTH.join('|'),\r\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.STANDALONEMONTH.indexOf(value); },\r\n formatter: function(date) { return dateFilter(date, 'LLLL'); }\r\n });\r\n }\r\n };\r\n\r\n this.init();\r\n\r\n function getFormatCodeToRegex(key) {\r\n return filterFilter(formatCodeToRegex, {key: key}, true)[0];\r\n }\r\n\r\n this.getParser = function (key) {\r\n var f = getFormatCodeToRegex(key);\r\n return f && f.apply || null;\r\n };\r\n\r\n this.overrideParser = function (key, parser) {\r\n var f = getFormatCodeToRegex(key);\r\n if (f && angular.isFunction(parser)) {\r\n this.parsers = {};\r\n f.apply = parser;\r\n }\r\n }.bind(this);\r\n\r\n function createParser(format) {\r\n var map = [], regex = format.split('');\r\n\r\n // check for literal values\r\n var quoteIndex = format.indexOf('\\'');\r\n if (quoteIndex > -1) {\r\n var inLiteral = false;\r\n format = format.split('');\r\n for (var i = quoteIndex; i < format.length; i++) {\r\n if (inLiteral) {\r\n if (format[i] === '\\'') {\r\n if (i + 1 < format.length && format[i+1] === '\\'') { // escaped single quote\r\n format[i+1] = '$';\r\n regex[i+1] = '';\r\n } else { // end of literal\r\n regex[i] = '';\r\n inLiteral = false;\r\n }\r\n }\r\n format[i] = '$';\r\n } else {\r\n if (format[i] === '\\'') { // start of literal\r\n format[i] = '$';\r\n regex[i] = '';\r\n inLiteral = true;\r\n }\r\n }\r\n }\r\n\r\n format = format.join('');\r\n }\r\n\r\n angular.forEach(formatCodeToRegex, function(data) {\r\n var index = format.indexOf(data.key);\r\n\r\n if (index > -1) {\r\n format = format.split('');\r\n\r\n regex[index] = '(' + data.regex + ')';\r\n format[index] = '$'; // Custom symbol to define consumed part of format\r\n for (var i = index + 1, n = index + data.key.length; i < n; i++) {\r\n regex[i] = '';\r\n format[i] = '$';\r\n }\r\n format = format.join('');\r\n\r\n map.push({\r\n index: index,\r\n key: data.key,\r\n apply: data.apply,\r\n matcher: data.regex\r\n });\r\n }\r\n });\r\n\r\n return {\r\n regex: new RegExp('^' + regex.join('') + '$'),\r\n map: orderByFilter(map, 'index')\r\n };\r\n }\r\n\r\n function createFormatter(format) {\r\n var formatters = [];\r\n var i = 0;\r\n var formatter, literalIdx;\r\n while (i < format.length) {\r\n if (angular.isNumber(literalIdx)) {\r\n if (format.charAt(i) === '\\'') {\r\n if (i + 1 >= format.length || format.charAt(i + 1) !== '\\'') {\r\n formatters.push(constructLiteralFormatter(format, literalIdx, i));\r\n literalIdx = null;\r\n }\r\n } else if (i === format.length) {\r\n while (literalIdx < format.length) {\r\n formatter = constructFormatterFromIdx(format, literalIdx);\r\n formatters.push(formatter);\r\n literalIdx = formatter.endIdx;\r\n }\r\n }\r\n\r\n i++;\r\n continue;\r\n }\r\n\r\n if (format.charAt(i) === '\\'') {\r\n literalIdx = i;\r\n i++;\r\n continue;\r\n }\r\n\r\n formatter = constructFormatterFromIdx(format, i);\r\n\r\n formatters.push(formatter.parser);\r\n i = formatter.endIdx;\r\n }\r\n\r\n return formatters;\r\n }\r\n\r\n function constructLiteralFormatter(format, literalIdx, endIdx) {\r\n return function() {\r\n return format.substr(literalIdx + 1, endIdx - literalIdx - 1);\r\n };\r\n }\r\n\r\n function constructFormatterFromIdx(format, i) {\r\n var currentPosStr = format.substr(i);\r\n for (var j = 0; j < formatCodeToRegex.length; j++) {\r\n if (new RegExp('^' + formatCodeToRegex[j].key).test(currentPosStr)) {\r\n var data = formatCodeToRegex[j];\r\n return {\r\n endIdx: i + data.key.length,\r\n parser: data.formatter\r\n };\r\n }\r\n }\r\n\r\n return {\r\n endIdx: i + 1,\r\n parser: function() {\r\n return currentPosStr.charAt(0);\r\n }\r\n };\r\n }\r\n\r\n this.filter = function(date, format) {\r\n if (!angular.isDate(date) || isNaN(date) || !format) {\r\n return '';\r\n }\r\n\r\n format = $locale.DATETIME_FORMATS[format] || format;\r\n\r\n if ($locale.id !== localeId) {\r\n this.init();\r\n }\r\n\r\n if (!this.formatters[format]) {\r\n this.formatters[format] = createFormatter(format);\r\n }\r\n\r\n var formatters = this.formatters[format];\r\n\r\n return formatters.reduce(function(str, formatter) {\r\n return str + formatter(date);\r\n }, '');\r\n };\r\n\r\n this.parse = function(input, format, baseDate) {\r\n if (!angular.isString(input) || !format) {\r\n return input;\r\n }\r\n\r\n format = $locale.DATETIME_FORMATS[format] || format;\r\n format = format.replace(SPECIAL_CHARACTERS_REGEXP, '\\\\$&');\r\n\r\n if ($locale.id !== localeId) {\r\n this.init();\r\n }\r\n\r\n if (!this.parsers[format]) {\r\n this.parsers[format] = createParser(format, 'apply');\r\n }\r\n\r\n var parser = this.parsers[format],\r\n regex = parser.regex,\r\n map = parser.map,\r\n results = input.match(regex),\r\n tzOffset = false;\r\n if (results && results.length) {\r\n var fields, dt;\r\n if (angular.isDate(baseDate) && !isNaN(baseDate.getTime())) {\r\n fields = {\r\n year: baseDate.getFullYear(),\r\n month: baseDate.getMonth(),\r\n date: baseDate.getDate(),\r\n hours: baseDate.getHours(),\r\n minutes: baseDate.getMinutes(),\r\n seconds: baseDate.getSeconds(),\r\n milliseconds: baseDate.getMilliseconds()\r\n };\r\n } else {\r\n if (baseDate) {\r\n $log.warn('dateparser:', 'baseDate is not a valid date');\r\n }\r\n fields = { year: 1900, month: 0, date: 1, hours: 0, minutes: 0, seconds: 0, milliseconds: 0 };\r\n }\r\n\r\n for (var i = 1, n = results.length; i < n; i++) {\r\n var mapper = map[i - 1];\r\n if (mapper.matcher === 'Z') {\r\n tzOffset = true;\r\n }\r\n\r\n if (mapper.apply) {\r\n mapper.apply.call(fields, results[i]);\r\n }\r\n }\r\n\r\n var datesetter = tzOffset ? Date.prototype.setUTCFullYear :\r\n Date.prototype.setFullYear;\r\n var timesetter = tzOffset ? Date.prototype.setUTCHours :\r\n Date.prototype.setHours;\r\n\r\n if (isValid(fields.year, fields.month, fields.date)) {\r\n if (angular.isDate(baseDate) && !isNaN(baseDate.getTime()) && !tzOffset) {\r\n dt = new Date(baseDate);\r\n datesetter.call(dt, fields.year, fields.month, fields.date);\r\n timesetter.call(dt, fields.hours, fields.minutes,\r\n fields.seconds, fields.milliseconds);\r\n } else {\r\n dt = new Date(0);\r\n datesetter.call(dt, fields.year, fields.month, fields.date);\r\n timesetter.call(dt, fields.hours || 0, fields.minutes || 0,\r\n fields.seconds || 0, fields.milliseconds || 0);\r\n }\r\n }\r\n\r\n return dt;\r\n }\r\n };\r\n\r\n // Check if date is valid for specific month (and year for February).\r\n // Month: 0 = Jan, 1 = Feb, etc\r\n function isValid(year, month, date) {\r\n if (date < 1) {\r\n return false;\r\n }\r\n\r\n if (month === 1 && date > 28) {\r\n return date === 29 && (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0);\r\n }\r\n\r\n if (month === 3 || month === 5 || month === 8 || month === 10) {\r\n return date < 31;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function toInt(str) {\r\n return parseInt(str, 10);\r\n }\r\n\r\n this.toTimezone = toTimezone;\r\n this.fromTimezone = fromTimezone;\r\n this.timezoneToOffset = timezoneToOffset;\r\n this.addDateMinutes = addDateMinutes;\r\n this.convertTimezoneToLocal = convertTimezoneToLocal;\r\n\r\n function toTimezone(date, timezone) {\r\n return date && timezone ? convertTimezoneToLocal(date, timezone) : date;\r\n }\r\n\r\n function fromTimezone(date, timezone) {\r\n return date && timezone ? convertTimezoneToLocal(date, timezone, true) : date;\r\n }\r\n\r\n //https://github.com/angular/angular.js/blob/622c42169699ec07fc6daaa19fe6d224e5d2f70e/src/Angular.js#L1207\r\n function timezoneToOffset(timezone, fallback) {\r\n timezone = timezone.replace(/:/g, '');\r\n var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\r\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\r\n }\r\n\r\n function addDateMinutes(date, minutes) {\r\n date = new Date(date.getTime());\r\n date.setMinutes(date.getMinutes() + minutes);\r\n return date;\r\n }\r\n\r\n function convertTimezoneToLocal(date, timezone, reverse) {\r\n reverse = reverse ? -1 : 1;\r\n var dateTimezoneOffset = date.getTimezoneOffset();\r\n var timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\r\n return addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset));\r\n }\r\n}]);\r\n\r\n// Avoiding use of ng-class as it creates a lot of watchers when a class is to be applied to\r\n// at most one element.\r\nangular.module('ui.bootstrap.isClass', [])\r\n.directive('uibIsClass', [\r\n '$animate',\r\nfunction ($animate) {\r\n // 11111111 22222222\r\n var ON_REGEXP = /^\\s*([\\s\\S]+?)\\s+on\\s+([\\s\\S]+?)\\s*$/;\r\n // 11111111 22222222\r\n var IS_REGEXP = /^\\s*([\\s\\S]+?)\\s+for\\s+([\\s\\S]+?)\\s*$/;\r\n\r\n var dataPerTracked = {};\r\n\r\n return {\r\n restrict: 'A',\r\n compile: function(tElement, tAttrs) {\r\n var linkedScopes = [];\r\n var instances = [];\r\n var expToData = {};\r\n var lastActivated = null;\r\n var onExpMatches = tAttrs.uibIsClass.match(ON_REGEXP);\r\n var onExp = onExpMatches[2];\r\n var expsStr = onExpMatches[1];\r\n var exps = expsStr.split(',');\r\n\r\n return linkFn;\r\n\r\n function linkFn(scope, element, attrs) {\r\n linkedScopes.push(scope);\r\n instances.push({\r\n scope: scope,\r\n element: element\r\n });\r\n\r\n exps.forEach(function(exp, k) {\r\n addForExp(exp, scope);\r\n });\r\n\r\n scope.$on('$destroy', removeScope);\r\n }\r\n\r\n function addForExp(exp, scope) {\r\n var matches = exp.match(IS_REGEXP);\r\n var clazz = scope.$eval(matches[1]);\r\n var compareWithExp = matches[2];\r\n var data = expToData[exp];\r\n if (!data) {\r\n var watchFn = function(compareWithVal) {\r\n var newActivated = null;\r\n instances.some(function(instance) {\r\n var thisVal = instance.scope.$eval(onExp);\r\n if (thisVal === compareWithVal) {\r\n newActivated = instance;\r\n return true;\r\n }\r\n });\r\n if (data.lastActivated !== newActivated) {\r\n if (data.lastActivated) {\r\n $animate.removeClass(data.lastActivated.element, clazz);\r\n }\r\n if (newActivated) {\r\n $animate.addClass(newActivated.element, clazz);\r\n }\r\n data.lastActivated = newActivated;\r\n }\r\n };\r\n expToData[exp] = data = {\r\n lastActivated: null,\r\n scope: scope,\r\n watchFn: watchFn,\r\n compareWithExp: compareWithExp,\r\n watcher: scope.$watch(compareWithExp, watchFn)\r\n };\r\n }\r\n data.watchFn(scope.$eval(compareWithExp));\r\n }\r\n\r\n function removeScope(e) {\r\n var removedScope = e.targetScope;\r\n var index = linkedScopes.indexOf(removedScope);\r\n linkedScopes.splice(index, 1);\r\n instances.splice(index, 1);\r\n if (linkedScopes.length) {\r\n var newWatchScope = linkedScopes[0];\r\n angular.forEach(expToData, function(data) {\r\n if (data.scope === removedScope) {\r\n data.watcher = newWatchScope.$watch(data.compareWithExp, data.watchFn);\r\n data.scope = newWatchScope;\r\n }\r\n });\r\n } else {\r\n expToData = {};\r\n }\r\n }\r\n }\r\n };\r\n}]);\r\nangular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootstrap.isClass'])\r\n\r\n.value('$datepickerSuppressError', false)\r\n\r\n.value('$datepickerLiteralWarning', true)\r\n\r\n.constant('uibDatepickerConfig', {\r\n datepickerMode: 'day',\r\n formatDay: 'dd',\r\n formatMonth: 'MMMM',\r\n formatYear: 'yyyy',\r\n formatDayHeader: 'EEE',\r\n formatDayTitle: 'MMMM yyyy',\r\n formatMonthTitle: 'yyyy',\r\n maxDate: null,\r\n maxMode: 'year',\r\n minDate: null,\r\n minMode: 'day',\r\n monthColumns: 3,\r\n ngModelOptions: {},\r\n shortcutPropagation: false,\r\n showWeeks: true,\r\n yearColumns: 5,\r\n yearRows: 4\r\n})\r\n\r\n.controller('UibDatepickerController', ['$scope', '$element', '$attrs', '$parse', '$interpolate', '$locale', '$log', 'dateFilter', 'uibDatepickerConfig', '$datepickerLiteralWarning', '$datepickerSuppressError', 'uibDateParser',\r\n function($scope, $element, $attrs, $parse, $interpolate, $locale, $log, dateFilter, datepickerConfig, $datepickerLiteralWarning, $datepickerSuppressError, dateParser) {\r\n var self = this,\r\n ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl;\r\n ngModelOptions = {},\r\n watchListeners = [];\r\n\r\n $element.addClass('uib-datepicker');\r\n $attrs.$set('role', 'application');\r\n\r\n if (!$scope.datepickerOptions) {\r\n $scope.datepickerOptions = {};\r\n }\r\n\r\n // Modes chain\r\n this.modes = ['day', 'month', 'year'];\r\n\r\n [\r\n 'customClass',\r\n 'dateDisabled',\r\n 'datepickerMode',\r\n 'formatDay',\r\n 'formatDayHeader',\r\n 'formatDayTitle',\r\n 'formatMonth',\r\n 'formatMonthTitle',\r\n 'formatYear',\r\n 'maxDate',\r\n 'maxMode',\r\n 'minDate',\r\n 'minMode',\r\n 'monthColumns',\r\n 'showWeeks',\r\n 'shortcutPropagation',\r\n 'startingDay',\r\n 'yearColumns',\r\n 'yearRows'\r\n ].forEach(function(key) {\r\n switch (key) {\r\n case 'customClass':\r\n case 'dateDisabled':\r\n $scope[key] = $scope.datepickerOptions[key] || angular.noop;\r\n break;\r\n case 'datepickerMode':\r\n $scope.datepickerMode = angular.isDefined($scope.datepickerOptions.datepickerMode) ?\r\n $scope.datepickerOptions.datepickerMode : datepickerConfig.datepickerMode;\r\n break;\r\n case 'formatDay':\r\n case 'formatDayHeader':\r\n case 'formatDayTitle':\r\n case 'formatMonth':\r\n case 'formatMonthTitle':\r\n case 'formatYear':\r\n self[key] = angular.isDefined($scope.datepickerOptions[key]) ?\r\n $interpolate($scope.datepickerOptions[key])($scope.$parent) :\r\n datepickerConfig[key];\r\n break;\r\n case 'monthColumns':\r\n case 'showWeeks':\r\n case 'shortcutPropagation':\r\n case 'yearColumns':\r\n case 'yearRows':\r\n self[key] = angular.isDefined($scope.datepickerOptions[key]) ?\r\n $scope.datepickerOptions[key] : datepickerConfig[key];\r\n break;\r\n case 'startingDay':\r\n if (angular.isDefined($scope.datepickerOptions.startingDay)) {\r\n self.startingDay = $scope.datepickerOptions.startingDay;\r\n } else if (angular.isNumber(datepickerConfig.startingDay)) {\r\n self.startingDay = datepickerConfig.startingDay;\r\n } else {\r\n self.startingDay = ($locale.DATETIME_FORMATS.FIRSTDAYOFWEEK + 8) % 7;\r\n }\r\n\r\n break;\r\n case 'maxDate':\r\n case 'minDate':\r\n $scope.$watch('datepickerOptions.' + key, function(value) {\r\n if (value) {\r\n if (angular.isDate(value)) {\r\n self[key] = dateParser.fromTimezone(new Date(value), ngModelOptions.getOption('timezone'));\r\n } else {\r\n if ($datepickerLiteralWarning) {\r\n $log.warn('Literal date support has been deprecated, please switch to date object usage');\r\n }\r\n\r\n self[key] = new Date(dateFilter(value, 'medium'));\r\n }\r\n } else {\r\n self[key] = datepickerConfig[key] ?\r\n dateParser.fromTimezone(new Date(datepickerConfig[key]), ngModelOptions.getOption('timezone')) :\r\n null;\r\n }\r\n\r\n self.refreshView();\r\n });\r\n\r\n break;\r\n case 'maxMode':\r\n case 'minMode':\r\n if ($scope.datepickerOptions[key]) {\r\n $scope.$watch(function() { return $scope.datepickerOptions[key]; }, function(value) {\r\n self[key] = $scope[key] = angular.isDefined(value) ? value : $scope.datepickerOptions[key];\r\n if (key === 'minMode' && self.modes.indexOf($scope.datepickerOptions.datepickerMode) < self.modes.indexOf(self[key]) ||\r\n key === 'maxMode' && self.modes.indexOf($scope.datepickerOptions.datepickerMode) > self.modes.indexOf(self[key])) {\r\n $scope.datepickerMode = self[key];\r\n $scope.datepickerOptions.datepickerMode = self[key];\r\n }\r\n });\r\n } else {\r\n self[key] = $scope[key] = datepickerConfig[key] || null;\r\n }\r\n\r\n break;\r\n }\r\n });\r\n\r\n $scope.uniqueId = 'datepicker-' + $scope.$id + '-' + Math.floor(Math.random() * 10000);\r\n\r\n $scope.disabled = angular.isDefined($attrs.disabled) || false;\r\n if (angular.isDefined($attrs.ngDisabled)) {\r\n watchListeners.push($scope.$parent.$watch($attrs.ngDisabled, function(disabled) {\r\n $scope.disabled = disabled;\r\n self.refreshView();\r\n }));\r\n }\r\n\r\n $scope.isActive = function(dateObject) {\r\n if (self.compare(dateObject.date, self.activeDate) === 0) {\r\n $scope.activeDateId = dateObject.uid;\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n this.init = function(ngModelCtrl_) {\r\n ngModelCtrl = ngModelCtrl_;\r\n ngModelOptions = extractOptions(ngModelCtrl);\r\n\r\n if ($scope.datepickerOptions.initDate) {\r\n self.activeDate = dateParser.fromTimezone($scope.datepickerOptions.initDate, ngModelOptions.getOption('timezone')) || new Date();\r\n $scope.$watch('datepickerOptions.initDate', function(initDate) {\r\n if (initDate && (ngModelCtrl.$isEmpty(ngModelCtrl.$modelValue) || ngModelCtrl.$invalid)) {\r\n self.activeDate = dateParser.fromTimezone(initDate, ngModelOptions.getOption('timezone'));\r\n self.refreshView();\r\n }\r\n });\r\n } else {\r\n self.activeDate = new Date();\r\n }\r\n\r\n var date = ngModelCtrl.$modelValue ? new Date(ngModelCtrl.$modelValue) : new Date();\r\n this.activeDate = !isNaN(date) ?\r\n dateParser.fromTimezone(date, ngModelOptions.getOption('timezone')) :\r\n dateParser.fromTimezone(new Date(), ngModelOptions.getOption('timezone'));\r\n\r\n ngModelCtrl.$render = function() {\r\n self.render();\r\n };\r\n };\r\n\r\n this.render = function() {\r\n if (ngModelCtrl.$viewValue) {\r\n var date = new Date(ngModelCtrl.$viewValue),\r\n isValid = !isNaN(date);\r\n\r\n if (isValid) {\r\n this.activeDate = dateParser.fromTimezone(date, ngModelOptions.getOption('timezone'));\r\n } else if (!$datepickerSuppressError) {\r\n $log.error('Datepicker directive: \"ng-model\" value must be a Date object');\r\n }\r\n }\r\n this.refreshView();\r\n };\r\n\r\n this.refreshView = function() {\r\n if (this.element) {\r\n $scope.selectedDt = null;\r\n this._refreshView();\r\n if ($scope.activeDt) {\r\n $scope.activeDateId = $scope.activeDt.uid;\r\n }\r\n\r\n var date = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;\r\n date = dateParser.fromTimezone(date, ngModelOptions.getOption('timezone'));\r\n ngModelCtrl.$setValidity('dateDisabled', !date ||\r\n this.element && !this.isDisabled(date));\r\n }\r\n };\r\n\r\n this.createDateObject = function(date, format) {\r\n var model = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;\r\n model = dateParser.fromTimezone(model, ngModelOptions.getOption('timezone'));\r\n var today = new Date();\r\n today = dateParser.fromTimezone(today, ngModelOptions.getOption('timezone'));\r\n var time = this.compare(date, today);\r\n var dt = {\r\n date: date,\r\n label: dateParser.filter(date, format),\r\n selected: model && this.compare(date, model) === 0,\r\n disabled: this.isDisabled(date),\r\n past: time < 0,\r\n current: time === 0,\r\n future: time > 0,\r\n customClass: this.customClass(date) || null\r\n };\r\n\r\n if (model && this.compare(date, model) === 0) {\r\n $scope.selectedDt = dt;\r\n }\r\n\r\n if (self.activeDate && this.compare(dt.date, self.activeDate) === 0) {\r\n $scope.activeDt = dt;\r\n }\r\n\r\n return dt;\r\n };\r\n\r\n this.isDisabled = function(date) {\r\n return $scope.disabled ||\r\n this.minDate && this.compare(date, this.minDate) < 0 ||\r\n this.maxDate && this.compare(date, this.maxDate) > 0 ||\r\n $scope.dateDisabled && $scope.dateDisabled({date: date, mode: $scope.datepickerMode});\r\n };\r\n\r\n this.customClass = function(date) {\r\n return $scope.customClass({date: date, mode: $scope.datepickerMode});\r\n };\r\n\r\n // Split array into smaller arrays\r\n this.split = function(arr, size) {\r\n var arrays = [];\r\n while (arr.length > 0) {\r\n arrays.push(arr.splice(0, size));\r\n }\r\n return arrays;\r\n };\r\n\r\n $scope.select = function(date) {\r\n if ($scope.datepickerMode === self.minMode) {\r\n var dt = ngModelCtrl.$viewValue ? dateParser.fromTimezone(new Date(ngModelCtrl.$viewValue), ngModelOptions.getOption('timezone')) : new Date(0, 0, 0, 0, 0, 0, 0);\r\n dt.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\r\n dt = dateParser.toTimezone(dt, ngModelOptions.getOption('timezone'));\r\n ngModelCtrl.$setViewValue(dt);\r\n ngModelCtrl.$render();\r\n } else {\r\n self.activeDate = date;\r\n setMode(self.modes[self.modes.indexOf($scope.datepickerMode) - 1]);\r\n\r\n $scope.$emit('uib:datepicker.mode');\r\n }\r\n\r\n $scope.$broadcast('uib:datepicker.focus');\r\n };\r\n\r\n $scope.move = function(direction) {\r\n var year = self.activeDate.getFullYear() + direction * (self.step.years || 0),\r\n month = self.activeDate.getMonth() + direction * (self.step.months || 0);\r\n self.activeDate.setFullYear(year, month, 1);\r\n self.refreshView();\r\n };\r\n\r\n $scope.toggleMode = function(direction) {\r\n direction = direction || 1;\r\n\r\n if ($scope.datepickerMode === self.maxMode && direction === 1 ||\r\n $scope.datepickerMode === self.minMode && direction === -1) {\r\n return;\r\n }\r\n\r\n setMode(self.modes[self.modes.indexOf($scope.datepickerMode) + direction]);\r\n\r\n $scope.$emit('uib:datepicker.mode');\r\n };\r\n\r\n // Key event mapper\r\n $scope.keys = { 13: 'enter', 32: 'space', 33: 'pageup', 34: 'pagedown', 35: 'end', 36: 'home', 37: 'left', 38: 'up', 39: 'right', 40: 'down' };\r\n\r\n var focusElement = function() {\r\n self.element[0].focus();\r\n };\r\n\r\n // Listen for focus requests from popup directive\r\n $scope.$on('uib:datepicker.focus', focusElement);\r\n\r\n $scope.keydown = function(evt) {\r\n var key = $scope.keys[evt.which];\r\n\r\n if (!key || evt.shiftKey || evt.altKey || $scope.disabled) {\r\n return;\r\n }\r\n\r\n evt.preventDefault();\r\n if (!self.shortcutPropagation) {\r\n evt.stopPropagation();\r\n }\r\n\r\n if (key === 'enter' || key === 'space') {\r\n if (self.isDisabled(self.activeDate)) {\r\n return; // do nothing\r\n }\r\n $scope.select(self.activeDate);\r\n } else if (evt.ctrlKey && (key === 'up' || key === 'down')) {\r\n $scope.toggleMode(key === 'up' ? 1 : -1);\r\n } else {\r\n self.handleKeyDown(key, evt);\r\n self.refreshView();\r\n }\r\n };\r\n\r\n $element.on('keydown', function(evt) {\r\n $scope.$apply(function() {\r\n $scope.keydown(evt);\r\n });\r\n });\r\n\r\n $scope.$on('$destroy', function() {\r\n //Clear all watch listeners on destroy\r\n while (watchListeners.length) {\r\n watchListeners.shift()();\r\n }\r\n });\r\n\r\n function setMode(mode) {\r\n $scope.datepickerMode = mode;\r\n $scope.datepickerOptions.datepickerMode = mode;\r\n }\r\n\r\n function extractOptions(ngModelCtrl) {\r\n var ngModelOptions;\r\n\r\n if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing\r\n // guarantee a value\r\n ngModelOptions = ngModelCtrl.$options ||\r\n $scope.datepickerOptions.ngModelOptions ||\r\n datepickerConfig.ngModelOptions ||\r\n {};\r\n\r\n // mimic 1.6+ api\r\n ngModelOptions.getOption = function (key) {\r\n return ngModelOptions[key];\r\n };\r\n } else { // in angular >=1.6 $options is always present\r\n // ng-model-options defaults timezone to null; don't let its precedence squash a non-null value\r\n var timezone = ngModelCtrl.$options.getOption('timezone') ||\r\n ($scope.datepickerOptions.ngModelOptions ? $scope.datepickerOptions.ngModelOptions.timezone : null) ||\r\n (datepickerConfig.ngModelOptions ? datepickerConfig.ngModelOptions.timezone : null);\r\n\r\n // values passed to createChild override existing values\r\n ngModelOptions = ngModelCtrl.$options // start with a ModelOptions instance\r\n .createChild(datepickerConfig.ngModelOptions) // lowest precedence\r\n .createChild($scope.datepickerOptions.ngModelOptions)\r\n .createChild(ngModelCtrl.$options) // highest precedence\r\n .createChild({timezone: timezone}); // to keep from squashing a non-null value\r\n }\r\n\r\n return ngModelOptions;\r\n }\r\n}])\r\n\r\n.controller('UibDaypickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\r\n var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n\r\n this.step = { months: 1 };\r\n this.element = $element;\r\n function getDaysInMonth(year, month) {\r\n return month === 1 && year % 4 === 0 &&\r\n (year % 100 !== 0 || year % 400 === 0) ? 29 : DAYS_IN_MONTH[month];\r\n }\r\n\r\n this.init = function(ctrl) {\r\n angular.extend(ctrl, this);\r\n scope.showWeeks = ctrl.showWeeks;\r\n ctrl.refreshView();\r\n };\r\n\r\n this.getDates = function(startDate, n) {\r\n var dates = new Array(n), current = new Date(startDate), i = 0, date;\r\n while (i < n) {\r\n date = new Date(current);\r\n dates[i++] = date;\r\n current.setDate(current.getDate() + 1);\r\n }\r\n return dates;\r\n };\r\n\r\n this._refreshView = function() {\r\n var year = this.activeDate.getFullYear(),\r\n month = this.activeDate.getMonth(),\r\n firstDayOfMonth = new Date(this.activeDate);\r\n\r\n firstDayOfMonth.setFullYear(year, month, 1);\r\n\r\n var difference = this.startingDay - firstDayOfMonth.getDay(),\r\n numDisplayedFromPreviousMonth = difference > 0 ?\r\n 7 - difference : - difference,\r\n firstDate = new Date(firstDayOfMonth);\r\n\r\n if (numDisplayedFromPreviousMonth > 0) {\r\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\r\n }\r\n\r\n // 42 is the number of days on a six-week calendar\r\n var days = this.getDates(firstDate, 42);\r\n for (var i = 0; i < 42; i ++) {\r\n days[i] = angular.extend(this.createDateObject(days[i], this.formatDay), {\r\n secondary: days[i].getMonth() !== month,\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.labels = new Array(7);\r\n for (var j = 0; j < 7; j++) {\r\n scope.labels[j] = {\r\n abbr: dateFilter(days[j].date, this.formatDayHeader),\r\n full: dateFilter(days[j].date, 'EEEE')\r\n };\r\n }\r\n\r\n scope.title = dateFilter(this.activeDate, this.formatDayTitle);\r\n scope.rows = this.split(days, 7);\r\n\r\n if (scope.showWeeks) {\r\n scope.weekNumbers = [];\r\n var thursdayIndex = (4 + 7 - this.startingDay) % 7,\r\n numWeeks = scope.rows.length;\r\n for (var curWeek = 0; curWeek < numWeeks; curWeek++) {\r\n scope.weekNumbers.push(\r\n getISO8601WeekNumber(scope.rows[curWeek][thursdayIndex].date));\r\n }\r\n }\r\n };\r\n\r\n this.compare = function(date1, date2) {\r\n var _date1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\r\n var _date2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\r\n _date1.setFullYear(date1.getFullYear());\r\n _date2.setFullYear(date2.getFullYear());\r\n return _date1 - _date2;\r\n };\r\n\r\n function getISO8601WeekNumber(date) {\r\n var checkDate = new Date(date);\r\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); // Thursday\r\n var time = checkDate.getTime();\r\n checkDate.setMonth(0); // Compare with Jan 1\r\n checkDate.setDate(1);\r\n return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\r\n }\r\n\r\n this.handleKeyDown = function(key, evt) {\r\n var date = this.activeDate.getDate();\r\n\r\n if (key === 'left') {\r\n date = date - 1;\r\n } else if (key === 'up') {\r\n date = date - 7;\r\n } else if (key === 'right') {\r\n date = date + 1;\r\n } else if (key === 'down') {\r\n date = date + 7;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n var month = this.activeDate.getMonth() + (key === 'pageup' ? - 1 : 1);\r\n this.activeDate.setMonth(month, 1);\r\n date = Math.min(getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth()), date);\r\n } else if (key === 'home') {\r\n date = 1;\r\n } else if (key === 'end') {\r\n date = getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth());\r\n }\r\n this.activeDate.setDate(date);\r\n };\r\n}])\r\n\r\n.controller('UibMonthpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\r\n this.step = { years: 1 };\r\n this.element = $element;\r\n\r\n this.init = function(ctrl) {\r\n angular.extend(ctrl, this);\r\n ctrl.refreshView();\r\n };\r\n\r\n this._refreshView = function() {\r\n var months = new Array(12),\r\n year = this.activeDate.getFullYear(),\r\n date;\r\n\r\n for (var i = 0; i < 12; i++) {\r\n date = new Date(this.activeDate);\r\n date.setFullYear(year, i, 1);\r\n months[i] = angular.extend(this.createDateObject(date, this.formatMonth), {\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.title = dateFilter(this.activeDate, this.formatMonthTitle);\r\n scope.rows = this.split(months, this.monthColumns);\r\n scope.yearHeaderColspan = this.monthColumns > 3 ? this.monthColumns - 2 : 1;\r\n };\r\n\r\n this.compare = function(date1, date2) {\r\n var _date1 = new Date(date1.getFullYear(), date1.getMonth());\r\n var _date2 = new Date(date2.getFullYear(), date2.getMonth());\r\n _date1.setFullYear(date1.getFullYear());\r\n _date2.setFullYear(date2.getFullYear());\r\n return _date1 - _date2;\r\n };\r\n\r\n this.handleKeyDown = function(key, evt) {\r\n var date = this.activeDate.getMonth();\r\n\r\n if (key === 'left') {\r\n date = date - 1;\r\n } else if (key === 'up') {\r\n date = date - this.monthColumns;\r\n } else if (key === 'right') {\r\n date = date + 1;\r\n } else if (key === 'down') {\r\n date = date + this.monthColumns;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n var year = this.activeDate.getFullYear() + (key === 'pageup' ? - 1 : 1);\r\n this.activeDate.setFullYear(year);\r\n } else if (key === 'home') {\r\n date = 0;\r\n } else if (key === 'end') {\r\n date = 11;\r\n }\r\n this.activeDate.setMonth(date);\r\n };\r\n}])\r\n\r\n.controller('UibYearpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\r\n var columns, range;\r\n this.element = $element;\r\n\r\n function getStartingYear(year) {\r\n return parseInt((year - 1) / range, 10) * range + 1;\r\n }\r\n\r\n this.yearpickerInit = function() {\r\n columns = this.yearColumns;\r\n range = this.yearRows * columns;\r\n this.step = { years: range };\r\n };\r\n\r\n this._refreshView = function() {\r\n var years = new Array(range), date;\r\n\r\n for (var i = 0, start = getStartingYear(this.activeDate.getFullYear()); i < range; i++) {\r\n date = new Date(this.activeDate);\r\n date.setFullYear(start + i, 0, 1);\r\n years[i] = angular.extend(this.createDateObject(date, this.formatYear), {\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.title = [years[0].label, years[range - 1].label].join(' - ');\r\n scope.rows = this.split(years, columns);\r\n scope.columns = columns;\r\n };\r\n\r\n this.compare = function(date1, date2) {\r\n return date1.getFullYear() - date2.getFullYear();\r\n };\r\n\r\n this.handleKeyDown = function(key, evt) {\r\n var date = this.activeDate.getFullYear();\r\n\r\n if (key === 'left') {\r\n date = date - 1;\r\n } else if (key === 'up') {\r\n date = date - columns;\r\n } else if (key === 'right') {\r\n date = date + 1;\r\n } else if (key === 'down') {\r\n date = date + columns;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n date += (key === 'pageup' ? - 1 : 1) * range;\r\n } else if (key === 'home') {\r\n date = getStartingYear(this.activeDate.getFullYear());\r\n } else if (key === 'end') {\r\n date = getStartingYear(this.activeDate.getFullYear()) + range - 1;\r\n }\r\n this.activeDate.setFullYear(date);\r\n };\r\n}])\r\n\r\n.directive('uibDatepicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/datepicker.html';\r\n },\r\n scope: {\r\n datepickerOptions: '=?'\r\n },\r\n require: ['uibDatepicker', '^ngModel'],\r\n restrict: 'A',\r\n controller: 'UibDatepickerController',\r\n controllerAs: 'datepicker',\r\n link: function(scope, element, attrs, ctrls) {\r\n var datepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n datepickerCtrl.init(ngModelCtrl);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDaypicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/day.html';\r\n },\r\n require: ['^uibDatepicker', 'uibDaypicker'],\r\n restrict: 'A',\r\n controller: 'UibDaypickerController',\r\n link: function(scope, element, attrs, ctrls) {\r\n var datepickerCtrl = ctrls[0],\r\n daypickerCtrl = ctrls[1];\r\n\r\n daypickerCtrl.init(datepickerCtrl);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibMonthpicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/month.html';\r\n },\r\n require: ['^uibDatepicker', 'uibMonthpicker'],\r\n restrict: 'A',\r\n controller: 'UibMonthpickerController',\r\n link: function(scope, element, attrs, ctrls) {\r\n var datepickerCtrl = ctrls[0],\r\n monthpickerCtrl = ctrls[1];\r\n\r\n monthpickerCtrl.init(datepickerCtrl);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibYearpicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/year.html';\r\n },\r\n require: ['^uibDatepicker', 'uibYearpicker'],\r\n restrict: 'A',\r\n controller: 'UibYearpickerController',\r\n link: function(scope, element, attrs, ctrls) {\r\n var ctrl = ctrls[0];\r\n angular.extend(ctrl, ctrls[1]);\r\n ctrl.yearpickerInit();\r\n\r\n ctrl.refreshView();\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.position', [])\r\n\r\n /**\r\n * A set of utility methods for working with the DOM.\r\n * It is meant to be used where we need to absolute-position elements in\r\n * relation to another element (this is the case for tooltips, popovers,\r\n * typeahead suggestions etc.).\r\n */\r\n .factory('$uibPosition', ['$document', '$window', function($document, $window) {\r\n /**\r\n * Used by scrollbarWidth() function to cache scrollbar's width.\r\n * Do not access this variable directly, use scrollbarWidth() instead.\r\n */\r\n var SCROLLBAR_WIDTH;\r\n /**\r\n * scrollbar on body and html element in IE and Edge overlay\r\n * content and should be considered 0 width.\r\n */\r\n var BODY_SCROLLBAR_WIDTH;\r\n var OVERFLOW_REGEX = {\r\n normal: /(auto|scroll)/,\r\n hidden: /(auto|scroll|hidden)/\r\n };\r\n var PLACEMENT_REGEX = {\r\n auto: /\\s?auto?\\s?/i,\r\n primary: /^(top|bottom|left|right)$/,\r\n secondary: /^(top|bottom|left|right|center)$/,\r\n vertical: /^(top|bottom)$/\r\n };\r\n var BODY_REGEX = /(HTML|BODY)/;\r\n\r\n return {\r\n\r\n /**\r\n * Provides a raw DOM element from a jQuery/jQLite element.\r\n *\r\n * @param {element} elem - The element to convert.\r\n *\r\n * @returns {element} A HTML element.\r\n */\r\n getRawNode: function(elem) {\r\n return elem.nodeName ? elem : elem[0] || elem;\r\n },\r\n\r\n /**\r\n * Provides a parsed number for a style property. Strips\r\n * units and casts invalid numbers to 0.\r\n *\r\n * @param {string} value - The style value to parse.\r\n *\r\n * @returns {number} A valid number.\r\n */\r\n parseStyle: function(value) {\r\n value = parseFloat(value);\r\n return isFinite(value) ? value : 0;\r\n },\r\n\r\n /**\r\n * Provides the closest positioned ancestor.\r\n *\r\n * @param {element} element - The element to get the offest parent for.\r\n *\r\n * @returns {element} The closest positioned ancestor.\r\n */\r\n offsetParent: function(elem) {\r\n elem = this.getRawNode(elem);\r\n\r\n var offsetParent = elem.offsetParent || $document[0].documentElement;\r\n\r\n function isStaticPositioned(el) {\r\n return ($window.getComputedStyle(el).position || 'static') === 'static';\r\n }\r\n\r\n while (offsetParent && offsetParent !== $document[0].documentElement && isStaticPositioned(offsetParent)) {\r\n offsetParent = offsetParent.offsetParent;\r\n }\r\n\r\n return offsetParent || $document[0].documentElement;\r\n },\r\n\r\n /**\r\n * Provides the scrollbar width, concept from TWBS measureScrollbar()\r\n * function in https://github.com/twbs/bootstrap/blob/master/js/modal.js\r\n * In IE and Edge, scollbar on body and html element overlay and should\r\n * return a width of 0.\r\n *\r\n * @returns {number} The width of the browser scollbar.\r\n */\r\n scrollbarWidth: function(isBody) {\r\n if (isBody) {\r\n if (angular.isUndefined(BODY_SCROLLBAR_WIDTH)) {\r\n var bodyElem = $document.find('body');\r\n bodyElem.addClass('uib-position-body-scrollbar-measure');\r\n BODY_SCROLLBAR_WIDTH = $window.innerWidth - bodyElem[0].clientWidth;\r\n BODY_SCROLLBAR_WIDTH = isFinite(BODY_SCROLLBAR_WIDTH) ? BODY_SCROLLBAR_WIDTH : 0;\r\n bodyElem.removeClass('uib-position-body-scrollbar-measure');\r\n }\r\n return BODY_SCROLLBAR_WIDTH;\r\n }\r\n\r\n if (angular.isUndefined(SCROLLBAR_WIDTH)) {\r\n var scrollElem = angular.element('<div class=\"uib-position-scrollbar-measure\"></div>');\r\n $document.find('body').append(scrollElem);\r\n SCROLLBAR_WIDTH = scrollElem[0].offsetWidth - scrollElem[0].clientWidth;\r\n SCROLLBAR_WIDTH = isFinite(SCROLLBAR_WIDTH) ? SCROLLBAR_WIDTH : 0;\r\n scrollElem.remove();\r\n }\r\n\r\n return SCROLLBAR_WIDTH;\r\n },\r\n\r\n /**\r\n * Provides the padding required on an element to replace the scrollbar.\r\n *\r\n * @returns {object} An object with the following properties:\r\n * <ul>\r\n * <li>**scrollbarWidth**: the width of the scrollbar</li>\r\n * <li>**widthOverflow**: whether the the width is overflowing</li>\r\n * <li>**right**: the amount of right padding on the element needed to replace the scrollbar</li>\r\n * <li>**rightOriginal**: the amount of right padding currently on the element</li>\r\n * <li>**heightOverflow**: whether the the height is overflowing</li>\r\n * <li>**bottom**: the amount of bottom padding on the element needed to replace the scrollbar</li>\r\n * <li>**bottomOriginal**: the amount of bottom padding currently on the element</li>\r\n * </ul>\r\n */\r\n scrollbarPadding: function(elem) {\r\n elem = this.getRawNode(elem);\r\n\r\n var elemStyle = $window.getComputedStyle(elem);\r\n var paddingRight = this.parseStyle(elemStyle.paddingRight);\r\n var paddingBottom = this.parseStyle(elemStyle.paddingBottom);\r\n var scrollParent = this.scrollParent(elem, false, true);\r\n var scrollbarWidth = this.scrollbarWidth(BODY_REGEX.test(scrollParent.tagName));\r\n\r\n return {\r\n scrollbarWidth: scrollbarWidth,\r\n widthOverflow: scrollParent.scrollWidth > scrollParent.clientWidth,\r\n right: paddingRight + scrollbarWidth,\r\n originalRight: paddingRight,\r\n heightOverflow: scrollParent.scrollHeight > scrollParent.clientHeight,\r\n bottom: paddingBottom + scrollbarWidth,\r\n originalBottom: paddingBottom\r\n };\r\n },\r\n\r\n /**\r\n * Checks to see if the element is scrollable.\r\n *\r\n * @param {element} elem - The element to check.\r\n * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,\r\n * default is false.\r\n *\r\n * @returns {boolean} Whether the element is scrollable.\r\n */\r\n isScrollable: function(elem, includeHidden) {\r\n elem = this.getRawNode(elem);\r\n\r\n var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;\r\n var elemStyle = $window.getComputedStyle(elem);\r\n return overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX);\r\n },\r\n\r\n /**\r\n * Provides the closest scrollable ancestor.\r\n * A port of the jQuery UI scrollParent method:\r\n * https://github.com/jquery/jquery-ui/blob/master/ui/scroll-parent.js\r\n *\r\n * @param {element} elem - The element to find the scroll parent of.\r\n * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,\r\n * default is false.\r\n * @param {boolean=} [includeSelf=false] - Should the element being passed be\r\n * included in the scrollable llokup.\r\n *\r\n * @returns {element} A HTML element.\r\n */\r\n scrollParent: function(elem, includeHidden, includeSelf) {\r\n elem = this.getRawNode(elem);\r\n\r\n var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;\r\n var documentEl = $document[0].documentElement;\r\n var elemStyle = $window.getComputedStyle(elem);\r\n if (includeSelf && overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX)) {\r\n return elem;\r\n }\r\n var excludeStatic = elemStyle.position === 'absolute';\r\n var scrollParent = elem.parentElement || documentEl;\r\n\r\n if (scrollParent === documentEl || elemStyle.position === 'fixed') {\r\n return documentEl;\r\n }\r\n\r\n while (scrollParent.parentElement && scrollParent !== documentEl) {\r\n var spStyle = $window.getComputedStyle(scrollParent);\r\n if (excludeStatic && spStyle.position !== 'static') {\r\n excludeStatic = false;\r\n }\r\n\r\n if (!excludeStatic && overflowRegex.test(spStyle.overflow + spStyle.overflowY + spStyle.overflowX)) {\r\n break;\r\n }\r\n scrollParent = scrollParent.parentElement;\r\n }\r\n\r\n return scrollParent;\r\n },\r\n\r\n /**\r\n * Provides read-only equivalent of jQuery's position function:\r\n * http://api.jquery.com/position/ - distance to closest positioned\r\n * ancestor. Does not account for margins by default like jQuery position.\r\n *\r\n * @param {element} elem - The element to caclulate the position on.\r\n * @param {boolean=} [includeMargins=false] - Should margins be accounted\r\n * for, default is false.\r\n *\r\n * @returns {object} An object with the following properties:\r\n * <ul>\r\n * <li>**width**: the width of the element</li>\r\n * <li>**height**: the height of the element</li>\r\n * <li>**top**: distance to top edge of offset parent</li>\r\n * <li>**left**: distance to left edge of offset parent</li>\r\n * </ul>\r\n */\r\n position: function(elem, includeMagins) {\r\n elem = this.getRawNode(elem);\r\n\r\n var elemOffset = this.offset(elem);\r\n if (includeMagins) {\r\n var elemStyle = $window.getComputedStyle(elem);\r\n elemOffset.top -= this.parseStyle(elemStyle.marginTop);\r\n elemOffset.left -= this.parseStyle(elemStyle.marginLeft);\r\n }\r\n var parent = this.offsetParent(elem);\r\n var parentOffset = {top: 0, left: 0};\r\n\r\n if (parent !== $document[0].documentElement) {\r\n parentOffset = this.offset(parent);\r\n parentOffset.top += parent.clientTop - parent.scrollTop;\r\n parentOffset.left += parent.clientLeft - parent.scrollLeft;\r\n }\r\n\r\n return {\r\n width: Math.round(angular.isNumber(elemOffset.width) ? elemOffset.width : elem.offsetWidth),\r\n height: Math.round(angular.isNumber(elemOffset.height) ? elemOffset.height : elem.offsetHeight),\r\n top: Math.round(elemOffset.top - parentOffset.top),\r\n left: Math.round(elemOffset.left - parentOffset.left)\r\n };\r\n },\r\n\r\n /**\r\n * Provides read-only equivalent of jQuery's offset function:\r\n * http://api.jquery.com/offset/ - distance to viewport. Does\r\n * not account for borders, margins, or padding on the body\r\n * element.\r\n *\r\n * @param {element} elem - The element to calculate the offset on.\r\n *\r\n * @returns {object} An object with the following properties:\r\n * <ul>\r\n * <li>**width**: the width of the element</li>\r\n * <li>**height**: the height of the element</li>\r\n * <li>**top**: distance to top edge of viewport</li>\r\n * <li>**right**: distance to bottom edge of viewport</li>\r\n * </ul>\r\n */\r\n offset: function(elem, includeMargins) {\r\n elem = this.getRawNode(elem);\r\n\r\n var elemBCR = elem.getBoundingClientRect();\r\n var offset = {\r\n width: Math.round(angular.isNumber(elemBCR.width) ? elemBCR.width : elem.offsetWidth),\r\n height: Math.round(angular.isNumber(elemBCR.height) ? elemBCR.height : elem.offsetHeight),\r\n top: Math.round(elemBCR.top + ($window.pageYOffset || $document[0].documentElement.scrollTop)),\r\n left: Math.round(elemBCR.left + ($window.pageXOffset || $document[0].documentElement.scrollLeft))\r\n };\r\n\r\n if (includeMargins) {\r\n var styles = window.getComputedStyle(elem);\r\n var verticalMargin = this.parseStyle(styles.marginTop) + this.parseStyle(styles.marginBottom);\r\n var horisontalMargin = this.parseStyle(styles.marginLeft) + this.parseStyle(styles.marginRight);\r\n\r\n offset.height += verticalMargin;\r\n offset.width += horisontalMargin;\r\n }\r\n\r\n return offset;\r\n },\r\n\r\n /**\r\n * Provides offset distance to the closest scrollable ancestor\r\n * or viewport. Accounts for border and scrollbar width.\r\n *\r\n * Right and bottom dimensions represent the distance to the\r\n * respective edge of the viewport element. If the element\r\n * edge extends beyond the viewport, a negative value will be\r\n * reported.\r\n *\r\n * @param {element} elem - The element to get the viewport offset for.\r\n * @param {boolean=} [useDocument=false] - Should the viewport be the document element instead\r\n * of the first scrollable element, default is false.\r\n * @param {boolean=} [includePadding=true] - Should the padding on the offset parent element\r\n * be accounted for, default is true.\r\n *\r\n * @returns {object} An object with the following properties:\r\n * <ul>\r\n * <li>**top**: distance to the top content edge of viewport element</li>\r\n * <li>**bottom**: distance to the bottom content edge of viewport element</li>\r\n * <li>**left**: distance to the left content edge of viewport element</li>\r\n * <li>**right**: distance to the right content edge of viewport element</li>\r\n * </ul>\r\n */\r\n viewportOffset: function(elem, useDocument, includePadding) {\r\n elem = this.getRawNode(elem);\r\n includePadding = includePadding !== false ? true : false;\r\n\r\n var elemBCR = elem.getBoundingClientRect();\r\n var offsetBCR = {top: 0, left: 0, bottom: 0, right: 0};\r\n\r\n var offsetParent = useDocument ? $document[0].documentElement : this.scrollParent(elem);\r\n var offsetParentBCR = offsetParent.getBoundingClientRect();\r\n\r\n offsetBCR.top = offsetParentBCR.top + offsetParent.clientTop;\r\n offsetBCR.left = offsetParentBCR.left + offsetParent.clientLeft;\r\n if (offsetParent === $document[0].documentElement) {\r\n offsetBCR.top += $window.pageYOffset;\r\n offsetBCR.left += $window.pageXOffset;\r\n }\r\n offsetBCR.bottom = offsetBCR.top + offsetParent.clientHeight;\r\n offsetBCR.right = offsetBCR.left + offsetParent.clientWidth;\r\n\r\n if (includePadding) {\r\n var offsetParentStyle = $window.getComputedStyle(offsetParent);\r\n offsetBCR.top += this.parseStyle(offsetParentStyle.paddingTop);\r\n offsetBCR.bottom -= this.parseStyle(offsetParentStyle.paddingBottom);\r\n offsetBCR.left += this.parseStyle(offsetParentStyle.paddingLeft);\r\n offsetBCR.right -= this.parseStyle(offsetParentStyle.paddingRight);\r\n }\r\n\r\n return {\r\n top: Math.round(elemBCR.top - offsetBCR.top),\r\n bottom: Math.round(offsetBCR.bottom - elemBCR.bottom),\r\n left: Math.round(elemBCR.left - offsetBCR.left),\r\n right: Math.round(offsetBCR.right - elemBCR.right)\r\n };\r\n },\r\n\r\n /**\r\n * Provides an array of placement values parsed from a placement string.\r\n * Along with the 'auto' indicator, supported placement strings are:\r\n * <ul>\r\n * <li>top: element on top, horizontally centered on host element.</li>\r\n * <li>top-left: element on top, left edge aligned with host element left edge.</li>\r\n * <li>top-right: element on top, lerightft edge aligned with host element right edge.</li>\r\n * <li>bottom: element on bottom, horizontally centered on host element.</li>\r\n * <li>bottom-left: element on bottom, left edge aligned with host element left edge.</li>\r\n * <li>bottom-right: element on bottom, right edge aligned with host element right edge.</li>\r\n * <li>left: element on left, vertically centered on host element.</li>\r\n * <li>left-top: element on left, top edge aligned with host element top edge.</li>\r\n * <li>left-bottom: element on left, bottom edge aligned with host element bottom edge.</li>\r\n * <li>right: element on right, vertically centered on host element.</li>\r\n * <li>right-top: element on right, top edge aligned with host element top edge.</li>\r\n * <li>right-bottom: element on right, bottom edge aligned with host element bottom edge.</li>\r\n * </ul>\r\n * A placement string with an 'auto' indicator is expected to be\r\n * space separated from the placement, i.e: 'auto bottom-left' If\r\n * the primary and secondary placement values do not match 'top,\r\n * bottom, left, right' then 'top' will be the primary placement and\r\n * 'center' will be the secondary placement. If 'auto' is passed, true\r\n * will be returned as the 3rd value of the array.\r\n *\r\n * @param {string} placement - The placement string to parse.\r\n *\r\n * @returns {array} An array with the following values\r\n * <ul>\r\n * <li>**[0]**: The primary placement.</li>\r\n * <li>**[1]**: The secondary placement.</li>\r\n * <li>**[2]**: If auto is passed: true, else undefined.</li>\r\n * </ul>\r\n */\r\n parsePlacement: function(placement) {\r\n var autoPlace = PLACEMENT_REGEX.auto.test(placement);\r\n if (autoPlace) {\r\n placement = placement.replace(PLACEMENT_REGEX.auto, '');\r\n }\r\n\r\n placement = placement.split('-');\r\n\r\n placement[0] = placement[0] || 'top';\r\n if (!PLACEMENT_REGEX.primary.test(placement[0])) {\r\n placement[0] = 'top';\r\n }\r\n\r\n placement[1] = placement[1] || 'center';\r\n if (!PLACEMENT_REGEX.secondary.test(placement[1])) {\r\n placement[1] = 'center';\r\n }\r\n\r\n if (autoPlace) {\r\n placement[2] = true;\r\n } else {\r\n placement[2] = false;\r\n }\r\n\r\n return placement;\r\n },\r\n\r\n /**\r\n * Provides coordinates for an element to be positioned relative to\r\n * another element. Passing 'auto' as part of the placement parameter\r\n * will enable smart placement - where the element fits. i.e:\r\n * 'auto left-top' will check to see if there is enough space to the left\r\n * of the hostElem to fit the targetElem, if not place right (same for secondary\r\n * top placement). Available space is calculated using the viewportOffset\r\n * function.\r\n *\r\n * @param {element} hostElem - The element to position against.\r\n * @param {element} targetElem - The element to position.\r\n * @param {string=} [placement=top] - The placement for the targetElem,\r\n * default is 'top'. 'center' is assumed as secondary placement for\r\n * 'top', 'left', 'right', and 'bottom' placements. Available placements are:\r\n * <ul>\r\n * <li>top</li>\r\n * <li>top-right</li>\r\n * <li>top-left</li>\r\n * <li>bottom</li>\r\n * <li>bottom-left</li>\r\n * <li>bottom-right</li>\r\n * <li>left</li>\r\n * <li>left-top</li>\r\n * <li>left-bottom</li>\r\n * <li>right</li>\r\n * <li>right-top</li>\r\n * <li>right-bottom</li>\r\n * </ul>\r\n * @param {boolean=} [appendToBody=false] - Should the top and left values returned\r\n * be calculated from the body element, default is false.\r\n * @param {boolean=} [includeMargins=false] - Should margins count into targetElem width\r\n * in position claculation\r\n *\r\n * @returns {object} An object with the following properties:\r\n * <ul>\r\n * <li>**top**: Value for targetElem top.</li>\r\n * <li>**left**: Value for targetElem left.</li>\r\n * <li>**placement**: The resolved placement.</li>\r\n * </ul>\r\n */\r\n positionElements: function(hostElem, targetElem, placement, appendToBody, includeMargins) {\r\n hostElem = this.getRawNode(hostElem);\r\n targetElem = this.getRawNode(targetElem);\r\n\r\n // need to read from prop to support tests.\r\n var targetWidth = angular.isDefined(targetElem.offsetWidth) ? targetElem.offsetWidth : targetElem.prop('offsetWidth');\r\n var targetHeight = angular.isDefined(targetElem.offsetHeight) ? targetElem.offsetHeight : targetElem.prop('offsetHeight');\r\n\r\n if (includeMargins) {\r\n var styles = window.getComputedStyle(targetElem);\r\n var verticalMargin = this.parseStyle(styles.marginTop) + this.parseStyle(styles.marginBottom);\r\n var horisontalMargin = this.parseStyle(styles.marginLeft) + this.parseStyle(styles.marginRight);\r\n\r\n targetHeight += verticalMargin;\r\n targetWidth += horisontalMargin;\r\n }\r\n\r\n placement = this.parsePlacement(placement);\r\n\r\n var hostElemPos = appendToBody ? this.offset(hostElem) : this.position(hostElem);\r\n var targetElemPos = {top: 0, left: 0, placement: ''};\r\n\r\n if (placement[2]) {\r\n var viewportOffset = this.viewportOffset(hostElem, appendToBody);\r\n\r\n var targetElemStyle = $window.getComputedStyle(targetElem);\r\n var adjustedSize = {\r\n width: targetWidth + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginLeft) + this.parseStyle(targetElemStyle.marginRight))),\r\n height: targetHeight + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginTop) + this.parseStyle(targetElemStyle.marginBottom)))\r\n };\r\n\r\n placement[0] = placement[0] === 'top' && adjustedSize.height > viewportOffset.top && adjustedSize.height <= viewportOffset.bottom ? 'bottom' :\r\n placement[0] === 'bottom' && adjustedSize.height > viewportOffset.bottom && adjustedSize.height <= viewportOffset.top ? 'top' :\r\n placement[0] === 'left' && adjustedSize.width > viewportOffset.left && adjustedSize.width <= viewportOffset.right ? 'right' :\r\n placement[0] === 'right' && adjustedSize.width > viewportOffset.right && adjustedSize.width <= viewportOffset.left ? 'left' :\r\n placement[0];\r\n\r\n placement[1] = placement[1] === 'top' && adjustedSize.height - hostElemPos.height > viewportOffset.bottom && adjustedSize.height - hostElemPos.height <= viewportOffset.top ? 'bottom' :\r\n placement[1] === 'bottom' && adjustedSize.height - hostElemPos.height > viewportOffset.top && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom ? 'top' :\r\n placement[1] === 'left' && adjustedSize.width - hostElemPos.width > viewportOffset.right && adjustedSize.width - hostElemPos.width <= viewportOffset.left ? 'right' :\r\n placement[1] === 'right' && adjustedSize.width - hostElemPos.width > viewportOffset.left && adjustedSize.width - hostElemPos.width <= viewportOffset.right ? 'left' :\r\n placement[1];\r\n\r\n if (placement[1] === 'center') {\r\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\r\n var xOverflow = hostElemPos.width / 2 - targetWidth / 2;\r\n if (viewportOffset.left + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.right) {\r\n placement[1] = 'left';\r\n } else if (viewportOffset.right + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.left) {\r\n placement[1] = 'right';\r\n }\r\n } else {\r\n var yOverflow = hostElemPos.height / 2 - adjustedSize.height / 2;\r\n if (viewportOffset.top + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom) {\r\n placement[1] = 'top';\r\n } else if (viewportOffset.bottom + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.top) {\r\n placement[1] = 'bottom';\r\n }\r\n }\r\n }\r\n }\r\n\r\n switch (placement[0]) {\r\n case 'top':\r\n targetElemPos.top = hostElemPos.top - targetHeight;\r\n break;\r\n case 'bottom':\r\n targetElemPos.top = hostElemPos.top + hostElemPos.height;\r\n break;\r\n case 'left':\r\n targetElemPos.left = hostElemPos.left - targetWidth;\r\n break;\r\n case 'right':\r\n targetElemPos.left = hostElemPos.left + hostElemPos.width;\r\n break;\r\n }\r\n\r\n switch (placement[1]) {\r\n case 'top':\r\n targetElemPos.top = hostElemPos.top;\r\n break;\r\n case 'bottom':\r\n targetElemPos.top = hostElemPos.top + hostElemPos.height - targetHeight;\r\n break;\r\n case 'left':\r\n targetElemPos.left = hostElemPos.left;\r\n break;\r\n case 'right':\r\n targetElemPos.left = hostElemPos.left + hostElemPos.width - targetWidth;\r\n break;\r\n case 'center':\r\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\r\n targetElemPos.left = hostElemPos.left + hostElemPos.width / 2 - targetWidth / 2;\r\n } else {\r\n targetElemPos.top = hostElemPos.top + hostElemPos.height / 2 - targetHeight / 2;\r\n }\r\n break;\r\n }\r\n\r\n targetElemPos.top = Math.round(targetElemPos.top);\r\n targetElemPos.left = Math.round(targetElemPos.left);\r\n targetElemPos.placement = placement[1] === 'center' ? placement[0] : placement[0] + '-' + placement[1];\r\n\r\n return targetElemPos;\r\n },\r\n\r\n /**\r\n * Provides a way to adjust the top positioning after first\r\n * render to correctly align element to top after content\r\n * rendering causes resized element height\r\n *\r\n * @param {array} placementClasses - The array of strings of classes\r\n * element should have.\r\n * @param {object} containerPosition - The object with container\r\n * position information\r\n * @param {number} initialHeight - The initial height for the elem.\r\n * @param {number} currentHeight - The current height for the elem.\r\n */\r\n adjustTop: function(placementClasses, containerPosition, initialHeight, currentHeight) {\r\n if (placementClasses.indexOf('top') !== -1 && initialHeight !== currentHeight) {\r\n return {\r\n top: containerPosition.top - currentHeight + 'px'\r\n };\r\n }\r\n },\r\n\r\n /**\r\n * Provides a way for positioning tooltip & dropdown\r\n * arrows when using placement options beyond the standard\r\n * left, right, top, or bottom.\r\n *\r\n * @param {element} elem - The tooltip/dropdown element.\r\n * @param {string} placement - The placement for the elem.\r\n */\r\n positionArrow: function(elem, placement) {\r\n elem = this.getRawNode(elem);\r\n var isTooltip = true;\r\n\r\n var innerElem = elem.querySelector('.tooltip-inner');\r\n if (!innerElem) {\r\n if (angular.element(elem).hasClass('popover')) {\r\n isTooltip = false;\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n var arrowElem = elem.querySelector('.arrow');\r\n if (!arrowElem) {\r\n return;\r\n }\r\n\r\n var arrowCss = {\r\n top: '',\r\n bottom: '',\r\n left: '',\r\n right: ''\r\n };\r\n\r\n placement = this.parsePlacement(placement);\r\n if (placement[1] === 'center') {\r\n var arrowElemOffset = this.offset(arrowElem, true);\r\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\r\n var aHW = arrowElemOffset.width / 2;\r\n var eHW = this.offset(elem).width / 2;\r\n var left = eHW - aHW;\r\n arrowCss.left = '' + left + 'px';\r\n } else {\r\n var aHH = arrowElemOffset.height / 2;\r\n var eHH = this.offset(elem).height / 2;\r\n var top = eHH - aHH;\r\n arrowCss.top = '' + top + 'px';\r\n }\r\n }\r\n\r\n var borderProp = 'border-' + placement[0] + '-width';\r\n var borderWidth = $window.getComputedStyle(arrowElem)[borderProp];\r\n\r\n var borderRadiusProp = 'border-';\r\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\r\n borderRadiusProp += placement[0] + '-' + placement[1];\r\n } else {\r\n borderRadiusProp += placement[1] + '-' + placement[0];\r\n }\r\n borderRadiusProp += '-radius';\r\n var borderRadius = $window.getComputedStyle(isTooltip ? innerElem : elem)[borderRadiusProp];\r\n\r\n if (isTooltip) {\r\n switch (placement[0]) {\r\n case 'top':\r\n arrowCss.bottom = '0';\r\n break;\r\n case 'bottom':\r\n arrowCss.top = '0';\r\n break;\r\n case 'left':\r\n arrowCss.right = '0';\r\n break;\r\n case 'right':\r\n arrowCss.left = '0';\r\n break;\r\n }\r\n }\r\n\r\n arrowCss[placement[1]] = borderRadius;\r\n\r\n angular.element(arrowElem).css(arrowCss);\r\n }\r\n };\r\n }]);\r\n\r\nangular.module('ui.bootstrap.datepickerPopup', ['ui.bootstrap.datepicker', 'ui.bootstrap.position'])\r\n\r\n.value('$datepickerPopupLiteralWarning', true)\r\n\r\n.constant('uibDatepickerPopupConfig', {\r\n altInputFormats: [],\r\n appendToBody: false,\r\n clearText: 'Clear',\r\n closeOnDateSelection: true,\r\n closeText: 'Done',\r\n currentText: 'Today',\r\n datepickerPopup: 'yyyy-MM-dd',\r\n datepickerPopupTemplateUrl: 'uib/template/datepickerPopup/popup.html',\r\n datepickerTemplateUrl: 'uib/template/datepicker/datepicker.html',\r\n html5Types: {\r\n date: 'yyyy-MM-dd',\r\n 'datetime-local': 'yyyy-MM-ddTHH:mm:ss.sss',\r\n 'month': 'yyyy-MM'\r\n },\r\n onOpenFocus: true,\r\n showButtonBar: true,\r\n placement: 'auto bottom-left'\r\n})\r\n\r\n.controller('UibDatepickerPopupController', ['$scope', '$element', '$attrs', '$compile', '$log', '$parse', '$window', '$document', '$rootScope', '$uibPosition', 'dateFilter', 'uibDateParser', 'uibDatepickerPopupConfig', '$timeout', 'uibDatepickerConfig', '$datepickerPopupLiteralWarning',\r\nfunction($scope, $element, $attrs, $compile, $log, $parse, $window, $document, $rootScope, $position, dateFilter, dateParser, datepickerPopupConfig, $timeout, datepickerConfig, $datepickerPopupLiteralWarning) {\r\n var cache = {},\r\n isHtml5DateInput = false;\r\n var dateFormat, closeOnDateSelection, appendToBody, onOpenFocus,\r\n datepickerPopupTemplateUrl, datepickerTemplateUrl, popupEl, datepickerEl, scrollParentEl,\r\n ngModel, ngModelOptions, $popup, altInputFormats, watchListeners = [];\r\n\r\n this.init = function(_ngModel_) {\r\n ngModel = _ngModel_;\r\n ngModelOptions = extractOptions(ngModel);\r\n closeOnDateSelection = angular.isDefined($attrs.closeOnDateSelection) ?\r\n $scope.$parent.$eval($attrs.closeOnDateSelection) :\r\n datepickerPopupConfig.closeOnDateSelection;\r\n appendToBody = angular.isDefined($attrs.datepickerAppendToBody) ?\r\n $scope.$parent.$eval($attrs.datepickerAppendToBody) :\r\n datepickerPopupConfig.appendToBody;\r\n onOpenFocus = angular.isDefined($attrs.onOpenFocus) ?\r\n $scope.$parent.$eval($attrs.onOpenFocus) : datepickerPopupConfig.onOpenFocus;\r\n datepickerPopupTemplateUrl = angular.isDefined($attrs.datepickerPopupTemplateUrl) ?\r\n $attrs.datepickerPopupTemplateUrl :\r\n datepickerPopupConfig.datepickerPopupTemplateUrl;\r\n datepickerTemplateUrl = angular.isDefined($attrs.datepickerTemplateUrl) ?\r\n $attrs.datepickerTemplateUrl : datepickerPopupConfig.datepickerTemplateUrl;\r\n altInputFormats = angular.isDefined($attrs.altInputFormats) ?\r\n $scope.$parent.$eval($attrs.altInputFormats) :\r\n datepickerPopupConfig.altInputFormats;\r\n\r\n $scope.showButtonBar = angular.isDefined($attrs.showButtonBar) ?\r\n $scope.$parent.$eval($attrs.showButtonBar) :\r\n datepickerPopupConfig.showButtonBar;\r\n\r\n if (datepickerPopupConfig.html5Types[$attrs.type]) {\r\n dateFormat = datepickerPopupConfig.html5Types[$attrs.type];\r\n isHtml5DateInput = true;\r\n } else {\r\n dateFormat = $attrs.uibDatepickerPopup || datepickerPopupConfig.datepickerPopup;\r\n $attrs.$observe('uibDatepickerPopup', function(value, oldValue) {\r\n var newDateFormat = value || datepickerPopupConfig.datepickerPopup;\r\n // Invalidate the $modelValue to ensure that formatters re-run\r\n // FIXME: Refactor when PR is merged: https://github.com/angular/angular.js/pull/10764\r\n if (newDateFormat !== dateFormat) {\r\n dateFormat = newDateFormat;\r\n ngModel.$modelValue = null;\r\n\r\n if (!dateFormat) {\r\n throw new Error('uibDatepickerPopup must have a date format specified.');\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (!dateFormat) {\r\n throw new Error('uibDatepickerPopup must have a date format specified.');\r\n }\r\n\r\n if (isHtml5DateInput && $attrs.uibDatepickerPopup) {\r\n throw new Error('HTML5 date input types do not support custom formats.');\r\n }\r\n\r\n // popup element used to display calendar\r\n popupEl = angular.element(\r\n \"<div uib-datepicker-popup-wrap data-ng-class=\\\"{'show': isOpen}\\\"><div uib-datepicker></div></div>\"\r\n );\r\n\r\n popupEl.attr({\r\n 'ng-model': 'date',\r\n 'ng-change': 'dateSelection(date)',\r\n 'template-url': datepickerPopupTemplateUrl\r\n });\r\n\r\n // datepicker element\r\n datepickerEl = angular.element(popupEl.children()[0]);\r\n datepickerEl.attr('template-url', datepickerTemplateUrl);\r\n\r\n if (!$scope.datepickerOptions) {\r\n $scope.datepickerOptions = {};\r\n }\r\n\r\n if (isHtml5DateInput) {\r\n if ($attrs.type === 'month') {\r\n $scope.datepickerOptions.datepickerMode = 'month';\r\n $scope.datepickerOptions.minMode = 'month';\r\n }\r\n }\r\n\r\n datepickerEl.attr('datepicker-options', 'datepickerOptions');\r\n\r\n if (!isHtml5DateInput) {\r\n // Internal API to maintain the correct ng-invalid-[key] class\r\n ngModel.$$parserName = 'date';\r\n ngModel.$validators.date = validator;\r\n ngModel.$parsers.unshift(parseDate);\r\n ngModel.$formatters.push(function(value) {\r\n if (ngModel.$isEmpty(value)) {\r\n $scope.date = value;\r\n return value;\r\n }\r\n\r\n if (angular.isNumber(value)) {\r\n value = new Date(value);\r\n }\r\n\r\n $scope.date = dateParser.fromTimezone(value, ngModelOptions.getOption('timezone'));\r\n\r\n return dateParser.filter($scope.date, dateFormat);\r\n });\r\n } else {\r\n ngModel.$formatters.push(function(value) {\r\n $scope.date = dateParser.fromTimezone(value, ngModelOptions.getOption('timezone'));\r\n return value;\r\n });\r\n }\r\n\r\n // Detect changes in the view from the text box\r\n ngModel.$viewChangeListeners.push(function() {\r\n $scope.date = parseDateString(ngModel.$viewValue);\r\n });\r\n\r\n $element.on('keydown', inputKeydownBind);\r\n\r\n $popup = $compile(popupEl)($scope);\r\n // Prevent jQuery cache memory leak (template is now redundant after linking)\r\n popupEl.remove();\r\n\r\n if (appendToBody) {\r\n $document.find('body').append($popup);\r\n } else {\r\n $element.after($popup);\r\n }\r\n\r\n $scope.$on('$destroy', function() {\r\n if ($scope.isOpen === true) {\r\n if (!$rootScope.$$phase) {\r\n $scope.$apply(function() {\r\n $scope.isOpen = false;\r\n });\r\n }\r\n }\r\n\r\n $popup.remove();\r\n $element.off('keydown', inputKeydownBind);\r\n $document.off('click', documentClickBind);\r\n if (scrollParentEl) {\r\n scrollParentEl.off('scroll', positionPopup);\r\n }\r\n angular.element($window).off('resize', positionPopup);\r\n\r\n //Clear all watch listeners on destroy\r\n while (watchListeners.length) {\r\n watchListeners.shift()();\r\n }\r\n });\r\n };\r\n\r\n $scope.getText = function(key) {\r\n return $scope[key + 'Text'] || datepickerPopupConfig[key + 'Text'];\r\n };\r\n\r\n $scope.isDisabled = function(date) {\r\n if (date === 'today') {\r\n date = dateParser.fromTimezone(new Date(), ngModelOptions.getOption('timezone'));\r\n }\r\n\r\n var dates = {};\r\n angular.forEach(['minDate', 'maxDate'], function(key) {\r\n if (!$scope.datepickerOptions[key]) {\r\n dates[key] = null;\r\n } else if (angular.isDate($scope.datepickerOptions[key])) {\r\n dates[key] = new Date($scope.datepickerOptions[key]);\r\n } else {\r\n if ($datepickerPopupLiteralWarning) {\r\n $log.warn('Literal date support has been deprecated, please switch to date object usage');\r\n }\r\n\r\n dates[key] = new Date(dateFilter($scope.datepickerOptions[key], 'medium'));\r\n }\r\n });\r\n\r\n return $scope.datepickerOptions &&\r\n dates.minDate && $scope.compare(date, dates.minDate) < 0 ||\r\n dates.maxDate && $scope.compare(date, dates.maxDate) > 0;\r\n };\r\n\r\n $scope.compare = function(date1, date2) {\r\n return new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\r\n };\r\n\r\n // Inner change\r\n $scope.dateSelection = function(dt) {\r\n $scope.date = dt;\r\n var date = $scope.date ? dateParser.filter($scope.date, dateFormat) : null; // Setting to NULL is necessary for form validators to function\r\n $element.val(date);\r\n ngModel.$setViewValue(date);\r\n\r\n if (closeOnDateSelection) {\r\n $scope.isOpen = false;\r\n $element[0].focus();\r\n }\r\n };\r\n\r\n $scope.keydown = function(evt) {\r\n if (evt.which === 27) {\r\n evt.stopPropagation();\r\n $scope.isOpen = false;\r\n $element[0].focus();\r\n }\r\n };\r\n\r\n $scope.select = function(date, evt) {\r\n evt.stopPropagation();\r\n\r\n if (date === 'today') {\r\n var today = new Date();\r\n if (angular.isDate($scope.date)) {\r\n date = new Date($scope.date);\r\n date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n } else {\r\n date = dateParser.fromTimezone(today, ngModelOptions.getOption('timezone'));\r\n date.setHours(0, 0, 0, 0);\r\n }\r\n }\r\n $scope.dateSelection(date);\r\n };\r\n\r\n $scope.close = function(evt) {\r\n evt.stopPropagation();\r\n\r\n $scope.isOpen = false;\r\n $element[0].focus();\r\n };\r\n\r\n $scope.disabled = angular.isDefined($attrs.disabled) || false;\r\n if ($attrs.ngDisabled) {\r\n watchListeners.push($scope.$parent.$watch($parse($attrs.ngDisabled), function(disabled) {\r\n $scope.disabled = disabled;\r\n }));\r\n }\r\n\r\n $scope.$watch('isOpen', function(value) {\r\n if (value) {\r\n if (!$scope.disabled) {\r\n $timeout(function() {\r\n positionPopup();\r\n\r\n if (onOpenFocus) {\r\n $scope.$broadcast('uib:datepicker.focus');\r\n }\r\n\r\n $document.on('click', documentClickBind);\r\n\r\n var placement = $attrs.popupPlacement ? $attrs.popupPlacement : datepickerPopupConfig.placement;\r\n if (appendToBody || $position.parsePlacement(placement)[2]) {\r\n scrollParentEl = scrollParentEl || angular.element($position.scrollParent($element));\r\n if (scrollParentEl) {\r\n scrollParentEl.on('scroll', positionPopup);\r\n }\r\n } else {\r\n scrollParentEl = null;\r\n }\r\n\r\n angular.element($window).on('resize', positionPopup);\r\n }, 0, false);\r\n } else {\r\n $scope.isOpen = false;\r\n }\r\n } else {\r\n $document.off('click', documentClickBind);\r\n if (scrollParentEl) {\r\n scrollParentEl.off('scroll', positionPopup);\r\n }\r\n angular.element($window).off('resize', positionPopup);\r\n }\r\n });\r\n\r\n function cameltoDash(string) {\r\n return string.replace(/([A-Z])/g, function($1) { return '-' + $1.toLowerCase(); });\r\n }\r\n\r\n function parseDateString(viewValue) {\r\n var date = dateParser.parse(viewValue, dateFormat, $scope.date);\r\n if (isNaN(date)) {\r\n for (var i = 0; i < altInputFormats.length; i++) {\r\n date = dateParser.parse(viewValue, altInputFormats[i], $scope.date);\r\n if (!isNaN(date)) {\r\n return date;\r\n }\r\n }\r\n }\r\n return date;\r\n }\r\n\r\n function parseDate(viewValue) {\r\n if (angular.isNumber(viewValue)) {\r\n // presumably timestamp to date object\r\n viewValue = new Date(viewValue);\r\n }\r\n\r\n if (!viewValue) {\r\n return null;\r\n }\r\n\r\n if (angular.isDate(viewValue) && !isNaN(viewValue)) {\r\n return viewValue;\r\n }\r\n\r\n if (angular.isString(viewValue)) {\r\n var date = parseDateString(viewValue);\r\n if (!isNaN(date)) {\r\n return dateParser.toTimezone(date, ngModelOptions.getOption('timezone'));\r\n }\r\n }\r\n\r\n return ngModelOptions.getOption('allowInvalid') ? viewValue : undefined;\r\n }\r\n\r\n function validator(modelValue, viewValue) {\r\n var value = modelValue || viewValue;\r\n\r\n if (!$attrs.ngRequired && !value) {\r\n return true;\r\n }\r\n\r\n if (angular.isNumber(value)) {\r\n value = new Date(value);\r\n }\r\n\r\n if (!value) {\r\n return true;\r\n }\r\n\r\n if (angular.isDate(value) && !isNaN(value)) {\r\n return true;\r\n }\r\n\r\n if (angular.isString(value)) {\r\n return !isNaN(parseDateString(value));\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function documentClickBind(event) {\r\n if (!$scope.isOpen && $scope.disabled) {\r\n return;\r\n }\r\n\r\n var popup = $popup[0];\r\n var dpContainsTarget = $element[0].contains(event.target);\r\n // The popup node may not be an element node\r\n // In some browsers (IE) only element nodes have the 'contains' function\r\n var popupContainsTarget = popup.contains !== undefined && popup.contains(event.target);\r\n if ($scope.isOpen && !(dpContainsTarget || popupContainsTarget)) {\r\n $scope.$apply(function() {\r\n $scope.isOpen = false;\r\n });\r\n }\r\n }\r\n\r\n function inputKeydownBind(evt) {\r\n if (evt.which === 27 && $scope.isOpen) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $scope.$apply(function() {\r\n $scope.isOpen = false;\r\n });\r\n $element[0].focus();\r\n } else if (evt.which === 40 && !$scope.isOpen) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $scope.$apply(function() {\r\n $scope.isOpen = true;\r\n });\r\n }\r\n }\r\n\r\n function positionPopup() {\r\n if ($scope.isOpen) {\r\n var dpElement = angular.element($popup[0].querySelector('.uib-datepicker-popup'));\r\n var placement = $attrs.popupPlacement ? $attrs.popupPlacement : datepickerPopupConfig.placement;\r\n var position = $position.positionElements($element, dpElement, placement, appendToBody);\r\n dpElement.css({top: position.top + 'px', left: position.left + 'px'});\r\n if (dpElement.hasClass('uib-position-measure')) {\r\n dpElement.removeClass('uib-position-measure');\r\n }\r\n }\r\n }\r\n\r\n function extractOptions(ngModelCtrl) {\r\n var ngModelOptions;\r\n\r\n if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing\r\n // guarantee a value\r\n ngModelOptions = angular.isObject(ngModelCtrl.$options) ?\r\n ngModelCtrl.$options :\r\n {\r\n timezone: null\r\n };\r\n\r\n // mimic 1.6+ api\r\n ngModelOptions.getOption = function (key) {\r\n return ngModelOptions[key];\r\n };\r\n } else { // in angular >=1.6 $options is always present\r\n ngModelOptions = ngModelCtrl.$options;\r\n }\r\n\r\n return ngModelOptions;\r\n }\r\n\r\n $scope.$on('uib:datepicker.mode', function() {\r\n $timeout(positionPopup, 0, false);\r\n });\r\n}])\r\n\r\n.directive('uibDatepickerPopup', function() {\r\n return {\r\n require: ['ngModel', 'uibDatepickerPopup'],\r\n controller: 'UibDatepickerPopupController',\r\n scope: {\r\n datepickerOptions: '=?',\r\n isOpen: '=?',\r\n currentText: '@',\r\n clearText: '@',\r\n closeText: '@'\r\n },\r\n link: function(scope, element, attrs, ctrls) {\r\n var ngModel = ctrls[0],\r\n ctrl = ctrls[1];\r\n\r\n ctrl.init(ngModel);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDatepickerPopupWrap', function() {\r\n return {\r\n restrict: 'A',\r\n transclude: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepickerPopup/popup.html';\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.debounce', [])\r\n/**\r\n * A helper, internal service that debounces a function\r\n */\r\n .factory('$$debounce', ['$timeout', function($timeout) {\r\n return function(callback, debounceTime) {\r\n var timeoutPromise;\r\n\r\n return function() {\r\n var self = this;\r\n var args = Array.prototype.slice.call(arguments);\r\n if (timeoutPromise) {\r\n $timeout.cancel(timeoutPromise);\r\n }\r\n\r\n timeoutPromise = $timeout(function() {\r\n callback.apply(self, args);\r\n }, debounceTime);\r\n };\r\n };\r\n }]);\r\n\r\nangular.module('ui.bootstrap.multiMap', [])\r\n/**\r\n * A helper, internal data structure that stores all references attached to key\r\n */\r\n .factory('$$multiMap', function() {\r\n return {\r\n createNew: function() {\r\n var map = {};\r\n\r\n return {\r\n entries: function() {\r\n return Object.keys(map).map(function(key) {\r\n return {\r\n key: key,\r\n value: map[key]\r\n };\r\n });\r\n },\r\n get: function(key) {\r\n return map[key];\r\n },\r\n hasKey: function(key) {\r\n return !!map[key];\r\n },\r\n keys: function() {\r\n return Object.keys(map);\r\n },\r\n put: function(key, value) {\r\n if (!map[key]) {\r\n map[key] = [];\r\n }\r\n\r\n map[key].push(value);\r\n },\r\n remove: function(key, value) {\r\n var values = map[key];\r\n\r\n if (!values) {\r\n return;\r\n }\r\n\r\n var idx = values.indexOf(value);\r\n\r\n if (idx !== -1) {\r\n values.splice(idx, 1);\r\n }\r\n\r\n if (!values.length) {\r\n delete map[key];\r\n }\r\n }\r\n };\r\n }\r\n };\r\n });\r\n\r\nangular.module('ui.bootstrap.dropdown', ['ui.bootstrap.multiMap', 'ui.bootstrap.position'])\r\n\r\n.constant('uibDropdownConfig', {\r\n appendToOpenClass: 'uib-dropdown-open',\r\n openClass: 'show'\r\n})\r\n\r\n.service('uibDropdownService', ['$document', '$rootScope', '$$multiMap', function($document, $rootScope, $$multiMap) {\r\n var openScope = null;\r\n var openedContainers = $$multiMap.createNew();\r\n\r\n this.isOnlyOpen = function(dropdownScope, appendTo) {\r\n var openedDropdowns = openedContainers.get(appendTo);\r\n if (openedDropdowns) {\r\n var openDropdown = openedDropdowns.reduce(function(toClose, dropdown) {\r\n if (dropdown.scope === dropdownScope) {\r\n return dropdown;\r\n }\r\n\r\n return toClose;\r\n }, {});\r\n if (openDropdown) {\r\n return openedDropdowns.length === 1;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n this.open = function(dropdownScope, element, appendTo) {\r\n if (!openScope) {\r\n $document.on('click', closeDropdown);\r\n }\r\n\r\n if (openScope && openScope !== dropdownScope) {\r\n openScope.isOpen = false;\r\n }\r\n\r\n openScope = dropdownScope;\r\n\r\n if (!appendTo) {\r\n return;\r\n }\r\n\r\n var openedDropdowns = openedContainers.get(appendTo);\r\n if (openedDropdowns) {\r\n var openedScopes = openedDropdowns.map(function(dropdown) {\r\n return dropdown.scope;\r\n });\r\n if (openedScopes.indexOf(dropdownScope) === -1) {\r\n openedContainers.put(appendTo, {\r\n scope: dropdownScope\r\n });\r\n }\r\n } else {\r\n openedContainers.put(appendTo, {\r\n scope: dropdownScope\r\n });\r\n }\r\n };\r\n\r\n this.close = function(dropdownScope, element, appendTo) {\r\n if (openScope === dropdownScope) {\r\n $document.off('click', closeDropdown);\r\n $document.off('keydown', this.keybindFilter);\r\n openScope = null;\r\n }\r\n\r\n if (!appendTo) {\r\n return;\r\n }\r\n\r\n var openedDropdowns = openedContainers.get(appendTo);\r\n if (openedDropdowns) {\r\n var dropdownToClose = openedDropdowns.reduce(function(toClose, dropdown) {\r\n if (dropdown.scope === dropdownScope) {\r\n return dropdown;\r\n }\r\n\r\n return toClose;\r\n }, {});\r\n if (dropdownToClose) {\r\n openedContainers.remove(appendTo, dropdownToClose);\r\n }\r\n }\r\n };\r\n\r\n var closeDropdown = function(evt) {\r\n // This method may still be called during the same mouse event that\r\n // unbound this event handler. So check openScope before proceeding.\r\n if (!openScope || !openScope.isOpen) { return; }\r\n\r\n if (evt && openScope.getAutoClose() === 'disabled') { return; }\r\n\r\n if (evt && evt.which === 3) { return; }\r\n\r\n var toggleElement = openScope.getToggleElement();\r\n if (evt && toggleElement && toggleElement[0].contains(evt.target)) {\r\n return;\r\n }\r\n\r\n var dropdownElement = openScope.getDropdownElement();\r\n if (evt && openScope.getAutoClose() === 'outsideClick' &&\r\n dropdownElement && dropdownElement[0].contains(evt.target)) {\r\n return;\r\n }\r\n\r\n openScope.isOpen = false;\r\n\r\n if (!$rootScope.$$phase) {\r\n openScope.$apply();\r\n }\r\n };\r\n\r\n this.keybindFilter = function(evt) {\r\n if (!openScope) {\r\n // see this.close as ESC could have been pressed which kills the scope so we can not proceed\r\n return;\r\n }\r\n\r\n var dropdownElement = openScope.getDropdownElement();\r\n var toggleElement = openScope.getToggleElement();\r\n var dropdownElementTargeted = dropdownElement && dropdownElement[0].contains(evt.target);\r\n var toggleElementTargeted = toggleElement && toggleElement[0].contains(evt.target);\r\n if (evt.which === 27) {\r\n evt.stopPropagation();\r\n openScope.focusToggleElement();\r\n closeDropdown();\r\n } else if (openScope.isKeynavEnabled() && [38, 40].indexOf(evt.which) !== -1 && openScope.isOpen && (dropdownElementTargeted || toggleElementTargeted)) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n openScope.focusDropdownEntry(evt.which);\r\n }\r\n };\r\n}])\r\n\r\n.controller('UibDropdownController', ['$scope', '$element', '$attrs', '$parse', 'uibDropdownConfig', 'uibDropdownService', '$animate', '$uibPosition', '$document', '$compile', '$templateRequest', function($scope, $element, $attrs, $parse, dropdownConfig, uibDropdownService, $animate, $position, $document, $compile, $templateRequest) {\r\n var self = this,\r\n scope = $scope.$new(), // create a child scope so we are not polluting original one\r\n templateScope,\r\n appendToOpenClass = dropdownConfig.appendToOpenClass,\r\n openClass = dropdownConfig.openClass,\r\n getIsOpen,\r\n setIsOpen = angular.noop,\r\n toggleInvoker = $attrs.onToggle ? $parse($attrs.onToggle) : angular.noop,\r\n keynavEnabled = false,\r\n selectedOption = null,\r\n body = $document.find('body');\r\n\r\n $element.addClass('dropdown');\r\n\r\n this.init = function() {\r\n if ($attrs.isOpen) {\r\n getIsOpen = $parse($attrs.isOpen);\r\n setIsOpen = getIsOpen.assign;\r\n\r\n $scope.$watch(getIsOpen, function(value) {\r\n scope.isOpen = !!value;\r\n });\r\n }\r\n\r\n keynavEnabled = angular.isDefined($attrs.keyboardNav);\r\n };\r\n\r\n this.toggle = function(open) {\r\n scope.isOpen = arguments.length ? !!open : !scope.isOpen;\r\n if (angular.isFunction(setIsOpen)) {\r\n setIsOpen(scope, scope.isOpen);\r\n }\r\n\r\n return scope.isOpen;\r\n };\r\n\r\n // Allow other directives to watch status\r\n this.isOpen = function() {\r\n return scope.isOpen;\r\n };\r\n\r\n scope.getToggleElement = function() {\r\n return self.toggleElement;\r\n };\r\n\r\n scope.getAutoClose = function() {\r\n return $attrs.autoClose || 'always'; //or 'outsideClick' or 'disabled'\r\n };\r\n\r\n scope.getElement = function() {\r\n return $element;\r\n };\r\n\r\n scope.isKeynavEnabled = function() {\r\n return keynavEnabled;\r\n };\r\n\r\n scope.focusDropdownEntry = function(keyCode) {\r\n var elems = self.dropdownMenu ? //If append to body is used.\r\n angular.element(self.dropdownMenu).find('.dropdown-item') :\r\n $element.find('div').eq(0).find('a.');\r\n\r\n switch (keyCode) {\r\n case 40: {\r\n if (!angular.isNumber(self.selectedOption)) {\r\n self.selectedOption = 0;\r\n } else {\r\n self.selectedOption = self.selectedOption === elems.length - 1 ?\r\n self.selectedOption :\r\n self.selectedOption + 1;\r\n }\r\n break;\r\n }\r\n case 38: {\r\n if (!angular.isNumber(self.selectedOption)) {\r\n self.selectedOption = elems.length - 1;\r\n } else {\r\n self.selectedOption = self.selectedOption === 0 ?\r\n 0 : self.selectedOption - 1;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n elems[self.selectedOption].focus();\r\n };\r\n\r\n scope.getDropdownElement = function() {\r\n return self.dropdownMenu;\r\n };\r\n\r\n scope.focusToggleElement = function() {\r\n if (self.toggleElement) {\r\n self.toggleElement[0].focus();\r\n }\r\n };\r\n\r\n function removeDropdownMenu() {\r\n $element.append(self.dropdownMenu);\r\n }\r\n\r\n scope.$watch('isOpen', function(isOpen, wasOpen) {\r\n var appendTo = null,\r\n appendToBody = false;\r\n\r\n if (angular.isDefined($attrs.dropdownAppendTo)) {\r\n var appendToEl = $parse($attrs.dropdownAppendTo)(scope);\r\n if (appendToEl) {\r\n appendTo = angular.element(appendToEl);\r\n }\r\n }\r\n\r\n if (angular.isDefined($attrs.dropdownAppendToBody)) {\r\n var appendToBodyValue = $parse($attrs.dropdownAppendToBody)(scope);\r\n if (appendToBodyValue !== false) {\r\n appendToBody = true;\r\n }\r\n }\r\n\r\n if (appendToBody && !appendTo) {\r\n appendTo = body;\r\n }\r\n\r\n if (appendTo && self.dropdownMenu) {\r\n if (isOpen) {\r\n appendTo.append(self.dropdownMenu);\r\n $element.on('$destroy', removeDropdownMenu);\r\n } else {\r\n $element.off('$destroy', removeDropdownMenu);\r\n removeDropdownMenu();\r\n }\r\n }\r\n\r\n if (appendTo && self.dropdownMenu) {\r\n var pos = $position.positionElements($element, self.dropdownMenu, 'bottom-left', true),\r\n css,\r\n rightalign,\r\n scrollbarPadding,\r\n scrollbarWidth = 0;\r\n\r\n css = {\r\n top: pos.top + 'px',\r\n display: isOpen ? 'block' : 'none'\r\n };\r\n\r\n rightalign = self.dropdownMenu.hasClass('dropdown-menu-right');\r\n if (!rightalign) {\r\n css.left = pos.left + 'px';\r\n css.right = 'auto';\r\n } else {\r\n css.left = 'auto';\r\n scrollbarPadding = $position.scrollbarPadding(appendTo);\r\n\r\n if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\r\n scrollbarWidth = scrollbarPadding.scrollbarWidth;\r\n }\r\n\r\n css.right = window.innerWidth - scrollbarWidth -\r\n (pos.left + $element.prop('offsetWidth')) + 'px';\r\n }\r\n\r\n // Need to adjust our positioning to be relative to the appendTo container\r\n // if it's not the body element\r\n if (!appendToBody) {\r\n var appendOffset = $position.offset(appendTo);\r\n\r\n css.top = pos.top - appendOffset.top + 'px';\r\n\r\n if (!rightalign) {\r\n css.left = pos.left - appendOffset.left + 'px';\r\n } else {\r\n css.right = window.innerWidth -\r\n (pos.left - appendOffset.left + $element.prop('offsetWidth')) + 'px';\r\n }\r\n }\r\n\r\n self.dropdownMenu.css(css);\r\n }\r\n\r\n // find openContainer by uib-dropdown-menu directive\r\n var openContainer = appendTo ? appendTo : angular.element($element[0].querySelector(\"[uib-dropdown-menu]\"));\r\n var dropdownOpenClass = appendTo ? appendToOpenClass : openClass;\r\n var hasOpenClass = openContainer.hasClass(dropdownOpenClass);\r\n var isOnlyOpen = uibDropdownService.isOnlyOpen($scope, appendTo);\r\n\r\n if (hasOpenClass === !isOpen) {\r\n var toggleClass;\r\n if (appendTo) {\r\n toggleClass = !isOnlyOpen ? 'addClass' : 'removeClass';\r\n } else {\r\n toggleClass = isOpen ? 'addClass' : 'removeClass';\r\n }\r\n\r\n // original Bootstrap 4 dropdown sets openClass on both dropdownMenu and element\r\n $animate[toggleClass]($element, dropdownOpenClass);\r\n\r\n $animate[toggleClass](openContainer, dropdownOpenClass).then(function() {\r\n if (angular.isDefined(isOpen) && isOpen !== wasOpen) {\r\n toggleInvoker($scope, { open: !!isOpen });\r\n }\r\n });\r\n }\r\n\r\n if (isOpen) {\r\n if (self.dropdownMenuTemplateUrl) {\r\n $templateRequest(self.dropdownMenuTemplateUrl).then(function(tplContent) {\r\n templateScope = scope.$new();\r\n $compile(tplContent.trim())(templateScope, function(dropdownElement) {\r\n var newEl = dropdownElement;\r\n self.dropdownMenu.replaceWith(newEl);\r\n self.dropdownMenu = newEl;\r\n $animate.addClass(self.dropdownMenu, dropdownOpenClass);\r\n $document.on('keydown', uibDropdownService.keybindFilter);\r\n });\r\n });\r\n } else {\r\n $document.on('keydown', uibDropdownService.keybindFilter);\r\n }\r\n\r\n scope.focusToggleElement();\r\n uibDropdownService.open(scope, $element, appendTo);\r\n } else {\r\n uibDropdownService.close(scope, $element, appendTo);\r\n if (self.dropdownMenuTemplateUrl) {\r\n if (templateScope) {\r\n templateScope.$destroy();\r\n }\r\n var newEl = angular.element('<div class=\"dropdown-menu\"></div>');\r\n self.dropdownMenu.replaceWith(newEl);\r\n self.dropdownMenu = newEl;\r\n }\r\n\r\n self.selectedOption = null;\r\n }\r\n\r\n if (angular.isFunction(setIsOpen)) {\r\n setIsOpen($scope, isOpen);\r\n }\r\n });\r\n}])\r\n\r\n.directive('uibDropdown', function() {\r\n return {\r\n controller: 'UibDropdownController',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n dropdownCtrl.init();\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDropdownMenu', function() {\r\n return {\r\n restrict: 'A',\r\n require: '?^uibDropdown',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n if (!dropdownCtrl || angular.isDefined(attrs.dropdownNested)) {\r\n return;\r\n }\r\n\r\n element.addClass('dropdown-menu');\r\n\r\n var tplUrl = attrs.templateUrl;\r\n if (tplUrl) {\r\n dropdownCtrl.dropdownMenuTemplateUrl = tplUrl;\r\n }\r\n\r\n if (!dropdownCtrl.dropdownMenu) {\r\n dropdownCtrl.dropdownMenu = element;\r\n }\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDropdownToggle', function() {\r\n return {\r\n require: '?^uibDropdown',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n if (!dropdownCtrl) {\r\n return;\r\n }\r\n\r\n element.addClass('dropdown-toggle');\r\n\r\n dropdownCtrl.toggleElement = element;\r\n\r\n var toggleDropdown = function(event) {\r\n event.preventDefault();\r\n\r\n if (!element.hasClass('disabled') && !attrs.disabled) {\r\n scope.$apply(function() {\r\n dropdownCtrl.toggle();\r\n });\r\n }\r\n };\r\n\r\n element.on('click', toggleDropdown);\r\n\r\n var openDropdown = function(event) {\r\n if (event.which === 40 && !dropdownCtrl.isOpen()) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (!element.hasClass('disabled') && !attrs.disabled) {\r\n scope.$apply(function() {\r\n dropdownCtrl.toggle();\r\n });\r\n }\r\n }\r\n };\r\n\r\n element.on('keydown', openDropdown);\r\n\r\n // WAI-ARIA\r\n element.attr({ 'aria-haspopup': true, 'aria-expanded': false });\r\n scope.$watch(dropdownCtrl.isOpen, function(isOpen) {\r\n element.attr('aria-expanded', !!isOpen);\r\n });\r\n\r\n scope.$on('$destroy', function() {\r\n element.off('click', toggleDropdown);\r\n element.off('keydown', openDropdown);\r\n });\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.stackedMap', [])\r\n/**\r\n * A helper, internal data structure that acts as a map but also allows getting / removing\r\n * elements in the LIFO order\r\n */\r\n .factory('$$stackedMap', function() {\r\n return {\r\n createNew: function() {\r\n var stack = [];\r\n\r\n return {\r\n add: function(key, value) {\r\n stack.push({\r\n key: key,\r\n value: value\r\n });\r\n },\r\n get: function(key) {\r\n for (var i = 0; i < stack.length; i++) {\r\n if (key === stack[i].key) {\r\n return stack[i];\r\n }\r\n }\r\n },\r\n keys: function() {\r\n var keys = [];\r\n for (var i = 0; i < stack.length; i++) {\r\n keys.push(stack[i].key);\r\n }\r\n return keys;\r\n },\r\n top: function() {\r\n return stack[stack.length - 1];\r\n },\r\n remove: function(key) {\r\n var idx = -1;\r\n for (var i = 0; i < stack.length; i++) {\r\n if (key === stack[i].key) {\r\n idx = i;\r\n break;\r\n }\r\n }\r\n return stack.splice(idx, 1)[0];\r\n },\r\n removeTop: function() {\r\n return stack.pop();\r\n },\r\n length: function() {\r\n return stack.length;\r\n }\r\n };\r\n }\r\n };\r\n });\r\nangular.module('ui.bootstrap.modal', ['ui.bootstrap.multiMap', 'ui.bootstrap.stackedMap', 'ui.bootstrap.position'])\r\n/**\r\n * Pluggable resolve mechanism for the modal resolve resolution\r\n * Supports UI Router's $resolve service\r\n */\r\n .provider('$uibResolve', function() {\r\n var resolve = this;\r\n this.resolver = null;\r\n\r\n this.setResolver = function(resolver) {\r\n this.resolver = resolver;\r\n };\r\n\r\n this.$get = ['$injector', '$q', function($injector, $q) {\r\n var resolver = resolve.resolver ? $injector.get(resolve.resolver) : null;\r\n return {\r\n resolve: function(invocables, locals, parent, self) {\r\n if (resolver) {\r\n return resolver.resolve(invocables, locals, parent, self);\r\n }\r\n\r\n var promises = [];\r\n\r\n angular.forEach(invocables, function(value) {\r\n if (angular.isFunction(value) || angular.isArray(value)) {\r\n promises.push($q.resolve($injector.invoke(value)));\r\n } else if (angular.isString(value)) {\r\n promises.push($q.resolve($injector.get(value)));\r\n } else {\r\n promises.push($q.resolve(value));\r\n }\r\n });\r\n\r\n return $q.all(promises).then(function(resolves) {\r\n var resolveObj = {};\r\n var resolveIter = 0;\r\n angular.forEach(invocables, function(value, key) {\r\n resolveObj[key] = resolves[resolveIter++];\r\n });\r\n\r\n return resolveObj;\r\n });\r\n }\r\n };\r\n }];\r\n })\r\n\r\n/**\r\n * A helper directive for the $modal service. It creates a backdrop element.\r\n */\r\n .directive('uibModalBackdrop', ['$uibModalStack', '$q', '$animate',\r\n function($modalStack, $q, $animate) {\r\n return {\r\n restrict: 'A',\r\n compile: function(tElement, tAttrs) {\r\n tElement.addClass(tAttrs.backdropClass);\r\n return linkFn;\r\n }\r\n };\r\n\r\n function linkFn(scope, element, attrs) {\r\n\r\n // Deferred object that will be resolved when this modal is rendered.\r\n var modalRenderDeferObj = $q.defer();\r\n // Resolve render promise post-digest\r\n scope.$$postDigest(function() {\r\n modalRenderDeferObj.resolve();\r\n });\r\n\r\n modalRenderDeferObj.promise.then(function() {\r\n if (attrs.modalInClass) {\r\n $animate.addClass(element, attrs.modalInClass);\r\n }\r\n });\r\n\r\n if (attrs.modalInClass) {\r\n scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {\r\n var done = setIsAsync();\r\n if (scope.modalOptions.animation) {\r\n $animate.removeClass(element, attrs.modalInClass).then(done);\r\n } else {\r\n done();\r\n }\r\n });\r\n }\r\n\r\n\r\n }\r\n }])\r\n\r\n .directive('uibModalWindow', ['$uibModalStack', '$q', '$animateCss', '$document',\r\n function($modalStack, $q, $animateCss, $document) {\r\n return {\r\n scope: {\r\n index: '@'\r\n },\r\n restrict: 'A',\r\n transclude: true,\r\n templateUrl: function(tElement, tAttrs) {\r\n return tAttrs.templateUrl || 'uib/template/modal/window.html';\r\n },\r\n link: function(scope, element, attrs) {\r\n element.addClass(attrs.windowTopClass || '');\r\n scope.size = attrs.size;\r\n\r\n scope.close = function(evt) {\r\n var modal = $modalStack.getTop();\r\n if (modal && modal.value.backdrop &&\r\n modal.value.backdrop !== 'static' &&\r\n evt.target === evt.currentTarget) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $modalStack.dismiss(modal.key, 'backdrop click');\r\n }\r\n };\r\n\r\n // moved from template to fix issue #2280\r\n element.on('click', scope.close);\r\n\r\n // This property is only added to the scope for the purpose of detecting when this directive is rendered.\r\n // We can detect that by using this property in the template associated with this directive and then use\r\n // {@link Attribute#$observe} on it. For more details please see {@link TableColumnResize}.\r\n scope.$isRendered = true;\r\n\r\n // Deferred object that will be resolved when this modal is rendered.\r\n var modalRenderDeferObj = $q.defer();\r\n // Resolve render promise post-digest\r\n scope.$$postDigest(function() {\r\n modalRenderDeferObj.resolve();\r\n });\r\n\r\n modalRenderDeferObj.promise.then(function() {\r\n var animationPromise = null;\r\n\r\n if (attrs.modalInClass) {\r\n animationPromise = $animateCss(element, {\r\n addClass: attrs.modalInClass\r\n }).start();\r\n\r\n scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {\r\n var done = setIsAsync();\r\n $animateCss(element, {\r\n removeClass: attrs.modalInClass\r\n }).start().then(done);\r\n });\r\n }\r\n\r\n\r\n $q.when(animationPromise).then(function() {\r\n // Notify {@link $modalStack} that modal is rendered.\r\n var modal = $modalStack.getTop();\r\n if (modal) {\r\n $modalStack.modalRendered(modal.key);\r\n }\r\n\r\n /**\r\n * If something within the freshly-opened modal already has focus (perhaps via a\r\n * directive that causes focus) then there's no need to try to focus anything.\r\n */\r\n if (!($document[0].activeElement && element[0].contains($document[0].activeElement))) {\r\n var inputWithAutofocus = element[0].querySelector('[autofocus]');\r\n /**\r\n * Auto-focusing of a freshly-opened modal element causes any child elements\r\n * with the autofocus attribute to lose focus. This is an issue on touch\r\n * based devices which will show and then hide the onscreen keyboard.\r\n * Attempts to refocus the autofocus element via JavaScript will not reopen\r\n * the onscreen keyboard. Fixed by updated the focusing logic to only autofocus\r\n * the modal element if the modal does not contain an autofocus element.\r\n */\r\n if (inputWithAutofocus) {\r\n inputWithAutofocus.focus();\r\n } else {\r\n element[0].focus();\r\n }\r\n }\r\n });\r\n });\r\n }\r\n };\r\n }])\r\n\r\n .directive('uibModalAnimationClass', function() {\r\n return {\r\n compile: function(tElement, tAttrs) {\r\n if (tAttrs.modalAnimation) {\r\n tElement.addClass(tAttrs.uibModalAnimationClass);\r\n }\r\n }\r\n };\r\n })\r\n\r\n .directive('uibModalTransclude', ['$animate', function($animate) {\r\n return {\r\n link: function(scope, element, attrs, controller, transclude) {\r\n transclude(scope.$parent, function(clone) {\r\n element.empty();\r\n $animate.enter(clone, element);\r\n });\r\n }\r\n };\r\n }])\r\n\r\n .factory('$uibModalStack', ['$animate', '$animateCss', '$document',\r\n '$compile', '$rootScope', '$q', '$$multiMap', '$$stackedMap', '$uibPosition',\r\n function($animate, $animateCss, $document, $compile, $rootScope, $q, $$multiMap, $$stackedMap, $uibPosition) {\r\n var OPENED_MODAL_CLASS = 'modal-open';\r\n\r\n var backdropDomEl, backdropScope;\r\n var openedWindows = $$stackedMap.createNew();\r\n var openedClasses = $$multiMap.createNew();\r\n var $modalStack = {\r\n NOW_CLOSING_EVENT: 'modal.stack.now-closing'\r\n };\r\n var topModalIndex = 0;\r\n var previousTopOpenedModal = null;\r\n var ARIA_HIDDEN_ATTRIBUTE_NAME = 'data-bootstrap-modal-aria-hidden-count';\r\n\r\n //Modal focus behavior\r\n var tabbableSelector = 'a[href], area[href], input:not([disabled]):not([tabindex=\\'-1\\']), ' +\r\n 'button:not([disabled]):not([tabindex=\\'-1\\']),select:not([disabled]):not([tabindex=\\'-1\\']), textarea:not([disabled]):not([tabindex=\\'-1\\']), ' +\r\n 'iframe, object, embed, *[tabindex]:not([tabindex=\\'-1\\']), *[contenteditable=true]';\r\n var scrollbarPadding;\r\n var SNAKE_CASE_REGEXP = /[A-Z]/g;\r\n\r\n // TODO: extract into common dependency with tooltip\r\n function snake_case(name) {\r\n var separator = '-';\r\n return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {\r\n return (pos ? separator : '') + letter.toLowerCase();\r\n });\r\n }\r\n\r\n function isVisible(element) {\r\n return !!(element.offsetWidth ||\r\n element.offsetHeight ||\r\n element.getClientRects().length);\r\n }\r\n\r\n function backdropIndex() {\r\n var topBackdropIndex = -1;\r\n var opened = openedWindows.keys();\r\n for (var i = 0; i < opened.length; i++) {\r\n if (openedWindows.get(opened[i]).value.backdrop) {\r\n topBackdropIndex = i;\r\n }\r\n }\r\n\r\n // If any backdrop exist, ensure that it's index is always\r\n // right below the top modal\r\n if (topBackdropIndex > -1 && topBackdropIndex < topModalIndex) {\r\n topBackdropIndex = topModalIndex;\r\n }\r\n return topBackdropIndex;\r\n }\r\n\r\n $rootScope.$watch(backdropIndex, function(newBackdropIndex) {\r\n if (backdropScope) {\r\n backdropScope.index = newBackdropIndex;\r\n }\r\n });\r\n\r\n function removeModalWindow(modalInstance, elementToReceiveFocus) {\r\n var modalWindow = openedWindows.get(modalInstance).value;\r\n var appendToElement = modalWindow.appendTo;\r\n\r\n //clean up the stack\r\n openedWindows.remove(modalInstance);\r\n previousTopOpenedModal = openedWindows.top();\r\n if (previousTopOpenedModal) {\r\n topModalIndex = parseInt(previousTopOpenedModal.value.modalDomEl.attr('index'), 10);\r\n }\r\n\r\n removeAfterAnimate(modalWindow.modalDomEl, modalWindow.modalScope, function() {\r\n var modalBodyClass = modalWindow.openedClass || OPENED_MODAL_CLASS;\r\n openedClasses.remove(modalBodyClass, modalInstance);\r\n var areAnyOpen = openedClasses.hasKey(modalBodyClass);\r\n appendToElement.toggleClass(modalBodyClass, areAnyOpen);\r\n if (!areAnyOpen && scrollbarPadding && scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\r\n if (scrollbarPadding.originalRight) {\r\n appendToElement.css({paddingRight: scrollbarPadding.originalRight + 'px'});\r\n } else {\r\n appendToElement.css({paddingRight: ''});\r\n }\r\n scrollbarPadding = null;\r\n }\r\n toggleTopWindowClass(true);\r\n }, modalWindow.closedDeferred);\r\n checkRemoveBackdrop();\r\n\r\n //move focus to specified element if available, or else to body\r\n if (elementToReceiveFocus && elementToReceiveFocus.focus) {\r\n elementToReceiveFocus.focus();\r\n } else if (appendToElement.focus) {\r\n appendToElement.focus();\r\n }\r\n }\r\n\r\n // Add or remove \"windowTopClass\" from the top window in the stack\r\n function toggleTopWindowClass(toggleSwitch) {\r\n var modalWindow;\r\n\r\n if (openedWindows.length() > 0) {\r\n modalWindow = openedWindows.top().value;\r\n modalWindow.modalDomEl.toggleClass(modalWindow.windowTopClass || '', toggleSwitch);\r\n }\r\n }\r\n\r\n function checkRemoveBackdrop() {\r\n //remove backdrop if no longer needed\r\n if (backdropDomEl && backdropIndex() === -1) {\r\n var backdropScopeRef = backdropScope;\r\n removeAfterAnimate(backdropDomEl, backdropScope, function() {\r\n backdropScopeRef = null;\r\n });\r\n backdropDomEl = undefined;\r\n backdropScope = undefined;\r\n }\r\n }\r\n\r\n function removeAfterAnimate(domEl, scope, done, closedDeferred) {\r\n var asyncDeferred;\r\n var asyncPromise = null;\r\n var setIsAsync = function() {\r\n if (!asyncDeferred) {\r\n asyncDeferred = $q.defer();\r\n asyncPromise = asyncDeferred.promise;\r\n }\r\n\r\n return function asyncDone() {\r\n asyncDeferred.resolve();\r\n };\r\n };\r\n scope.$broadcast($modalStack.NOW_CLOSING_EVENT, setIsAsync);\r\n\r\n // Note that it's intentional that asyncPromise might be null.\r\n // That's when setIsAsync has not been called during the\r\n // NOW_CLOSING_EVENT broadcast.\r\n return $q.when(asyncPromise).then(afterAnimating);\r\n\r\n function afterAnimating() {\r\n if (afterAnimating.done) {\r\n return;\r\n }\r\n afterAnimating.done = true;\r\n\r\n $animate.leave(domEl).then(function() {\r\n if (done) {\r\n done();\r\n }\r\n\r\n domEl.remove();\r\n if (closedDeferred) {\r\n closedDeferred.resolve();\r\n }\r\n });\r\n\r\n scope.$destroy();\r\n }\r\n }\r\n\r\n $document.on('keydown', keydownListener);\r\n\r\n $rootScope.$on('$destroy', function() {\r\n $document.off('keydown', keydownListener);\r\n });\r\n\r\n function keydownListener(evt) {\r\n if (evt.isDefaultPrevented()) {\r\n return evt;\r\n }\r\n\r\n var modal = openedWindows.top();\r\n if (modal) {\r\n switch (evt.which) {\r\n case 27: {\r\n if (modal.value.keyboard) {\r\n evt.preventDefault();\r\n $rootScope.$apply(function() {\r\n $modalStack.dismiss(modal.key, 'escape key press');\r\n });\r\n }\r\n break;\r\n }\r\n case 9: {\r\n var list = $modalStack.loadFocusElementList(modal);\r\n var focusChanged = false;\r\n if (evt.shiftKey) {\r\n if ($modalStack.isFocusInFirstItem(evt, list) || $modalStack.isModalFocused(evt, modal)) {\r\n focusChanged = $modalStack.focusLastFocusableElement(list);\r\n }\r\n } else {\r\n if ($modalStack.isFocusInLastItem(evt, list)) {\r\n focusChanged = $modalStack.focusFirstFocusableElement(list);\r\n }\r\n }\r\n\r\n if (focusChanged) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n $modalStack.open = function(modalInstance, modal) {\r\n var modalOpener = $document[0].activeElement,\r\n modalBodyClass = modal.openedClass || OPENED_MODAL_CLASS;\r\n\r\n toggleTopWindowClass(false);\r\n\r\n // Store the current top first, to determine what index we ought to use\r\n // for the current top modal\r\n previousTopOpenedModal = openedWindows.top();\r\n\r\n openedWindows.add(modalInstance, {\r\n deferred: modal.deferred,\r\n renderDeferred: modal.renderDeferred,\r\n closedDeferred: modal.closedDeferred,\r\n modalScope: modal.scope,\r\n backdrop: modal.backdrop,\r\n keyboard: modal.keyboard,\r\n openedClass: modal.openedClass,\r\n windowTopClass: modal.windowTopClass,\r\n animation: modal.animation,\r\n appendTo: modal.appendTo\r\n });\r\n\r\n openedClasses.put(modalBodyClass, modalInstance);\r\n\r\n var appendToElement = modal.appendTo,\r\n currBackdropIndex = backdropIndex();\r\n\r\n if (currBackdropIndex >= 0 && !backdropDomEl) {\r\n backdropScope = $rootScope.$new(true);\r\n backdropScope.modalOptions = modal;\r\n backdropScope.index = currBackdropIndex;\r\n backdropDomEl = angular.element('<div uib-modal-backdrop=\"modal-backdrop\"></div>');\r\n backdropDomEl.attr({\r\n 'class': 'modal-backdrop',\r\n 'ng-style': '{\\'z-index\\': 1040 + (index && 1 || 0) + index*10}',\r\n 'uib-modal-animation-class': 'fade',\r\n 'modal-in-class': 'show'\r\n });\r\n if (modal.backdropClass) {\r\n backdropDomEl.addClass(modal.backdropClass);\r\n }\r\n\r\n if (modal.animation) {\r\n backdropDomEl.attr('modal-animation', 'true');\r\n }\r\n\r\n $animate.enter($compile(backdropDomEl)(backdropScope), appendToElement);\r\n scrollbarPadding = $uibPosition.scrollbarPadding(appendToElement);\r\n if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\r\n appendToElement.css({paddingRight: scrollbarPadding.right + 'px'});\r\n }\r\n }\r\n\r\n var content;\r\n if (modal.component) {\r\n content = document.createElement(snake_case(modal.component.name));\r\n content = angular.element(content);\r\n content.attr({\r\n resolve: '$resolve',\r\n 'modal-instance': '$uibModalInstance',\r\n close: '$close($value)',\r\n dismiss: '$dismiss($value)'\r\n });\r\n } else {\r\n content = modal.content;\r\n }\r\n\r\n // Set the top modal index based on the index of the previous top modal\r\n topModalIndex = previousTopOpenedModal ? parseInt(previousTopOpenedModal.value.modalDomEl.attr('index'), 10) + 1 : 0;\r\n var angularDomEl = angular.element('<div uib-modal-window=\"modal-window\"></div>');\r\n angularDomEl.attr({\r\n 'class': 'modal',\r\n 'template-url': modal.windowTemplateUrl,\r\n 'window-top-class': modal.windowTopClass,\r\n 'role': 'dialog',\r\n 'aria-labelledby': modal.ariaLabelledBy,\r\n 'aria-describedby': modal.ariaDescribedBy,\r\n 'size': modal.size,\r\n 'index': topModalIndex,\r\n 'animate': 'animate',\r\n 'ng-style': '{\\'z-index\\': 1050 + $$topModalIndex*10, display: \\'block\\'}',\r\n 'tabindex': -1,\r\n 'uib-modal-animation-class': 'fade',\r\n 'modal-in-class': 'show'\r\n }).append(content);\r\n if (modal.windowClass) {\r\n angularDomEl.addClass(modal.windowClass);\r\n }\r\n\r\n if (modal.animation) {\r\n angularDomEl.attr('modal-animation', 'true');\r\n }\r\n\r\n appendToElement.addClass(modalBodyClass);\r\n if (modal.scope) {\r\n // we need to explicitly add the modal index to the modal scope\r\n // because it is needed by ngStyle to compute the zIndex property.\r\n modal.scope.$$topModalIndex = topModalIndex;\r\n }\r\n $animate.enter($compile(angularDomEl)(modal.scope), appendToElement);\r\n\r\n openedWindows.top().value.modalDomEl = angularDomEl;\r\n openedWindows.top().value.modalOpener = modalOpener;\r\n\r\n applyAriaHidden(angularDomEl);\r\n\r\n function applyAriaHidden(el) {\r\n if (!el || el[0].tagName === 'BODY') {\r\n return;\r\n }\r\n\r\n getSiblings(el).forEach(function(sibling) {\r\n var elemIsAlreadyHidden = sibling.getAttribute('aria-hidden') === 'true',\r\n ariaHiddenCount = parseInt(sibling.getAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME), 10);\r\n\r\n if (!ariaHiddenCount) {\r\n ariaHiddenCount = elemIsAlreadyHidden ? 1 : 0;\r\n }\r\n\r\n sibling.setAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME, ariaHiddenCount + 1);\r\n sibling.setAttribute('aria-hidden', 'true');\r\n });\r\n\r\n return applyAriaHidden(el.parent());\r\n\r\n function getSiblings(el) {\r\n var children = el.parent() ? el.parent().children() : [];\r\n\r\n return Array.prototype.filter.call(children, function(child) {\r\n return child !== el[0];\r\n });\r\n }\r\n }\r\n };\r\n\r\n function broadcastClosing(modalWindow, resultOrReason, closing) {\r\n return !modalWindow.value.modalScope.$broadcast('modal.closing', resultOrReason, closing).defaultPrevented;\r\n }\r\n\r\n function unhideBackgroundElements() {\r\n Array.prototype.forEach.call(\r\n document.querySelectorAll('[' + ARIA_HIDDEN_ATTRIBUTE_NAME + ']'),\r\n function(hiddenEl) {\r\n var ariaHiddenCount = parseInt(hiddenEl.getAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME), 10),\r\n newHiddenCount = ariaHiddenCount - 1;\r\n hiddenEl.setAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME, newHiddenCount);\r\n\r\n if (!newHiddenCount) {\r\n hiddenEl.removeAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME);\r\n hiddenEl.removeAttribute('aria-hidden');\r\n }\r\n }\r\n );\r\n }\r\n\r\n $modalStack.close = function(modalInstance, result) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n unhideBackgroundElements();\r\n if (modalWindow && broadcastClosing(modalWindow, result, true)) {\r\n modalWindow.value.modalScope.$$uibDestructionScheduled = true;\r\n modalWindow.value.deferred.resolve(result);\r\n removeModalWindow(modalInstance, modalWindow.value.modalOpener);\r\n return true;\r\n }\r\n\r\n return !modalWindow;\r\n };\r\n\r\n $modalStack.dismiss = function(modalInstance, reason) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n unhideBackgroundElements();\r\n if (modalWindow && broadcastClosing(modalWindow, reason, false)) {\r\n modalWindow.value.modalScope.$$uibDestructionScheduled = true;\r\n modalWindow.value.deferred.reject(reason);\r\n removeModalWindow(modalInstance, modalWindow.value.modalOpener);\r\n return true;\r\n }\r\n return !modalWindow;\r\n };\r\n\r\n $modalStack.dismissAll = function(reason) {\r\n var topModal = this.getTop();\r\n while (topModal && this.dismiss(topModal.key, reason)) {\r\n topModal = this.getTop();\r\n }\r\n };\r\n\r\n $modalStack.getTop = function() {\r\n return openedWindows.top();\r\n };\r\n\r\n $modalStack.modalRendered = function(modalInstance) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n if (modalWindow) {\r\n modalWindow.value.renderDeferred.resolve();\r\n }\r\n };\r\n\r\n $modalStack.focusFirstFocusableElement = function(list) {\r\n if (list.length > 0) {\r\n list[0].focus();\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.focusLastFocusableElement = function(list) {\r\n if (list.length > 0) {\r\n list[list.length - 1].focus();\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.isModalFocused = function(evt, modalWindow) {\r\n if (evt && modalWindow) {\r\n var modalDomEl = modalWindow.value.modalDomEl;\r\n if (modalDomEl && modalDomEl.length) {\r\n return (evt.target || evt.srcElement) === modalDomEl[0];\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.isFocusInFirstItem = function(evt, list) {\r\n if (list.length > 0) {\r\n return (evt.target || evt.srcElement) === list[0];\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.isFocusInLastItem = function(evt, list) {\r\n if (list.length > 0) {\r\n return (evt.target || evt.srcElement) === list[list.length - 1];\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.loadFocusElementList = function(modalWindow) {\r\n if (modalWindow) {\r\n var modalDomE1 = modalWindow.value.modalDomEl;\r\n if (modalDomE1 && modalDomE1.length) {\r\n var elements = modalDomE1[0].querySelectorAll(tabbableSelector);\r\n return elements ?\r\n Array.prototype.filter.call(elements, function(element) {\r\n return isVisible(element);\r\n }) : elements;\r\n }\r\n }\r\n };\r\n\r\n return $modalStack;\r\n }])\r\n\r\n .provider('$uibModal', function() {\r\n var $modalProvider = {\r\n options: {\r\n animation: true,\r\n backdrop: true, //can also be false or 'static'\r\n keyboard: true\r\n },\r\n $get: ['$rootScope', '$q', '$document', '$templateRequest', '$controller', '$uibResolve', '$uibModalStack',\r\n function ($rootScope, $q, $document, $templateRequest, $controller, $uibResolve, $modalStack) {\r\n var $modal = {};\r\n\r\n function getTemplatePromise(options) {\r\n return options.template ? $q.when(options.template) :\r\n $templateRequest(angular.isFunction(options.templateUrl) ?\r\n options.templateUrl() : options.templateUrl);\r\n }\r\n\r\n var promiseChain = null;\r\n $modal.getPromiseChain = function() {\r\n return promiseChain;\r\n };\r\n\r\n $modal.open = function(modalOptions) {\r\n var modalResultDeferred = $q.defer();\r\n var modalOpenedDeferred = $q.defer();\r\n var modalClosedDeferred = $q.defer();\r\n var modalRenderDeferred = $q.defer();\r\n\r\n //prepare an instance of a modal to be injected into controllers and returned to a caller\r\n var modalInstance = {\r\n result: modalResultDeferred.promise,\r\n opened: modalOpenedDeferred.promise,\r\n closed: modalClosedDeferred.promise,\r\n rendered: modalRenderDeferred.promise,\r\n close: function (result) {\r\n return $modalStack.close(modalInstance, result);\r\n },\r\n dismiss: function (reason) {\r\n return $modalStack.dismiss(modalInstance, reason);\r\n }\r\n };\r\n\r\n //merge and clean up options\r\n modalOptions = angular.extend({}, $modalProvider.options, modalOptions);\r\n modalOptions.resolve = modalOptions.resolve || {};\r\n modalOptions.appendTo = modalOptions.appendTo || $document.find('body').eq(0);\r\n\r\n if (!modalOptions.appendTo.length) {\r\n throw new Error('appendTo element not found. Make sure that the element passed is in DOM.');\r\n }\r\n\r\n //verify options\r\n if (!modalOptions.component && !modalOptions.template && !modalOptions.templateUrl) {\r\n throw new Error('One of component or template or templateUrl options is required.');\r\n }\r\n\r\n var templateAndResolvePromise;\r\n if (modalOptions.component) {\r\n templateAndResolvePromise = $q.when($uibResolve.resolve(modalOptions.resolve, {}, null, null));\r\n } else {\r\n templateAndResolvePromise =\r\n $q.all([getTemplatePromise(modalOptions), $uibResolve.resolve(modalOptions.resolve, {}, null, null)]);\r\n }\r\n\r\n function resolveWithTemplate() {\r\n return templateAndResolvePromise;\r\n }\r\n\r\n // Wait for the resolution of the existing promise chain.\r\n // Then switch to our own combined promise dependency (regardless of how the previous modal fared).\r\n // Then add to $modalStack and resolve opened.\r\n // Finally clean up the chain variable if no subsequent modal has overwritten it.\r\n var samePromise;\r\n samePromise = promiseChain = $q.all([promiseChain])\r\n .then(resolveWithTemplate, resolveWithTemplate)\r\n .then(function resolveSuccess(tplAndVars) {\r\n var providedScope = modalOptions.scope || $rootScope;\r\n\r\n var modalScope = providedScope.$new();\r\n modalScope.$close = modalInstance.close;\r\n modalScope.$dismiss = modalInstance.dismiss;\r\n\r\n modalScope.$on('$destroy', function() {\r\n if (!modalScope.$$uibDestructionScheduled) {\r\n modalScope.$dismiss('$uibUnscheduledDestruction');\r\n }\r\n });\r\n\r\n var modal = {\r\n scope: modalScope,\r\n deferred: modalResultDeferred,\r\n renderDeferred: modalRenderDeferred,\r\n closedDeferred: modalClosedDeferred,\r\n animation: modalOptions.animation,\r\n backdrop: modalOptions.backdrop,\r\n keyboard: modalOptions.keyboard,\r\n backdropClass: modalOptions.backdropClass,\r\n windowTopClass: modalOptions.windowTopClass,\r\n windowClass: modalOptions.windowClass,\r\n windowTemplateUrl: modalOptions.windowTemplateUrl,\r\n ariaLabelledBy: modalOptions.ariaLabelledBy,\r\n ariaDescribedBy: modalOptions.ariaDescribedBy,\r\n size: modalOptions.size,\r\n openedClass: modalOptions.openedClass,\r\n appendTo: modalOptions.appendTo\r\n };\r\n\r\n var component = {};\r\n var ctrlInstance, ctrlInstantiate, ctrlLocals = {};\r\n\r\n if (modalOptions.component) {\r\n constructLocals(component, false, true, false);\r\n component.name = modalOptions.component;\r\n modal.component = component;\r\n } else if (modalOptions.controller) {\r\n constructLocals(ctrlLocals, true, false, true);\r\n\r\n // the third param will make the controller instantiate later,private api\r\n // @see https://github.com/angular/angular.js/blob/master/src/ng/controller.js#L126\r\n ctrlInstantiate = $controller(modalOptions.controller, ctrlLocals, true, modalOptions.controllerAs);\r\n if (modalOptions.controllerAs && modalOptions.bindToController) {\r\n ctrlInstance = ctrlInstantiate.instance;\r\n ctrlInstance.$close = modalScope.$close;\r\n ctrlInstance.$dismiss = modalScope.$dismiss;\r\n angular.extend(ctrlInstance, {\r\n $resolve: ctrlLocals.$scope.$resolve\r\n }, providedScope);\r\n }\r\n\r\n ctrlInstance = ctrlInstantiate();\r\n\r\n if (angular.isFunction(ctrlInstance.$onInit)) {\r\n ctrlInstance.$onInit();\r\n }\r\n }\r\n\r\n if (!modalOptions.component) {\r\n modal.content = tplAndVars[0];\r\n }\r\n\r\n $modalStack.open(modalInstance, modal);\r\n modalOpenedDeferred.resolve(true);\r\n\r\n function constructLocals(obj, template, instanceOnScope, injectable) {\r\n obj.$scope = modalScope;\r\n obj.$scope.$resolve = {};\r\n if (instanceOnScope) {\r\n obj.$scope.$uibModalInstance = modalInstance;\r\n } else {\r\n obj.$uibModalInstance = modalInstance;\r\n }\r\n\r\n var resolves = template ? tplAndVars[1] : tplAndVars;\r\n angular.forEach(resolves, function(value, key) {\r\n if (injectable) {\r\n obj[key] = value;\r\n }\r\n\r\n obj.$scope.$resolve[key] = value;\r\n });\r\n }\r\n }, function resolveError(reason) {\r\n modalOpenedDeferred.reject(reason);\r\n modalResultDeferred.reject(reason);\r\n })['finally'](function() {\r\n if (promiseChain === samePromise) {\r\n promiseChain = null;\r\n }\r\n });\r\n\r\n return modalInstance;\r\n };\r\n\r\n return $modal;\r\n }\r\n ]\r\n };\r\n\r\n return $modalProvider;\r\n });\r\n\r\nangular.module('ui.bootstrap.paging', [])\r\n/**\r\n * Helper internal service for generating common controller code between the\r\n * pager and pagination components\r\n */\r\n.factory('uibPaging', ['$parse', function($parse) {\r\n return {\r\n create: function(ctrl, $scope, $attrs) {\r\n ctrl.setNumPages = $attrs.numPages ? $parse($attrs.numPages).assign : angular.noop;\r\n ctrl.ngModelCtrl = { $setViewValue: angular.noop }; // nullModelCtrl\r\n ctrl._watchers = [];\r\n\r\n ctrl.init = function(ngModelCtrl, config) {\r\n ctrl.ngModelCtrl = ngModelCtrl;\r\n ctrl.config = config;\r\n\r\n ngModelCtrl.$render = function() {\r\n ctrl.render();\r\n };\r\n\r\n if ($attrs.itemsPerPage) {\r\n ctrl._watchers.push($scope.$parent.$watch($attrs.itemsPerPage, function(value) {\r\n ctrl.itemsPerPage = parseInt(value, 10);\r\n $scope.totalPages = ctrl.calculateTotalPages();\r\n ctrl.updatePage();\r\n }));\r\n } else {\r\n ctrl.itemsPerPage = config.itemsPerPage;\r\n }\r\n\r\n $scope.$watch('totalItems', function(newTotal, oldTotal) {\r\n if (angular.isDefined(newTotal) || newTotal !== oldTotal) {\r\n $scope.totalPages = ctrl.calculateTotalPages();\r\n ctrl.updatePage();\r\n }\r\n });\r\n };\r\n\r\n ctrl.calculateTotalPages = function() {\r\n var totalPages = ctrl.itemsPerPage < 1 ? 1 : Math.ceil($scope.totalItems / ctrl.itemsPerPage);\r\n return Math.max(totalPages || 0, 1);\r\n };\r\n\r\n ctrl.render = function() {\r\n $scope.page = parseInt(ctrl.ngModelCtrl.$viewValue, 10) || 1;\r\n };\r\n\r\n $scope.selectPage = function(page, evt) {\r\n if (evt) {\r\n evt.preventDefault();\r\n }\r\n\r\n var clickAllowed = !$scope.ngDisabled || !evt;\r\n if (clickAllowed && $scope.page !== page && page > 0 && page <= $scope.totalPages) {\r\n if (evt && evt.target) {\r\n evt.target.blur();\r\n }\r\n ctrl.ngModelCtrl.$setViewValue(page);\r\n ctrl.ngModelCtrl.$render();\r\n }\r\n };\r\n\r\n $scope.getText = function(key) {\r\n return $scope[key + 'Text'] || ctrl.config[key + 'Text'];\r\n };\r\n\r\n $scope.noPrevious = function() {\r\n return $scope.page === 1;\r\n };\r\n\r\n $scope.noNext = function() {\r\n return $scope.page === $scope.totalPages;\r\n };\r\n\r\n ctrl.updatePage = function() {\r\n ctrl.setNumPages($scope.$parent, $scope.totalPages); // Readonly variable\r\n\r\n if ($scope.page > $scope.totalPages) {\r\n $scope.selectPage($scope.totalPages);\r\n } else {\r\n ctrl.ngModelCtrl.$render();\r\n }\r\n };\r\n\r\n $scope.$on('$destroy', function() {\r\n while (ctrl._watchers.length) {\r\n ctrl._watchers.shift()();\r\n }\r\n });\r\n }\r\n };\r\n}]);\r\n\r\nangular.module('ui.bootstrap.pager', ['ui.bootstrap.paging', 'ui.bootstrap.tabindex'])\r\n\r\n.controller('UibPagerController', ['$scope', '$attrs', 'uibPaging', 'uibPagerConfig', function($scope, $attrs, uibPaging, uibPagerConfig) {\r\n $scope.align = angular.isDefined($attrs.align) ? $scope.$parent.$eval($attrs.align) : uibPagerConfig.align;\r\n\r\n uibPaging.create(this, $scope, $attrs);\r\n}])\r\n\r\n.constant('uibPagerConfig', {\r\n itemsPerPage: 10,\r\n previousText: '« Previous',\r\n nextText: 'Next »',\r\n align: true\r\n})\r\n\r\n.directive('uibPager', ['uibPagerConfig', function(uibPagerConfig) {\r\n return {\r\n scope: {\r\n totalItems: '=',\r\n previousText: '@',\r\n nextText: '@',\r\n ngDisabled: '='\r\n },\r\n require: ['uibPager', '?ngModel'],\r\n restrict: 'A',\r\n controller: 'UibPagerController',\r\n controllerAs: 'pager',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/pager/pager.html';\r\n },\r\n link: function(scope, element, attrs, ctrls) {\r\n element.addClass('pager');\r\n var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n if (!ngModelCtrl) {\r\n return; // do nothing if no ng-model\r\n }\r\n\r\n paginationCtrl.init(ngModelCtrl, uibPagerConfig);\r\n }\r\n };\r\n}]);\r\n\r\nangular.module('ui.bootstrap.pagination', ['ui.bootstrap.paging', 'ui.bootstrap.tabindex'])\r\n.controller('UibPaginationController', ['$scope', '$attrs', '$parse', 'uibPaging', 'uibPaginationConfig', function($scope, $attrs, $parse, uibPaging, uibPaginationConfig) {\r\n var ctrl = this;\r\n // Setup configuration parameters\r\n var maxSize = angular.isDefined($attrs.maxSize) ? $scope.$parent.$eval($attrs.maxSize) : uibPaginationConfig.maxSize,\r\n rotate = angular.isDefined($attrs.rotate) ? $scope.$parent.$eval($attrs.rotate) : uibPaginationConfig.rotate,\r\n forceEllipses = angular.isDefined($attrs.forceEllipses) ? $scope.$parent.$eval($attrs.forceEllipses) : uibPaginationConfig.forceEllipses,\r\n boundaryLinkNumbers = angular.isDefined($attrs.boundaryLinkNumbers) ? $scope.$parent.$eval($attrs.boundaryLinkNumbers) : uibPaginationConfig.boundaryLinkNumbers,\r\n pageLabel = angular.isDefined($attrs.pageLabel) ? function(idx) { return $scope.$parent.$eval($attrs.pageLabel, {$page: idx}); } : angular.identity;\r\n $scope.boundaryLinks = angular.isDefined($attrs.boundaryLinks) ? $scope.$parent.$eval($attrs.boundaryLinks) : uibPaginationConfig.boundaryLinks;\r\n $scope.directionLinks = angular.isDefined($attrs.directionLinks) ? $scope.$parent.$eval($attrs.directionLinks) : uibPaginationConfig.directionLinks;\r\n $attrs.$set('role', 'menu');\r\n\r\n uibPaging.create(this, $scope, $attrs);\r\n\r\n if ($attrs.maxSize) {\r\n ctrl._watchers.push($scope.$parent.$watch($parse($attrs.maxSize), function(value) {\r\n maxSize = parseInt(value, 10);\r\n ctrl.render();\r\n }));\r\n }\r\n\r\n // Create page object used in template\r\n function makePage(number, text, isActive) {\r\n return {\r\n number: number,\r\n text: text,\r\n active: isActive\r\n };\r\n }\r\n\r\n function getPages(currentPage, totalPages) {\r\n var pages = [];\r\n\r\n // Default page limits\r\n var startPage = 1, endPage = totalPages;\r\n var isMaxSized = angular.isDefined(maxSize) && maxSize < totalPages;\r\n\r\n // recompute if maxSize\r\n if (isMaxSized) {\r\n if (rotate) {\r\n // Current page is displayed in the middle of the visible ones\r\n startPage = Math.max(currentPage - Math.floor(maxSize / 2), 1);\r\n endPage = startPage + maxSize - 1;\r\n\r\n // Adjust if limit is exceeded\r\n if (endPage > totalPages) {\r\n endPage = totalPages;\r\n startPage = endPage - maxSize + 1;\r\n }\r\n } else {\r\n // Visible pages are paginated with maxSize\r\n startPage = (Math.ceil(currentPage / maxSize) - 1) * maxSize + 1;\r\n\r\n // Adjust last page if limit is exceeded\r\n endPage = Math.min(startPage + maxSize - 1, totalPages);\r\n }\r\n }\r\n\r\n // Add page number links\r\n for (var number = startPage; number <= endPage; number++) {\r\n var page = makePage(number, pageLabel(number), number === currentPage);\r\n pages.push(page);\r\n }\r\n\r\n // Add links to move between page sets\r\n if (isMaxSized && maxSize > 0 && (!rotate || forceEllipses || boundaryLinkNumbers)) {\r\n if (startPage > 1) {\r\n if (!boundaryLinkNumbers || startPage > 3) { //need ellipsis for all options unless range is too close to beginning\r\n var previousPageSet = makePage(startPage - 1, '...', false);\r\n pages.unshift(previousPageSet);\r\n }\r\n if (boundaryLinkNumbers) {\r\n if (startPage === 3) { //need to replace ellipsis when the buttons would be sequential\r\n var secondPageLink = makePage(2, '2', false);\r\n pages.unshift(secondPageLink);\r\n }\r\n //add the first page\r\n var firstPageLink = makePage(1, '1', false);\r\n pages.unshift(firstPageLink);\r\n }\r\n }\r\n\r\n if (endPage < totalPages) {\r\n if (!boundaryLinkNumbers || endPage < totalPages - 2) { //need ellipsis for all options unless range is too close to end\r\n var nextPageSet = makePage(endPage + 1, '...', false);\r\n pages.push(nextPageSet);\r\n }\r\n if (boundaryLinkNumbers) {\r\n if (endPage === totalPages - 2) { //need to replace ellipsis when the buttons would be sequential\r\n var secondToLastPageLink = makePage(totalPages - 1, totalPages - 1, false);\r\n pages.push(secondToLastPageLink);\r\n }\r\n //add the last page\r\n var lastPageLink = makePage(totalPages, totalPages, false);\r\n pages.push(lastPageLink);\r\n }\r\n }\r\n }\r\n return pages;\r\n }\r\n\r\n var originalRender = this.render;\r\n this.render = function() {\r\n originalRender();\r\n if ($scope.page > 0 && $scope.page <= $scope.totalPages) {\r\n $scope.pages = getPages($scope.page, $scope.totalPages);\r\n }\r\n };\r\n}])\r\n\r\n.constant('uibPaginationConfig', {\r\n itemsPerPage: 10,\r\n boundaryLinks: false,\r\n boundaryLinkNumbers: false,\r\n directionLinks: true,\r\n firstText: 'First',\r\n previousText: 'Previous',\r\n nextText: 'Next',\r\n lastText: 'Last',\r\n rotate: true,\r\n forceEllipses: false\r\n})\r\n\r\n.directive('uibPagination', ['$parse', 'uibPaginationConfig', function($parse, uibPaginationConfig) {\r\n return {\r\n scope: {\r\n totalItems: '=',\r\n firstText: '@',\r\n previousText: '@',\r\n nextText: '@',\r\n lastText: '@',\r\n ngDisabled:'='\r\n },\r\n require: ['uibPagination', '?ngModel'],\r\n restrict: 'A',\r\n controller: 'UibPaginationController',\r\n controllerAs: 'pagination',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/pagination/pagination.html';\r\n },\r\n link: function(scope, element, attrs, ctrls) {\r\n element.addClass('pagination');\r\n var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n if (!ngModelCtrl) {\r\n return; // do nothing if no ng-model\r\n }\r\n\r\n paginationCtrl.init(ngModelCtrl, uibPaginationConfig);\r\n }\r\n };\r\n}]);\r\n\r\n/**\r\n * The following features are still outstanding: animation as a\r\n * function, placement as a function, inside, support for more triggers than\r\n * just mouse enter/leave, html tooltips, and selector delegation.\r\n */\r\nangular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.stackedMap'])\r\n\r\n/**\r\n * The $tooltip service creates tooltip- and popover-like directives as well as\r\n * houses global options for them.\r\n */\r\n.provider('$uibTooltip', function() {\r\n // The default options tooltip and popover.\r\n var defaultOptions = {\r\n placement: 'top',\r\n placementClassPrefix: 'bs-tooltip-',\r\n animation: true,\r\n popupDelay: 0,\r\n popupCloseDelay: 0,\r\n useContentExp: false\r\n };\r\n\r\n // Default hide triggers for each show trigger\r\n var triggerMap = {\r\n 'mouseenter': 'mouseleave',\r\n 'click': 'click',\r\n 'outsideClick': 'outsideClick',\r\n 'focus': 'blur',\r\n 'none': ''\r\n };\r\n\r\n // The options specified to the provider globally.\r\n var globalOptions = {};\r\n\r\n /**\r\n * `options({})` allows global configuration of all tooltips in the\r\n * application.\r\n *\r\n * var app = angular.module( 'App', ['ui.bootstrap.tooltip'], function( $tooltipProvider ) {\r\n * // place tooltips left instead of top by default\r\n * $tooltipProvider.options( { placement: 'left' } );\r\n * });\r\n */\r\n\tthis.options = function(value) {\r\n\t\tangular.extend(globalOptions, value);\r\n\t};\r\n\r\n /**\r\n * This allows you to extend the set of trigger mappings available. E.g.:\r\n *\r\n * $tooltipProvider.setTriggers( { 'openTrigger': 'closeTrigger' } );\r\n */\r\n this.setTriggers = function setTriggers(triggers) {\r\n angular.extend(triggerMap, triggers);\r\n };\r\n\r\n /**\r\n * This is a helper function for translating camel-case to snake_case.\r\n */\r\n function snake_case(name) {\r\n var regexp = /[A-Z]/g;\r\n var separator = '-';\r\n return name.replace(regexp, function(letter, pos) {\r\n return (pos ? separator : '') + letter.toLowerCase();\r\n });\r\n }\r\n\r\n /**\r\n * Returns the actual instance of the $tooltip service.\r\n * TODO support multiple triggers\r\n */\r\n this.$get = ['$window', '$compile', '$timeout', '$document', '$uibPosition', '$interpolate', '$rootScope', '$parse', '$$stackedMap', function($window, $compile, $timeout, $document, $position, $interpolate, $rootScope, $parse, $$stackedMap) {\r\n var openedTooltips = $$stackedMap.createNew();\r\n $document.on('keyup', keypressListener);\r\n\r\n $rootScope.$on('$destroy', function() {\r\n $document.off('keyup', keypressListener);\r\n });\r\n\r\n function keypressListener(e) {\r\n if (e.which === 27) {\r\n var last = openedTooltips.top();\r\n if (last) {\r\n last.value.close();\r\n last = null;\r\n }\r\n }\r\n }\r\n\r\n return function $tooltip(ttType, prefix, defaultTriggerShow, options) {\r\n options = angular.extend({}, defaultOptions, globalOptions, options);\r\n\r\n /**\r\n * Returns an object of show and hide triggers.\r\n *\r\n * If a trigger is supplied,\r\n * it is used to show the tooltip; otherwise, it will use the `trigger`\r\n * option passed to the `$tooltipProvider.options` method; else it will\r\n * default to the trigger supplied to this directive factory.\r\n *\r\n * The hide trigger is based on the show trigger. If the `trigger` option\r\n * was passed to the `$tooltipProvider.options` method, it will use the\r\n * mapped trigger from `triggerMap` or the passed trigger if the map is\r\n * undefined; otherwise, it uses the `triggerMap` value of the show\r\n * trigger; else it will just use the show trigger.\r\n */\r\n function getTriggers(trigger) {\r\n var show = (trigger || options.trigger || defaultTriggerShow).split(' ');\r\n var hide = show.map(function(trigger) {\r\n return triggerMap[trigger] || trigger;\r\n });\r\n return {\r\n show: show,\r\n hide: hide\r\n };\r\n }\r\n\r\n var directiveName = snake_case(ttType);\r\n\r\n var startSym = $interpolate.startSymbol();\r\n var endSym = $interpolate.endSymbol();\r\n var template =\r\n '<div '+ directiveName + '-popup ' +\r\n 'uib-title=\"' + startSym + 'title' + endSym + '\" ' +\r\n (options.useContentExp ?\r\n 'content-exp=\"contentExp()\" ' :\r\n 'content=\"' + startSym + 'content' + endSym + '\" ') +\r\n 'origin-scope=\"origScope\" ' +\r\n 'class=\"uib-position-measure ' + prefix + '\" ' +\r\n 'tooltip-animation-class=\"fade\"' +\r\n 'uib-tooltip-classes ' +\r\n 'ng-class=\"{ show: isOpen }\" ' +\r\n '>' +\r\n '</div>';\r\n\r\n return {\r\n compile: function(tElem, tAttrs) {\r\n var tooltipLinker = $compile(template);\r\n\r\n return function link(scope, element, attrs, tooltipCtrl) {\r\n var tooltip;\r\n var tooltipLinkedScope;\r\n var transitionTimeout;\r\n var showTimeout;\r\n var hideTimeout;\r\n var positionTimeout;\r\n var adjustmentTimeout;\r\n var appendToBody = angular.isDefined(options.appendToBody) ? options.appendToBody : false;\r\n var triggers = getTriggers(undefined);\r\n var hasEnableExp = angular.isDefined(attrs[prefix + 'Enable']);\r\n var ttScope = scope.$new(true);\r\n var repositionScheduled = false;\r\n var isOpenParse = angular.isDefined(attrs[prefix + 'IsOpen']) ? $parse(attrs[prefix + 'IsOpen']) : false;\r\n var contentParse = options.useContentExp ? $parse(attrs[ttType]) : false;\r\n var observers = [];\r\n var lastPlacement;\r\n\r\n var positionTooltip = function() {\r\n // check if tooltip exists and is not empty\r\n if (!tooltip || !tooltip.html()) { return; }\r\n\r\n if (!positionTimeout) {\r\n positionTimeout = $timeout(function() {\r\n var placementClasses = $position.parsePlacement(ttScope.placement);\r\n var placement = placementClasses[1] === 'center' ? placementClasses[0] : placementClasses[0] + '-' + placementClasses[1];\r\n\t\t\t\t \r\n // need to add classes prior to placement to allow correct tooltip width calculations\r\n if (!tooltip.hasClass(placementClasses[0])) {\r\n tooltip.removeClass(lastPlacement.split('-')[0]);\r\n tooltip.addClass(placementClasses[0]);\r\n }\r\n\r\n if (!tooltip.hasClass(options.placementClassPrefix + placement)) {\r\n tooltip.removeClass(options.placementClassPrefix + lastPlacement);\r\n tooltip.addClass(options.placementClassPrefix + placement);\r\n }\r\n \r\n // Take into account tooltup margins, since boostrap css draws tooltip arrow inside margins\r\n var ttPosition = $position.positionElements(element, tooltip, ttScope.placement, appendToBody, true);\r\n var initialHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');\r\n var elementPos = appendToBody ? $position.offset(element) : $position.position(element);\r\n tooltip.css({ top: ttPosition.top + 'px', left: ttPosition.left + 'px' });\r\n\r\n adjustmentTimeout = $timeout(function() {\r\n var currentHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');\r\n var adjustment = $position.adjustTop(placementClasses, elementPos, initialHeight, currentHeight);\r\n if (adjustment) {\r\n tooltip.css(adjustment);\r\n }\r\n adjustmentTimeout = null;\r\n }, 0, false);\r\n\r\n // first time through tt element will have the\r\n // uib-position-measure class or if the placement\r\n // has changed we need to position the arrow.\r\n if (tooltip.hasClass('uib-position-measure')) {\r\n $position.positionArrow(tooltip, ttPosition.placement);\r\n tooltip.removeClass('uib-position-measure');\r\n } else if (lastPlacement !== ttPosition.placement) {\r\n $position.positionArrow(tooltip, ttPosition.placement);\r\n }\r\n lastPlacement = ttPosition.placement;\r\n\r\n positionTimeout = null;\r\n }, 0, false);\r\n }\r\n };\r\n\r\n // Set up the correct scope to allow transclusion later\r\n ttScope.origScope = scope;\r\n\r\n // By default, the tooltip is not open.\r\n // TODO add ability to start tooltip opened\r\n ttScope.isOpen = false;\r\n\r\n function toggleTooltipBind() {\r\n if (!ttScope.isOpen) {\r\n showTooltipBind();\r\n } else {\r\n hideTooltipBind();\r\n }\r\n }\r\n\r\n // Show the tooltip with delay if specified, otherwise show it immediately\r\n function showTooltipBind() {\r\n if (hasEnableExp && !scope.$eval(attrs[prefix + 'Enable'])) {\r\n return;\r\n }\r\n\r\n cancelHide();\r\n prepareTooltip();\r\n\r\n if (ttScope.popupDelay) {\r\n // Do nothing if the tooltip was already scheduled to pop-up.\r\n // This happens if show is triggered multiple times before any hide is triggered.\r\n if (!showTimeout) {\r\n showTimeout = $timeout(show, ttScope.popupDelay, false);\r\n }\r\n } else {\r\n show();\r\n }\r\n }\r\n\r\n function hideTooltipBind() {\r\n cancelShow();\r\n\r\n if (ttScope.popupCloseDelay) {\r\n if (!hideTimeout) {\r\n hideTimeout = $timeout(hide, ttScope.popupCloseDelay, false);\r\n }\r\n } else {\r\n hide();\r\n }\r\n }\r\n\r\n // Show the tooltip popup element.\r\n function show() {\r\n cancelShow();\r\n cancelHide();\r\n\r\n // Don't show empty tooltips.\r\n if (!ttScope.content) {\r\n return angular.noop;\r\n }\r\n\r\n createTooltip();\r\n\r\n // And show the tooltip.\r\n ttScope.$evalAsync(function() {\r\n ttScope.isOpen = true;\r\n assignIsOpen(true);\r\n positionTooltip();\r\n });\r\n }\r\n\r\n function cancelShow() {\r\n if (showTimeout) {\r\n $timeout.cancel(showTimeout);\r\n showTimeout = null;\r\n }\r\n\r\n if (positionTimeout) {\r\n $timeout.cancel(positionTimeout);\r\n positionTimeout = null;\r\n }\r\n }\r\n\r\n // Hide the tooltip popup element.\r\n function hide() {\r\n if (!ttScope) {\r\n return;\r\n }\r\n\r\n // First things first: we don't show it anymore.\r\n ttScope.$evalAsync(function() {\r\n if (ttScope) {\r\n ttScope.isOpen = false;\r\n assignIsOpen(false);\r\n // And now we remove it from the DOM. However, if we have animation, we\r\n // need to wait for it to expire beforehand.\r\n // FIXME: this is a placeholder for a port of the transitions library.\r\n // The fade transition in TWBS is 150ms.\r\n if (ttScope.animation) {\r\n if (!transitionTimeout) {\r\n transitionTimeout = $timeout(removeTooltip, 150, false);\r\n }\r\n } else {\r\n removeTooltip();\r\n }\r\n }\r\n });\r\n }\r\n\r\n function cancelHide() {\r\n if (hideTimeout) {\r\n $timeout.cancel(hideTimeout);\r\n hideTimeout = null;\r\n }\r\n\r\n if (transitionTimeout) {\r\n $timeout.cancel(transitionTimeout);\r\n transitionTimeout = null;\r\n }\r\n }\r\n\r\n function createTooltip() {\r\n // There can only be one tooltip element per directive shown at once.\r\n if (tooltip) {\r\n return;\r\n }\r\n\r\n tooltipLinkedScope = ttScope.$new();\r\n tooltip = tooltipLinker(tooltipLinkedScope, function(tooltip) {\r\n if (appendToBody) {\r\n $document.find('body').append(tooltip);\r\n } else {\r\n element.after(tooltip);\r\n }\r\n });\r\n\r\n openedTooltips.add(ttScope, {\r\n close: hide\r\n });\r\n\r\n prepObservers();\r\n }\r\n\r\n function removeTooltip() {\r\n cancelShow();\r\n cancelHide();\r\n unregisterObservers();\r\n\r\n if (tooltip) {\r\n tooltip.remove();\r\n\r\n tooltip = null;\r\n if (adjustmentTimeout) {\r\n $timeout.cancel(adjustmentTimeout);\r\n }\r\n }\r\n\r\n openedTooltips.remove(ttScope);\r\n\r\n if (tooltipLinkedScope) {\r\n tooltipLinkedScope.$destroy();\r\n tooltipLinkedScope = null;\r\n }\r\n }\r\n\r\n /**\r\n * Set the initial scope values. Once\r\n * the tooltip is created, the observers\r\n * will be added to keep things in sync.\r\n */\r\n function prepareTooltip() {\r\n ttScope.title = attrs[prefix + 'Title'];\r\n if (contentParse) {\r\n ttScope.content = contentParse(scope);\r\n } else {\r\n ttScope.content = attrs[ttType];\r\n }\r\n\r\n ttScope.popupClass = attrs[prefix + 'Class'];\r\n ttScope.placement = angular.isDefined(attrs[prefix + 'Placement']) ? attrs[prefix + 'Placement'] : options.placement;\r\n var placement = $position.parsePlacement(ttScope.placement);\r\n lastPlacement = placement[1] ? placement[0] + '-' + placement[1] : placement[0];\r\n\r\n var delay = parseInt(attrs[prefix + 'PopupDelay'], 10);\r\n var closeDelay = parseInt(attrs[prefix + 'PopupCloseDelay'], 10);\r\n ttScope.popupDelay = !isNaN(delay) ? delay : options.popupDelay;\r\n ttScope.popupCloseDelay = !isNaN(closeDelay) ? closeDelay : options.popupCloseDelay;\r\n }\r\n\r\n function assignIsOpen(isOpen) {\r\n if (isOpenParse && angular.isFunction(isOpenParse.assign)) {\r\n isOpenParse.assign(scope, isOpen);\r\n }\r\n }\r\n\r\n ttScope.contentExp = function() {\r\n return ttScope.content;\r\n };\r\n\r\n /**\r\n * Observe the relevant attributes.\r\n */\r\n attrs.$observe('disabled', function(val) {\r\n if (val) {\r\n cancelShow();\r\n }\r\n\r\n if (val && ttScope.isOpen) {\r\n hide();\r\n }\r\n });\r\n\r\n if (isOpenParse) {\r\n scope.$watch(isOpenParse, function(val) {\r\n if (ttScope && !val === ttScope.isOpen) {\r\n toggleTooltipBind();\r\n }\r\n });\r\n }\r\n\r\n function prepObservers() {\r\n observers.length = 0;\r\n\r\n if (contentParse) {\r\n observers.push(\r\n scope.$watch(contentParse, function(val) {\r\n ttScope.content = val;\r\n if (!val && ttScope.isOpen) {\r\n hide();\r\n }\r\n })\r\n );\r\n\r\n observers.push(\r\n tooltipLinkedScope.$watch(function() {\r\n if (!repositionScheduled) {\r\n repositionScheduled = true;\r\n tooltipLinkedScope.$$postDigest(function() {\r\n repositionScheduled = false;\r\n if (ttScope && ttScope.isOpen) {\r\n positionTooltip();\r\n }\r\n });\r\n }\r\n })\r\n );\r\n } else {\r\n observers.push(\r\n attrs.$observe(ttType, function(val) {\r\n ttScope.content = val;\r\n if (!val && ttScope.isOpen) {\r\n hide();\r\n } else {\r\n positionTooltip();\r\n }\r\n })\r\n );\r\n }\r\n\r\n observers.push(\r\n attrs.$observe(prefix + 'Title', function(val) {\r\n ttScope.title = val;\r\n if (ttScope.isOpen) {\r\n positionTooltip();\r\n }\r\n })\r\n );\r\n\r\n observers.push(\r\n attrs.$observe(prefix + 'Placement', function(val) {\r\n ttScope.placement = val ? val : options.placement;\r\n if (ttScope.isOpen) {\r\n positionTooltip();\r\n }\r\n })\r\n );\r\n }\r\n\r\n function unregisterObservers() {\r\n if (observers.length) {\r\n angular.forEach(observers, function(observer) {\r\n observer();\r\n });\r\n observers.length = 0;\r\n }\r\n }\r\n\r\n // hide tooltips/popovers for outsideClick trigger\r\n function bodyHideTooltipBind(e) {\r\n if (!ttScope || !ttScope.isOpen || !tooltip) {\r\n return;\r\n }\r\n // make sure the tooltip/popover link or tool tooltip/popover itself were not clicked\r\n if (!element[0].contains(e.target) && !tooltip[0].contains(e.target)) {\r\n hideTooltipBind();\r\n }\r\n }\r\n\r\n // KeyboardEvent handler to hide the tooltip on Escape key press\r\n function hideOnEscapeKey(e) {\r\n if (e.which === 27) {\r\n hideTooltipBind();\r\n }\r\n }\r\n\r\n var unregisterTriggers = function() {\r\n triggers.show.forEach(function(trigger) {\r\n if (trigger === 'outsideClick') {\r\n element.off('click', toggleTooltipBind);\r\n } else {\r\n element.off(trigger, showTooltipBind);\r\n element.off(trigger, toggleTooltipBind);\r\n }\r\n element.off('keypress', hideOnEscapeKey);\r\n });\r\n triggers.hide.forEach(function(trigger) {\r\n if (trigger === 'outsideClick') {\r\n $document.off('click', bodyHideTooltipBind);\r\n } else {\r\n element.off(trigger, hideTooltipBind);\r\n }\r\n });\r\n };\r\n\r\n function prepTriggers() {\r\n var showTriggers = [], hideTriggers = [];\r\n var val = scope.$eval(attrs[prefix + 'Trigger']);\r\n unregisterTriggers();\r\n\r\n if (angular.isObject(val)) {\r\n Object.keys(val).forEach(function(key) {\r\n showTriggers.push(key);\r\n hideTriggers.push(val[key]);\r\n });\r\n triggers = {\r\n show: showTriggers,\r\n hide: hideTriggers\r\n };\r\n } else {\r\n triggers = getTriggers(val);\r\n }\r\n\r\n if (triggers.show !== 'none') {\r\n triggers.show.forEach(function(trigger, idx) {\r\n if (trigger === 'outsideClick') {\r\n element.on('click', toggleTooltipBind);\r\n $document.on('click', bodyHideTooltipBind);\r\n } else if (trigger === triggers.hide[idx]) {\r\n element.on(trigger, toggleTooltipBind);\r\n } else if (trigger) {\r\n element.on(trigger, showTooltipBind);\r\n element.on(triggers.hide[idx], hideTooltipBind);\r\n }\r\n element.on('keypress', hideOnEscapeKey);\r\n });\r\n }\r\n }\r\n\r\n prepTriggers();\r\n\r\n var animation = scope.$eval(attrs[prefix + 'Animation']);\r\n ttScope.animation = angular.isDefined(animation) ? !!animation : options.animation;\r\n\r\n var appendToBodyVal;\r\n var appendKey = prefix + 'AppendToBody';\r\n if (appendKey in attrs && attrs[appendKey] === undefined) {\r\n appendToBodyVal = true;\r\n } else {\r\n appendToBodyVal = scope.$eval(attrs[appendKey]);\r\n }\r\n\r\n appendToBody = angular.isDefined(appendToBodyVal) ? appendToBodyVal : appendToBody;\r\n\r\n // Make sure tooltip is destroyed and removed.\r\n scope.$on('$destroy', function onDestroyTooltip() {\r\n unregisterTriggers();\r\n removeTooltip();\r\n ttScope = null;\r\n });\r\n };\r\n }\r\n };\r\n };\r\n }];\r\n})\r\n\r\n// This is mostly ngInclude code but with a custom scope\r\n.directive('uibTooltipTemplateTransclude', [\r\n '$animate', '$sce', '$compile', '$templateRequest',\r\nfunction ($animate, $sce, $compile, $templateRequest) {\r\n return {\r\n link: function(scope, elem, attrs) {\r\n var origScope = scope.$eval(attrs.tooltipTemplateTranscludeScope);\r\n\r\n var changeCounter = 0,\r\n currentScope,\r\n previousElement,\r\n currentElement;\r\n\r\n var cleanupLastIncludeContent = function() {\r\n if (previousElement) {\r\n previousElement.remove();\r\n previousElement = null;\r\n }\r\n\r\n if (currentScope) {\r\n currentScope.$destroy();\r\n currentScope = null;\r\n }\r\n\r\n if (currentElement) {\r\n $animate.leave(currentElement).then(function() {\r\n previousElement = null;\r\n });\r\n previousElement = currentElement;\r\n currentElement = null;\r\n }\r\n };\r\n\r\n scope.$watch($sce.parseAsResourceUrl(attrs.uibTooltipTemplateTransclude), function(src) {\r\n var thisChangeId = ++changeCounter;\r\n\r\n if (src) {\r\n //set the 2nd param to true to ignore the template request error so that the inner\r\n //contents and scope can be cleaned up.\r\n $templateRequest(src, true).then(function(response) {\r\n if (thisChangeId !== changeCounter) { return; }\r\n var newScope = origScope.$new();\r\n var template = response;\r\n\r\n var clone = $compile(template)(newScope, function(clone) {\r\n cleanupLastIncludeContent();\r\n $animate.enter(clone, elem);\r\n });\r\n\r\n currentScope = newScope;\r\n currentElement = clone;\r\n\r\n currentScope.$emit('$includeContentLoaded', src);\r\n }, function() {\r\n if (thisChangeId === changeCounter) {\r\n cleanupLastIncludeContent();\r\n scope.$emit('$includeContentError', src);\r\n }\r\n });\r\n scope.$emit('$includeContentRequested', src);\r\n } else {\r\n cleanupLastIncludeContent();\r\n }\r\n });\r\n\r\n scope.$on('$destroy', cleanupLastIncludeContent);\r\n }\r\n };\r\n}])\r\n\r\n/**\r\n * Note that it's intentional that these classes are *not* applied through $animate.\r\n * They must not be animated as they're expected to be present on the tooltip on\r\n * initialization.\r\n */\r\n.directive('uibTooltipClasses', ['$uibPosition', function($uibPosition) {\r\n return {\r\n restrict: 'A',\r\n link: function(scope, element, attrs) {\r\n // need to set the primary position so the\r\n // arrow has space during position measure.\r\n // tooltip.positionTooltip()\r\n if (scope.placement) {\r\n // // There are no top-left etc... classes\r\n // // in TWBS, so we need the primary position.\r\n var position = $uibPosition.parsePlacement(scope.placement);\r\n element.addClass(position[0]);\r\n }\r\n\r\n if (scope.popupClass) {\r\n element.addClass(scope.popupClass);\r\n }\r\n\r\n if (scope.animation) {\r\n element.addClass(attrs.tooltipAnimationClass);\r\n }\r\n }\r\n };\r\n}])\r\n\r\n.directive('uibTooltipPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { content: '@' },\r\n templateUrl: 'uib/template/tooltip/tooltip-popup.html'\r\n };\r\n})\r\n\r\n.directive('uibTooltip', [ '$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibTooltip', 'tooltip', 'mouseenter');\r\n}])\r\n\r\n.directive('uibTooltipTemplatePopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { contentExp: '&', originScope: '&' },\r\n templateUrl: 'uib/template/tooltip/tooltip-template-popup.html'\r\n };\r\n})\r\n\r\n.directive('uibTooltipTemplate', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibTooltipTemplate', 'tooltip', 'mouseenter', {\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('uibTooltipHtmlPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { contentExp: '&' },\r\n templateUrl: 'uib/template/tooltip/tooltip-html-popup.html'\r\n };\r\n})\r\n\r\n.directive('uibTooltipHtml', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibTooltipHtml', 'tooltip', 'mouseenter', {\r\n useContentExp: true\r\n });\r\n}]);\r\n\r\n/**\r\n * The following features are still outstanding: popup delay, animation as a\r\n * function, placement as a function, inside, support for more triggers than\r\n * just mouse enter/leave, and selector delegatation.\r\n */\r\nangular.module('ui.bootstrap.popover', ['ui.bootstrap.tooltip'])\r\n\r\n.directive('uibPopoverTemplatePopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { uibTitle: '@', contentExp: '&', originScope: '&' },\r\n templateUrl: 'uib/template/popover/popover-template.html'\r\n };\r\n})\r\n\r\n.directive('uibPopoverTemplate', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibPopoverTemplate', 'popover', 'click', {\r\n placementClassPrefix: 'bs-popover-',\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('uibPopoverHtmlPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { contentExp: '&', uibTitle: '@' },\r\n templateUrl: 'uib/template/popover/popover-html.html'\r\n };\r\n})\r\n\r\n.directive('uibPopoverHtml', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibPopoverHtml', 'popover', 'click', {\r\n placementClassPrefix: 'bs-popover-',\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('uibPopoverPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { uibTitle: '@', content: '@' },\r\n templateUrl: 'uib/template/popover/popover.html'\r\n };\r\n})\r\n\r\n.directive('uibPopover', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibPopover', 'popover', 'click', {\r\n placementClassPrefix: 'bs-popover-'\r\n });\r\n}]);\r\n\r\nangular.module('ui.bootstrap.progressbar', [])\r\n\r\n.constant('uibProgressConfig', {\r\n animate: true,\r\n max: 100\r\n})\r\n\r\n.controller('UibProgressController', ['$scope', '$attrs', 'uibProgressConfig', function($scope, $attrs, progressConfig) {\r\n var self = this,\r\n animate = angular.isDefined($attrs.animate) ? $scope.$parent.$eval($attrs.animate) : progressConfig.animate;\r\n\r\n this.bars = [];\r\n $scope.max = getMaxOrDefault();\r\n\r\n this.addBar = function(bar, element, attrs) {\r\n if (!animate) {\r\n element.css({'transition': 'none'});\r\n }\r\n\r\n this.bars.push(bar);\r\n\r\n bar.max = getMaxOrDefault();\r\n bar.title = attrs && angular.isDefined(attrs.title) ? attrs.title : 'progressbar';\r\n\r\n bar.$watch('value', function(value) {\r\n bar.recalculatePercentage();\r\n });\r\n\r\n bar.recalculatePercentage = function() {\r\n var totalPercentage = self.bars.reduce(function(total, bar) {\r\n bar.percent = +(100 * bar.value / bar.max).toFixed(2);\r\n return total + bar.percent;\r\n }, 0);\r\n\r\n if (totalPercentage > 100) {\r\n bar.percent -= totalPercentage - 100;\r\n }\r\n };\r\n\r\n bar.$on('$destroy', function() {\r\n element = null;\r\n self.removeBar(bar);\r\n });\r\n };\r\n\r\n this.removeBar = function(bar) {\r\n this.bars.splice(this.bars.indexOf(bar), 1);\r\n this.bars.forEach(function (bar) {\r\n bar.recalculatePercentage();\r\n });\r\n };\r\n\r\n //$attrs.$observe('maxParam', function(maxParam) {\r\n $scope.$watch('maxParam', function(maxParam) {\r\n self.bars.forEach(function(bar) {\r\n bar.max = getMaxOrDefault();\r\n bar.recalculatePercentage();\r\n });\r\n });\r\n\r\n function getMaxOrDefault () {\r\n return angular.isDefined($scope.maxParam) ? $scope.maxParam : progressConfig.max;\r\n }\r\n}])\r\n\r\n.directive('uibProgress', function() {\r\n return {\r\n replace: true,\r\n transclude: true,\r\n controller: 'UibProgressController',\r\n require: 'uibProgress',\r\n scope: {\r\n maxParam: '=?max'\r\n },\r\n templateUrl: 'uib/template/progressbar/progress.html'\r\n };\r\n})\r\n\r\n.directive('uibBar', function() {\r\n return {\r\n replace: true,\r\n transclude: true,\r\n require: '^uibProgress',\r\n scope: {\r\n value: '=',\r\n type: '@',\r\n striped: '=?'\r\n },\r\n templateUrl: 'uib/template/progressbar/bar.html',\r\n link: function(scope, element, attrs, progressCtrl) {\r\n progressCtrl.addBar(scope, element, attrs);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibProgressbar', function() {\r\n return {\r\n replace: true,\r\n transclude: true,\r\n controller: 'UibProgressController',\r\n scope: {\r\n value: '=',\r\n maxParam: '=?max',\r\n type: '@',\r\n striped: '=?'\r\n },\r\n templateUrl: 'uib/template/progressbar/progressbar.html',\r\n link: function(scope, element, attrs, progressCtrl) {\r\n progressCtrl.addBar(scope, angular.element(element.children()[0]), {title: attrs.title});\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.rating', [])\r\n\r\n.constant('uibRatingConfig', {\r\n max: 5,\r\n stateOn: null,\r\n stateOff: null,\r\n enableReset: true,\r\n titles: ['one', 'two', 'three', 'four', 'five']\r\n})\r\n\r\n.controller('UibRatingController', ['$scope', '$attrs', 'uibRatingConfig', function($scope, $attrs, ratingConfig) {\r\n var ngModelCtrl = { $setViewValue: angular.noop },\r\n self = this;\r\n\r\n this.init = function(ngModelCtrl_) {\r\n ngModelCtrl = ngModelCtrl_;\r\n ngModelCtrl.$render = this.render;\r\n\r\n ngModelCtrl.$formatters.push(function(value) {\r\n if (angular.isNumber(value) && value << 0 !== value) {\r\n value = Math.round(value);\r\n }\r\n\r\n return value;\r\n });\r\n\r\n this.stateOn = angular.isDefined($attrs.stateOn) ? $scope.$parent.$eval($attrs.stateOn) : ratingConfig.stateOn;\r\n this.stateOff = angular.isDefined($attrs.stateOff) ? $scope.$parent.$eval($attrs.stateOff) : ratingConfig.stateOff;\r\n this.enableReset = angular.isDefined($attrs.enableReset) ?\r\n $scope.$parent.$eval($attrs.enableReset) : ratingConfig.enableReset;\r\n var tmpTitles = angular.isDefined($attrs.titles) ? $scope.$parent.$eval($attrs.titles) : ratingConfig.titles;\r\n this.titles = angular.isArray(tmpTitles) && tmpTitles.length > 0 ?\r\n tmpTitles : ratingConfig.titles;\r\n\r\n var ratingStates = angular.isDefined($attrs.ratingStates) ?\r\n $scope.$parent.$eval($attrs.ratingStates) :\r\n new Array(angular.isDefined($attrs.max) ? $scope.$parent.$eval($attrs.max) : ratingConfig.max);\r\n $scope.range = this.buildTemplateObjects(ratingStates);\r\n };\r\n\r\n this.buildTemplateObjects = function(states) {\r\n for (var i = 0, n = states.length; i < n; i++) {\r\n states[i] = angular.extend({ index: i }, { stateOn: this.stateOn, stateOff: this.stateOff, title: this.getTitle(i) }, states[i]);\r\n }\r\n return states;\r\n };\r\n\r\n this.getTitle = function(index) {\r\n if (index >= this.titles.length) {\r\n return index + 1;\r\n }\r\n\r\n return this.titles[index];\r\n };\r\n\r\n $scope.rate = function(value) {\r\n if (!$scope.readonly && value >= 0 && value <= $scope.range.length) {\r\n var newViewValue = self.enableReset && ngModelCtrl.$viewValue === value ? 0 : value;\r\n ngModelCtrl.$setViewValue(newViewValue);\r\n ngModelCtrl.$render();\r\n }\r\n };\r\n\r\n $scope.enter = function(value) {\r\n if (!$scope.readonly) {\r\n $scope.value = value;\r\n }\r\n $scope.onHover({value: value});\r\n };\r\n\r\n $scope.reset = function() {\r\n $scope.value = ngModelCtrl.$viewValue;\r\n $scope.onLeave();\r\n };\r\n\r\n $scope.onKeydown = function(evt) {\r\n if (/(37|38|39|40)/.test(evt.which)) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $scope.rate($scope.value + (evt.which === 38 || evt.which === 39 ? 1 : -1));\r\n }\r\n };\r\n\r\n this.render = function() {\r\n $scope.value = ngModelCtrl.$viewValue;\r\n $scope.title = self.getTitle($scope.value - 1);\r\n };\r\n}])\r\n\r\n.directive('uibRating', function() {\r\n return {\r\n require: ['uibRating', 'ngModel'],\r\n restrict: 'A',\r\n scope: {\r\n readonly: '=?readOnly',\r\n onHover: '&',\r\n onLeave: '&'\r\n },\r\n controller: 'UibRatingController',\r\n templateUrl: 'uib/template/rating/rating.html',\r\n link: function(scope, element, attrs, ctrls) {\r\n var ratingCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n ratingCtrl.init(ngModelCtrl);\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.tabs', [])\r\n\r\n.controller('UibTabsetController', ['$scope', function ($scope) {\r\n var ctrl = this,\r\n oldIndex;\r\n ctrl.tabs = [];\r\n\r\n ctrl.select = function(index, evt) {\r\n if (!destroyed) {\r\n var previousIndex = findTabIndex(oldIndex);\r\n var previousSelected = ctrl.tabs[previousIndex];\r\n if (previousSelected) {\r\n previousSelected.tab.onDeselect({\r\n $event: evt,\r\n $selectedIndex: index\r\n });\r\n if (evt && evt.isDefaultPrevented()) {\r\n return;\r\n }\r\n previousSelected.tab.active = false;\r\n }\r\n\r\n var selected = ctrl.tabs[index];\r\n if (selected) {\r\n selected.tab.onSelect({\r\n $event: evt\r\n });\r\n selected.tab.active = true;\r\n ctrl.active = selected.index;\r\n oldIndex = selected.index;\r\n } else if (!selected && angular.isDefined(oldIndex)) {\r\n ctrl.active = null;\r\n oldIndex = null;\r\n }\r\n }\r\n };\r\n\r\n ctrl.addTab = function addTab(tab) {\r\n ctrl.tabs.push({\r\n tab: tab,\r\n index: tab.index\r\n });\r\n ctrl.tabs.sort(function(t1, t2) {\r\n if (t1.index > t2.index) {\r\n return 1;\r\n }\r\n\r\n if (t1.index < t2.index) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n if (tab.index === ctrl.active || !angular.isDefined(ctrl.active) && ctrl.tabs.length === 1) {\r\n var newActiveIndex = findTabIndex(tab.index);\r\n ctrl.select(newActiveIndex);\r\n }\r\n };\r\n\r\n ctrl.removeTab = function removeTab(tab) {\r\n var index;\r\n for (var i = 0; i < ctrl.tabs.length; i++) {\r\n if (ctrl.tabs[i].tab === tab) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n if (ctrl.tabs[index].index === ctrl.active) {\r\n var newActiveTabIndex = index === ctrl.tabs.length - 1 ?\r\n index - 1 : index + 1 % ctrl.tabs.length;\r\n ctrl.select(newActiveTabIndex);\r\n }\r\n\r\n ctrl.tabs.splice(index, 1);\r\n };\r\n\r\n $scope.$watch('tabset.active', function(val) {\r\n if (angular.isDefined(val) && val !== oldIndex) {\r\n ctrl.select(findTabIndex(val));\r\n }\r\n });\r\n\r\n var destroyed;\r\n $scope.$on('$destroy', function() {\r\n destroyed = true;\r\n });\r\n\r\n function findTabIndex(index) {\r\n for (var i = 0; i < ctrl.tabs.length; i++) {\r\n if (ctrl.tabs[i].index === index) {\r\n return i;\r\n }\r\n }\r\n }\r\n}])\r\n\r\n.directive('uibTabset', function() {\r\n return {\r\n transclude: true,\r\n replace: true,\r\n scope: {},\r\n bindToController: {\r\n active: '=?',\r\n type: '@'\r\n },\r\n controller: 'UibTabsetController',\r\n controllerAs: 'tabset',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/tabs/tabset.html';\r\n },\r\n link: function(scope, element, attrs) {\r\n scope.vertical = angular.isDefined(attrs.vertical) ?\r\n scope.$parent.$eval(attrs.vertical) : false;\r\n scope.justified = angular.isDefined(attrs.justified) ?\r\n scope.$parent.$eval(attrs.justified) : false;\r\n }\r\n };\r\n})\r\n\r\n.directive('uibTab', ['$parse', function($parse) {\r\n return {\r\n require: '^uibTabset',\r\n replace: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/tabs/tab.html';\r\n },\r\n transclude: true,\r\n scope: {\r\n heading: '@',\r\n index: '=?',\r\n classes: '@?',\r\n onSelect: '&select', //This callback is called in contentHeadingTransclude\r\n //once it inserts the tab's content into the dom\r\n onDeselect: '&deselect'\r\n },\r\n controller: function() {\r\n //Empty controller so other directives can require being 'under' a tab\r\n },\r\n controllerAs: 'tab',\r\n link: function(scope, elm, attrs, tabsetCtrl, transclude) {\r\n scope.disabled = false;\r\n if (attrs.disable) {\r\n scope.$parent.$watch($parse(attrs.disable), function(value) {\r\n scope.disabled = !! value;\r\n });\r\n }\r\n\r\n if (angular.isUndefined(attrs.index)) {\r\n if (tabsetCtrl.tabs && tabsetCtrl.tabs.length) {\r\n scope.index = Math.max.apply(null, tabsetCtrl.tabs.map(function(t) { return t.index; })) + 1;\r\n } else {\r\n scope.index = 0;\r\n }\r\n }\r\n\r\n if (angular.isUndefined(attrs.classes)) {\r\n scope.classes = '';\r\n }\r\n\r\n scope.select = function(evt) {\r\n if (!scope.disabled) {\r\n var index;\r\n for (var i = 0; i < tabsetCtrl.tabs.length; i++) {\r\n if (tabsetCtrl.tabs[i].tab === scope) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n tabsetCtrl.select(index, evt);\r\n }\r\n };\r\n\r\n tabsetCtrl.addTab(scope);\r\n scope.$on('$destroy', function() {\r\n tabsetCtrl.removeTab(scope);\r\n });\r\n\r\n //We need to transclude later, once the content container is ready.\r\n //when this link happens, we're inside a tab heading.\r\n scope.$transcludeFn = transclude;\r\n }\r\n };\r\n}])\r\n\r\n.directive('uibTabHeadingTransclude', function() {\r\n return {\r\n restrict: 'A',\r\n require: '^uibTab',\r\n link: function(scope, elm) {\r\n scope.$watch('headingElement', function updateHeadingElement(heading) {\r\n if (heading) {\r\n elm.html('');\r\n elm.append(heading);\r\n }\r\n });\r\n }\r\n };\r\n})\r\n\r\n.directive('uibTabContentTransclude', function() {\r\n return {\r\n restrict: 'A',\r\n require: '^uibTabset',\r\n link: function(scope, elm, attrs) {\r\n var tab = scope.$eval(attrs.uibTabContentTransclude).tab;\r\n\r\n //Now our tab is ready to be transcluded: both the tab heading area\r\n //and the tab content area are loaded. Transclude 'em both.\r\n tab.$transcludeFn(tab.$parent, function(contents) {\r\n angular.forEach(contents, function(node) {\r\n if (isTabHeading(node)) {\r\n //Let tabHeadingTransclude know.\r\n tab.headingElement = node;\r\n } else {\r\n elm.append(node);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n function isTabHeading(node) {\r\n return node.tagName && (\r\n node.hasAttribute('uib-tab-heading') ||\r\n node.hasAttribute('data-uib-tab-heading') ||\r\n node.hasAttribute('x-uib-tab-heading') ||\r\n node.tagName.toLowerCase() === 'uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'data-uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'x-uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'uib:tab-heading'\r\n );\r\n }\r\n});\r\n\r\nangular.module('ui.bootstrap.timepicker', [])\r\n\r\n.constant('uibTimepickerConfig', {\r\n hourStep: 1,\r\n minuteStep: 1,\r\n secondStep: 1,\r\n showMeridian: true,\r\n showSeconds: false,\r\n meridians: null,\r\n readonlyInput: false,\r\n mousewheel: true,\r\n arrowkeys: true,\r\n showSpinners: true,\r\n templateUrl: 'uib/template/timepicker/timepicker.html'\r\n})\r\n\r\n.controller('UibTimepickerController', ['$scope', '$element', '$attrs', '$parse', '$log', '$locale', 'uibTimepickerConfig', function($scope, $element, $attrs, $parse, $log, $locale, timepickerConfig) {\r\n var hoursModelCtrl, minutesModelCtrl, secondsModelCtrl;\r\n var selected = new Date(),\r\n watchers = [],\r\n ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl\r\n meridians = angular.isDefined($attrs.meridians) ? $scope.$parent.$eval($attrs.meridians) : timepickerConfig.meridians || $locale.DATETIME_FORMATS.AMPMS,\r\n padHours = angular.isDefined($attrs.padHours) ? $scope.$parent.$eval($attrs.padHours) : true;\r\n\r\n $scope.tabindex = angular.isDefined($attrs.tabindex) ? $attrs.tabindex : 0;\r\n $element.removeAttr('tabindex');\r\n\r\n this.init = function(ngModelCtrl_, inputs) {\r\n ngModelCtrl = ngModelCtrl_;\r\n ngModelCtrl.$render = this.render;\r\n\r\n ngModelCtrl.$formatters.unshift(function(modelValue) {\r\n return modelValue ? new Date(modelValue) : null;\r\n });\r\n\r\n var hoursInputEl = inputs.eq(0),\r\n minutesInputEl = inputs.eq(1),\r\n secondsInputEl = inputs.eq(2);\r\n\r\n hoursModelCtrl = hoursInputEl.controller('ngModel');\r\n minutesModelCtrl = minutesInputEl.controller('ngModel');\r\n secondsModelCtrl = secondsInputEl.controller('ngModel');\r\n\r\n var mousewheel = angular.isDefined($attrs.mousewheel) ? $scope.$parent.$eval($attrs.mousewheel) : timepickerConfig.mousewheel;\r\n\r\n if (mousewheel) {\r\n this.setupMousewheelEvents(hoursInputEl, minutesInputEl, secondsInputEl);\r\n }\r\n\r\n var arrowkeys = angular.isDefined($attrs.arrowkeys) ? $scope.$parent.$eval($attrs.arrowkeys) : timepickerConfig.arrowkeys;\r\n if (arrowkeys) {\r\n this.setupArrowkeyEvents(hoursInputEl, minutesInputEl, secondsInputEl);\r\n }\r\n\r\n $scope.readonlyInput = angular.isDefined($attrs.readonlyInput) ? $scope.$parent.$eval($attrs.readonlyInput) : timepickerConfig.readonlyInput;\r\n this.setupInputEvents(hoursInputEl, minutesInputEl, secondsInputEl);\r\n };\r\n\r\n var hourStep = timepickerConfig.hourStep;\r\n if ($attrs.hourStep) {\r\n watchers.push($scope.$parent.$watch($parse($attrs.hourStep), function(value) {\r\n hourStep = +value;\r\n }));\r\n }\r\n\r\n var minuteStep = timepickerConfig.minuteStep;\r\n if ($attrs.minuteStep) {\r\n watchers.push($scope.$parent.$watch($parse($attrs.minuteStep), function(value) {\r\n minuteStep = +value;\r\n }));\r\n }\r\n\r\n var min;\r\n watchers.push($scope.$parent.$watch($parse($attrs.min), function(value) {\r\n var dt = new Date(value);\r\n min = isNaN(dt) ? undefined : dt;\r\n }));\r\n\r\n var max;\r\n watchers.push($scope.$parent.$watch($parse($attrs.max), function(value) {\r\n var dt = new Date(value);\r\n max = isNaN(dt) ? undefined : dt;\r\n }));\r\n\r\n var disabled = false;\r\n if ($attrs.ngDisabled) {\r\n watchers.push($scope.$parent.$watch($parse($attrs.ngDisabled), function(value) {\r\n disabled = value;\r\n }));\r\n }\r\n\r\n $scope.noIncrementHours = function() {\r\n var incrementedSelected = addMinutes(selected, hourStep * 60);\r\n return disabled || incrementedSelected > max ||\r\n incrementedSelected < selected && incrementedSelected < min;\r\n };\r\n\r\n $scope.noDecrementHours = function() {\r\n var decrementedSelected = addMinutes(selected, -hourStep * 60);\r\n return disabled || decrementedSelected < min ||\r\n decrementedSelected > selected && decrementedSelected > max;\r\n };\r\n\r\n $scope.noIncrementMinutes = function() {\r\n var incrementedSelected = addMinutes(selected, minuteStep);\r\n return disabled || incrementedSelected > max ||\r\n incrementedSelected < selected && incrementedSelected < min;\r\n };\r\n\r\n $scope.noDecrementMinutes = function() {\r\n var decrementedSelected = addMinutes(selected, -minuteStep);\r\n return disabled || decrementedSelected < min ||\r\n decrementedSelected > selected && decrementedSelected > max;\r\n };\r\n\r\n $scope.noIncrementSeconds = function() {\r\n var incrementedSelected = addSeconds(selected, secondStep);\r\n return disabled || incrementedSelected > max ||\r\n incrementedSelected < selected && incrementedSelected < min;\r\n };\r\n\r\n $scope.noDecrementSeconds = function() {\r\n var decrementedSelected = addSeconds(selected, -secondStep);\r\n return disabled || decrementedSelected < min ||\r\n decrementedSelected > selected && decrementedSelected > max;\r\n };\r\n\r\n $scope.noToggleMeridian = function() {\r\n if (selected.getHours() < 12) {\r\n return disabled || addMinutes(selected, 12 * 60) > max;\r\n }\r\n\r\n return disabled || addMinutes(selected, -12 * 60) < min;\r\n };\r\n\r\n var secondStep = timepickerConfig.secondStep;\r\n if ($attrs.secondStep) {\r\n watchers.push($scope.$parent.$watch($parse($attrs.secondStep), function(value) {\r\n secondStep = +value;\r\n }));\r\n }\r\n\r\n $scope.showSeconds = timepickerConfig.showSeconds;\r\n if ($attrs.showSeconds) {\r\n watchers.push($scope.$parent.$watch($parse($attrs.showSeconds), function(value) {\r\n $scope.showSeconds = !!value;\r\n }));\r\n }\r\n\r\n // 12H / 24H mode\r\n $scope.showMeridian = timepickerConfig.showMeridian;\r\n if ($attrs.showMeridian) {\r\n watchers.push($scope.$parent.$watch($parse($attrs.showMeridian), function(value) {\r\n $scope.showMeridian = !!value;\r\n\r\n if (ngModelCtrl.$error.time) {\r\n // Evaluate from template\r\n var hours = getHoursFromTemplate(), minutes = getMinutesFromTemplate();\r\n if (angular.isDefined(hours) && angular.isDefined(minutes)) {\r\n selected.setHours(hours);\r\n refresh();\r\n }\r\n } else {\r\n updateTemplate();\r\n }\r\n }));\r\n }\r\n\r\n // Get $scope.hours in 24H mode if valid\r\n function getHoursFromTemplate() {\r\n var hours = +$scope.hours;\r\n var valid = $scope.showMeridian ? hours > 0 && hours < 13 :\r\n hours >= 0 && hours < 24;\r\n if (!valid || $scope.hours === '') {\r\n return undefined;\r\n }\r\n\r\n if ($scope.showMeridian) {\r\n if (hours === 12) {\r\n hours = 0;\r\n }\r\n if ($scope.meridian === meridians[1]) {\r\n hours = hours + 12;\r\n }\r\n }\r\n return hours;\r\n }\r\n\r\n function getMinutesFromTemplate() {\r\n var minutes = +$scope.minutes;\r\n var valid = minutes >= 0 && minutes < 60;\r\n if (!valid || $scope.minutes === '') {\r\n return undefined;\r\n }\r\n return minutes;\r\n }\r\n\r\n function getSecondsFromTemplate() {\r\n var seconds = +$scope.seconds;\r\n return seconds >= 0 && seconds < 60 ? seconds : undefined;\r\n }\r\n\r\n function pad(value, noPad) {\r\n if (value === null) {\r\n return '';\r\n }\r\n\r\n return angular.isDefined(value) && value.toString().length < 2 && !noPad ?\r\n '0' + value : value.toString();\r\n }\r\n\r\n // Respond on mousewheel spin\r\n this.setupMousewheelEvents = function(hoursInputEl, minutesInputEl, secondsInputEl) {\r\n var isScrollingUp = function(e) {\r\n if (e.originalEvent) {\r\n e = e.originalEvent;\r\n }\r\n //pick correct delta variable depending on event\r\n var delta = e.wheelDelta ? e.wheelDelta : -e.deltaY;\r\n return e.detail || delta > 0;\r\n };\r\n\r\n hoursInputEl.on('mousewheel wheel', function(e) {\r\n if (!disabled) {\r\n $scope.$apply(isScrollingUp(e) ? $scope.incrementHours() : $scope.decrementHours());\r\n }\r\n e.preventDefault();\r\n });\r\n\r\n minutesInputEl.on('mousewheel wheel', function(e) {\r\n if (!disabled) {\r\n $scope.$apply(isScrollingUp(e) ? $scope.incrementMinutes() : $scope.decrementMinutes());\r\n }\r\n e.preventDefault();\r\n });\r\n\r\n secondsInputEl.on('mousewheel wheel', function(e) {\r\n if (!disabled) {\r\n $scope.$apply(isScrollingUp(e) ? $scope.incrementSeconds() : $scope.decrementSeconds());\r\n }\r\n e.preventDefault();\r\n });\r\n };\r\n\r\n // Respond on up/down arrowkeys\r\n this.setupArrowkeyEvents = function(hoursInputEl, minutesInputEl, secondsInputEl) {\r\n hoursInputEl.on('keydown', function(e) {\r\n if (!disabled) {\r\n if (e.which === 38) { // up\r\n e.preventDefault();\r\n $scope.incrementHours();\r\n $scope.$apply();\r\n } else if (e.which === 40) { // down\r\n e.preventDefault();\r\n $scope.decrementHours();\r\n $scope.$apply();\r\n }\r\n }\r\n });\r\n\r\n minutesInputEl.on('keydown', function(e) {\r\n if (!disabled) {\r\n if (e.which === 38) { // up\r\n e.preventDefault();\r\n $scope.incrementMinutes();\r\n $scope.$apply();\r\n } else if (e.which === 40) { // down\r\n e.preventDefault();\r\n $scope.decrementMinutes();\r\n $scope.$apply();\r\n }\r\n }\r\n });\r\n\r\n secondsInputEl.on('keydown', function(e) {\r\n if (!disabled) {\r\n if (e.which === 38) { // up\r\n e.preventDefault();\r\n $scope.incrementSeconds();\r\n $scope.$apply();\r\n } else if (e.which === 40) { // down\r\n e.preventDefault();\r\n $scope.decrementSeconds();\r\n $scope.$apply();\r\n }\r\n }\r\n });\r\n };\r\n\r\n this.setupInputEvents = function(hoursInputEl, minutesInputEl, secondsInputEl) {\r\n if ($scope.readonlyInput) {\r\n $scope.updateHours = angular.noop;\r\n $scope.updateMinutes = angular.noop;\r\n $scope.updateSeconds = angular.noop;\r\n return;\r\n }\r\n\r\n var invalidate = function(invalidHours, invalidMinutes, invalidSeconds) {\r\n ngModelCtrl.$setViewValue(null);\r\n ngModelCtrl.$setValidity('time', false);\r\n if (angular.isDefined(invalidHours)) {\r\n $scope.invalidHours = invalidHours;\r\n if (hoursModelCtrl) {\r\n hoursModelCtrl.$setValidity('hours', false);\r\n }\r\n }\r\n\r\n if (angular.isDefined(invalidMinutes)) {\r\n $scope.invalidMinutes = invalidMinutes;\r\n if (minutesModelCtrl) {\r\n minutesModelCtrl.$setValidity('minutes', false);\r\n }\r\n }\r\n\r\n if (angular.isDefined(invalidSeconds)) {\r\n $scope.invalidSeconds = invalidSeconds;\r\n if (secondsModelCtrl) {\r\n secondsModelCtrl.$setValidity('seconds', false);\r\n }\r\n }\r\n };\r\n\r\n $scope.updateHours = function() {\r\n var hours = getHoursFromTemplate(),\r\n minutes = getMinutesFromTemplate();\r\n\r\n ngModelCtrl.$setDirty();\r\n\r\n if (angular.isDefined(hours) && angular.isDefined(minutes)) {\r\n selected.setHours(hours);\r\n selected.setMinutes(minutes);\r\n if (selected < min || selected > max) {\r\n invalidate(true);\r\n } else {\r\n refresh('h');\r\n }\r\n } else {\r\n invalidate(true);\r\n }\r\n };\r\n\r\n hoursInputEl.on('blur', function(e) {\r\n ngModelCtrl.$setTouched();\r\n if (modelIsEmpty()) {\r\n makeValid();\r\n } else if ($scope.hours === null || $scope.hours === '') {\r\n invalidate(true);\r\n } else if (!$scope.invalidHours && $scope.hours < 10) {\r\n $scope.$apply(function() {\r\n $scope.hours = pad($scope.hours, !padHours);\r\n });\r\n }\r\n });\r\n\r\n $scope.updateMinutes = function() {\r\n var minutes = getMinutesFromTemplate(),\r\n hours = getHoursFromTemplate();\r\n\r\n ngModelCtrl.$setDirty();\r\n\r\n if (angular.isDefined(minutes) && angular.isDefined(hours)) {\r\n selected.setHours(hours);\r\n selected.setMinutes(minutes);\r\n if (selected < min || selected > max) {\r\n invalidate(undefined, true);\r\n } else {\r\n refresh('m');\r\n }\r\n } else {\r\n invalidate(undefined, true);\r\n }\r\n };\r\n\r\n minutesInputEl.on('blur', function(e) {\r\n ngModelCtrl.$setTouched();\r\n if (modelIsEmpty()) {\r\n makeValid();\r\n } else if ($scope.minutes === null) {\r\n invalidate(undefined, true);\r\n } else if (!$scope.invalidMinutes && $scope.minutes < 10) {\r\n $scope.$apply(function() {\r\n $scope.minutes = pad($scope.minutes);\r\n });\r\n }\r\n });\r\n\r\n $scope.updateSeconds = function() {\r\n var seconds = getSecondsFromTemplate();\r\n\r\n ngModelCtrl.$setDirty();\r\n\r\n if (angular.isDefined(seconds)) {\r\n selected.setSeconds(seconds);\r\n refresh('s');\r\n } else {\r\n invalidate(undefined, undefined, true);\r\n }\r\n };\r\n\r\n secondsInputEl.on('blur', function(e) {\r\n if (modelIsEmpty()) {\r\n makeValid();\r\n } else if (!$scope.invalidSeconds && $scope.seconds < 10) {\r\n $scope.$apply( function() {\r\n $scope.seconds = pad($scope.seconds);\r\n });\r\n }\r\n });\r\n\r\n };\r\n\r\n this.render = function() {\r\n var date = ngModelCtrl.$viewValue;\r\n\r\n if (isNaN(date)) {\r\n ngModelCtrl.$setValidity('time', false);\r\n $log.error('Timepicker directive: \"ng-model\" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.');\r\n } else {\r\n if (date) {\r\n selected = date;\r\n }\r\n\r\n if (selected < min || selected > max) {\r\n ngModelCtrl.$setValidity('time', false);\r\n $scope.invalidHours = true;\r\n $scope.invalidMinutes = true;\r\n } else {\r\n makeValid();\r\n }\r\n updateTemplate();\r\n }\r\n };\r\n\r\n // Call internally when we know that model is valid.\r\n function refresh(keyboardChange) {\r\n makeValid();\r\n ngModelCtrl.$setViewValue(new Date(selected));\r\n updateTemplate(keyboardChange);\r\n }\r\n\r\n function makeValid() {\r\n if (hoursModelCtrl) {\r\n hoursModelCtrl.$setValidity('hours', true);\r\n }\r\n\r\n if (minutesModelCtrl) {\r\n minutesModelCtrl.$setValidity('minutes', true);\r\n }\r\n\r\n if (secondsModelCtrl) {\r\n secondsModelCtrl.$setValidity('seconds', true);\r\n }\r\n\r\n ngModelCtrl.$setValidity('time', true);\r\n $scope.invalidHours = false;\r\n $scope.invalidMinutes = false;\r\n $scope.invalidSeconds = false;\r\n }\r\n\r\n function updateTemplate(keyboardChange) {\r\n if (!ngModelCtrl.$modelValue) {\r\n $scope.hours = null;\r\n $scope.minutes = null;\r\n $scope.seconds = null;\r\n $scope.meridian = meridians[0];\r\n } else {\r\n var hours = selected.getHours(),\r\n minutes = selected.getMinutes(),\r\n seconds = selected.getSeconds();\r\n\r\n if ($scope.showMeridian) {\r\n hours = hours === 0 || hours === 12 ? 12 : hours % 12; // Convert 24 to 12 hour system\r\n }\r\n\r\n $scope.hours = keyboardChange === 'h' ? hours : pad(hours, !padHours);\r\n if (keyboardChange !== 'm') {\r\n $scope.minutes = pad(minutes);\r\n }\r\n $scope.meridian = selected.getHours() < 12 ? meridians[0] : meridians[1];\r\n\r\n if (keyboardChange !== 's') {\r\n $scope.seconds = pad(seconds);\r\n }\r\n $scope.meridian = selected.getHours() < 12 ? meridians[0] : meridians[1];\r\n }\r\n }\r\n\r\n function addSecondsToSelected(seconds) {\r\n selected = addSeconds(selected, seconds);\r\n refresh();\r\n }\r\n\r\n function addMinutes(selected, minutes) {\r\n return addSeconds(selected, minutes*60);\r\n }\r\n\r\n function addSeconds(date, seconds) {\r\n var dt = new Date(date.getTime() + seconds * 1000);\r\n var newDate = new Date(date);\r\n newDate.setHours(dt.getHours(), dt.getMinutes(), dt.getSeconds());\r\n return newDate;\r\n }\r\n\r\n function modelIsEmpty() {\r\n return ($scope.hours === null || $scope.hours === '') &&\r\n ($scope.minutes === null || $scope.minutes === '') &&\r\n (!$scope.showSeconds || $scope.showSeconds && ($scope.seconds === null || $scope.seconds === ''));\r\n }\r\n\r\n $scope.showSpinners = angular.isDefined($attrs.showSpinners) ?\r\n $scope.$parent.$eval($attrs.showSpinners) : timepickerConfig.showSpinners;\r\n\r\n $scope.incrementHours = function() {\r\n if (!$scope.noIncrementHours()) {\r\n addSecondsToSelected(hourStep * 60 * 60);\r\n }\r\n };\r\n\r\n $scope.decrementHours = function() {\r\n if (!$scope.noDecrementHours()) {\r\n addSecondsToSelected(-hourStep * 60 * 60);\r\n }\r\n };\r\n\r\n $scope.incrementMinutes = function() {\r\n if (!$scope.noIncrementMinutes()) {\r\n addSecondsToSelected(minuteStep * 60);\r\n }\r\n };\r\n\r\n $scope.decrementMinutes = function() {\r\n if (!$scope.noDecrementMinutes()) {\r\n addSecondsToSelected(-minuteStep * 60);\r\n }\r\n };\r\n\r\n $scope.incrementSeconds = function() {\r\n if (!$scope.noIncrementSeconds()) {\r\n addSecondsToSelected(secondStep);\r\n }\r\n };\r\n\r\n $scope.decrementSeconds = function() {\r\n if (!$scope.noDecrementSeconds()) {\r\n addSecondsToSelected(-secondStep);\r\n }\r\n };\r\n\r\n $scope.toggleMeridian = function() {\r\n var minutes = getMinutesFromTemplate(),\r\n hours = getHoursFromTemplate();\r\n\r\n if (!$scope.noToggleMeridian()) {\r\n if (angular.isDefined(minutes) && angular.isDefined(hours)) {\r\n addSecondsToSelected(12 * 60 * (selected.getHours() < 12 ? 60 : -60));\r\n } else {\r\n $scope.meridian = $scope.meridian === meridians[0] ? meridians[1] : meridians[0];\r\n }\r\n }\r\n };\r\n\r\n $scope.blur = function() {\r\n ngModelCtrl.$setTouched();\r\n };\r\n\r\n $scope.$on('$destroy', function() {\r\n while (watchers.length) {\r\n watchers.shift()();\r\n }\r\n });\r\n}])\r\n\r\n.directive('uibTimepicker', ['uibTimepickerConfig', function(uibTimepickerConfig) {\r\n return {\r\n require: ['uibTimepicker', '?^ngModel'],\r\n restrict: 'A',\r\n controller: 'UibTimepickerController',\r\n controllerAs: 'timepicker',\r\n scope: {},\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || uibTimepickerConfig.templateUrl;\r\n },\r\n link: function(scope, element, attrs, ctrls) {\r\n var timepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n if (ngModelCtrl) {\r\n timepickerCtrl.init(ngModelCtrl, element.find('input'));\r\n }\r\n }\r\n };\r\n}]);\r\n\r\nangular.module('ui.bootstrap.typeahead', ['ui.bootstrap.debounce', 'ui.bootstrap.position'])\r\n\r\n/**\r\n * A helper service that can parse typeahead's syntax (string provided by users)\r\n * Extracted to a separate service for ease of unit testing\r\n */\r\n .factory('uibTypeaheadParser', ['$parse', function($parse) {\r\n // 000001111111100000000000002222222200000000000000003333333333333330000000000044444444000\r\n var TYPEAHEAD_REGEXP = /^\\s*([\\s\\S]+?)(?:\\s+as\\s+([\\s\\S]+?))?\\s+for\\s+(?:([\\$\\w][\\$\\w\\d]*))\\s+in\\s+([\\s\\S]+?)$/;\r\n return {\r\n parse: function(input) {\r\n var match = input.match(TYPEAHEAD_REGEXP);\r\n if (!match) {\r\n throw new Error(\r\n 'Expected typeahead specification in form of \"_modelValue_ (as _label_)? for _item_ in _collection_\"' +\r\n ' but got \"' + input + '\".');\r\n }\r\n\r\n return {\r\n itemName: match[3],\r\n source: $parse(match[4]),\r\n viewMapper: $parse(match[2] || match[1]),\r\n modelMapper: $parse(match[1])\r\n };\r\n }\r\n };\r\n }])\r\n\r\n .controller('UibTypeaheadController', ['$scope', '$element', '$attrs', '$compile', '$parse', '$q', '$timeout', '$document', '$window', '$rootScope', '$$debounce', '$uibPosition', 'uibTypeaheadParser',\r\n function(originalScope, element, attrs, $compile, $parse, $q, $timeout, $document, $window, $rootScope, $$debounce, $position, typeaheadParser) {\r\n var HOT_KEYS = [9, 13, 27, 38, 40];\r\n var eventDebounceTime = 200;\r\n var modelCtrl, ngModelOptions;\r\n //SUPPORTED ATTRIBUTES (OPTIONS)\r\n\r\n //minimal no of characters that needs to be entered before typeahead kicks-in\r\n var minLength = originalScope.$eval(attrs.typeaheadMinLength);\r\n if (!minLength && minLength !== 0) {\r\n minLength = 1;\r\n }\r\n\r\n originalScope.$watch(attrs.typeaheadMinLength, function (newVal) {\r\n minLength = !newVal && newVal !== 0 ? 1 : newVal;\r\n });\r\n\r\n //minimal wait time after last character typed before typeahead kicks-in\r\n var waitTime = originalScope.$eval(attrs.typeaheadWaitMs) || 0;\r\n\r\n //should it restrict model values to the ones selected from the popup only?\r\n var isEditable = originalScope.$eval(attrs.typeaheadEditable) !== false;\r\n originalScope.$watch(attrs.typeaheadEditable, function (newVal) {\r\n isEditable = newVal !== false;\r\n });\r\n\r\n //binding to a variable that indicates if matches are being retrieved asynchronously\r\n var isLoadingSetter = $parse(attrs.typeaheadLoading).assign || angular.noop;\r\n\r\n //a function to determine if an event should cause selection\r\n var isSelectEvent = attrs.typeaheadShouldSelect ? $parse(attrs.typeaheadShouldSelect) : function(scope, vals) {\r\n var evt = vals.$event;\r\n return evt.which === 13 || evt.which === 9;\r\n };\r\n\r\n //a callback executed when a match is selected\r\n var onSelectCallback = $parse(attrs.typeaheadOnSelect);\r\n\r\n //should it select highlighted popup value when losing focus?\r\n var isSelectOnBlur = angular.isDefined(attrs.typeaheadSelectOnBlur) ? originalScope.$eval(attrs.typeaheadSelectOnBlur) : false;\r\n\r\n //binding to a variable that indicates if there were no results after the query is completed\r\n var isNoResultsSetter = $parse(attrs.typeaheadNoResults).assign || angular.noop;\r\n\r\n var inputFormatter = attrs.typeaheadInputFormatter ? $parse(attrs.typeaheadInputFormatter) : undefined;\r\n\r\n var appendToBody = attrs.typeaheadAppendToBody ? originalScope.$eval(attrs.typeaheadAppendToBody) : false;\r\n\r\n var appendTo = attrs.typeaheadAppendTo ?\r\n originalScope.$eval(attrs.typeaheadAppendTo) : null;\r\n\r\n var focusFirst = originalScope.$eval(attrs.typeaheadFocusFirst) !== false;\r\n\r\n //If input matches an item of the list exactly, select it automatically\r\n var selectOnExact = attrs.typeaheadSelectOnExact ? originalScope.$eval(attrs.typeaheadSelectOnExact) : false;\r\n\r\n //binding to a variable that indicates if dropdown is open\r\n var isOpenSetter = $parse(attrs.typeaheadIsOpen).assign || angular.noop;\r\n\r\n var showHint = originalScope.$eval(attrs.typeaheadShowHint) || false;\r\n\r\n //INTERNAL VARIABLES\r\n\r\n //model setter executed upon match selection\r\n var parsedModel = $parse(attrs.ngModel);\r\n var invokeModelSetter = $parse(attrs.ngModel + '($$$p)');\r\n var $setModelValue = function(scope, newValue) {\r\n if (angular.isFunction(parsedModel(originalScope)) &&\r\n ngModelOptions.getOption('getterSetter')) {\r\n return invokeModelSetter(scope, {$$$p: newValue});\r\n }\r\n\r\n return parsedModel.assign(scope, newValue);\r\n };\r\n\r\n //expressions used by typeahead\r\n var parserResult = typeaheadParser.parse(attrs.uibTypeahead);\r\n\r\n var hasFocus;\r\n\r\n //Used to avoid bug in iOS webview where iOS keyboard does not fire\r\n //mousedown & mouseup events\r\n //Issue #3699\r\n var selected;\r\n\r\n //create a child scope for the typeahead directive so we are not polluting original scope\r\n //with typeahead-specific data (matches, query etc.)\r\n var scope = originalScope.$new();\r\n var offDestroy = originalScope.$on('$destroy', function() {\r\n scope.$destroy();\r\n });\r\n scope.$on('$destroy', offDestroy);\r\n\r\n // WAI-ARIA\r\n var popupId = 'typeahead-' + scope.$id + '-' + Math.floor(Math.random() * 10000);\r\n element.attr({\r\n 'aria-autocomplete': 'list',\r\n 'aria-expanded': false,\r\n 'aria-owns': popupId\r\n });\r\n\r\n var inputsContainer, hintInputElem;\r\n //add read-only input to show hint\r\n if (showHint) {\r\n inputsContainer = angular.element('<div></div>');\r\n inputsContainer.css('position', 'relative');\r\n element.after(inputsContainer);\r\n hintInputElem = element.clone();\r\n hintInputElem.attr('placeholder', '');\r\n hintInputElem.attr('tabindex', '-1');\r\n hintInputElem.val('');\r\n hintInputElem.css({\r\n 'position': 'absolute',\r\n 'top': '0px',\r\n 'left': '0px',\r\n 'border-color': 'transparent',\r\n 'box-shadow': 'none',\r\n 'opacity': 1,\r\n 'background': 'none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)',\r\n 'color': '#999'\r\n });\r\n element.css({\r\n 'position': 'relative',\r\n 'vertical-align': 'top',\r\n 'background-color': 'transparent'\r\n });\r\n\r\n if (hintInputElem.attr('id')) {\r\n hintInputElem.removeAttr('id'); // remove duplicate id if present.\r\n }\r\n inputsContainer.append(hintInputElem);\r\n hintInputElem.after(element);\r\n }\r\n\r\n //pop-up element used to display matches\r\n var popUpEl = angular.element('<div uib-typeahead-popup></div>');\r\n popUpEl.attr({\r\n id: popupId,\r\n matches: 'matches',\r\n active: 'activeIdx',\r\n select: 'select(activeIdx, evt)',\r\n 'move-in-progress': 'moveInProgress',\r\n query: 'query',\r\n position: 'position',\r\n 'assign-is-open': 'assignIsOpen(isOpen)',\r\n debounce: 'debounceUpdate'\r\n });\r\n //custom item template\r\n if (angular.isDefined(attrs.typeaheadTemplateUrl)) {\r\n popUpEl.attr('template-url', attrs.typeaheadTemplateUrl);\r\n }\r\n\r\n if (angular.isDefined(attrs.typeaheadPopupTemplateUrl)) {\r\n popUpEl.attr('popup-template-url', attrs.typeaheadPopupTemplateUrl);\r\n }\r\n\r\n var resetHint = function() {\r\n if (showHint) {\r\n hintInputElem.val('');\r\n }\r\n };\r\n\r\n var resetMatches = function() {\r\n scope.matches = [];\r\n scope.activeIdx = -1;\r\n element.attr('aria-expanded', false);\r\n resetHint();\r\n };\r\n\r\n var getMatchId = function(index) {\r\n return popupId + '-option-' + index;\r\n };\r\n\r\n // Indicate that the specified match is the active (pre-selected) item in the list owned by this typeahead.\r\n // This attribute is added or removed automatically when the `activeIdx` changes.\r\n scope.$watch('activeIdx', function(index) {\r\n if (index < 0) {\r\n element.removeAttr('aria-activedescendant');\r\n } else {\r\n element.attr('aria-activedescendant', getMatchId(index));\r\n }\r\n });\r\n\r\n var inputIsExactMatch = function(inputValue, index) {\r\n if (scope.matches.length > index && inputValue) {\r\n return inputValue.toUpperCase() === scope.matches[index].label.toUpperCase();\r\n }\r\n\r\n return false;\r\n };\r\n\r\n var getMatchesAsync = function(inputValue, evt) {\r\n var locals = {$viewValue: inputValue};\r\n isLoadingSetter(originalScope, true);\r\n isNoResultsSetter(originalScope, false);\r\n $q.when(parserResult.source(originalScope, locals)).then(function(matches) {\r\n //it might happen that several async queries were in progress if a user were typing fast\r\n //but we are interested only in responses that correspond to the current view value\r\n var onCurrentRequest = inputValue === modelCtrl.$viewValue;\r\n if (onCurrentRequest && hasFocus) {\r\n if (matches && matches.length > 0) {\r\n scope.activeIdx = focusFirst ? 0 : -1;\r\n isNoResultsSetter(originalScope, false);\r\n scope.matches.length = 0;\r\n\r\n //transform labels\r\n for (var i = 0; i < matches.length; i++) {\r\n locals[parserResult.itemName] = matches[i];\r\n scope.matches.push({\r\n id: getMatchId(i),\r\n label: parserResult.viewMapper(scope, locals),\r\n model: matches[i]\r\n });\r\n }\r\n\r\n scope.query = inputValue;\r\n //position pop-up with matches - we need to re-calculate its position each time we are opening a window\r\n //with matches as a pop-up might be absolute-positioned and position of an input might have changed on a page\r\n //due to other elements being rendered\r\n recalculatePosition();\r\n\r\n element.attr('aria-expanded', true);\r\n\r\n //Select the single remaining option if user input matches\r\n if (selectOnExact && scope.matches.length === 1 && inputIsExactMatch(inputValue, 0)) {\r\n if (angular.isNumber(scope.debounceUpdate) || angular.isObject(scope.debounceUpdate)) {\r\n $$debounce(function() {\r\n scope.select(0, evt);\r\n }, angular.isNumber(scope.debounceUpdate) ? scope.debounceUpdate : scope.debounceUpdate['default']);\r\n } else {\r\n scope.select(0, evt);\r\n }\r\n }\r\n\r\n if (showHint) {\r\n var firstLabel = scope.matches[0].label;\r\n if (angular.isString(inputValue) &&\r\n inputValue.length > 0 &&\r\n firstLabel.slice(0, inputValue.length).toUpperCase() === inputValue.toUpperCase()) {\r\n hintInputElem.val(inputValue + firstLabel.slice(inputValue.length));\r\n } else {\r\n hintInputElem.val('');\r\n }\r\n }\r\n } else {\r\n resetMatches();\r\n isNoResultsSetter(originalScope, true);\r\n }\r\n }\r\n if (onCurrentRequest) {\r\n isLoadingSetter(originalScope, false);\r\n }\r\n }, function() {\r\n resetMatches();\r\n isLoadingSetter(originalScope, false);\r\n isNoResultsSetter(originalScope, true);\r\n });\r\n };\r\n\r\n // bind events only if appendToBody params exist - performance feature\r\n if (appendToBody) {\r\n angular.element($window).on('resize', fireRecalculating);\r\n $document.find('body').on('scroll', fireRecalculating);\r\n }\r\n\r\n // Declare the debounced function outside recalculating for\r\n // proper debouncing\r\n var debouncedRecalculate = $$debounce(function() {\r\n // if popup is visible\r\n if (scope.matches.length) {\r\n recalculatePosition();\r\n }\r\n\r\n scope.moveInProgress = false;\r\n }, eventDebounceTime);\r\n\r\n // Default progress type\r\n scope.moveInProgress = false;\r\n\r\n function fireRecalculating() {\r\n if (!scope.moveInProgress) {\r\n scope.moveInProgress = true;\r\n scope.$digest();\r\n }\r\n\r\n debouncedRecalculate();\r\n }\r\n\r\n // recalculate actual position and set new values to scope\r\n // after digest loop is popup in right position\r\n function recalculatePosition() {\r\n scope.position = appendToBody ? $position.offset(element) : $position.position(element);\r\n scope.position.top += element.prop('offsetHeight');\r\n }\r\n\r\n //we need to propagate user's query so we can higlight matches\r\n scope.query = undefined;\r\n\r\n //Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later\r\n var timeoutPromise;\r\n\r\n var scheduleSearchWithTimeout = function(inputValue) {\r\n timeoutPromise = $timeout(function() {\r\n getMatchesAsync(inputValue);\r\n }, waitTime);\r\n };\r\n\r\n var cancelPreviousTimeout = function() {\r\n if (timeoutPromise) {\r\n $timeout.cancel(timeoutPromise);\r\n }\r\n };\r\n\r\n resetMatches();\r\n\r\n scope.assignIsOpen = function (isOpen) {\r\n isOpenSetter(originalScope, isOpen);\r\n };\r\n\r\n scope.select = function(activeIdx, evt) {\r\n //called from within the $digest() cycle\r\n var locals = {};\r\n var model, item;\r\n\r\n selected = true;\r\n locals[parserResult.itemName] = item = scope.matches[activeIdx].model;\r\n model = parserResult.modelMapper(originalScope, locals);\r\n $setModelValue(originalScope, model);\r\n modelCtrl.$setValidity('editable', true);\r\n modelCtrl.$setValidity('parse', true);\r\n\r\n onSelectCallback(originalScope, {\r\n $item: item,\r\n $model: model,\r\n $label: parserResult.viewMapper(originalScope, locals),\r\n $event: evt\r\n });\r\n\r\n resetMatches();\r\n\r\n //return focus to the input element if a match was selected via a mouse click event\r\n // use timeout to avoid $rootScope:inprog error\r\n if (scope.$eval(attrs.typeaheadFocusOnSelect) !== false) {\r\n $timeout(function() { element[0].focus(); }, 0, false);\r\n }\r\n };\r\n\r\n //bind keyboard events: arrows up(38) / down(40), enter(13) and tab(9), esc(27)\r\n element.on('keydown', function(evt) {\r\n //typeahead is open and an \"interesting\" key was pressed\r\n if (scope.matches.length === 0 || HOT_KEYS.indexOf(evt.which) === -1) {\r\n return;\r\n }\r\n\r\n var shouldSelect = isSelectEvent(originalScope, {$event: evt});\r\n\r\n /**\r\n * if there's nothing selected (i.e. focusFirst) and enter or tab is hit\r\n * or\r\n * shift + tab is pressed to bring focus to the previous element\r\n * then clear the results\r\n */\r\n if (scope.activeIdx === -1 && shouldSelect || evt.which === 9 && !!evt.shiftKey) {\r\n resetMatches();\r\n scope.$digest();\r\n return;\r\n }\r\n\r\n evt.preventDefault();\r\n var target;\r\n switch (evt.which) {\r\n case 27: // escape\r\n evt.stopPropagation();\r\n\r\n resetMatches();\r\n originalScope.$digest();\r\n break;\r\n case 38: // up arrow\r\n scope.activeIdx = (scope.activeIdx > 0 ? scope.activeIdx : scope.matches.length) - 1;\r\n scope.$digest();\r\n target = popUpEl[0].querySelectorAll('.uib-typeahead-match')[scope.activeIdx];\r\n target.parentNode.scrollTop = target.offsetTop;\r\n break;\r\n case 40: // down arrow\r\n scope.activeIdx = (scope.activeIdx + 1) % scope.matches.length;\r\n scope.$digest();\r\n target = popUpEl[0].querySelectorAll('.uib-typeahead-match')[scope.activeIdx];\r\n target.parentNode.scrollTop = target.offsetTop;\r\n break;\r\n default:\r\n if (shouldSelect) {\r\n scope.$apply(function() {\r\n if (angular.isNumber(scope.debounceUpdate) || angular.isObject(scope.debounceUpdate)) {\r\n $$debounce(function() {\r\n scope.select(scope.activeIdx, evt);\r\n }, angular.isNumber(scope.debounceUpdate) ? scope.debounceUpdate : scope.debounceUpdate['default']);\r\n } else {\r\n scope.select(scope.activeIdx, evt);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n element.on('focus', function (evt) {\r\n hasFocus = true;\r\n if (minLength === 0 && !modelCtrl.$viewValue) {\r\n $timeout(function() {\r\n getMatchesAsync(modelCtrl.$viewValue, evt);\r\n }, 0);\r\n }\r\n });\r\n\r\n element.on('blur', function(evt) {\r\n if (isSelectOnBlur && scope.matches.length && scope.activeIdx !== -1 && !selected) {\r\n selected = true;\r\n scope.$apply(function() {\r\n if (angular.isObject(scope.debounceUpdate) && angular.isNumber(scope.debounceUpdate.blur)) {\r\n $$debounce(function() {\r\n scope.select(scope.activeIdx, evt);\r\n }, scope.debounceUpdate.blur);\r\n } else {\r\n scope.select(scope.activeIdx, evt);\r\n }\r\n });\r\n }\r\n if (!isEditable && modelCtrl.$error.editable) {\r\n modelCtrl.$setViewValue();\r\n scope.$apply(function() {\r\n // Reset validity as we are clearing\r\n modelCtrl.$setValidity('editable', true);\r\n modelCtrl.$setValidity('parse', true);\r\n });\r\n element.val('');\r\n }\r\n hasFocus = false;\r\n selected = false;\r\n });\r\n\r\n // Keep reference to click handler to unbind it.\r\n var dismissClickHandler = function(evt) {\r\n // Issue #3973\r\n // Firefox treats right click as a click on document\r\n if (element[0] !== evt.target && evt.which !== 3 && scope.matches.length !== 0) {\r\n resetMatches();\r\n if (!$rootScope.$$phase) {\r\n originalScope.$digest();\r\n }\r\n }\r\n };\r\n\r\n $document.on('click', dismissClickHandler);\r\n\r\n originalScope.$on('$destroy', function() {\r\n $document.off('click', dismissClickHandler);\r\n if (appendToBody || appendTo) {\r\n $popup.remove();\r\n }\r\n\r\n if (appendToBody) {\r\n angular.element($window).off('resize', fireRecalculating);\r\n $document.find('body').off('scroll', fireRecalculating);\r\n }\r\n // Prevent jQuery cache memory leak\r\n popUpEl.remove();\r\n\r\n if (showHint) {\r\n inputsContainer.remove();\r\n }\r\n });\r\n\r\n var $popup = $compile(popUpEl)(scope);\r\n\r\n if (appendToBody) {\r\n $document.find('body').append($popup);\r\n } else if (appendTo) {\r\n angular.element(appendTo).eq(0).append($popup);\r\n } else {\r\n element.after($popup);\r\n }\r\n\r\n this.init = function(_modelCtrl) {\r\n modelCtrl = _modelCtrl;\r\n ngModelOptions = extractOptions(modelCtrl);\r\n\r\n scope.debounceUpdate = $parse(ngModelOptions.getOption('debounce'))(originalScope);\r\n\r\n //plug into $parsers pipeline to open a typeahead on view changes initiated from DOM\r\n //$parsers kick-in on all the changes coming from the view as well as manually triggered by $setViewValue\r\n modelCtrl.$parsers.unshift(function(inputValue) {\r\n hasFocus = true;\r\n\r\n if (minLength === 0 || inputValue && inputValue.length >= minLength) {\r\n if (waitTime > 0) {\r\n cancelPreviousTimeout();\r\n scheduleSearchWithTimeout(inputValue);\r\n } else {\r\n getMatchesAsync(inputValue);\r\n }\r\n } else {\r\n isLoadingSetter(originalScope, false);\r\n cancelPreviousTimeout();\r\n resetMatches();\r\n }\r\n\r\n if (isEditable) {\r\n return inputValue;\r\n }\r\n\r\n if (!inputValue) {\r\n // Reset in case user had typed something previously.\r\n modelCtrl.$setValidity('editable', true);\r\n return null;\r\n }\r\n\r\n modelCtrl.$setValidity('editable', false);\r\n return undefined;\r\n });\r\n\r\n modelCtrl.$formatters.push(function(modelValue) {\r\n var candidateViewValue, emptyViewValue;\r\n var locals = {};\r\n\r\n // The validity may be set to false via $parsers (see above) if\r\n // the model is restricted to selected values. If the model\r\n // is set manually it is considered to be valid.\r\n if (!isEditable) {\r\n modelCtrl.$setValidity('editable', true);\r\n }\r\n\r\n if (inputFormatter) {\r\n locals.$model = modelValue;\r\n return inputFormatter(originalScope, locals);\r\n }\r\n\r\n //it might happen that we don't have enough info to properly render input value\r\n //we need to check for this situation and simply return model value if we can't apply custom formatting\r\n locals[parserResult.itemName] = modelValue;\r\n candidateViewValue = parserResult.viewMapper(originalScope, locals);\r\n locals[parserResult.itemName] = undefined;\r\n emptyViewValue = parserResult.viewMapper(originalScope, locals);\r\n\r\n return candidateViewValue !== emptyViewValue ? candidateViewValue : modelValue;\r\n });\r\n };\r\n\r\n function extractOptions(ngModelCtrl) {\r\n var ngModelOptions;\r\n\r\n if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing\r\n // guarantee a value\r\n ngModelOptions = ngModelCtrl.$options || {};\r\n\r\n // mimic 1.6+ api\r\n ngModelOptions.getOption = function (key) {\r\n return ngModelOptions[key];\r\n };\r\n } else { // in angular >=1.6 $options is always present\r\n ngModelOptions = ngModelCtrl.$options;\r\n }\r\n\r\n return ngModelOptions;\r\n }\r\n }])\r\n\r\n .directive('uibTypeahead', function() {\r\n return {\r\n controller: 'UibTypeaheadController',\r\n require: ['ngModel', 'uibTypeahead'],\r\n link: function(originalScope, element, attrs, ctrls) {\r\n ctrls[1].init(ctrls[0]);\r\n }\r\n };\r\n })\r\n\r\n .directive('uibTypeaheadPopup', ['$$debounce', function($$debounce) {\r\n return {\r\n scope: {\r\n matches: '=',\r\n query: '=',\r\n active: '=',\r\n position: '&',\r\n moveInProgress: '=',\r\n select: '&',\r\n assignIsOpen: '&',\r\n debounce: '&'\r\n },\r\n replace: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.popupTemplateUrl || 'uib/template/typeahead/typeahead-popup.html';\r\n },\r\n link: function(scope, element, attrs) {\r\n scope.templateUrl = attrs.templateUrl;\r\n\r\n scope.isOpen = function() {\r\n var isDropdownOpen = scope.matches.length > 0;\r\n scope.assignIsOpen({ isOpen: isDropdownOpen });\r\n return isDropdownOpen;\r\n };\r\n\r\n scope.isActive = function(matchIdx) {\r\n return scope.active === matchIdx;\r\n };\r\n\r\n scope.selectActive = function(matchIdx) {\r\n scope.active = matchIdx;\r\n };\r\n\r\n scope.selectMatch = function(activeIdx, evt) {\r\n var debounce = scope.debounce();\r\n if (angular.isNumber(debounce) || angular.isObject(debounce)) {\r\n $$debounce(function() {\r\n scope.select({activeIdx: activeIdx, evt: evt});\r\n }, angular.isNumber(debounce) ? debounce : debounce['default']);\r\n } else {\r\n scope.select({activeIdx: activeIdx, evt: evt});\r\n }\r\n };\r\n }\r\n };\r\n }])\r\n\r\n .directive('uibTypeaheadMatch', ['$templateRequest', '$compile', '$parse', function($templateRequest, $compile, $parse) {\r\n return {\r\n scope: {\r\n index: '=',\r\n match: '=',\r\n query: '='\r\n },\r\n link: function(scope, element, attrs) {\r\n var tplUrl = $parse(attrs.templateUrl)(scope.$parent) || 'uib/template/typeahead/typeahead-match.html';\r\n $templateRequest(tplUrl).then(function(tplContent) {\r\n var tplEl = angular.element(tplContent.trim());\r\n element.replaceWith(tplEl);\r\n $compile(tplEl)(scope);\r\n });\r\n }\r\n };\r\n }])\r\n\r\n .filter('uibTypeaheadHighlight', ['$sce', '$injector', '$log', function($sce, $injector, $log) {\r\n var isSanitizePresent;\r\n isSanitizePresent = $injector.has('$sanitize');\r\n\r\n function escapeRegexp(queryToEscape) {\r\n // Regex: capture the whole query string and replace it with the string that will be used to match\r\n // the results, for example if the capture is \"a\" the result will be \\a\r\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\r\n }\r\n\r\n function containsHtml(matchItem) {\r\n return /<.*>/g.test(matchItem);\r\n }\r\n\r\n return function(matchItem, query) {\r\n if (!isSanitizePresent && containsHtml(matchItem)) {\r\n $log.warn('Unsafe use of typeahead please use ngSanitize'); // Warn the user about the danger\r\n }\r\n matchItem = query ? ('' + matchItem).replace(new RegExp(escapeRegexp(query), 'gi'), '<strong>$&</strong>') : matchItem; // Replaces the capture string with a the same string inside of a \"strong\" tag\r\n if (!isSanitizePresent) {\r\n matchItem = $sce.trustAsHtml(matchItem); // If $sanitize is not present we pack the string in a $sce object for the ng-bind-html directive\r\n }\r\n return matchItem;\r\n };\r\n }]);\r\n\r\nangular.module(\"uib/template/accordion/accordion-group.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/accordion/accordion-group.html\",\r\n \"<div role=\\\"tab\\\" id=\\\"{{::headingId}}\\\" aria-selected=\\\"{{isOpen}}\\\" class=\\\"card-header\\\" ng-keypress=\\\"toggleOpen($event)\\\">\\n\" +\r\n \" <h5 class=\\\"mb-0\\\">\\n\" +\r\n \" <a role=\\\"button\\\" data-toggle=\\\"collapse\\\" href aria-expanded=\\\"{{isOpen}}\\\" aria-controls=\\\"{{::cardId}}\\\" tabindex=\\\"0\\\" class=\\\"accordion-toggle\\\" ng-click=\\\"toggleOpen()\\\" uib-accordion-transclude=\\\"heading\\\" ng-disabled=\\\"isDisabled\\\" uib-tabindex-toggle><span uib-accordion-header ng-class=\\\"{'text-muted': isDisabled}\\\">{{heading}}</span></a>\\n\" +\r\n \" </h5>\\n\" +\r\n \"</div>\\n\" +\r\n \"<div id=\\\"{{::cardId}}\\\" aria-labelledby=\\\"{{::headingId}}\\\" aria-hidden=\\\"{{!isOpen}}\\\" role=\\\"tabcard\\\" class=\\\"card-collapse collapse\\\" uib-collapse=\\\"!isOpen\\\">\\n\" +\r\n \" <div class=\\\"card-body\\\" ng-transclude></div>\\n\" +\r\n \"</div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/accordion/accordion.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/accordion/accordion.html\",\r\n \"<div role=\\\"tablist\\\" ng-transclude></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/alert/alert.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/alert/alert.html\",\r\n \"<button ng-show=\\\"closeable\\\" type=\\\"button\\\" class=\\\"close\\\" ng-click=\\\"close({$event: $event})\\\">\\n\" +\r\n \" <span aria-hidden=\\\"true\\\">×</span>\\n\" +\r\n \" <span class=\\\"sr-only\\\">Close</span>\\n\" +\r\n \"</button>\\n\" +\r\n \"<div ng-transclude></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/carousel/carousel.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/carousel/carousel.html\",\r\n \"<div class=\\\"carousel-inner\\\" ng-transclude></div>\\n\" +\r\n \"<a role=\\\"button\\\" href class=\\\"carousel-control-prev\\\" ng-click=\\\"prev()\\\" ng-class=\\\"{ disabled: isPrevDisabled() }\\\" ng-show=\\\"slides.length > 1\\\">\\n\" +\r\n \" <span class=\\\"carousel-control-prev-icon\\\" aria-hidden=\\\"true\\\"></span>\\n\" +\r\n \" <span class=\\\"sr-only\\\">Previous</span>\\n\" +\r\n \"</a>\\n\" +\r\n \"<a role=\\\"button\\\" href class=\\\"carousel-control-next\\\" ng-click=\\\"next()\\\" ng-class=\\\"{ disabled: isNextDisabled() }\\\" ng-show=\\\"slides.length > 1\\\">\\n\" +\r\n \" <span class=\\\"carousel-control-next-icon\\\" aria-hidden=\\\"true\\\"></span>\\n\" +\r\n \" <span class=\\\"sr-only\\\">Next</span>\\n\" +\r\n \"</a>\\n\" +\r\n \"<ol class=\\\"carousel-indicators\\\" ng-show=\\\"slides.length > 1\\\">\\n\" +\r\n \" <li ng-repeat=\\\"slide in slides | orderBy:indexOfSlide track by $index\\\" ng-class=\\\"{ active: isActive(slide) }\\\" ng-click=\\\"select(slide)\\\">\\n\" +\r\n \" <span class=\\\"sr-only\\\">slide {{ $index + 1 }} of {{ slides.length }}<span ng-if=\\\"isActive(slide)\\\">, currently active</span></span>\\n\" +\r\n \" </li>\\n\" +\r\n \"</ol>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/carousel/slide.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/carousel/slide.html\",\r\n \"<div class=\\\"text-center\\\" ng-transclude></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/datepicker.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/datepicker.html\",\r\n \"<div ng-switch=\\\"datepickerMode\\\">\\n\" +\r\n \" <div uib-daypicker ng-switch-when=\\\"day\\\" tabindex=\\\"0\\\" class=\\\"uib-daypicker\\\"></div>\\n\" +\r\n \" <div uib-monthpicker ng-switch-when=\\\"month\\\" tabindex=\\\"0\\\" class=\\\"uib-monthpicker\\\"></div>\\n\" +\r\n \" <div uib-yearpicker ng-switch-when=\\\"year\\\" tabindex=\\\"0\\\" class=\\\"uib-yearpicker\\\"></div>\\n\" +\r\n \"</div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/day.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/day.html\",\r\n \"<table role=\\\"grid\\\" aria-labelledby=\\\"{{::uniqueId}}-title\\\" aria-activedescendant=\\\"{{activeDateId}}\\\">\\n\" +\r\n \" <thead>\\n\" +\r\n \" <tr>\\n\" +\r\n \" <th>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-left uib-left\\\" ng-click=\\\"move(-1)\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1427 301l-531 531 531 531q19 19 19 45t-19 45l-166 166q-19 19-45 19t-45-19l-742-742q-19-19-19-45t19-45l742-742q19-19 45-19t45 19l166 166q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\r\n \" </i>\\n\" +\r\n \" <span class=\\\"sr-only\\\">previous</span>\\n\" +\r\n \" </button>\\n\" +\r\n \" </th>\\n\" +\r\n \" <th colspan=\\\"{{::5 + showWeeks}}\\\"><button id=\\\"{{::uniqueId}}-title\\\" role=\\\"heading\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\" type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm uib-title\\\" ng-click=\\\"toggleMode()\\\" ng-disabled=\\\"datepickerMode === maxMode\\\" tabindex=\\\"-1\\\"><strong>{{title}}</strong></button></th>\\n\" +\r\n \" <th>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-right uib-right\\\" ng-click=\\\"move(1)\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1363 877l-742 742q-19 19-45 19t-45-19l-166-166q-19-19-19-45t19-45l531-531-531-531q-19-19-19-45t19-45l166-166q19-19 45-19t45 19l742 742q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\r\n \" </i>\\n\" +\r\n \" <span class=\\\"sr-only\\\">next</span>\\n\" +\r\n \" </button>\\n\" +\r\n \" </th>\\n\" +\r\n \" </tr>\\n\" +\r\n \" <tr>\\n\" +\r\n \" <th ng-if=\\\"showWeeks\\\" class=\\\"text-center\\\"></th>\\n\" +\r\n \" <th ng-repeat=\\\"label in ::labels track by $index\\\" class=\\\"text-center\\\"><small aria-label=\\\"{{::label.full}}\\\">{{::label.abbr}}</small></th>\\n\" +\r\n \" </tr>\\n\" +\r\n \" </thead>\\n\" +\r\n \" <tbody>\\n\" +\r\n \" <tr class=\\\"uib-weeks\\\" ng-repeat=\\\"row in rows track by $index\\\" role=\\\"row\\\">\\n\" +\r\n \" <td ng-if=\\\"showWeeks\\\" class=\\\"text-center h6\\\"><em>{{ weekNumbers[$index] }}</em></td>\\n\" +\r\n \" <td ng-repeat=\\\"dt in row\\\" class=\\\"uib-day text-center\\\" role=\\\"gridcell\\\"\\n\" +\r\n \" id=\\\"{{::dt.uid}}\\\"\\n\" +\r\n \" ng-class=\\\"::dt.customClass\\\">\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm\\\"\\n\" +\r\n \" uib-is-class=\\\"\\n\" +\r\n \" 'btn-info' for selectedDt,\\n\" +\r\n \" 'active' for activeDt\\n\" +\r\n \" on dt\\\"\\n\" +\r\n \" ng-click=\\\"select(dt.date)\\\"\\n\" +\r\n \" ng-disabled=\\\"::dt.disabled\\\"\\n\" +\r\n \" tabindex=\\\"-1\\\"><span ng-class=\\\"::{'text-muted': dt.secondary, 'text-info': dt.current}\\\">{{::dt.label}}</span></button>\\n\" +\r\n \" </td>\\n\" +\r\n \" </tr>\\n\" +\r\n \" </tbody>\\n\" +\r\n \"</table>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/month.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/month.html\",\r\n \"<table role=\\\"grid\\\" aria-labelledby=\\\"{{::uniqueId}}-title\\\" aria-activedescendant=\\\"{{activeDateId}}\\\">\\n\" +\r\n \" <thead>\\n\" +\r\n \" <tr>\\n\" +\r\n \" <th>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-left uib-left\\\" ng-click=\\\"move(-1)\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1427 301l-531 531 531 531q19 19 19 45t-19 45l-166 166q-19 19-45 19t-45-19l-742-742q-19-19-19-45t19-45l742-742q19-19 45-19t45 19l166 166q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\r\n \" </i>\\n\" +\r\n \" <span class=\\\"sr-only\\\">previous</span>\\n\" +\r\n \" </button>\\n\" +\r\n \" </th>\\n\" +\r\n \" <th colspan=\\\"{{::yearHeaderColspan}}\\\"><button id=\\\"{{::uniqueId}}-title\\\" role=\\\"heading\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\" type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm uib-title\\\" ng-click=\\\"toggleMode()\\\" ng-disabled=\\\"datepickerMode === maxMode\\\" tabindex=\\\"-1\\\"><strong>{{title}}</strong></button></th>\\n\" +\r\n \" <th>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-right uib-right\\\" ng-click=\\\"move(1)\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1363 877l-742 742q-19 19-45 19t-45-19l-166-166q-19-19-19-45t19-45l531-531-531-531q-19-19-19-45t19-45l166-166q19-19 45-19t45 19l742 742q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\r\n \" </i>\\n\" +\r\n \" <span class=\\\"sr-only\\\">next</span>\\n\" +\r\n \" </button>\\n\" +\r\n \" </th>\\n\" +\r\n \" </tr>\\n\" +\r\n \" </thead>\\n\" +\r\n \" <tbody>\\n\" +\r\n \" <tr class=\\\"uib-months\\\" ng-repeat=\\\"row in rows track by $index\\\" role=\\\"row\\\">\\n\" +\r\n \" <td ng-repeat=\\\"dt in row\\\" class=\\\"uib-month text-center\\\" role=\\\"gridcell\\\"\\n\" +\r\n \" id=\\\"{{::dt.uid}}\\\"\\n\" +\r\n \" ng-class=\\\"::dt.customClass\\\">\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\"\\n\" +\r\n \" uib-is-class=\\\"\\n\" +\r\n \" 'btn-info' for selectedDt,\\n\" +\r\n \" 'active' for activeDt\\n\" +\r\n \" on dt\\\"\\n\" +\r\n \" ng-click=\\\"select(dt.date)\\\"\\n\" +\r\n \" ng-disabled=\\\"::dt.disabled\\\"\\n\" +\r\n \" tabindex=\\\"-1\\\"><span ng-class=\\\"::{'text-info': dt.current}\\\">{{::dt.label}}</span></button>\\n\" +\r\n \" </td>\\n\" +\r\n \" </tr>\\n\" +\r\n \" </tbody>\\n\" +\r\n \"</table>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/year.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/year.html\",\r\n \"<table role=\\\"grid\\\" aria-labelledby=\\\"{{::uniqueId}}-title\\\" aria-activedescendant=\\\"{{activeDateId}}\\\">\\n\" +\r\n \" <thead>\\n\" +\r\n \" <tr>\\n\" +\r\n \" <th>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-left uib-left\\\" ng-click=\\\"move(-1)\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1427 301l-531 531 531 531q19 19 19 45t-19 45l-166 166q-19 19-45 19t-45-19l-742-742q-19-19-19-45t19-45l742-742q19-19 45-19t45 19l166 166q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\r\n \" </i>\\n\" +\r\n \" <span class=\\\"sr-only\\\">previous</span>\\n\" +\r\n \" </button>\\n\" +\r\n \" </th>\\n\" +\r\n \" <th colspan=\\\"{{::columns - 2}}\\\">\\n\" +\r\n \" <button id=\\\"{{::uniqueId}}-title\\\" role=\\\"heading\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\" type=\\\"button\\\"\\n\" +\r\n \" class=\\\"btn btn-secondary btn-sm uib-title\\\" ng-click=\\\"toggleMode()\\\"\\n\" +\r\n \" ng-disabled=\\\"datepickerMode === maxMode\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <strong>{{title}}</strong>\\n\" +\r\n \" </button>\\n\" +\r\n \" </th>\\n\" +\r\n \" <th>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-right uib-right\\\" ng-click=\\\"move(1)\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1363 877l-742 742q-19 19-45 19t-45-19l-166-166q-19-19-19-45t19-45l531-531-531-531q-19-19-19-45t19-45l166-166q19-19 45-19t45 19l742 742q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\r\n \" </i>\\n\" +\r\n \" <span class=\\\"sr-only\\\">next</span>\\n\" +\r\n \" </button>\\n\" +\r\n \" </th>\\n\" +\r\n \" </tr>\\n\" +\r\n \" </thead>\\n\" +\r\n \" <tbody>\\n\" +\r\n \" <tr class=\\\"uib-years\\\" ng-repeat=\\\"row in rows track by $index\\\" role=\\\"row\\\">\\n\" +\r\n \" <td ng-repeat=\\\"dt in row\\\" class=\\\"uib-year text-center\\\" role=\\\"gridcell\\\"\\n\" +\r\n \" id=\\\"{{::dt.uid}}\\\"\\n\" +\r\n \" ng-class=\\\"::dt.customClass\\\">\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\"\\n\" +\r\n \" uib-is-class=\\\"\\n\" +\r\n \" 'btn-info' for selectedDt,\\n\" +\r\n \" 'active' for activeDt\\n\" +\r\n \" on dt\\\"\\n\" +\r\n \" ng-click=\\\"select(dt.date)\\\"\\n\" +\r\n \" ng-disabled=\\\"::dt.disabled\\\"\\n\" +\r\n \" tabindex=\\\"-1\\\"><span ng-class=\\\"::{'text-info': dt.current}\\\">{{::dt.label}}</span></button>\\n\" +\r\n \" </td>\\n\" +\r\n \" </tr>\\n\" +\r\n \" </tbody>\\n\" +\r\n \"</table>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepickerPopup/popup.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/datepickerPopup/popup.html\",\r\n \"<ul role=\\\"presentation\\\" class=\\\"uib-datepicker-popup dropdown-menu uib-position-measure\\\" dropdown-nested ng-if=\\\"isOpen\\\" ng-keydown=\\\"keydown($event)\\\" ng-click=\\\"$event.stopPropagation()\\\">\\n\" +\r\n \" <li ng-transclude></li>\\n\" +\r\n \" <li ng-if=\\\"showButtonBar\\\" class=\\\"uib-button-bar\\\">\\n\" +\r\n \" <span class=\\\"btn-group float-left\\\">\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-sm btn-info uib-datepicker-current\\\" ng-click=\\\"select('today', $event)\\\" ng-disabled=\\\"isDisabled('today')\\\">{{ getText('current') }}</button>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-sm btn-danger uib-clear\\\" ng-click=\\\"select(null, $event)\\\">{{ getText('clear') }}</button>\\n\" +\r\n \" </span>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-sm btn-success float-right uib-close\\\" ng-click=\\\"close($event)\\\">{{ getText('close') }}</button>\\n\" +\r\n \" </li>\\n\" +\r\n \"</ul>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/modal/window.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/modal/window.html\",\r\n \"<div class=\\\"modal-dialog {{size ? 'modal-' + size : ''}}\\\"><div class=\\\"modal-content\\\" uib-modal-transclude></div></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/pager/pager.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/pager/pager.html\",\r\n \"<li ng-class=\\\"{disabled: noPrevious()||ngDisabled, previous: align}\\\"><a href ng-click=\\\"selectPage(page - 1, $event)\\\" ng-disabled=\\\"noPrevious()||ngDisabled\\\" uib-tabindex-toggle>{{::getText('previous')}}</a></li>\\n\" +\r\n \"<li ng-class=\\\"{disabled: noNext()||ngDisabled, next: align}\\\"><a href ng-click=\\\"selectPage(page + 1, $event)\\\" ng-disabled=\\\"noNext()||ngDisabled\\\" uib-tabindex-toggle>{{::getText('next')}}</a></li>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/pagination/pagination.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/pagination/pagination.html\",\r\n \"<li role=\\\"menuitem\\\" ng-if=\\\"::boundaryLinks\\\" ng-class=\\\"{disabled: noPrevious()||ngDisabled}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(1, $event)\\\" ng-disabled=\\\"noPrevious()||ngDisabled\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{::getText('first')}}</a></li>\\n\" +\r\n \"<li role=\\\"menuitem\\\" ng-if=\\\"::directionLinks\\\" ng-class=\\\"{disabled: noPrevious()||ngDisabled}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(page - 1, $event)\\\" ng-disabled=\\\"noPrevious()||ngDisabled\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{::getText('previous')}}</a></li>\\n\" +\r\n \"<li role=\\\"menuitem\\\" ng-repeat=\\\"page in pages track by $index\\\" ng-class=\\\"{active: page.active,disabled: ngDisabled&&!page.active}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(page.number, $event)\\\" ng-disabled=\\\"ngDisabled&&!page.active\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{page.text}}</a></li>\\n\" +\r\n \"<li role=\\\"menuitem\\\" ng-if=\\\"::directionLinks\\\" ng-class=\\\"{disabled: noNext()||ngDisabled}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(page + 1, $event)\\\" ng-disabled=\\\"noNext()||ngDisabled\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{::getText('next')}}</a></li>\\n\" +\r\n \"<li role=\\\"menuitem\\\" ng-if=\\\"::boundaryLinks\\\" ng-class=\\\"{disabled: noNext()||ngDisabled}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(totalPages, $event)\\\" ng-disabled=\\\"noNext()||ngDisabled\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{::getText('last')}}</a></li>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tooltip/tooltip-html-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/tooltip/tooltip-html-popup.html\",\r\n \"<div class=\\\"arrow\\\"></div>\\n\" +\r\n \"<div class=\\\"tooltip-inner\\\" ng-bind-html=\\\"contentExp()\\\"></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tooltip/tooltip-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/tooltip/tooltip-popup.html\",\r\n \"<div class=\\\"arrow\\\"></div>\\n\" +\r\n \"<div class=\\\"tooltip-inner\\\" ng-bind=\\\"content\\\"></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tooltip/tooltip-template-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/tooltip/tooltip-template-popup.html\",\r\n \"<div class=\\\"arrow\\\"></div>\\n\" +\r\n \"<div class=\\\"tooltip-inner\\\"\\n\" +\r\n \" uib-tooltip-template-transclude=\\\"contentExp()\\\"\\n\" +\r\n \" tooltip-template-transclude-scope=\\\"originScope()\\\"></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/popover/popover-html.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/popover/popover-html.html\",\r\n \"<div class=\\\"arrow\\\"></div>\\n\" +\r\n \"<h3 class=\\\"popover-header\\\" ng-bind=\\\"uibTitle\\\" ng-if=\\\"uibTitle\\\"></h3>\\n\" +\r\n \"<div class=\\\"popover-body\\\" ng-bind-html=\\\"contentExp()\\\"></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/popover/popover-template.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/popover/popover-template.html\",\r\n \"<div class=\\\"arrow\\\"></div>\\n\" +\r\n \"\\n\" +\r\n \"<h3 class=\\\"popover-header\\\" ng-bind=\\\"uibTitle\\\" ng-if=\\\"uibTitle\\\"></h3>\\n\" +\r\n \"<div class=\\\"popover-body\\\"\\n\" +\r\n \" uib-tooltip-template-transclude=\\\"contentExp()\\\"\\n\" +\r\n \" tooltip-template-transclude-scope=\\\"originScope()\\\"></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/popover/popover.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/popover/popover.html\",\r\n \"<div class=\\\"arrow\\\"></div>\\n\" +\r\n \"<h3 class=\\\"popover-header\\\" ng-bind=\\\"uibTitle\\\" ng-if=\\\"uibTitle\\\"></h3>\\n\" +\r\n \"<div class=\\\"popover-body\\\" ng-bind=\\\"content\\\"></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/progressbar/bar.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/progressbar/bar.html\",\r\n \"<div class=\\\"progress-bar\\\" ng-class=\\\"[type ? 'bg-' + type : '', striped ? 'progress-bar-striped' : '']\\\" role=\\\"progressbar\\\" aria-valuenow=\\\"{{value}}\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"{{max}}\\\" ng-style=\\\"{width: (percent < 100 ? percent : 100) + '%'}\\\" aria-valuetext=\\\"{{percent | number:0}}%\\\" aria-labelledby=\\\"{{::title}}\\\" ng-transclude></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/progressbar/progress.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/progressbar/progress.html\",\r\n \"<div class=\\\"progress\\\" ng-transclude aria-labelledby=\\\"{{::title}}\\\"></div>\");\r\n}]);\r\n\r\nangular.module(\"uib/template/progressbar/progressbar.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/progressbar/progressbar.html\",\r\n \"<div class=\\\"progress\\\">\\n\" +\r\n \" <div class=\\\"progress-bar\\\" ng-class=\\\"[type ? 'bg-' + type : '', striped ? 'progress-bar-striped' : '']\\\" role=\\\"progressbar\\\" aria-valuenow=\\\"{{value}}\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"{{max}}\\\" ng-style=\\\"{width: (percent < 100 ? percent : 100) + '%'}\\\" aria-valuetext=\\\"{{percent | number:0}}%\\\" aria-labelledby=\\\"{{::title}}\\\" ng-transclude></div>\\n\" +\r\n \"</div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/rating/rating.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/rating/rating.html\",\r\n \"<span ng-mouseleave=\\\"reset()\\\" ng-keydown=\\\"onKeydown($event)\\\" tabindex=\\\"0\\\" role=\\\"slider\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"{{range.length}}\\\" aria-valuenow=\\\"{{value}}\\\" aria-valuetext=\\\"{{title}}\\\">\\n\" +\r\n \" <span ng-repeat-start=\\\"r in range track by $index\\\" class=\\\"sr-only\\\">({{ $index < value ? '*' : ' ' }})</span>\\n\" +\r\n \" <i ng-repeat-end ng-mouseenter=\\\"enter($index + 1)\\\" ng-click=\\\"rate($index + 1)\\\" class=\\\"fa-svg-icon\\\" ng-class=\\\"$index < value && (r.stateOn || 'star') || (r.stateOff || 'star-empty')\\\" ng-attr-title=\\\"{{r.title}}\\\">\\n\" +\r\n \" <svg data-ng-if=\\\"$index < value\\\" width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1728 647q0 22-26 48l-363 354 86 500q1 7 1 20 0 21-10.5 35.5t-30.5 14.5q-19 0-40-12l-449-236-449 236q-22 12-40 12-21 0-31.5-14.5t-10.5-35.5q0-6 2-20l86-500-364-354q-25-27-25-48 0-37 56-46l502-73 225-455q19-41 49-41t49 41l225 455 502 73q56 9 56 46z\\\"/></svg>\\n\" +\r\n \" <svg data-ng-if=\\\"$index >= value\\\" width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1201 1004l306-297-422-62-189-382-189 382-422 62 306 297-73 421 378-199 377 199zm527-357q0 22-26 48l-363 354 86 500q1 7 1 20 0 50-41 50-19 0-40-12l-449-236-449 236q-22 12-40 12-21 0-31.5-14.5t-10.5-35.5q0-6 2-20l86-500-364-354q-25-27-25-48 0-37 56-46l502-73 225-455q19-41 49-41t49 41l225 455 502 73q56 9 56 46z\\\"/></svg>\\n\" +\r\n \" </i>\\n\" +\r\n \"</span>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tabs/tab.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/tabs/tab.html\",\r\n \"<li class=\\\"uib-tab nav-item\\\">\\n\" +\r\n \" <a href ng-click=\\\"select($event)\\\" ng-class=\\\"[{active: active, disabled: disabled}, classes]\\\" class=\\\"nav-link\\\" uib-tab-heading-transclude>{{heading}}</a>\\n\" +\r\n \"</li>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tabs/tabset.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/tabs/tabset.html\",\r\n \"<div>\\n\" +\r\n \" <ul class=\\\"nav nav-{{tabset.type || 'tabs'}}\\\" ng-class=\\\"{'nav-stacked': vertical, 'nav-justified': justified}\\\" ng-transclude></ul>\\n\" +\r\n \" <div class=\\\"tab-content\\\">\\n\" +\r\n \" <div class=\\\"tab-pane\\\"\\n\" +\r\n \" ng-repeat=\\\"tab in tabset.tabs\\\"\\n\" +\r\n \" ng-class=\\\"{active: tabset.active === tab.index}\\\"\\n\" +\r\n \" uib-tab-content-transclude=\\\"tab\\\">\\n\" +\r\n \" </div>\\n\" +\r\n \" </div>\\n\" +\r\n \"</div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/timepicker/timepicker.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/timepicker/timepicker.html\",\r\n \"<table class=\\\"uib-timepicker\\\">\\n\" +\r\n \" <tbody>\\n\" +\r\n \" <tr class=\\\"text-center\\\" ng-show=\\\"::showSpinners\\\">\\n\" +\r\n \" <td class=\\\"uib-increment hours\\\">\\n\" +\r\n \" <a ng-click=\\\"incrementHours()\\\" ng-class=\\\"{disabled: noIncrementHours()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noIncrementHours()\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <span class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 1331l-166 165q-19 19-45 19t-45-19l-531-531-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\r\n \" </span>\\n\" +\r\n \" </a>\\n\" +\r\n \" </td>\\n\" +\r\n \" <td> </td>\\n\" +\r\n \" <td class=\\\"uib-increment minutes\\\">\\n\" +\r\n \" <a ng-click=\\\"incrementMinutes()\\\" ng-class=\\\"{disabled: noIncrementMinutes()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noIncrementMinutes()\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <span class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 1331l-166 165q-19 19-45 19t-45-19l-531-531-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\r\n \" </span>\\n\" +\r\n \" </a>\\n\" +\r\n \" </td>\\n\" +\r\n \" <td ng-show=\\\"showSeconds\\\"> </td>\\n\" +\r\n \" <td ng-show=\\\"showSeconds\\\" class=\\\"uib-increment seconds\\\">\\n\" +\r\n \" <a ng-click=\\\"incrementSeconds()\\\" ng-class=\\\"{disabled: noIncrementSeconds()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noIncrementSeconds()\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <span class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 1331l-166 165q-19 19-45 19t-45-19l-531-531-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\r\n \" </span>\\n\" +\r\n \" </a>\\n\" +\r\n \" </td>\\n\" +\r\n \" <td ng-show=\\\"showMeridian\\\"></td>\\n\" +\r\n \" </tr>\\n\" +\r\n \" <tr>\\n\" +\r\n \" <td class=\\\"form-group uib-time hours\\\" ng-class=\\\"{'has-error': invalidHours}\\\">\\n\" +\r\n \" <input type=\\\"text\\\" placeholder=\\\"HH\\\" ng-model=\\\"hours\\\" ng-change=\\\"updateHours()\\\" class=\\\"form-control text-center\\\" ng-readonly=\\\"::readonlyInput\\\" maxlength=\\\"2\\\" tabindex=\\\"{{::tabindex}}\\\" ng-disabled=\\\"noIncrementHours()\\\" ng-blur=\\\"blur()\\\">\\n\" +\r\n \" </td>\\n\" +\r\n \" <td class=\\\"uib-separator\\\">:</td>\\n\" +\r\n \" <td class=\\\"form-group uib-time minutes\\\" ng-class=\\\"{'has-error': invalidMinutes}\\\">\\n\" +\r\n \" <input type=\\\"text\\\" placeholder=\\\"MM\\\" ng-model=\\\"minutes\\\" ng-change=\\\"updateMinutes()\\\" class=\\\"form-control text-center\\\" ng-readonly=\\\"::readonlyInput\\\" maxlength=\\\"2\\\" tabindex=\\\"{{::tabindex}}\\\" ng-disabled=\\\"noIncrementMinutes()\\\" ng-blur=\\\"blur()\\\">\\n\" +\r\n \" </td>\\n\" +\r\n \" <td ng-show=\\\"showSeconds\\\" class=\\\"uib-separator\\\">:</td>\\n\" +\r\n \" <td class=\\\"form-group uib-time seconds\\\" ng-class=\\\"{'has-error': invalidSeconds}\\\" ng-show=\\\"showSeconds\\\">\\n\" +\r\n \" <input type=\\\"text\\\" placeholder=\\\"SS\\\" ng-model=\\\"seconds\\\" ng-change=\\\"updateSeconds()\\\" class=\\\"form-control text-center\\\" ng-readonly=\\\"readonlyInput\\\" maxlength=\\\"2\\\" tabindex=\\\"{{::tabindex}}\\\" ng-disabled=\\\"noIncrementSeconds()\\\" ng-blur=\\\"blur()\\\">\\n\" +\r\n \" </td>\\n\" +\r\n \" <td ng-show=\\\"showMeridian\\\" class=\\\"uib-time am-pm\\\"><button type=\\\"button\\\" ng-class=\\\"{disabled: noToggleMeridian()}\\\" class=\\\"btn btn-secondary text-center\\\" ng-click=\\\"toggleMeridian()\\\" ng-disabled=\\\"noToggleMeridian()\\\" tabindex=\\\"{{::tabindex}}\\\">{{meridian}}</button></td>\\n\" +\r\n \" </tr>\\n\" +\r\n \" <tr class=\\\"text-center\\\" ng-show=\\\"::showSpinners\\\">\\n\" +\r\n \" <td class=\\\"uib-decrement hours\\\">\\n\" +\r\n \" <a ng-click=\\\"decrementHours()\\\" ng-class=\\\"{disabled: noDecrementHours()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noDecrementHours()\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <span class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 808l-742 741q-19 19-45 19t-45-19l-742-741q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\r\n \" </span>\\n\" +\r\n \" </a>\\n\" +\r\n \" </td>\\n\" +\r\n \" <td> </td>\\n\" +\r\n \" <td class=\\\"uib-decrement minutes\\\">\\n\" +\r\n \" <a ng-click=\\\"decrementMinutes()\\\" ng-class=\\\"{disabled: noDecrementMinutes()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noDecrementMinutes()\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <span class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 808l-742 741q-19 19-45 19t-45-19l-742-741q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\r\n \" </span>\\n\" +\r\n \" </a>\\n\" +\r\n \" </td>\\n\" +\r\n \" <td ng-show=\\\"showSeconds\\\"> </td>\\n\" +\r\n \" <td ng-show=\\\"showSeconds\\\" class=\\\"uib-decrement seconds\\\">\\n\" +\r\n \" <a ng-click=\\\"decrementSeconds()\\\" ng-class=\\\"{disabled: noDecrementSeconds()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noDecrementSeconds()\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <span class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 808l-742 741q-19 19-45 19t-45-19l-742-741q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\r\n \" </span>\\n\" +\r\n \" </a>\\n\" +\r\n \" </td>\\n\" +\r\n \" <td ng-show=\\\"showMeridian\\\"></td>\\n\" +\r\n \" </tr>\\n\" +\r\n \" </tbody>\\n\" +\r\n \"</table>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/typeahead/typeahead-match.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/typeahead/typeahead-match.html\",\r\n \"<a href\\n\" +\r\n \" tabindex=\\\"-1\\\"\\n\" +\r\n \" class=\\\"dropdown-item\\\"\\n\" +\r\n \" ng-bind-html=\\\"match.label | uibTypeaheadHighlight:query\\\"\\n\" +\r\n \" ng-attr-title=\\\"{{match.label}}\\\"></a>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/typeahead/typeahead-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/typeahead/typeahead-popup.html\",\r\n \"<ul class=\\\"dropdown-menu\\\" ng-show=\\\"isOpen() && !moveInProgress\\\" ng-style=\\\"{top: position().top+'px', left: position().left+'px'}\\\" role=\\\"listbox\\\" aria-hidden=\\\"{{!isOpen()}}\\\">\\n\" +\r\n \" <li class=\\\"uib-typeahead-match\\\" ng-repeat=\\\"match in matches track by $index\\\" ng-class=\\\"{active: isActive($index) }\\\" ng-mouseenter=\\\"selectActive($index)\\\" ng-click=\\\"selectMatch($index, $event)\\\" role=\\\"option\\\" id=\\\"{{::match.id}}\\\">\\n\" +\r\n \" <div uib-typeahead-match index=\\\"$index\\\" match=\\\"match\\\" query=\\\"query\\\" template-url=\\\"templateUrl\\\"></div>\\n\" +\r\n \" </li>\\n\" +\r\n \"</ul>\\n\" +\r\n \"\");\r\n}]);\r\nangular.module('ui.bootstrap.carousel').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibCarouselCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}</style>'); angular.$$uibCarouselCss = true; });\r\nangular.module('ui.bootstrap.common').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibCommonCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.fa-svg-icon{display:inline-block;vertical-align:middle;min-width:1em;min-height:1em;height:100%;position:relative;top:-1px;}.fa-svg-icon svg{position:absolute;top:0;left:0;width:100%;height:100%;}.fa-svg-icon svg g,.fa-svg-icon svg path{fill:currentColor;}</style>'); angular.$$uibCommonCss = true; });\r\nangular.module('ui.bootstrap.datepicker').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibDatepickerCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.uib-datepicker .uib-title{width:100%;}.uib-day button,.uib-month button,.uib-year button{min-width:100%;}.uib-left,.uib-right{width:100%}</style>'); angular.$$uibDatepickerCss = true; });\r\nangular.module('ui.bootstrap.position').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibPositionCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.uib-position-measure{display:block !important;visibility:hidden !important;position:absolute !important;top:-9999px !important;left:-9999px !important;}.uib-position-scrollbar-measure{position:absolute !important;top:-9999px !important;width:50px !important;height:50px !important;overflow:scroll !important;}.uib-position-body-scrollbar-measure{overflow:scroll !important;}</style>'); angular.$$uibPositionCss = true; });\r\nangular.module('ui.bootstrap.datepickerPopup').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibDatepickerpopupCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.uib-datepicker-popup.dropdown-menu{display:block;float:none;margin:0;}.uib-button-bar{padding:10px;}</style>'); angular.$$uibDatepickerpopupCss = true; });\r\nangular.module('ui.bootstrap.tooltip').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibTooltipCss && angular.element(document).find('head').prepend('<style type=\"text/css\">[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,[uib-popover-popup].popover.top-left > .arrow,[uib-popover-popup].popover.top-right > .arrow,[uib-popover-popup].popover.bottom-left > .arrow,[uib-popover-popup].popover.bottom-right > .arrow,[uib-popover-popup].popover.left-top > .arrow,[uib-popover-popup].popover.left-bottom > .arrow,[uib-popover-popup].popover.right-top > .arrow,[uib-popover-popup].popover.right-bottom > .arrow,[uib-popover-html-popup].popover.top-left > .arrow,[uib-popover-html-popup].popover.top-right > .arrow,[uib-popover-html-popup].popover.bottom-left > .arrow,[uib-popover-html-popup].popover.bottom-right > .arrow,[uib-popover-html-popup].popover.left-top > .arrow,[uib-popover-html-popup].popover.left-bottom > .arrow,[uib-popover-html-popup].popover.right-top > .arrow,[uib-popover-html-popup].popover.right-bottom > .arrow,[uib-popover-template-popup].popover.top-left > .arrow,[uib-popover-template-popup].popover.top-right > .arrow,[uib-popover-template-popup].popover.bottom-left > .arrow,[uib-popover-template-popup].popover.bottom-right > .arrow,[uib-popover-template-popup].popover.left-top > .arrow,[uib-popover-template-popup].popover.left-bottom > .arrow,[uib-popover-template-popup].popover.right-top > .arrow,[uib-popover-template-popup].popover.right-bottom > .arrow{top:auto;bottom:auto;left:auto;right:auto;margin:0;}[uib-popover-popup].popover,[uib-popover-html-popup].popover,[uib-popover-template-popup].popover{display:block !important;}</style>'); angular.$$uibTooltipCss = true; });\r\nangular.module('ui.bootstrap.timepicker').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibTimepickerCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.uib-time input{width:50px !important;}</style>'); angular.$$uibTimepickerCss = true; });\r\nangular.module('ui.bootstrap.typeahead').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibTypeaheadCss && angular.element(document).find('head').prepend('<style type=\"text/css\">[uib-typeahead-popup].dropdown-menu{display:block;}</style>'); angular.$$uibTypeaheadCss = true; });","angular.module('st')\n .directive(\"compareTo\", function () {\r\n return {\r\n require: \"ngModel\",\r\n scope: {\r\n otherModelValue: \"=compareTo\"\r\n },\r\n link: function (scope, element, attributes, ngModel) {\r\n\r\n ngModel.$validators.compareTo = function (modelValue) {\r\n return modelValue == scope.otherModelValue;\r\n };\r\n\r\n scope.$watch(\"otherModelValue\", function () {\r\n ngModel.$validate();\r\n });\r\n }\r\n };\r\n });","angular.module('st')\n .controller('crewardsCommunicationsController', [\n '$rootScope', '$scope', '$http', \n function ($rootScope, $scope, $http) {\n var ctrl = this;\n $scope.feedback = '';\n $scope.processing = false;\n $scope.saveDisabled = true;\n\n ctrl.SetModel = function (commPreferences) {\n $scope.model = commPreferences;\r\n }\n \n ctrl.UpdatePreferences = function () {\n if ($scope.processing == false) {\n $scope.processing = true;\r\n $scope.feedback = 'Saving preferences...';\r\n var payload = { ReceiveEmails: $scope.model.receiveEmails, ReceiveTexts: $scope.model.receiveSMS };\r\n $http.post(\"/rpc/membership/account/communications\", payload)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.feedback = '';\r\n $scope.processing = false;\r\n $scope.saveDisabled = true;\r\n } else {\r\n // vista error\r\n $scope.processing = false;\r\n $scope.feedback = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.feedback = 'Error occurred while trying to save settings.'\r\n })\r\n }\r\n }\n }\n ] \n );\n","angular.module('st')\n .controller('crewardsCreditCardsController', [\n '$rootScope', '$scope', '$http',\n function ($rootScope, $scope, $http) {\n var ctrl = this;\n $scope.feedback = '';\n $scope.processing = false;\n $scope.showAddCard = false;\n $scope.saveDisabled = false;\n $scope.newCard = {expMonth:\"01\",expYear:\"2019\"};\n $scope.creditCards = [];\n\n ctrl.SetCards = function (creditCards) {\n $scope.creditCards = creditCards;\r\n }\n\n ctrl.RemoveCardFromModel = function(creditCard){\n for (var i = 0; i < $scope.creditCards.length; i++) {\r\n if ($scope.creditCards[i].token == creditCard.token) {\r\n $scope.creditCards.splice(i, 1);\r\n }\r\n }\r\n $rootScope.$emit('cardRemoved', creditCard.token);\r\n }\n\n ctrl.AddCreditCard = function (payload) {\n if ($scope.processing == false) {\n $scope.processing = true;\n\n let params = {\n nonce: payload.nonce\n };\n $http.post(\"/rpc/membership/account/payment-method/add/\" + payload.nonce)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.processing = false;\r\n var details = payload.details;\r\n var cardObj = {\r\n cardExpiry : '' + details.expirationMonth + '/' + details.expirationYear,\r\n name : $scope.form.fields.cardholderName,\r\n maskedCardNumber : '••••••••••••' + details.lastFour,\r\n cardType : details.cardType,\r\n token : data.data.Message\r\n };\r\n $scope.creditCards.push(cardObj);\r\n $rootScope.$emit('cardAdded', cardObj);\r\n $scope.showAddCard = false;\r\n alert('Card ending with ' + cardObj.maskedCardNumber.substring(cardObj.maskedCardNumber.length - 4) + ' has been added');\r\n } else {\r\n // vista error\r\n $scope.processing = false;\r\n $scope.feedback = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.feedback = 'Error occurred while trying to remove this credit card.'\r\n })\n }\r\n }\n\n ctrl.RemoveCreditCard = function (creditCard) {\n if ($scope.processing == false) {\n if ($rootScope.subscriptionPaymentToken != null && $rootScope.subscriptionPaymentToken == creditCard.token) {\n alert('This card is still being used for an active subscription, once the subscription has expired or been cancelled it may be removed.');\r\n return;\r\n }\n\n if (!window.confirm('Remove card ending with ' + creditCard.maskedCardNumber.substring(creditCard.maskedCardNumber.length - 4) + '?')) {\n return;\r\n }\n\n $scope.processing = true;\r\n $scope.feedback = '';\r\n $http.post(\"/rpc/membership/account/payment-method/remove/\" + creditCard.token)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.processing = false;\r\n $scope.feedback = '';\r\n ctrl.RemoveCardFromModel(creditCard)\r\n } else {\r\n // vista error\r\n $scope.processing = false;\r\n $scope.feedback = 'Error: ' + data.data.Message;\n alert($scope.feedback);\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n var error = error.Message || 'Error occurred while trying to remove this credit card.';\n alert(error);\r\n })\r\n }\r\n }\n\n\n ctrl.ToggleAddCard = function () {\n $scope.showAddCard = !$scope.showAddCard;\r\n }\n\n\n ///////////////////////////////////////////////////\n /////////////// Braintree stuff ///////////////////\n ///////////////////////////////////////////////////\n\n $scope.months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n $scope.model = {};\n $scope.form = {\n fields: {},\n labels: {\n cvv: 'CVV',\n cardBrand: 'Card'\n }\n };\n \n const makeField = function (id, placeholder) { return { id, placeholder } };\n\n const btForm = {\n fields: {\n cardholderName: makeField('#cc-name', 'Name on card'),\n cardNumber: makeField('#cc-number', 'Card Number'),\n cvv: makeField('#cc-cvv', '123'),\n expirationMonth: makeField('#cc-expiration-month', 'Month'),\n expirationYear: makeField('#cc-expiration-year', 'Year'),\n postalCode: makeField('#cc-zip-code', 'Zip Code')\n },\n classes: {\n valid: 'is-valid',\n invalid: 'is-invalid'\n },\n hostedFieldsInstance: null\n };\n const btFunctions = {};\n\n $scope.submitForm = function () {\n if ($scope.validateForm()) {\n btForm.hostedFieldsInstance.tokenize({\n cardholderName: $scope.form.fields.cardholderName\n }, function (err, payload) {\n if (err) {\n console.error(err);\n return;\n }\n ctrl.AddCreditCard(payload)\n });\n }\n };\n\n $scope.validateForm = function () {\n var formIsInvalid = false;\n var state = btForm.hostedFieldsInstance.getState();\n\n // non-hosted fields\n if (!btFunctions.validateInput($(btForm.fields.cardholderName.id))) {\n formIsInvalid = true;\n }\n\n // Loop through the Hosted Fields\n Object.keys(state.fields).forEach(function (field) {\n if (!state.fields[field].isValid) {\n $(state.fields[field].container).addClass(btForm.classes.invalid);\n formIsInvalid = true;\n }\n });\n\n return !formIsInvalid;\n };\n\n //***** Braintree funcs\n btFunctions.createInputChangeEventListener = function (element) {\n return function () {\n btFunctions.validateInput(element);\n }\n };\n\n btFunctions.setValidityClasses = function (element, validity) {\n if (validity) {\n element.removeClass(btForm.classes.invalid);\n element.addClass(btForm.classes.valid);\n }\n else {\n element.addClass(btForm.classes.invalid);\n element.removeClass(btForm.classes.valid);\n }\n };\n\n btFunctions.validateInput = function (element) {\n\n if (!element.val().trim()) {\n btFunctions.setValidityClasses(element, false);\n return false;\n }\n\n btFunctions.setValidityClasses(element, true);\n return true;\n };\n\n btFunctions.validityChanged = function (event) {\n var field = event.fields[event.emittedBy];\n\n // Remove any previously applied error or warning classes\n $(field.container).removeClass(btForm.classes.valid).removeClass(btForm.classes.invalid);\n\n if (field.isValid) {\n $(field.container).addClass(btForm.classes.valid);\n }\n else if (!field.isPotentiallyValid) {\n $(field.container).addClass(btForm.classes.invalid);\n }\n };\n\n btFunctions.cardTypeChanged = function (event) {\n $scope.$evalAsync(function () {\n if (event.cards.length === 1) {\n var card = event.cards[0];\n $scope.form.labels.cardBrand = card.niceType;\n $scope.form.labels.cvv = card.code.name;\n }\n else {\n $scope.form.labels.cardBrand = 'Card';\n $scope.form.labels.cvv = 'CVV';\n }\n });\n };\n //****** End Braintree funcs\n\n $scope.initBraintree = function () {\n braintree.client.create({\n authorization: $scope.model.ClientToken\n }, function (err, clientInstance) {\n if (err) {\n console.error(err);\n return;\n }\n\n braintree.hostedFields.create({\n client: clientInstance,\n styles: {\n input: {\n // change input styles to match\n // bootstrap styles\n 'font-size': '1rem',\n color: '#495057'\n }\n },\n fields: {\n number: {\n selector: btForm.fields.cardNumber.id,\n placeholder: btForm.fields.cardNumber.placeholder\n },\n cvv: {\n selector: btForm.fields.cvv.id,\n placeholder: btForm.fields.cvv.placeholder\n },\n expirationMonth: {\n selector: btForm.fields.expirationMonth.id,\n placeholder: btForm.fields.expirationMonth.placeholder,\n select: {\n options: $scope.months\n }\n },\n expirationYear: {\n selector: btForm.fields.expirationYear.id,\n placeholder: btForm.fields.expirationYear.placeholder,\n select: true\n },\n postalCode: {\n selector: btForm.fields.postalCode.id,\n placeholder: btForm.fields.postalCode.placeholder,\n }\n }\n }, function (err, hostedFieldsInstance) {\n if (err) {\n console.error(err);\n return;\n }\n\n btForm.hostedFieldsInstance = hostedFieldsInstance;\n btForm.hostedFieldsInstance.on('validityChange', btFunctions.validityChanged);\n btForm.hostedFieldsInstance.on('cardTypeChange', btFunctions.cardTypeChanged);\n });\n });\n };\n\n $scope.init = function (model) {\n console.log('initing')\n $scope.model = model;\n $scope.initBraintree();\n }; \n }\n ]);\n","angular.module('st')\r\n .controller('customerRefundsController', [\r\n '$rootScope', '$scope', '$http',\r\n function ($rootScope, $scope, $http) {\r\n var ctrl = this;\r\n $scope.isError = false;\r\n $scope.feedback = '';\r\n $scope.processing = false;\r\n $scope.refundSubmitted = false;\r\n $scope.confirmationCode = null;\r\n $scope.isMidtownWebsite = false;\r\n $scope.loyaltyVouchers = []; \r\n\r\n var getParameterByName = function (name) {\r\n var url = window.location.href;\r\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\r\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\r\n results = regex.exec(url);\r\n\r\n if (!results) return null;\r\n if (!results[2]) return null;\r\n\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n }\r\n\r\n ctrl.TicketsThatAreNotRefunded = function (seats) {\r\n if (!seats) { return; }\r\n var filteredSeats = seats.filter(function (el) {\r\n return el.RefundedStatus !== \"1\";\r\n });\r\n return filteredSeats ? filteredSeats.length : 0;\r\n }\r\n\r\n ctrl.IsFieldInvalid = function (field) {\r\n return field.$invalid && (field.$touched || $scope.frm.$submitted);\r\n }\r\n\r\n var clear = function () {\r\n $scope.bookingData = null;\r\n $scope.refundSubmitted = false;\r\n $scope.feedback = null;\r\n $scope.isError = false;\r\n };\r\n\r\n ctrl.loadBooking = function () {\r\n if ($scope.processing == false) {\r\n clear();\r\n $scope.processing = true;\r\n $scope.feedback = 'Loading booking data...';\r\n\r\n grecaptcha.ready(function () {\r\n grecaptcha.execute($('#captcha-site-key').val(), { action: '' }).then(function (token) {\r\n //console.log('captcha key', $('#captcha-site-key').val());\r\n //console.log('token', token);\r\n //token = encodeURI(token);\r\n //token = encodeURIComponent(token);\r\n //var url = $scope.isMidtownWebsite ? \"/rpc/order/booking/\" + $scope.confirmationCode + \"/\" + token + \"/true\" : \"/rpc/order/booking/\" + $scope.confirmationCode + \"/\" + token;\r\n var url = \"/rpc/order/booking\";\r\n \r\n var config = {\r\n bookingId: $scope.confirmationCode,\r\n token: token,\r\n isMidtownWebsite: $scope.isMidtownWebsite ? true : false,\r\n archivable: true\r\n };\r\n\r\n $http.post(url, config)\r\n .then(function (d) {\r\n if (d.data.Success == true) {\r\n $scope.bookingData = d.data.Data;\r\n $scope.feedback = '';\r\n } else {\r\n // vista error \r\n $scope.feedback = 'Error: ' + d.data.Message;\r\n $scope.isError = true;\r\n }\r\n $scope.processing = false;\r\n }).catch(function (error) {\r\n console.log(arguments);\r\n // our server error \r\n $scope.processing = false;\r\n $scope.feedback = 'Error occurred while trying to submit the refund.';\r\n $scope.isError = true;\r\n });\r\n });\r\n });\r\n }\r\n };\r\n\r\n ctrl.cancel = function () {\r\n clear();\r\n };\r\n\r\n ctrl.ProcessRefund = function () {\r\n if ($scope.processing == false) {\r\n $scope.isError = false;\r\n $scope.processing = true;\r\n $scope.feedback = 'Processing refund...';\r\n\r\n var url = $scope.isMidtownWebsite ? \"/rpc/order/refund/\" + $scope.bookingData.BookingId + \"/true\" : \"/rpc/order/refund/\" + $scope.bookingData.BookingId;\r\n\r\n $http.post(url)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.feedback = 'Success! Your refund will start processing after about 5 minutes.';\r\n $scope.processing = false;\r\n $scope.refundSubmitted = true;\r\n } else {\r\n // vista error \r\n $scope.processing = false;\r\n $scope.feedback = 'Error: ' + data.data.Message;\r\n $scope.isError = true;\r\n }\r\n }).catch(function (error) {\r\n // our server error \r\n $scope.processing = false;\r\n $scope.feedback = 'Error occurred while trying to submit the refund.';\r\n $scope.isError = true;\r\n });\r\n }\r\n };\r\n\r\n var init = function () {\r\n $scope.confirmationCode = getParameterByName('confirmationCode');\r\n $scope.isMidtownWebsite = window.location.href.toLowerCase().includes(\"midtown\") || window.location.href.toLowerCase().includes(\"refund-with-booking-fee\");\r\n if ($scope.confirmationCode) ctrl.loadBooking();\r\n };\r\n\r\n init();\r\n }\r\n ]);\r\n","angular.module('st')\n .controller('GiftCardController', [\n '$rootScope', '$scope', '$http', \n function ($rootScope, $scope, $http) {\n var ctrl = this;\n\n $scope.cardBalance = '';\n $scope.feedback = '';\n $scope.processing = false;\n\n $('input[name=\"cardNumber\"]').on('keypress change', function () {\r\n $(this).val(function (index, value) {\r\n return value.replace(/\\W/gi, '').replace(/(.{4})/g, '$1 ');\r\n });\r\n $(this).val($(this).val().length > 19 ? $(this).val().trim() : $(this).val());\r\n });\n\n ctrl.CheckBalance = function () {\r\n grecaptcha.ready(function() {\r\n grecaptcha.execute($('#captcha-site-key').val(), {action: ''}).then(function(token) {\n if ($scope.processing == false) {\n $scope.processing = true; \r\n $scope.feedback = 'Checking balance...';\r\n $scope.cardBalance = '';\n\n const formattedCardNumber = $scope.cardNumber.split(' ').join('');\n $http.post(\"/rpc/order/giftcard/balance\",\n {\n cardNumber : formattedCardNumber,\n pinNumber : $scope.pinNumber,\n captchaToken : token\n }).then(function (data) {\r\n\r\n if (data.data.Success == true) {\r\n console.log(data.data.Data.Balance);\r\n $scope.cardBalance = data.data.Data.Balance;\r\n $scope.feedback = '';\r\n $scope.processing = false;\r\n } else {\r\n // vista error\r\n $scope.processing = false;\r\n $scope.feedback = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n console.log('error', error);\r\n // our server error\r\n $scope.processing = false;\r\n $scope.feedback = 'Error occurred while trying to check balance.'\r\n })\r\n }\r\n });\r\n });\r\n }\n\n ctrl.IsFieldInvalid = function (field) {\n return field.$invalid && (field.$touched || $scope.frm.$submitted);\r\n }\n }\n ]);\n","angular.module('st')\r\n .filter('startFrom', function() {\r\n return function(input, start) {\r\n start = +start;\r\n return input.slice(start);\r\n };\r\n })\r\n .controller('crewardsHistoryController', [\r\n '$rootScope', '$scope', '$http', '$sce', '$timeout', '$filter', '$q',\r\n function($rootScope, $scope, $http, $sce, $timeout, $filter, $q) {\r\n var ctrl = this;\r\n ctrl.loadingmore = false;\r\n ctrl.loadedAll = false;\r\n ctrl.filterBy = '';\r\n\r\n $scope.currentPage = 1;\r\n $scope.pageSize = 10;\r\n\r\n // scroll to top on page change?\r\n // $scope.$watch('currentPage', function(newValue, oldValue) {\r\n // if (newValue != null && newValue != undefined && (newValue !== oldValue)) {\r\n // $('html, body').animate({ scrollTop: $(\".history\").offset().top}, 1000);\r\n // }\r\n // });\r\n\r\n $scope.$watch('orderBy', function(newValue, oldValue) {\r\n //console.log(newValue, oldValue);\r\n if (newValue != null && newValue != undefined && (newValue !== oldValue)) {\r\n $scope.currentPage = 1;\r\n }\r\n });\r\n\r\n // $scope.$watch('ctrl.filteredTransactions', function(newValue, oldValue) {\r\n // $scope.currentPage = 1;\r\n // if (newValue) {\r\n // $scope.lastPage = Math.ceil(ctrl.filteredTransactions.length / $scope.pageSize);\r\n // }\r\n // });\r\n ctrl.getSeatsForFirstOrders = function() {\r\n var howManyOrdersToGet = 3;\r\n var ordersGottenSoFar = 0;\r\n for(var i = 0; i < ctrl.filteredTransactions.length; i++) {\r\n //stop once 3 orders have been retrieved\r\n if (ordersGottenSoFar >= 3 ) { break; }\r\n\r\n if (ctrl.filteredTransactions && ctrl.filteredTransactions.length) {\r\n if (ctrl.filteredTransactions[i] && ctrl.filteredTransactions[i].bookingId && ctrl.filteredTransactions[i].vistaTransactionId) {\r\n if (ctrl.filteredTransactions[i].seatDetail || ctrl.filteredTransactions[i].isGetty || ctrl.filteredTransactions[i].noSeats || ctrl.filteredTransactions[i].gettingMoreDetails) {\r\n //if already getting info or has seat info don't load.\r\n } else {\r\n ctrl.getMoreDetails(ctrl.filteredTransactions[i]);\r\n ordersGottenSoFar++;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n ctrl.SetModel = function(data) {\r\n $scope.model = data;\r\n $scope.model.transactions = $scope.model.transactions || [];\r\n $scope.lastPage = Math.ceil($scope.model.transactions.length / $scope.pageSize);\r\n\r\n $timeout(function() {\r\n ctrl.getSeatsForFirstOrders();\r\n }, 1000); \r\n }\r\n\r\n ctrl.GetLocations = function(transactions) {\r\n var locArray = transactions.map(function(a) { return a.locationName; });\r\n distinctArray = locArray.filter(function(value, index, self) { return self.indexOf(value) === index; }).sort();\r\n\r\n return distinctArray;\r\n }\r\n\r\n ctrl.showOrderBarcode = function(id) {\r\n $('#js-barcode-modal').modal({ show: true, backdrop: 'static', keyboard: false });\r\n JsBarcode(\"#barcodemodal\", id, {\r\n lineColor: \"#000000\",\r\n });\r\n }\r\n\r\n ctrl.IsTransactionVisible = function(index) {\r\n if (ctrl.filteredTransactions.length <= $scope.pageSize) {\r\n return true;\r\n } else {\r\n var lowerLimit = ($scope.currentPage - 1) * $scope.pageSize;\r\n var upperLimit = ($scope.currentPage - 1) * $scope.pageSize + $scope.pageSize;\r\n\r\n return index >= lowerLimit && index < upperLimit;\r\n }\r\n }\r\n\r\n ctrl.getMoreDetails = function(item) {\r\n if (item.gettingMoreDetails) {\r\n return;\r\n }\r\n\r\n item.gettingMoreDetails = true;\r\n\r\n //var cinemaId = \"\";\r\n //var cinemaList = [{\"id\": \"002\",\"name\": \"GR North\"}, {\"id\": \"003\",\"name\": \"Crossroads\"}, {\"id\": \"004\",\"name\": \"GR South\"}, {\"id\": \"005\",\"name\": \"Rivertown\"}, {\"id\": \"006\",\"name\": \"Lansing\"}, {\"id\": \"007\",\"name\": \"Benton\"}, {\"id\": \"008\",\"name\": \"Mt Pleasant\"}, {\"id\": \"009\",\"name\": \"Carousel\"}, {\"id\": \"011\",\"name\": \"Getty\"}, {\"id\": \"012\",\"name\": \"Meridian Mall\"}, {\"id\": \"013\",\"name\": \"Studio Park/MT\"}];\r\n //var lowercaseCinema = item.locationName.toLowerCase().trim();\r\n\r\n //for(var i = 0; i < cinemaList.length; i++) {\r\n // var cinemaParts = cinemaList[i].name.toLowerCase().split(\" \");\r\n // for(var j = 0; j < cinemaParts.length; j++) {\r\n // var part = cinemaParts[j].trim();\r\n // if (lowercaseCinema.includes(part)) {\r\n // cinemaId = cinemaList[i].id;\r\n // break;\r\n // }\r\n // }\r\n //}\r\n\r\n //if (cinemaId === \"011\") {\r\n // item.isGetty = true;\r\n // item.gettingMoreDetails = false;\r\n // return;\r\n //}\r\n\r\n getMoreDetailsTransactions(item.vistaTransactionId, item.bookingId)\r\n .then(function(response) {\r\n //console.log(response);\r\n if (response && response.data) {\r\n ctrl.loadingmore = false;\r\n var r = response.data;\r\n var p = JSON.parse(r);\r\n var t = p.ResponseData;\r\n\r\n if (t) {\r\n var seatList = t.Seats.join(\", \");\r\n if (!seatList && !t.Screen) {\r\n item.noSeats = true;\r\n } else {\r\n item.seatDetail = { screen: t.Screen, seats: seatList };\r\n }\r\n } else { \r\n item.noSeats = true;\r\n }\r\n }\r\n })\r\n .catch(function(response) {})\r\n .finally(function(response) {\r\n item.gettingMoreDetails = false;\r\n });\r\n \r\n }\r\n\r\n ctrl.SelectUpdated = function(selectClass) {\r\n var text = $('select.' + selectClass + '>option:selected').html();\r\n var numLetters = text.length;\r\n var width = 100 + text.length * 7;\r\n var cssWidth = $(window).width() > 768 ? 192 : 159;\r\n width = width > cssWidth ? width : cssWidth;\r\n\r\n $('select.' + selectClass).css('width', width + 'px');\r\n $scope.currentPage = 1;\r\n\r\n if (ctrl.filterBy && ctrl.filterBy !== 'all') {\r\n var locationFilteredItems = $scope.model.transactions.filter(x => x.locationName == ctrl.filterBy).length;\r\n $scope.lastPage = Math.ceil(locationFilteredItems / $scope.pageSize);\r\n } else {\r\n $scope.lastPage = Math.ceil($scope.model.transactions.length / $scope.pageSize);\r\n }\r\n }\r\n\r\n ctrl.loadalltransactions = function() {\r\n if (ctrl.loadingmore) {\r\n return;\r\n }\r\n\r\n ctrl.loadingmore = true;\r\n getAllTransactions()\r\n .then(function(response) {\r\n if (response && response.data) {\r\n ctrl.loadingmore = false;\r\n var r = response.data;\r\n var p = JSON.parse(r);\r\n var t = p.items;\r\n\r\n if (t && t.length) {\r\n $scope.model.transactions = t || [];\r\n\r\n //reset filter on load more\r\n ctrl.filterBy = 'all';\r\n\r\n if (ctrl.filterBy && ctrl.filterBy !== 'all') {\r\n var locationFilteredItems = $scope.model.transactions.filter(x => x.locationName == ctrl.filterBy).length;\r\n $scope.lastPage = Math.ceil(locationFilteredItems / $scope.pageSize);\r\n } else {\r\n $scope.lastPage = Math.ceil(t.length / $scope.pageSize);\r\n }\r\n $scope.currentPage = 1;\r\n\r\n $('html, body').animate({ scrollTop: $(\".tab-configurator\").offset().top }, 1000);\r\n ctrl.loadedAll = true;\r\n }\r\n }\r\n })\r\n .catch(function(response) {})\r\n .finally(function(response) {\r\n ctrl.loadingmore = false;\r\n });\r\n }\r\n\r\n\r\n function getAllTransactions() {\r\n var config = {\r\n params: {}\r\n };\r\n var deferred = $q.defer();\r\n \r\n $http.get(\"/rpc/membership/account/history/all\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getMoreDetailsTransactions(transactionidparam, cinemaidparam) {\r\n transactionidparam = transactionidparam || \"\";\r\n cinemaidparam = cinemaidparam || \"\";\r\n\r\n var config = {\r\n transactionid: transactionidparam,\r\n bookingid: cinemaidparam\r\n };\r\n var deferred = $q.defer();\r\n \r\n $http.post(\"/rpc/membership/account/seatandcinema\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n }\r\n ]);","angular.module('st')\n .controller('crewardsLocationsController', [\n '$rootScope', '$scope', '$http', \n function ($rootScope, $scope, $http) {\n var ctrl = this;\n $scope.addLocationVisible = false;\n $scope.addLocationProcessing = false;\n $scope.removeLocationProcessing = false;\n\n ctrl.SetModel = function (savedLocations, siteGroups) {\n $scope.savedLocations = savedLocations;\r\n $scope.siteGroups = siteGroups;\r\n }\n \n ctrl.AddLocation = function (location) {\n if ($scope.addLocationProcessing == false) {\n $scope.addLocationProcessing = true;\r\n $scope.addLocationFeedback = 'Adding location...';\r\n $http.post(\"/rpc/membership/account/location-preferences/add/\" + location.vistaID)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.addLocationFeedback = '';\r\n $scope.addLocationProcessing = false;\r\n $scope.savedLocations.push(location);\r\n } else {\r\n // vista error\r\n $scope.addLocationProcessing = false;\r\n $scope.addLocationFeedback = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.addLocationProcessing = false;\r\n $scope.addLocationFeedback = 'Error occurred while trying to add location.'\r\n })\r\n }\r\n }\n\n ctrl.UpdateModelPostRemove = function (location) {\n for (var i = 0; i < $scope.savedLocations.length; i++) {\r\n if ($scope.savedLocations[i].vistaID == location.vistaID) {\r\n $scope.savedLocations.splice(i, 1);\r\n }\r\n }\r\n }\n\n ctrl.RemoveLocation = function (location) {\n if ($scope.removeLocationProcessing == false) {\n $scope.removeLocationProcessing = true;\r\n $scope.removeLocationFeedback = 'Removing location...';\r\n $http.post(\"/rpc/membership/account/location-preferences/remove/\" + location.vistaID)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.removeLocationFeedback = '';\r\n $scope.removeLocationProcessing = false;\r\n ctrl.UpdateModelPostRemove(location);\r\n } else {\r\n // vista error\r\n $scope.removeLocationProcessing = false;\r\n $scope.removeLocationFeedback = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.removeLocationProcessing = false;\r\n $scope.removeLocationFeedback = 'Error occurred while trying to add location.'\r\n })\r\n }\r\n }\n\n ctrl.IsLocationSaved = function (location) {\n for (var i = 0; i < $scope.savedLocations.length; i++) {\r\n var loopedLocation = $scope.savedLocations[i];\r\n if (loopedLocation.vistaID == location.vistaID) {\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\n\n ctrl.IsSiteGroupVisible = function(siteGroup){\r\n var cinemasToDisplay = 0;\r\n\r\n for (var i = 0; i < siteGroup.cinemas.length; i++) {\r\n var cinema = siteGroup.cinemas[i];\r\n var isSaved = ctrl.IsLocationSaved(cinema);\r\n\r\n if (isSaved == false) {\r\n cinemasToDisplay++;\r\n }\r\n }\r\n\r\n return cinemasToDisplay > 0;\r\n }\n \n }\n ]);\n","angular.module('st')\n .controller('crewardsManageSubscriptionController', [\n '$rootScope', '$scope', '$http', '$element',\n function ($rootScope, $scope, $http, $element) {\n var ctrl = this;\n $scope.feedback = '';\n $scope.processing = false;\n $scope.saveDisabled = true;\n\n ctrl.SetCreditCards = function (creditCards) {\n $scope.creditCards = creditCards;\r\n $rootScope.paymentMethods = creditCards;\r\n\r\n $scope.selectedCardToken = null;\r\n var temp = ctrl.GetSelectedCard();\r\n if (temp) {\r\n $scope.selectedCardToken = ctrl.GetSelectedCard().token\r\n } \r\n $rootScope.subscriptionPaymentToken = $scope.selectedCardToken;\r\n }\n\n ctrl.UpdatePreferences = function () {\n if ($scope.processing == false) {\n $scope.processing = true;\r\n $scope.feedback = '';\r\n $scope.saveDisabled = true;\r\n var token = $scope.selectedCardToken;\r\n $http.post(\"/rpc/membership/account/payment-method/set/\" + $scope.subscriptionId + \"/?token=\" + token)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n // success\r\n $scope.feedback = '';\r\n $scope.processing = false;\r\n $rootScope.subscriptionPaymentToken = token;\r\n } else {\r\n // vista error\r\n $scope.processing = false;\r\n $scope.saveDisabled = false;\r\n $scope.feedback = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.saveDisabled = false;\r\n $scope.feedback = 'Error occurred while trying to save settings.'\r\n })\r\n }\r\n }\n\n ctrl.ShowCancelModal = function(show) {\n let modal = $($element).find('.cancel-modal');\n if (show) modal.modal('show');\n else modal.modal('hide');\n };\n\n ctrl.ShowCancelledModal = function () {\n $($element).find('.cancelled-modal').modal('show');\n };\n\n ctrl.ShowReactivatedModal = function () {\n $($element).find('.reactivated-modal').modal('show');\n };\n\n ctrl.CancelSubscription = function () {\n if ($scope.processing == false) {\n $scope.processing = true;\r\n $scope.feedback = '';\r\n $scope.saveDisabled = true;\r\n $http.post(\"/rpc/membership/account/subscription/cancel/\" + $scope.subscriptionId)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n // success\r\n $scope.feedback = '';\r\n $scope.processing = false;\r\n $scope.cancellationProcessed = true;\r\n ctrl.ShowCancelModal(false);\r\n ctrl.ShowCancelledModal();\r\n } else {\r\n // vista error\r\n $scope.processing = false;\r\n $scope.saveDisabled = false;\r\n $scope.feedback = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.saveDisabled = false;\r\n $scope.feedback = 'Error occurred while trying to save settings.'\r\n })\r\n };\r\n };\n\n ctrl.RestoreSubscription = function () {\n if ($scope.processing == false) {\n $scope.processing = true;\r\n $scope.feedback = '';\r\n $scope.saveDisabled = true;\r\n $http.post(\"/rpc/membership/account/subscription/restore/\" + $scope.subscriptionId)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n // success\r\n $scope.feedback = '';\r\n $scope.processing = false;\r\n $scope.restoreProcessed = true;\r\n ctrl.ShowReactivatedModal();\r\n } else {\r\n // vista error\r\n $scope.processing = false;\r\n $scope.saveDisabled = false;\r\n $scope.feedback = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.saveDisabled = false;\r\n $scope.feedback = 'Error occurred while trying to save settings.'\r\n })\r\n };\r\n };\n\n ctrl.GetSelectedCard = function () {\n for (i = 0; i < $scope.creditCards.length; i++) {\n var card = $scope.creditCards[i];\n if (card.isSelectedMethod == true) {\r\n return card;\r\n }\r\n }\n\n return null;\n }\n\n $rootScope.$on('cardAdded', function (event, cardObj) {\r\n $scope.creditCards.push(cardObj);\r\n });\n $rootScope.$on('cardRemoved', function (event, removedCardToken) {\r\n for (i = 0; i < $scope.creditCards.length; i++) {\n var card = $scope.creditCards[i];\n if (card.token == removedCardToken) {\r\n $scope.creditCards.splice(i, 1);\r\n }\r\n }\r\n });\n }\n ] \n );\n","angular.module('st')\n .controller('crewardsPersonalInfoController', [\n '$rootScope', '$scope', '$http', '$sce', '$timeout','$location',\n function ($rootScope, $scope, $http, $sce, $timeout, $location) {\n var ctrl = this;\n \r\n $scope.States = {\r\n \"AL\": \"Alabama\",\r\n \"AK\": \"Alaska\",\r\n \"AZ\": \"Arizona\",\r\n \"AR\": \"Arkansas\",\r\n \"CA\": \"California\",\r\n \"CO\": \"Colorado\",\r\n \"CT\": \"Connecticut\",\r\n \"DE\": \"Delaware\",\r\n \"DC\": \"District Of Columbia\",\r\n \"FL\": \"Florida\",\r\n \"GA\": \"Georgia\",\r\n \"HI\": \"Hawaii\",\r\n \"ID\": \"Idaho\",\r\n \"IL\": \"Illinois\",\r\n \"IN\": \"Indiana\",\r\n \"IA\": \"Iowa\",\r\n \"KS\": \"Kansas\",\r\n \"KY\": \"Kentucky\",\r\n \"LA\": \"Louisiana\",\r\n \"ME\": \"Maine\",\r\n \"MD\": \"Maryland\",\r\n \"MA\": \"Massachusetts\",\r\n \"MI\": \"Michigan\",\r\n \"MN\": \"Minnesota\",\r\n \"MS\": \"Mississippi\",\r\n \"MO\": \"Missouri\",\r\n \"MT\": \"Montana\",\r\n \"NE\": \"Nebraska\",\r\n \"NV\": \"Nevada\",\r\n \"NH\": \"New Hampshire\",\r\n \"NJ\": \"New Jersey\",\r\n \"NM\": \"New Mexico\",\r\n \"NY\": \"New York\",\r\n \"NC\": \"North Carolina\",\r\n \"ND\": \"North Dakota\",\r\n \"OH\": \"Ohio\",\r\n \"OK\": \"Oklahoma\",\r\n \"OR\": \"Oregon\",\r\n \"PA\": \"Pennsylvania\",\r\n \"RI\": \"Rhode Island\",\r\n \"SC\": \"South Carolina\",\r\n \"SD\": \"South Dakota\",\r\n \"TN\": \"Tennessee\",\r\n \"TX\": \"Texas\",\r\n \"UT\": \"Utah\",\r\n \"VT\": \"Vermont\",\r\n \"VA\": \"Virginia\",\r\n \"WA\": \"Washington\",\r\n \"WV\": \"West Virginia\",\r\n \"WI\": \"Wisconsin\",\r\n \"WY\": \"Wyoming\"\r\n }\r\n $scope.formFeedback = '';\n $scope.processing = false;\n $scope.model = {};\n\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n const forgotPassword = urlParams.get('updatepassword')\n\n if (forgotPassword) {\n $('#update-password-modal').modal({ backdrop: 'static', keyboard: false, show: true });\n }\n\n ctrl.IsFieldInvalid = function(field) {\n return field.$invalid && (field.$touched || $scope.frm.$submitted);\r\n }\r\n \n ctrl.SubmitForm = function () {\r\n if (!$scope.frm.$valid) {\r\n var position = ($('.form-container .ng-invalid').first().offset().top) - 150;\r\n $('html, body').animate({\r\n scrollTop: position\r\n },500);\r\n return;\r\n }\r\n $scope.processing = true;\r\n $scope.formFeedback = 'Processing...';\r\n grecaptcha.ready(function() { \r\n grecaptcha.execute($('#captcha-site-key').val(), {action: ''}).then(function(token) { \r\n $scope.model.captchaToken = token;\r\n $http.post(\"/rpc/membership/account/personal-info\", $scope.model)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.formFeedback = '';\r\n $scope.processing = false;\r\n } else {\r\n // vista error\r\n $scope.processing = false;\r\n $scope.formFeedback = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.formFeedback = 'Error occurred while trying to submit the form.'\r\n })\r\n }); \r\n }); \r\n };\n\n ctrl.UpdatePasswordSubmit = function (form) {\n $scope.updatePasswordClicked = true;\r\n $scope.updatePasswordProcessing = true;\r\n $scope.updatePasswordFeedback = 'Updating password...';\r\n \r\n grecaptcha.ready(function() { \r\n grecaptcha.execute($('#captcha-site-key').val(), {action: ''}).then(function(token) { \r\n $scope.updatePasswordModel.captchaToken = token;\r\n $http.post(\"/rpc/membership/update-password\", $scope.updatePasswordModel)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n // success\r\n $scope.updatePasswordProcessing = false;\r\n $scope.updatePasswordFeedback = '';\r\n $scope.updatePasswordScreen = 'message';\r\n } else {\r\n // vista error\r\n var msg = data.data.Message;\r\n $scope.updatePasswordProcessing = false;\r\n $scope.updatePasswordFeedback = msg;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.updatePasswordProcessing = false;\r\n $scope.updatePasswordFeedback = 'Error occurred while trying to update the password.'\r\n })\r\n }); \r\n }); \r\n }\n\n ctrl.CloseModal = function () { \r\n $timeout(function () {\r\n $scope.updatePasswordProcessing = false;\n $scope.updatePasswordClicked = false;\n $scope.updatePasswordFeedback = '';\n $scope.updatePasswordModel.CurrentPassword = '';\n $scope.updatePasswordModel.NewPassword = '';\n $scope.updatePasswordModel.ConfirmPassword = '';\n $scope.updatepwform.$setPristine(true);\n $scope.updatepwform.$setUntouched(true);\r\n $scope.updatePasswordScreen = 'form';\r\n }, 1000);\r\n }\n\n ctrl.IsFieldInvalid = function (field, form) {\n return field.$invalid && (field.$touched || form.$submitted);\r\n }\n }\n ]);\n","angular.module('st')\n .controller('registerAccountController', [\n '$rootScope', '$scope', '$http', '$sce',\n function ($rootScope, $scope, $http, $sce) {\n var ctrl = this;\n\n var numberOfYears = (new Date()).getYear() - 8;\n $scope.Years = $.map($(Array(numberOfYears)), function (val, i) { return i + 1900; }).reverse();\r\n $scope.Months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n $scope.Days = $.map($(Array(31)), function (val, i) { return i + 1; });\n $scope.NumberOfDays = 31;\n $scope.findFormFeedback = '';\n $scope.findFormProcessing = false;\n $scope.accountFound = false;\n $scope.findFormModel = {};\n $scope.regFormModel = {};\n\n ctrl.init = function (redirectToUrl) {\n $scope.redirectToUrl = redirectToUrl;\n\n $('input[name=\"memberNumber\"]').on('keypress change', function () {\r\n $(this).val(function (index, value) {\r\n return value.replace(/\\W/gi, '').replace(/(.{4})/g, '$1 ');\r\n });\r\n $(this).val($(this).val().length > 19 ? $(this).val().trim() : $(this).val());\r\n });\r\n \r\n $('input[name=\"phoneNumber\"]').each(function () {\r\n $(this).on(\"change keyup paste\", function (e) {\r\n var output,\r\n $this = $(this),\r\n input = $this.val();\r\n\r\n if (e.keyCode != 8) {\r\n input = input.replace(/[^0-9]/g, '');\r\n var area = input.substr(0, 3);\r\n var pre = input.substr(3, 3);\r\n var tel = input.substr(6, 4);\r\n if (area.length < 3) {\r\n output = \"(\" + area;\r\n } else if (area.length == 3 && pre.length < 3) {\r\n output = \"(\" + area + \")\" + \" \" + pre;\r\n } else if (area.length == 3 && pre.length == 3) {\r\n output = \"(\" + area + \")\" + \" \" + pre + \"-\" + tel;\r\n }\r\n $this.val(output);\r\n }\r\n });\r\n });\r\n }\n\n ctrl.IsLeapYear = function (selectedYear) {\r\n var year = selectedYear || 0;\r\n return ((year % 400 == 0 || year % 100 != 0) && (year % 4 == 0)) ? 1 : 0;\r\n }\n\n ctrl.GetNumberOfDaysInMonth = function (selectedMonth) {\r\n return 31 - ((selectedMonth === 2) ? (3 - ctrl.IsLeapYear($scope.regFormModel.DobYear)) : ((selectedMonth - 1) % 7 % 2));\r\n }\n\n ctrl.UpdateNumberOfDays = function () {\n $scope.NumberOfDays = ctrl.GetNumberOfDaysInMonth($scope.regFormModel.DobMonth);\r\n }\n\n ctrl.IsFieldInvalid = function (field, form) {\n return field.$invalid && (field.$touched || form.$submitted);\r\n }\r\n \n ctrl.SubmitFindAcctForm = function () {\r\n $scope.findFormProcessing = true;\r\n $scope.findFormFeedback = 'Processing...';\r\n $scope.accountAlreadyRegistered = false;\r\n\r\n var url = \"/rpc/membership/find-account\";\r\n var memberNumber = $scope.findFormModel.MemberNumber.split(' ').join('');\r\n var phoneNumber = $scope.findFormModel.PhoneNumber.replace(/\\D/g, '');\r\n var payload = { CardNumber: memberNumber, PhoneNumber: phoneNumber };\r\n\r\n console.log('find acct form payload:')\r\n console.log(payload)\r\n\r\n grecaptcha.ready(function () {\r\n grecaptcha.execute($('#captcha-site-key').val(), { action: '' }).then(function (token) { \r\n payload.captchaToken = token\r\n $http.post(url, payload)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n var accountInfo = data.data.Data;\r\n $scope.findFormFeedback = '';\r\n $scope.findFormProcessing = false;\r\n\r\n \r\n if (accountInfo.DateOfBirth) {\r\n //original way of stopping a linked account, Vanessa said to remove (3/7/2024) for now due to bug with DOB being entered at cinema sometimes\r\n //$scope.accountAlreadyRegistered = true;\r\n //return;\r\n } \r\n\r\n $scope.accountFound = true;\r\n $scope.regFormModel.CardNumber = accountInfo.RewardsMemberNumber;\r\n $scope.regFormModel.PhoneNumber = accountInfo.PhoneNumber;\r\n $scope.regFormModel.FirstName = accountInfo.FirstName;\r\n $scope.regFormModel.LastName = accountInfo.LastName;\r\n $scope.regFormModel.Email = accountInfo.Email;\r\n } else {\r\n // vista error\r\n $scope.findFormProcessing = false;\r\n $scope.findFormFeedback = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.findFormProcessing = false;\r\n $scope.findFormFeedback = 'Error occurred while trying to submit the form.'\r\n })\r\n });\r\n }); \r\n };\n\n ctrl.SubmitRegisterForm = function () {\r\n\r\n $scope.regFormProcessing = true;\r\n $scope.regFormFeedback = 'Processing...';\r\n\r\n var url = \"/rpc/membership/register\";\r\n\r\n console.log('regFormModel')\r\n console.log($scope.regFormModel)\r\n\r\n grecaptcha.ready(function () {\r\n grecaptcha.execute($('#captcha-site-key').val(), { action: '' }).then(function (token) { \r\n $scope.regFormModel.captchaToken = token; \r\n $http.post(url, $scope.regFormModel)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.regFormFeedback = '';\r\n $scope.regFormProcessing = false;\r\n window.location.href = $scope.redirectToUrl;\r\n } else {\r\n // vista error\r\n $scope.regFormProcessing = false;\r\n $scope.regFormFeedback = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.regFormProcessing = false;\r\n $scope.regFormFeedback = 'Error occurred while trying to submit the form.'\r\n })\r\n });\r\n }); \r\n };\n }\n ]);\n","angular.module('st')\n .controller('crewardsSignupController', [\n '$rootScope','$scope','$http',\n function ($rootScope, $scope, $http) {\n var ctrl = this;\n\n var numberOfYears = (new Date()).getYear() - 8;\n $scope.Years = $.map($(Array(numberOfYears)), function (val, i) { return i + 1900; }).reverse();\r\n $scope.Months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n $scope.Days = $.map($(Array(31)), function (val, i) { return i + 1; });\n $scope.NumberOfDays = 31;\n $scope.formFeedback = '';\n $scope.processing = false;\n $scope.token = '';\n $scope.model = {};\n\n ctrl.IsLeapYear = function (selectedYear) {\r\n var year = selectedYear || 0;\r\n return ((year % 400 == 0 || year % 100 != 0) && (year % 4 == 0)) ? 1 : 0;\r\n }\n\n ctrl.GetNumberOfDaysInMonth = function (selectedMonth) {\r\n return 31 - ((selectedMonth === 2) ? (3 - ctrl.IsLeapYear($scope.model.DobYear)) : ((selectedMonth - 1) % 7 % 2));\r\n }\n\n ctrl.UpdateNumberOfDays = function () {\n $scope.NumberOfDays = ctrl.GetNumberOfDaysInMonth($scope.model.DobMonth);\r\n }\n\n ctrl.IsFieldInvalid = function(field) {\n return field.$invalid && (field.$touched || $scope.frm.$submitted);\r\n }\r\n\n ctrl.SubmitForm = function () {\r\n if (!$scope.frm.$valid) {\r\n var position = ($('.form-container .ng-invalid').first().offset().top) - 150;\r\n $('html, body').animate({\r\n scrollTop: position\r\n },500);\r\n return;\r\n }\r\n grecaptcha.ready(function() {\r\n grecaptcha.execute($('#captcha-site-key').val(), {action: ''}).then(function(token) {\r\n $scope.processing = true;\r\n $scope.formFeedback = 'Processing...';\r\n $scope.model.captchaToken = token;\r\n $http.post(\"/rpc/membership/register\", $scope.model)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.formFeedback = '';\r\n window.location.reload();\r\n } else {\r\n // vista error\r\n $scope.processing = false;\r\n $scope.formFeedback = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.formFeedback = 'Error occurred while trying to submit the form.'\r\n });\r\n });\r\n });\r\n }; \n }\n ]);","angular.module('st')\r\n .controller('crewardsStatusController', [\r\n '$rootScope','$scope','$http',\r\n function ($rootScope, $scope, $http) {\r\n console.log('signing user out');\r\n $http.get(\"/rpc/membership/logout\")\r\n .then(function (data) {\r\n console.log('user signed out', data);\r\n if (data.data.Success == true) {\r\n //window.location.reload();\r\n };\r\n }); \r\n }\r\n ]);","angular.module('st').controller('crewardsSubscriptionPaymentController', ['$scope','$http', function ($scope, $http) {\n\n $scope.months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n $scope.processing = false;\n $scope.model = {};\n $scope.form = {\n fields: {},\n labels: {\n cvv: 'CVV',\n cardBrand: 'Card'\n }\n };\n\n const makeField = function (id, placeholder) { return { id: placeholder } };\n\n const btForm = {\n fields: {\n cardholderName: makeField('#cc-name', 'Name on card'),\n cardNumber: makeField('#cc-number', 'Card Number'),\n cvv: makeField('#cc-cvv', '123'),\n expirationMonth: makeField('#cc-expiration-month', 'Month'),\n expirationYear: makeField('#cc-expiration-year', 'Year'), \n postalCode: makeField('#cc-zip-code', 'Zip Code')\n },\n classes: {\n valid: 'is-valid',\n invalid: 'is-invalid'\n },\n hostedFieldsInstance: null\n };\n const btFunctions = {};\n\n $scope.submitForm = function () {\n if ($scope.validateForm()) {\n btForm.hostedFieldsInstance.tokenize({\n cardholderName: $scope.form.fields.cardholderName\n }, function(err, payload) {\n if (err) {\n console.error(err);\n return;\n }\n\n $scope.processing = true;\n \n let params = {\n nonce: payload.nonce\n };\n console.log('payload')\n console.log(payload)\n $http.post(\"/rpc/membership/account/payment-method/add/\" + payload.nonce)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.processing = false;\r\n console.log('success!!!')\r\n } else {\r\n // vista error\r\n $scope.processing = false;\r\n $scope.feedback = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.feedback = 'Error occurred while trying to remove this credit card.'\r\n })\n //$http.post(\"/rpc/order/check-nonce\", params)\n // .then(function (d) {\n // if (d.data.Success == true) {\n // if (d.data.Data.Processed == true) {\n // $scope.formFeedback = \"Success: \" + d.data.Data.ProcessorResponse.AuthorizationCode;\n // }\n // else {\n // $scope.formFeedback = \"Fail: \" + d.data.Data.ProcessorResponse.ResponseText;\n // }\n // } else {\n // // vista error\n // $scope.processing = false;\n // $scope.formFeedback = 'Error: ' + d.data.Message;\n // }\n // }).catch(function (error) {\n // // our server error\n // $scope.processing = false;\n // $scope.formFeedback = 'Error occurred while trying to submit the form.'\n // })\n });\n } \n }; \n\n $scope.validateForm = function () {\n var formIsInvalid = false;\n var state = btForm.hostedFieldsInstance.getState();\n\n // non-hosted fields\n if (!btFunctions.validateInput($(btForm.fields.cardholderName.id))) {\n formIsInvalid = true;\n }\n\n // Loop through the Hosted Fields\n Object.keys(state.fields).forEach(function(field) {\n if (!state.fields[field].isValid) {\n $(state.fields[field].container).addClass(btForm.classes.invalid);\n formIsInvalid = true;\n }\n });\n\n return !formIsInvalid;\n };\n\n //***** Braintree funcs\n btFunctions.createInputChangeEventListener = function (element) {\n return function () {\n btFunctions.validateInput(element);\n }\n };\n\n btFunctions.setValidityClasses = function (element, validity) {\n if (validity) {\n element.removeClass(btForm.classes.invalid);\n element.addClass(btForm.classes.valid); \n } \n else {\n element.addClass(btForm.classes.invalid);\n element.removeClass(btForm.classes.valid); \n } \n }; \n\n btFunctions.validateInput = function (element) {\n\n if (!element.val().trim()) {\n btFunctions.setValidityClasses(element, false);\n return false;\n }\n\n btFunctions.setValidityClasses(element, true);\n return true;\n };\n\n btFunctions.validityChanged = function (event) {\n var field = event.fields[event.emittedBy];\n\n // Remove any previously applied error or warning classes\n $(field.container).removeClass(btForm.classes.valid).removeClass(btForm.classes.invalid);\n\n if (field.isValid) {\n $(field.container).addClass(btForm.classes.valid);\n } \n else if (!field.isPotentiallyValid) {\n $(field.container).addClass(btForm.classes.invalid);\n }\n };\n\n btFunctions.cardTypeChanged = function (event) {\n $scope.$evalAsync(function() { \n if (event.cards.length === 1) {\n var card = event.cards[0];\n $scope.form.labels.cardBrand = card.niceType;\n $scope.form.labels.cvv = card.code.name;\n } \n else {\n $scope.form.labels.cardBrand = 'Card';\n $scope.form.labels.cvv = 'CVV';\n }\n });\n };\n //****** End Braintree funcs\n\n $scope.initBraintree = function () {\n braintree.client.create({\n authorization: $scope.model.ClientToken\n }, function(err, clientInstance) {\n if (err) {\n console.error(err);\n return;\n }\n\n braintree.hostedFields.create({\n client: clientInstance,\n styles: {\n input: {\n // change input styles to match\n // bootstrap styles\n 'font-size': '1rem',\n color: '#495057'\n }\n },\n fields: {\n number: {\n selector: btForm.fields.cardNumber.id,\n placeholder: btForm.fields.cardNumber.placeholder\n },\n cvv: {\n selector: btForm.fields.cvv.id,\n placeholder: btForm.fields.cvv.placeholder\n },\n expirationMonth: {\n selector: btForm.fields.expirationMonth.id,\n placeholder: btForm.fields.expirationMonth.placeholder,\n select: { \n options: $scope.months \n }\n },\n expirationYear: {\n selector: btForm.fields.expirationYear.id,\n placeholder: btForm.fields.expirationYear.placeholder,\n select: true\n },\n postalCode: {\n selector: btForm.fields.postalCode.id,\n placeholder: btForm.fields.postalCode.placeholder,\n }\n }\n }, function(err, hostedFieldsInstance) {\n if (err) {\n console.error(err);\n return;\n }\n\n btForm.hostedFieldsInstance = hostedFieldsInstance;\n btForm.hostedFieldsInstance.on('validityChange', btFunctions.validityChanged);\n btForm.hostedFieldsInstance.on('cardTypeChange', btFunctions.cardTypeChanged);\n });\n });\n };\n\n $scope.init = function (model) {\n console.log('INITING')\n $scope.model = model;\n $scope.initBraintree();\n }; \n}]);","angular.module('st')\r\n .filter('startFrom', function() {\r\n return function(input, start) {\r\n start = +start;\r\n return input.slice(start);\r\n };\r\n })\r\n .controller('crewardsVipSubscriptionManagerController', [\r\n '$rootScope', '$scope', '$http', '$sce', '$filter', '$q', '$window',\r\n function($rootScope, $scope, $http, $sce, $filter, $q, $window) {\r\n var ctrl = this;\r\n ctrl.unlinkMemberCardNumber = null;\r\n ctrl.unlinkMemberEmail = null;\r\n ctrl.unlinkExternalMemberEmail = null;\r\n ctrl.nicknameMemberCardNumber = null;\r\n ctrl.nicknameMemberNickname = null;\r\n ctrl.processing = false;\r\n\r\n $scope.$watch(\r\n function () {\r\n return $window.MEMBER_CARD_NUMBER \r\n }, function(n,o){\r\n if (n) {\r\n ctrl.member_card_number = n;\r\n $(function () {\r\n $('[data-toggle=\"tooltip\"]').tooltip()\r\n });\r\n }\r\n }\r\n );\r\n\r\n ctrl.SetModel = function (data) {\r\n $scope.model = data;\r\n } \r\n\r\n ctrl.nicknamePrep = function (cardNumber, nickname) {\r\n $scope.errorMessage = null;\r\n ctrl.nicknameMemberCardNumber = cardNumber;\r\n ctrl.nicknameMemberNickname = nickname;\r\n }\r\n\r\n ctrl.unlinkPrep = function (cardNumber, email) {\r\n ctrl.unlinkMemberCardNumber = cardNumber;\r\n ctrl.unlinkMemberEmail = email;\r\n }\r\n\r\n ctrl.unlinkExternalPrep = function (email) {\r\n ctrl.unlinkExternalMemberEmail = email;\r\n }\r\n\r\n ctrl.unlinkExternal = function (externalEmail) {\r\n $scope.processing = true;\r\n $http.get(`/rpc/associated-members/remove-member-from-my-account/${externalEmail}`)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.processing = false;\r\n $scope.errorMessage2 = ''; \r\n ctrl.RemoveCardFromMyModel(externalEmail);\r\n $('#linkedExternalModal').modal('hide');\r\n ctrl.unlinkExternalMemberEmail = null;\r\n } else {\r\n // vista error\r\n $scope.processing = false;\r\n $scope.errorMessage2 = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.errorMessage2 = 'Error occurred while trying to remove this card.'\r\n })\r\n }\r\n\r\n ctrl.updateNickName = function () {\r\n var cardnumber = ctrl.nicknameMemberCardNumber;\r\n var nickname = ctrl.nicknameMemberNickname;\r\n\r\n if ($scope.processing) {\r\n return;\r\n }\r\n\r\n $scope.processing = true;\r\n\r\n updatenickName(cardnumber, nickname)\r\n .then(function(response) {\r\n if (response && response.data) {\r\n ctrl.loadingmore = false;\r\n var r = response.data;\r\n if (r.Success) {\r\n $scope.processing = false;\r\n $scope.errorMessage = '';\r\n \r\n $scope.model.associatedMembers.forEach(function(m) { \r\n if (m.cardNumber === cardnumber) {\r\n m.nickname = r.Message;\r\n }\r\n });\r\n\r\n $('#nicknameModal').modal('hide');\r\n ctrl.nicknameMemberCardNumber = null;\r\n ctrl.nicknameMemberNickname = null;\r\n } else {\r\n // vista error\r\n $scope.processing = false;\r\n $scope.errorMessage = 'Error: ' + r.Message;\r\n }\r\n }\r\n })\r\n .catch(function(response) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.errorMessage = 'Error occurred while trying to update this nickname.'\r\n })\r\n .finally(function(response) {\r\n });\r\n }\r\n\r\n ctrl.unlink = function (cardNumber) {\r\n\r\n $scope.processing = true;\r\n $http.get(`/rpc/associated-members/remove-member-from-account/${cardNumber}`)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.processing = false;\r\n $scope.errorMessage = ''; \r\n ctrl.RemoveCardFromModel(cardNumber);\r\n $('#linkedModal').modal('hide');\r\n ctrl.unlinkMemberCardNumber = null;\r\n ctrl.unlinkMemberEmail = null;\r\n } else {\r\n // vista error\r\n $scope.processing = false;\r\n $scope.errorMessage = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.errorMessage = 'Error occurred while trying to remove this card.'\r\n })\r\n }\r\n\r\n\r\n ctrl.RemoveCardFromModel = function (cardNumber) {\r\n for (var i = 0; i < $scope.model.associatedMembers.length; i++) {\r\n if ($scope.model.associatedMembers) {\r\n $scope.model.associatedMembers = $scope.model.associatedMembers.filter(member => member.cardNumber != cardNumber)\r\n }\r\n }\r\n //$rootScope.$emit('cardRemoved', $scope.model.associatedMembers);\r\n }\r\n\r\n ctrl.RemoveCardFromMyModel = function (externalemail) {\r\n for (var i = 0; i < $scope.model.linkedEmails.length; i++) {\r\n if ($scope.model.linkedEmails) {\r\n $scope.model.linkedEmails = $scope.model.linkedEmails.filter(email => email != externalemail)\r\n }\r\n }\r\n //$rootScope.$emit('cardRemoved', $scope.model.associatedMembers);\r\n }\r\n\r\n ctrl.linkAccount = function () {\r\n $scope.errorMessage = '';\r\n $scope.processing = true;\r\n if (!ctrl.newCardNumber) {\r\n $scope.errorMessage = \"You must enter a card number to link an account\";\r\n $scope.processing = false;\r\n } else if (!ctrl.newEmail || !/(.+)@(.+){2,}\\.(.+){2,}/.test(ctrl.newEmail) ) { \r\n $scope.errorMessage = \"You must enter a valid email to link an account\";\r\n $scope.processing = false;\r\n } else {\r\n $http.get(`/rpc/associated-members/add-member-to-account/${ctrl.newCardNumber}/${ctrl.newEmail}`)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.processing = false;\r\n $scope.feedback = '';\r\n const member = data.data.Data;\r\n const mappedMember = {\r\n \"cardNumber\": member.CardNumber,\r\n \"quantityAvailable\": member.QuantityAvailable,\r\n \"vipPoints\": member.VIPPoints\r\n }\r\n console.log('mappedMember', mappedMember);\r\n $scope.model.associatedMembers.push(mappedMember);\r\n } else {\r\n // vista error\r\n $scope.processing = false;\r\n $scope.errorMessage = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.feedback = 'Error occurred while trying to remove this credit card.'\r\n });\r\n }\r\n }\r\n\r\n function updatenickName(cardnumberparam, nicknameparam) {\r\n cardnumberparam = cardnumberparam || \"\";\r\n nicknameparam = nicknameparam || \"\";\r\n\r\n var config = {\r\n cardnumber: cardnumberparam,\r\n nickname: nicknameparam\r\n };\r\n var deferred = $q.defer();\r\n \r\n $http.post(\"/rpc/associated-members/update-member-nickname\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n }\r\n ]);","angular.module('st')\n .controller('crewardsWatchlistController', [\n '$rootScope', '$scope', '$http', '$filter',\n function ($rootScope, $scope, $http, $filter) {\n var ctrl = this;\n $scope.removeFilmFeedback = '';\n $scope.removeFilmProcessing = false;\n $scope.removeShowFeedback = '';\n $scope.removeShowProcessing = false;\n $scope.watchlist = [];\n\n ctrl.SetWatchlist = function (watchlistIDs) {\n $scope.watchlist = watchlistIDs;\r\n }\n\n ctrl.GoToEditEmail = function () {\n $('a[aria-controls=\"my account\"]').click();\r\n }\n\n ctrl.RemoveFilm = function (filmCode, event) {\n if ($scope.removeFilmProcessing == false) {\n $scope.removeFilmProcessing = true;\r\n $scope.removeFilmFeedback = '';\r\n\r\n $http.post(\"/rpc/membership/account/watchlist/remove/\" + filmCode)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n // success\r\n $scope.removeFilmFeedback = '';\r\n $scope.removeFilmProcessing = false;\r\n\r\n var index = $scope.watchlist.indexOf(filmCode);\r\n $scope.watchlist.splice(index, 1);\r\n \r\n // remove movie from the carousel\r\n var length = $scope.watchlist.length;\r\n if (length >=4) { \r\n var a = event.target;\r\n var slickIndex = $(a).closest('.watchlist-item').data('slick-index');\r\n var jQueryIndex = $('.movie-poster-carousel').index(a);\r\n\r\n $('.carousel-watchlist-item[data-slick-index=\"' + slickIndex + '\"]').attr('style', 'display: none !important;');\r\n $('.movie-poster-carousel').slick('slickRemove', jQueryIndex);\r\n } else {\r\n $('.arrows').removeClass('d-md-flex');\r\n $('.movie-poster-carousel').slick('unslick');\r\n }\r\n } else {\r\n // vista error\r\n $scope.removeFilmProcessing = false;\r\n $scope.removeFilmFeedback = 'Error: ' + data.data.Message;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.removeFilmProcessing = false;\r\n $scope.removeFilmFeedback = 'Error occurred while trying to remove film.'\r\n })\r\n }\r\n }\n\n ctrl.RemoveShow = function (showCode, event) {\n event.preventDefault();\n\n if ($scope.removeShowProcessing == false) {\n $scope.removeShowProcessing = true;\r\n $scope.removeShowFeedback = '';\r\n\r\n $http.post(\"/rpc/membership/account/shows/remove/\" + showCode)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n // success\r\n $scope.removeShowFeedback = '';\r\n $scope.removeShowProcessing = false;\r\n\r\n var index = $scope.watchlist.indexOf(showCode);\r\n $scope.watchlist.splice(index, 1);\r\n\r\n var length = $scope.watchlist.length;\r\n\r\n if (length >=3) { \r\n var a = event.target;\r\n\r\n var slickIndex = $(a).closest('.watchlist-item').data('slick-index');\r\n var jQueryIndex = $('main div[data-slick-index=\"' + slickIndex + '\"]').index()\r\n \r\n $('main .carousel-watchlist-item[data-slick-index=\"' + slickIndex + '\"]').attr('style', 'display: none !important;');\r\n $('main .watchlist-carousel .row').slick('slickRemove', jQueryIndex);\r\n\r\n if(length == 3){\r\n $('.watchlist-carousel').removeClass('d-md-block');\r\n $('.watchlist-static').removeClass('d-md-none');\r\n $('.arrows-and-text').css('display', 'none');\r\n }\r\n } \r\n } else {\r\n // vista error\r\n $scope.removeShowProcessing = false;\r\n $scope.removeShowFeedback = 'Error: ' + data.data.Message;\r\n alert('Error: ' + data.data.Message);\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.removeShowProcessing = false;\r\n $scope.removeShowFeedback = 'Error occurred while trying to remove show.'\r\n alert('Error occurred while trying to remove show.');\r\n })\r\n }\r\n }\n }\n ]);\n","angular.module('st')\n .controller('signInController', [\n '$rootScope','$scope','$timeout','$http', '$location',\n function ($rootScope,$scope,$timeout,$http,$location) {\n var ctrl = this; \r\n\n ctrl.Init = function (isPasswordReset, resetCode) {\n $scope.currentScreen = 'signin';\n $scope.processing = false;\n $scope.isPasswordReset = false;\n $scope.feedback = '';\n $scope.signInModel = {};\n $scope.resetPwModel = {};\n\n var params = $location.search();\n //console.log('params',params);\n\n if (isPasswordReset == true) {\r\n $scope.resetPwModel.ResetCode = resetCode;\r\n $scope.isPasswordReset = true;\n $scope.currentScreen = 'resetpw';\r\n $('#sign-in-modal').modal({ backdrop: 'static', keyboard: false, show: true });\r\n }\r\n }\n\n $scope.$watch('currentScreen', function (newValue, oldValue) {\n // set forms to their pristine state on screen change, in case they go back \n // to them later, like the sign in form after clicking forgot password and then signing in again\n if (oldValue == 'signin' && newValue == 'forgotpw') {\n ctrl.ResetSignInForm();\r\n }\n if ((oldValue == 'forgotpw' && newValue == 'pwlinksent') || (oldValue == 'resetpw' && newValue == 'pwchanged')) {\n ctrl.ResetForgotPwForm();\r\n }\n });\n\n ctrl.SignInSubmit = function (form) {\n $scope.signInClicked = true;\r\n $scope.processing = true;\r\n $scope.feedback = 'Signing in...'\r\n grecaptcha.ready(function () {\r\n grecaptcha.execute($('#captcha-site-key').val(), { action: '' }).then(function (token) { \r\n $scope.signInModel.captchaToken = token;\r\n $http.post(\"/rpc/membership/login\", $scope.signInModel)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.feedback = '';\r\n if ($scope.isPasswordReset == true) {\r\n // if they sign in right after resetting the password, remove the code from the url\r\n window.location.href = ctrl.RemoveQSParam('code', window.location.href)\r\n } else {\r\n window.location.reload();\r\n }\r\n } else {\r\n // vista error\r\n var msg = data.data.Message;\r\n $scope.processing = false;\r\n $scope.feedback = msg;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.feedback = 'Error occurred while trying to sign in.'\r\n })\r\n });\r\n }); \r\n }\n\n ctrl.ForgotPwSubmit = function (form) {\n $scope.fgtPwEmailEntered = true;\r\n $scope.processing = true;\r\n $scope.feedback = 'Sending password reset link...';\r\n\r\n grecaptcha.ready(function () {\r\n grecaptcha.execute($('#captcha-site-key').val(), { action: '' }).then(function (token) { \r\n $http.post(\"/rpc/membership/reset-password/initiate\", { emailAddress: $scope.fpemail, captchaToken: token } )\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.currentScreen = 'pwlinksent';\r\n $scope.feedback = '';\r\n } else {\r\n // vista error\r\n var msg = data.data.Message;\r\n $scope.processing = false;\r\n $scope.feedback = msg;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.feedback = 'Error occurred while trying to send the password reset link.'\r\n })\r\n });\r\n }); \r\n }\n\n ctrl.ResetPwSubmit = function (form) {\n $scope.resetPasswordClicked = true;\r\n $scope.processing = true;\r\n $scope.feedback = 'Resetting password...';\r\n grecaptcha.ready(function () {\r\n grecaptcha.execute($('#captcha-site-key').val(), { action: '' }).then(function (token) { \r\n $scope.resetPwModel.captchaToken = token\r\n\r\n $http.post(\"/rpc/membership/reset-password/complete\", $scope.resetPwModel)\r\n .then(function (data) {\r\n if (data.data.Success == true) {\r\n $scope.processing = false;\r\n $scope.currentScreen = 'pwchanged';\r\n $scope.feedback = '';\r\n window.location.href = \"/\";\r\n } else {\r\n // vista error\r\n var msg = data.data.Message;\r\n $scope.processing = false;\r\n $scope.feedback = msg;\r\n }\r\n }).catch(function (error) {\r\n // our server error\r\n $scope.processing = false;\r\n $scope.feedback = 'Error occurred while trying to reset the password.'\r\n })\r\n });\r\n }); \r\n }\n\n ctrl.ResetSignInForm = function () {\n $scope.processing = false;\n $scope.signInClicked = false;\n $scope.feedback = '';\n $scope.signInModel.Username = '';\n $scope.signInModel.Password = '';\n $scope.signinform.$setPristine(true);\n $scope.signinform.$setUntouched(true);\r\n }\n\n ctrl.ResetForgotPwForm = function () {\n $scope.processing = false;\n $scope.fgtPwEmailEntered = false;\n $scope.feedback = '';\n $scope.fpemail = '';\n $scope.forgotpwform.$setPristine(true);\n $scope.forgotpwform.$setUntouched(true);\r\n }\n\n ctrl.CloseModal = function () { \r\n $timeout(function () {\r\n ctrl.ResetSignInForm();\r\n ctrl.ResetForgotPwForm();\r\n $scope.currentScreen = 'signin';\r\n }, 1000);\r\n }\n\n ctrl.IsFieldInvalid = function (field, form) {\n return field.$invalid && (field.$touched || form.$submitted);\r\n }\n\n ctrl.IsVistaError = function (form) {\n var signInError = form.$name == 'signinform' && $scope.feedback.toLowerCase().indexOf('username and/or password') > -1;\n var forgotPwError = form.$name == 'forgotpwform' && $scope.feedback.toLowerCase().indexOf('account not found') > -1;\n return signInError || forgotPwError;\r\n }\n \n ctrl.RemoveQSParam = function (key, sourceURL) {\r\n var rtn = sourceURL.split(\"?\")[0],\r\n param,\r\n params_arr = [],\r\n queryString = (sourceURL.indexOf(\"?\") !== -1) ? sourceURL.split(\"?\")[1] : \"\";\r\n if (queryString !== \"\") {\r\n params_arr = queryString.split(\"&\");\r\n for (var i = params_arr.length - 1; i >= 0; i -= 1) {\r\n param = params_arr[i].split(\"=\")[0];\r\n if (param === key) {\r\n params_arr.splice(i, 1);\r\n }\r\n }\r\n rtn = rtn + \"?\" + params_arr.join(\"&\");\r\n }\r\n return rtn;\r\n }\n }\n ]);\n","(function () {\r\n var msDateRE = /^\\/Date\\((\\d+)\\)\\/$/;\r\n if ('angular' in window) {\r\n angular.element(document).ready(function () {\r\n var modules = [];\r\n if ('st' in window && st.modules) {\r\n modules = st.modules;\r\n }\r\n \r\n angular.module('st', [])\r\n .filter('format', function () {\r\n return function (formatStr, items) {\r\n if (!items || !items.length) {\r\n return formatStr;\r\n }\r\n return items.reduce(function (formatted, item, i) {\r\n return formatted.replace(new RegExp('\\\\{' + i + '\\\\}'), item);\r\n }, formatStr);\r\n };\r\n })\r\n .filter('msDate', ['$filter', function ($filter) {\r\n return function (input, format, timezone) {\r\n var ms;\r\n if (input && (ms = input.match(msDateRE))) {\r\n return $filter('date')(ms[1], format, timezone);\r\n }\r\n return $filter('date')(input, format, timezone);\r\n };\r\n }])\r\n .config(['$locationProvider', function ($locationProvider) {\r\n $locationProvider.html5Mode({\r\n enabled: true,\r\n requireBase: false,\r\n rewriteLinks: false\r\n });\r\n }])\r\n .config(['$httpProvider', function($httpProvider) {\r\n //get\r\n if (!$httpProvider.defaults.headers.get) {\r\n $httpProvider.defaults.headers.get = {}; \r\n }\r\n $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';\r\n $httpProvider.defaults.headers.get['Pragma'] = 'no-cache';\r\n //post\r\n if (!$httpProvider.defaults.headers.post) {\r\n $httpProvider.defaults.headers.post = {}; \r\n } \r\n $httpProvider.defaults.headers.post['Cache-Control'] = 'no-cache';\r\n $httpProvider.defaults.headers.post['Pragma'] = 'no-cache';\r\n }]);\r\n\r\n // add any custom modules used in this project in the array below\r\n //angular.bootstrap(document.body, modules);\r\n });\r\n }\r\n})();"]}