{"version":3,"sources":["../webpack/bootstrap","../../../../../../../../external/underscore","../../../../../../../../external/@bingads-webui/listener","../webpack-src:/in-memory-listener/index.js","../webpack-src:/in-memory-listener/src/in-memory-listener.es","../webpack-src:/in-memory-listener/src/in-memory-sink.es","../webpack-src:/in-memory-listener/src/session-storage-sink.es","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../node_modules/@bingads-webui/adlibrary-fetch-layer/src/constants.js","../../../node_modules/@bingads-webui/adlibrary-fetch-layer/src/helpers.js","../../../node_modules/@bingads-webui/adlibrary-fetch-layer/src/fetch-provider.js","../webpack-src:/console-listener/index.js","../webpack-src:/console-listener/src/index.es","../../../../../../../../external/underscore.string","../webpack-src:/listener/index.js","../webpack-src:/listener/src/index.es","../webpack-src:/listener/src/formatter.es","../webpack-src:/listener/src/filter.es","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-header/logo-image.js","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-header/header.js","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-menu/page-menu-item.js","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-menu/toggle-menu-button.js","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-menu/page-menu-list.js","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-menu/page-config.js","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-menu/page-menu.js","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-footer/footer.js","../webpack-src:/theme-fluent/index.js","../webpack-src:/theme-fluent/src/components/index.js","../webpack-src:/theme-fluent/src/components/alert-style.js","../webpack-src:/theme-fluent/src/components/button-input-style.js","../webpack-src:/theme-fluent/src/components/button-style.js","../webpack-src:/theme-fluent/src/components/close-image-style.js","../webpack-src:/theme-fluent/src/components/control.js","../webpack-src:/theme-fluent/src/components/date-picker-style.js","../webpack-src:/theme-fluent/src/components/drop-down-editor-style.js","../webpack-src:/theme-fluent/src/components/fabric-panel-style.js","../webpack-src:/theme-fluent/src/components/float-button-style.js","../webpack-src:/theme-fluent/src/components/grid-inline-error-style.js","../webpack-src:/theme-fluent/src/components/help-button-style.js","../webpack-src:/theme-fluent/src/components/inline-editor-style.js","../webpack-src:/theme-fluent/src/components/inline-error-style.js","../webpack-src:/theme-fluent/src/components/scrollbar-style.js","../webpack-src:/theme-fluent/src/components/search-box-style.js","../webpack-src:/theme-fluent/src/components/search-box.js","../webpack-src:/theme-fluent/src/components/entity-selector-style.js","../webpack-src:/theme-fluent/src/components/pagination-style.js","../webpack-src:/theme-fluent/src/components/status-style.js","../webpack-src:/theme-fluent/src/components/toggle-button-style.js","../webpack-src:/theme-fluent/src/components/underline-link-style.js","../webpack-src:/theme-fluent/src/components/internal-link-style.js","../webpack-src:/theme-fluent/src/components/spinner-style.js","../webpack-src:/theme-fluent/src/components/ui-blocker-style.js","../webpack-src:/theme-fluent/src/constants/index.js","../webpack-src:/theme-fluent/src/constants/zindexes.js","../webpack-src:/theme-fluent/src/constants/pagePadding.js","../webpack-src:/theme-fluent/src/components/grid-plugins/top-grid-panel-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/column-chooser-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/column-chooser-override-style.js","../webpack-src:/theme-fluent/src/components/new-feature-label-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/filter-editor-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/filter-editor-override-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/legacy-filter-bar-style.js","../webpack-src:/theme-fluent/src/components/grid-shared/index.js","../webpack-src:/theme-fluent/src/components/grid-shared/body.js","../webpack-src:/theme-fluent/src/components/grid-shared/variables.js","../webpack-src:/theme-fluent/src/components/grid-shared/col-group.js","../webpack-src:/theme-fluent/src/components/grid-shared/columns.js","../webpack-src:/theme-fluent/src/components/grid-shared/footer.js","../webpack-src:/theme-fluent/src/components/grid-shared/global.js","../webpack-src:/theme-fluent/src/components/grid-shared/header.js","../webpack-src:/theme-fluent/src/components/grid-shared/table.js","../webpack-src:/theme-fluent/src/core/index.js","../webpack-src:/theme-fluent/src/core/theme-fluent.js","../../../../../../../../external/@fluentui/react","../webpack-src:/theme-fluent/src/core/dark-theme.js","../../../../../../../../external/bluebird","../webpack-src:/page-ready/index.js","../webpack-src:/page-ready/src/index.es","../webpack-src:/page-ready/src/page-ready.es","../webpack/universalModuleDefinition","../webpack-src:/instrumentation/index.js","../webpack-src:/instrumentation/src/instrumentation.js","../webpack-src:/instrumentation/src/default-config.js","../webpack-src:/instrumentation/src/loggers/trace-logger.es","../../../../../../../../external/@bingads-webui-universal/primitive-utilities","../webpack-src:/instrumentation/src/constants.es","../webpack-src:/instrumentation/src/loggers/logger.es","../webpack-src:/instrumentation/src/loggers/perf-logger.es","../webpack-src:/instrumentation/src/loggers/error-logger.es","../webpack-src:/instrumentation/src/loggers/ajax-logger.es","../webpack-src:/instrumentation/src/processors/scenario-processor.es","../webpack-src:/instrumentation/src/loggers/substrate-logger.js","../webpack-src:/instrumentation/src/logging-service.js","../webpack-src:/instrumentation/src/scenario-factory.es","../webpack-src:/instrumentation/src/activity-factory.es","../webpack-src:/instrumentation/src/log-transmitter.es","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/mode.js","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/layout-configs.js","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/layout-context.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/components.js","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/styles-container.js","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/layout-container.js","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/layout.js","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/with-layout.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../webpack-src:/primitive-utilities/index.ts","../webpack-src:/primitive-utilities/src/index.ts","../webpack-src:/primitive-utilities/src/lodash.ts","../webpack-src:/primitive-utilities/src/string.ts","../webpack-src:/primitive-utilities/src/guid.ts","../webpack-src:/primitive-utilities/src/date.ts","../webpack-src:/primitive-utilities/src/file.ts","../webpack-src:/primitive-utilities/src/promise.ts","../webpack-src:/primitive-utilities/src/color.ts","../webpack-src:/primitive-utilities/src/number.ts","../webpack-src:/primitive-utilities/src/memoize.ts","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/inherits.js","../webpack-src:/i18n-model/index.js","../webpack-src:/i18n-model/src/index.js","../../../../../../../../external/globalize","../webpack-src:/i18n-model/src/locale.js","../webpack-src:/i18n-model/src/resource.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../webpack-src:/i18n-mock/index.js","../webpack-src:/i18n-mock/src/index.es","../webpack-src:/i18n-mock/src/fixed-i18n-mock.es","../webpack-src:/i18n-mock/src/static-i18n-mock.es","../webpack-src:/i18n-mock/src/model-i18n-mock.es","../../../../../../../../external/@bingads-webui-universal/i18n-cldr-data-modern/core.json","../../../../../../../../external/@bingads-webui-universal/i18n-cldr-data-modern/locales/en.json","../../../../../../../../external/@bingads-webui-universal/i18n-model","../webpack-src:/i18n-mock/src/shims/module-i18n-shim.js","../webpack-src:/i18n-mock/src/shims/string-utils.js","../webpack-src:/i18n-mock/src/shims/component-i18n-shim.js","../../../../../../../../external/iana-tz-data","../webpack-src:/i18n-mock/src/static-i18n-model-mock.es","../../../../../../../../external/iana-tz-data/iana-tz-data.json","../../../../../../../../external/urijs","../webpack-src:/url-util/index.ts","../webpack-src:/url-util/src/index.ts","../webpack-src:/url-util/src/top-domain.ts","../../../../../../../../external/jquery","../webpack-src:/performance-marker/index.js","../webpack-src:/performance-marker/src/index.es","../webpack-src:/performance-marker/src/activity.es","../webpack-src:/performance-marker/src/marker.es","../../../../../../../../external/@bingads-webui/page-ready","../webpack-src:/performance-marker/src/helpers.es","../webpack-src:/performance-marker/src/proptypes.es","../../../../../../../../external/prop-types","../../../../../../../../external/@bingads-webui/url-util","../webpack-src:/instrumentation/src/ariaConfig.js","../webpack-src:/instrumentation/src/log-table-configs/campaign.js","../../../../../../../../external/@bingads-webui/instrumentation","../webpack-src:/instrumentation/src/log-table-configs/adinsight.js","../webpack-src:/instrumentation/src/log-processors/context-processor.js","../webpack-src:/instrumentation/src/log-processors/debug-processor.js","../webpack-src:/instrumentation/src/log-processors/perf-timing-processor.js","../webpack-src:/instrumentation/src/log-formatters/basic-formatter.js","../webpack-src:/instrumentation/src/log-formatters/format-utilities.js","../webpack-src:/instrumentation/src/log-formatters/api-formatter.js","../webpack-src:/instrumentation/src/log-formatters/adinsight-opportunity-log-formatter.js","../webpack-src:/instrumentation/src/log-formatters/reporting-api-formatter.js","../webpack-src:/instrumentation/src/log-formatters/uettaghelper-formatter.js","../webpack-src:/instrumentation/src/log-formatters/import-api-formatter.js","../webpack-src:/instrumentation/src/log-formatters/console-formatter.js","../webpack-src:/instrumentation/src/log-formatters/perf-timing-formatter.js","../webpack-src:/instrumentation/src/log-filters/log-level-filter.js","../webpack-src:/instrumentation/src/log-filters/api-filter.js","../webpack-src:/instrumentation/src/log-filters/adinsight-opportunity-api-filter.js","../webpack-src:/instrumentation/src/log-filters/console-filter.js","../webpack-src:/instrumentation/src/log-filters/unload-log-filter.js","../webpack-src:/instrumentation/src/log-filters/perf-timing-filter.js","../webpack-src:/instrumentation/src/ajax-error-mappers/odata-error-mapper.js","../webpack-src:/instrumentation/src/ajax-error-mappers/campaignapi-error-mapper.js","../webpack-src:/instrumentation/src/ajax-error-mappers/url-error-mapper.js","../webpack-src:/instrumentation/src/utilities/environment-helper.js","../webpack-src:/instrumentation/src/local-storage-log-retriever.js","../webpack-src:/instrumentation/src/utilities/default-error-codes.js","../../../node_modules/@bingads-webui/adlibrary-instrumentation/src/instrumentation-schema.js","../../../node_modules/@bingads-webui/adlibrary-instrumentation/src/instrumentation.js","../../../node_modules/@bingads-webui/adlibrary-instrumentation/src/instrumentation-context.js","../webpack-src:/instrumentation-setup/index.js","../webpack-src:/instrumentation-setup/src/instrumentation.js","../../../../../../../../external/@bingads-webui/performance-timing-logger","../../../../../../../../external/@bingads-webui/performance-marker","../webpack-src:/instrumentation-setup/src/listeners.js","../../../../../../../../external/@bingads-webui/aria-listener","../../../../../../../../external/@bingads-webui/console-listener","../../../../../../../../external/@bingads-webui/local-storage-listener","../../../../../../../../external/@bingads-webui/in-memory-listener","../../../../../../../../external/@bingads-webui-campaign/instrumentation","../webpack-src:/instrumentation-setup/src/processors.js","../webpack-src:/instrumentation-setup/src/set-stub.js","../../../../../../../../external/@bingads-webui/instrumentation-stubs","../webpack-src:/instrumentation-setup/src/perf-timing-config.es","../webpack-src:/instrumentation-setup/src/instrumentation-schema.js","../webpack-src:/instrumentation-stubs/index.js","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-stub.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-interceptor.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-event-interceptor.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/default-config.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-event-handler.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-stub-schema.es","../webpack-src:/instrumentation-stubs/src/error-stub/error-stub.es","../../../../../../../../external/stacktrace-js","../webpack-src:/instrumentation-stubs/src/error-stub/error-stub-schema.es","../webpack-src:/aria-listener/index.js","../webpack-src:/aria-listener/src/aria-listener.es","../../../../../../../../external/@aria/webjs-sdk","../webpack-src:/aria-listener/src/default-config.es","../webpack-src:/aria-listener/src/formatters/log-property-formatter.es","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/createClass.js","../webpack-src:/local-storage-listener/index.js","../webpack-src:/local-storage-listener/src/local-storage-listener.es","../webpack-src:/performance-timing-logger/index.js","../webpack-src:/performance-timing-logger/src/index.es"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_EXTERNAL_MODULE__3__","__WEBPACK_EXTERNAL_MODULE__5__","_inMemoryListener","_inMemorySink","_sessionStorageSink","_listener","_underscore","Listener","constructor","options","super","this","formatters","filters","sink","init","_","isFunction","write","initialized","logMessage","filterLogs","formattedMsg","formatLogs","maxSize","logs","log","push","length","shift","items","SessionStorageSink","storageKey","Error","keyCache","existingItemsStr","window","sessionStorage","getItem","isEmpty","JSON","parse","forEach","addEventListener","setItemsOnUnload","setItem","stringify","_classCallCheck","instance","Constructor","TypeError","__webpack_exports__","API_NAME","getApiNameFromUrl","fullUrl","mainPart","split","test","getReqIdFromRoute","route","reqIdQueryString","find","param","includes","FetchProvider","props","instrumentation","_useState","useState","_useState2","slicedToArray","APIEndpoint","setAPIEndpoint","addScenario","scenario","toConsumableArray","fetchEventSchema","fetchScenario","fetchEvent","fetchTrace","fetchError","fetchOptions","useMemo","interceptors","request","_ref","url","concat","trace","method","response","_ref2","ok","data","error","status","statusText","onError","useEffect","domain","location","hostname","mapDomainToAPIEndpoint","react_default","a","createElement","esm","children","_index","category","logCategory","include","toLowerCase","console","__WEBPACK_EXTERNAL_MODULE__13__","_formatter","_filter","any","filter","check","clone","each","formatter","format","noop","Formatter","Filter","LogoImage","React","memo","assign","version","id","xmlns","x","y","viewBox","enableBackground","className","classes","logoText","fill","propTypes","PropTypes","shape","string","isRequired","getStyles","container","display","flexDirection","height","logo","width","logoClickable","cursor","logoContainer","padding","divider","borderLeftColor","borderLeftWidth","borderLeftStyle","marginTop","marginBottom","item","marginLeft","marginRight","justifyContent","alignItems","text","color","fontSize","lineHeight","fontStyle","textAlign","paddingLeft","fontWeight","@media screen and (forced-colors: active)","Header","compose","WrappedComponent","withDefaultStyles","layout_dist","dist","to","aria-label","classnames","getStyle","pageMenuItem","position","& a","textDecoration","paddingTop","&:hover","backgroundColor","selectionIndicator","top","bottom","left","borderRadius","zIndex","borderLeft","textContainer","&.selected","PageMenuItem","page","isCollapsed","isSelected","displayName","path","aria-current","icon","toggleMenuButton","ToggleMenuButton","onToggleClick","isExpanded","Button","appearance","chunk_7","primaryFill","onClick","aria-expanded","pageMenuContainer","transition","PageMenuList","changeLayout","menuItems","pages","map","Mode","Collapsed","useCallback","Expanded","nav","PageConfigs","chunk_6","chunk_4","sideBarContainer","PageMenu","currentPath","useLocation","pathname","pageConfig","_objectSpread","flex","footerList","footerLinkContainer","listStyle","footerItem","& > a","& > button","border","PageFooter","useDefaultStyles","role","Date","getFullYear","link","Link","href","target","ComponentSettings","_interopRequireWildcard","Constants","_index2","keys","_exportNames","_alertStyle","_buttonInputStyle","_buttonStyle","_closeImageStyle","_control","_datePickerStyle","_dropDownEditorStyle","_fabricPanelStyle","_floatButtonStyle","_gridInlineErrorStyle","_helpButtonStyle","_inlineEditorStyle","_inlineErrorStyle","_scrollbarStyle","_searchBoxStyle","_searchBox","_entitySelectorStyle","_paginationStyle","_statusStyle","_toggleButtonStyle","_underlineLinkStyle","_internalLinkStyle","_spinnerStyle","_uiBlockerStyle","_topGridPanelStyle","_columnChooserStyle","_columnChooserOverrideStyle","_filterEditorStyle","_filterEditorOverrideStyle","_legacyFilterBarStyle","_gridShared","_ref$palette","palette","_ref$iconFontFamily","iconFontFamily","& .alert","boxShadow","neutralPrimary","&.alert-danger .alert-image:before","fontFamily","content","&.alert-info .alert-image:before","neutralSecondary","&.alert-warning .alert-image:before","& input.btn-primary[type=\"button\"], input.btn-primary[type=\"submit\"], input.btn-hero[type=\"button\"]","&:focus","white","themePrimary","& input.btn-default[type=\"button\"]","outline","neutralSecondaryAlt","outlineOffset","btnInteractStyle","background","neutralLighter","neutralLight","_ref2$palette","primary","minWidth","boxSizing","themeDarkAlt","&:active","themeDark","&:disabled","neutralTertiary",".btn-primary",".btn-hero",".btn-default",".closeimage","right",".closeimage:before",".form-control","-webkit-box-shadow","backgroundImage","borderColor","focusedStyle",".k-animation-container","& .k-calendar-container","& .k-link:hover","neutralDark","& .k-header","paddingBottom","& .k-nav-fast","order","& .k-nav-prev","& .k-nav-next","& .k-icon","& .k-i-arrow-w:before","& .k-i-arrow-e:before","& .k-content","& th, td","& .k-link","& .k-other-month .k-link","& .k-state-selected","& .k-today","themeLighter","& .k-state-focused","& .k-meta-view","& tr","& td","& td:last-child","& .grid-editable-cell select.editor-control.select-editor","borderWidth","borderBottomColor","&:hover, &:focus, &:active","footer","commands","floatButton","minHeight","&:active, &:focus, &:hover","neutralQuaternaryAlt","& .inline-editor-errors","& .error-messages","listStyleType","& .error","&:before","red","& .error-message",".helpbutton","verticalAlign","outlineColor","black",".helpbutton::before",".custom-parameters-inline-edit-popup",".grid-popupeditor .form-inline .form-group",".inline-editor-errors","& .grid-error","&.spritedimage","&.spritedimage:before","::-webkit-scrollbar","::-webkit-scrollbar-track","::-webkit-scrollbar-thumb","::-webkit-scrollbar:horizontal","::-webkit-scrollbar-track:horizontal","::-webkit-scrollbar-thumb:horizontal","& .searchbox","& .searchbox .form-horizontal","& .searchbox-input","& .searchbox .form-control","borderBottom","& .filter_search_icon_small","& .filter_search_icon_small:before","inputGroup","overflow","input","style","& .ba-campaign-selector, & .ba-campaign-adgroup-selector","& .ba-list-selector","& .list-selector-item","& .list-selector-content","& .list-selector-select-all-bar","& .arrow-button.enabled","& .arrow-button.remove","& .enabled.arrow-button:before, & .arrow-button.remove:before","& .multi-selector","& .ba-entity-selector","& .multi-item-container","& .added-to-result-list","& .ba-campaign-adgroup-selector .selected-item, .ba-campaign-selector .selected-item","maxWidth","& .ba-campaign-selector, & .ba-campaign-adgroup-selector, & .disclaimer-selector, & .audience-planner-location-selector","& .dropdown-toggle","&:focus, &:active","& .selected-item","textOverflow","overflowWrap","wordBreak","whiteSpace","& .icon-right","float","& .glyphicon-triangle-bottom, .glyphicon-pencil","& .glyphicon-triangle-bottom:before","& .glyphicon.glyphicon-pencil::before","& .dropdown-toggle:focus:after, .dropdown-toggle:active:after","& .dropdown-menu","& .ba-search-box ","borderTop","borderRight","& .search-box__input","& .search-box__icon","& .search-box__icon:before","& .list-selector-header","& .panel-heading","& .panel-title","margin","& > div, & .item-content","paddingRight","& .statusIcon","& .text","& .selected","& .list-selector-item:hover","& .list-selector-item:focus","& .list-selector-empty","& .ba-cascader-selector","& .ba-cascader-selector>div","& .ba-cascader-selector>div:nth-child(2)>div:nth-child(2)","& .pagination-container","& .ba-pagination","& .ba-campaign-adgroup-selector, & .ba-campaign-selector","& .dropdown-toggle .dropdown-edit-mode-parent-text","& .item-content-parent-info","& .ba-pagination, .dlb-pager-container, .pagination-control","& > .text","& > span","& button","& button:hover","& button:disabled","& .prev + .text, .pager-previous + .text","& .pager-input","& .glyphicon-triangle-left, & .glyphicon-triangle-right","& .glyphicon-triangle-left:before","& .glyphicon-triangle-right:before","& .pager, .location-bid-pager-view","& .pager-input, .page-number-input, .grid-pager-input","& .pager-input[disabled], & .page-number-input[disabled], & .grid-pager-input[disabled]","& .pager-previous, & .pager-next, & .glyphicon-triangle-left, & .glyphicon-triangle-right","& .pager-previous, & .pager-next","& .pager-previous:hover, & .pager-next:hover","& .pager-previous-disabled, & .pager-next-disabled","& .pager-previous-disabled:before, & .pager-previous:before","& .pager-next-disabled:before, & .pager-next:before","& .pager-totalCount","& .pagination-control","& .page-size-selector","& .pager","& .statusDraft_icon","-webkit-font-smoothing","-moz-osx-font-smoothing","& .statusDraft_icon::before","& .statusDeleted_icon","& .statusDeleted_icon::before","redOrange10","& .statusEnabled_icon","& .statusEnabled_icon::before","green","& .statusExcluded_icon","& .statusExcluded_icon::before","& .statusPaused_icon","& .statusPaused_icon::before","& .statushypendisplay","& .statushypendisplay::before","& .toggle","& .toggle-button","boxsizing","transition-duration","-webkit-transition-duration","& .toggle-handle","borderStyle","& .toggle-on","& .toggle-off","_ref$elementLocator","elementLocator","_ref$isGreyBackground","isGreyBackground","themeDarker","size","borderRightColor","themeLight","borderTopColor","animation","@keyframes spinner","transform","_constants",".blocker",".blocker-global, .blocker-local","ZIndexShellComponents","Loader",".blocker-global",".blocker, .blocker-global, .blocker-local","& .blocker-indicator","& .blocker-image","getBlockerStyle","spinnerKeyframe",".blocker-panel",".blocker-panel + .blocker-indicator","& .blocker-text","& .react-block-ui","& > div:last-child","arguments","undefined","_zindexes","_pagePadding","_HelpContainer","_BootstrapPopover","_BootstrapModal","_BootstrapModalBackdrop","ModalBackDrop","Panel","TopBanner","PromotionBanner","Nav","Status","Menu","Tab","SubTab","Content","GridToolbar","GridHeader","StatusPopup","mainSectionLeftPadding","smallMainSectionLeftPadding","& .panel","underlineLinkStyle","& .alert-info .alert-info-inline","internalLinkStyle","& .panel-body","& hr","& .panel-footer","& input.btn, & button.btn","& input.btn:focus","& input.btn-primary:focus","& .previewTable","maxHeight","& .column-chooser .option","& .column-chooser .option:hover","& .column-chooser input[type=\"checkbox\"]","& .column-chooser-instructions","& .column-chooser-categories","& .column-chooser-list","& .column-chooser-list+.column-chooser-list","& .column-chooser-list.right","& .column-chooser-option-header","& .column-chooser-bulk-control","& .column-chooser-category","& .column-chooser-category.active","& .column-chooser-category:focus, & .column-chooser-category.k-state-focused","& .column-chooser-options","overflowX","overflowY","& .column-chooser-options.selected","& .column-chooser-options.available","& .column-chooser-option","borderRightWidth","& .column-chooser-option:hover","& .column-chooser-message","& .column-chooser-option-selected","& .column-chooser-option-selected:hover","& .column-chooser-option-selected .remove","& .column-chooser-option-fixed","& .column-chooser-option-unmovable","& .column-chooser-option-placeholder","opacity","& .column-chooser","& .column-chooser .panel .panel-body .column-chooser-selection-area","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .column-chooser-option-header","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .column-chooser-search-box","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .search-input","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .glyphicon-search","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .glyphicon-search:before","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs>li","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs>li.active","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list .column-chooser-bulk-control","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-not-selected","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-status","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-status.disabled","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options a.add-column-link","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .column-chooser-selected-header","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-locked","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable.draggable-list__item-preview","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable span.remove","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item .selected-list-item span","M","W","fallbacks","userSelect","& .column-chooser .panel .panel-body .save-column-view","& .column-chooser .panel .panel-body .save-column-view .save-checkbox","& .column-chooser .panel .panel-body .save-column-view .save-checkbox .column-chooser-save-column","& .column-chooser .panel .panel-body .save-column-view .save-checkbox input.column-chooser-saved-name","& .column-chooser .panel .panel-footer","& .column-chooser .panel-component","& .column-chooser .panel-component .panel-heading","& .column-chooser .panel-component .panel-title","fontColor","& .column-chooser .panel-component .panel-body","& .column-chooser .panel-form","& .column-chooser .panel-form.noPadding","& .column-chooser .panel-form .panel-heading","& .column-chooser .panel-form .section","& .column-chooser .panel-form .panel-body.noPadding","& .column-chooser .panel-form-footer","& .column-chooser .panel.panel-white","& .column-chooser .panel-body","& .column-chooser .panel-body:before, & .column-chooser .panel-body:after","& .column-chooser .panel-body:after","clear","& .column-chooser .panel-heading","& .column-chooser .panel-heading>.dropdown .dropdown-toggle","& .column-chooser .panel-title","& .column-chooser .panel-title>a","& .column-chooser .panel-footer","& .column-chooser hr","& .column-chooser .save-column-checkbox","_newFeatureLabelStyle","& .column-chooser-selection-area","getNewFeatureLabelStyle","& .option","& .category-tabs","& li a:after","& > li","& .new-feature-label","& > li.active","& > a.currentActive","& .options-view .column-chooser-option-list","& .arrow-button","& ul.column-chooser-options","& span.option-not-selected","& span.option-name","& .option-status, & a.add-column-link","& .column-chooser-editable-picker","& .custom-column-remove","& .glyphicon-pencil","& .glyphicon-remove","& span.option-status.enabled","& a.add-column-link","& .inapplicable-column","& .custom-column-add","& .remove-all-in-list, .add-all-in-list","& .invalid-custom-column:focus","& .option-name","& .column-chooser-selected","& .column-chooser-selected-header","& .column-chooser-selected-header:before","& .column-chooser-selected-header:after","& .remove-all-in-selected-list","& .column-chooser-selected-list","& .draggable-list-view","& ul.draggable-list","& li.draggable-list-item","& .selected-list-item","& .selected-item-name","& .trigger-icon","&:after","&.selected, &:focus, &:hover","& .trigger-icon:before","letterSpacing","writingMode","& li.draggable-list-item.draggable-list__item-locked","& li.draggable-list-item.draggable-list__item-draggable","& .save-column-view","& .save-checkbox","& label+input","& .column-chooser-save-column","& .save-column-checkbox","& input[type=\"checkbox\"]","& .column-chooser-saved-name","orange","& .predicate-row","& .filter-editor .panel","& .filter-body.filter-editor .save-form input[type=\"checkbox\"]","& .filter-body.filter-editor .save-form .btn + .btn","& .filter-body.filter-editor .save-form .btn + .checkbox","& .filter-body.filter-editor .save-form .checkbox label + input","& .predicate-list li","& .predicate-list li .error-row","& .predicate-list li .error-row label","& .predicate-list li .predicate-row .filter-predicate-property","& .predicate-list li .predicate-row .filter-predicate-property > .btn.btn-default","& .predicate-list li .predicate-row .filter-predicate-property > .btn.btn-default > .selected","& .predicate-list li .predicate-row .filter-predicate-property + .predicate-operator","& .predicate-list li .predicate-row .form-control","& .predicate-list li .predicate-row > * + *","& .predicate-list li .predicate-row .predicate-property","& .predicate-list li .predicate-row .predicate-operator","& .predicate-list li .predicate-row .predicate-operator + .predicate-value","& .checkbox-inline, & .checkbox-inline + .checkbox-inline, & .radio-inline, & .radio-inline + .radio-inline","& .checkbox-inline:last-child, & .radio-inline:last-child","& .predicate-list li .predicate-row .predicate-value","& .predicate-list li .predicate-row .predicate-value > input","& .predicate-list li .predicate-row .predicate-value + .remove","& .predicate-list li .predicate-row .predicate-value button.selector-dropdown-button","& .predicate-list li .predicate-row .predicate-value .selector.dropdown-menu","& .predicate-list li .predicate-row .single-operator-column, & .predicate-list li .predicate-row .single-property-column","& .predicate-list li .predicate-row .dropdown-submenu","& .predicate-list li .predicate-row .dropdown-submenu li","& .predicate-list li .predicate-row .dropdown-submenu > span","& .predicate-list li .predicate-row .dropdown-submenu:hover > .dropdown-menu","visibility","& .predicate-list li .predicate-row .dropdown-submenu .spritedimage","& .predicate-list li .predicate-row .btn .caret","& .filter-header","& .filter-header .filter-button","& .filter-header .filter-button:hover","& .filter-header .glyphicon-filter","& .filter-header .filterMenu","& .filter-header .filterMenu .saved","& .filter-header .filterMenu .new, & .filter-header .filterMenu .apply","& .filter-header .filterMenu .new:hover, & .filter-header .filterMenu .apply:hover, & .filter-header .filterMenu .saved>li:hover","& .filter-header .filterMenu .delete","& .filter-header .filterMenu .apply-header","& .filter-header .quick","& .filter-header .quick .quick-text","& .filter-header .quick .quick-text:active","& .filter-body .save-form","& .filter-body .save-form h5.checkbox","& .filter-body .save-form .name","& .grid-toolbar-bar","& .predicate-list>ul","& .predicate-list>ul>li.row","& .predicate-list>ul>li.row>div","& .predicate-list>ul>li.row .operator-single","& .predicate-list>ul>li.row .dropdown .dropdown-control .glyphicon-triangle-bottom","& .predicate-list>ul>li.row .dropdown .dropdown-menu","& .predicate-list>ul>li.row span.datepicker","& .predicate-list>ul>li.row ul.enum-options>li","& .predicate-list>ul>li.row ul.enum-options>li input[type=\"checkbox\"]","& .predicate-list a.remove, & .predicate-list a.new","& ol, & ul","& .filter-editor","& .save-form .checkbox label","& .glyphicon-remove:before","& .glyphicon","font-family","font-size","font-style","& .glyphicon.glyphicon-remove","& .glyphicon.glyphicon-plus","& .glyphicon-plus:before","& .delivery-status-category-container:first-of-type","& .delivery-status-category-container + .delivery-status-category-container","& .filter_button","& .filter-bar","& .panel-component","& .filter_title_collapsed","& .filter_row_readonly .humanized","& .column, & .filter_operator","& .filterValue","& .filterand","& .filter_links","&:nth-child(2n)","&:last-child","& .filter_title_collapsed, & .filter_row_readonly, & .filter_links","_body","_colGroup","_columns","_footer","_global","_header","_table","variables","GridSharedStyles","getSharedBodyStyles","getSharedColGroupStyles","getSharedColumnsStyles","getSharedFooterStyles","getSharedGlobalStyles","getSharedHeaderStyles","getSharedTableStyles","_variables","components","& tr.segment-row","& .segment-value","& tr.aggregate-row","& tr.aggregated-row","totalRowBackgroundColor","tableBorder","&[data-key]:first-child, &:not([data-key]) + tr[data-key]","&[data-key]:hover, &.row-selected[data-key], &.row-selected[data-key]:hover","&.row-selected","& td a","&:hover, &.row-selected, &.row-selected:hover","&.grid-error-row","& ul.grid-error-list","gridPaddingLeft","PagePadding","&.col-selection","&","&:first-child","& span","& tr.noborder","gridPaddingComponsation","& .form-control.page-size-selector","& .nav-button","&.prev","& + .text","&.next","& .page-number-input",".bingadsgrid","& .grid-noresult, & .grid-noresult-empty, & .noresult",".table-container .glyphicon.glyphicon-triangle-left",".table-container .glyphicon.glyphicon-triangle-left::before",".table-container .btn:disabled .glyphicon.glyphicon-triangle-left::before",".table-container .glyphicon.glyphicon-triangle-right",".table-container .glyphicon.glyphicon-triangle-right::before",".table-container .btn:disabled .glyphicon.glyphicon-triangle-right::before",".table-container .glyphicon.glyphicon-triangle-bottom",".table-container .glyphicon.glyphicon-triangle-bottom::before",".table-container .btn:disabled .glyphicon.glyphicon-triangle-bottom::before","& th","& tr.overall-total-row","totalRowBorderTop","& th.column-header","headerRowBorderTop","headerRowBorderBottom","& .helpbutton::before","& span.grid-header-text","& span.grid-header-helpId","headerRowBackgroundColor","& th:first-child","&.pop-enabled + tr.pop-enabled th:first-child","& th.column-header-sortable","&.grid-cross-page-select-all","& .glyphicon-arrow-up:before","& .glyphicon-arrow-down:before","& th span.pop-toggle-icon.clickable","&.pop-expand:before","&.pop-collapse:before","& tr.pop-enabled th.column-header.pop-column-header > div.column-header-container","& .iconba","& .grid-disabled","_themeFluent","_darkTheme","_react","ThemeFluent","createTheme","NeutralColors","gray190","gray160","neutralPrimaryAlt","gray150","gray130","gray110","gray90","neutralTertiaryAlt","gray60","neutralQuaternary","gray50","gray40","gray30","gray20","neutralLighterAlt","gray10","CommunicationColors","shade20","shade30","shade10","tint20","tint30","themeLighterAlt","tint40","themeSecondary","tint10","themeTertiary","SharedColors","red10","redDark","red20","globalBackground","mainMenuHoverBackground","effects","roundedCorner2","elevation4","Depths","depth4","elevation8","depth8","elevation16","depth16","elevation64","depth64","__WEBPACK_EXTERNAL_MODULE__66__","DarkTheme","__WEBPACK_EXTERNAL_MODULE__17__","singleton","PageReady","_bluebird","GLOBAL_PAGE","p$pagesReady","resolvePageReadyCbs","pageIsReady","pageName","lazyInitializePromise","afterPageReady","Promise","res","factory","self","__WEBPACK_EXTERNAL_MODULE__6__","_instrumentation","_logger","_defaultConfig","_loggingService","_logTransmitter","config","setup","scenarioContext","initTransmissionService","initLoggingService","defaultConfig","getDefaultConfig","loggers","defaults","processors","listeners","isDebugMode","stop","beforeStop","logTransmitter","LogTransmitter","writeRawLog","rawLogs","transmit","logger","loggingService","LoggingService","scenarioSchema","extend","parseSchema","createScenarioAndActivity","parentScenario","scenarioName","activityName","schema","activity","createScenario","ScenarioContext","traceLogger","TraceLogger","perfLogger","PerfLogger","errorLogger","ErrorLogger","ajaxLogger","AjaxLogger","substrateLogger","SubstrateLogger","scenarioProcessor","ScenarioProcessor","_traceLogger","_perfLogger","_errorLogger","_ajaxLogger","_scenarioProcessor","_substrateLogger","_primitiveUtilities","Logger","message","api","requestId","httpMethod","logLevel","timeStamp","getUtcTime","constants","LOGCATEGORY","TRACE","LOGLEVEL","INFO","entryType","ENTRYTYPE","MESSAGE","getLogMethods","IMPACTUSER","True","False","NA","DEBUG","VERBOSE","PERFORMANCE","ERROR","SUBSTRATE","SCENARIO","ACTIVITY","AJAX","AJAXRENDER","METHOD","transmitter","start","isMethodEnter","result","pass","isUndefined","monitor","func","context","originalFunc","args","t0","getTimestamp","apply","timeTaken","monitorAsync","promise","onPromiseDone","then","perf","impactUser","ajax","entityCount","includeRendering","process","has","activityId","scenarioId","parentScenarioId","parentScenarioName","omit","startSignal","startTime","stopSignal","trackDuration","endTime","toJSON","signal","withSignalSync","action","actionReturn","withSignalAsync","promiseReturn","_scenarioFactory","registry","checkSchemaDuplication","scenarios","activities","Set","add","scenarioFactories","ScenarioFactory","_activityFactory","Scenario","generateGuid","setting","ActivityFactory","createActivity","Activity","activitySchema","simpleActivity","logMethods","logMethod","updateScenarioContext","stopped","processedLogs","processor","listener","teardown","dynamicComponents","topBanner","promotionBanner","staticComponents","header","panelContainer","menu","tab","subTab","base","immersive","fullScreen","withoutDate","showDatePicker","withDisabledDate","showDisabledDatePicker","withHistoryButton","showHistoryButton","dateWithoutCompare","disableCompare","fullScreenWithSummaryBar","fullScreenWithSummaryBarAndTab","accountSummary","withoutMenu","layoutConfigs","default","withoutNav","withSingleTab","singleTabMode","accountSummaryWithoutDate","withMenuOnly","withCollapsedMenuOnly","withCollapsedMenuAndNav","withTabAndSubTab","signupScreen","LayoutContext","createContext","change","_objectWithoutProperties","source","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","shared","hidden","expanded","surveyHeight","collapsed","hotelCenterMenu","cfg","components_objectSpread","optimizationScore","showExperimentScoreCard","names","mapObject","calcQueue","getSelection","advancedOptions","_excluded","advancedOptionValue","advancedOptionName","advancedProcessor","StylesContainer","createClass","classCallCheck","selected","styles","jss","createStyleSheet","attach","update","_this","startPos","component","LayoutContainer","_React$PureComponent","_callSuper","updates","isPageConfig","isPageConfigPartialUpdate","afterChangeLayout","setState","state","merge","cloneDeep","persistConfig","isEqual","ownUpdate","updatePage","stylesContainer","controlledByProps","inherits","prevProps","prevState","Provider","nextProps","PureComponent","defaultProps","Layout","Component","itemName","_useContext","useContext","componentProps","layout_objectSpread","LayoutHoC","with_layout_callSuper","toLayout","_this$props","withLayout","Consumer","with_layout_LayoutHoC","partial","with_layout_objectSpread","_defineProperty","obj","configurable","writable","__WEBPACK_EXTERNAL_MODULE__7__","__WEBPACK_EXTERNAL_MODULE__26__","_lodash","_string","_guid","_date","_file","_promise","_color","_number","_memoize","sourceCopyMap","isObject","isDate","result_1","isArray","set","Map","funcs","_i","reverse","defaultValue","sub","keyPath","castPath","isNull","reduce","rest","dest","src","destKey","first","index","lastIndex","nested","list","invoke","iteratee","String","currentSum","arr","array","comparator","Boolean","uniq","every","compact","templateString","template","settings","str","distinguishWideChar","displayLength","isString","match","noMatch","escape","evaluate","interpolate","wideCharPattern","RegExp","replace","IsControlRegex","s4","Math","floor","random","toString","substring","date","i18n","convertDateBetweenTimeZones","from","firstRange","secondRange","convertForComparison","range","dates","pick","compared","comparedStart","comparedEnd","end","dateTime","lookBackYears","isValidDate","performance","now","timing","navigationStart","lookBackMonths","lastNDate","firstDateNMonthsAgo","getMonth","getDate","minDate","maxDate","selectedDate","withoutTime","min","max","errors","returnDate","valueOf","setHours","lookBackDays","_a","_b","dateString","formatDate","timeZone","parseDate","img","blob","dataURItoBlob","postfix","last","type","File","lastModified","dataURI","reg","arrs","byteString","atob","Uint8Array","charCodeAt","Blob","currentPromise","promiseChain","callbacks","queueNextWork","finishProcess","ASYNC_STATUS","SUCCESS","onSuccess","err","_c","onCancel","CANCELLED","cleanup","resolve","reject","dequeuePromise","asyncToken","chain","on","cancel","cancelCallback","lastPromise","promiseFactory","finish","fail","lastPromiseCanceled","factoryArgs","processHandle","_interopRequireDefault","colorToGrayscale","rgbInteger","rgb","blue","numberToRgb","round","parseInt","substr","code","remain","slice","integer","isNumber","dividend","remainder","memoized","resolveFromCache","cache","Cache","toCache","nestedCache","lruTrigger","delete","val","next","_slicedToArray","Array","_arrayWithHoles","_arr","_n","_d","_e","_s","iterator","done","_iterableToArrayLimit","_nonIterableRest","_typeof2","_typeof","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_toConsumableArray","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","_setPrototypeOf","setPrototypeOf","__proto__","_inherits","subClass","superClass","__WEBPACK_EXTERNAL_MODULE__14__","__WEBPACK_EXTERNAL_MODULE__27__","_globalize","_locale","_resource","localeManager","LocaleManager","dynamicLocaleInstances","assertReady","isReady","debugInfo","locale","synchronousResource","p$data","resource","synchronousGlobalize","globalize","isThenable","loadData","translationData","loadTranslationData","cldrData","loadCLDRData","Resource","failFast","cldr","Globalize","dateMethodOptions","skeleton","time","datetime","raw","withSignWrapper","withSign","abs","getCldr","minusSign","main","plusSign","RangeError","numberFormatterWithSign","globalizeFormatter","numberFormatter","currencyFormatterWithSymbol","currency","withSymbol","currencyFormatter","currencyToPartsFormatter","parts","part","join","I18nModel","[object Object]","setGlobalLocale","all","setLocale","load","loadTimeZone","failfast","defaultFailFast","missingKeys","parserFormatterCache","fnName","i18nModel","realMethod","createCache","specificMethodCache","withGlobalizeCache","p$globalLocale","isFulfilled","globalLocale","ready","return","getLocale","getFirstDayOfWeek","alt","defaultRegionKey","attributes","region","supplemental","getToday","_this$formatDateToPar2","formatDateToParts","year","month","day","Number","getString","defer","getData","getQuarter","quarter","getDay","getDayOfWeek","dayOfWeek","getCurrency","getCurrencySymbol","getDateFormats","calendar","defaultProperties","dateTimeFormats","availableFormats","yMd","dateFormats","timeFormats","formatDecimal","number","decimalFormatter","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","useGrouping","formatDecimalToFixed","decimalToFixedFormatter","digits","formatDecimalToInteger","decimalToIntegerFormatter","parseDecimal","decimalParser","numberParser","isValidDecimal","decimalValidator","parser","isNaN","formatPercent","percentFormatter","formatPercentToFixed","percentToFixedFormatter","parsePercent","percentParser","isValidPercent","percentValidator","formatCurrency","dateFormatter","dateToPartsFormatter","dateParser","dateValidator","formatCivilDate","civilDate","civilDateFormatter","parseCivilDate","civilDateParser","getUTCFullYear","getUTCMonth","getUTCDate","toISOString","formatUnit","unit","unitFormatter","form","formatList","listFormatter","_style$split2","variant","cldrTypeName","listPattern","pattern","second","twoTemplate","middleTemplate","middle","startTemplate","endTemplate","_list","_toArray","initial","fetchString","fetchLocale","p$global","resolveGlobalLocale","putil","model","preprocess","identity","ret","ex","curlyTemplate","compiled","_getPrototypeOf","getPrototypeOf","__WEBPACK_EXTERNAL_MODULE__4__","__WEBPACK_EXTERNAL_MODULE__8__","__WEBPACK_EXTERNAL_MODULE__9__","__WEBPACK_EXTERNAL_MODULE__10__","__WEBPACK_EXTERNAL_MODULE__11__","__WEBPACK_EXTERNAL_MODULE__15__","_fixedI18nMock","_modelI18nMock","_staticI18nMock","_staticI18nModelMock","staticI18nMock","FixedI18nMock","dictionary","parseFloat","_core","_en","_i18nModel","_moduleI18nShim","_componentI18nShim","core","enLocale","require","modelI18nMock","extendOwn","ComponentI18nShim","ModuleI18nShim","modelI18n","i18nRequireRequest","loaderName","_stringUtils","realI18n","safeGetString","regex","getStringOrDefault","defValue","toArray","splice","e","checkKey","_ianaTzData","loadTimeZoneData","timeZoneData","staticI18nModelMock","loc","__WEBPACK_EXTERNAL_MODULE__99__","serializeParam","originalData","_jquery","startOfRoute","pathAndQuery","recipient","subject","body","keepSqBrackets","setQueryStringParam","innerUrl","originalN","v","replaceOnly","qs","pound","lastIndexOf","originalName","exec","decodeURIComponent","originalUrl","re","hash","separator","queryIndex","domainsToCheck","isRelativeUrl","getDomain","toCheck","website","site","trim","uri","_urijs","protocol","matchs","topLevelDomain","contains","_topDomain","toUpperCase","UrlRegex","matches","frags","frag","eSlash","sSlash","hasProtocol","document","startIndex","_helpers","_proptypes","_activity","_marker","filesFetched","instr","markerOptions","autoEnd","isActiveChild","parentMarker","isFileFetched","PerfMarker","perfScenario","perfMarker","getScenario","sendLog","_pageReady","isPageReadyFulfilled","markTime","activeTime","NaN","isMarkerValid","getUrl","search","markers","InitUrl","hierarchy","isDone","activeChildren","doneCallback","createChild","childMarker","PerfMarkerFactory","createMarker","willFetchFile","timeFetchFile","markConsole","willFetchData","timeFetchData","willInit","timeInit","willRender","timeRender","onChildDone","activeChild","additionalMessage","timeDone","send","markerPoint","parseMarkers","some","marker","doneUrl","didUrlChange","Version","Name","ParentName","Data","IsParentDone","IsPageReadyFulfilled","IsFileFetched","FileFetchStartTime","FileFetchActiveStartTime","DataFetchStartTime","DataFetchActiveStartTime","RenderStartTime","RenderActiveStartTime","InitStartTime","InitActiveStartTime","DoneStartTime","DoneActiveStartTime","DidUrlChange","DoneUrl","AdditionalMessage","__WEBPACK_EXTERNAL_MODULE__52__","asyncFunc","_propTypes","perfMarkerPropTypes","__WEBPACK_EXTERNAL_MODULE__55__","__WEBPACK_EXTERNAL_MODULE__102__","__WEBPACK_EXTERNAL_MODULE__22__","_ariaConfig","_campaign","_adinsight","_contextProcessor","_debugProcessor","_perfTimingProcessor","_basicFormatter","_apiFormatter","_adinsightOpportunityLogFormatter","_reportingApiFormatter","_uettaghelperFormatter","_importApiFormatter","_consoleFormatter","_perfTimingFormatter","_logLevelFilter","_apiFilter","_adinsightOpportunityApiFilter","_consoleFilter","_unloadLogFilter","_perfTimingFilter","_odataErrorMapper","_campaignapiErrorMapper","_urlErrorMapper","_environmentHelper","_localStorageLogRetriever","_defaultErrorCodes","env","token","allTokens","TOKENS","Local","getTokensForSmartPage","Aria3","Aria07","AdInsight","ccui.devdev.bingads.microsoft.com","redmond.corp.microsoft.com","app1.ads-int.microsoft.com","ui.si.bingads.microsoft.com","ui.beta.si.bingads.microsoft.com","ui.ads-int.microsoft.com","ui.beta.ads-int.microsoft.com","ui.tip.bingads.microsoft.com","ui.tip.ads.microsoft.com","si.bingads.microsoft.com","beta.si.bingads.microsoft.com","ads-int.microsoft.com","beta.ads-int.microsoft.com","tip.bingads.microsoft.com","tip.ads.microsoft.com","ui.sandbox.bingads.microsoft.com","ui.sandbox.ads.microsoft.com","ui.bingads.microsoft.com","ui.beta.bingads.microsoft.com","ui.ads.microsoft.com","ui.beta.ads.microsoft.com","bingads.microsoft.com","beta.bingads.microsoft.com","ads.microsoft.com","beta.ads.microsoft.com","adlibraryui-test.azureedge.net","adlibrary.ads.microsoft.com","adInsightOppTracking","tokens","flushInterval","batchSize","spToken","__WEBPACK_EXTERNAL_MODULE__498__","logTableNames","priority","defaultLogCategory","__WEBPACK_EXTERNAL_MODULE__500__","pageContext","CurrentCustomer","Id","CurrentAccount","CurrentUser","Locale","Market","UserRole","ManagedBy","LocaleID","CustomerId","AccountId","UserId","Lcid","CustomerMarket","Permissions","IsInternalUser","CustomerManagedBy","SessionId","Omniture","PageTrackingId","PageVersion","Pilots","customerId","accountId","userId","lcid","sessionId","pageTrackingId","pageVersion","market","userRole","managedBy","pilots","landingPageUrl","referrer","landingPg","_urlUtil","_formatUtilities","applicationSystem","applicationSubSystem","getPFlagsProps","rawLog","pflags","apiString","getParameter","updateParameter","getEventType","Sn","SceID","RID","Api","Pass","Dur","safeParseInteger","Ime","Hm","Timestamp","SesID","Url","UID","CID","AID","LCID","Mes","Lc","Ll","Env","As","Asub","An","ActID","Et","Loc","Role","MgdBy","PFlags","Iu","Ec","UserAgent","navigator","userAgent","PgID","PgVer","DbgMode","__WEBPACK_EXTERNAL_MODULE__506__","parsedNum","bracketedParamsRegex","convertAbsoluteToRelativePath","removeQueryParameters","_log$Api$split2","removeDotMExtension","removeBracketedParameters","removeApplicationNameFromApi","appName","tap","environment","Action","clientName","logApi","channel","logApiClientNameMapper","OverviewOpportunityTile","MCCOverviewOpportunityTile","isClick","isMCC","RequestId","OpportunityId","OpportunityType","OpportunityTypeId","typeId","CampaignId","campaignId","ClientName","Environment","Source","URL","GUID","guid","Position","UserFeedback","Context","apiChunks","getValidatedApiChunks","operationId","rawChunks","pageNavigationColumns","resourceTimingColumns","columns","isPageNavigationLog","formattedLogs","uid","aid","cid","mkt","dbgMode","pgId","pgVer","appLogLevel","ignoredApis","shouldFilter","isErrorLog","isIgnoreApi","ignoredApi","excludeFromLocalStorage","allowedEnvs","exlcudeResources","resourceName","excludedResource","errorCodes","ajaxData","errorString","errorCode","knownUserErrorCodes","jqXHR","urlString","responseText","Errors","Code","domains","ajaxUrlString","envToCheck","prodEnvs","deleteAfterRetrieval","storage","localStorage","retrievedLogs","logKeyPrefix","parsedLog","removeItem","defaultSchema","errorMappers","odataErrorMapper","OdataErrorMapper","odataErrorCodes","campaignApiErrorMapper","CampaignApiErrorMapper","campaignApiErrorCodes","urlErrorMapper","UrlErrorMapper","invalidDomains","formatNameValue","onLine","getInstrumentation","serverContext","userContext","getInstrumentationInstance","isInDevelopmentMode","applicationName","systemName","subSystemName","objectsToStub","getInstrumentationService","_ref2$scenario","InstrumentationSchema","defaultScenario","logError","logTrace","logMetrics","stubOptions","eventHandler","AjaxEventHandler","shouldAddHeaders","ajaxContext","isInternalUrl","ajaxStub","AjaxStub","errorStub","ErrorStub","stub","InstrumentationServiceContext","__WEBPACK_EXTERNAL_MODULE__490__","_instrumentationSchema","ajaxStubOptions","_ref$ariaConfig","ariaConfig","_ref$objectsToStub","$","_processors","getProcessors","instrumentationForPerfTiming","Instrumentation","_perfTimingConfig","PerformanceTimingLogger","_listeners","getListeners","contextProcessor","debugProcessor","_setStub","setStub","vNextInstrumentation","_performanceTimingLogger","_performanceMarker","__WEBPACK_EXTERNAL_MODULE__521__","__WEBPACK_EXTERNAL_MODULE__522__","applicationAriaConfig","currentEnv","getAriaConfig","basicFormatter","BasicFormatter","apiFormatter","ApiFormatter","reportingApiFormatter","ReportingApiFormatter","consoleFormatter","ConsoleFormatter","logLevelFilter","LogLevelFilter","apiFilter","ApiFilter","consoleFilter","ConsoleFilter","unloadLogFilter","UnloadLogFilter","localStorageListener","LocalStorageListener","uniquePageId","campaignAriaListener","AriaListener","tenantToken","campaignLogTableConfig","registerForTeardown","adInsightLogFormatter","AdInsightOpportunityLogFormatter","adInsightApiFilter","AdInsightOpportunityApiFilter","adInsightAriaListener","adInsightLogTableConfig","consoleListener","ConsoleListener","isTestEnvironment","seleniumLogsSink","InMemorySink","inMemoryListener","InMemoryListener","_ariaListener","_consoleListener","_localStorageListener","__WEBPACK_EXTERNAL_MODULE__524__","__WEBPACK_EXTERNAL_MODULE__525__","__WEBPACK_EXTERNAL_MODULE__526__","__WEBPACK_EXTERNAL_MODULE__527__","__WEBPACK_EXTERNAL_MODULE__528__","ContextProcessor","DebugProcessor","perfTimingProcessor","PerfTimingProcessor","filteredObjectsToStub","_instrumentationStubs","__WEBPACK_EXTERNAL_MODULE__531__","performanceLogsFormatter","PerformanceLogsFormatter","performanceLogsFilter","PerformanceLogsFilter","ariaListener","resourcetiming","_ajaxStub","_ajaxEventHandler","_errorStub","_ajaxInterceptor","_ajaxStubSchema","handler","setupScenario","interceptor","AjaxInterceptor","ajaxStubScenario","objectToStub","intercept","_ajaxEventInterceptor","globalInterceptInstance","generateRid","jQuery","originalAjax","shouldAddRequestId","dataType","setQuery","ajaxStubActivity","AjaxEventInterceptor","triggerEventInterceptors","urlInLowerCase","__WEBPACK_EXTERNAL_MODULE__28__","__WEBPACK_EXTERNAL_MODULE__29__","event","BEFORESEND","COMPLETE","requestResult","ajaxStartTime","ajaxRenderStartTime","getPageSize","beforeSendHandler","interceptBeforeSend","successHandler","interceptSuccess","errorHandler","interceptError","completeHandler","interceptComplete","ajaxOptions","originalEventHandler","originalRet","handleException","onBeforeSendDone","successRenderHandler","stack","serverErrorCodes","detectError","respData","Message","getEntityCount","Records","RowCount","requestData","BiDateRange","__WEBPACK_EXTERNAL_MODULE__32__","constant","setRequestHeader","textStatus","ajaxTimeTaken","getServerPerf","renderTimeTaken","errorThrown","responseXML","isUserError","errorMapper","getResponseHeader","perfTimings","odataPerf","responseJSON","keyUnfilteredCount","keyOdataCount","_stacktraceJs","_errorStubSchema","getStackStringFromStackFrames","stackFrames","frame","getFunctionName","getFileName","getLineNumber","getColumnNumber","asyncAjaxOverride","req","XMLHttpRequest","open","onerror","onreadystatechange","readyState","logUnhandledPromiseRejections","skipStackTraceResolutionForPromiseRejections","isExpectedUnhandledPromiseError","stackTraceOptions","errorMsg","lineNumber","column","errorObj","errorStubScenario","errorStubActivity","handleError","promiseRejection","handlePromiseRejection","errorMessage","StackTrace","fromError","catch","finally","perviousRoute","history","previousRoute","promiseRejectionEvent","detail","reason","__WEBPACK_EXTERNAL_MODULE__36__","__WEBPACK_EXTERNAL_MODULE__37__","_webjsSdk","activeListeners","flushEventAttached","enableSessionTracking","AWTLogManager","initialize","setTransmitProfile","AWT_NEAR_REAL_TIME","defaultLogger","getLogger","logSession","AWTSessionState","Started","trackedListenerRefs","count","setInterval","flushBatch","flushLogs","flush","registeredForTeardown","flushAll","Ended","release","batchLogs","logsToFlush","logEvent","flushAndTeardown","categoryName","getCategoryName","properties","propertyFormatter","AriaPropertyFormatter","_defineProperties","descriptor","_createClass","protoProps","staticProps","logCount","generateKey","updateInterval","getEntriesByType","isPageLoaded","pageNavLogged","logOnLoad","timer","logOnTimer","logOnUnload","writeResourceTimingLogs","tryRecordInactiveTime","tryLogPageNavigation","clearLogBuffer","pageLoaded","inactiveTime","loadEventEnd","writePageNavigationLogs","extensions","chrome","loadTimes","firstPaintTime","navTimingV2Logs","navTimingV2Log","colsToReplace","redirectCount","navigation","clearResourceTimings","webkitClearResourceTimings"],"mappings":"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YjB,SAAU4kD,EAAUP,GACxB,IAAIrkD,EAAMqkD,EACV,IAAKrpD,EAAA0mC,QAAEsJ,SAAShrC,IAAQhF,EAAA0mC,QAAEzkC,QAAQ+C,EAAIglD,QACpC,MAAO,GAGThlD,EAAMA,EAAIglD,OACV,IAAM9jD,EAAI8kD,SAAS7kD,cAAc,KAC7BN,EAAS,GACbK,EAAE2J,KAAOk7C,EAAY/lD,GAAOA,EAAO,UAAUA,EAE7C,IACU,IAAAe,EAAaG,EAALH,SACVklD,EAAajmD,EAAI0B,cAAcihC,QAAQ5hC,GAE7CF,GAA0B,IAAhBolD,EAAoB,GAAKjmD,EAAI+rC,UAAUka,EAAYllD,EAASzE,OAAS2pD,GAC/E,MAAO9V,GACPtvC,EAAS,GAGX,OAAOA,EAGH,SAAU8jD,EAAc3kD,GAC5B,OAAOhF,EAAA0mC,QAAEsJ,SAAShrC,IAA8B,IAArBA,EAAI2iC,QAAQ,KAmClC,IAAM8iB,EAAW,+GACoB,wLCnL7B,CACb,MACA,OACA,SACA,MACA,SACA,SACA,MACA,OACA,UACA,WACA,KACA,UACA,YACA,aACA,cACA,MACA,QACA,KACA,OACA,MACA,QACA,KACA,MACA,OACA,QACA,KACA,MACA,SACA,KACA,UACA,SACA,KACA,MACA,SACA,WACA,SACA,OACA,KACA,YACA,UACA,SACA,YACA,WACA,OACA,SACA,SACA,KACA,SACA,kBACA,iBACA,OACA,QACA,QACA,YACA,YACA,UACA,SACA,MACA,KACA,MACA,aACA,MACA,QACA,KACA,YACA,KACA,OACA,SACA,QACA,OACA,OACA,MACA,OACA,KACA,OACA,OACA,aACA,KACA,UACA,WACA,KACA,UACA,OACA,UACA,QACA,UACA,SACA,OACA,QACA,UACA,KACA,MACA,KACA,MACA,KACA,QACA,KACA,OACA,QACA,UACA,iBACA,OACA,OACA,MACA,YACA,cACA,WACA,WACA,WACA,WACA,aACA,UACA,SACA,KACA,MACA,MACA,OACA,MACA,MACA,KACA,KACA,QACA,SACA,OACA,UACA,SACA,OACA,UACA,MACA,KACA,KACA,KACA,SACA,KACA,QACA,MACA,OACA,OACA,QACA,MACA,MACA,KACA,QACA,cACA,cACA,OACA,YACA,OACA,KACA,MACA,MACA,KACA,aACA,KACA,QACA,aACA,OACA,MACA,OACA,MACA,OACA,UACA,QACA,SACA,SACA,MACA,WACA,MACA,KACA,WACA,cACA,WACA,SACA,UACA,WACA,KACA,KACA,QACA,WACA,WACA,MACA,OACA,KACA,KACA,KACA,KACA,MACA,KACA,MACA,OACA,MACA,OACA,cACA,MACA,SACA,OACA,QACA,WACA,UACA,aACA,MACA,UACA,QACA,OACA,SACA,UACA,OACA,OACA,OACA,OACA,SACA,MACA,WACA,WACA,MACA,MACA,OACA,MACA,KACA,KACA,SACA,MACA,OACA,KACA,MACA,MACA,KACA,KACA,SACA,UACA,UACA,QACA,OACA,QACA,UACA,YACA,SACA,SACA,KACA,WACA,SACA,QACA,UACA,OACA,QACA,OACA,WACA,KACA,KACA,SACA,WACA,QACA,SACA,WACA,WACA,QACA,OACA,UACA,KACA,KACA,KACA,QACA,QACA,SACA,UACA,UACA,MACA,UACA,WACA,YACA,UACA,UACA,WACA,SACA,SACA,eACA,aACA,UACA,cACA,UACA,iBACA,OACA,OACA,UACA,UACA,SACA,UACA,UACA,MACA,KACA,SACA,aACA,cACA,UACA,QACA,MACA,SACA,UACA,KACA,aACA,KACA,KACA,KACA,KACA,QACA,OACA,KACA,QACA,MACA,QACA,OACA,OACA,SACA,SACA,MACA,OACA,MACA,KACA,OACA,SACA,QACA,SACA,WACA,OACA,WACA,QACA,WACA,SACA,UACA,OACA,SACA,MACA,MACA,WACA,OACA,UACA,SACA,YACA,WACA,WACA,OACA,MACA,KACA,KACA,KACA,MACA,KACA,OACA,SACA,MACA,UACA,MACA,WACA,QACA,MACA,QACA,SACA,SACA,SACA,OACA,MACA,KACA,QACA,MACA,KACA,MACA,QACA,MACA,YACA,KACA,KACA,QACA,SACA,SACA,WACA,cACA,cACA,QACA,YACA,KACA,WACA,OACA,KACA,MACA,SACA,KACA,WACA,KACA,aACA,MACA,SACA,WACA,SACA,UACA,UACA,aACA,OACA,OACA,YACA,QACA,SACA,MACA,OACA,OACA,UACA,UACA,OACA,QACA,WACA,UACA,UACA,KACA,OACA,WACA,OACA,OACA,QACA,UACA,YACA,OACA,YACA,WACA,OACA,UACA,MACA,UACA,KACA,KACA,SACA,UACA,OACA,UACA,UACA,MACA,KACA,KACA,MACA,OACA,cACA,WACA,OACA,QACA,UACA,QACA,aACA,MACA,KACA,OACA,YACA,MACA,UACA,YACA,WACA,MACA,UACA,MACA,OACA,YACA,SACA,MACA,KACA,MACA,UACA,QACA,SACA,OACA,QACA,MACA,SACA,MACA,KACA,OACA,KACA,MACA,KACA,MACA,OACA,UACA,SACA,KACA,KACA,OACA,KACA,KACA,OACA,QACA,QACA,SACA,KACA,QACA,MACA,SACA,QACA,KACA,QACA,OACA,MACA,MACA,KACA,UACA,OACA,YACA,OACA,MACA,WACA,OACA,SACA,MACA,MACA,MACA,KACA,KACA,KACA,WACA,WACA,SACA,QACA,QACA,UACA,QACA,KACA,KACA,KACA,WACA,QACA,OACA,QACA,UACA,OACA,KACA,KACA,OACA,UACA,UACA,OACA,MACA,OACA,WACA,SACA,aACA,OACA,WACA,OACA,SACA,OACA,SACA,YACA,UACA,MACA,KACA,MACA,KACA,KACA,SACA,WACA,UACA,YACA,YACA,QACA,YACA,QACA,QACA,WACA,OACA,UACA,MACA,UACA,SACA,UACA,QACA,MACA,KACA,OACA,KACA,KACA,SACA,QACA,UACA,MACA,OACA,MACA,MACA,KACA,KACA,OACA,MACA,QACA,KACA,KACA,SACA,OACA,OACA,aACA,KACA,MACA,aACA,WACA,OACA,MACA,MACA,YACA,YACA,SACA,MACA,gBACA,SACA,cACA,KACA,WACA,KACA,KACA,QACA,KACA,UACA,MACA,WACA,KACA,OACA,MACA,SACA,OACA,MACA,KACA,OACA,QACA,UACA,MACA,MACA,KACA,MACA,MACA,KACA,OACA,SACA,MACA,MACA,KACA,WACA,OACA,SACA,UACA,SACA,OACA,KACA,cACA,iBACA,kBACA,MACA,KACA,KACA,KACA,MACA,OACA,MACA,SACA,SACA,UACA,OACA,KACA,KACA,QACA,UACA,SACA,KACA,OACA,MACA,KACA,MACA,OACA,YACA,KACA,KACA,QACA,KACA,KACA,UACA,cACA,QACA,YACA,SACA,OACA,YACA,UACA,UACA,MACA,SACA,UACA,MACA,SACA,KACA,KACA,MACA,QACA,UACA,SACA,QACA,OACA,QACA,OACA,KACA,OACA,OACA,gBACA,YACA,WACA,OACA,QACA,UACA,OACA,UACA,QACA,OACA,QACA,OACA,SACA,KACA,MACA,MACA,OACA,QACA,SACA,QACA,OACA,MACA,SACA,QACA,QACA,OACA,MACA,eACA,KACA,KACA,KACA,MACA,OACA,KACA,WACA,OACA,SACA,KACA,KACA,KACA,QACA,SACA,OACA,SACA,SACA,MACA,aACA,QACA,MACA,SACA,YACA,UACA,WACA,YACA,WACA,SACA,MACA,KACA,WACA,KACA,KACA,MACA,QACA,OACA,YACA,OACA,WACA,MACA,OACA,WACA,KACA,KACA,QACA,YACA,MACA,OACA,OACA,MACA,aACA,KACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,OACA,SACA,OACA,MACA,MACA,MACA,SACA,QACA,UACA,SACA,WACA,SACA,OACA,cACA,MACA,QACA,KACA,KACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,SACA,QACA,SACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,SACA,OACA,SACA,OACA,MACA,KACA,KACA,MACA,MACA,UACA,UACA,UACA,UACA,MACA,OACA,OACA,aACA,QACA,KACA,MACA,KACA,MACA,MACA,KACA,OACA,OACA,QACA,QACA,SACA,SACA,KACA,KACA,QACA,qBACA,SACA,MACA,SACA,QACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,MACA,WACA,SACA,UACA,SACA,cACA,UACA,OACA,KACA,QACA,MACA,MACA,MACA,SACA,MACA,OACA,SACA,SACA,MACA,UACA,UACA,QACA,SACA,MACA,MACA,KACA,OACA,YACA,QACA,OACA,WACA,QACA,QACA,YACA,MACA,OACA,KACA,MACA,KACA,SACA,KACA,KACA,WACA,MACA,UACA,QACA,QACA,cACA,SACA,SACA,OACA,SACA,WACA,MACA,MACA,OACA,OACA,UACA,QACA,KACA,KACA,QACA,OACA,cACA,WACA,OACA,KACA,KACA,MACA,OACA,QACA,UACA,OACA,OACA,KACA,YACA,QACA,QACA,QACA,MACA,OACA,cACA,OACA,cACA,QACA,aACA,WACA,aACA,MACA,aACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,OACA,SACA,QACA,SACA,QACA,KACA,OACA,aACA,UACA,SACA,UACA,MACA,WACA,cACA,QACA,QACA,SACA,OACA,WACA,MACA,OACA,UACA,SACA,SACA,aACA,OACA,aACA,SACA,UACA,UACA,OACA,YACA,QACA,MACA,MACA,MACA,KACA,SACA,QACA,QACA,SACA,OACA,KACA,OACA,KACA,QACA,OACA,MACA,KACA,MACA,SACA,KACA,WACA,OACA,SACA,SACA,OACA,QACA,WACA,UACA,UACA,kBACA,SACA,MACA,OACA,MACA,OACA,OACA,KACA,MACA,MACA,KACA,MACA,MACA,aACA,UACA,eACA,SACA,SACA,UACA,UACA,OACA,KACA,KACA,SACA,OACA,SACA,WACA,OACA,SACA,QACA,WACA,MACA,QACA,MACA,MACA,OACA,MACA,KACA,KACA,YACA,QACA,OACA,QACA,OACA,UACA,QACA,OACA,WACA,SACA,OACA,WACA,KACA,OACA,OACA,UACA,OACA,KACA,KACA,MACA,OACA,MACA,QACA,KACA,QACA,KACA,QACA,QACA,KACA,OACA,KACA,SACA,SACA,WACA,WACA,OACA,QACA,YACA,OACA,OACA,MACA,MACA,QACA,QACA,OACA,KACA,MACA,KACA,KACA,QACA,UACA,OACA,YACA,YACA,MACA,WACA,YACA,UACA,QACA,SACA,SACA,QACA,QACA,KACA,QACA,WACA,SACA,UACA,OACA,UACA,SACA,KACA,SACA,QACA,KACA,KACA,SACA,UACA,KACA,MACA,SACA,OACA,SACA,SACA,aACA,QACA,SACA,MACA,OACA,KACA,MACA,KACA,MACA,OACA,OACA,aACA,MACA,UACA,SACA,OACA,KACA,KACA,KACA,MACA,UACA,UACA,OACA,UACA,SACA,UACA,OACA,QACA,QACA,KACA,SACA,MACA,KACA,SACA,KACA,KACA,QACA,KACA,KACA,QACA,QACA,QACA,MACA,QACA,UACA,QACA,QACA,OACA,SACA,OACA,KACA,QACA,UACA,WACA,SACA,gBACA,YACA,qBACA,QACA,MACA,KACA,OACA,MACA,QACA,QACA,KACA,MACA,KACA,KACA,KACA,QACA,MACA,KACA,KACA,SACA,aACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,YACA,OACA,WACA,KACA,KACA,QACA,WACA,WACA,eACA,MACA,KACA,KACA,SACA,QACA,MACA,SACA,SACA,MACA,MACA,SACA,OACA,SACA,OACA,OACA,aACA,KACA,QACA,aACA,QACA,OACA,SACA,OACA,SACA,KACA,SACA,QACA,UACA,SACA,OACA,UACA,QACA,UACA,UACA,iBACA,SACA,QACA,UACA,MACA,UACA,QACA,OACA,KACA,UACA,OACA,OACA,cACA,MACA,UACA,OACA,UACA,MACA,gBACA,WACA,OACA,QACA,QACA,MACA,KACA,MACA,MACA,OACA,QACA,UACA,SACA,MACA,cACA,cACA,cACA,cACA,aACA,cACA,cACA,eACA,cACA,aACA,cACA,eACA,cACA,aACA,eACA,aACA,iBACA,cACA,aACA,oBACA,aACA,cACA,iBACA,eACA,cACA,iBACA,eACA,aACA,eACA,aACA,WACA,YACA,aACA,aACA,cACA,iBACA,oBACA,YACA,aACA,cACA,gBACA,aACA,yBACA,cACA,aACA,aACA,cACA,YACA,YACA,gBACA,cACA,cACA,YACA,iBACA,aACA,aACA,aACA,cACA,cACA,gBACA,gBACA,mBACA,cACA,eACA,cACA,cACA,iBACA,cACA,gBACA,cACA,kBACA,cACA,aACA,YACA,YACA,cACA,iBACA,iBACA,cACA,kBACA,cACA,cACA,aACA,YACA,kBACA,eACA,iBACA,kBACA,mBACA,kBACA,iBACA,eACA,oBACA,oBACA,iBACA,cACA,iBACA,kBACA,iBACA,mBACA,oBACA,eACA,iBACA,eACA,eACA,cACA,iBACA,cACA,eACA,aACA,eACA,eACA,YACA,WACA,YACA,kBACA,cACA,aACA,eACA,cACA,YACA,WACA,cACA,aACA,aACA,cACA,eACA,YACA,WACA,cACA,cACA,iBACA,cACA,cACA,cACA,YACA,gBACA,aACA,0BACA,2BACA,YACA,cACA,uBACA,cACA,aACA,aACA,cACA,mBACA,oBACA,aACA,gBACA,gBACA,cACA,MACA,MACA,SACA,QACA,UACA,SACA,KACA,YACA,OACA,WACA,MACA,UACA,KACA,MACA,KACA,SACA,OACA,OACA,MACA,KACA,OACA,UACA,uBzJh9CFhtD,EAAAD,QAAAmvC,oB0JAAlvC,EAAAD,QAAAwqD,M5EEAvqD,EAAAD,QAAAy9B,EAA2B39B,EAAQ,QAAeA,EAAQ,QAAUA,EAAQ,+y5J/ED5E,IAAAD,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QA0DA,OArDAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,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8BACA,+BACA,8BACA,kCACA,gCACA,0CACA,2BACA,2BACA,kBACA,kBACA,qBACA,4BACA,4BACA,4CACA,0EACA,6DACA,2DACA,mEACA,gEACA,gDACA,gDACA,gCACA,6DACA,qCACA,sCACA,qBACA,gCACA,2BACA,6BACA,8BACA,+BACA,6BACA,wBACA,gCACA,wCACA,yBACA,wCACA,oCACA,+CACA,kCACA,gCACA,yCACA,6BACA,sBACA,wBACA,yBACA,kBACA,6BACA,2BACA,oBACA,uBACA,sBACA,iBACA,0BACA,2BACA,0BACA,4BACA,wBACA,iBACA,kBACA,8BACA,kCACA,sDACA,4CACA,6CACA,uCACA,qDACA,uCACA,iBACA,8BACA,yCACA,+BACA,oDACA,gCACA,qDACA,iCACA,sBACA,qCACA,8CACA,yCACA,2CACA,4CACA,6CACA,2CACA,sCACA,uDACA,iDACA,wCACA,sCACA,sCACA,iDACA,6BACA,6BACA,iCACA,iCACA,iCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,gCACA,oCACA,iCACA,sBACA,yCACA,8CACA,kCACA,+CACA,mCACA,0BACA,kBACA,+BACA,sCACA,gDACA,+BACA,2BACA,4BACA,gCACA,yBACA,mBACA,mEACA,kBACA,sBACA,4BACA,wBACA,uCACA,6BACA,8BACA,gCACA,wCACA,yCACA,8CACA,4BACA,2BACA,8BACA,2CACA,gCACA,iCACA,2CACA,+BACA,+BACA,4BACA,0BACA,8BACA,wCACA,0CACA,2CACA,wCACA,gCACA,4BACA,oCACA,6BACA,uDACA,0BACA,4BACA,sBACA,2BACA,6BACA,oBACA,gCACA,sBACA,6BACA,yBACA,2BACA,wCACA,kBACA,yBACA,+BACA,uBACA,sCACA,yBACA,gCACA,kBACA,qBACA,wBACA,iCACA,oBACA,wBACA,0CACA,gBACA,4BACA,YACA,qCACA,uBACA,qBACA,qCACA,yBACA,iCACA,6BACA,aACA,wBACA,iBACA,qCACA,wCACA,sCACA,yCACA,aACA,mCACA,eACA,uCACA,8CACA,mBACA,kCACA,qBACA,yBACA,2BACA,oCACA,sBACA,8CACA,qCACA,sCACA,yBACA,qDACA,kCACA,iCACA,iCACA,0BACA,mCACA,2BACA,qDACA,6CACA,oCACA,wCACA,gBACA,2BACA,iCACA,yBACA,0CACA,yCACA,qCACA,yBACA,yBACA,+CACA,mDACA,8CACA,sDACA,wDACA,oDACA,gDACA,gDACA,iDACA,kDACA,qCACA,sCACA,mCACA,iDACA,0CACA,gDACA,sCACA,6BACA,uBACA,gCACA,sDACA,yCACA,yBACA,gBACA,mBACA,2DACA,oDACA,0CACA,iDACA,iCACA,qDACA,qDACA,wCACA,kDACA,4BACA,mBACA,6CACA,8CACA,6BACA,sDACA,sCACA,6CACA,4BACA,0BACA,sBACA,mCACA,iCACA,0BACA,yCACA,8BACA,8BACA,8BACA,8BACA,oCACA,6BACA,6BACA,0CACA,+BACA,8BACA,yBACA,4BACA,mCACA,oCACA,6BACA,qCACA,uBACA,mBACA,4CACA,0BACA,wBACA,eACA,8BACA,gCACA,6BACA,wBACA,gBACA,+BACA,wBACA,6BACA,kBACA,mBACA,eACA,mCACA,mCACA,qCACA,+BACA,kCACA,sCACA,8BACA,kBACA,gCACA,8BACA,4CACA,oCACA,mCACA,gDACA,+CACA,kCACA,oCACA,6BACA,kEAI4B,CAC5B,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,wBAIqB,CACrB,2BACA,qBACA,sBACA,yC/L3YFzhE,EAAAD,QAAA6nD,4RgMAaga,EACD,CAAC,CACTphE,KAAM,kBACNU,MAAO,8BACP4+B,SAAU,CAAC,CACTt/B,KAAM,WACNU,MAAO,2BACN,CACDV,KAAM,WACNU,MAAO,2BACN,CACDV,KAAM,aACNU,MAAO,yBAKA2F,EAAmB,CAC9BF,SAAU,CACR,CACEnG,KAAM,aACNU,MAAO,uBACP4+B,SAAU,CACR,CACEt/B,KAAM,aACNU,MAAO,qBAET,CACEV,KAAM,aACNU,MAAO,4lBC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","file":"static/js/application.initial.c022cd79.chunk.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 56);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__3__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","export { InMemoryListener } from './src/in-memory-listener';\r\nexport { InMemorySink } from './src/in-memory-sink';\r\nexport { SessionStorageSink } from './src/session-storage-sink';\r\n","import { Listener } from '@bingads-webui/listener';\r\nimport _ from 'underscore';\r\n\r\n/**\r\n * In memory listener class. This logs to an in-memory object that is passed\r\n * in. It expects a sink object with write method on it.\r\n */\r\n\r\nexport class InMemoryListener extends Listener {\r\n  /**\r\n   * Creates an instance of InMemoryListener.\r\n   * @param {any} [options={}] - The options for in-memory listener\r\n   * @param {Object} options.sink - Sink to push logs to.\r\n   * Should have write method on it\r\n   * @param {Object} options.formatters - Object where values are formatters\r\n   * to use for the listener\r\n   * @param {Object} options.filters - Object where values are filters to\r\n   * use for the listener\r\n   */\r\n  constructor(options = {}) {\r\n    super(options);\r\n\r\n    this.formatters = options.formatters || {};\r\n    this.filters = options.filters || {};\r\n    this.sink = options.sink;\r\n  }\r\n\r\n  /**\r\n * Init in memory listener if needed options passed in\r\n * @returns {undefined} - no returns\r\n */\r\n  init() {\r\n    if (this.sink && _.isFunction(this.sink.write)) {\r\n      this.initialized = true;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * writes logs to the listener\r\n   * @param {object} logMessage - logs to be written\r\n   * @returns {undefined} - no returns\r\n  */\r\n  write(logMessage) {\r\n    if (!this.initialized || this.filterLogs(logMessage)) {\r\n      return;\r\n    }\r\n\r\n    const formattedMsg = this.formatLogs(logMessage);\r\n\r\n    this.sink.write(formattedMsg);\r\n  }\r\n}\r\n\r\n","/**\r\n * Sink that is compatible with InMemoryListener.\r\n * Can be passed in to the listener to receive logs.\r\n */\r\nexport class InMemorySink {\r\n  /**\r\n   * Creates an instance of InMemorySink.\r\n   * @param {Number} [maxSize=2000] - Maximum size of logs array.\r\n   * Pass in -1 to have unbounded array.\r\n   */\r\n  constructor({ maxSize = 2000 } = {}) {\r\n    this.logs = [];\r\n    this.maxSize = maxSize;\r\n  }\r\n\r\n  /**\r\n   * Write log to the sink\r\n   * @param {Object} log - Log object to write\r\n   * @returns {undefined} - no returns\r\n   */\r\n  write(log) {\r\n    this.logs.push(log);\r\n\r\n    while (this.maxSize > -1 && this.logs.length > this.maxSize) {\r\n      this.logs.shift();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Getter for logs written to sink. Returns the\r\n   * logs array.\r\n   * @readonly\r\n  */\r\n  get items() {\r\n    return this.logs;\r\n  }\r\n}\r\n","import _ from 'underscore';\r\n/**\r\n * Sink that is compatible with SessionStorage.\r\n * Can be passed in to the listener to receive logs.\r\n */\r\nexport class SessionStorageSink {\r\n  /**\r\n   * Creates an instance of SessionStorageSink.\r\n   * @param {Object} options - Options to initialize\r\n   * @param {Number} [options.maxSize=2000] - Maximum size of logs array.\r\n   * @param {String} options.storageKey - Key to use in session storage\r\n   * Pass in -1 to have unbounded array.\r\n   */\r\n  constructor(options = {}) {\r\n    this.logs = [];\r\n    this.maxSize = options.maxSize || 2000;\r\n\r\n    if (!options.storageKey) {\r\n      throw new Error('Cannot create sink without storageKey');\r\n    }\r\n\r\n    if (SessionStorageSink.keyCache[options.storageKey]) {\r\n      throw new Error('Storage key is already initialized on page');\r\n    }\r\n    SessionStorageSink.keyCache[options.storageKey] = true;\r\n\r\n    this.storageKey = options.storageKey;\r\n    const existingItemsStr = window.sessionStorage.getItem(this.storageKey);\r\n    const existingItems = _.isEmpty(existingItemsStr) ? [] : JSON.parse(existingItemsStr);\r\n    existingItems.forEach(formattedMsg => this.write(formattedMsg));\r\n\r\n    window.addEventListener('beforeunload', () => {\r\n      this.setItemsOnUnload();\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Write log to the sink\r\n   * @param {Object} log - Log object to write\r\n   * @returns {undefined} - no returns\r\n   */\r\n  write(log) {\r\n    this.logs.push(log);\r\n\r\n    while (this.maxSize > -1 && this.logs.length > this.maxSize) {\r\n      this.logs.shift();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Getter for logs written to sink. Returns the\r\n   * logs array.\r\n   * @readonly\r\n  */\r\n  get items() {\r\n    return this.logs;\r\n  }\r\n\r\n  setItemsOnUnload() {\r\n    window.sessionStorage.setItem(this.storageKey, JSON.stringify(this.logs));\r\n  }\r\n\r\n  static keyCache = {};\r\n}\r\n","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","export const API_NAME = {\r\n  GET_ADS: 'getAds',\r\n  GET_AD_DETAIL: 'getAdDetail',\r\n  GET_ADVERTISERS: 'getAdvertisers',\r\n  GET_ADVERTISER_DETAIL: 'getAdvertiserDetail',\r\n  UNKNOWN: 'unknown',\r\n};\r\n\r\nexport const MSG_BEFORE_FETCH = 'Fetch started';\r\nexport const MSG_AFTER_FETCH = 'Fetch succeeded';\r\nexport const MSG_FETCH_FAILED = 'Fetch failed';\r\nexport const MSG_EXCEPTION = 'Exception occurred';\r\n","import { API_NAME } from './constants';\r\n\r\nexport const mapDomainToAPIEndpoint = (domain) => {\r\n  if (domain === 'adlibrary.ads.microsoft.com') {\r\n    return 'https://adlibrary.api.bingads.microsoft.com';\r\n  }\r\n  return 'https://adslibrary-test.api.bingads.microsoft.com';\r\n};\r\n\r\nexport const getApiNameFromUrl = (fullUrl) => {\r\n  const mainPart = fullUrl.split('/api/v1/')[1].split('?')[0];\r\n  /**\r\n   * 1. /Ads                        ->  getAds\r\n   * 2. /Ads/<Id>?                  ->  getAdDetail\r\n   * 3. /Advertisers                ->  getAdvertisers\r\n   * 4. /Advertisers/<id>?          ->  getAdvertiserDetail\r\n   */\r\n  if (/^Ads$/.test(mainPart)) {\r\n    return API_NAME.GET_ADS;\r\n  } else if (/^Ads\\/[^d]+\\/?$/.test(mainPart)) {\r\n    return API_NAME.GET_AD_DETAIL;\r\n  } else if (/^Advertisers$/.test(mainPart)) {\r\n    return API_NAME.GET_ADVERTISERS;\r\n  } else if (/^Advertisers\\/[^/]+\\/?$/.test(mainPart)) {\r\n    return API_NAME.GET_ADVERTISER_DETAIL;\r\n  }\r\n  return API_NAME.UNKNOWN;\r\n};\r\n\r\nexport const getReqIdFromRoute = (route) => {\r\n  const reqIdQueryString = route.split('&').find(param => param.includes('ReqId'));\r\n  if (!reqIdQueryString) return null;\r\n  return reqIdQueryString.split('=')[1];\r\n};\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport Proptypes from 'prop-types';\r\nimport { Provider } from 'use-http';\r\nimport { fetchEventSchema } from '@bingads-webui/adlibrary-instrumentation';\r\nimport {\r\n  MSG_BEFORE_FETCH,\r\n  MSG_AFTER_FETCH,\r\n  MSG_FETCH_FAILED,\r\n  MSG_EXCEPTION,\r\n} from './constants';\r\nimport {\r\n  mapDomainToAPIEndpoint,\r\n  getApiNameFromUrl,\r\n  getReqIdFromRoute,\r\n} from './helpers';\r\n\r\nexport const FetchProvider = (props) => {\r\n  const { instrumentation } = props;\r\n  const [APIEndpoint, setAPIEndpoint] = useState('');\r\n\r\n  instrumentation.addScenario({\r\n    scenario: [\r\n      ...fetchEventSchema.scenario,\r\n    ],\r\n  });\r\n\r\n  // eslint-disable-next-line react/prop-types\r\n  const fetchScenario = instrumentation.fetchEvent.create();\r\n  const fetchTrace = fetchScenario.fetchTrace.create();\r\n  const fetchError = fetchScenario.fetchError.create();\r\n\r\n  const fetchOptions = useMemo(() => ({\r\n    interceptors: {\r\n      request: ({ options, url, route }) => {\r\n        const fullUrl = `${url}/${route}`;\r\n        fetchTrace.trace(MSG_BEFORE_FETCH, getApiNameFromUrl(fullUrl), getReqIdFromRoute(route), options.method);\r\n        return options;\r\n      },\r\n      response: ({ response }) => {\r\n        if (response.ok) {\r\n          fetchTrace.trace(`${MSG_AFTER_FETCH}: ${JSON.stringify(response.data)}`, getApiNameFromUrl(response.url), getReqIdFromRoute(response.url));\r\n        } else {\r\n          fetchError.error(`${MSG_FETCH_FAILED}: ${response.status} ${response.statusText} ${JSON.stringify(response.data)}`, getApiNameFromUrl(response.url), getReqIdFromRoute(response.url));\r\n        }\r\n        return response;\r\n      },\r\n    },\r\n    onError: (error) => {\r\n      fetchError.error(`${MSG_EXCEPTION}: ${JSON.stringify(error)}`);\r\n    },\r\n  }), [fetchError, fetchTrace]);\r\n\r\n  useEffect(() => {\r\n    const domain = window.location.hostname;\r\n    setAPIEndpoint(mapDomainToAPIEndpoint(domain));\r\n  }, []);\r\n\r\n  return (\r\n    <Provider url={APIEndpoint} options={fetchOptions}>\r\n      {props.children}\r\n    </Provider>\r\n  );\r\n};\r\n\r\nFetchProvider.propTypes = {\r\n  instrumentation: Proptypes.shape({\r\n    addScenario: Proptypes.func.isRequired,\r\n  }).isRequired,\r\n  children: Proptypes.node.isRequired,\r\n};\r\n","export { ConsoleListener } from './src/index';\r\n","import { include } from 'underscore.string';\r\nimport { Listener } from '@bingads-webui/listener';\r\n\r\n/**\r\n * Console listener class\r\n */\r\nexport class ConsoleListener extends Listener {\r\n  constructor(options = {}) {\r\n    super(options);\r\n\r\n    this.formatters = options.formatters || [];\r\n    this.filters = options.filters || [];\r\n  }\r\n\r\n  init() {\r\n    this.initialized = true;\r\n  }\r\n\r\n  /* eslint-disable no-console */\r\n  write(logMessage) {\r\n    if (!this.initialized || this.filterLogs(logMessage)) {\r\n      return;\r\n    }\r\n\r\n    const formattedMsg = this.formatLogs(logMessage);\r\n\r\n    const category = logMessage.logCategory || '';\r\n    if (include(category.toLowerCase(), 'error')) {\r\n      console.error(formattedMsg);\r\n    } else {\r\n      console.log(formattedMsg);\r\n    }\r\n\r\n    // TODO: use console.timeStamp for activity perf marker\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__498__;","export { Listener } from './src/index';\r\nexport { Formatter } from './src/formatter';\r\nexport { Filter } from './src/filter';\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * Base listener class - defines the interface for custom listeners.\r\n * This can be extended by custom listeners\r\n */\r\nexport class Listener {\r\n  constructor() {\r\n    this.initialized = false;\r\n    this.logs = [];\r\n  }\r\n\r\n  filterLogs(logMessage) {\r\n    return _.any(this.filters, filter => filter.check(logMessage));\r\n  }\r\n\r\n  formatLogs(logMessage) {\r\n    let formattedMsg = _.clone(logMessage);\r\n    _.each(this.formatters, (formatter) => {\r\n      formattedMsg = formatter.format(formattedMsg);\r\n    });\r\n    return formattedMsg;\r\n  }\r\n\r\n  write() {\r\n    throw new Error('Not Implemented');\r\n  }\r\n\r\n  teardown() {\r\n    _.noop();\r\n  }\r\n}\r\n","/**\r\n * Base Formatter class - defines the interface for custom Formatters\r\n */\r\nexport class Formatter {\r\n  format() {\r\n    throw new Error('Not Implemented');\r\n  }\r\n}\r\n","/**\r\n * Base Filter class - defines the interface for custom Filters\r\n */\r\nexport class Filter {\r\n  check() {\r\n    throw new Error('Not Implemented');\r\n  }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const LogoImage = React.memo(props => (\r\n  <svg\r\n    version=\"1.1\"\r\n    id=\"Layer_1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    x=\"0px\"\r\n    y=\"0px\"\r\n    viewBox=\"0 0 337.6 72\"\r\n    enableBackground=\"new 0 0 337.6 72\"\r\n    {...props}\r\n  >\r\n    <path\r\n      className={props.classes.logoText}\r\n      fill=\"#646464\"\r\n      d=\"M140.3,14.4v43.2h-7.5V23.8h-0.1l-13.4,33.9h-5l-13.7-33.9h-0.1v33.9h-6.9V14.4h10.8l12.4,32h0.2l13.1-32H140.3\r\n        L140.3,14.4z M146.6,17.7c0-1.2,0.4-2.2,1.3-3c0.9-0.8,1.9-1.2,3.1-1.2c1.3,0,2.4,0.4,3.2,1.3s1.3,1.8,1.3,3s-0.4,2.2-1.3,3\r\n        c-0.9,0.8-1.9,1.2-3.2,1.2s-2.3-0.4-3.1-1.2C147,19.9,146.6,18.9,146.6,17.7z M154.6,26.7v31h-7.3v-31\r\n        C147.3,26.7,154.6,26.7,154.6,26.7z M176.8,52.3c1.1,0,2.3-0.3,3.6-0.8s2.5-1.2,3.6-2v6.8c-1.2,0.7-2.5,1.2-4,1.5s-3.1,0.5-4.9,0.5\r\n        c-4.6,0-8.3-1.4-11.1-4.3c-2.9-2.9-4.3-6.6-4.3-11c0-5,1.5-9.1,4.4-12.3s7-4.8,12.4-4.8c1.4,0,2.8,0.2,4.1,0.5\r\n        c1.4,0.4,2.5,0.8,3.3,1.2v7c-1.1-0.8-2.3-1.5-3.4-1.9c-1.1-0.4-2.4-0.7-3.6-0.7c-2.9,0-5.2,0.9-7,2.8s-2.6,4.4-2.6,7.6\r\n        c0,3.1,0.9,5.6,2.6,7.3C171.5,51.5,173.8,52.3,176.8,52.3z M204.7,26.1c0.6,0,1.1,0,1.6,0.1s0.9,0.2,1.2,0.3v7.4\r\n        c-0.4-0.3-0.9-0.5-1.7-0.8s-1.6-0.4-2.7-0.4c-1.8,0-3.3,0.8-4.5,2.3s-1.9,3.8-1.9,7v15.6h-7.3v-31h7.3v4.9h0.1c0.7-1.7,1.7-3,3-4\r\n        C201.2,26.6,202.8,26.2,204.7,26.1L204.7,26.1z M207.8,42.6c0-5.1,1.4-9.2,4.3-12.2s6.9-4.5,12.1-4.5c4.8,0,8.6,1.4,11.3,4.3\r\n        s4.1,6.8,4.1,11.7c0,5-1.4,9-4.3,12c-2.9,3-6.8,4.5-11.8,4.5c-4.8,0-8.6-1.4-11.4-4.2C209.3,51.3,207.8,47.5,207.8,42.6z\r\n        M215.4,42.4c0,3.2,0.7,5.7,2.2,7.4s3.6,2.6,6.3,2.6c2.6,0,4.7-0.8,6.1-2.6c1.4-1.7,2.1-4.2,2.1-7.6c0-3.3-0.7-5.8-2.1-7.5\r\n        c-1.4-1.7-3.4-2.5-6-2.5c-2.7,0-4.7,0.9-6.2,2.7C216.2,36.5,215.4,39.1,215.4,42.4L215.4,42.4z M250.5,34.8c0,1,0.3,1.9,1,2.5\r\n        s2.1,1.3,4.4,2.2c2.9,1.2,5,2.5,6.1,3.9c1.2,1.5,1.8,3.2,1.8,5.3c0,2.9-1.1,5.3-3.4,7s-5.3,2.7-9.1,2.7c-1.3,0-2.7-0.2-4.3-0.5\r\n        s-2.9-0.7-4-1.2v-7.2c1.3,0.9,2.8,1.7,4.3,2.2s2.9,0.8,4.2,0.8c1.7,0,2.9-0.2,3.7-0.7s1.2-1.2,1.2-2.3c0-1-0.4-1.8-1.2-2.5\r\n        s-2.4-1.5-4.6-2.4c-2.7-1.1-4.6-2.4-5.7-3.8c-1.1-1.4-1.7-3.2-1.7-5.4c0-2.8,1.1-5.1,3.3-6.9c2.2-1.8,5.1-2.7,8.6-2.7\r\n        c1.1,0,2.3,0.1,3.6,0.4c1.4,0.2,2.5,0.5,3.4,0.9v7c-1-0.6-2.1-1.2-3.4-1.7c-1.3-0.5-2.6-0.7-3.8-0.7c-1.4,0-2.5,0.3-3.2,0.8\r\n        C250.9,33.1,250.5,33.9,250.5,34.8L250.5,34.8z M266.9,42.6c0-5.1,1.5-9.2,4.3-12.2c2.9-3,6.9-4.5,12-4.5c4.8,0,8.6,1.4,11.3,4.3\r\n        s4.1,6.8,4.1,11.7c0,5-1.5,9-4.3,12c-2.9,3-6.8,4.5-11.8,4.5c-4.8,0-8.6-1.4-11.4-4.2C268.3,51.3,266.9,47.5,266.9,42.6L266.9,42.6z\r\n        M274.5,42.4c0,3.2,0.7,5.7,2.2,7.4s3.6,2.6,6.3,2.6c2.6,0,4.7-0.8,6.1-2.6c1.4-1.7,2.1-4.2,2.1-7.6c0-3.3-0.7-5.8-2.1-7.5\r\n        s-3.5-2.5-6-2.5c-2.7,0-4.7,0.9-6.2,2.7C275.2,36.5,274.5,39.1,274.5,42.4L274.5,42.4z M322.9,32.6H312v25h-7.4v-25h-5.2v-6h5.2\r\n        v-4.3c0-3.3,1.1-5.9,3.2-8s4.8-3.1,8.1-3.1c0.9,0,1.7,0.1,2.4,0.1s1.3,0.2,1.8,0.4v6.4c-0.2-0.1-0.7-0.3-1.3-0.5\r\n        c-0.6-0.2-1.3-0.3-2.1-0.3c-1.5,0-2.7,0.5-3.5,1.4c-0.8,1-1.2,2.4-1.2,4.2v3.7h10.9v-7l7.3-2.2v9.2h7.4v6h-7.4v14.5\r\n        c0,1.9,0.4,3.3,1,4c0.7,0.8,1.8,1.2,3.3,1.2c0.4,0,0.9-0.1,1.5-0.3s1.1-0.4,1.5-0.7v6c-0.5,0.3-1.2,0.5-2.3,0.7s-2.1,0.3-3.2,0.3\r\n        c-3.1,0-5.4-0.8-6.9-2.5c-1.5-1.6-2.3-4.1-2.3-7.4L322.9,32.6L322.9,32.6z\"\r\n    />\r\n    <path fill=\"#F25022\" d=\"M0,0h34.2v34.2H0V0z\" />\r\n    <path fill=\"#7FBA00\" d=\"M37.8,0H72v34.2H37.8V0z\" />\r\n    <path fill=\"#00A4EF\" d=\"M0,37.8h34.2V72H0V37.8z\" />\r\n    <path fill=\"#FFB900\" d=\"M37.8,37.8H72V72H37.8V37.8z\" />\r\n  </svg>\r\n));\r\n\r\nLogoImage.propTypes = {\r\n  classes: PropTypes.shape({\r\n    logoText: PropTypes.string,\r\n  }).isRequired,\r\n};\r\n","import classnames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { compose } from 'underscore';\r\n\r\nimport { Col } from '@bingads-webui-react/layout';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { LogoImage } from './logo-image';\r\n\r\nconst getStyles = () => ({\r\n  container: {\r\n    display: 'flex',\r\n    flexDirection: 'row',\r\n    height: 60,\r\n  },\r\n  logo: {\r\n    height: 20,\r\n    width: 100,\r\n  },\r\n  logoClickable: {\r\n    cursor: 'pointer',\r\n  },\r\n  logoContainer: {\r\n    padding: '0px 20px 0px 20px',\r\n    height: 20,\r\n  },\r\n  divider: {\r\n    borderLeftColor: 'black',\r\n    borderLeftWidth: 1,\r\n    borderLeftStyle: 'solid',\r\n    height: 40,\r\n    marginTop: 10,\r\n    marginBottom: 10,\r\n    width: 0,\r\n  },\r\n  item: {\r\n    marginLeft: 0,\r\n    marginRight: 0,\r\n    display: 'flex',\r\n    justifyContent: 'center',\r\n    alignItems: 'center',\r\n  },\r\n  text: {\r\n    color: '#646464',\r\n    fontSize: '17px',\r\n    lineHeight: '19px',\r\n    fontStyle: 'normal',\r\n    marginTop: 18,\r\n    marginBottom: 23,\r\n    textAlign: 'center',\r\n    paddingLeft: 20,\r\n    fontWeight: 500,\r\n  },\r\n  logoText: {\r\n    /* Targets displays using the Windows’ \"High Contrast\" theme: */\r\n    '@media screen and (forced-colors: active)': {\r\n      fill: '#646464 !important',\r\n    },\r\n  },\r\n});\r\n\r\nconst UnStyledHeader = ({\r\n  classes,\r\n}) => (\r\n  <div className={classes.container}>\r\n    <Col className={classes.item}>\r\n      <div className={classes.logoContainer}>\r\n        <Link to=\"/\" aria-label=\"logo image\">\r\n          <LogoImage\r\n            className={classnames([classes.logo, classes.logoClickable])}\r\n            classes={classes}\r\n          />\r\n        </Link>\r\n      </div>\r\n    </Col>\r\n    <Col className={classes.item}>\r\n      <div className={classes.divider} />\r\n    </Col>\r\n    <Col className={classes.item}>\r\n      <span className={classnames(classes.text)}>Ad library</span>\r\n    </Col>\r\n  </div>\r\n);\r\n\r\nUnStyledHeader.propTypes = {\r\n  classes: PropTypes.shape({\r\n    container: PropTypes.string,\r\n    logo: PropTypes.string,\r\n    logoClickable: PropTypes.string,\r\n    logoContainer: PropTypes.string,\r\n    divider: PropTypes.string,\r\n    item: PropTypes.string,\r\n    text: PropTypes.string,\r\n    logoText: PropTypes.string,\r\n  }).isRequired,\r\n};\r\n\r\nexport const Header = compose(WrappedComponent => withDefaultStyles(WrappedComponent, getStyles))(UnStyledHeader);\r\n\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport classnames from 'classnames';\r\nimport Proptypes from 'prop-types';\r\nimport { compose } from 'underscore';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nconst getStyle = () => ({\r\n  pageMenuItem: {\r\n    position: 'relative',\r\n    height: '36px',\r\n    display: 'flex',\r\n    flexDirection: 'row',\r\n    alignItems: 'center',\r\n    '& a': {\r\n      width: '100%',\r\n      textDecoration: 'none',\r\n      color: '#323130',\r\n      display: 'flex',\r\n      flexDirection: 'row',\r\n      justifyContent: 'flex-start',\r\n      paddingLeft: '8px',\r\n      paddingTop: '4px',\r\n    },\r\n    '&:hover': {\r\n      backgroundColor: '#EDEBE9 !important',\r\n    },\r\n  },\r\n  selectionIndicator: {\r\n    position: 'absolute',\r\n    top: '2px',\r\n    bottom: '2px',\r\n    left: '2px',\r\n    width: '4px',\r\n    borderRadius: '99px',\r\n    zIndex: 2,\r\n    borderLeft: '4px solid #0078D4',\r\n  },\r\n  textContainer: {\r\n    fontStyle: 'normal',\r\n    fontWeight: '400',\r\n    fontSize: '14px',\r\n    lineHeight: '19px',\r\n    textDecoration: 'none',\r\n    paddingLeft: '6px',\r\n    '&.selected': {\r\n      fontWeight: '600',\r\n    },\r\n  },\r\n});\r\n\r\nconst UnStyledPageMenuItem = ({\r\n  classes,\r\n  page,\r\n  isCollapsed,\r\n}) => (\r\n  <div className={classes.pageMenuItem}>\r\n    { page.isSelected && <div className={classes.selectionIndicator} />}\r\n    { page.isSelected &&\r\n      <Link aria-label={page.displayName} to={page.path} aria-current=\"true\">\r\n        <span>{page.icon}</span>\r\n        { !isCollapsed &&\r\n          <span className={classnames(classes.textContainer, 'selected')}>\r\n            {page.displayName}\r\n          </span> }\r\n      </Link>\r\n    }\r\n    { !page.isSelected &&\r\n      <Link aria-label={page.displayName} to={page.path} >\r\n        <span>{page.icon}</span>\r\n        { !isCollapsed &&\r\n          <span className={classnames(classes.textContainer)}>\r\n            {page.displayName}\r\n          </span> }\r\n      </Link>\r\n    }\r\n  </div>\r\n);\r\n\r\nUnStyledPageMenuItem.propTypes = {\r\n  classes: Proptypes.shape({\r\n    pageMenuItem: Proptypes.string.isRequired,\r\n    selectionIndicator: Proptypes.string.isRequired,\r\n    textContainer: Proptypes.string.isRequired,\r\n  }).isRequired,\r\n  page: Proptypes.shape({\r\n    id: Proptypes.string.isRequired,\r\n    path: Proptypes.string.isRequired,\r\n    icon: Proptypes.element.isRequired,\r\n    displayName: Proptypes.string.isRequired,\r\n    isSelected: Proptypes.bool.isRequired,\r\n  }).isRequired,\r\n  isCollapsed: Proptypes.bool.isRequired,\r\n};\r\n\r\nexport const PageMenuItem = compose(WrappedComponent => withDefaultStyles(WrappedComponent, getStyle))(UnStyledPageMenuItem);\r\n","import React from 'react';\r\nimport Proptypes from 'prop-types';\r\nimport { compose } from 'underscore';\r\n\r\nimport { Button } from '@fluentui/react-components';\r\nimport { Navigation16Regular } from '@fluentui/react-icons';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n// import { ICON_FILL_COLOR } from '../../utils/constants';\r\n\r\nconst ICON_FILL_COLOR = 'rgba(40, 134, 222, 1)';\r\n\r\nconst getStyle = () => ({\r\n  toggleMenuButton: {\r\n    position: 'relative',\r\n    height: '36px',\r\n    display: 'flex',\r\n    flexDirection: 'row',\r\n    alignItems: 'center',\r\n    paddingLeft: '10px',\r\n  },\r\n});\r\n\r\nconst UnStyledToggleMenuButton = ({\r\n  classes,\r\n  onToggleClick,\r\n  isExpanded,\r\n}) => (\r\n  <Button\r\n    className={classes.toggleMenuButton}\r\n    appearance=\"transparent\"\r\n    icon={<Navigation16Regular primaryFill={ICON_FILL_COLOR} />}\r\n    shape=\"square\"\r\n    onClick={onToggleClick}\r\n    aria-label=\"menu\"\r\n    aria-expanded={isExpanded}\r\n  />\r\n);\r\n\r\nUnStyledToggleMenuButton.propTypes = {\r\n  classes: Proptypes.shape({\r\n    toggleMenuButton: Proptypes.string.isRequired,\r\n  }).isRequired,\r\n  onToggleClick: Proptypes.func.isRequired,\r\n  isExpanded: Proptypes.bool.isRequired,\r\n};\r\n\r\nexport const ToggleMenuButton = compose(WrappedComponent => withDefaultStyles(WrappedComponent, getStyle))(UnStyledToggleMenuButton);\r\n","import React, { useCallback } from 'react';\r\nimport Proptypes from 'prop-types';\r\nimport { compose } from 'underscore';\r\n\r\nimport { Mode } from '@bingads-webui-react/app-layout-container';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { PageMenuItem } from './page-menu-item';\r\nimport { ToggleMenuButton } from './toggle-menu-button';\r\n\r\nconst getStyle = () => ({\r\n  pageMenuContainer: {\r\n    transition: 'width 0.2s',\r\n    display: 'flex',\r\n    flexDirection: 'column',\r\n    width: '100%',\r\n    paddingTop: '8.5px',\r\n  },\r\n});\r\n\r\nexport const UnStyledPageMenuList = ({\r\n  classes,\r\n  changeLayout,\r\n  mode,\r\n  pages,\r\n}) => {\r\n  const menuItems = pages.map(page => (\r\n    <PageMenuItem\r\n      key={page.id}\r\n      page={page}\r\n      isCollapsed={mode === Mode.Collapsed}\r\n    />\r\n  ));\r\n\r\n  const onToggleClick = useCallback(() => {\r\n    if (mode === Mode.Expanded) changeLayout({ nav: { mode: Mode.Collapsed } });\r\n    else changeLayout({ nav: { mode: Mode.Expanded } });\r\n  }, [mode, changeLayout]);\r\n\r\n  return (\r\n    <div className={classes.pageMenuContainer}>\r\n      <ToggleMenuButton onToggleClick={onToggleClick} isExpanded={mode === Mode.Expanded}/>\r\n      {menuItems}\r\n    </div>\r\n  );\r\n};\r\n\r\nUnStyledPageMenuList.propTypes = {\r\n  classes: Proptypes.shape({\r\n    pageMenuContainer: Proptypes.string.isRequired,\r\n  }).isRequired,\r\n  changeLayout: Proptypes.func.isRequired,\r\n  mode: Proptypes.string.isRequired,\r\n  pages: Proptypes.arrayOf(Proptypes.shape({\r\n    id: Proptypes.string.isRequired,\r\n    displayName: Proptypes.string.isRequired,\r\n    path: Proptypes.string.isRequired,\r\n    icon: Proptypes.element.isRequired,\r\n  })).isRequired,\r\n};\r\n\r\nexport const PageMenuList = compose(WrappedComponent => withDefaultStyles(WrappedComponent, getStyle))(UnStyledPageMenuList);\r\n","import React from 'react';\r\nimport { Home20Regular, DocumentMultiple20Regular } from '@fluentui/react-icons';\r\n\r\nexport const PageConfigs = [\r\n  {\r\n    id: 'home',\r\n    displayName: 'Home',\r\n    icon: <Home20Regular />,\r\n    path: '/',\r\n  },\r\n  {\r\n    id: 'api',\r\n    displayName: 'API',\r\n    icon: <DocumentMultiple20Regular />,\r\n    path: '/api',\r\n  },\r\n];\r\n\r\nexport const getPageConfigs = (currentPath) => {\r\n  const pageConfigs = PageConfigs.map(pageConfig => ({\r\n    ...pageConfig,\r\n    isSelected: pageConfig.path === currentPath,\r\n  }));\r\n  return pageConfigs;\r\n};\r\n","import React from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport Proptypes from 'prop-types';\r\nimport { compose } from 'underscore';\r\n\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { PageMenuList } from './page-menu-list';\r\nimport { getPageConfigs } from './page-config';\r\n\r\nconst getStyle = () => ({\r\n  sideBarContainer: {\r\n    backgroundColor: '#F3F2F1',\r\n    height: '100vh',\r\n  },\r\n});\r\n\r\nconst UnstyledPageMenu = (props) => {\r\n  const { classes } = props;\r\n  const { pathname: path } = useLocation();\r\n  const pages = getPageConfigs(path);\r\n\r\n  return (\r\n    <nav className={classes.sideBarContainer}>\r\n      <PageMenuList\r\n        {...props}\r\n        pages={pages}\r\n      />\r\n    </nav>\r\n  );\r\n};\r\n\r\nUnstyledPageMenu.propTypes = {\r\n  classes: Proptypes.shape({\r\n    sideBarContainer: Proptypes.string.isRequired,\r\n  }).isRequired,\r\n};\r\n\r\nexport const PageMenu = compose(WrappedComponent => withDefaultStyles(WrappedComponent, getStyle))(UnstyledPageMenu);\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport classnames from 'classnames';\r\nimport { Link } from '@fluentui/react-components';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nconst getStyles = () => ({\r\n  container: {\r\n    backgroundColor: '#F3F2F1',\r\n    flex: '0 0 33px',\r\n  },\r\n  footerList: {\r\n    display: 'flex',\r\n    paddingLeft: '6px',\r\n  },\r\n  footerLinkContainer: {\r\n    flex: 1,\r\n    listStyle: 'none',\r\n    marginTop: 0,\r\n    marginBottom: 0,\r\n    paddingLeft: 0,\r\n  },\r\n  footerItem: {\r\n    display: 'inline-block',\r\n    padding: '6px 10px',\r\n    '& > a': {\r\n      color: '#106EBE',\r\n    },\r\n    '& > button': {\r\n      color: '#106EBE',\r\n      border: 0,\r\n    },\r\n  },\r\n});\r\n\r\nexport const PageFooter = () => {\r\n  const links = [\r\n    {\r\n      url: 'https://go.microsoft.com/fwlink/?linkid=2259814',\r\n      text: 'Consumer Healthy Privacy',\r\n    },\r\n  ];\r\n  const classes = useDefaultStyles(getStyles);\r\n\r\n  return (\r\n    <div className={classnames(classes.container, 'ba-content-footer')} role=\"contentinfo\">\r\n      <div className={classnames(classes.footerList, 'footer-link-list')}>\r\n        <div className={classnames(classes.footerItem, 'footer-copyright-text')}>\r\n          {`© ${new Date().getFullYear()} Microsoft`}\r\n        </div>\r\n        <ul className={classnames(classes.footerLinkContainer)}>\r\n          {_.map(links, link =>\r\n            (\r\n              <li\r\n                key={link.text}\r\n                className={classnames(classes.footerItem, 'footer-link-item', link.text)}\r\n              >\r\n                <Link\r\n                  href={link.url}\r\n                  target=\"_blank\"\r\n                >\r\n                  {link.text}\r\n                </Link>\r\n              </li>\r\n            ))}\r\n        </ul>\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n","import * as ComponentSettings from './src/components/index';\r\nimport * as Constants from './src/constants';\r\n\r\nexport {\r\n  ComponentSettings,\r\n  ComponentSettings as ThemeFluentComponentSettings, // alias\r\n  Constants\r\n};\r\nexport * from './src/core/index';\r\n","export { alertStyle } from './alert-style';\r\nexport { buttonInputStyle } from './button-input-style';\r\nexport { btnStyle, btnInteractStyle } from './button-style';\r\nexport { closeImageStyle } from './close-image-style';\r\nexport { controlStyle } from './control';\r\nexport { datePickerStyle } from './date-picker-style';\r\nexport { dropDownEditorStyle } from './drop-down-editor-style';\r\nexport { fabricPanelStyle } from './fabric-panel-style';\r\nexport { floatButtonStyle } from './float-button-style';\r\nexport { gridInlineErrorStyle } from './grid-inline-error-style';\r\nexport { helpbuttonStyle } from './help-button-style';\r\nexport { InlineEditorStyle } from './inline-editor-style';\r\nexport { inlineErrorStyle } from './inline-error-style';\r\nexport { scrollbarStyle } from './scrollbar-style';\r\nexport { searchboxStyle } from './search-box-style';\r\nexport { SearchBox } from './search-box';\r\nexport { entitySelectorStyle } from './entity-selector-style';\r\nexport { paginationStyle } from './pagination-style';\r\nexport { statusStyle } from './status-style';\r\nexport { toggleButtonStyle } from './toggle-button-style';\r\nexport { underlineLinkStyle } from './underline-link-style';\r\nexport { internalLinkStyle } from './internal-link-style';\r\nexport { getBlockerStyle, spinnerKeyframe } from './spinner-style';\r\nexport { uiblockerStyle, legacyUIBlockerStyle, reactUIBlockerStyle } from './ui-blocker-style';\r\n\r\n// shared grid plugins\r\nexport { getTopGridPanelCommonStyle } from './grid-plugins/top-grid-panel-style';\r\nexport { columnChooserStyle } from './grid-plugins/column-chooser-style';\r\nexport { getColumnChooserOverrideStyle } from './grid-plugins/column-chooser-override-style';\r\nexport { filterEditorStyle } from './grid-plugins/filter-editor-style';\r\nexport { getFilterEditorOverrideStyle } from './grid-plugins/filter-editor-override-style';\r\nexport { getLegacyFilterBarStyle } from './grid-plugins/legacy-filter-bar-style';\r\n\r\n// shared grid styles\r\nexport { GridSharedStyles } from './grid-shared';\r\n","export const alertStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n  '& .alert': {\r\n    border: 'none',\r\n    boxShadow: 'none',\r\n    color: palette.neutralPrimary,\r\n    display: 'flex',\r\n    fontSize: 12,\r\n    height: 'auto',\r\n    lineHeight: '16px',\r\n    padding: '8px 32px 8px 8px',\r\n\r\n    '&.alert-danger .alert-image:before': {\r\n      fontFamily: iconFontFamily,\r\n      fontSize: 16,\r\n      lineHeight: '16px',\r\n      color: '#A80000',\r\n      marginRight: 8,\r\n      content: '\"\\\\EA39\"',\r\n    },\r\n\r\n    '&.alert-info .alert-image:before': {\r\n      fontFamily: iconFontFamily,\r\n      fontSize: 16,\r\n      lineHeight: '16px',\r\n      color: palette.neutralSecondary,\r\n      marginRight: 8,\r\n      content: '\"\\\\E946\"',\r\n    },\r\n\r\n    '&.alert-warning .alert-image:before': {\r\n      fontFamily: iconFontFamily,\r\n      fontSize: 16,\r\n      lineHeight: '16px',\r\n      color: '#d83b01',\r\n      marginRight: 8,\r\n\r\n      content: '\"\\\\E7BA\"',\r\n    },\r\n  },\r\n});\r\n","export const buttonInputStyle = ({ palette = {} }) => ({\r\n  '& input.btn-primary[type=\"button\"], input.btn-primary[type=\"submit\"], input.btn-hero[type=\"button\"]': {\r\n    '&:focus': {\r\n      boxShadow: `inset 0 0 0 1px ${palette.white}`,\r\n      border: `2px solid ${palette.themePrimary}`,\r\n    },\r\n  },\r\n\r\n  '& input.btn-default[type=\"button\"]': {\r\n    '&:focus': {\r\n      outline: `1px solid ${palette.neutralSecondaryAlt}`,\r\n      boxShadow: `inset 0 0 0 1px ${palette.neutralSecondary}`,\r\n      outlineOffset: 0,\r\n      border: `2px solid ${palette.white}`,\r\n    },\r\n  },\r\n});\r\n","export const btnInteractStyle = ({ palette = {} }) => ({\r\n  '&:hover': {\r\n    background: palette.neutralLighter,\r\n  },\r\n  '&:focus': {\r\n    background: palette.neutralLight,\r\n    border: `1px solid ${palette.neutralSecondaryAlt}`,\r\n  },\r\n});\r\n\r\nexport const btnStyle = ({ palette = {} }) => {\r\n  const primary = {\r\n    height: 32,\r\n    minWidth: 80,\r\n    background: palette.themePrimary,\r\n    borderRadius: 2,\r\n    textAlign: 'center',\r\n    color: palette.white,\r\n    boxSizing: 'border-box',\r\n\r\n    '&:hover': {\r\n      background: palette.themeDarkAlt,\r\n    },\r\n\r\n    '&:focus': {\r\n      background: palette.themePrimary,\r\n      outline: 'none',\r\n    },\r\n\r\n    '&:active': {\r\n      background: palette.themeDark,\r\n    },\r\n\r\n    '&:disabled': {\r\n      background: palette.neutralLighter,\r\n      color: palette.neutralTertiary,\r\n    },\r\n  };\r\n\r\n  return {\r\n    '.btn-primary': primary,\r\n    '.btn-hero': primary,\r\n\r\n    '.btn-default': {\r\n      height: 32,\r\n      minWidth: 80,\r\n      background: palette.white,\r\n      borderRadius: 2,\r\n      textAlign: 'center',\r\n      color: palette.neutralPrimary,\r\n      border: `1px solid ${palette.neutralSecondaryAlt}`,\r\n\r\n      ...btnInteractStyle({ palette }),\r\n\r\n      '&:disabled': {\r\n        background: palette.neutralLighter,\r\n        color: palette.neutralTertiary,\r\n      },\r\n    },\r\n  };\r\n};\r\n","export const closeImageStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n  '.closeimage': {\r\n    fontFamily: iconFontFamily,\r\n    color: palette.neutralSecondary,\r\n    cursor: 'pointer',\r\n    right: -8,\r\n    position: 'relative',\r\n  },\r\n\r\n  '.closeimage:before': {\r\n    content: '\"\\\\E711\"',\r\n  },\r\n});\r\n","export const controlStyle = ({ palette = {} }) => ({\r\n  '.form-control': {\r\n    '-webkit-box-shadow': 'none',\r\n    backgroundColor: palette.white,\r\n    backgroundImage: 'none',\r\n    border: `1px solid ${palette.neutralSecondary}`,\r\n    borderRadius: 2,\r\n    boxShadow: 'none',\r\n    color: palette.neutralPrimary,\r\n    display: 'block',\r\n    fontSize: 14,\r\n    height: 32,\r\n    lineHeight: 1.5,\r\n    padding: '6px 12px',\r\n    transition: 'border-color .15s ease-in-out, box-shadow .15s ease-in-out',\r\n\r\n    '&:active': {\r\n      borderColor: palette.themePrimary,\r\n    },\r\n\r\n    '&:hover': {\r\n      borderColor: palette.neutralPrimary,\r\n    },\r\n\r\n    '&:focus': {\r\n      '-webkit-box-shadow': 'none',\r\n      borderColor: palette.themePrimary,\r\n      boxShadow: 'none',\r\n      outline: 0,\r\n    },\r\n  },\r\n});\r\n","/* eslint-disable no-unused-vars */\r\nexport const datePickerStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets', focusedStyle }) => ({\r\n  '.k-animation-container': {\r\n    width: '220px !important',\r\n    height: 'auto !important',\r\n    background: palette.white,\r\n    boxShadow: '0px 0.6px 1.8px rgba(0, 0, 0, 0.108), 0px 3.2px 7.2px rgba(0, 0, 0, 0.132)',\r\n    borderRadius: 2,\r\n\r\n    '& .k-calendar-container': {\r\n      position: 'relative !important',\r\n      padding: 12,\r\n      width: '100%',\r\n      height: '100%',\r\n\r\n      '& .k-link:hover': {\r\n        backgroundColor: `${palette.neutralLight} !important`,\r\n        color: `${palette.neutralDark} !important`,\r\n      },\r\n\r\n      '& .k-header': {\r\n        width: '100%',\r\n        paddingBottom: 4,\r\n        backgroundColor: 'white',\r\n        display: 'flex',\r\n        alignItems: 'center',\r\n\r\n        '& .k-nav-fast': {\r\n          order: '1',\r\n          flex: '1',\r\n          lineHeight: '19px',\r\n          fontWeight: 600,\r\n          textAlign: 'left',\r\n          display: 'flex',\r\n          paddingTop: 4,\r\n          paddingBottom: 5,\r\n          color: palette.neutralPrimary,\r\n        },\r\n\r\n        '& .k-nav-prev': {\r\n          order: '2',\r\n          display: 'flex',\r\n          alignItems: 'center',\r\n          justifyContent: 'center',\r\n        },\r\n        '& .k-nav-next': {\r\n          order: '3',\r\n          display: 'flex',\r\n          alignItems: 'center',\r\n          justifyContent: 'center',\r\n        },\r\n\r\n        '& .k-icon': {\r\n          fontFamily: iconFontFamily,\r\n          fontSize: 12,\r\n          lineHeight: '12px',\r\n          width: 28,\r\n          height: '28px',\r\n          padding: 8,\r\n          color: palette.neutralSecondary,\r\n        },\r\n\r\n        '& .k-i-arrow-w:before': {\r\n          content: '\"\\\\E74A\"',\r\n        },\r\n\r\n        '& .k-i-arrow-e:before': {\r\n          content: '\"\\\\E74B\"',\r\n        },\r\n      },\r\n\r\n      '& .k-content': {\r\n        '& th, td': {\r\n          width: 28,\r\n          height: '28px',\r\n          textAlign: 'center',\r\n          fontWeight: 'normal',\r\n          background: palette.white,\r\n          borderRadius: 2,\r\n          lineHeight: '16px',\r\n          fontSize: 12,\r\n\r\n          '& a': {\r\n            color: '#212121',\r\n            display: 'flex',\r\n            width: '28px',\r\n            height: '28px',\r\n            alignItems: 'center',\r\n            justifyContent: 'center',\r\n          },\r\n        },\r\n\r\n        '& .k-link': {\r\n          background: palette.neutralLighter,\r\n          borderRadius: '2px',\r\n        },\r\n\r\n        '& .k-other-month .k-link': {\r\n          background: palette.white,\r\n        },\r\n\r\n        '& .k-state-selected': {\r\n          '& .k-link': {\r\n            // outline will only be visible when media query (forced-colors: active)\r\n            outline: '1px dashed transparent',\r\n            background: palette.themePrimary,\r\n            fontWeight: 600,\r\n            color: palette.white,\r\n          },\r\n        },\r\n\r\n        '& .k-today': {\r\n          '& .k-link': {\r\n            // outline will only be visible when media query (forced-colors: active)\r\n            outline: '1px dotted transparent',\r\n            background: palette.themeLighter,\r\n            fontWeight: 600,\r\n            color: palette.neutralDark,\r\n          },\r\n        },\r\n\r\n        '& .k-state-focused': {\r\n          '& .k-link': focusedStyle || {\r\n            // outline will only be visible when media query (forced-colors: active)\r\n            outline: '1px solid transparent',\r\n            background: palette.themePrimary,\r\n            fontWeight: 600,\r\n            color: palette.white,\r\n          },\r\n        },\r\n      },\r\n\r\n      '& .k-meta-view': {\r\n        '& tr': {\r\n          '& td': {\r\n            background: `${palette.white} !important`,\r\n\r\n            '& a': {\r\n              display: 'flex',\r\n              color: `${palette.neutralPrimary} !important`,\r\n              width: '36px',\r\n              height: '36px',\r\n              marginBottom: 20,\r\n              marginRight: 17,\r\n              alignItems: 'center',\r\n              justifyContent: 'center',\r\n            },\r\n          },\r\n\r\n          '& td:last-child': {\r\n            '& a': {\r\n              marginRight: 0,\r\n            },\r\n          },\r\n        },\r\n\r\n        '& .k-state-focused': {\r\n          '& a': {\r\n            color: `${palette.neutralDark} !important`,\r\n            background: palette.themeLighter,\r\n          },\r\n        },\r\n      },\r\n    },\r\n  },\r\n});\r\n","export const dropDownEditorStyle = ({ palette = {} }) => ({\r\n  '& .grid-editable-cell select.editor-control.select-editor': {\r\n    borderWidth: '0px 0px 1px 0px',\r\n    borderBottomColor: 'transparent',\r\n    paddingBottom: 8,\r\n    paddingTop: 8,\r\n    '&:hover, &:focus, &:active': {\r\n      borderBottomColor: 'unset',\r\n      outline: 'none',\r\n    },\r\n    '&:active': {\r\n      borderBottomColor: palette.themePrimary,\r\n    },\r\n  },\r\n});\r\n","export const fabricPanelStyle = () => ({\r\n  footer: {\r\n    background: 'white',\r\n    zIndex: 1,\r\n  },\r\n  commands: {\r\n    marginTop: 0,\r\n    marginBottom: 0,\r\n    zIndex: 1,\r\n  },\r\n});\r\n","export const floatButtonStyle = ({ palette = {} }) => ({\r\n  floatButton: {\r\n    background: palette.neutralLighter,\r\n    border: 'none',\r\n    borderRadius: 0,\r\n    color: palette.themeDarkAlt,\r\n    fontWeight: 'normal',\r\n    height: 'auto',\r\n    minHeight: 'auto',\r\n    minWidth: 'auto',\r\n    width: 'auto',\r\n    padding: '14px 8px',\r\n\r\n    '&:active, &:focus, &:hover': {\r\n      color: palette.themeDark,\r\n      background: palette.neutralQuaternaryAlt,\r\n    },\r\n  },\r\n});\r\n","export const gridInlineErrorStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n  '& .inline-editor-errors': {\r\n    '& .error-messages': {\r\n      listStyleType: 'none',\r\n      marginBottom: 0,\r\n      '& .error': {\r\n        fontFamily: iconFontFamily,\r\n        padding: '10px',\r\n        fontSize: '10pt',\r\n        '&:before': {\r\n          content: '\"\\\\EA39\"',\r\n          color: palette.red,\r\n        },\r\n      },\r\n      '& .error-message': {\r\n        fontSize: '14px',\r\n      },\r\n    },\r\n  },\r\n});\r\n","export const helpbuttonStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n  '.helpbutton': {\r\n    fontSize: 15,\r\n    color: `${palette.themePrimary} !important`,\r\n    verticalAlign: 'middle',\r\n    fontWeight: 'normal',\r\n    marginLeft: 7,\r\n\r\n    '&:focus': {\r\n      outline: '1px solid',\r\n      outlineColor: palette.neutralSecondary,\r\n      border: 'none',\r\n      color: palette.black,\r\n      textDecoration: 'none',\r\n    },\r\n\r\n    '&:hover': {\r\n      backgroundColor: palette.neutralLighter,\r\n      color: palette.black,\r\n      textDecoration: 'none',\r\n    },\r\n\r\n    '&:active': {\r\n      backgroundColor: palette.neutralLight,\r\n      color: palette.black,\r\n      textDecoration: 'none',\r\n    },\r\n  },\r\n\r\n  '.helpbutton::before': {\r\n    content: '\"\\\\E9CE\"',\r\n    fontFamily: iconFontFamily,\r\n    position: 'relative',\r\n    top: 2,\r\n  },\r\n});\r\n\r\n","export const InlineEditorStyle = () => ({\r\n  '.custom-parameters-inline-edit-popup': {\r\n    width: 456,\r\n    minWidth: 456,\r\n  },\r\n\r\n  '.grid-popupeditor .form-inline .form-group': {\r\n    display: 'block',\r\n  },\r\n});\r\n","export const inlineErrorStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n  '.inline-editor-errors': {\r\n    '& .error-messages': {\r\n      listStyleType: 'none',\r\n      '& .grid-error': {\r\n        '&.spritedimage': {\r\n          fontFamily: iconFontFamily,\r\n          padding: '10px',\r\n          fontSize: '10pt',\r\n        },\r\n        '&.spritedimage:before': {\r\n          content: '\"\\\\EA39\"',\r\n          color: palette.red,\r\n        },\r\n      },\r\n      '& .error-message': {\r\n        fontSize: '14px',\r\n      },\r\n    },\r\n  },\r\n});\r\n","/* eslint-disable no-unused-vars */\r\nexport const scrollbarStyle = ({ palette = {} }) => ({\r\n  '::-webkit-scrollbar':\r\n  {\r\n    width: 4,\r\n    backgroundColor: 'transparent',\r\n  },\r\n\r\n  '::-webkit-scrollbar-track':\r\n  {\r\n    backgroundColor: 'transparent',\r\n  },\r\n\r\n  '::-webkit-scrollbar-thumb':\r\n  {\r\n    width: 4,\r\n    height: 44,\r\n    backgroundColor: '#EBEAE8',\r\n  },\r\n\r\n  '::-webkit-scrollbar:horizontal':\r\n  {\r\n    height: 4,\r\n    backgroundColor: 'transparent',\r\n  },\r\n\r\n  '::-webkit-scrollbar-track:horizontal':\r\n  {\r\n    backgroundColor: 'transparent',\r\n  },\r\n\r\n  '::-webkit-scrollbar-thumb:horizontal':\r\n  {\r\n    width: 200,\r\n    height: 4,\r\n    backgroundColor: '#EBEAE8',\r\n  },\r\n});\r\n","export const searchboxStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n  '& .searchbox': {\r\n    padding: 0,\r\n  },\r\n\r\n  '& .searchbox .form-horizontal': {\r\n    width: '100%',\r\n  },\r\n\r\n  '& .searchbox-input': {\r\n    paddingLeft: 40,\r\n  },\r\n\r\n  '& .searchbox .form-control': {\r\n    border: 0,\r\n    borderBottom: `1px solid ${palette.neutralLighter}`,\r\n  },\r\n\r\n  '& .filter_search_icon_small': {\r\n    fontFamily: iconFontFamily,\r\n    color: palette.themePrimary,\r\n    fontSize: 14,\r\n  },\r\n\r\n  '& .filter_search_icon_small:before': {\r\n    content: '\"\\\\E721\"',\r\n  },\r\n});\r\n","export const SearchBox = {\r\n  inputGroup: {\r\n    position: 'relative',\r\n    overflow: 'hidden',\r\n  },\r\n\r\n  input: {\r\n    border: {\r\n      width: 1,\r\n      style: 'solid',\r\n    },\r\n    padding: {\r\n      top: 3,\r\n      right: 33,\r\n      bottom: 3,\r\n      left: 8,\r\n    },\r\n    display: 'block',\r\n    width: '100%',\r\n    fontSize: '1em',\r\n  },\r\n\r\n  icon: {\r\n    position: 'absolute',\r\n    right: 60,\r\n    height: 15,\r\n    marginTop: 5,\r\n    width: 20,\r\n    fontSize: 12,\r\n\r\n    '&:hover': {\r\n      cursor: 'pointer',\r\n    },\r\n  },\r\n};\r\n","export const entitySelectorStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n  '& .ba-campaign-selector, & .ba-campaign-adgroup-selector': {\r\n    '& .ba-list-selector': {\r\n      border: '1px solid #BBB',\r\n      height: 300,\r\n      display: 'flex',\r\n      flexDirection: 'column',\r\n\r\n      '& .list-selector-item': {\r\n        position: 'relative',\r\n      },\r\n\r\n      '& .list-selector-content': {\r\n        flex: 1,\r\n        overflow: 'auto',\r\n      },\r\n\r\n      '& .list-selector-select-all-bar': {\r\n        padding: '5px 10px',\r\n        color: '#1470A5',\r\n        cursor: 'pointer',\r\n\r\n        '& .arrow-button.enabled': {\r\n          marginLeft: 6,\r\n        },\r\n\r\n        '& .arrow-button.remove': {\r\n          marginRight: 6,\r\n        },\r\n\r\n        '& .enabled.arrow-button:before, & .arrow-button.remove:before': {\r\n          verticalAlign: 'middle',\r\n        },\r\n      },\r\n    },\r\n\r\n    '& .multi-selector': {\r\n      '& .ba-entity-selector': {\r\n        '& .ba-list-selector': {\r\n          '& .list-selector-item': {\r\n            padding: 0,\r\n            '& .multi-item-container': {\r\n              padding: '7px 8px 8px 8px',\r\n            },\r\n            '& .added-to-result-list': {\r\n              backgroundColor: '#edebe9',\r\n            },\r\n          },\r\n        },\r\n      },\r\n    },\r\n\r\n  },\r\n  '& .ba-campaign-adgroup-selector .selected-item, .ba-campaign-selector .selected-item': {\r\n    maxWidth: 270,\r\n  },\r\n  '& .ba-campaign-selector, & .ba-campaign-adgroup-selector, & .disclaimer-selector, & .audience-planner-location-selector': {\r\n    '& .dropdown-toggle': {\r\n      lineHeight: 2,\r\n      padding: '0 8px',\r\n      verticalAlign: 'middle',\r\n      fontWeight: 'normal',\r\n      width: 320,\r\n      textAlign: 'left !important',\r\n      background: 'transparent !important',\r\n      border: `1px solid ${palette.neutralSecondary}`,\r\n      borderRadius: 2,\r\n      outline: 'none',\r\n\r\n      '&:hover': {\r\n        borderColor: palette.neutralPrimary,\r\n      },\r\n\r\n      '&:focus, &:active': {\r\n        borderColor: palette.themePrimary,\r\n      },\r\n\r\n      '& .selected-item': {\r\n        textOverflow: 'ellipsis',\r\n        overflowWrap: 'break-word',\r\n        wordBreak: 'break-word',\r\n        overflow: 'hidden',\r\n        whiteSpace: 'nowrap',\r\n        display: 'inline-block',\r\n        verticalAlign: 'middle',\r\n      },\r\n\r\n      '& .icon-right': {\r\n        float: 'right',\r\n      },\r\n\r\n      '& .glyphicon-triangle-bottom, .glyphicon-pencil': {\r\n        marginTop: 5,\r\n        fontFamily: iconFontFamily,\r\n        fontSize: 16,\r\n        verticalAlign: 'middle',\r\n        color: palette.neutralSecondary,\r\n      },\r\n\r\n      '& .glyphicon-triangle-bottom:before': {\r\n        content: '\"\\\\E70D\"',\r\n      },\r\n\r\n      '& .glyphicon.glyphicon-pencil::before': {\r\n        content: '\"\\\\E70F\"',\r\n      },\r\n    },\r\n\r\n    '& .dropdown-toggle:focus:after, .dropdown-toggle:active:after': {\r\n      border: 0,\r\n    },\r\n\r\n    '& .dropdown-menu': {\r\n      top: 'auto',\r\n      left: 'auto',\r\n      minWidth: 320,\r\n      padding: 8,\r\n      boxShadow: '0px 0.6px 1.8px rgba(0, 0, 0, 0.108), 0px 3.2px 7.2px rgba(0, 0, 0, 0.132)',\r\n      borderRadius: '0px 0px 2px 2px',\r\n\r\n      '& .ba-search-box ': {\r\n        borderTop: `1px solid ${palette.neutralSecondary}`,\r\n        borderLeft: `1px solid ${palette.neutralSecondary}`,\r\n        borderRight: `1px solid ${palette.neutralSecondary}`,\r\n        padding: 1,\r\n        position: 'relative',\r\n\r\n        '& .search-box__input': {\r\n          height: 48,\r\n          width: 'calc(100% - 2px)',\r\n          border: 0,\r\n          borderBottom: `1px solid ${palette.neutralLight}`,\r\n          paddingLeft: 48,\r\n          marginLeft: 1,\r\n        },\r\n\r\n        '& .search-box__icon': {\r\n          fontFamily: iconFontFamily,\r\n          fontSize: 16,\r\n          verticalAlign: 'middle',\r\n          position: 'absolute',\r\n          left: 16,\r\n          top: 16,\r\n        },\r\n\r\n        '& .search-box__icon:before': {\r\n          content: '\"\\\\E721\"',\r\n          color: palette.themePrimary,\r\n        },\r\n      },\r\n\r\n      '& .ba-list-selector': {\r\n        borderBottom: `1px solid ${palette.neutralSecondary}`,\r\n        borderLeft: `1px solid ${palette.neutralSecondary}`,\r\n        borderRight: `1px solid ${palette.neutralSecondary}`,\r\n\r\n        '& .list-selector-header': {\r\n          '& .panel-heading': {\r\n            color: palette.neutralPrimary,\r\n            fontSize: 14,\r\n            padding: '7px 8px',\r\n\r\n            '& .panel-title': {\r\n              fontSize: 14,\r\n              marginTop: 0,\r\n            },\r\n          },\r\n        },\r\n\r\n        '& .list-selector-content': {\r\n          height: 380,\r\n\r\n          '& .list-selector-item': {\r\n            padding: '7px 8px 8px 8px',\r\n            margin: 0,\r\n            minHeight: 36,\r\n\r\n            '& > div, & .item-content': {\r\n              maxWidth: 225,\r\n              textOverflow: 'ellipsis',\r\n              overflow: 'hidden',\r\n              whiteSpace: 'nowrap',\r\n              cursor: 'pointer',\r\n              paddingRight: '20px',\r\n              '& .statusIcon': {\r\n                verticalAlign: 'middle',\r\n                height: '19px',\r\n              },\r\n\r\n              '& .text': {\r\n                marginLeft: 10,\r\n                verticalAlign: 'middle',\r\n              },\r\n            },\r\n          },\r\n\r\n          '& .selected': {\r\n            background: palette.neutralLight,\r\n          },\r\n        },\r\n\r\n        '& .list-selector-item:hover': {\r\n          background: palette.neutralLight,\r\n        },\r\n\r\n        '& .list-selector-item:focus': {\r\n          outline: 'none',\r\n          border: `1px solid ${palette.neutralSecondary}`,\r\n        },\r\n      },\r\n\r\n      '& .list-selector-empty': {\r\n        marginLeft: 10,\r\n      },\r\n\r\n      '& .ba-cascader-selector': {\r\n        border: 0,\r\n        padding: 0,\r\n      },\r\n\r\n      '& .ba-cascader-selector>div': {\r\n        width: '100% !important',\r\n        marginBottom: 0,\r\n      },\r\n\r\n      '& .ba-cascader-selector>div:nth-child(2)>div:nth-child(2)': {\r\n        '& .ba-list-selector': {\r\n          borderLeft: '0 !important',\r\n        },\r\n      },\r\n\r\n      '& .pagination-container': {\r\n        '& .ba-pagination': {\r\n          height: 36,\r\n          padding: '6px 0',\r\n          paddingBottom: 0,\r\n        },\r\n      },\r\n    },\r\n  },\r\n\r\n  '& .ba-campaign-adgroup-selector, & .ba-campaign-selector': {\r\n    '& .dropdown-toggle .dropdown-edit-mode-parent-text': {\r\n      color: '#605e5c',\r\n    },\r\n\r\n    '& .item-content-parent-info': {\r\n      color: '#605e5c',\r\n    },\r\n  },\r\n});\r\n\r\n","export const paginationStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n  '& .ba-pagination, .dlb-pager-container, .pagination-control': {\r\n    height: 'auto',\r\n    padding: '6px 0',\r\n\r\n    '& > .text': {\r\n      display: 'inline-block',\r\n      verticalAlign: 'middle',\r\n      padding: '0px 0px 8px 5px',\r\n      '& > span': {\r\n        marginRight: '5px',\r\n      },\r\n    },\r\n    '& button': {\r\n      border: 0,\r\n      background: 'transparent',\r\n      minWidth: '1px',\r\n      padding: 0,\r\n      color: palette.neutralSecondary,\r\n    },\r\n\r\n    '& button:hover': {\r\n      borderRadius: 2,\r\n      background: palette.neutralLighter,\r\n    },\r\n\r\n    '& button:disabled': {\r\n      background: 'transparent',\r\n      color: '#BEBBB8',\r\n    },\r\n\r\n    '& .prev + .text, .pager-previous + .text': {\r\n      display: 'none',\r\n    },\r\n\r\n    '& .pager-input': {\r\n      border: `1px solid ${palette.neutralSecondary}`,\r\n      padding: '6px 8px',\r\n      height: 32,\r\n      textAlign: 'center',\r\n      margin: '0 12px',\r\n      width: 70,\r\n      display: 'inline-block',\r\n      borderRadius: 2,\r\n      boxSizing: 'border-box',\r\n      color: palette.neutralPrimary,\r\n\r\n      '&:active': {\r\n        borderColor: palette.themePrimary,\r\n      },\r\n\r\n      '&:focus': {\r\n        borderColor: palette.themePrimary,\r\n        outline: 0,\r\n      },\r\n\r\n      '&:hover': {\r\n        borderColor: palette.neutralPrimary,\r\n      },\r\n    },\r\n\r\n    '& .glyphicon-triangle-left, & .glyphicon-triangle-right': {\r\n      display: 'inline-block',\r\n      fontFamily: iconFontFamily,\r\n      color: 'inherit',\r\n    },\r\n\r\n    '& .glyphicon-triangle-left:before': {\r\n      content: '\"\\\\E76B\"',\r\n    },\r\n\r\n    '& .glyphicon-triangle-right:before': {\r\n      content: '\"\\\\E76C\"',\r\n    },\r\n  },\r\n\r\n  '& .pager, .location-bid-pager-view': {\r\n    height: 32,\r\n    padding: 0,\r\n    margin: 0,\r\n\r\n    '& .pager-input, .page-number-input, .grid-pager-input': {\r\n      border: `1px solid ${palette.neutralSecondary}`,\r\n      padding: '6px 8px',\r\n      height: 32,\r\n      textAlign: 'center',\r\n      margin: '0 12px',\r\n      width: '70px !important',\r\n      display: 'inline-block',\r\n      borderRadius: 2,\r\n      boxSizing: 'border-box',\r\n      color: palette.neutralPrimary,\r\n      background: palette.white,\r\n    },\r\n\r\n    '& .pager-input[disabled], & .page-number-input[disabled], & .grid-pager-input[disabled]': {\r\n      backgroundColor: palette.neutralLighter,\r\n    },\r\n\r\n    '& .pager-previous, & .pager-next, & .glyphicon-triangle-left, & .glyphicon-triangle-right': {\r\n      fontFamily: iconFontFamily,\r\n      color: palette.neutralSecondary,\r\n      background: 'transparent',\r\n      display: 'inline-block',\r\n      verticalAlign: 'middle',\r\n      padding: '2px 5px',\r\n      height: 32,\r\n      lineHeight: '32px',\r\n      marginTop: '-7px',\r\n      outline: 'none',\r\n    },\r\n\r\n    '& .pager-previous, & .pager-next': {\r\n      '&:focus': {\r\n        outline: `1px solid ${palette.neutralSecondary}`,\r\n        outlineOffset: '-2px',\r\n      },\r\n    },\r\n\r\n    '& .pager-previous:hover, & .pager-next:hover': {\r\n      borderRadius: 2,\r\n      background: palette.neutralLighter,\r\n    },\r\n\r\n    '& .pager-previous-disabled, & .pager-next-disabled': {\r\n      fontFamily: iconFontFamily,\r\n      color: '#BEBBB8',\r\n      background: 'transparent',\r\n      display: 'inline-block',\r\n      verticalAlign: 'middle',\r\n      padding: '2px 5px',\r\n      height: 32,\r\n      lineHeight: '32px',\r\n      marginTop: '-7px',\r\n      outline: 'none',\r\n    },\r\n\r\n    '& .pager-previous-disabled:before, & .pager-previous:before': {\r\n      content: '\"\\\\E76B\"',\r\n    },\r\n\r\n    '& .pager-next-disabled:before, & .pager-next:before': {\r\n      content: '\"\\\\E76C\"',\r\n    },\r\n\r\n    '& .pager-totalCount': {\r\n      verticalAlign: 'unset',\r\n      marginLeft: 4,\r\n    },\r\n  },\r\n\r\n  '& .pagination-control': {\r\n    textAlign: 'left',\r\n\r\n    '& .text': {\r\n      display: 'inline-block',\r\n      width: 'auto',\r\n    },\r\n\r\n    '& .page-size-selector': {\r\n      height: 32,\r\n      textAlign: 'center',\r\n      margin: '0 12px',\r\n      width: '70px !important',\r\n      display: 'inline-block',\r\n      borderRadius: 2,\r\n      boxSizing: 'border-box',\r\n      color: palette.neutralPrimary,\r\n    },\r\n\r\n    '& .pager': {\r\n      display: 'inline-block',\r\n    },\r\n  },\r\n\r\n});\r\n\r\n","export const statusStyle = ({ palette = {} }) => ({\r\n  '& .statusDraft_icon': {\r\n    display: 'inline-block',\r\n    fontFamily: '\"MsAds MDL2 Assets\"',\r\n    fontSize: 14,\r\n    fontStyle: 'normal',\r\n    '-webkit-font-smoothing': 'antialiased',\r\n    '-moz-osx-font-smoothing': 'grayscale',\r\n    fontWeight: 'normal',\r\n  },\r\n\r\n  '& .statusDraft_icon::before': {\r\n    content: '\"\\\\F6B0\"',\r\n    color: palette.neutralPrimary,\r\n  },\r\n\r\n  '& .statusDeleted_icon': {\r\n    display: 'inline-block',\r\n    fontFamily: '\"MsAds MDL2 Assets\"',\r\n    fontSize: 14,\r\n    fontStyle: 'normal',\r\n    '-webkit-font-smoothing': 'antialiased',\r\n    '-moz-osx-font-smoothing': 'grayscale',\r\n    fontWeight: 'normal',\r\n  },\r\n\r\n  '& .statusDeleted_icon::before': {\r\n    content: '\"\\\\E738\"',\r\n    color: palette.redOrange10,\r\n  },\r\n\r\n  '& .statusEnabled_icon': {\r\n    display: 'inline-block',\r\n    fontFamily: '\"MsAds MDL2 Assets\"',\r\n    fontSize: 14,\r\n    fontStyle: 'normal',\r\n    '-webkit-font-smoothing': 'antialiased',\r\n    '-moz-osx-font-smoothing': 'grayscale',\r\n    fontWeight: 'normal',\r\n  },\r\n\r\n  '& .statusEnabled_icon::before': {\r\n    content: '\"\\\\ECCC\"',\r\n    color: palette.green,\r\n  },\r\n\r\n  '& .statusExcluded_icon': {\r\n    display: 'inline-block',\r\n    fontFamily: '\"MsAds MDL2 Assets\"',\r\n    fontSize: 14,\r\n    fontStyle: 'normal',\r\n    '-webkit-font-smoothing': 'antialiased',\r\n    '-moz-osx-font-smoothing': 'grayscale',\r\n    fontWeight: 'normal',\r\n  },\r\n\r\n  '& .statusExcluded_icon::before': {\r\n    content: '\"\\\\E733\"',\r\n    color: '#A80000',\r\n  },\r\n\r\n  '& .statusPaused_icon': {\r\n    display: 'inline-block',\r\n    fontFamily: '\"MsAds MDL2 Assets\"',\r\n    fontSize: 14,\r\n    fontStyle: 'normal',\r\n    '-webkit-font-smoothing': 'antialiased',\r\n    '-moz-osx-font-smoothing': 'grayscale',\r\n    fontWeight: 'normal',\r\n  },\r\n\r\n  '& .statusPaused_icon::before': {\r\n    content: '\"\\\\F6B0\"',\r\n    color: palette.neutralPrimary,\r\n  },\r\n\r\n  '& .statushypendisplay': {\r\n    display: 'inline-block',\r\n    fontFamily: '\"MsAds MDL2 Assets\"',\r\n    fontSize: 14,\r\n    fontStyle: 'normal',\r\n    '-webkit-font-smoothing': 'antialiased',\r\n    '-moz-osx-font-smoothing': 'grayscale',\r\n    fontWeight: 'normal',\r\n  },\r\n\r\n  '& .statushypendisplay::before': {\r\n    content: '\"\\\\E738\"',\r\n    color: palette.neutralPrimary,\r\n  },\r\n\r\n});\r\n","export const toggleButtonStyle = ({ palette = {} }) => ({\r\n\r\n  '& .toggle': {\r\n    display: 'inline-block',\r\n    textDecoration: 'none',\r\n\r\n    '& .toggle-button': {\r\n      display: 'inline-block',\r\n      boxsizing: 'border-box',\r\n      width: 40,\r\n      height: 20,\r\n      padding: 4,\r\n      lineHeight: '10px',\r\n      border: '1px solid',\r\n      borderRadius: 30,\r\n      'transition-duration': '0.2s',\r\n      '-webkit-transition-duration': '0.2s',\r\n    },\r\n\r\n    '& .toggle-handle': {\r\n      display: 'inline-block',\r\n      boxsizing: 'border-box',\r\n      width: 10,\r\n      height: 10,\r\n      borderRadius: 5,\r\n      borderWidth: 5,\r\n      borderStyle: 'solid',\r\n      verticalAlign: 'top',\r\n      'transition-duration': '0.2s',\r\n      '-webkit-transition-duration': '0.2s',\r\n    },\r\n  },\r\n\r\n  '& .toggle-on': {\r\n    '& .toggle-button': {\r\n      backgroundColor: palette.themePrimary,\r\n      borderColor: palette.themePrimary,\r\n    },\r\n\r\n    '& .toggle-handle': {\r\n      marginLeft: 20,\r\n      borderColor: palette.white,\r\n    },\r\n  },\r\n\r\n  '& .toggle-off': {\r\n    '& .toggle-button': {\r\n      backgroundColor: palette.white,\r\n      borderColor: '#333333',\r\n    },\r\n\r\n    '& .toggle-handle': {\r\n      marginRight: 20,\r\n      borderColor: '#333333',\r\n    },\r\n  },\r\n});\r\n","export const underlineLinkStyle = ({ palette = {}, elementLocator = 'a', isGreyBackground = false }) => ({\r\n  [`& ${elementLocator}`]: {\r\n    textDecoration: 'underline',\r\n    color: isGreyBackground ? palette.themeDarkAlt : palette.themePrimary,\r\n    '&:focus': {\r\n      textDecoration: 'underline',\r\n      outline: `1px solid ${palette.neutralSecondary}`,\r\n    },\r\n    '&:hover': {\r\n      textDecoration: 'underline',\r\n      color: palette.themeDarker,\r\n    },\r\n  },\r\n});\r\n","export const internalLinkStyle = ({ palette = {}, elementLocator = 'a', isGreyBackground = false }) => ({\r\n  [`& ${elementLocator}`]: {\r\n    textDecoration: 'none',\r\n    color: isGreyBackground ? palette.themeDarkAlt : palette.themePrimary,\r\n    '&:focus': {\r\n      textDecoration: 'none',\r\n      outline: `1px solid ${palette.neutralSecondary}`,\r\n    },\r\n    '&:hover': {\r\n      textDecoration: 'underline',\r\n      color: palette.themeDarker,\r\n    },\r\n  },\r\n});\r\n","export const getBlockerStyle = (size, palette) => ({\r\n  width: size,\r\n  height: size,\r\n  border: '2px solid',\r\n  borderLeftColor: palette.themePrimary,\r\n  borderRightColor: palette.themeLight,\r\n  borderTopColor: palette.themeLight,\r\n  borderBottomColor: palette.themeLight,\r\n  borderRadius: '50%',\r\n  animation: 'spinner 1s linear infinite',\r\n  marginRight: 9,\r\n});\r\n\r\nexport const spinnerKeyframe = {\r\n  '@keyframes spinner': {\r\n    to: { transform: 'rotate(360deg)' },\r\n  },\r\n};\r\n","import { ZIndexShellComponents } from '../constants';\r\n\r\nimport { getBlockerStyle, spinnerKeyframe } from './spinner-style';\r\n// this style is in the body scope, out of the feature scope, so use as the global pattern\r\nexport const uiblockerStyle = ({ palette = {} }) => (\r\n  Object.assign({\r\n    '.blocker': {\r\n      display: 'flex',\r\n      alignItems: 'center',\r\n      justifyContent: 'center',\r\n      backgroundColor: 'rgba(255,255,255,0.4)',\r\n    },\r\n\r\n    '.blocker-global, .blocker-local': {\r\n      backgroundColor: 'rgba(255,255,255,0.4)',\r\n      position: 'absolute',\r\n      zIndex: ZIndexShellComponents.Loader,\r\n      display: 'flex',\r\n      justifyContent: 'center',\r\n      alignItems: 'center',\r\n    },\r\n    '.blocker-global': {\r\n      left: 0,\r\n      top: 0,\r\n      right: 0,\r\n      bottom: 0,\r\n    },\r\n\r\n    '.blocker, .blocker-global, .blocker-local': {\r\n      '& .blocker-indicator': {\r\n        outline: 'none',\r\n        display: 'flex',\r\n        alignItems: 'center',\r\n        backgroundColor: 'white',\r\n        padding: '10px',\r\n        color: palette.themePrimary,\r\n        top: 'calc(50% - 24px)',\r\n        left: 'calc(50% - 58px)',\r\n        position: 'absolute',\r\n\r\n        '& .blocker-image': getBlockerStyle(28, palette),\r\n      },\r\n    },\r\n  }, spinnerKeyframe));\r\n\r\n// blocker defined in $.advertiser\r\nexport const legacyUIBlockerStyle = ({ palette = {} }) => ({\r\n  '.blocker-panel': {\r\n    position: 'absolute',\r\n    backgroundColor: 'rgba(255,255,255,0.4)',\r\n  },\r\n  '.blocker-panel + .blocker-indicator': {\r\n    outline: 'none',\r\n    backgroundColor: 'white',\r\n    padding: '10px',\r\n    color: palette.themePrimary,\r\n    position: 'absolute',\r\n\r\n    '& .blocker-image': {\r\n      ...getBlockerStyle(28, palette),\r\n      position: 'absolute',\r\n    },\r\n    '& .blocker-text': {\r\n      margin: '5px 0 0 40px',\r\n    },\r\n  },\r\n});\r\n\r\n// for @bingads-webui-react/ui-blocker\r\nexport const reactUIBlockerStyle = (palette, backgroundColor = 'white') => ({\r\n  '& .react-block-ui': {\r\n    '& > div:last-child': {\r\n      alignItems: 'center',\r\n      backgroundColor,\r\n      color: palette.themePrimary,\r\n      display: 'flex',\r\n      outline: 'none',\r\n      padding: 10,\r\n\r\n      '& .blocker-text': {\r\n        fontWeight: 'normal',\r\n      },\r\n\r\n      '& .blocker-image': getBlockerStyle(28, palette),\r\n    },\r\n  },\r\n});\r\n","export { ZIndexShellComponents, ZIndexContentComponents } from './zindexes';\r\nexport { PagePadding } from './pagePadding';\r\n","// For the z-index defined in external place, we use leading \"_\" in key name to indicate it,\r\n// and put them here ONLY FOR REFERENCE.\r\n\r\n// We only focus on z-index of components in app-layout-container and direct children of <body>.\r\n// That's to say, it doesn't matter that z-index of element A inside Content is greater than\r\n// element B inside Header: A will still shows behind B, since Content z-index < Header z-index.\r\nexport const ZIndexShellComponents = {\r\n  _HelpContainer: 1100, // defined in apex style file\r\n  _BootstrapPopover: 1060, // defined in bootstrap of theme-2018\r\n  _BootstrapModal: 1050, // defined in bootstrap of theme-2018\r\n  _BootstrapModalBackdrop: 1040, // defined in bootstrap of theme-2018\r\n  ModalBackDrop: 1040,\r\n  Header: 1031,\r\n  Loader: 1030, // should be less than Header\r\n  Panel: 1000,\r\n  TopBanner: 250,\r\n  PromotionBanner: 250,\r\n  Nav: 200,\r\n  Status: 150,\r\n  Menu: 100,\r\n  Tab: 75,\r\n  SubTab: 50,\r\n  Content: 0,\r\n};\r\n\r\n// This is the common place for elements inside \".app-shell-content\"\r\nexport const ZIndexContentComponents = {\r\n  // add new elements here in descending order\r\n  GridToolbar: 20,\r\n  GridHeader: 20,\r\n  StatusPopup: 10,\r\n};\r\n","export const PagePadding = {\r\n  mainSectionLeftPadding: 32,\r\n  smallMainSectionLeftPadding: 15,\r\n};\r\n","import { internalLinkStyle } from '../internal-link-style';\r\nimport { underlineLinkStyle } from '../underline-link-style';\r\n\r\n// Styles for panel itself\r\nexport const getTopGridPanelCommonStyle = ({ palette }) => ({\r\n  '& .panel': {\r\n    // All top of grid panel have same margin left and top\r\n    marginTop: '24px',\r\n    marginLeft: '32px',\r\n    marginBottom: '0px',\r\n    padding: 0,\r\n    backgroundColor: 'white',\r\n\r\n    // Learn more button styles.\r\n    ...underlineLinkStyle({ palette, elementLocator: 'a.HelpTopic' }),\r\n\r\n    '& .alert-info .alert-info-inline': {\r\n      ...internalLinkStyle({ palette, elementLocator: '> a', isGreyBackground: true }),\r\n    },\r\n\r\n    '& .panel-heading': {\r\n      backgroundColor: 'white',\r\n      padding: '0px',\r\n      fontWeight: 600,\r\n\r\n      '& .panel-title': {\r\n        fontSize: '20px',\r\n        lineHeight: '27px',\r\n        fontWeight: 600,\r\n      },\r\n    },\r\n\r\n    '& .panel-body': {\r\n      lineHeight: '19px',\r\n      paddingLeft: '0px',\r\n      paddingBottom: '0px',\r\n      marginBottom: '18px', // leave space between body and the footer buttons\r\n\r\n      '& hr': {\r\n        margin: 0,\r\n        borderTop: '0px',\r\n      },\r\n    },\r\n\r\n    '& .panel-footer': {\r\n      borderTop: `1px solid ${palette.neutralLight}`,\r\n      paddingTop: '16px',\r\n      paddingBottom: '16px',\r\n      paddingLeft: '0px',\r\n      marginTop: 0,\r\n      backgroundColor: 'white',\r\n\r\n      '& input.btn, & button.btn': {\r\n        marginRight: '8px',\r\n      },\r\n      '& input.btn:focus': {\r\n        outline: `1px solid ${palette.neutralSecondary}`,\r\n        outlineOffset: '-3px',\r\n      },\r\n      '& input.btn-primary:focus': {\r\n        outline: '1px solid #fff',\r\n      },\r\n      '& .previewTable': {\r\n        margin: '5px 0 !important',\r\n        maxHeight: '250px',\r\n        display: 'inline-block',\r\n        minWidth: '500px',\r\n        width: 'auto !important',\r\n      },\r\n    },\r\n  },\r\n});\r\n","export const columnChooserStyle = {\r\n  '& .column-chooser .option': {\r\n    padding: '6px 10px',\r\n  },\r\n  '& .column-chooser .option:hover': {\r\n    backgroundColor: 'transparent',\r\n    borderColor: 'transparent',\r\n  },\r\n  '& .column-chooser input[type=\"checkbox\"]': {\r\n    margin: '0 5px 0 0',\r\n  },\r\n  '& .column-chooser-instructions': {\r\n    marginBottom: '35px',\r\n  },\r\n  '& .column-chooser-categories': {\r\n    position: 'relative',\r\n    float: 'left',\r\n    width: '180px',\r\n    left: '1px',\r\n    zIndex: '1',\r\n  },\r\n  '& .column-chooser-list': {\r\n    position: 'relative',\r\n    border: '1px solid #bbb',\r\n    background: 'white',\r\n    boxSizing: 'border-box',\r\n    height: '300px',\r\n    width: '340px',\r\n    float: 'left',\r\n    overflow: 'hidden',\r\n  },\r\n  '& .column-chooser-list+.column-chooser-list': {\r\n    marginLeft: '8px',\r\n  },\r\n  '& .column-chooser-list.right': {\r\n    marginLeft: '10px',\r\n  },\r\n  '& .column-chooser-option-header': {\r\n    padding: '10px',\r\n    backgroundColor: '#f4f4f4',\r\n    width: '340px',\r\n  },\r\n  '& .column-chooser-bulk-control': {\r\n    padding: '10px',\r\n  },\r\n  '& .column-chooser-category': {\r\n    padding: '10px',\r\n    cursor: 'pointer',\r\n    borderTop: '0',\r\n  },\r\n  '& .column-chooser-category.active': {\r\n    backgroundColor: 'white',\r\n    border: '1px solid #bbb',\r\n    borderRightColor: 'white',\r\n    borderRight: '0',\r\n  },\r\n  '& .column-chooser-category:focus, & .column-chooser-category.k-state-focused': {\r\n    outline: '1px dashed #333 !important',\r\n  },\r\n  '& .column-chooser-options': {\r\n    listStyle: 'none',\r\n    verticalAlign: 'top',\r\n    overflowX: 'visible',\r\n    overflowY: 'auto',\r\n    padding: '0 10px',\r\n    height: '230px',\r\n  },\r\n  '& .column-chooser-options.selected': {\r\n    padding: '10px',\r\n    height: '290px',\r\n  },\r\n  '& .column-chooser-options.available': {\r\n    height: '250px',\r\n  },\r\n  '& .column-chooser-option': {\r\n    border: '1px solid white',\r\n    borderLeftWidth: '0',\r\n    borderRightWidth: '0',\r\n    padding: '6px 10px',\r\n  },\r\n  '& .column-chooser-option:hover': {\r\n    backgroundColor: '#e5e5e5',\r\n    borderColor: '#e5e5e5',\r\n  },\r\n  '& .column-chooser-message': {\r\n    marginBottom: '15px',\r\n    fontSize: '12px',\r\n  },\r\n  '& .column-chooser-option-selected': {\r\n    cursor: 'move',\r\n    padding: '5px',\r\n    marginBottom: '5px',\r\n    backgroundColor: '#e7f0f6',\r\n    border: '1px solid #1570a6',\r\n    height: '28px !important',\r\n  },\r\n  '& .column-chooser-option-selected:hover': {\r\n    backgroundColor: '#f4f4f4',\r\n    borderColor: '#606060',\r\n  },\r\n  '& .column-chooser-option-selected .remove': {\r\n    paddingTop: '2px',\r\n  },\r\n  '& .column-chooser-option-fixed': {\r\n    cursor: 'not-allowed',\r\n  },\r\n  '& .column-chooser-option-unmovable': {\r\n    backgroundColor: '#e5e5e5',\r\n    borderColor: 'gray',\r\n    cursor: 'not-allowed',\r\n    padding: '7px',\r\n  },\r\n  '& .column-chooser-option-placeholder': {\r\n    border: '1px solid #1570a6',\r\n    opacity: '& .5',\r\n    margin: '6px 10px',\r\n    height: '20px',\r\n  },\r\n  '& .column-chooser': {\r\n    display: 'block !important',\r\n    lineHeight: '15px',\r\n    fontWeight: 'normal',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area': {\r\n    display: 'inline-block',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option': {\r\n    float: 'left',\r\n    padding: '0',\r\n    backgroundColor: '#f4f4f4',\r\n    border: 'none',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .column-chooser-option-header': {\r\n    padding: '10px',\r\n    width: '340px',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .column-chooser-search-box': {\r\n    border: '1px solid #F3F2F1',\r\n    position: 'relative',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .search-input': {\r\n    border: 'none',\r\n    height: '48px',\r\n    paddingLeft: '48px',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .glyphicon-search': {\r\n    top: '16px',\r\n    left: '16px',\r\n    color: '#0078d4',\r\n    position: 'absolute',\r\n    fontSize: '16px',\r\n    fontFamily: 'MsAds MDL2 Assets',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .glyphicon-search:before': {\r\n    content: '\"\\\\E721\"',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs': {\r\n    position: 'relative',\r\n    left: '1px',\r\n    zIndex: '1',\r\n    marginBottom: '8.5px',\r\n    marginTop: '0',\r\n    paddingLeft: '0',\r\n    float: 'left',\r\n    width: '180px',\r\n    listStyle: 'none',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs>li': {\r\n    padding: '10px',\r\n    cursor: 'pointer',\r\n    borderTop: '0',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs>li.active': {\r\n    backgroundColor: 'white',\r\n    border: '1px solid #BBB',\r\n    borderRightColor: 'white',\r\n    borderRight: '0',\r\n    fontWeight: 'bold',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view': {\r\n    float: 'left',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list': {\r\n    position: 'relative',\r\n    border: '1px solid #BBB',\r\n    background: 'white',\r\n    boxSizing: 'border-box',\r\n    height: '300px',\r\n    width: '340px',\r\n    overflow: 'hidden',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list .column-chooser-bulk-control': {\r\n    padding: '10px',\r\n    textAlign: 'right',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options': {\r\n    listStyle: 'none',\r\n    verticalAlign: 'top',\r\n    overflowX: 'visible',\r\n    overflowY: 'auto',\r\n    padding: '0 10px',\r\n    height: '250px',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-not-selected': {\r\n    fontWeight: 'bold',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-status': {\r\n    float: 'right',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-status.disabled': {\r\n    color: '#ccc',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options a.add-column-link': {\r\n    float: 'right',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected': {\r\n    float: 'left',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .column-chooser-selected-header': {\r\n    padding: '10px',\r\n    backgroundColor: '#f4f4f4',\r\n    width: '340px',\r\n    marginLeft: '0',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view': {\r\n    position: 'relative',\r\n    border: '1px solid #BBB',\r\n    background: 'white',\r\n    boxSizing: 'border-box',\r\n    height: '300px',\r\n    width: '340px',\r\n    overflow: 'hidden',\r\n    marginLeft: '10px',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list': {\r\n    padding: '10px',\r\n    height: '290px',\r\n    overflowX: 'visible',\r\n    overflowY: 'auto',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-locked': {\r\n    backgroundColor: '#E5E5E5',\r\n    marginBottom: '5px',\r\n    border: '1px solid gray',\r\n    cursor: 'not-allowed',\r\n    padding: '7px',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable': {\r\n    cursor: 'move',\r\n    padding: '5px',\r\n    marginBottom: '5px',\r\n    backgroundColor: '#e7f0f6',\r\n    border: '1px solid #008272',\r\n    height: '28px',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable.draggable-list__item-preview': {\r\n    opacity: '& .5',\r\n    marginLeft: '10px',\r\n    marginRight: '10px',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable span.remove': {\r\n    float: 'right',\r\n  },\r\n  '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item .selected-list-item span': {\r\n    M: 'none',\r\n    W: 'none',\r\n    fallbacks: [\r\n      {\r\n        M: 'none',\r\n      },\r\n    ],\r\n    userSelect: 'none',\r\n  },\r\n  '& .column-chooser .panel .panel-body .save-column-view': {\r\n    display: 'inline-block',\r\n  },\r\n  '& .column-chooser .panel .panel-body .save-column-view .save-checkbox': {\r\n    height: '25px',\r\n    verticalAlign: 'middle',\r\n  },\r\n  '& .column-chooser .panel .panel-body .save-column-view .save-checkbox .column-chooser-save-column': {\r\n    fontWeight: 'normal',\r\n  },\r\n  '& .column-chooser .panel .panel-body .save-column-view .save-checkbox input.column-chooser-saved-name': {\r\n    border: '1px solid #BBB',\r\n    padding: '3px 5px',\r\n    fontSize: '12px',\r\n    lineHeight: '1.45833333',\r\n  },\r\n  '& .column-chooser .panel .panel-footer': {\r\n    marginTop: '5px',\r\n  },\r\n  // From @bingads-webui/theme-2016/style/css/bootstrap/less/override/panels.less\r\n  // scoped under .column-chooser\r\n  '& .column-chooser .panel-component': {\r\n    backgroundColor: '#E7F0F6',\r\n  },\r\n  '& .column-chooser .panel-component .panel-heading': {\r\n    backgroundColor: '#E7F0F6',\r\n  },\r\n  '& .column-chooser .panel-component .panel-title': {\r\n    fontColor: '#333',\r\n  },\r\n  '& .column-chooser .panel-component .panel-body': {\r\n    padding: '5px 15px',\r\n  },\r\n  '& .column-chooser .panel-form': {\r\n    backgroundColor: 'white',\r\n    border: '1px solid #BBB',\r\n    padding: '5px',\r\n  },\r\n  '& .column-chooser .panel-form.noPadding': {\r\n    padding: '0',\r\n  },\r\n  '& .column-chooser .panel-form .panel-heading': {\r\n    marginBottom: '0',\r\n  },\r\n  '& .column-chooser .panel-form .section': {\r\n    padding: '0 0 15px 0',\r\n  },\r\n  '& .column-chooser .panel-form .panel-body.noPadding': {\r\n    padding: '0',\r\n  },\r\n  '& .column-chooser .panel-form-footer': {\r\n    padding: '3px 0',\r\n  },\r\n  '& .column-chooser .panel.panel-white': {\r\n    backgroundColor: 'white',\r\n    W: 'none',\r\n    boxShadow: 'none',\r\n  },\r\n  '& .column-chooser .panel-body': {\r\n    padding: '0 15px 0 15px',\r\n  },\r\n  '& .column-chooser .panel-body:before, & .column-chooser .panel-body:after': {\r\n    content: '\" \"',\r\n    display: 'table',\r\n  },\r\n  '& .column-chooser .panel-body:after': {\r\n    clear: 'both',\r\n  },\r\n  '& .column-chooser .panel-heading': {\r\n    backgroundColor: '#E5E5E5',\r\n    padding: '0 15px',\r\n    marginBottom: '15px',\r\n  },\r\n  '& .column-chooser .panel-heading>.dropdown .dropdown-toggle': {\r\n    color: 'inherit',\r\n  },\r\n  '& .column-chooser .panel-title': {\r\n    fontWeight: 'bold',\r\n    marginTop: '0',\r\n    marginBottom: '0',\r\n    lineHeight: '30px',\r\n    fontSize: 14,\r\n    display: 'inline',\r\n  },\r\n  '& .column-chooser .panel-title>a': {\r\n    color: 'inherit',\r\n  },\r\n  '& .column-chooser .panel-footer': {\r\n    padding: '0 15px 0 15px',\r\n    borderTop: '0px',\r\n  },\r\n  '& .column-chooser hr': {\r\n    borderTop: '1px solid #A2A2A2',\r\n  },\r\n  '& .column-chooser .save-column-checkbox': {\r\n    float: 'left',\r\n  },\r\n};\r\n","import { getNewFeatureLabelStyle } from '../new-feature-label-style';\r\n\r\nexport const getColumnChooserOverrideStyle = palette => ({\r\n  // Shared part already moved to 'global-styles.js' to be shared with all top of grid panel.\r\n  // Only put column chooser specific override here.\r\n  '& .column-chooser': {\r\n    display: 'block !important',\r\n    lineHeight: '15px',\r\n    fontWeight: 'normal',\r\n\r\n    '& .panel': {\r\n      '& .panel-body': {\r\n        '& .column-chooser-selection-area': {\r\n          padding: '0px 0px 18px 0px',\r\n\r\n          '& .column-chooser-option': {\r\n            backgroundColor: 'white',\r\n            border: `1px solid ${palette.neutralTertiary}`,\r\n            ...getNewFeatureLabelStyle({ palette }),\r\n\r\n            '& .option': {\r\n              height: '36px',\r\n              display: 'flex',\r\n              alignItems: 'center',\r\n            },\r\n\r\n            '& .column-chooser-option-header': {\r\n              display: 'none',\r\n            },\r\n\r\n            '& .column-chooser-categories': {\r\n              left: 0,\r\n              width: '300px',\r\n\r\n              '& .category-tabs': {\r\n                left: 0,\r\n                width: '300px',\r\n\r\n                '& li a:after': {\r\n                  fontFamily: '\"MsAds MDL2 Assets\"',\r\n                  content: '\"\\\\E76C\"',\r\n                  color: palette.neutralSecondary,\r\n                  float: 'right',\r\n                },\r\n\r\n                '& > li': {\r\n                  padding: '10px 8px 10px 10px',\r\n\r\n                  '& .new-feature-label': {\r\n                    display: 'inline-block',\r\n                    position: 'absolute',\r\n                  },\r\n                },\r\n\r\n                '& > li.active': {\r\n                  fontWeight: 'normal',\r\n                  border: 0,\r\n                  backgroundColor: palette.neutralLight,\r\n                  '& > a.currentActive': {\r\n                    color: palette.themeDarker,\r\n                  },\r\n                },\r\n              },\r\n            },\r\n\r\n            '& .options-view .column-chooser-option-list': {\r\n              border: '0px',\r\n              borderLeft: `1px solid ${palette.neutralLight}`,\r\n              width: '300px',\r\n              height: '282px',\r\n\r\n              '& .column-chooser-bulk-control': {\r\n                padding: '10px 8px 9px 10px',\r\n                minHeight: '38px',\r\n\r\n                '& .arrow-button': {\r\n                  display: 'none',\r\n                },\r\n              },\r\n\r\n              '& ul.column-chooser-options': {\r\n                height: '243.6px',\r\n\r\n                '& span.option-not-selected': {\r\n                  fontWeight: 'normal',\r\n                },\r\n\r\n                '& span.option-name': {\r\n                  display: 'inline-block',\r\n                  maxWidth: '165px',\r\n                  textOverflow: 'ellipsis',\r\n                  whiteSpace: 'nowrap',\r\n                  overflow: 'hidden',\r\n                },\r\n\r\n                '& .option-status, & a.add-column-link': {\r\n                  marginLeft: 'auto',\r\n                },\r\n              },\r\n\r\n              '& .column-chooser-editable-picker': {\r\n                height: '282px',\r\n                display: 'flex',\r\n                flexDirection: 'column',\r\n                '& .custom-column-remove': {\r\n                  margin: '0px 10px',\r\n                },\r\n                '& .glyphicon-pencil': {\r\n                  textDecoration: 'none',\r\n                  '&:focus': {\r\n                    outline: `1px solid ${palette.neutralSecondary}`,\r\n                  },\r\n\r\n                  '&:before': {\r\n                    fontFamily: 'MsAds MDL2 Assets',\r\n                    content: '\"\\\\E70F\"',\r\n                    color: palette.themeDark,\r\n                  },\r\n                },\r\n                '& .glyphicon-remove': {\r\n                  textDecoration: 'none',\r\n                  '&:focus': {\r\n                    outline: `1px solid ${palette.neutralSecondary}`,\r\n                  },\r\n\r\n                  '&:before': {\r\n                    fontFamily: 'MsAds MDL2 Assets',\r\n                    content: '\"\\\\E711\"',\r\n                  },\r\n                },\r\n                '& span.option-status.enabled': {\r\n                  marginLeft: 'auto',\r\n                },\r\n                '& a.add-column-link': {\r\n                  marginLeft: 'auto',\r\n                },\r\n                '& .inapplicable-column': {\r\n                  marginLeft: 'auto',\r\n                },\r\n                '& .column-chooser-bulk-control': {\r\n                  padding: '0',\r\n                  minHeight: '38px',\r\n                  display: 'flex',\r\n                  justifyContent: 'space-between',\r\n\r\n                  '& .custom-column-add': {\r\n                    margin: '8px 8px 0px',\r\n                  },\r\n\r\n                  '& .remove-all-in-list, .add-all-in-list': {\r\n                    padding: '10px 8px 9px 10px',\r\n                  },\r\n                },\r\n                '& .invalid-custom-column:focus': {\r\n                  outline: `1px solid ${palette.neutralSecondary}`,\r\n                },\r\n                '& .column-chooser-options': {\r\n                  flex: '1 1 1px',\r\n                  margin: '0',\r\n                  '& .option': {\r\n                    display: 'flex',\r\n                    alignItems: 'center',\r\n                    '& .option-name': {\r\n                      flex: '1',\r\n                    },\r\n                  },\r\n                },\r\n              },\r\n            },\r\n          },\r\n\r\n          '& .column-chooser-selected': {\r\n            border: `1px solid ${palette.neutralTertiary}`,\r\n            marginLeft: '8px',\r\n            width: '300px',\r\n            height: '334px',\r\n            display: 'flex',\r\n            flexDirection: 'column',\r\n\r\n            '& .column-chooser-selected-header': {\r\n              backgroundColor: 'white',\r\n              padding: '10px 0px 10px 10px',\r\n              width: '298px',\r\n            },\r\n\r\n            '& .column-chooser-selected-header:before': {\r\n              content: 'Test new header',\r\n              fontWeight: 'bold',\r\n            },\r\n\r\n            '& .column-chooser-selected-header:after': {\r\n              content: 'Test new subheader',\r\n            },\r\n\r\n            '& .remove-all-in-selected-list': {\r\n              marginLeft: 'auto',\r\n              float: 'right',\r\n              display: 'inline-block',\r\n              paddingTop: '10px',\r\n              paddingRight: '10px',\r\n            },\r\n\r\n            '& .column-chooser-selected-list': {\r\n              flex: '1',\r\n              overflow: 'auto',\r\n              '& .draggable-list-view': {\r\n                margin: 0,\r\n                height: '100%',\r\n                width: '298px',\r\n                border: 0,\r\n\r\n                '& ul.draggable-list': {\r\n                  padding: 0,\r\n                  listStyle: 'none',\r\n                  height: '100%',\r\n                  overflow: 'auto',\r\n                  marginBottom: '0',\r\n\r\n                  '& li.draggable-list-item': {\r\n                    border: '1px solid transparent',\r\n                    padding: '1px 0',\r\n                    outline: 'none',\r\n\r\n                    '&:focus': {\r\n                      border: `1px solid ${palette.neutralTertiary}`,\r\n                    },\r\n\r\n                    '& .selected-list-item': {\r\n                      verticalAlign: 'middle',\r\n                      display: 'flex',\r\n                      alignItems: 'flex-start',\r\n\r\n                      '& .selected-item-name': {\r\n                        flex: '1',\r\n                        overflow: 'hidden',\r\n                        whiteSpace: 'nowrap',\r\n                        textOverflow: 'ellipsis',\r\n                      },\r\n\r\n                      '& .trigger-icon': {\r\n                        color: '#797775',\r\n                        fontFamily: '\"MsAds MDL2 Assets\"',\r\n                        lineHeight: '19px',\r\n                        padding: '0px 8px',\r\n                        position: 'relative',\r\n\r\n                        '&:after': {\r\n                          color: palette.themePrimary,\r\n                          content: '\"\\\\E76F\"',\r\n                          fontSize: '20px',\r\n                        },\r\n                      },\r\n                    },\r\n\r\n                    '&.selected, &:focus, &:hover': {\r\n                      '& .trigger-icon:before': {\r\n                        content: '\"\\\\F090\\\\F08E\"',\r\n                        fontSize: '14px',\r\n                        letterSpacing: '3px',\r\n                        marginTop: '-6px',\r\n                        position: 'absolute',\r\n                        writingMode: 'vertical-lr',\r\n                      },\r\n                    },\r\n\r\n                    '&.selected': {\r\n                      backgroundColor: palette.neutralLight,\r\n\r\n                      '& .trigger-icon:before': {\r\n                        color: palette.neutralPrimary,\r\n                      },\r\n                    },\r\n                  },\r\n\r\n                  '& li.draggable-list-item.draggable-list__item-locked': {\r\n                    height: '36px',\r\n                    padding: '0px',\r\n                    backgroundColor: 'white',\r\n\r\n                    '& .selected-list-item': {\r\n                      margin: '8px 8px 9px 36px',\r\n                    },\r\n                  },\r\n\r\n                  '& li.draggable-list-item.draggable-list__item-draggable': {\r\n                    height: '36px',\r\n                    padding: '0px',\r\n                    backgroundColor: 'white',\r\n\r\n                    '& .selected-list-item': {\r\n                      margin: '8px 8px 9px 0px',\r\n                    },\r\n                  },\r\n                },\r\n              },\r\n            },\r\n          },\r\n        },\r\n\r\n        '& .save-column-view': {\r\n          '& .save-checkbox': {\r\n            '& label+input': {\r\n              marginLeft: '13px',\r\n            },\r\n\r\n            '& .column-chooser-save-column': {\r\n              float: 'left',\r\n\r\n              '& .save-column-checkbox': {\r\n                height: '20px',\r\n                width: '20px',\r\n              },\r\n              '& input[type=\"checkbox\"]': {\r\n                marginRight: '8px',\r\n              },\r\n            },\r\n\r\n            '& .column-chooser-saved-name': {\r\n              height: '32px',\r\n              width: '250px',\r\n            },\r\n          },\r\n        },\r\n      },\r\n    },\r\n  },\r\n});\r\n","export const getNewFeatureLabelStyle = ({ palette = {} }) => ({\r\n  '& .new-feature-label': {\r\n    color: palette.white,\r\n    border: `1px solid ${palette.white}`,\r\n    padding: '0 9px',\r\n    fontSize: '12px',\r\n    borderRadius: '12px',\r\n    backgroundColor: palette.orange,\r\n    marginLeft: '5px',\r\n  },\r\n});\r\n","export const filterEditorStyle = {\r\n  '& .predicate-row': {\r\n    display: 'flex',\r\n    alignItems: 'center',\r\n  },\r\n  '& .filter-editor .panel': {\r\n    backgroundColor: 'white',\r\n    paddingBottom: '15px',\r\n    border: '1px solid transparent',\r\n    borderRadius: 0,\r\n    boxShadow: '0 1px 1px rgba(0,0,0,0.05)',\r\n    marginBottom: '15px',\r\n  },\r\n  '& .filter-body.filter-editor .save-form input[type=\"checkbox\"]': {\r\n    marginRight: '5px',\r\n    marginTop: 0,\r\n  },\r\n  '& .filter-body.filter-editor .save-form .btn + .btn': {\r\n    marginLeft: '10px',\r\n  },\r\n  '& .filter-body.filter-editor .save-form .btn + .checkbox': {\r\n    marginLeft: '15px',\r\n  },\r\n  '& .filter-body.filter-editor .save-form .checkbox label + input': {\r\n    marginLeft: '10px',\r\n  },\r\n  '& .predicate-list li': {\r\n    marginBottom: '5px',\r\n  },\r\n  '& .predicate-list li .error-row': {\r\n    marginTop: '5px',\r\n  },\r\n  '& .predicate-list li .error-row label': {\r\n    fontWeight: '500',\r\n    fontSize: '12px',\r\n    lineHeight: '16px',\r\n    color: '#a80000',\r\n  },\r\n  '& .predicate-list li .predicate-row .filter-predicate-property': {\r\n    position: 'relative',\r\n    display: 'inline-block',\r\n  },\r\n  '& .predicate-list li .predicate-row .filter-predicate-property > .btn.btn-default': {\r\n    textAlign: 'right',\r\n    minWidth: '205px',\r\n  },\r\n  '& .predicate-list li .predicate-row .filter-predicate-property > .btn.btn-default > .selected': {\r\n    float: 'left',\r\n  },\r\n  '& .predicate-list li .predicate-row .filter-predicate-property + .predicate-operator': {\r\n    marginLeft: '10px',\r\n  },\r\n  '& .predicate-list li .predicate-row .form-control': {\r\n    display: 'inline-block',\r\n  },\r\n  '& .predicate-list li .predicate-row > * + *': {\r\n    marginLeft: '4px',\r\n  },\r\n  '& .predicate-list li .predicate-row .predicate-property': {\r\n    width: '15em',\r\n  },\r\n  '& .predicate-list li .predicate-row .predicate-operator': {\r\n    width: '15em',\r\n  },\r\n  '& .predicate-list li .predicate-row .predicate-operator + .predicate-value': {\r\n    marginLeft: '10px',\r\n    '& .checkbox-inline, & .checkbox-inline + .checkbox-inline, & .radio-inline, & .radio-inline + .radio-inline': {\r\n      marginLeft: 0,\r\n      marginRight: '10px',\r\n    },\r\n    '& .checkbox-inline:last-child, & .radio-inline:last-child': {\r\n      marginRight: 0,\r\n    },\r\n  },\r\n  '& .predicate-list li .predicate-row .predicate-value': {\r\n    display: 'inline-block',\r\n  },\r\n  '& .predicate-list li .predicate-row .predicate-value > input': {\r\n    width: 'inherit',\r\n  },\r\n  '& .predicate-list li .predicate-row .predicate-value + .remove': {\r\n    marginLeft: '16px',\r\n    height: '32px',\r\n    display: 'flex',\r\n    alignItems: 'center',\r\n  },\r\n  '& .predicate-list li .predicate-row .predicate-value button.selector-dropdown-button': {\r\n    backgroundColor: '#fff',\r\n    border: '0',\r\n  },\r\n  '& .predicate-list li .predicate-row .predicate-value .selector.dropdown-menu': {\r\n    marginLeft: '-1px',\r\n    border: '1px solid #ccc',\r\n  },\r\n  '& .predicate-list li .predicate-row .single-operator-column, & .predicate-list li .predicate-row .single-property-column': {\r\n    display: 'inline-block',\r\n    marginTop: '4px',\r\n  },\r\n  '& .predicate-list li .predicate-row .dropdown-submenu': {\r\n    minWidth: '150px',\r\n    position: 'relative',\r\n  },\r\n  '& .predicate-list li .predicate-row .dropdown-submenu li': {\r\n    marginBottom: '0',\r\n  },\r\n  '& .predicate-list li .predicate-row .dropdown-submenu > span': {\r\n    display: 'inline-block',\r\n  },\r\n  '& .predicate-list li .predicate-row .dropdown-submenu:hover > .dropdown-menu': {\r\n    display: 'block',\r\n    visibility: 'visible',\r\n  },\r\n  '& .predicate-list li .predicate-row .dropdown-submenu .spritedimage': {\r\n    marginTop: '2px',\r\n  },\r\n  '& .predicate-list li .predicate-row .btn .caret': {\r\n    marginLeft: '5px',\r\n  },\r\n  '& .filter-header': {\r\n    display: 'inline-block',\r\n  },\r\n  '& .filter-header .filter-button': {\r\n    padding: '7px 10px',\r\n    display: 'inline-block',\r\n  },\r\n  '& .filter-header .filter-button:hover': {\r\n    backgroundColor: '#e5e5e5',\r\n    cursor: 'pointer',\r\n  },\r\n  '& .filter-header .glyphicon-filter': {\r\n    marginRight: '6px',\r\n  },\r\n  '& .filter-header .filterMenu': {\r\n    border: '1px solid #CCCCCC',\r\n    minWidth: '250px',\r\n    padding: '2px',\r\n  },\r\n  '& .filter-header .filterMenu .saved': {\r\n    marginBottom: '2px',\r\n  },\r\n  '& .filter-header .filterMenu .new, & .filter-header .filterMenu .apply': {\r\n    display: 'block',\r\n    color: '#404040',\r\n    padding: '4px 0 4px 20px',\r\n  },\r\n  '& .filter-header .filterMenu .new:hover, & .filter-header .filterMenu .apply:hover, & .filter-header .filterMenu .saved>li:hover': {\r\n    textDecoration: 'none',\r\n    backgroundColor: '#EAECEE',\r\n  },\r\n  '& .filter-header .filterMenu .delete': {\r\n    color: '#404040',\r\n    padding: '4px 4px 4px',\r\n    float: 'right',\r\n    clear: 'right',\r\n  },\r\n  '& .filter-header .filterMenu .apply-header': {\r\n    color: '#929fad',\r\n    padding: '6px 0 4px 9px',\r\n  },\r\n  '& .filter-header .quick': {\r\n    minWidth: '151px',\r\n    borderWidth: '1px',\r\n    borderStyle: 'solid',\r\n    borderColor: '#ccc',\r\n    backgroundColor: '#FFFFFF',\r\n    display: 'inline-block',\r\n  },\r\n  '& .filter-header .quick .quick-text': {\r\n    padding: '3px 5px',\r\n    border: 'none',\r\n  },\r\n  '& .filter-header .quick .quick-text:active': {\r\n    border: 'none',\r\n  },\r\n  '& .filter-body .save-form': {\r\n    marginTop: '25px',\r\n  },\r\n  '& .filter-body .save-form h5.checkbox': {\r\n    marginLeft: '15px',\r\n  },\r\n  '& .filter-body .save-form .name': {\r\n    width: '300px',\r\n  },\r\n  '& .grid-toolbar-bar': {\r\n    fontSize: 12,\r\n  },\r\n  '& .predicate-list>ul': {\r\n    marginBottom: '10px',\r\n  },\r\n  '& .predicate-list>ul>li.row': {\r\n    marginBottom: '4px',\r\n  },\r\n  '& .predicate-list>ul>li.row>div': {\r\n    paddingLeft: '2px',\r\n    paddingRight: '2px',\r\n  },\r\n  '& .predicate-list>ul>li.row .operator-single': {\r\n    lineHeight: '25px',\r\n    marginLeft: '10px',\r\n    marginBottom: '0',\r\n  },\r\n  '& .predicate-list>ul>li.row .dropdown .dropdown-control .glyphicon-triangle-bottom': {\r\n    float: 'right',\r\n    marginTop: '1px',\r\n  },\r\n  '& .predicate-list>ul>li.row .dropdown .dropdown-menu': {\r\n    border: '1px solid #BBB',\r\n    padding: '3px 5px',\r\n  },\r\n  '& .predicate-list>ul>li.row span.datepicker': {\r\n    padding: '0',\r\n    margin: '0',\r\n    border: '0',\r\n  },\r\n  '& .predicate-list>ul>li.row ul.enum-options>li': {\r\n    whiteSpace: 'nowrap',\r\n  },\r\n  '& .predicate-list>ul>li.row ul.enum-options>li input[type=\"checkbox\"]': {\r\n    marginTop: '0',\r\n  },\r\n  '& .predicate-list a.remove, & .predicate-list a.new': {\r\n    lineHeight: '20px',\r\n    textDecoration: 'none',\r\n    color: '#323130',\r\n    fontSize: 12,\r\n  },\r\n  '& ol, & ul': {\r\n    listStyle: 'none',\r\n    paddingLeft: 0,\r\n  },\r\n};\r\n","export const getFilterEditorOverrideStyle = palette => ({\r\n  '& .filter-editor': {\r\n    '& .save-form .checkbox label': {\r\n      display: 'inline-block',\r\n    },\r\n    '& .panel-body': {\r\n      paddingLeft: '32px',\r\n      lineHeight: '19px',\r\n      marginBottom: '28px',\r\n    },\r\n    '& .glyphicon-remove:before': {\r\n      // eslint-disable-next-line no-useless-escape\r\n      content: '\"\\\\E711\"',\r\n    },\r\n    '& .glyphicon': {\r\n      display: 'inline-block',\r\n      'font-family': 'MsAds MDL2 Assets',\r\n      'font-size': '14px',\r\n      'font-style': 'normal',\r\n      '-webkit-font-smoothing': 'antialiased',\r\n      '-moz-osx-font-smoothing': 'grayscale',\r\n    },\r\n    '& .glyphicon.glyphicon-remove': {\r\n      top: 0,\r\n    },\r\n    '& .glyphicon.glyphicon-plus': {\r\n      marginRight: 8,\r\n      height: 14,\r\n      width: 14,\r\n      fontFamily: 'MsAds MDL2 Assets',\r\n      color: palette.themePrimary,\r\n      top: 2,\r\n    },\r\n    '& .glyphicon-plus:before': {\r\n      content: '\"\\\\E710\" !important',\r\n    },\r\n    '& .delivery-status-category-container:first-of-type': {\r\n      float: 'left',\r\n      marginLeft: '20px',\r\n      display: 'inline-block',\r\n      marginTop: 0,\r\n    },\r\n\r\n    '& .delivery-status-category-container + .delivery-status-category-container': {\r\n      paddingLeft: 20,\r\n      float: 'left',\r\n    },\r\n    '& .predicate-row': {\r\n      alignItems: 'end',\r\n    },\r\n    '& .filter_button': {\r\n      marginTop: 2,\r\n    },\r\n  },\r\n});\r\n","// Styles for legacy filter bar to make it looks like New UI, no need to use it for new filter bar\r\nexport const getLegacyFilterBarStyle = ({ palette }) => ({\r\n  '& .filter-bar': {\r\n    '& .panel-component': {\r\n      backgroundColor: palette.neutralLighter,\r\n      marginBottom: '0 !important',\r\n      minHeight: 56,\r\n      minWidth: 1000,\r\n      lineHeight: '24px',\r\n      padding: '15px 10px',\r\n\r\n      '& .panel-body': {\r\n        padding: 0,\r\n\r\n        '& .filter_title_collapsed': {\r\n          marginRight: 35,\r\n        },\r\n\r\n        '& .filter_row_readonly .humanized': {\r\n          '& .column, & .filter_operator': {\r\n            marginRight: 5,\r\n          },\r\n\r\n          '& .filterValue': {\r\n            fontWeight: 600,\r\n          },\r\n\r\n          '& .filterand': {\r\n            display: 'inline-block',\r\n            width: 20,\r\n          },\r\n        },\r\n\r\n        '& .filter_links': {\r\n          marginLeft: 40,\r\n\r\n          '& a': {\r\n            display: 'inline-block',\r\n            textDecoration: 'none',\r\n\r\n            '&:nth-child(2n)': {\r\n              fontWeight: 600,\r\n              marginRight: 30,\r\n              color: palette.neutralPrimary,\r\n            },\r\n\r\n            '&:last-child': {\r\n              marginRight: 0,\r\n            },\r\n          },\r\n        },\r\n\r\n        '& .filter_title_collapsed, & .filter_row_readonly, & .filter_links': {\r\n          display: 'inline-block',\r\n        },\r\n      },\r\n    },\r\n  },\r\n});\r\n","import { getSharedBodyStyles } from './body';\r\nimport { getSharedColGroupStyles } from './col-group';\r\nimport { getSharedColumnsStyles } from './columns';\r\nimport { getSharedFooterStyles } from './footer';\r\nimport { getSharedGlobalStyles } from './global';\r\nimport { getSharedHeaderStyles } from './header';\r\nimport { getSharedTableStyles } from './table';\r\nimport * as variables from './variables';\r\n\r\nexport const GridSharedStyles = {\r\n  getSharedBodyStyles,\r\n  getSharedColGroupStyles,\r\n  getSharedColumnsStyles,\r\n  getSharedFooterStyles,\r\n  getSharedGlobalStyles,\r\n  getSharedHeaderStyles,\r\n  getSharedTableStyles,\r\n  variables,\r\n};\r\n","import { totalRowBackgroundColor, tableBorder } from './variables';\r\n\r\nexport const getSharedBodyStyles = (components, { palette }) => ({\r\n  '& tr.segment-row': {\r\n    fontSize: '12px',\r\n\r\n    // Need this so values in primary key will stay 12px\r\n    '& .segment-value': {\r\n      fontSize: '12px',\r\n    },\r\n  },\r\n  // The total rows at the bottom of the table\r\n  '& tr.aggregate-row': {\r\n    '& td': {\r\n      fontSize: '12px !important',\r\n    },\r\n  },\r\n  '& tr.aggregated-row': {\r\n    '& td': {\r\n      fontSize: '12px !important',\r\n      backgroundColor: totalRowBackgroundColor,\r\n    },\r\n    '&:hover': { // No hover color changes for aggregated rows.\r\n      '& td': {\r\n        fontSize: '12px !important',\r\n        borderRight: tableBorder,\r\n      },\r\n    },\r\n  },\r\n  '& tr': {\r\n    backgroundColor: '#FFFFFF',\r\n    color: palette.neutralPrimary,\r\n\r\n    // hide extra border between header and body, the first filler tr in grid need to be excluded\r\n    '&[data-key]:first-child, &:not([data-key]) + tr[data-key]': {\r\n      '& td': {\r\n        borderTop: 'none',\r\n      },\r\n    },\r\n\r\n    '&[data-key]:hover, &.row-selected[data-key], &.row-selected[data-key]:hover': {\r\n      '& td': {\r\n        borderBottom: '1px solid #FFFFFF',\r\n      },\r\n    },\r\n\r\n    '&:hover': {\r\n      backgroundColor: palette.neutralLighter,\r\n    },\r\n\r\n    '&.row-selected': {\r\n      backgroundColor: palette.neutralLight,\r\n      '& td a': {\r\n        color: palette.themeDarker,\r\n        fontWeight: 600,\r\n      },\r\n      '&:hover': {\r\n        backgroundColor: palette.neutralQuaternaryAlt,\r\n      },\r\n    },\r\n\r\n    '&:hover, &.row-selected, &.row-selected:hover': {\r\n      '& td': {\r\n        borderRight: '1px solid #FFFFFF',\r\n      },\r\n    },\r\n\r\n    '&.grid-error-row': {\r\n      '& td': {\r\n        '& ul.grid-error-list': {\r\n          listStyle: 'none',\r\n          paddingLeft: 0,\r\n          margin: '0.5em 0',\r\n          color: '#A80000',\r\n          '& .grid-error': {\r\n            paddingRight: 5,\r\n          },\r\n        },\r\n      },\r\n    },\r\n  },\r\n});\r\n","import { PagePadding } from '../../constants/pagePadding';\r\n\r\nexport const headerRowBackgroundColor = '#FFFFFF';\r\nexport const headerRowBorderTop = '2px solid #81868B';\r\nexport const headerRowBorderBottom = '2px solid #81868B';\r\nexport const totalRowBackgroundColor = '#FFFFFF';\r\nexport const totalRowBorderTop = 'none'; // `1px solid ${palette.neutralLighter}`\r\nexport const tableBorder = '1px solid #EDEBE9';\r\n\r\nexport const gridPaddingLeft = PagePadding.mainSectionLeftPadding;\r\nexport const gridPaddingComponsation = 0; // These two should add up to 32px\r\n","// use this in '& col'\r\nexport const getSharedColGroupStyles = () => ({\r\n  width: 120,\r\n  minWidth: 120,\r\n\r\n  '&.col-selection': {\r\n    width: 46,\r\n    minWidth: 46,\r\n  },\r\n});\r\n","/* eslint-disable max-len */\r\nimport { tableBorder } from './variables';\r\n\r\nexport const getSharedColumnsStyles = () => ({\r\n  '&': {\r\n    padding: '6px 8px',\r\n    verticalAlign: 'middle',\r\n    border: tableBorder, // NOTE: updated from 'palette.neutralLighter' for fit and finish experiments\r\n    fontSize: '12px',\r\n    overflowWrap: 'break-word',\r\n  },\r\n\r\n  '&:first-child': {\r\n    paddingLeft: '12px',\r\n  },\r\n\r\n  '& span': {\r\n    lineHeight: '16px',\r\n  },\r\n});\r\n","import { gridPaddingComponsation } from './variables';\r\n\r\nexport const getSharedFooterStyles = () => ({\r\n  '& tr.noborder': {\r\n    '& td': {\r\n      border: 'none',\r\n      paddingLeft: '0px',\r\n      paddingTop: '24px',\r\n      '& .pagination-control': {\r\n        display: 'flex',\r\n        alignItems: 'center',\r\n        marginTop: '5px',\r\n        marginBottom: '5px',\r\n        marginLeft: gridPaddingComponsation,\r\n\r\n        '& .form-control.page-size-selector': {\r\n          marginLeft: '5px',\r\n          minWidth: '60px',\r\n        },\r\n        '& .pager': {\r\n          display: 'flex',\r\n          alignItems: 'center',\r\n          marginTop: '0',\r\n          marginBottom: '0',\r\n          marginLeft: '20px',\r\n          '& .nav-button': {\r\n            border: 'none',\r\n            padding: '0',\r\n            minWidth: '20px',\r\n            display: 'flex',\r\n            alignItems: 'center',\r\n            '&.prev': {\r\n              marginRight: '10px',\r\n              '& + .text': {\r\n                display: 'none', // to hide text \"Page:\"\r\n              },\r\n            },\r\n            '&.next': {\r\n              marginLeft: '10px',\r\n            },\r\n            '&:disabled': {\r\n              backgroundColor: '#fff',\r\n            },\r\n          },\r\n          '& .page-number-input': {\r\n            marginRight: '5px',\r\n            width: '75px',\r\n          },\r\n        },\r\n      },\r\n    },\r\n  },\r\n});\r\n","export const getSharedGlobalStyles = (components, { palette }) => ({\r\n  '.bingadsgrid': {\r\n    '& .grid-noresult, & .grid-noresult-empty, & .noresult': {\r\n      color: palette.neutralSecondary,\r\n      fontSize: 26,\r\n      lineHeight: '36px',\r\n      padding: '20px 0 20px 40px',\r\n    },\r\n  },\r\n  '.table-container .glyphicon.glyphicon-triangle-left': {\r\n    fontFamily: '\"MsAds MDL2 Assets\"',\r\n  },\r\n  '.table-container .glyphicon.glyphicon-triangle-left::before': {\r\n    content: '\"\\\\E76B\"',\r\n    color: palette.neutralSecondary,\r\n  },\r\n  '.table-container .btn:disabled .glyphicon.glyphicon-triangle-left::before': {\r\n    color: '#BEBBB8',\r\n  },\r\n  '.table-container .glyphicon.glyphicon-triangle-right': {\r\n    fontFamily: '\"MsAds MDL2 Assets\"',\r\n  },\r\n  '.table-container .glyphicon.glyphicon-triangle-right::before': {\r\n    content: '\"\\\\E76C\"',\r\n    color: palette.neutralSecondary,\r\n  },\r\n  '.table-container .btn:disabled .glyphicon.glyphicon-triangle-right::before': {\r\n    color: '#BEBBB8',\r\n  },\r\n  '.table-container .glyphicon.glyphicon-triangle-bottom': {\r\n    fontFamily: '\"MsAds MDL2 Assets\"',\r\n  },\r\n  '.table-container .glyphicon.glyphicon-triangle-bottom::before': {\r\n    content: '\"\\\\E70D\"',\r\n    color: palette.neutralSecondary,\r\n  },\r\n  '.table-container .btn:disabled .glyphicon.glyphicon-triangle-bottom::before': {\r\n    color: '#BEBBB8',\r\n  },\r\n});\r\n","import { tableBorder, totalRowBorderTop, totalRowBackgroundColor, headerRowBorderBottom, headerRowBackgroundColor, headerRowBorderTop } from './variables';\r\n\r\nexport const getSharedHeaderStyles = (components, { palette, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n  '& tr.aggregated-row': {\r\n    '& th': {\r\n      fontSize: '12px',\r\n    },\r\n  },\r\n  '& tr.overall-total-row': {\r\n    '& th': {\r\n      fontWeight: 'normal',\r\n      borderTop: totalRowBorderTop,\r\n      borderBottom: tableBorder,\r\n      backgroundColor: totalRowBackgroundColor,\r\n    },\r\n  },\r\n  '& tr': {\r\n    '& th.column-header': {\r\n      borderTop: headerRowBorderTop,\r\n      borderBottom: headerRowBorderBottom,\r\n      '& .helpbutton::before': {\r\n        position: 'static',\r\n      },\r\n\r\n      '& span.grid-header-text': {\r\n        overflowWrap: 'break-word',\r\n        wordBreak: 'break-word',\r\n      },\r\n      '& span.grid-header-helpId': {\r\n        lineHeight: 1,\r\n      },\r\n    },\r\n    '& th': {\r\n      verticalAlign: 'middle',\r\n      fontWeight: '600',\r\n      backgroundColor: headerRowBackgroundColor,\r\n      color: palette.neutralPrimary,\r\n      border: tableBorder,\r\n      padding: '6px 8px',\r\n    },\r\n\r\n    '& th:first-child': {\r\n      paddingLeft: '12px',\r\n    },\r\n\r\n    // we don't want pop first column header to have special padding left\r\n    '&.pop-enabled + tr.pop-enabled th:first-child': {\r\n      paddingLeft: '10px',\r\n    },\r\n\r\n    '& th.column-header-sortable': {\r\n      cursor: 'pointer',\r\n    },\r\n\r\n    '&.grid-cross-page-select-all': {\r\n      '& th': {\r\n        padding: '0',\r\n        border: 'none',\r\n      },\r\n    },\r\n    '& .glyphicon': {\r\n      fontFamily: iconFontFamily,\r\n    },\r\n    '& .glyphicon-arrow-up:before': {\r\n      content: '\"\\\\EE68\"',\r\n    },\r\n    '& .glyphicon-arrow-down:before': {\r\n      content: '\"\\\\EE69\"',\r\n    },\r\n\r\n    // this temporary style for grid POP before we got UI from designer\r\n    '& th span.pop-toggle-icon.clickable': {\r\n      height: '14px',\r\n      width: '14px',\r\n      border: '1px solid transparent',\r\n      display: 'inline-block',\r\n      float: 'none',\r\n      marginTop: '3px',\r\n\r\n      '&:hover': {\r\n        border: '1px solid black',\r\n      },\r\n\r\n      '& span': {\r\n        display: 'block',\r\n        fontSize: '10px',\r\n        fontFamily: iconFontFamily,\r\n        fontWeight: 'bold',\r\n        '-webkit-font-smoothing': 'antialiased',\r\n        height: '12px',\r\n        lineHeight: '12px',\r\n        textAlign: 'center',\r\n        width: '12px',\r\n\r\n        '&.pop-expand:before': {\r\n          content: '\"\\\\E710\"',\r\n          color: 'black',\r\n        },\r\n\r\n        '&.pop-collapse:before': {\r\n          content: '\"\\\\E738\"',\r\n          color: 'black',\r\n        },\r\n      },\r\n    },\r\n  },\r\n\r\n  '& tr.pop-enabled th.column-header.pop-column-header > div.column-header-container': {\r\n    display: 'inline-block',\r\n  },\r\n});\r\n","export const getSharedTableStyles = (components, { palette }) => ({\r\n  '&': {\r\n    borderLeft: 'none',\r\n    borderRight: 'none',\r\n    borderBottom: 'none',\r\n  },\r\n  '& .glyphicon': {\r\n    position: 'static',\r\n  },\r\n\r\n  '& .iconba': {\r\n    position: 'static',\r\n  },\r\n\r\n  '& .grid-disabled': {\r\n    color: palette.neutralSecondaryAlt,\r\n  },\r\n});\r\n","// Export themes here\r\nexport { ThemeFluent } from './theme-fluent';\r\nexport { DarkTheme } from './dark-theme';\r\n","import { createTheme, CommunicationColors, NeutralColors, SharedColors, Depths } from '@fluentui/react';\r\n\r\nexport const ThemeFluent = createTheme({\r\n  palette: {\r\n    neutralDark: NeutralColors.gray190,\r\n    neutralPrimary: NeutralColors.gray160,\r\n    neutralPrimaryAlt: NeutralColors.gray150,\r\n    neutralSecondary: NeutralColors.gray130,\r\n    neutralSecondaryAlt: NeutralColors.gray110,\r\n    neutralTertiary: NeutralColors.gray90,\r\n    neutralTertiaryAlt: NeutralColors.gray60,\r\n    neutralQuaternary: NeutralColors.gray50,\r\n    neutralQuaternaryAlt: NeutralColors.gray40,\r\n    neutralLight: NeutralColors.gray30,\r\n    neutralLighter: NeutralColors.gray20,\r\n    neutralLighterAlt: NeutralColors.gray10,\r\n    themeDark: CommunicationColors.shade20,\r\n    themeDarker: CommunicationColors.shade30,\r\n    themeDarkAlt: CommunicationColors.shade10,\r\n    themeLight: CommunicationColors.tint20,\r\n    themeLighter: CommunicationColors.tint30,\r\n    themeLighterAlt: CommunicationColors.tint40,\r\n    themePrimary: CommunicationColors.primary,\r\n    themeSecondary: CommunicationColors.tint10,\r\n    themeTertiary: '#71afe5',\r\n    // Shared Colors\r\n    red: SharedColors.red10,\r\n    redDark: SharedColors.red20,\r\n    black: '#000000',\r\n    white: '#ffffff',\r\n    // MS Ads\r\n    globalBackground: '#2f2f2f',\r\n    mainMenuHoverBackground: '#484644',\r\n  },\r\n  effects: {\r\n    roundedCorner2: '2px',\r\n    elevation4: Depths.depth4,\r\n    elevation8: Depths.depth8,\r\n    elevation16: Depths.depth16,\r\n    elevation64: Depths.depth64,\r\n  },\r\n});\r\n\r\nThemeFluent.iconFontFamily = 'MsAds MDL2 Assets';\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__66__;","import { createTheme, Depths } from '@fluentui/react';\r\n\r\nexport const DarkTheme = createTheme({\r\n  palette: {\r\n    themePrimary: '#88b0cf',\r\n    themeLighterAlt: '#050708',\r\n    themeLighter: '#161c21',\r\n    themeLight: '#29353e',\r\n    themeTertiary: '#526a7c',\r\n    themeSecondary: '#789bb6',\r\n    themeDarkAlt: '#93b7d3',\r\n    themeDark: '#a2c2da',\r\n    themeDarker: '#b8d1e4',\r\n    neutralLighterAlt: '#201f1e',\r\n    neutralLighter: '#2A2A29',\r\n    neutralLight: '#30302F',\r\n    neutralQuaternaryAlt: '#1c1b1b',\r\n    neutralQuaternary: '#1b1a19',\r\n    neutralTertiaryAlt: '#1a1918',\r\n    neutralTertiary: '#f5f9fd',\r\n    neutralSecondary: '#f6fafe',\r\n    neutralPrimaryAlt: '#f8fbfe',\r\n    neutralPrimary: '#eff6fc',\r\n    neutralDark: '#fbfdfe',\r\n    black: '#fdfeff',\r\n    white: '#201f1e',\r\n  },\r\n\r\n  effects: {\r\n    roundedCorner2: '2px',\r\n    elevation4: Depths.depth4,\r\n    elevation8: Depths.depth8,\r\n    elevation16: Depths.depth16,\r\n    elevation64: Depths.depth64,\r\n  },\r\n});\r\n\r\nDarkTheme.iconFontFamily = 'MsAds MDL2 Assets';\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__37__;","\r\n\r\nexport { singleton as PageReady } from './src/index';\r\n","import PageReady from './page-ready';\r\n\r\nexport const singleton = new PageReady();\r\n","import Promise from 'bluebird';\r\n\r\nconst GLOBAL_PAGE = '';\r\n\r\nexport default class PageReady {\r\n  /**\r\n   * Constructor\r\n  */\r\n  constructor() {\r\n    this.p$pagesReady = {};\r\n    this.resolvePageReadyCbs = {};\r\n  }\r\n\r\n  /**\r\n   * Mark the page as ready. This will resolve the promise\r\n   * and initialize all the delayed components.\r\n   * @param {String} pageName page name, default is global/any page\r\n   * @returns {void}\r\n  */\r\n  pageIsReady(pageName = GLOBAL_PAGE) {\r\n    this.lazyInitializePromise(pageName);\r\n    this.resolvePageReadyCbs[pageName]();\r\n\r\n    // Also mark the global page as ready if any page is ready\r\n    if (pageName !== GLOBAL_PAGE && this.resolvePageReadyCbs[GLOBAL_PAGE]) {\r\n      this.resolvePageReadyCbs[GLOBAL_PAGE]();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Returns a promise that will resolve when the page is ready.\r\n   * Listeners can use this function to delay execution until the page is ready.\r\n   * @param {String} pageName page name, default is global/any page\r\n   * @returns {Promise} - Promise that is resolved when the page is marked as ready.\r\n   */\r\n  afterPageReady(pageName = GLOBAL_PAGE) {\r\n    this.lazyInitializePromise(pageName);\r\n    return this.p$pagesReady[pageName];\r\n  }\r\n\r\n  /**\r\n * Lazily create the promise if it doesn't already exist\r\n * @private\r\n * @param {String} pageName page name, default is global/any page\r\n * @returns {void}\r\n */\r\n  lazyInitializePromise(pageName = GLOBAL_PAGE) {\r\n    if (this.p$pagesReady[pageName]) {\r\n      return;\r\n    }\r\n    this.p$pagesReady[pageName] = new Promise((res) => {\r\n      this.resolvePageReadyCbs[pageName] = res;\r\n    });\r\n\r\n    // Also initialize the global promise since it's tied to any page\r\n    if (pageName !== GLOBAL_PAGE && !this.p$pagesReady[GLOBAL_PAGE]) {\r\n      this.p$pagesReady[GLOBAL_PAGE] = new Promise((res) => {\r\n        this.resolvePageReadyCbs[GLOBAL_PAGE] = res;\r\n      });\r\n    }\r\n  }\r\n}\r\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"underscore\"), require(\"urijs\"), require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"underscore\", \"urijs\", \"jquery\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"underscore\"), require(\"urijs\"), require(\"jquery\")) : factory(root[\"underscore\"], root[\"urijs\"], root[\"jquery\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__7__, __WEBPACK_EXTERNAL_MODULE__10__, __WEBPACK_EXTERNAL_MODULE__99__) {\nreturn ","import getAriaConfig from './src/ariaConfig';\r\nimport campaignLogTableConfig from './src/log-table-configs/campaign';\r\nimport adInsightLogTableConfig from './src/log-table-configs/adinsight';\r\nimport { ContextProcessor } from './src/log-processors/context-processor';\r\nimport { DebugProcessor } from './src/log-processors/debug-processor';\r\nimport { PerfTimingProcessor } from './src/log-processors/perf-timing-processor';\r\nimport { BasicFormatter } from './src/log-formatters/basic-formatter';\r\nimport { ApiFormatter } from './src/log-formatters/api-formatter';\r\nimport { AdInsightOpportunityLogFormatter } from './src/log-formatters/adinsight-opportunity-log-formatter';\r\nimport { ReportingApiFormatter } from './src/log-formatters/reporting-api-formatter';\r\nimport { UetTagHelperFormatter } from './src/log-formatters/uettaghelper-formatter';\r\nimport { ImportApiFormatter } from './src/log-formatters/import-api-formatter';\r\nimport { ConsoleFormatter } from './src/log-formatters/console-formatter';\r\nimport { PerformanceLogsFormatter } from './src/log-formatters/perf-timing-formatter';\r\nimport { LogLevelFilter } from './src/log-filters/log-level-filter';\r\nimport { ApiFilter } from './src/log-filters/api-filter';\r\nimport { AdInsightOpportunityApiFilter } from './src/log-filters/adinsight-opportunity-api-filter';\r\nimport { ConsoleFilter } from './src/log-filters/console-filter';\r\nimport { UnloadLogFilter } from './src/log-filters/unload-log-filter';\r\nimport { PerformanceLogsFilter } from './src/log-filters/perf-timing-filter';\r\nimport { OdataErrorMapper } from './src/ajax-error-mappers/odata-error-mapper';\r\nimport { CampaignApiErrorMapper } from './src/ajax-error-mappers/campaignapi-error-mapper';\r\nimport { UrlErrorMapper } from './src/ajax-error-mappers/url-error-mapper';\r\nimport { isTestEnvironment } from './src/utilities/environment-helper';\r\nimport { retrieveLocalStorageLogs } from './src/local-storage-log-retriever';\r\nimport { odataErrorCodes, campaignApiErrorCodes, invalidDomains } from './src/utilities/default-error-codes';\r\n\r\nexport {\r\n  getAriaConfig,\r\n  campaignLogTableConfig,\r\n  adInsightLogTableConfig,\r\n  ContextProcessor,\r\n  DebugProcessor,\r\n  PerfTimingProcessor,\r\n  BasicFormatter,\r\n  ApiFormatter,\r\n  AdInsightOpportunityLogFormatter,\r\n  ReportingApiFormatter,\r\n  UetTagHelperFormatter,\r\n  ConsoleFormatter,\r\n  PerformanceLogsFormatter,\r\n  ImportApiFormatter,\r\n  LogLevelFilter,\r\n  ApiFilter,\r\n  AdInsightOpportunityApiFilter,\r\n  ConsoleFilter,\r\n  UnloadLogFilter,\r\n  PerformanceLogsFilter,\r\n  OdataErrorMapper,\r\n  CampaignApiErrorMapper,\r\n  UrlErrorMapper,\r\n  isTestEnvironment,\r\n  retrieveLocalStorageLogs,\r\n  odataErrorCodes,\r\n  campaignApiErrorCodes,\r\n  invalidDomains,\r\n};\r\n","import _ from 'underscore';\r\nimport { getDefaultConfig } from './default-config';\r\nimport { LoggingService } from './logging-service';\r\nimport { LogTransmitter } from './log-transmitter';\r\n\r\n/**\r\n * Class representing Instrumentation\r\n */\r\nexport class Instrumentation {\r\n  /**\r\n   * Create an instance of Instrumentation\r\n   * @param {object} config - should contain a config of loggers/processors/listeners:\r\n   * loggers - specify custom loggers to override or add to the default trace, perf, error loggers.\r\n   * processors - specify custom log processors to modify or enrich the logs.\r\n   * listeners - specify listeners to write logs to.\r\n   * isDebugMode - specify if it's in debug mode or not. Default to false. It will throw error\r\n   * if (scenario, activity) pair has already been registered before in debug mode\r\n   */\r\n  constructor(config = {}) {\r\n    this.setup(config);\r\n\r\n    // scenarioContext maintains the current scenario in use.\r\n    this.scenarioContext = {};\r\n\r\n    this.initTransmissionService(this.scenarioContext);\r\n\r\n    this.initLoggingService();\r\n  }\r\n\r\n  setup(config) {\r\n    const defaultConfig = getDefaultConfig();\r\n    this.loggers = _.defaults(config.loggers || {}, defaultConfig.loggers);\r\n    this.processors = _.defaults(config.processors || {}, defaultConfig.processors);\r\n    this.listeners = _.defaults(config.listeners || {}, defaultConfig.listeners);\r\n    this.isDebugMode = config.isDebugMode || defaultConfig.isDebugMode;\r\n\r\n    window.addEventListener('unload', () => this.stop());\r\n  }\r\n\r\n  stop() {\r\n    this.beforeStop();\r\n    this.logTransmitter.stop();\r\n  }\r\n\r\n  initTransmissionService(scenarioContext) {\r\n    this.logTransmitter = new LogTransmitter({\r\n      scenarioContext,\r\n      processors: this.processors,\r\n      listeners: this.listeners,\r\n    });\r\n    this.writeRawLog = rawLogs => this.logTransmitter.transmit(rawLogs);\r\n  }\r\n\r\n  initLoggingService() {\r\n    _.each(this.loggers, (logger) => {\r\n      logger.logTransmitter = this.logTransmitter; // eslint-disable-line no-param-reassign\r\n    });\r\n    this.loggingService = new LoggingService({\r\n      loggers: this.loggers,\r\n      isDebugMode: this.isDebugMode,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * adds specified scenarios on to the instrumentation instance\r\n   * @param {object} scenarioSchema - schema that specifies the scenarios to be added\r\n   * @returns {Instrumentation} - return self for chaining\r\n   */\r\n  addScenario(scenarioSchema) {\r\n    _.extend(this, this.loggingService.parseSchema(scenarioSchema));\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * add simple scenario and activity for one time use\r\n   * @param {object} scenarioContext - scenario context such as name, parentScenario\r\n   * @returns {object} - activity instance ready to call logger methods\r\n   * usage would be: instrumentation.createScenarioAndActivity(\"scenario\", \"activity\")\r\n   * DO NOT use this if the scenario is created multiple times, in which case\r\n   * the scenarioId would be different\r\n   *  .signal(\"something happened\")\r\n   */\r\n  createScenarioAndActivity(scenarioContext) {\r\n    const { parentScenario, scenarioName, activityName } = scenarioContext;\r\n\r\n    // build the scenario schema with activity\r\n    const schema = {\r\n      scenario: [\r\n        {\r\n          name: scenarioName,\r\n          value: scenarioName,\r\n          activity: activityName ? [\r\n            activityName,\r\n          ] : [],\r\n        },\r\n      ],\r\n    };\r\n    this.addScenario(schema);\r\n    const scenario = this[scenarioName].create(parentScenario);\r\n    const activity = activityName ? scenario[activityName].create() : undefined;\r\n    return {\r\n      scenario,\r\n      activity,\r\n    };\r\n  }\r\n\r\n  /**\r\n   * add simple scenario and activity for one time use\r\n   * @param {object} scenarioContext - scenario context such as name, parentScenario\r\n   * @returns {object} - scenario instance\r\n   */\r\n  createScenario(scenarioContext) {\r\n    return this.createScenarioAndActivity(scenarioContext).scenario;\r\n  }\r\n\r\n  /**\r\n   * method for custom logic to be run before the instrumentation service exits\r\n   * can be overridden\r\n   * @returns {undefined} - no returns\r\n   */\r\n  beforeStop() {\r\n    _.noop();\r\n  }\r\n\r\n  get ScenarioContext() {\r\n    return this.scenarioContext;\r\n  }\r\n}\r\n","import { TraceLogger } from './loggers/trace-logger';\r\nimport { PerfLogger } from './loggers/perf-logger';\r\nimport { ErrorLogger } from './loggers/error-logger';\r\nimport { AjaxLogger } from './loggers/ajax-logger';\r\nimport { ScenarioProcessor } from './processors/scenario-processor';\r\nimport { SubstrateLogger } from './loggers/substrate-logger';\r\n\r\nexport function getDefaultConfig() {\r\n  // default loggers\r\n  const traceLogger = new TraceLogger();\r\n  const perfLogger = new PerfLogger();\r\n  const errorLogger = new ErrorLogger();\r\n  const ajaxLogger = new AjaxLogger();\r\n  const substrateLogger = new SubstrateLogger();\r\n\r\n  // default processors\r\n  const scenarioProcessor = new ScenarioProcessor();\r\n\r\n  return {\r\n    isDebugMode: false,\r\n    loggers: {\r\n      traceLogger, errorLogger, perfLogger, ajaxLogger, substrateLogger,\r\n    },\r\n    processors: { scenarioProcessor },\r\n    listeners: {},\r\n  };\r\n}\r\n\r\n","import { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Default Trace Logger\r\n */\r\nexport class TraceLogger extends Logger {\r\n  /**\r\n   * trace - logs passed in args as trace logs\r\n   * @param {object} scenario - scenario of activity that invoked log method\r\n   * @param {object} activity - activity that invoked the log method\r\n   * @param {object} parentScenario - parent of the scenario\r\n   * @param {object} args - args passed in to the trace log method\r\n   * @returns {undefined} - no returns\r\n   */\r\n  trace(scenario, activity, parentScenario, [message, api, requestId, httpMethod, logLevel]) {\r\n    super.log({\r\n      api,\r\n      message,\r\n      requestId,\r\n      httpMethod,\r\n      timeStamp: getUtcTime(),\r\n      logCategory: constants.LOGCATEGORY.TRACE,\r\n      logLevel: logLevel || constants.LOGLEVEL.INFO,\r\n      entryType: constants.ENTRYTYPE.MESSAGE,\r\n      activity,\r\n      scenario,\r\n      parentScenario,\r\n    });\r\n  }\r\n\r\n  getLogMethods() {\r\n    return ['trace'];\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__29__;","export const constants = {\r\n  IMPACTUSER: {\r\n    True: true,\r\n    False: false,\r\n    NA: null,\r\n  },\r\n  LOGLEVEL: {\r\n    INFO: {\r\n      name: 'Info',\r\n      value: 0,\r\n    },\r\n    DEBUG: {\r\n      name: 'Debug',\r\n      value: 1,\r\n    },\r\n    VERBOSE: {\r\n      name: 'Verbose',\r\n      value: 2,\r\n    },\r\n  },\r\n  LOGCATEGORY: {\r\n    PERFORMANCE: 'ClientPerf',\r\n    ERROR: 'ApplicationErrorClientScript',\r\n    TRACE: 'ClientTrace',\r\n    SUBSTRATE: 'Substrate',\r\n  },\r\n  ENTRYTYPE: {\r\n    SCENARIO: 'Scenario',\r\n    ACTIVITY: 'Activity',\r\n    AJAX: 'Ajax',\r\n    AJAXRENDER: 'AjaxRender',\r\n    METHOD: 'Method',\r\n    MESSAGE: 'Message',\r\n  },\r\n};\r\n","/**\r\n * Base Logger\r\n */\r\nexport class Logger {\r\n  /**\r\n   * log - transmits logs to the log transmitter\r\n   * @param {object} rawLogs - raw logs to be transmitted\r\n   * @returns {undefined} - no returns\r\n   */\r\n  log(rawLogs) {\r\n    this.transmitter.transmit(rawLogs);\r\n  }\r\n\r\n  getLogMethods() {\r\n    throw new Error('Not Implemented');\r\n  }\r\n\r\n  set logTransmitter(logTransmitter) {\r\n    this.transmitter = logTransmitter;\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport { getUtcTime, getTimestamp } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Default Perf Logger\r\n */\r\nexport class PerfLogger extends Logger {\r\n  /**\r\n   * start - used to measure start of an activity\r\n   * @param {object} scenario - scenario of activity that invoked log method\r\n   * @param {object} activity - activity that invoked the log method\r\n   * @param {object} parentScenario - parent of the scenario\r\n   * @param {object} args - api of activity\r\n   * @returns {undefined} - no returns\r\n   */\r\n  start(scenario, activity, parentScenario, [api]) {\r\n    super.log({\r\n      api,\r\n      isMethodEnter: true,\r\n      timeStamp: getUtcTime(),\r\n      logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n      logLevel: constants.LOGLEVEL.INFO,\r\n      entryType: constants.ENTRYTYPE.ACTIVITY,\r\n      activity,\r\n      scenario,\r\n      parentScenario,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * stop - used to measure stop of an activity\r\n   * @param {object} scenario - scenario of activity that invoked log method\r\n   * @param {object} activity - activity that invoked the log method\r\n   * @param {object} parentScenario - parent of the scenario\r\n   * @param {object} args - result and api of activity\r\n   * @returns {undefined} - no returns\r\n   */\r\n  stop(scenario, activity, parentScenario, [result, api]) {\r\n    super.log({\r\n      api,\r\n      isMethodEnter: false,\r\n      timeStamp: getUtcTime(),\r\n      pass: _.isUndefined(result) ? true : result,\r\n      logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n      logLevel: constants.LOGLEVEL.INFO,\r\n      entryType: constants.ENTRYTYPE.ACTIVITY,\r\n      activity,\r\n      scenario,\r\n      parentScenario,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * monitor - can be used to monitor and measure the duration of a function\r\n   * @param {object} scenario - scenario of activity that invoked log method\r\n   * @param {object} activity - activity that invoked the log method\r\n   * @param {object} parentScenario - parent of the scenario\r\n   * @param {object} args - function that is to be monitored and duration measured\r\n   * @returns {undefined} - no returns\r\n   */\r\n  monitor(scenario, activity, parentScenario, [func, context]) {\r\n    const originalFunc = context[func];\r\n\r\n    if (!_.isFunction(originalFunc)) {\r\n      return;\r\n    }\r\n\r\n    context[func] = (...args) => { // eslint-disable-line no-param-reassign\r\n      const t0 = getTimestamp();\r\n\r\n      const result = originalFunc.apply(context, args);\r\n\r\n      const timeTaken = getTimestamp() - t0;\r\n\r\n      super.log({\r\n        api: originalFunc.name,\r\n        timeTaken,\r\n        timeStamp: getUtcTime(),\r\n        logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n        logLevel: constants.LOGLEVEL.INFO,\r\n        entryType: constants.ENTRYTYPE.METHOD,\r\n        activity,\r\n        scenario,\r\n        parentScenario,\r\n      });\r\n\r\n      return result;\r\n    };\r\n  }\r\n\r\n  /**\r\n   * monitorAsync - can be used to measure the duration of a promise\r\n   * @param {object} scenario - scenario of activity that invoked log method\r\n   * @param {object} activity - activity that invoked the log method\r\n   * @param {object} parentScenario - parent of the scenario\r\n   * @param {object} args - function that is async and returns a promise\r\n   * @returns {undefined} - returns a promise with perf markers\r\n   */\r\n  monitorAsync(scenario, activity, parentScenario, [promise]) {\r\n    const t0 = getTimestamp();\r\n\r\n    // log monitor start\r\n    super.log({\r\n      isMethodEnter: true,\r\n      timeStamp: getUtcTime(),\r\n      logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n      logLevel: constants.LOGLEVEL.INFO,\r\n      entryType: constants.ENTRYTYPE.METHOD,\r\n      activity,\r\n      scenario,\r\n      parentScenario,\r\n    });\r\n\r\n    const onPromiseDone = () => {\r\n      const timeTaken = getTimestamp() - t0;\r\n\r\n      // log monitor stop\r\n      super.log({\r\n        isMethodEnter: false,\r\n        timeTaken,\r\n        timeStamp: getUtcTime(),\r\n        logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n        logLevel: constants.LOGLEVEL.INFO,\r\n        entryType: constants.ENTRYTYPE.METHOD,\r\n        activity,\r\n        scenario,\r\n        parentScenario,\r\n      });\r\n    };\r\n\r\n    promise.then(onPromiseDone, onPromiseDone);\r\n    return promise;\r\n  }\r\n\r\n  /**\r\n   * perf - logs passed in args as perf logs\r\n   * @param {object} scenario - scenario of activity that invoked log method\r\n   * @param {object} activity - activity that invoked the log method\r\n   * @param {object} parentScenario - parent of the scenario\r\n   * @param {object} args - args passed in to the perf log method\r\n   * @returns {undefined} - no returns\r\n   */\r\n  perf(scenario, activity, parentScenario, [message, api]) {\r\n    super.log({\r\n      api,\r\n      message,\r\n      timeStamp: getUtcTime(),\r\n      logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n      logLevel: constants.LOGLEVEL.INFO,\r\n      entryType: constants.ENTRYTYPE.MESSAGE,\r\n      activity,\r\n      scenario,\r\n      parentScenario,\r\n    });\r\n  }\r\n\r\n  getLogMethods() {\r\n    return ['start', 'stop', 'monitor', 'monitorAsync', 'perf'];\r\n  }\r\n}\r\n","import { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/* eslint-disable max-len */\r\n\r\n/**\r\n * Default Error Logger\r\n */\r\nexport class ErrorLogger extends Logger {\r\n  /**\r\n   * error - logs passed in args as error logs\r\n   * @param {object} scenario - scenario of activity that invoked log method\r\n   * @param {object} activity - activity that invoked the log method\r\n   * @param {object} parentScenario - parent of the scenario\r\n   * @param {object} args - args passed in to the error log method\r\n   * @returns {undefined} - no returns\r\n   */\r\n  error(scenario, activity, parentScenario, [message, api, requestId, impactUser, httpMethod, logLevel]) {\r\n    super.log({\r\n      api,\r\n      message,\r\n      requestId,\r\n      impactUser: impactUser || constants.IMPACTUSER.NA,\r\n      httpMethod,\r\n      timeStamp: getUtcTime(),\r\n      logCategory: constants.LOGCATEGORY.ERROR,\r\n      logLevel: logLevel || constants.LOGLEVEL.INFO,\r\n      entryType: constants.ENTRYTYPE.MESSAGE,\r\n      activity,\r\n      scenario,\r\n      parentScenario,\r\n    });\r\n  }\r\n\r\n  getLogMethods() {\r\n    return ['error'];\r\n  }\r\n}\r\n","import { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Ajax Logger - internal logger that can used by for logging Ajax calls\r\n */\r\nexport class AjaxLogger extends Logger {\r\n  /**\r\n   * ajax - logs passed in args as ajax logs\r\n   * @param {object} scenario - scenario of activity that invoked log method\r\n   * @param {object} activity - activity that invoked the log method\r\n   * @param {object} parentScenario - parent of the scenario\r\n   * @param {object} args - args passed in to the ajax log method\r\n   * @returns {undefined} - no returns\r\n   */\r\n  ajax(scenario, activity, parentScenario, [requestId, api,\r\n    isMethodEnter, httpMethod, timeTaken, pass, message, entityCount, includeRendering]) {\r\n    super.log({\r\n      requestId,\r\n      api,\r\n      isMethodEnter,\r\n      httpMethod,\r\n      timeTaken,\r\n      pass,\r\n      message,\r\n      entityCount,\r\n      entryType: includeRendering === true ?\r\n        constants.ENTRYTYPE.AJAXRENDER :\r\n        constants.ENTRYTYPE.AJAX,\r\n      timeStamp: getUtcTime(),\r\n      logLevel: constants.LOGLEVEL.INFO,\r\n      logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n      activity,\r\n      scenario,\r\n      parentScenario,\r\n    });\r\n  }\r\n\r\n  getLogMethods() {\r\n    return ['ajax'];\r\n  }\r\n}\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * ScenarioProcessor class responsible for enriching logs with scenario/activity information\r\n */\r\nexport class ScenarioProcessor {\r\n  process(rawLogs) {\r\n    if (!_.has(rawLogs, 'scenario')) {\r\n      return rawLogs;\r\n    }\r\n\r\n    let logs = _.extend(rawLogs, {\r\n      activityId: rawLogs.activity.id,\r\n      activityName: rawLogs.activity.value,\r\n      scenarioId: rawLogs.scenario.id,\r\n      scenarioName: rawLogs.scenario.value,\r\n      parentScenarioId: rawLogs.parentScenario && rawLogs.parentScenario.id,\r\n      parentScenarioName: rawLogs.parentScenario && rawLogs.parentScenario.value,\r\n    });\r\n\r\n    // drop activity/scenario/parentScenarioScenario since we've already extracted the needed info\r\n    logs = _.omit(logs, 'activity', 'scenario', 'parentScenario');\r\n\r\n    return logs;\r\n  }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Substrate Logger to log events for user behavior analysis\r\n * Key data entries include\r\n * Sn: scenario name\r\n * SceId: scenario id, this is re-generated whenever a scenario is created\r\n * An: activity name\r\n * ActId: activity id, this is re-generated when an activity is created\r\n * Mes: a custom message for the signal\r\n * Dur: time taken for the signal\r\n */\r\nexport class SubstrateLogger extends Logger {\r\n  /**\r\n   * startSignal - used to measure start of a signal\r\n   * @param {object} scenario - scenario that defines the activity\r\n   * @param {object} activity - activity that invoked the log method\r\n   * @returns {undefined} - no returns\r\n   */\r\n  startSignal(scenario, activity) {\r\n    if (!scenario || !activity) {\r\n      return;\r\n    }\r\n    activity.startTime = new Date();\r\n  }\r\n\r\n  /**\r\n   * stopSignal - used to measure stop of an activity\r\n   * @param {object} scenario - scenario of activity that invoked log method\r\n   * @param {object} activity - activity that invoked the log method\r\n   * @param {object} parentScenario - parent of the scenario\r\n   * @param {boolean} trackDuration - indicate if the signal needs to track time taken\r\n   * @param {object} message - a custom message for the activity itself\r\n   * @returns {undefined} - no returns\r\n   */\r\n  stopSignal(scenario, activity, parentScenario, [message, api, trackDuration = true]) {\r\n    if (!scenario || !activity || (trackDuration && !activity.startTime)) {\r\n      return;\r\n    }\r\n\r\n    const endTime = new Date();\r\n    super.log({\r\n      timeStamp: trackDuration ? activity.startTime.toJSON() : endTime.toJSON(),\r\n      timeTaken: trackDuration ? (endTime - activity.startTime) : 0,\r\n      logCategory: constants.LOGCATEGORY.SUBSTRATE,\r\n      logLevel: constants.LOGLEVEL.INFO,\r\n      entryType: constants.ENTRYTYPE.ACTIVITY,\r\n      activity,\r\n      scenario,\r\n      parentScenario,\r\n      message,\r\n      api,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * signal - an atomic signal that has start and stop paired automatically\r\n   * @param {object} scenario - scenario of activity that invoked log method\r\n   * @param {object} activity - activity that invoked the log method\r\n   * @param {object} parentScenario - parent of the scenario\r\n   * @param {object} message - a custom message for the activity itself\r\n   * @returns {undefined} - no returns\r\n   */\r\n  signal(scenario, activity, parentScenario, [message, api]) {\r\n    this.stopSignal(scenario, activity, parentScenario, [message, api, false]);\r\n  }\r\n\r\n  /**\r\n   * withSignalSync - caller provides a function\r\n   * start and stop are measure at start and stop of the function\r\n   * @param {object} scenario - scenario of activity that invoked log method\r\n   * @param {object} activity - activity that invoked the log method\r\n   * @param {object} parentScenario - parent of the scenario\r\n   * @param {object} action - caller provided function as the signal\r\n   * action may return message as custom message\r\n   * @returns {undefined} - no returns\r\n   */\r\n  withSignalSync(scenario, activity, parentScenario, [action]) {\r\n    this.startSignal(scenario, activity);\r\n    const actionReturn = action();\r\n    this.stopSignal(\r\n      scenario,\r\n      activity,\r\n      parentScenario,\r\n      actionReturn ? [actionReturn.message, actionReturn.api] : []\r\n    );\r\n    return actionReturn;\r\n  }\r\n\r\n  /**\r\n   * withSignalAsync - async version of withSignalAsync, caller provides a promise\r\n   * start and stop are measure at start and stop of the prmoise\r\n   * @param {object} scenario - scenario of activity that invoked log method\r\n   * @param {object} activity - activity that invoked the log method\r\n   * @param {object} parentScenario - parent of the scenario\r\n   * @param {object} prmoise - caller provided promise as the signal\r\n   * @returns {undefined} - no returns\r\n   */\r\n  withSignalAsync(scenario, activity, parentScenario, [promise]) {\r\n    this.startSignal(scenario, activity);\r\n    const onPromiseDone = (promiseReturn) => {\r\n      this.stopSignal(\r\n        scenario,\r\n        activity,\r\n        parentScenario,\r\n        promiseReturn ? [promiseReturn.message, promiseReturn.api] : []\r\n      );\r\n    };\r\n\r\n    promise.then(onPromiseDone, onPromiseDone);\r\n    return promise;\r\n  }\r\n\r\n  getLogMethods() {\r\n    return ['startSignal', 'stopSignal', 'signal', 'withSignalSync', 'withSignalAsync'];\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport { ScenarioFactory } from './scenario-factory';\r\n\r\n/**\r\n * LoggingService class responsible for setting up scenarioFactories\r\n */\r\nexport class LoggingService {\r\n  /**\r\n   * @param {object} options - contains the loggers/debugMode to be used\r\n   */\r\n  constructor(options) {\r\n    this.loggers = options.loggers;\r\n    this.isDebugMode = options.isDebugMode;\r\n    // Record (scenario, activity) map for duplication check in debug mode\r\n    this.registry = this.isDebugMode ? {} : undefined;\r\n  }\r\n\r\n  checkSchemaDuplication(scenarios) {\r\n    /* eslint-disable no-restricted-syntax */\r\n    if (this.isDebugMode && this.registry !== undefined) {\r\n      for (const scenario of scenarios) {\r\n        const { name: scenarioName, activity: activities } = scenario;\r\n        // eslint-disable-next-line no-undef\r\n        this.registry[scenarioName] = this.registry[scenarioName] || new Set();\r\n\r\n        for (const { name: activityName } of activities) {\r\n          if (this.registry[scenarioName].has(activityName)) {\r\n            throw new Error(`[Debug] Scenario: ${scenarioName} Activity: ${activityName} already registered.`);\r\n          }\r\n          this.registry[scenarioName].add(activityName);\r\n        }\r\n      }\r\n    }\r\n    /* eslint-enable no-restricted-syntax */\r\n  }\r\n\r\n  parseSchema(scenarioSchema) {\r\n    const scenarios = scenarioSchema.scenario;\r\n    this.checkSchemaDuplication(scenarios);\r\n    const scenarioFactories = {};\r\n    _.each(scenarios, (scenario) => {\r\n      scenarioFactories[scenario.name] = new ScenarioFactory(scenario, this.loggers);\r\n    });\r\n    return scenarioFactories;\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\nimport { ActivityFactory } from './activity-factory';\r\n\r\n/**\r\n * Scenario class to create an instance of a Scenario\r\n */\r\nclass Scenario {\r\n  constructor(scenarioSchema, loggers, parentScenario) {\r\n    this.value = scenarioSchema.value;\r\n    this.name = scenarioSchema.name;\r\n    this.id = generateGuid();\r\n    this.setting = scenarioSchema.setting;\r\n    this.loggers = loggers;\r\n    this.parentScenario = parentScenario;\r\n\r\n    const activities = scenarioSchema.activity;\r\n    _.each(activities, (activity) => {\r\n      this[(typeof activity === 'string') ? activity : activity.name] = new ActivityFactory(this, activity, loggers, parentScenario);\r\n    });\r\n  }\r\n\r\n  createActivity(activityName) {\r\n    return new ActivityFactory(this, activityName, this.loggers, this.parentScenario).create();\r\n  }\r\n}\r\n\r\n/**\r\n* ScenarioFactory class responsible for creating Scenario\r\n*/\r\nexport class ScenarioFactory {\r\n  /**\r\n   * @param {object} scenarioSchema - schema of scenario to be created\r\n   * @param {object} loggers - available loggers\r\n   */\r\n  constructor(scenarioSchema, loggers) {\r\n    this.scenarioSchema = scenarioSchema;\r\n    this.loggers = loggers;\r\n  }\r\n\r\n  create(parentScenario) {\r\n    return new Scenario(this.scenarioSchema, this.loggers, parentScenario);\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\n\r\n/**\r\n * Activity class to create an instance of an Activity\r\n */\r\nclass Activity {\r\n  constructor(scenario, activitySchema, loggers, parentScenario) {\r\n    const simpleActivity = (typeof activitySchema === 'string');\r\n    this.name = simpleActivity ? activitySchema : activitySchema.name;\r\n    this.value = simpleActivity ? activitySchema : activitySchema.value;\r\n    this.setting = simpleActivity ? undefined : activitySchema.setting;\r\n    this.id = generateGuid();\r\n\r\n    // Add logger methods on the activity\r\n    _.each(loggers, (logger) => {\r\n      const logMethods = logger.getLogMethods();\r\n      _.each(logMethods, (logMethod) => {\r\n        this[logMethod] = (...args) => logger[logMethod](scenario, this, parentScenario, args);\r\n      });\r\n    });\r\n  }\r\n}\r\n\r\n/**\r\n * ActivityFactory class responsible for creating Activity\r\n */\r\nexport class ActivityFactory {\r\n  /**\r\n   * @param {object} scenario - scenario the activity belongs to\r\n   * @param {object} activitySchema - schema of scenario to be created\r\n   * @param {object} loggers - available loggers\r\n   * @param {object} parentScenario - parentScenario of the scenario\r\n   */\r\n  constructor(scenario, activitySchema, loggers, parentScenario) {\r\n    this.scenario = scenario;\r\n    this.activitySchema = activitySchema;\r\n    this.parentScenario = parentScenario;\r\n    this.loggers = loggers;\r\n  }\r\n\r\n  create() {\r\n    return new Activity(this.scenario, this.activitySchema, this.loggers, this.parentScenario);\r\n  }\r\n}\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * LogTransmitter class responsible for transmitting logs to listeners\r\n */\r\nexport class LogTransmitter {\r\n  /**\r\n   * @param {object} options - has listeners, optional processors and scenarioContext\r\n   */\r\n  constructor(options = {}) {\r\n    this.listeners = options.listeners;\r\n    this.processors = options.processors;\r\n    this.scenarioContext = options.scenarioContext;\r\n  }\r\n\r\n  /**\r\n   * Updates shared scenario context every time we write, so it can be read(as parentScenario)\r\n   * by internal activities when writing logs\r\n   * @param {object} rawLogs - the raw logs being transmitted to the listeners\r\n   * @returns {undefined} - no returns\r\n   */\r\n  updateScenarioContext(rawLogs) {\r\n    // Scenario is marked hidden for non user defined scenarios\r\n    const isHiddenScenario = _.result(rawLogs.scenario.setting, 'hidden');\r\n    if (!isHiddenScenario) {\r\n      this.scenarioContext.id = rawLogs.scenario.id;\r\n      this.scenarioContext.value = rawLogs.scenario.value;\r\n    }\r\n  }\r\n\r\n  transmit(rawLogs) {\r\n    if (this.stopped) {\r\n      return;\r\n    }\r\n\r\n    if (_.has(rawLogs, 'scenario')) {\r\n      this.updateScenarioContext(rawLogs);\r\n    }\r\n\r\n    // Pass the rawLogs through each procesor to enrich them\r\n    let processedLogs = rawLogs;\r\n    _.each(this.processors, (processor) => {\r\n      processedLogs = processor.process(processedLogs);\r\n    });\r\n\r\n    _.each(this.listeners, listener => listener.write(processedLogs));\r\n  }\r\n\r\n  /**\r\n   * Stop the log transmitter service by tearing down the listeners\r\n   * @returns {undefined} - no returns\r\n   */\r\n  stop() {\r\n    _.each(this.listeners, (listener) => {\r\n      listener.teardown();\r\n    });\r\n    this.stopped = true;\r\n  }\r\n}\r\n","export const Mode = {\r\n  Expanded: 'expanded',\r\n  Collapsed: 'collapsed',\r\n  Hidden: 'hidden',\r\n};\r\n","import _ from 'underscore';\r\nimport { Mode } from './mode';\r\n\r\n// these components have logic themselves to dynamically change layout\r\nconst dynamicComponents = {\r\n  topBanner: {\r\n    mode: Mode.Collapsed,\r\n  },\r\n  promotionBanner: {\r\n    mode: Mode.Collapsed,\r\n  },\r\n};\r\n\r\nconst staticComponents = {\r\n  header: {\r\n    mode: Mode.Collapsed,\r\n  },\r\n  panelContainer: {\r\n    mode: Mode.Collapsed,\r\n  },\r\n  nav: {\r\n    mode: Mode.Expanded,\r\n  },\r\n  menu: {\r\n    mode: Mode.Expanded,\r\n  },\r\n  status: {\r\n    mode: Mode.Expanded,\r\n  },\r\n  tab: {\r\n    mode: Mode.Collapsed,\r\n  },\r\n  subTab: {\r\n    mode: Mode.Hidden,\r\n  },\r\n  content: {\r\n    mode: Mode.Expanded,\r\n  },\r\n};\r\n\r\nconst base = { ...staticComponents, ...dynamicComponents };\r\n\r\nconst immersive = _.defaults({\r\n  nav: {\r\n    mode: Mode.Collapsed,\r\n  },\r\n}, staticComponents);\r\n\r\nconst fullScreen = _.defaults({\r\n  nav: {\r\n    mode: Mode.Hidden,\r\n  },\r\n  menu: {\r\n    mode: Mode.Hidden,\r\n  },\r\n  status: {\r\n    mode: Mode.Hidden,\r\n  },\r\n  tab: {\r\n    mode: Mode.Hidden,\r\n  },\r\n}, staticComponents);\r\n\r\nconst withoutDate = {\r\n  tab: {\r\n    mode: Mode.Collapsed,\r\n    showDatePicker: false,\r\n  },\r\n};\r\n\r\nconst withDisabledDate = {\r\n  tab: {\r\n    mode: Mode.Collapsed,\r\n    showDisabledDatePicker: true,\r\n    showDatePicker: false,\r\n  },\r\n};\r\n\r\nconst withHistoryButton = {\r\n  tab: {\r\n    mode: Mode.Collapsed,\r\n    showDatePicker: false,\r\n    showHistoryButton: true,\r\n  },\r\n};\r\n\r\nconst dateWithoutCompare = {\r\n  tab: {\r\n    mode: Mode.Collapsed,\r\n    disableCompare: true,\r\n  },\r\n};\r\n\r\nconst fullScreenWithSummaryBar = _.defaults({\r\n  nav: {\r\n    mode: Mode.Hidden,\r\n  },\r\n  menu: {\r\n    mode: Mode.Hidden,\r\n  },\r\n  tab: {\r\n    mode: Mode.Hidden,\r\n  },\r\n}, staticComponents);\r\n\r\nconst fullScreenWithSummaryBarAndTab = _.defaults({\r\n  nav: {\r\n    mode: Mode.Hidden,\r\n  },\r\n  menu: {\r\n    mode: Mode.Hidden,\r\n  },\r\n}, staticComponents);\r\n\r\nconst withoutNav = _.defaults({\r\n  nav: {\r\n    mode: Mode.Hidden,\r\n  },\r\n}, staticComponents);\r\n\r\nconst accountSummary = {\r\n  nav: {\r\n    mode: Mode.Hidden,\r\n  },\r\n};\r\n\r\nconst accountSummaryWithoutDate = {\r\n  ...accountSummary,\r\n  ...withoutDate,\r\n};\r\n\r\nconst withMenuOnly = {\r\n  nav: {\r\n    mode: Mode.Hidden,\r\n  },\r\n  tab: {\r\n    mode: Mode.Hidden,\r\n  },\r\n};\r\n\r\nconst withoutMenu = {\r\n  menu: {\r\n    mode: Mode.Hidden,\r\n  },\r\n};\r\n\r\nconst withSingleTab = {\r\n  nav: {\r\n    mode: Mode.Hidden,\r\n  },\r\n  tab: {\r\n    singleTabMode: true,\r\n  },\r\n};\r\n\r\nconst withCollapsedMenuOnly = _.defaults({\r\n  nav: {\r\n    // Main menu\r\n    mode: Mode.Collapsed,\r\n  },\r\n  menu: {\r\n    // Page menu\r\n    mode: Mode.Hidden,\r\n  },\r\n  status: {\r\n    // Top bar containing 'Back' button and page title\r\n    mode: Mode.Hidden,\r\n  },\r\n  tab: {\r\n    // Horizontal tabs on top of page bearing page titles\r\n    mode: Mode.Hidden,\r\n    showDatePicker: false,\r\n  },\r\n}, staticComponents);\r\n\r\nconst withCollapsedMenuAndNav = _.defaults({\r\n  nav: {\r\n    // Main menu\r\n    mode: Mode.Collapsed,\r\n  },\r\n  menu: {\r\n    // Page menu\r\n    mode: Mode.Expanded,\r\n  },\r\n  status: {\r\n    // Top bar containing 'Back' button and page title\r\n    mode: Mode.Expanded,\r\n  },\r\n  tab: {\r\n    // Horizontal tabs on top of page bearing page titles\r\n    mode: Mode.Hidden,\r\n    showDatePicker: false,\r\n  },\r\n}, staticComponents);\r\n\r\nconst withTabAndSubTab = {\r\n  tab: {\r\n    mode: Mode.Collapsed,\r\n  },\r\n  subTab: {\r\n    mode: Mode.Expanded,\r\n  },\r\n};\r\n\r\nconst signupScreen = _.defaults({\r\n  header: {\r\n    mode: Mode.Expanded,\r\n  },\r\n  nav: {\r\n    mode: Mode.Hidden,\r\n  },\r\n  menu: {\r\n    mode: Mode.Hidden,\r\n  },\r\n  status: {\r\n    mode: Mode.Hidden,\r\n  },\r\n  tab: {\r\n    mode: Mode.Hidden,\r\n  },\r\n}, base);\r\n\r\nexport const layoutConfigs = {\r\n  default: base,\r\n  immersive,\r\n  fullScreen,\r\n  withoutDate,\r\n  withDisabledDate,\r\n  withoutNav,\r\n  withSingleTab,\r\n  fullScreenWithSummaryBar,\r\n  fullScreenWithSummaryBarAndTab,\r\n  accountSummary,\r\n  accountSummaryWithoutDate,\r\n  withMenuOnly,\r\n  withCollapsedMenuOnly,\r\n  withCollapsedMenuAndNav,\r\n  withoutMenu,\r\n  dateWithoutCompare,\r\n  withTabAndSubTab,\r\n  withHistoryButton,\r\n  signupScreen,\r\n};\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport { layoutConfigs } from './layout-configs';\r\n\r\nexport const LayoutContext = React.createContext({\r\n  config: layoutConfigs.default,\r\n  change: _.noop,\r\n});\r\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}","import _ from 'underscore';\r\nimport { Constants } from '@bingads-webui-theme-2018/theme-fluent';\r\n\r\nconst { ZIndexShellComponents } = Constants;\r\n\r\nconst shared = {\r\n  position: 'absolute',\r\n  display: 'block',\r\n};\r\n\r\nconst hidden = _.defaults({\r\n  display: 'none',\r\n}, shared);\r\n\r\nconst header = {\r\n  expanded: _.defaults({\r\n    get height() {\r\n      return window.surveyHeight + 60 || 60;\r\n    },\r\n    right: 0,\r\n    zIndex: ZIndexShellComponents.Header,\r\n  }, shared),\r\n  collapsed: _.defaults({\r\n    height: 60,\r\n    right: 0,\r\n    zIndex: ZIndexShellComponents.Header,\r\n  }, shared),\r\n  hidden,\r\n};\r\n\r\nconst panelContainer = {\r\n  expanded: _.defaults({\r\n    right: 0,\r\n    bottom: 0,\r\n    zIndex: ZIndexShellComponents.Panel,\r\n  }, shared),\r\n  hidden,\r\n  collapsed: hidden,\r\n};\r\n\r\nconst nav = {\r\n  expanded: _.defaults({\r\n    width: 180,\r\n    bottom: 0,\r\n    zIndex: ZIndexShellComponents.Nav,\r\n  }, shared),\r\n  collapsed: _.defaults({\r\n    width: 36,\r\n    bottom: 0,\r\n    zIndex: ZIndexShellComponents.Nav,\r\n  }, shared),\r\n  hidden,\r\n};\r\n\r\nconst content = {\r\n  expanded: _.defaults({\r\n    right: 0,\r\n    bottom: 0,\r\n    display: 'flex',\r\n    flexDirection: 'column',\r\n    zIndex: ZIndexShellComponents.Content,\r\n  }, shared),\r\n};\r\n\r\nconst topBanner = {\r\n  expanded: _.defaults({\r\n    height: 37,\r\n    right: 0,\r\n    display: 'block',\r\n    zIndex: ZIndexShellComponents.TopBanner,\r\n  }, shared),\r\n  hidden,\r\n  collapsed: hidden,\r\n};\r\n\r\nconst promotionBanner = {\r\n  expanded: _.defaults({\r\n    height: 60,\r\n    right: 0,\r\n    zIndex: ZIndexShellComponents.PromotionBanner,\r\n  }, shared),\r\n  hidden,\r\n  collapsed: hidden,\r\n};\r\n\r\nconst status = {\r\n  expanded: _.defaults({\r\n    height: 45,\r\n    right: 0,\r\n    zIndex: ZIndexShellComponents.Status,\r\n  }, shared),\r\n  hidden,\r\n};\r\n\r\nconst menu = {\r\n  expanded: _.defaults({\r\n    width: 164,\r\n    bottom: 0,\r\n    zIndex: ZIndexShellComponents.Menu,\r\n  }, shared),\r\n  hidden,\r\n  hotelCenterMenu: cfg => ({\r\n    ...cfg,\r\n    width: 180,\r\n  }),\r\n};\r\n\r\nconst tab = {\r\n  optimizationScore: _.defaults({\r\n    height: 139,\r\n    right: 0,\r\n    zIndex: ZIndexShellComponents.Tab,\r\n  }, shared),\r\n  expanded: _.defaults({\r\n    height: 72,\r\n    right: 0,\r\n    zIndex: ZIndexShellComponents.Tab,\r\n  }, shared),\r\n  collapsed: _.defaults({\r\n    height: 58,\r\n    right: 0,\r\n    zIndex: ZIndexShellComponents.Tab,\r\n  }, shared),\r\n  hidden,\r\n  /*\r\n   * advanced processor to handle config like below:\r\n   * {\r\n   *   tab: {\r\n   *     mode: 'collapsed' or 'expanded',\r\n   *     showExperimentScoreCard: true,\r\n   *   },\r\n   * }\r\n   * For more details, see ./styles-container.js\r\n   */\r\n  showExperimentScoreCard: cfg => ({\r\n    ...cfg,\r\n    height: cfg.height + 176,\r\n  }),\r\n};\r\n\r\nconst subTab = {\r\n  expanded: _.defaults({\r\n    height: 58,\r\n    right: 0,\r\n    zIndex: ZIndexShellComponents.SubTab,\r\n  }, shared),\r\n  hidden,\r\n};\r\n\r\nexport const components = {\r\n  header,\r\n  panelContainer,\r\n  topBanner,\r\n  promotionBanner,\r\n  nav,\r\n  status,\r\n  menu,\r\n  tab,\r\n  subTab,\r\n  content,\r\n};\r\n\r\nexport const names = _.mapObject(components, (value, name) => name);\r\n","/* eslint-disable max-len */\r\nimport _ from 'underscore';\r\nimport { jss } from 'react-jss';\r\nimport { components, names } from './components';\r\n\r\nconst calcQueue = [\r\n  names.header,\r\n  names.panelContainer,\r\n  names.nav,\r\n  names.content,\r\n];\r\n\r\nconst getSelection = config => _.mapObject(config, ({ mode, ...advancedOptions }, key) => {\r\n  let result = _.result(components[key], mode, {});\r\n\r\n  // i.e. advancedOptions = { showExperimentScoreCard: true }\r\n  _.each(advancedOptions, (advancedOptionValue, advancedOptionName) => {\r\n    const advancedProcessor = components[key][advancedOptionName];\r\n    if (advancedOptionValue && _.isFunction(advancedProcessor)) {\r\n      result = advancedProcessor(result);\r\n    }\r\n  });\r\n\r\n  return result;\r\n});\r\n\r\nexport class StylesContainer {\r\n  constructor(config) {\r\n    const selected = getSelection(config);\r\n    this.styles = _.mapObject(selected, (item, key) =>\r\n      jss.createStyleSheet({ [key]: style => style }, { link: true }).attach());\r\n    this.update(config);\r\n  }\r\n\r\n  update(config) {\r\n    const selected = getSelection(config);\r\n    const startPos = { top: 0, left: 0 };\r\n\r\n    _.each(calcQueue, (key) => {\r\n      const component = selected[key];\r\n      this.styles[key].update(_.extend(component, startPos));\r\n      startPos.top += _.result(component, 'height', 0);\r\n      startPos.left += _.result(component, 'width', 0);\r\n    });\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport { merge, cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { layoutConfigs } from './layout-configs';\r\nimport { LayoutContext } from './layout-context';\r\nimport { StylesContainer } from './styles-container';\r\nimport { names } from './components';\r\nimport { Mode } from './mode';\r\n\r\nexport class LayoutContainer extends React.PureComponent {\r\n  static propTypes = {\r\n    children: PropTypes.node.isRequired,\r\n    persistConfig: PropTypes.objectOf(PropTypes.shape({\r\n      mode: PropTypes.oneOf(_.values(Mode)),\r\n    })),\r\n    pageConfig: PropTypes.objectOf(PropTypes.shape({\r\n      mode: PropTypes.oneOf(_.values(Mode)),\r\n    })),\r\n    controlledByProps: PropTypes.bool,\r\n  };\r\n\r\n  static defaultProps = {\r\n    persistConfig: layoutConfigs.default,\r\n    pageConfig: layoutConfigs.default,\r\n    controlledByProps: false,\r\n  };\r\n\r\n  constructor(props) {\r\n    super(props);\r\n\r\n    this.stylesContainer = new StylesContainer(props.persistConfig);\r\n    this.state = {\r\n      persistConfig: props.persistConfig,\r\n      pageConfig: props.pageConfig,\r\n      controlledByProps: props.controlledByProps,\r\n    };\r\n  }\r\n\r\n  static getDerivedStateFromProps(nextProps, prevState) {\r\n    if (!prevState.controlledByProps) {\r\n      return null;\r\n    }\r\n    if (prevState.ownUpdate) {\r\n      // getDerivedStateFromProps is triggered before each render.\r\n      // need to ensure that we dont override changes from its own update\r\n      return { ownUpdate: false };\r\n    } else if (!_.isEqual(nextProps.pageConfig, prevState.pageConfig)) {\r\n      return { pageConfig: nextProps.pageConfig };\r\n    }\r\n    return null;\r\n  }\r\n\r\n  componentDidUpdate(prevProps, prevState) {\r\n    if (!_.isEqual(this.state.pageConfig, prevState.pageConfig)) {\r\n      this.updatePage();\r\n    }\r\n  }\r\n\r\n  changeLayout = (\r\n    updates,\r\n    isPageConfig,\r\n    isPageConfigPartialUpdate = false,\r\n    afterChangeLayout = _.noop\r\n  ) => {\r\n    if (_.find(updates, (item, key) => !_.has(names, key))) {\r\n      throw new Error('Invalid layout configs');\r\n    }\r\n\r\n    if (isPageConfig) {\r\n      this.setState((state) => {\r\n        const pageConfig = isPageConfigPartialUpdate ?\r\n          merge(cloneDeep(state.pageConfig), updates) :\r\n          merge(cloneDeep(state.persistConfig), updates);\r\n        return {\r\n          pageConfig: _.isEqual(pageConfig, state.pageConfig) ? state.pageConfig : pageConfig,\r\n          ownUpdate: true,\r\n        };\r\n      }, () => {\r\n        this.updatePage(afterChangeLayout);\r\n      });\r\n    } else {\r\n      this.setState((state) => {\r\n        const persistConfig = merge(cloneDeep(state.persistConfig), updates);\r\n        const pageConfig = merge(cloneDeep(state.pageConfig), updates);\r\n        return {\r\n          persistConfig: _.isEqual(persistConfig, state.persistConfig) ?\r\n            state.persistConfig :\r\n            persistConfig,\r\n          pageConfig: _.isEqual(pageConfig, state.pageConfig) ? state.pageConfig : pageConfig,\r\n          ownUpdate: true,\r\n        };\r\n      }, () => {\r\n        this.updatePage(afterChangeLayout);\r\n      });\r\n    }\r\n  };\r\n\r\n  updatePage(afterChangeLayout = _.noop) {\r\n    this.stylesContainer.update(this.state.pageConfig);\r\n    afterChangeLayout();\r\n  }\r\n\r\n  render() {\r\n    return (\r\n      <LayoutContext.Provider value={{\r\n        config: this.state.pageConfig,\r\n        styles: this.stylesContainer.styles,\r\n        change: this.changeLayout,\r\n      }}\r\n      >\r\n        {this.props.children}\r\n      </LayoutContext.Provider>\r\n    );\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { LayoutContext } from './layout-context';\r\n\r\nexport const Layout = (props) => {\r\n  const Component = props.component;\r\n  const itemName = props.item;\r\n  const {\r\n    config, styles, change: changeLayout,\r\n  } = useContext(LayoutContext);\r\n\r\n  const componentProps = { ...(_.result(config, itemName)), changeLayout };\r\n  const { classes } = _.result(styles, itemName);\r\n\r\n  return (\r\n    <div className={`app-shell-${itemName} ${_.result(classes, itemName)}`}>\r\n      <Component {..._.defaults(componentProps, props)} />\r\n    </div>\r\n  );\r\n};\r\n\r\nLayout.propTypes = {\r\n  component: PropTypes.elementType.isRequired,\r\n  item: PropTypes.string.isRequired,\r\n};\r\n","/* eslint-disable react/forbid-prop-types */\r\n/* eslint-disable max-len */\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { LayoutContext } from './layout-context';\r\nimport { layoutConfigs } from './layout-configs';\r\n\r\nclass LayoutHoC extends React.Component {\r\n  static propTypes = {\r\n    componentProps: PropTypes.objectOf(PropTypes.any).isRequired,\r\n    changeLayout: PropTypes.func.isRequired,\r\n    component: PropTypes.elementType.isRequired,\r\n    toLayout: PropTypes.objectOf(PropTypes.any).isRequired,\r\n  };\r\n\r\n  constructor(props) {\r\n    super(props);\r\n    props.changeLayout(props.toLayout, true);\r\n  }\r\n\r\n  shouldComponentUpdate(nextProps) {\r\n    const { component, componentProps } = nextProps;\r\n    if (!_.isEqual(component, this.props.component) || !_.isEqual(componentProps, this.props.componentProps)) {\r\n      this.props.changeLayout(nextProps.toLayout, true);\r\n      return true;\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  render() {\r\n    const { componentProps, component: Component } = this.props;\r\n    return <Component changeLayout={this.props.changeLayout} {...componentProps} />;\r\n  }\r\n}\r\n\r\n\r\nexport function withFullScreenLayout(Component) {\r\n  return props => (\r\n    <LayoutContext.Consumer>\r\n      {({ change }) => (<LayoutHoC component={Component} toLayout={layoutConfigs.fullScreen} changeLayout={change} componentProps={props} />)}\r\n    </LayoutContext.Consumer>\r\n  );\r\n}\r\n\r\nexport function withLayout(Component, toLayout) {\r\n  return props => (\r\n    <LayoutContext.Consumer>\r\n      {({ change }) => (<LayoutHoC component={Component} toLayout={toLayout} changeLayout={change} componentProps={props} />)}\r\n    </LayoutContext.Consumer>\r\n  );\r\n}\r\n\r\nexport function withMenuLayout(Component) {\r\n  return props => (\r\n    <LayoutContext.Consumer>\r\n      {({ config }) => (<Component {...props} {...config.menu} />)}\r\n    </LayoutContext.Consumer>\r\n  );\r\n}\r\n\r\nexport function withDefaultLayout(Component) {\r\n  return props => (\r\n    <LayoutContext.Consumer>\r\n      {({ change }) => (<LayoutHoC component={Component} toLayout={{}} changeLayout={change} componentProps={props} />)}\r\n    </LayoutContext.Consumer>\r\n  );\r\n}\r\n\r\nexport function withCollapsedMenuOnly(Component) {\r\n  return props => (\r\n    <LayoutContext.Consumer>\r\n      {({ change }) => (<LayoutHoC component={Component} toLayout={layoutConfigs.withCollapsedMenuOnly} changeLayout={change} componentProps={props} />)}\r\n    </LayoutContext.Consumer>\r\n  );\r\n}\r\n\r\nexport function withCollapsedMenuAndNav(Component) {\r\n  return props => (\r\n    <LayoutContext.Consumer>\r\n      {({ change }) => (<LayoutHoC component={Component} toLayout={layoutConfigs.withCollapsedMenuAndNav} changeLayout={change} componentProps={props} />)}\r\n    </LayoutContext.Consumer>\r\n  );\r\n}\r\n\r\nexport const withMenuOnlyLayout = _.partial(withLayout, _, layoutConfigs.withMenuOnly);\r\nexport const withoutMenuLayout = _.partial(withLayout, _, layoutConfigs.withoutMenu);\r\nexport const withSingleTabLayout = _.partial(withLayout, _, layoutConfigs.withSingleTab);\r\nexport const withSummaryBarAndTabNoDateLayout = _.partial(withLayout, _, { ...layoutConfigs.fullScreenWithSummaryBarAndTab, ...layoutConfigs.withoutDate });\r\nexport const withSummaryBarAndTabAndSubTabLayout = _.partial(withLayout, _, { ...layoutConfigs.fullScreenWithSummaryBarAndTab, ...layoutConfigs.withTabAndSubTab });\r\nexport const withFullScreenWithSummaryBar = _.partial(withLayout, _, layoutConfigs.fullScreenWithSummaryBar);\r\nexport const withFullScreenWithSummaryBarAndTabLayout = _.partial(withLayout, _, { ...layoutConfigs.fullScreenWithSummaryBarAndTab });\r\n","export default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}","export * from './src/index';\r\n","export * from './lodash';\r\nexport * from './string';\r\nexport * from './guid';\r\nexport * from './date';\r\nexport * from './file';\r\nexport * from './promise';\r\nexport * from './color';\r\nexport * from './number';\r\nexport * from './memoize';\r\n","// TODO: Task 904718: refactor to use explicit dependency for es6 syntax rather than global variable\r\n/* global Map */\r\nimport _ from 'underscore';\r\n\r\ntype Path = string | string[];\r\n\r\nfunction castPath(value: Path, object: {}) {\r\n  if (_.isArray(value)) {\r\n    return value;\r\n  }\r\n\r\n  if (_.has(object, value)) {\r\n    return [value];\r\n  }\r\n\r\n  return _.compact(value.split(/[[\\].]/));\r\n}\r\n\r\ninterface Map<K, V> {\r\n  clear(): void;\r\n  get(key: K): V | undefined;\r\n  set(key: K, value: V): this;\r\n}\r\n\r\ninterface MapConstructor {\r\n  new(): Map<any, any>;\r\n}\r\n\r\ndeclare var Map: MapConstructor;\r\n\r\nfunction clone<T extends TProp, TProp>(item: T, sourceCopyMap: Map<TProp, TProp>): T {\r\n  if (!_.isObject(item) || _.isDate(item)) {\r\n    return item;\r\n  }\r\n  if (!sourceCopyMap.get(item)) {\r\n    const result: T = <T>(_.isArray(item) ? [] : {});\r\n    sourceCopyMap.set(item, result);\r\n    _.each(<_.Dictionary<TProp>><unknown>item, (value, key) => {\r\n      (<_.Dictionary<TProp>><unknown>result)[key] = clone(value, sourceCopyMap);\r\n    });\r\n  }\r\n  return <T>sourceCopyMap.get(item);\r\n}\r\n\r\n/**\r\n * defined in lodash 4.5.1\r\n * sum list with iteratee\r\n * @param {Object[]} list - array to be summed\r\n * @param {Function} invoke - function invoked per element\r\n * @returns {number} - sum value of list\r\n */\r\nexport function sumBy<T>(list: T[], invoke: string | object | ((item: T, index: string | number) => number)): number {\r\n  let iteratee: any = undefined;\r\n\r\n  // make separate calls to satisfy @types/underscore for iteratee\r\n  if (invoke instanceof String) {\r\n    iteratee = _.iteratee(invoke);\r\n  } else if (invoke instanceof Object){\r\n    iteratee = _.iteratee(invoke);\r\n  } else {\r\n    iteratee = _.iteratee(invoke);\r\n  }\r\n\r\n  return _.reduce(\r\n    list,\r\n    (currentSum, item, index, arr) => currentSum + iteratee(item, index, arr),\r\n    0\r\n  );\r\n}\r\n\r\n/**\r\n * defined in lodash 0.5.0\r\n * merge two object from src to dest\r\n * @param {Object} dest - dest object\r\n * @param {Object} src - src object\r\n * @returns {Object} - merged object\r\n */\r\nexport function merge<T, TProp>(...args: T[]): T {\r\n  return _.reduce(_.rest(args), (dest, src) => {\r\n    _.each(<_.Dictionary<TProp>><unknown>src, (value, key) => {\r\n      const destKey = (<_.Dictionary<TProp>><unknown>dest)[key];\r\n      if (_.isObject(destKey) && _.isObject(value) && !_.isFunction(value)) {\r\n        merge(destKey, value);\r\n      } else {\r\n        _.extend(dest, _.object([key], [value]));\r\n      }\r\n    });\r\n\r\n    return dest;\r\n  }, _.first(args) || <T>{});\r\n}\r\n\r\n/**\r\n * defined in lodash 4.6.1\r\n * Gets the value at path of object. If the resolved value is undefined,\r\n * the defaultValue is returned in its place.\r\n * @param {Object} object - The object to query.\r\n * @param {array|string} path - The path of the property to get.\r\n * @param {*} defaultValue - Optional, The value returned for undefined resolved values.\r\n * @returns {any} - return the value in object by path, if not exist, return default value\r\n */\r\nexport function get<T, TProp>(object: T, path: Path, defaultValue?: TProp): TProp | undefined {\r\n  let sub: _.Dictionary<TProp> & TProp;\r\n  let i;\r\n  const keyPath = castPath(path, object);\r\n\r\n  for (i = 0, sub = <_.Dictionary<TProp> & TProp><unknown>object; i < keyPath.length; i += 1) {\r\n    if (!_.isObject(sub)) {\r\n      return defaultValue;\r\n    }\r\n\r\n    sub = <_.Dictionary<TProp> & TProp>sub[keyPath[i]];\r\n\r\n    if (_.isUndefined(sub)) {\r\n      return defaultValue;\r\n    }\r\n  }\r\n\r\n  return sub;\r\n}\r\n\r\n/**\r\n * lodash set, path don't support index\r\n * Sets the value at path of object. If a portion of path doesn't exist, it's created.\r\n * Arrays are created for missing index properties while\r\n * objects are created for all other missing properties.\r\n * @param {Object} object - The object to modify.\r\n * @param {string} path - The path of the property to set.\r\n * @param {*} value - The value to set.\r\n * @returns {Object} - Returns object.\r\n */\r\nexport function set<T, TProp>(object: T, path: Path, value: TProp): T {\r\n  if (!_.isObject(object)) {\r\n    return object;\r\n  }\r\n\r\n  const keyPath = castPath(path, object);\r\n  let index = 0;\r\n  const { length } = keyPath;\r\n  const lastIndex = length - 1;\r\n  let nested = <_.Dictionary<TProp> & TProp><unknown>object;\r\n\r\n  while (nested != null && index < length) {\r\n    const key = keyPath[index];\r\n\r\n    if (index !== lastIndex) {\r\n      (nested as _.Dictionary<TProp>)[key] = nested[key] || <TProp>{};\r\n      nested = <_.Dictionary<TProp> & TProp>nested[key];\r\n    } else {\r\n      (nested as _.Dictionary<TProp>)[key] = value;\r\n    }\r\n    index += 1;\r\n  }\r\n  return object;\r\n}\r\n\r\n/**\r\n * Creates a function that returns the result of invoking the given\r\n * functions with the this binding of the created function,\r\n * where each successive invocation is supplied the return value of the previous.\r\n * lodash flow https://lodash.com/docs#flow\r\n * @param {function[]} funcs - The functions to invoke.\r\n * @returns {Function} - Returns the new composite function.\r\n */\r\nexport function flow(...funcs: Function[]): Function {\r\n  return _.compose.apply(null, funcs.reverse());\r\n}\r\n\r\n/**\r\n * defined in lodash 4.0.0\r\n * Check whether value is undefined or null\r\n * @param {*} value - value to Check\r\n * @returns {boolean} - return true if value is undefined or null, otherwise, return false\r\n */\r\nexport function isNil(value: any): boolean {\r\n  return _.isUndefined(value) || _.isNull(value);\r\n}\r\n\r\n/**\r\n * deep clone object\r\n * @param {array|Object} item - source item to be copied\r\n * @return {array|Object} - copied from item\r\n*/\r\nexport function cloneDeep<T>(item: T): T {\r\n  return clone(item, new Map());\r\n}\r\n\r\nfunction objIsArray(obj: any): obj is any[] {\r\n  return _.isArray(obj) && Boolean(obj.length);\r\n}\r\n\r\n/**\r\n * array dedup function\r\n * @param {any[]} array - the array to inspect\r\n * @param {function} comparator - comparator function to determine whether 2 elements are the same\r\n * @returns {any[]} - new duplicate free array\r\n */\r\nexport function uniqWith<T>(array: any, comparator?: (arg1: T, arg2: T) => boolean): T[] {\r\n  if (!objIsArray(array)) {\r\n    return [];\r\n  }\r\n  if (!_.isFunction(comparator)) {\r\n    return _.uniq(array);\r\n  }\r\n  const result: T[] = [];\r\n  _.each(array, (obj) => {\r\n    if (_.every(result, res => !comparator(obj, res))) {\r\n      result.push(obj);\r\n    }\r\n  });\r\n  return result;\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst noMatch = /(.)^/;\r\nconst settings = {\r\n  escape: noMatch,\r\n  evaluate: noMatch,\r\n  interpolate: /\\{\\{(.+?)\\}\\}/g,\r\n};\r\n\r\n/**\r\n * Passes constant double curly brace settings to the underscore template function.\r\n * E.g. to support templates of the format: 'The bid is {{bidAmount}}'\r\n *\r\n * @see {@link http://underscorejs.org/#template}\r\n *\r\n * @param {String} templateString - The template markup that contains double curly bracket notation.\r\n * @return {Function} The template function, which can be passed an Object model with fields that\r\n *    correspond to the names marked up by the curly braces.\r\n */\r\nexport function curlyTemplate(templateString: string): (...data: any[]) => string {\r\n  return _.template(templateString, settings);\r\n}\r\n\r\n/**\r\n * check whether this string include CJK charact\r\n * @param {string} str - string to check\r\n * @returns {boolean} - return true if str contains CJK, otherwise, return false\r\n */\r\nexport function hasCJK(str: string): boolean {\r\n  return !!(_.isString(str) && str.match(/[\\u4E00-\\u9FCC]/));\r\n}\r\n\r\n/**\r\n * Regex Pattern for wide characters\r\n */\r\nconst wideCharPattern = new RegExp(\r\n  '[\\\\u1100-\\\\u11FF]' + // IsHangulJamo\r\n  '|[\\\\u2E80-\\\\u2EFF]' + // IsCJKRadicalsSupplement\r\n  '|[\\\\u3000-\\\\u303F]' + // IsCJKSymbolsandPunctuation\r\n  '|[\\\\u3040-\\\\u309F]' + // IsHiragana\r\n  '|[\\\\u30A0-\\\\u30FF]' + // IsKatakana\r\n  '|[\\\\u3130-\\\\u318F]' + // IsHangulCompatibilityJamo\r\n  '|[\\\\u3200-\\\\u32FF]' + // IsEnclosedCJKLettersandMonths\r\n  '|[\\\\u3300-\\\\u33FF]' + // IsCJKCompatibility\r\n  '|[\\\\u3400-\\\\u4DBF]' + // IsCJKUnifiedIdeographsExtensionA\r\n  '|[\\\\u4E00-\\\\u9FFF]' + // IsCJKUnifiedIdeographs\r\n  '|[\\\\uAC00-\\\\uD7AF]' + // IsHangulSyllables\r\n  '|[\\\\uF900-\\\\uFAFF]' + // IsCJKCompatibilityIdeographs\r\n  '|[\\\\uFE30-\\\\uFE4F]' + // IsCJKCompatibilityForms\r\n  '|[\\\\uFF01-\\\\uFF60]' + // Fullwidth Forms Part 1\r\n  '|[\\\\uFFE0-\\\\uFFE6]' + // Fullwidth Forms Part 2\r\n  '|[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]' // Astral Planes\r\n  , 'g'\r\n);\r\n\r\n/**\r\n * Get string length, which counting CJK character or Emojis as 2\r\n * @param {string} str - string to count\r\n * @returns {int} - length of string\r\n */\r\nexport function displayLength(str: string | null) {\r\n  return _.isString(str) ? str.replace(wideCharPattern, '12').length : 0;\r\n}\r\n\r\nexport function getLength(str: string, distinguishWideChar = false) {\r\n  return distinguishWideChar ? displayLength(str) : _.size(str);\r\n}\r\n\r\n// eslint-disable-next-line no-control-regex\r\nconst IsControlRegex = /[\\u0000-\\u001F\\u007F-\\u009F]/;\r\n\r\n/**\r\n * Validate if string contains controlled characters, http://unicode.org/glossary/#control_codes\r\n * @param {String} str - String to be validated\r\n * @returns {Boolean} - True if string contains controlled char.\r\n */\r\nexport const isControl = (str: string) => IsControlRegex.test(str);\r\n","/*\r\n* Create a new guid\r\n* @returns {String} - returns a guid\r\n*/\r\nexport function generateGuid() {\r\n  function s4() {\r\n    return Math.floor((1 + Math.random()) * 0x10000)\r\n      .toString(16)\r\n      .substring(1);\r\n  }\r\n  return `${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`;\r\n}\r\n","/* eslint-env browser */\r\nimport _ from 'underscore';\r\n\r\n/*\r\n* Returns a copy of the passed in Date with hours/minutes/seconds/milliseconds set to zero.\r\n* @param {Date} date - Date to remove time information from\r\n* @returns {Date} - Copy of passed in date\r\n*/\r\nexport function withoutTime(date: any) {\r\n  if (!date) {\r\n    return date;\r\n  }\r\n\r\n  const returnDate = new Date(date.valueOf());\r\n  returnDate.setHours(0, 0, 0, 0);\r\n  return returnDate;\r\n}\r\n\r\n/**\r\n * Validates if the date range passed in is incorrect. It ignores the time values.\r\n * @param { Date } [minDate] - The minimum date that can be selected.\r\n * @param { Date } [maxDate] - The maximum date that can be selected.\r\n * @param { Date } [selectedDate] - The date to pre-select in the datepicker.\r\n * @returns {String[]} - Array of error strings.\r\n * @throws Will throw if passed in date range is not valid.\r\n */\r\nexport function validateDateRange(minDate: any, maxDate: any, selectedDate: any): string[] {\r\n  const selected = withoutTime(selectedDate);\r\n  const min = withoutTime(minDate);\r\n  const max = withoutTime(maxDate);\r\n\r\n  const errors = [];\r\n\r\n  if (min && max && min > max) {\r\n    errors.push('MinDateLaterThanMaxDate');\r\n  }\r\n\r\n  if (selected && min && selected < min) {\r\n    errors.push('MinDateLaterThanSelectedDate');\r\n  }\r\n\r\n  if (selected && max && selected > max) {\r\n    errors.push('SelectedDateLaterThanMaxDate');\r\n  }\r\n\r\n  return errors;\r\n}\r\n\r\n/**\r\n * Private function to check if date is valid\r\n * @param {Object} date - Object to check\r\n * @returns {Boolean} - True if object is a valid date\r\n * @private\r\n*/\r\nfunction isValidDate(date: object): date is Date {\r\n  return _.isDate(date);\r\n}\r\n\r\n/**\r\n * Get the date N days ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackDays=0] - Number of days to remove\r\n * @returns {Date} - date object with new parameters, null if date is invalid\r\n */\r\nexport function lastNDate(dateTime: any, lookBackDays: number = 0): Date | null {\r\n  return isValidDate(dateTime) ?\r\n    new Date(dateTime.getFullYear(), dateTime.getMonth(), dateTime.getDate() - lookBackDays) : null;\r\n}\r\n\r\n/**\r\n * Get first date of the month N months ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackMonths=0] - Number of months to remove\r\n * @returns {Date} - Date object with new parameters\r\n */\r\nexport function firstDateNMonthsAgo(dateTime: any, lookBackMonths: number = 0): Date | null {\r\n  return isValidDate(dateTime) ?\r\n    new Date(dateTime.getFullYear(), dateTime.getMonth() - lookBackMonths, 1) : null;\r\n}\r\n\r\n/**\r\n * Get last date of the month N months ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackMonths=0] - Number of months to remove\r\n * @returns {Date} - Date object with new parameters\r\n */\r\nexport function lastDateNMonthsAgo(dateTime: any, lookBackMonths: number = 0): Date | null {\r\n  return isValidDate(dateTime) ?\r\n    lastNDate(<Date>firstDateNMonthsAgo(dateTime, lookBackMonths - 1), 1) : null;\r\n}\r\n\r\n/**\r\n * Get today for N years ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackYears=0] - Number of years to remove\r\n * @returns {Date} - Date object with new parameters\r\n */\r\nexport function todayNYearsAgo(dateTime: any, lookBackYears: number = 0): Date | null {\r\n  return isValidDate(dateTime) ? new Date(\r\n    dateTime.getFullYear() - lookBackYears,\r\n    dateTime.getMonth(), dateTime.getDate()\r\n  ) : null;\r\n}\r\n\r\n/**\r\n * Get first date of the year N years ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackYears=0] - Number of years to remove\r\n * @returns {Date} - Date object with new parameters\r\n */\r\nexport function firstDateNYearsAgo(dateTime: Date, lookBackYears: number = 0): Date | null {\r\n  return isValidDate(dateTime) ? new Date(dateTime.getFullYear() - lookBackYears, 0, 1) : null;\r\n}\r\n\r\n/**\r\n * Get the current UTC time\r\n * @returns {String} - the current utc datetime\r\n */\r\nexport function getUtcTime(): string {\r\n  return new Date().toJSON();\r\n}\r\n\r\n/**\r\n * Get the current timestamp\r\n * @returns {number} - the timestamp since epoch in milliseconds\r\n */\r\nexport function getTimestamp(): number {\r\n  // TODO: this method should not be here, as it depends on Web API performance\r\n  if (window.performance && window.performance.now && window.performance.timing) {\r\n    return window.performance.timing.navigationStart + window.performance.now();\r\n  }\r\n\r\n  return Date.now();\r\n}\r\n\r\ntype ComparisonDateRange = {\r\n  start: Date,\r\n  end: Date\r\n};\r\n\r\ntype DateRange = {\r\n  start?: Date,\r\n  end?: Date,\r\n  key?: string,\r\n  compared?: ComparisonDateRange | null\r\n};\r\n\r\n/**\r\n * Check if the given two date ranges equal\r\n * @param {Object} firstRange - The first input range\r\n * @param {Object} secondRange - The second input range\r\n * @returns {Boolean} - Two ranges equal\r\n */\r\nexport function dateRangeEquals(firstRange?: null | DateRange, secondRange?: null | DateRange): boolean {\r\n  function convertForComparison(range: DateRange) {\r\n    const dates = _.pick(range, 'start', 'end', 'key');\r\n\r\n    if (range.compared) {\r\n      _.extend(dates, {\r\n        comparedStart: range.compared.start,\r\n        comparedEnd: range.compared.end,\r\n      });\r\n    }\r\n    return dates;\r\n  }\r\n\r\n  if (!firstRange || !secondRange) {\r\n    return false;\r\n  }\r\n\r\n  return JSON.stringify(convertForComparison(firstRange)) ===\r\n    JSON.stringify(convertForComparison(secondRange));\r\n}\r\n\r\ntype TimeZone = string;\r\ntype TimeZoneOption = TimeZone | null;\r\ntype DateMethodsOptions = { timeZone?: TimeZoneOption };\r\n\r\ntype I18nModel = {\r\n  formatDate: (date: Date, options: DateMethodsOptions) => string,\r\n  parseDate: (strDate: string, options: DateMethodsOptions) => Date | null,\r\n};\r\n\r\nexport function convertDateBetweenTimeZones(date: Date, i18n: I18nModel, {\r\n  from,\r\n  to,\r\n}: {\r\n  from?: TimeZone | null,\r\n  to?: TimeZone | null\r\n} = {}) {\r\n  const dateString = i18n.formatDate(date, {\r\n    timeZone: from,\r\n  });\r\n\r\n  return i18n.parseDate(dateString, {\r\n    timeZone: to,\r\n  });\r\n}\r\n\r\nexport function convertMachineDateToUTCDate(date: Date, i18n: any) {\r\n  return convertDateBetweenTimeZones(date, i18n, { from: null, to: 'UTC' });\r\n}\r\n\r\nexport function convertUTCDateToMachineDate(date: Date, i18n: any) {\r\n  return convertDateBetweenTimeZones(date, i18n, { from: 'UTC', to: null });\r\n}\r\n","/* eslint-env browser */\r\n// this file depends on Web API atob, Blob, File, it should not be in this project\r\nimport _ from 'underscore';\r\n\r\nexport function dataURItoBlob(dataURI: string) {\r\n  const reg = /:(.+?);/;\r\n  const arrs = dataURI.split(',');\r\n  const header = <string>_.first(arrs);\r\n  const content = <string>_.last(arrs);\r\n  let type = 'image/png';\r\n\r\n  const byteString = atob(content);\r\n  const array = new Uint8Array(byteString.length);\r\n\r\n  for (let i = 0; i < byteString.length; i += 1) {\r\n    array[i] = byteString.charCodeAt(i);\r\n  }\r\n  if (reg.test(header)) {\r\n    ({ 1: type } = <string[]>header.match(reg));\r\n  }\r\n  return new Blob([array], { type });\r\n}\r\n\r\n/**\r\n * Convert image string to File object\r\n * @param {string} img image string to be convertImage2File\r\n * @param {string} name file name of image\r\n * @returns {File} File object\r\n */\r\nexport function convertImage2File(img: string, name: string): File {\r\n  const blob = dataURItoBlob(img);\r\n  const postfix = _.last(blob.type.split('/'));\r\n  return new File([blob], `${name}.${postfix}`, { type: blob.type, lastModified: Date.now() });\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\n\r\ntype WithLastPromiseOptions<T> = {\r\n  promiseFactory: (...args: any[]) => Promise<T>,\r\n  finish: (result?: T) => void,\r\n  cancel?: () => void,\r\n  fail?: (error: Error) => void\r\n};\r\n\r\n/**\r\n * This function returns a new \"guarded\" function. The guarded function behaves like this:\r\n * - everytime it is called it is going to call the promiseFactory function to\r\n * generate a new promise and remember it as the last promise;\r\n * - the guarded function returns a process handle object, which has the cancel function,\r\n * which can be used to ignore the results of the last promise, and, instead trigger\r\n * the cancel() callback;\r\n * - when the \"last promise\" finishes either finish or fail callback will be triggered,\r\n * depending on the outcome\r\n * of the last promise.\r\n * @param {Object} options - the options object\r\n * @param {Function} options.promiseFactory - the function that returns a new promise.\r\n * The factory will be called with the arguments passed to the guarded function.\r\n * @param {Function} options.finish - the function that will be called when the last\r\n * promise is resolved. The only argument to this function is the value the value from\r\n * the last promise.\r\n * @param {Function} options.fail - a function that is called when the last promise is\r\n * failed. The only\r\n * argument to this function is the error from the last promise.\r\n * @param {Function} options.cancel - a function that is called when the last promise is canceled.\r\n * No arguments are passed in. This function will be called not early than the next\r\n * scheduler iteration, after a call to process handle's cancel() function.\r\n * @returns {Function} - the \"guarded\" function. See description.\r\n */\r\nexport function withLastPromise<T>(options: WithLastPromiseOptions<T>): (...args: any[]) => { cancel: () => void } {\r\n  const {\r\n    promiseFactory, finish, cancel = _.noop, fail = _.noop,\r\n  } = options;\r\n  let lastPromise: Promise<T>;\r\n  let lastPromiseCanceled = false;\r\n\r\n  const finishProcess = (error: Error | undefined, result?: T) => {\r\n    if (lastPromiseCanceled) {\r\n      cancel();\r\n    } else if (error) {\r\n      fail(error);\r\n    } else {\r\n      finish(result);\r\n    }\r\n  };\r\n\r\n  const guardedFunction = (...factoryArgs: any[]) => {\r\n    lastPromise = promiseFactory(...factoryArgs);\r\n    lastPromiseCanceled = false;\r\n    const processHandle = ((promise: Promise<T>) => {\r\n      promise.then((result) => {\r\n        if (promise === lastPromise) {\r\n          finishProcess(undefined, result);\r\n        }\r\n\r\n        // skipping the results, since a new promise has started since\r\n        // or the last one was canceled\r\n      }, (error) => {\r\n        if (promise === lastPromise) {\r\n          finishProcess(error);\r\n        }\r\n\r\n        // skipping the error, since a new promise has started since\r\n        // or the last one was canceled\r\n      });\r\n\r\n      return {\r\n        cancel() {\r\n          lastPromiseCanceled = true;\r\n        },\r\n      };\r\n    })(lastPromise);\r\n\r\n    return processHandle;\r\n  };\r\n\r\n  return guardedFunction;\r\n}\r\n\r\nenum ASYNC_STATUS {\r\n  SUCCESS = 'SUCCESS',\r\n  ERROR = 'ERROR',\r\n  CANCELLED = 'CANCELLED',\r\n};\r\n\r\ntype Callbacks<T> = {\r\n  onSuccess?: (result: T) => void,\r\n  onError?: (err: Error) => void,\r\n  onCancel?: () => void,\r\n};\r\n\r\ntype PromiseChainItem<T> = {\r\n  resolve: (result: T) => Promise<T>,\r\n  reject: null | ((result: Error) => Promise<T>)\r\n};\r\n\r\ntype Resolvable<R> = R | PromiseLike<R>;\r\n\r\ntype Options = {\r\n  cancelCallback?: () => void,\r\n};\r\n\r\n/**\r\n * This function returns an async token, which allows the caller to cancel a promise.\r\n * The token behaves in the following way:\r\n *  - The token is created using the function, however needs to be finalizes with .on().\r\n *  - Only one of the callbacks will ever be called (onCancel, onSuccess, onError)\r\n *  - If the token is cancelled, as long as the promise hasn't been resolved,\r\n *    onCancel will be synchronously called and all references will be released.\r\n * @param {Object} promise - the promise\r\n * @param {Object} options - the options to create async token\r\n * @param {Function} options.cancelCallback\r\n * This callback is intended to be provided by a component that returns async token\r\n * from one of its interface method, and helps handle cancellation specific to the component\r\n * @returns {Object} asyncToken - the cancelable async token\r\n * @returns {Function} asyncToken.chain - (resolve, reject)\r\n * Allows the user to chain more async tasks,\r\n * similar to .then(resolve, reject), however will be cancelable by the token.\r\n * @returns {Function} asyncToken.on - ({onCancel, onSuccess, onError})\r\n * finalizes the token with three callbacks.\r\n * Only one will ever be called. If no onError function is submitted, it will re-throw any errors.\r\n * the last promise.\r\n * @returns {Function} asyncToken.cancel - if promise has resolved, will be a noop.\r\n * Otherwise will stop any more tasks or callbacks from being called,\r\n * and will synchronously call onCancel callback.\r\n */\r\nexport function createAsyncToken<T>(promise: null | PromiseLike<T>, options?: Options) {\r\n  if (!promise) {\r\n    throw new Error('promise is a required parameter');\r\n  }\r\n\r\n  // declare scoped variables\r\n  let currentPromise: null | PromiseLike<T> = promise;\r\n  let promiseChain: PromiseChainItem<T>[] = [];\r\n  let callbacks: Callbacks<T> | null = null;\r\n\r\n  // Implement functions\r\n  function queueNextWork() {\r\n    (<Promise<T>>currentPromise).then((result) => {\r\n      finishProcess(ASYNC_STATUS.SUCCESS, result);\r\n    }, (error) => {\r\n      finishProcess(ASYNC_STATUS.ERROR, error);\r\n    });\r\n  };\r\n\r\n  function dequeuePromise(status: ASYNC_STATUS, result?: T | Error) {\r\n    const { resolve, reject } = <PromiseChainItem<T>>promiseChain.shift();\r\n\r\n    if (status === ASYNC_STATUS.ERROR) {\r\n      if (reject) {\r\n        currentPromise = reject(<Error>result);\r\n      } else {\r\n        // if no reject function was provided, rerun finishProcess, don't call queueNextWork\r\n        finishProcess(status, result);\r\n        return;\r\n      }\r\n    } else {\r\n      currentPromise = resolve(<T>result);\r\n    }\r\n\r\n    queueNextWork();\r\n  };\r\n\r\n  function finishProcess(status: ASYNC_STATUS, result?: T | Error) {\r\n    if (callbacks == null) {\r\n      // Noop\r\n      return;\r\n    }\r\n    const {\r\n      onSuccess = _.noop,\r\n      onError = (err: Error) => { throw err; },\r\n      onCancel = _.noop,\r\n    } = callbacks;\r\n\r\n    if (status === ASYNC_STATUS.CANCELLED) {\r\n      cleanup();\r\n      onCancel();\r\n    } else if (!_.isEmpty(promiseChain)) {\r\n      dequeuePromise(status, result);\r\n    } else if (status === ASYNC_STATUS.ERROR) {\r\n      cleanup();\r\n      onError(<Error>result);\r\n    } else {\r\n      cleanup();\r\n      onSuccess(<T>result);\r\n    }\r\n  }\r\n\r\n  function cleanup() {\r\n    // cleanup all scoped references to unblock garbage collector\r\n    callbacks = null;\r\n    promiseChain = [];\r\n    currentPromise = null;\r\n  }\r\n\r\n  const asyncToken = {\r\n    chain(resolve: () => Resolvable<T>, reject: null | (() => Resolvable<T>) = null) {\r\n      if (!_.isNull(callbacks)) {\r\n        throw new Error('Cannot call .chain after calling .on');\r\n      }\r\n\r\n      // wrap callbacks to allow async\r\n      promiseChain.push({\r\n        resolve: Promise.method<T>(resolve),\r\n        reject: reject == null ? null : Promise.method<T>(reject),\r\n      });\r\n      return asyncToken;\r\n    },\r\n    on({\r\n      onSuccess,\r\n      onError,\r\n      onCancel,\r\n    }: Callbacks<T>) {\r\n      if (!_.isNull(callbacks)) {\r\n        throw new Error('Cannot call .on multiple times');\r\n      }\r\n\r\n      callbacks = {\r\n        onSuccess,\r\n        onError,\r\n        onCancel,\r\n      };\r\n\r\n      // .on will finalize the token, begin work\r\n      queueNextWork();\r\n      return asyncToken;\r\n    },\r\n    cancel() {\r\n      options && options.cancelCallback && options.cancelCallback();\r\n      finishProcess(ASYNC_STATUS.CANCELLED);\r\n      return asyncToken;\r\n    }\r\n  };\r\n\r\n  return asyncToken;\r\n}\r\n","/* eslint-disable no-bitwise */\r\n\r\nfunction numberToRgb(rgbInteger: number) {\r\n  return {\r\n    red: (rgbInteger & 0xff0000) >> 16,\r\n    green: (rgbInteger & 0x00ff00) >> 8,\r\n    blue: rgbInteger & 0x0000ff,\r\n  };\r\n}\r\n\r\n/**\r\n * Converts an RGB color to its grayscale equivalent. Useful for determining if a color should be\r\n * contrasted against white or black.\r\n * @see {@link https://www.w3.org/TR/AERT/#color-contrast}\r\n * @param {Number} rgbInteger - Number that represents an RGB color, e.g. 15792383.\r\n * @returns {Number} Grayscale value of the number, e.g. 246.\r\n */\r\nexport function colorToGrayscale(rgbInteger: number): number {\r\n  const rgb = numberToRgb(rgbInteger);\r\n\r\n  // calculate grayscale value based on how humans perceive luminance in RBG\r\n  return Math.round((0.299 * rgb.red) + (0.587 * rgb.green) + (0.114 * rgb.blue));\r\n}\r\n\r\n/**\r\n * Returns black if the grayscale equivalent of given color is <50% gray, otherwise returns white.\r\n * @param {Number} rgbInteger - Number that represents an RGB color, e.g. 15792383.\r\n * @returns {Number} Number that represents RGB black or RGB white.\r\n */\r\nexport function contrastColor(rgbInteger: number): number {\r\n  const grayscale = colorToGrayscale(rgbInteger);\r\n\r\n  return grayscale >= 256 / 2 ? 0 : 0xffffff;\r\n}\r\n\r\n/**\r\n * Convert a RGB hexadecimal color value into decimal.\r\n * @param {String} color - RGB 6-digit hexademical color, e.g. '#ff0000'\r\n * @returns {Number} Decimal representation, e.g. 16711680.\r\n */\r\nexport function toDec(color: string): number {\r\n  return parseInt(color.substr(1), 16);\r\n}\r\n\r\n/**\r\n * Convert a decimal number into 6-digit hexademical.\r\n * @param {Number} color - Number value of an RGB color, e.g. 15792383\r\n * @returns {String} 6-digital hexademical representation, e.g. 'f0f9ff'\r\n */\r\nexport function toHex(color: number): string {\r\n  return `000000${color.toString(16)}`.substr(-6);\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_+';\r\n\r\n/**\r\n * translate int to base-64 representation\r\n * @param {Number} integer None negative integer to translate\r\n * @returns {String} encoded base-64 string\r\n */\r\nexport function toStringBase64(integer: number): string {\r\n  if (!_.isNumber(integer) || integer % 1 !== 0 || integer < 0) {\r\n    throw new Error('unknown data type, none negative integer only');\r\n  }\r\n\r\n  if (integer === 0) {\r\n    return map[0];\r\n  }\r\n\r\n  let result = '';\r\n  let dividend = integer;\r\n\r\n  while (dividend > 0) {\r\n    const remainder = dividend % 64;\r\n\r\n    result = map[remainder].concat(result);\r\n    dividend = Math.floor(dividend / 64);\r\n  }\r\n\r\n  return result;\r\n}\r\n\r\n/**\r\n *\r\n * @param {String} code, string output of toStringBase64\r\n * @returns {Number} the original integer number\r\n */\r\nexport function parseIntBase64(code: string): number {\r\n  let result = 0;\r\n  let remain = code.slice();\r\n\r\n  while (remain.length > 0) {\r\n    result = (result * 64) + map.indexOf(remain[0]);\r\n    remain = remain.slice(1);\r\n  }\r\n\r\n  return result;\r\n}\r\n","class Cache {\r\n  max: number;\r\n  lruTrigger: number;\r\n  cache: Map<any, any>;\r\n\r\n  constructor(max: number = 200) {\r\n    this.max = max;\r\n    this.lruTrigger = max / 2;\r\n    this.cache = new window.Map();\r\n  }\r\n\r\n  get(key: any) {\r\n    const item = this.cache.get(key);\r\n    if (this.cache.size > this.lruTrigger && item) {\r\n      // refresh key\r\n      this.cache.delete(key);\r\n      this.cache.set(key, item);\r\n    }\r\n    return item;\r\n  }\r\n\r\n  set(key: any, val: any) {\r\n    if (this.cache.size > this.lruTrigger) {\r\n      // refresh key\r\n      if (this.cache.has(key)) {\r\n        this.cache.delete(key);\r\n      } else if (this.cache.size == this.max) {\r\n        this.cache.delete(this.first());\r\n      }\r\n    }\r\n    this.cache.set(key, val);\r\n  }\r\n\r\n  first() {\r\n    return this.cache.keys().next().value;\r\n  }\r\n}\r\n\r\nfunction resolveFromCache(args: any[], index: number, cache: Cache, func:(...args: any[]) => any): any {\r\n  const key = args[index];\r\n  const result = cache.get(key);\r\n  if (index >= args.length - 1) { // reached last of arg\r\n    if (result && !(result instanceof Cache)) {\r\n      return result; // found actual result\r\n    }\r\n    // no result found, save the result as new entry\r\n    const toCache = func.apply(undefined, args);\r\n    cache.set(key, toCache);\r\n    return toCache;\r\n  }\r\n  // not finished searching yet\r\n  if (result instanceof Cache) {\r\n    return resolveFromCache(args, index + 1, result, func); // found nested Map, go deeper\r\n  }\r\n  // create nested Cache with key and continue\r\n  const nestedCache = new Cache();\r\n  cache.set(key, nestedCache);\r\n  return resolveFromCache(args, index + 1, nestedCache, func);\r\n}\r\n\r\nexport function memoize(func: (...args: any[]) => any) {\r\n  const memoized = function (...args: any[]) {\r\n    return resolveFromCache(args, 0, memoized.cache, func);\r\n  };\r\n  memoized.cache = new Cache();\r\n  return memoized;\r\n}\r\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}","export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n  if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return _typeof2(obj);\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n    };\n  }\n\n  return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  }\n}","export default function _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}","export { I18nModel } from './src/index';\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport Globalize from 'globalize';\r\nimport { LocaleManager } from './locale';\r\nimport { Resource } from './resource';\r\n\r\nconst localeManager = new LocaleManager();\r\n\r\nconst dynamicLocaleInstances = [];\r\n\r\n/**\r\n * @this I18nModel\r\n * @param {String} key localization key\r\n * @returns {void}\r\n * @private\r\n */\r\nfunction assertReady(key) {\r\n  if (!this.isReady()) {\r\n    const debugInfo = `name-${this.name},culture-${this.locale},key-${key}`;\r\n\r\n    throw new Error(`The resource is not yet ready(${debugInfo}). Please either call sync APIs only when the promise is fulfilled, or switch to use async APIs.`);\r\n  }\r\n}\r\n\r\n/**\r\n * @this I18nModel\r\n * @param {String} key localization key\r\n * @returns {Resource} Current synchronous resource\r\n * @private\r\n */\r\nfunction synchronousResource(key) {\r\n  assertReady.call(this, key);\r\n  return this.p$data.value().resource;\r\n}\r\n\r\n/**\r\n * @this I18nModel\r\n * @returns {Globalize} Current synchronous globalize\r\n * @private\r\n */\r\nfunction synchronousGlobalize() {\r\n  assertReady.call(this);\r\n  return this.p$data.value().globalize;\r\n}\r\n\r\n/**\r\n * If the given object is thenable\r\n * @param {any} object - The object to be tested\r\n * @returns {bool} Current synchronous globalize\r\n * @private\r\n */\r\nfunction isThenable(object) {\r\n  return object && _.isFunction(object.then);\r\n}\r\n\r\n/**\r\n * @this I18nModel\r\n * @param {string} locale - the locale used to load data\r\n * @returns {Promise} Promise of translation resource and globalize\r\n * @private\r\n */\r\nfunction loadData(locale) {\r\n  const translationData = this.loadTranslationData(locale);\r\n  const cldrData = this.loadCLDRData(locale);\r\n\r\n  if (isThenable(translationData) || isThenable(cldrData)) {\r\n    return Promise.props({\r\n      locale,\r\n      resource: Promise.resolve(translationData).then(data => new Resource({ data, failFast: this.failFast })),\r\n      globalize: Promise.resolve(cldrData).then(cldr => new Globalize(cldr)),\r\n    });\r\n  }\r\n\r\n  return Promise.resolve({\r\n    locale,\r\n    resource: new Resource({\r\n      data: translationData,\r\n      failFast: this.failFast,\r\n    }),\r\n    globalize: new Globalize(cldrData),\r\n  });\r\n}\r\n\r\n/* @this I18nModel */\r\nfunction dateMethodOptions({\r\n  skeleton,\r\n  date,\r\n  time,\r\n  datetime,\r\n  raw,\r\n  timeZone = this.timeZone,\r\n} = {}) {\r\n  return _.pick({\r\n    skeleton,\r\n    date,\r\n    time,\r\n    datetime,\r\n    raw,\r\n    timeZone,\r\n  }, Boolean);\r\n}\r\n\r\n/* @this I18nModel */\r\nfunction withSignWrapper(withSign, method) {\r\n  switch (withSign) {\r\n    case 'auto':\r\n      return value => method(value);\r\n    case 'never':\r\n      return value => method(Math.abs(value));\r\n    case 'always': {\r\n      const cldr = this.getCldr();\r\n      const minusSign = cldr.main('numbers/symbols-numberSystem-latn/minusSign');\r\n      const plusSign = cldr.main('numbers/symbols-numberSystem-latn/plusSign');\r\n\r\n      return (value) => {\r\n        if (value < 0) {\r\n          return method(value);\r\n        }\r\n        // Same as described in CLDR ticket\r\n        // see: http://unicode.org/cldr/trac/ticket/8732\r\n        // Note: 0 will have no sign\r\n        return method(-value).replace(\r\n          // only support latn for now\r\n          minusSign,\r\n          plusSign\r\n        );\r\n      };\r\n    }\r\n    default:\r\n      throw new RangeError(`'withSign' option should be one of 'auto', 'never' or 'always', but being ${withSign}`);\r\n  }\r\n}\r\n\r\n/**\r\n * Return a function synchronously format a number with given options.\r\n * @param {string} [withSign=auto] - Show positive/negative sign or not.\r\n *    Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @return {Function} The function formatting number\r\n * @private\r\n */\r\nfunction numberFormatterWithSign(withSign, options) {\r\n  const globalizeFormatter = synchronousGlobalize.call(this).numberFormatter(options);\r\n  // SignificantDigits related param override IntegerDigits/FractionDigits related param\r\n  // pick Boolean to remove them if they're not passed in\r\n  return withSignWrapper.call(this, withSign, value => globalizeFormatter(value));\r\n}\r\n\r\n/**\r\n * Return a function synchronously format a currency with given options.\r\n * @param {string} currency - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n * @param {string} [withSign=auto] - Show positive/negative sign or not.\r\n *    Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n * @return {Function} The function formatting number\r\n * @private\r\n */\r\nfunction currencyFormatterWithSign(currency, withSign = 'auto', options) {\r\n  if (!currency) {\r\n    return () => '0';\r\n  }\r\n\r\n  const globalizeFormatter = synchronousGlobalize.call(this).currencyFormatter(currency, options);\r\n  // SignificantDigits related param override IntegerDigits/FractionDigits related param\r\n  // pick Boolean to remove them if they're not passed in\r\n  return withSignWrapper.call(this, withSign, value => globalizeFormatter(value));\r\n}\r\n\r\nfunction currencyFormatterWithSymbol(currency, withSign = 'auto', withSymbol = true, options) {\r\n  if (!currency) {\r\n    return () => '0';\r\n  }\r\n\r\n  if (withSymbol) {\r\n    return currencyFormatterWithSign.call(this, currency, withSign, options);\r\n  }\r\n\r\n  const globalizeFormatter = synchronousGlobalize.call(this)\r\n    .currencyToPartsFormatter(currency, options);\r\n  const formatter = (value) => {\r\n    const parts = globalizeFormatter(value);\r\n    const newParts = _.map(parts, (part) => {\r\n      if (part.type === 'integer'\r\n        || part.type === 'group'\r\n        || part.type === 'decimal'\r\n        || part.type === 'fraction'\r\n      ) {\r\n        return part.value;\r\n      }\r\n      return '';\r\n    });\r\n    const finalValue = newParts.join('');\r\n\r\n    return finalValue;\r\n  };\r\n\r\n\r\n  return withSignWrapper.call(this, withSign, formatter);\r\n}\r\n\r\nfunction withGlobalizeCache(fnName, i18nModel) {\r\n  const realMethod = i18nModel[fnName];\r\n\r\n  function createCache() {\r\n    const cache = {};\r\n    cache.size = 0;\r\n\r\n    return cache;\r\n  }\r\n\r\n  return function wrappedGlobalizeMethod(...args) {\r\n    const cache = i18nModel.parserFormatterCache;\r\n    if (!cache[fnName]) {\r\n      cache[fnName] = createCache();\r\n    }\r\n\r\n    let specificMethodCache = cache[fnName];\r\n\r\n    const key = JSON.stringify(args);\r\n    if (specificMethodCache[key]) {\r\n      return specificMethodCache[key];\r\n    }\r\n\r\n    /* Just a precaution, don't expect cache to grow this large */\r\n    if (specificMethodCache.size > 100) {\r\n      cache[fnName] = createCache();\r\n      specificMethodCache = cache[fnName];\r\n    }\r\n\r\n    specificMethodCache[key] = realMethod.apply(this, args);\r\n    specificMethodCache.size += 1;\r\n\r\n    return specificMethodCache[key];\r\n  };\r\n}\r\n\r\n/**\r\n * I18n Model.\r\n */\r\nexport class I18nModel {\r\n  static defaultFailFast = false;\r\n\r\n  /**\r\n   * Set global locale used for all i18n model as default locale.\r\n   * @param {string} locale - should be in format of IETF language tag {@link http://www.langtag.net/}.\r\n   * @returns {Promise.<I18nModel[]>} resolved when all dynamic locale i18n models are ready\r\n   */\r\n  static setGlobalLocale(locale) {\r\n    localeManager.setGlobalLocale(locale);\r\n    return Promise.all(_.map(dynamicLocaleInstances, instance => instance.setLocale(locale)));\r\n  }\r\n\r\n  /**\r\n   * Load CLDR data for Globalize.js.\r\n   * Helper function which makes Globalize transparent to users.\r\n   * Then user don't need to import it explictly.\r\n   * @param {JSON[]} data - CLDR data.\r\n   * @returns {void}\r\n   */\r\n  static loadCLDRData(...data) {\r\n    Globalize.load(...data);\r\n  }\r\n\r\n  /**\r\n   * Load time zone data for Globalize.js.\r\n   * Helper function which makes Globalize transparent to users.\r\n   * Then user don't need to import it explictly.\r\n   * @param {JSON} data - Time zone data.\r\n   * @returns {void}\r\n   */\r\n  static loadTimeZoneData(data) {\r\n    Globalize.loadTimeZone(data);\r\n  }\r\n\r\n  /**\r\n   * Sets the default failfast value for every i18nmodel\r\n   *\r\n   * @returns {void}\r\n   * @param {string|bool} failfast  when key missing\r\n   *     true   - i18n throws error and crashes current execution\r\n   *    \"SAFE\"  - i18n throws error asyncrounously but continues execution\r\n   */\r\n  static setDefaultFailFast(failfast) {\r\n    I18nModel.defaultFailFast = failfast;\r\n  }\r\n\r\n  /**\r\n   * @callback loadCLDRData\r\n   * @param {string} locale - the locale used to load CLDR data\r\n   * @returns {Promise.<CldrJs>|Promise.<string>|CldrJs|string}\r\n   *    The CLDR data or the locale name linked to already loaded CLDR data\r\n   */\r\n\r\n  /**\r\n   * @callback loadTranslationData\r\n   * @param {string} locale - the locale used to load translation data\r\n   * @returns {Promise.<Object.<string, string>>|Object.<string, string>}\r\n   *    key value pairs as tranlation data\r\n   */\r\n  /**\r\n   * Create a model.\r\n   * When both options.loadCLDRData and options.loadTranslationData returns raw data instead\r\n   * of Promise, and locale is neither 'current' nor 'dynamic', the model created is surely\r\n   * ready for use synchronously.\r\n   * @param {Object} options - The initialization options\r\n   * @param {string} [options.name] - The name of the i18n package\r\n   * @param {string} [options.locale=current] - The locale of this i18n model; could be a\r\n   *   specific locale (e.g. 'en-us'), 'dynamic' or 'current' (default)\r\n   * @param {string} [options.timeZone] - The default timeZone used by formatDate\r\n   * @param {string} [options.currency] - The default currency used by formatCurrency\r\n   * @param {loadCLDRData} options.loadCLDRData - a function which accepts locale as param and\r\n   *   returns a promise which resolves after coresponding CLDR data loaded, and with value\r\n   *   the CLDR.js instance or the locale name as [Globalize constructor]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/core/constructor.md} requires\r\n   * @param {loadTranslationData} options.loadTranslationData - a function which accepts locale\r\n   *   as param and returns a promise which resolves with a translation data object\r\n   * @param {string|bool} options.failFast - when key missing\r\n   *     true   - i18n throws error and crashes current execution\r\n   *    \"SAFE\"  - i18n throws error asyncrounously but continues execution\r\n   *\r\n   * @constructs I18nModel\r\n   */\r\n  constructor({\r\n    name,\r\n    locale = 'current',\r\n    timeZone,\r\n    currency,\r\n    loadCLDRData,\r\n    loadTranslationData,\r\n    failFast = I18nModel.defaultFailFast,\r\n  }) {\r\n    this.locale = locale;\r\n    this.name = name;\r\n    this.timeZone = timeZone;\r\n    this.currency = currency;\r\n\r\n    this.loadCLDRData = loadCLDRData;\r\n    this.loadTranslationData = loadTranslationData;\r\n    this.missingKeys = {};\r\n    this.failFast = failFast;\r\n    this.parserFormatterCache = {};\r\n\r\n    /* These methods return parsers and formatters that can be safely cached.\r\n    (they don't have any functions as a parameter). Globalize recommends caching\r\n    parsers and formatters as generating them can be very expensive */\r\n    ['decimalParser',\r\n      'percentParser',\r\n      'dateFormatter',\r\n      'dateToPartsFormatter',\r\n      'dateParser',\r\n    ].forEach((fnName) => {\r\n      this[fnName] = withGlobalizeCache(fnName, this);\r\n    });\r\n\r\n    if (locale === 'dynamic') {\r\n      // If dynamic, reload resource on locale change\r\n      dynamicLocaleInstances.push(this);\r\n    }\r\n\r\n    if (locale === 'current' || locale === 'dynamic') {\r\n      // Wait for initial locale to be set and then load the resource\r\n      const p$globalLocale = localeManager.p$globalLocale();\r\n\r\n      // when global locale is synced ready, make p$data synced ready too\r\n      if (p$globalLocale.isFulfilled()) {\r\n        this.p$data = loadData.call(this, p$globalLocale.value());\r\n      } else {\r\n        this.p$data = localeManager.p$globalLocale()\r\n          .then(globalLocale => loadData.call(this, globalLocale));\r\n      }\r\n    } else {\r\n      this.setLocale(locale);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Set locale used for this model, will reuse other data.\r\n   * @param {string} locale - should be in format of IETF language tag {@link http://www.langtag.net/}.\r\n   * @returns {Promise.<I18nModel>} resolved when all resource for this model loaded\r\n   */\r\n  setLocale(locale) {\r\n    this.p$data = loadData.call(this, locale);\r\n    this.parserFormatterCache = {};\r\n\r\n    return this.ready();\r\n  }\r\n\r\n  /**\r\n   * Get a promise that resolves to this object when the resource is ready.\r\n   * @return {Promise.<I18nModel>} This object\r\n   */\r\n  ready() {\r\n    return this.p$data.return(this);\r\n  }\r\n\r\n  /**\r\n   * Check whether the resource is ready.\r\n   * @return {boolean} Whether the resource is ready\r\n   */\r\n  isReady() {\r\n    return this.p$data.isFulfilled();\r\n  }\r\n\r\n  // Sync API\r\n  // All these methods only work when isReady().\r\n  // If isReady() === false, these methods would throw error.\r\n\r\n  /**\r\n   * Synchronously get locale used for this model.\r\n   * @returns {string} locale used for this model.\r\n   */\r\n  getLocale() {\r\n    assertReady.call(this);\r\n    return this.p$data.value().locale;\r\n  }\r\n\r\n  /**\r\n   * Synchronously get Cldrjs instance.\r\n   * @return {Cldrjs} The Cldrjs instance.\r\n   * @see [cldr.js - Simple CLDR traverser]{@link https://github.com/rxaviers/cldrjs}\r\n   */\r\n  getCldr() {\r\n    return synchronousGlobalize.call(this).cldr;\r\n  }\r\n\r\n  /**\r\n   * Synchronously get first day of week.\r\n   * @param {Object} [options] - options\r\n   * @param {String} [options.alt] - undefined or 'variant'.\r\n   * @return {string} The weekday as first day of week. One of 'mon', 'fri', 'sat', sun'.\r\n   */\r\n  getFirstDayOfWeek({\r\n    alt,\r\n  } = {}) {\r\n    const cldr = this.getCldr();\r\n\r\n    const defaultRegionKey = cldr.attributes.region;\r\n    const key = alt ? `${defaultRegionKey}-alt-${alt}` : defaultRegionKey;\r\n\r\n    return cldr.supplemental(`weekData/firstDay/${key}`) ||\r\n      cldr.supplemental(`weekData/firstDay/${defaultRegionKey}`) ||\r\n      // 001 means the world\r\n      // see: http://cldr.unicode.org/index/cldr-spec/reasons-for-decisions\r\n      cldr.supplemental('weekData/firstDay/001');\r\n  }\r\n\r\n  /**\r\n   * Synchronously get today as CivilDate.\r\n   * Note: for not introducing temporal for now,\r\n   *  this method only returns an object with same structure instead of a real CivilDate.\r\n   * @param {Object} [options] - options\r\n   * @param {String} [options.timeZone] - Time zone name under tz database format.\r\n   * @return {CivilDate} Today as CivilDate.\r\n   * @see [List of tz database time zones]{@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones}\r\n   */\r\n  getToday({\r\n    timeZone = this.timeZone,\r\n  } = {}) {\r\n    const [\r\n      { value: year },\r\n      { value: month },\r\n      { value: day },\r\n    ] = this.formatDateToParts(new Date(), {\r\n      raw: 'yyyyMMdd',\r\n      timeZone,\r\n    });\r\n\r\n    return {\r\n      year: Number(year),\r\n      month: Number(month),\r\n      day: Number(day),\r\n      toString() { return `${year}-${month}-${day}`; },\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Synchronously get and evaluate a localized string template (or the string as-is if it's\r\n   *   not a template).\r\n   * If key not found, \"undefined\" will be returned, client code should check this for themselves.\r\n   * @param {string} key - The key of the string resource\r\n   * @param {Object} [model] - The model for the string template (if needed)\r\n   * @return {string} The template evaluation result\r\n   */\r\n  getString(key, ...args) {\r\n    let str = synchronousResource.call(this, key).getString(key, ...args);\r\n    if (_.isUndefined(str)) { // key is not surrounded by fixture _TL_\r\n      this.missingKeys[key] = true;\r\n      if (this.failFast) {\r\n        try {\r\n          throw new RangeError(`i18n.getString: key is missing _TL_ fixture - \"${key}\"`);\r\n        } catch (error) {\r\n          if (this.failFast !== 'SAFE') {\r\n            throw error;\r\n          } else {\r\n            _.defer(() => { throw error; });\r\n            str = key;\r\n          }\r\n        }\r\n      }\r\n    }\r\n    return str;\r\n  }\r\n\r\n  /**\r\n   * Synchronously get all the localized string data object passed to Resource from onload.\r\n   * @return {Object} An object of i18n key-localized value pair\r\n   */\r\n  getData() {\r\n    return {\r\n      ...synchronousResource.call(this, 'getData').data,\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Synchronously get quarter's translation.\r\n   * @param {Number} quarter - An integer from 1 to 4 which matches with 1st to 4th quarter\r\n   * @param {Object} [options] - options\r\n   * @param {String} [options.style=wide] - 'abbreviated', 'narrow' or 'wide'\r\n   * @return {String} The quarter's translation\r\n   */\r\n  getQuarter(quarter, {\r\n    style = 'wide',\r\n  } = {}) {\r\n    return this.getCldr().main(`dates/calendars/gregorian/quarters/stand-alone/${style}/${quarter}`);\r\n  }\r\n\r\n  /**\r\n   * Synchronously get month's translation.\r\n   * @param {Number} month - An integer from 1 to 12 which matches with January to December\r\n   * @param {Object} [options] - options\r\n   * @param {String} [options.style=wide] - 'abbreviated', 'narrow' or 'wide'\r\n   * @return {String} The month's translation\r\n   */\r\n  getMonth(month, {\r\n    style = 'wide',\r\n  } = {}) {\r\n    return this.getCldr().main(`dates/calendars/gregorian/months/stand-alone/${style}/${month}`);\r\n  }\r\n\r\n  /**\r\n   * Synchronously get day's translation.\r\n   * @param {String} day - 'sun', 'mon', 'tue', 'wed', 'thu', 'fri' or 'sat'\r\n   * @param {Object} [options] - options\r\n   * @param {String} [options.style=wide] - 'abbreviated', 'narrow', 'short' or 'wide'\r\n   * @return {String} The day's translation\r\n   */\r\n  getDay(day, {\r\n    style = 'wide',\r\n  } = {}) {\r\n    return this.getCldr().main(`dates/calendars/gregorian/days/stand-alone/${style}/${day}`);\r\n  }\r\n\r\n  /**\r\n   * Alias of [getDay]{@link I18nModel#getDay}\r\n   * @param {String} dayOfWeek - 'sun', 'mon', 'tue', 'wed', 'thu', 'fri' or 'sat'\r\n   * @param {Object} [options] - options\r\n   * @param {String} [options.style=wide] - 'abbreviated', 'narrow', 'short' or 'wide'\r\n   * @return {String} The day's translation\r\n   */\r\n  getDayOfWeek(dayOfWeek, options) {\r\n    return this.getDay(dayOfWeek, options);\r\n  }\r\n\r\n  /**\r\n   * Synchronously get currency's display name.\r\n   * @param {String} [currency=this.currency] - currency code under [ISO 4217]{@link https://www.iso.org/iso-4217-currency-codes.html}\r\n   * @return {String} The currency's display name\r\n   */\r\n  getCurrency(currency = this.currency) {\r\n    return this.getCldr().main(`numbers/currencies/${currency}/displayName`);\r\n  }\r\n\r\n  /**\r\n   * Synchronously get currency's symbol.\r\n   * @param {String} [currency=this.currency] - currency code under [ISO 4217]{@link https://www.iso.org/iso-4217-currency-codes.html}\r\n   * @param {Object} [options] - options\r\n   * @param {String} [options.alt] - undefined, 'narrow' or 'variant'.\r\n   *  'narrow' or 'variant' won't exist for sure.\r\n   *   when the data missing, it will fallback to the default symbol.\r\n   *   As an example:\r\n   *     for TRY (Turkish Lira), default symbol is 'TRY', narrow alt is '₺', variant alt is 'TL'\r\n   * @return {String} The currency's symbol\r\n   */\r\n  getCurrencySymbol(currency = this.currency, {\r\n    alt,\r\n  } = {}) {\r\n    const defaultSymbolKey = 'symbol';\r\n    const key = alt ? `symbol-alt-${alt}` : defaultSymbolKey;\r\n\r\n    return this.getCldr().main(`numbers/currencies/${currency}/${key}`) ||\r\n      this.getCldr().main(`numbers/currencies/${currency}/${defaultSymbolKey}`);\r\n  }\r\n\r\n  /**\r\n   * The object contains all patterns\r\n   * @typedef {Object} Patterns\r\n   * @property {string} [full] The full format pattern\r\n   * @property {string} [long] The long format pattern\r\n   * @property {string} [medium] The medium format pattern\r\n   * @property {string} [short] The short format pattern\r\n   */\r\n\r\n  /**\r\n   * The DateFormats contains date/dateTime/time format patterns\r\n   * @typedef {Object} DateFormats\r\n   * @property {string} [default] The default date format pattern\r\n   * @property {Patterns} [date] The date patterns\r\n   * @property {Patterns} [dateTime] The dateTime patterns\r\n   * @property {Patterns} [time] The time patterns\r\n   */\r\n\r\n  /**\r\n   * Synchronously get date format patterns for user's culture\r\n   * @return {DateFormats} The date format patterns object\r\n   */\r\n  getDateFormats() {\r\n    const calendar = this.getCldr().main('dates/calendars/gregorian');\r\n    const defaultProperties = ['full', 'long', 'medium', 'short'];\r\n\r\n    return {\r\n      default: calendar.dateTimeFormats.availableFormats.yMd, // Globalize will use yMd as the default date format pattern. https://github.com/globalizejs/globalize/blob/d5e98d1e3047ac722cce5817f8168268dd22ddf4/src/date.js#L136\r\n      date: _.pick(calendar.dateFormats, defaultProperties),\r\n      dateTime: _.pick(calendar.dateTimeFormats, defaultProperties),\r\n      time: _.pick(calendar.timeFormats, defaultProperties),\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Synchronously format decimal number with given options.\r\n   * @param {number} number - The number to be formatted\r\n   * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n   *    Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n   * @return {string} The formatted decimal number\r\n   */\r\n  formatDecimal(number, options) {\r\n    return this.decimalFormatter(options)(number);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously format decimal number with given options.\r\n   * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n   *    Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n   * @return {Function} The function formatting decimal number\r\n   */\r\n  decimalFormatter({\r\n    minimumIntegerDigits,\r\n    minimumFractionDigits,\r\n    maximumFractionDigits,\r\n    minimumSignificantDigits,\r\n    maximumSignificantDigits,\r\n    round,\r\n    useGrouping,\r\n    compact,\r\n    withSign = 'auto',\r\n  } = {}) {\r\n    return numberFormatterWithSign.call(this, withSign, {\r\n      style: 'decimal',\r\n      minimumIntegerDigits,\r\n      minimumFractionDigits,\r\n      maximumFractionDigits,\r\n      minimumSignificantDigits,\r\n      maximumSignificantDigits,\r\n      round,\r\n      useGrouping,\r\n      compact,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Synchronously format decimal number to fixed-point as toFixed(digits) with given options.\r\n   * This method is only a shortcut built on top of formatDecimal, it isn't in i18n interface\r\n   *   and shouldn't be used by shared components.\r\n   * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n   * @param {number} number - The number to be formatted\r\n   * @param {Object} [options] - options\r\n   * @param {number} [options.digits=2] - The number of fraction digits\r\n   * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n   *    Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n   * @return {string} The formatted decimal number\r\n   */\r\n  formatDecimalToFixed(number, options) {\r\n    return this.decimalToFixedFormatter(options)(number);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously format decimal number to fixed-point as toFixed(digits).\r\n   * This method is only a shortcut built on top of formatDecimal, it isn't in i18n interface\r\n   *   and shouldn't be used by shared components.\r\n   * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n   * @param {Object} [options] - options\r\n   * @param {number} [options.digits=2] - The number of fraction digits\r\n   * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n   *    Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n   * @return {Function} The function formatting decimal number\r\n   */\r\n  decimalToFixedFormatter({\r\n    digits = 2,\r\n    round,\r\n    useGrouping,\r\n    compact,\r\n    withSign = 'auto',\r\n  } = {}) {\r\n    return this.decimalFormatter({\r\n      minimumFractionDigits: digits,\r\n      maximumFractionDigits: digits,\r\n      round,\r\n      useGrouping,\r\n      compact,\r\n      withSign,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Synchronously format decimal number to integer as toFixed(0) with given options.\r\n   * This method is only a shortcut built on top of formatDecimal, it isn't in i18n interface\r\n   *   and shouldn't be used by shared components.\r\n   * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n   * @param {number} number - The number to be formatted\r\n   * @param {Object} [options] - options\r\n   * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n   *    Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n   * @return {string} The formatted decimal number\r\n   */\r\n  formatDecimalToInteger(number, options) {\r\n    return this.decimalToIntegerFormatter(options)(number);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously format decimal number to integer as toFixed(0).\r\n   * This method is only a shortcut built on top of formatDecimal, it isn't in i18n interface\r\n   *   and shouldn't be used by shared components.\r\n   * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n   * @param {Object} [options] - options\r\n   * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n   *    Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n   * @return {Function} The function formatting decimal number\r\n   */\r\n  decimalToIntegerFormatter({\r\n    round,\r\n    useGrouping,\r\n    compact,\r\n    withSign = 'auto',\r\n  } = {}) {\r\n    return this.decimalToFixedFormatter({\r\n      digits: 0,\r\n      round,\r\n      useGrouping,\r\n      compact,\r\n      withSign,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Synchronously parse decimal number.\r\n   * @param {string} value - The number string to be parsed\r\n   * @return {string} The parsed decimal number, NaN is value is invalid\r\n   */\r\n  parseDecimal(value) {\r\n    return this.decimalParser()(value);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously parse decimal number.\r\n   * @return {Function} The function parsing decimal number\r\n   */\r\n  decimalParser() {\r\n    return synchronousGlobalize.call(this).numberParser({\r\n      style: 'decimal',\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Synchronously validate decimal number, a simple wrapper of parseDecimal.\r\n   * @param {string} value - The number string to be validate\r\n   * @return {boolean} If value is string and valid.\r\n   *   Note: number is not valid too, as this method is for strings.\r\n   */\r\n  isValidDecimal(value) {\r\n    return this.decimalValidator()(value);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously validate decimal number.\r\n   * @return {Function} The function validating decimal number\r\n   */\r\n  decimalValidator() {\r\n    const parser = this.decimalParser();\r\n\r\n    return value => _.isString(value) && !_.isNaN(parser(value));\r\n  }\r\n\r\n  /**\r\n   * Synchronously format percent number with given options.\r\n   * @param {number} number - The number to be formatted\r\n   * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n   *    Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n   * @return {string} The formatted percent number\r\n   */\r\n  formatPercent(number, options) {\r\n    return this.percentFormatter(options)(number);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously format percent number with given options.\r\n   * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n   *    Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n   * @return {Function} The function formatting percent number\r\n   */\r\n  percentFormatter({\r\n    minimumIntegerDigits,\r\n    minimumFractionDigits,\r\n    maximumFractionDigits,\r\n    minimumSignificantDigits,\r\n    maximumSignificantDigits,\r\n    round,\r\n    useGrouping,\r\n    compact,\r\n    withSign = 'auto',\r\n  } = {}) {\r\n    return numberFormatterWithSign.call(this, withSign, {\r\n      style: 'percent',\r\n      minimumIntegerDigits,\r\n      minimumFractionDigits,\r\n      maximumFractionDigits,\r\n      minimumSignificantDigits,\r\n      maximumSignificantDigits,\r\n      round,\r\n      useGrouping,\r\n      compact,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Synchronously format percent number to fixed-point as toFixed(digits) with given options.\r\n   * This method is only a shortcut built on top of formatPercent, it isn't in i18n interface\r\n   *   and shouldn't be used by shared components.\r\n   * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n   * @param {number} number - The number to be formatted\r\n   * @param {Object} [options] - options\r\n   * @param {number} [options.digits=0] - The number of fraction digits\r\n   * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n   *    Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n   * @return {string} The formatted percent number\r\n   */\r\n  formatPercentToFixed(number, options) {\r\n    return this.percentToFixedFormatter(options)(number);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously format percent number to fixed-point as toFixed(digits).\r\n   * This method is only a shortcut built on top of percentFormatter, it isn't in i18n interface\r\n   *   and shouldn't be used by shared components.\r\n   * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n   * @param {Object} [options] - options\r\n   * @param {number} [options.digits=0] - The number of fraction digits\r\n   * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n   * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n   *    Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n   * @return {Function} The function formatting percent number\r\n   */\r\n  percentToFixedFormatter({\r\n    digits = 0,\r\n    round,\r\n    useGrouping,\r\n    compact,\r\n    withSign = 'auto',\r\n  } = {}) {\r\n    return this.percentFormatter({\r\n      minimumFractionDigits: digits,\r\n      maximumFractionDigits: digits,\r\n      round,\r\n      useGrouping,\r\n      compact,\r\n      withSign,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Synchronously parse percent number.\r\n   * @param {string} value - The number string to be parsed\r\n   * @return {string} The parsed percent number, NaN when value is invalid\r\n   */\r\n  parsePercent(value) {\r\n    return this.percentParser()(value);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously parse percent number.\r\n   * @return {Function} The function parsing percent number\r\n   */\r\n  percentParser() {\r\n    return synchronousGlobalize.call(this).numberParser({\r\n      style: 'percent',\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Synchronously validate percent number, a simple wrapper of parsePercent.\r\n   * @param {string} value - The number string to be validate\r\n   * @return {boolean} If value is string and valid\r\n   */\r\n  isValidPercent(value) {\r\n    return this.percentValidator()(value);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously validate percent number.\r\n   * @return {Function} The function validating percent number\r\n   */\r\n  percentValidator() {\r\n    const parser = this.percentParser();\r\n\r\n    return value => _.isString(value) && !_.isNaN(parser(value));\r\n  }\r\n\r\n  /**\r\n   * Synchronously format currency with given options.\r\n   * @param {number} number - The number to be formatted\r\n   * @param {string} currency - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n   * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n   * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n   *    Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n   * @param {string} [options.withSymbol=true] - Show currency symbol or not.\r\n   * @return {string} The formatted currency\r\n   */\r\n  formatCurrency(number, currency = this.currency, options) {\r\n    return this.currencyFormatter(currency, options)(number);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously format currency with given options.\r\n   * @param {string} currency - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n   * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n   * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n   *    Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n   * @param {string} [options.withSymbol=true] - Show currency symbol or not.\r\n   * @return {Function} The function formatting currency\r\n   */\r\n  currencyFormatter(currency = this.currency, options = {}) {\r\n    // Didn't do argument destructuring for options,\r\n    // due to currencyFormatter dose not format floating point correctly\r\n    // with some of the options undefined.\r\n    const { withSign, withSymbol } = options;\r\n\r\n    return currencyFormatterWithSymbol.call(this, currency, withSign, withSymbol, _.omit(options, 'withSign', 'withSymbol'));\r\n  }\r\n\r\n  /**\r\n   * Synchronously format date with given options.\r\n   * @param {Date} value - The date to be formatted\r\n   * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n   * @return {string} The formatted date\r\n   */\r\n  formatDate(value, options) {\r\n    return this.dateFormatter(options)(value);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously format date with given options.\r\n   * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n   * @return {Function} The function formatting date\r\n   */\r\n  dateFormatter(options) {\r\n    return synchronousGlobalize.call(this)\r\n      .dateFormatter(dateMethodOptions.call(this, options));\r\n  }\r\n\r\n  /**\r\n   * Synchronously format date into parts tokens with given options.\r\n   * @param {Date} value - The date to be formatted\r\n   * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n   * @return {Object[]} The formatted date parts\r\n   */\r\n  formatDateToParts(value, options) {\r\n    return this.dateToPartsFormatter(options)(value);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously format date into parts tokens with given options.\r\n   * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n   * @return {Function} The function formatting date to parts\r\n   */\r\n  dateToPartsFormatter(options) {\r\n    return synchronousGlobalize.call(this)\r\n      .dateToPartsFormatter(dateMethodOptions.call(this, options));\r\n  }\r\n\r\n  /**\r\n   * Synchronously parse date.\r\n   * @param {string} value - The date string to be parsed\r\n   * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-parser.md}\r\n   * @return {string} The parsed date, null when value is invalid\r\n   */\r\n  parseDate(value, options) {\r\n    return _.isString(value) ? this.dateParser(options)(value) : null;\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously parse date with given options.\r\n   * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n   * @return {Function} The function parsing date\r\n   */\r\n  dateParser(options) {\r\n    return synchronousGlobalize.call(this)\r\n      .dateParser(dateMethodOptions.call(this, options));\r\n  }\r\n\r\n  /**\r\n   * Synchronously validate date, a simple wrapper of parseDate.\r\n   * @param {string} value - The date string to be validate\r\n   * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-parser.md}\r\n   * @return {boolean} If value is string and valid\r\n   */\r\n  isValidDate(value, options) {\r\n    return this.dateValidator(options)(value);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously validate date with given options.\r\n   * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n   * @return {Function} The function validating date\r\n   */\r\n  dateValidator(options) {\r\n    const parser = this.dateParser(options);\r\n\r\n    return value => _.isString(value) && !_.isNull(parser(value));\r\n  }\r\n\r\n  /**\r\n   * Synchronously format civil date to localized string.\r\n   * @param {CivilDate} civilDate - The civil date to be formatted\r\n   * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n   *  except for 'timeZone', time', and 'datetime'.\r\n   *  As CivilDate doesn't have timeZone/time infomation.\r\n   * @return {string} The formatted civil date\r\n   * @see [Temporal Proposal]{@link https://github.com/tc39/proposal-temporal}\r\n   */\r\n  formatCivilDate(civilDate, options) {\r\n    return this.civilDateFormatter(options)(civilDate);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously format civil date into string with given options.\r\n   * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n   *  except for 'timeZone', time', and 'datetime'.\r\n   *  As CivilDate doesn't have timeZone/time infomation.\r\n   * @return {Function} The function formatting civil date to string\r\n   * @see [Temporal Proposal]{@link https://github.com/tc39/proposal-temporal}\r\n   */\r\n  civilDateFormatter(options) {\r\n    const dateFormatter = this.dateFormatter(_.defaults({\r\n      // we create a date under machine time zone from civilDate\r\n      timeZone: null,\r\n    }, _.omit(options, 'datetime', 'time')));\r\n\r\n    return civilDate => dateFormatter(new Date(civilDate.year, civilDate.month - 1, civilDate.day));\r\n  }\r\n\r\n  /**\r\n   * Synchronously parse civil date.\r\n   * @param {string} value - The date string to be parsed\r\n   * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n   *  except for 'timeZone', time', and 'datetime'.\r\n   *  As CivilDate doesn't have timeZone/time infomation.\r\n   * @return {string} The parsed civil date, null when value is invalid\r\n   * @see [Temporal Proposal]{@link https://github.com/tc39/proposal-temporal}\r\n   */\r\n  parseCivilDate(value, options) {\r\n    return this.civilDateParser(options)(value);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously parse civil date with given options.\r\n   * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n   *  except for 'timeZone', time', and 'datetime'.\r\n   *  As CivilDate doesn't have timeZone/time infomation.\r\n   * @return {Function} The function parsing civil date\r\n   * @see [Temporal Proposal]{@link https://github.com/tc39/proposal-temporal}\r\n   */\r\n  civilDateParser(options) {\r\n    const dateParser = this.dateParser(_.defaults({\r\n      // we create a date under machine time zone from civilDate\r\n      timeZone: 'UTC',\r\n    }, _.omit(options, 'datetime', 'time')));\r\n\r\n    return (value) => {\r\n      const date = dateParser(value);\r\n      // for now, we don't want introduce temporal as dependency of this package\r\n      return _.isDate(date) ? {\r\n        year: date.getUTCFullYear(),\r\n        month: date.getUTCMonth() + 1,\r\n        day: date.getUTCDate(),\r\n        toString() { return date.toISOString().substr(0, 10); },\r\n      } : null;\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Synchronously format unit with given options.\r\n   * @param {number} value - The number to be formatted\r\n   * @param {string} unit - The unit to be formatted\r\n   * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/unit/unit-formatter.md}\r\n   * @return {string} The formatted unit\r\n   */\r\n  formatUnit(value, unit, options) {\r\n    return this.unitFormatter(unit, options)(value);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously format unit with given options.\r\n   * @param {string} unit - The unit to be formatted\r\n   * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/unit/unit-formatter.md}\r\n   * @return {Function} The function formatting unit\r\n   */\r\n  unitFormatter(unit, {\r\n    form,\r\n    numberFormatter = this.decimalFormatter(),\r\n  } = {}) {\r\n    return synchronousGlobalize.call(this).unitFormatter(unit, {\r\n      form,\r\n      numberFormatter,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Synchronously format list with given options.\r\n   * @param {string[]} list - The list to be formatted\r\n   * @param {Object} [options] Same options as [Intl.ListFormat stage 2 proposal]{@link https://github.com/zbraniecki/proposal-intl-list-format}\r\n   * @param {Object} [options.style=regular] Could be one of \"regular\", \"regular-long\",\r\n   *   \"regular-short\", \"unit\", \"unit-long\", \"unit-short\", \"unit-narrow\"\r\n   * @return {string} The formatted list\r\n   */\r\n  formatList(list, options) {\r\n    return this.listFormatter(options)(list);\r\n  }\r\n\r\n  /**\r\n   * Return a function synchronously format list with given options.\r\n   * @param {Object} [options] Same options as [Intl.ListFormat stage 2 proposal]{@link https://github.com/zbraniecki/proposal-intl-list-format}\r\n   * @param {Object} [options.style=regular] Could be one of \"regular\", \"regular-long\",\r\n   *   \"regular-short\", \"unit\", \"unit-long\", \"unit-short\", \"unit-narrow\"\r\n   * @return {Function} The function formatting list\r\n   */\r\n  listFormatter({\r\n    style = 'regular',\r\n  } = {}) {\r\n    const [type, variant] = style.split('-');\r\n    const cldr = this.getCldr();\r\n    const cldrTypeName = _.compact([\r\n      type === 'regular' ? 'standard' : type,\r\n      variant === 'long' ? null : variant,\r\n    ]).join('-');\r\n    const listPattern = cldr.main(`listPatterns/listPattern-type-${cldrTypeName}`);\r\n    const template = pattern => ([first, second]) => pattern.replace('{0}', first).replace('{1}', second);\r\n    const twoTemplate = template(listPattern['2']);\r\n    const middleTemplate = template(listPattern.middle);\r\n    const startTemplate = template(listPattern.start);\r\n    const endTemplate = template(listPattern.end);\r\n\r\n    return (list) => {\r\n      const size = _.size(list);\r\n\r\n      if (size === 0) {\r\n        return '';\r\n      } else if (size === 1) {\r\n        return list[0];\r\n      }\r\n\r\n      if (size === 2) {\r\n        return twoTemplate(list);\r\n      }\r\n\r\n      const [first, second, ...rest] = list;\r\n      const middle = _.reduce(\r\n        _.initial(rest),\r\n        (memo, item) => middleTemplate([memo, item]),\r\n        second\r\n      );\r\n\r\n      return startTemplate([\r\n        first,\r\n        endTemplate([\r\n          middle,\r\n          _.last(list),\r\n        ]),\r\n      ]);\r\n    };\r\n  }\r\n\r\n  // Async API\r\n\r\n  /**\r\n   * Asynchronously get and evaluate a localized string template (or the string as-is if it's\r\n   *   not a template).\r\n   * @param {string} key - The key of the string resource\r\n   * @param {Object} [model] - The model for the string template (if needed)\r\n   * @return {Promise.<string>} A promise that resolves to the template evaluation result\r\n   */\r\n  fetchString(key, ...args) {\r\n    return this.p$data.then(({ resource }) => {\r\n      const str = resource.getString(key, ...args);\r\n      if (!str) {\r\n        this.missingKeys[key] = true;\r\n      }\r\n      return str;\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Asynchronously get locale used for this model.\r\n   * @returns {Promise.<string>} locale used for this model.\r\n   */\r\n  fetchLocale() {\r\n    return this.p$data.then(data => data.locale);\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8__;","import Promise from 'bluebird';\r\n\r\n/**\r\n * A helper to handle set/get global locale asynchronously.\r\n * @private\r\n */\r\nexport class LocaleManager {\r\n  constructor() {\r\n    this.p$global = new Promise((resolve) => {\r\n      this.resolveGlobalLocale = resolve;\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Get global locale promise.\r\n   * @returns {Promise.<string>} promise of global locale\r\n   * @private\r\n   */\r\n  p$globalLocale() {\r\n    return this.p$global;\r\n  }\r\n\r\n  /**\r\n   * Set global locale.\r\n   * @param {string} locale - global locale to set.\r\n   * @returns {Promise.<string>} promise of global locale\r\n   * @private\r\n   */\r\n  setGlobalLocale(locale) {\r\n    if (this.p$global.isFulfilled()) {\r\n      // has been inited\r\n      this.p$global = Promise.resolve(locale);\r\n    } else {\r\n      // first init\r\n      this.resolveGlobalLocale(locale);\r\n    }\r\n\r\n    return this.p$globalLocale();\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\n\r\n/**\r\n * Translation resource.\r\n * @private\r\n */\r\nexport class Resource {\r\n  /**\r\n   * Creates an instance of Resource.\r\n   * @param {Object} options - options\r\n   * @param {Object.<string, string>} data - key -> translation pairs.\r\n   * @param {string|bool} failFast - when got errors\r\n   *    \"SAFE\"  - ignore errors and try to recover by using keys\r\n   *     else   - throw errors and crash current execution\r\n   * @constructs Resource\r\n   * @private\r\n   */\r\n  constructor({\r\n    data,\r\n    failFast,\r\n  }) {\r\n    if (!_.isObject(data)) {\r\n      throw new Error('Localization data must be an Object');\r\n    }\r\n\r\n    this.data = data;\r\n    this.failFast = failFast;\r\n  }\r\n\r\n  /**\r\n   * Get translation of given key.\r\n   * When translation is Mustache.js-style template string, model will be filled in.\r\n   * @param {string} key - key of the message translated.\r\n   * @param {Object.<string, string>} [model] - model to be filled into the template string.\r\n   * @param {Function} [preprocess] - Function to use on the template before running curlyTemplate.\r\n   * @returns {string} the translation.\r\n   * @private\r\n   */\r\n  getString(key, model, {\r\n    preprocess = _.identity,\r\n  } = {}) {\r\n    if (!_.isString(key)) {\r\n      throw new Error('Localization key must be a String');\r\n    }\r\n\r\n    let ret = putil.get(this.data, key);\r\n\r\n    if (_.isNull(ret)) { // translation is not ready, use English text instead\r\n      ret = key;\r\n    }\r\n\r\n    if (ret) {\r\n      try {\r\n        ret = preprocess(ret);\r\n      } catch (ex) {\r\n        if (this.failFast === 'SAFE') {\r\n          // maybe there are some errors in the translated strings, try to recover by using the key\r\n          ret = preprocess(key);\r\n        } else {\r\n          throw ex;\r\n        }\r\n      }\r\n\r\n      if (!_.isString(ret)) {\r\n        throw new Error(`Preprocess function must return a String. ${key}`);\r\n      }\r\n\r\n      if (model) {\r\n        try {\r\n          const compiled = putil.curlyTemplate(ret);\r\n          ret = compiled(model);\r\n        } catch (ex) {\r\n          if (this.failFast === 'SAFE') {\r\n            // maybe there are some errors in the translated strings, try to recover by using the key\r\n            const compiled = putil.curlyTemplate(key);\r\n            ret = compiled(model);\r\n          } else {\r\n            throw ex;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    return ret;\r\n  }\r\n}\r\n","export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}","\r\n\r\nexport * from './src/index';\r\n","export * from './fixed-i18n-mock';\r\nexport * from './model-i18n-mock';\r\nexport * from './static-i18n-mock';\r\nexport * from './static-i18n-model-mock';\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { staticI18nMock } from './static-i18n-mock';\r\n\r\nconst {\r\n  isValidDecimal,\r\n  parseDecimal,\r\n  formatDecimal,\r\n} = staticI18nMock;\r\n\r\nclass FixedI18nMock {\r\n  constructor(dictionary) {\r\n    this.dictionary = dictionary;\r\n  }\r\n\r\n  getString(key, model) {\r\n    if (!_.isString(key)) {\r\n      throw new Error('Localization key must be a String');\r\n    }\r\n\r\n    if (!_.has(this.dictionary, key)) {\r\n      return key;\r\n    }\r\n\r\n    let ret = this.dictionary[key];\r\n\r\n    if (ret && model) {\r\n      const compiled = putil.curlyTemplate(ret);\r\n\r\n      ret = compiled(model);\r\n    }\r\n\r\n    return ret;\r\n  }\r\n}\r\n\r\n_.extend(FixedI18nMock.prototype, {\r\n  isValidDecimal,\r\n  parseDecimal,\r\n  formatDecimal,\r\n});\r\n\r\nexport { FixedI18nMock };\r\n","import _ from 'underscore';\r\n\r\nexport const staticI18nMock = {\r\n  getString: _.identity,\r\n  isValidDecimal: value => !_.isNaN(parseFloat(value)),\r\n  parseDecimal: str => parseFloat(str),\r\n  formatDecimal: float => `${float}`,\r\n};\r\n","import _ from 'underscore';\r\nimport Globalize from 'globalize';\r\nimport core from '@bingads-webui-universal/i18n-cldr-data-modern/core.json';\r\nimport enLocale from '@bingads-webui-universal/i18n-cldr-data-modern/locales/en.json';\r\nimport { I18nModel } from '@bingads-webui-universal/i18n-model';\r\nimport { ModuleI18nShim } from './shims/module-i18n-shim';\r\nimport { ComponentI18nShim } from './shims/component-i18n-shim';\r\n\r\nconst currency = 'USD';\r\nconst locale = 'en-US';\r\nI18nModel.setGlobalLocale(locale);\r\n\r\nGlobalize.load(core, enLocale);\r\n// eslint-disable-next-line\r\nGlobalize.loadTimeZone(require('iana-tz-data')); // JSON data\r\n\r\nexport const modelI18nMock = ({ dictionary = {}, options = {} } = {}) =>\r\n  // Initializeing the I18nModel in the synchronous mode\r\n  new I18nModel(_.extendOwn({\r\n    locale,\r\n    loadCLDRData: () => locale,\r\n    loadTranslationData: () => dictionary,\r\n    currency,\r\n  }, options));\r\n\r\n// mocks 'component/i18n/loader'\r\nexport const modelComponentI18nMock = ({ dictionary = {}, options = {} } = {}) =>\r\n  new ComponentI18nShim(modelI18nMock({ dictionary, options }));\r\n\r\n// mocks 'module/extension/requirejs/i18n'\r\nexport const modelModuleI18nMock = ({ dictionary = {}, options = {} } = {}) =>\r\n  new ModuleI18nShim(modelI18nMock({ dictionary, options }));\r\n\r\n// Generates the object to mock such calls:\r\n// var i18n = window.globalLegacyI18n.get('component/i18n/loader!component/upgraded-url');\r\n//\r\n// Usage example:\r\n// const globalLegacyI18n = modelGlobalLegacyI18n({ options: { failFast: 'SAFE' }, dictionary: strings });\r\n// window.globalLegacyI18n = globalLegacyI18n;\r\n// ...\r\n// export const StyledApp = withI18n(withDefaultStyles(App, getAppStyles), globalLegacyI18n.main);\r\nexport const modelGlobalLegacyI18n = ({ dictionary = {}, options = {} } = {}) => (modelI18n => ({\r\n  get(i18nRequireRequest) {\r\n    const loaderName = i18nRequireRequest.split('!')[0];\r\n    if (loaderName === 'component/i18n/loader') {\r\n      return new ComponentI18nShim(modelI18n);\r\n    } else if (loaderName === 'module/extension/requirejs/i18n') {\r\n      return new ModuleI18nShim(modelI18n);\r\n    }\r\n    return modelI18n;\r\n  },\r\n\r\n  main: modelI18n,\r\n}))(modelI18nMock({ dictionary, options }));\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__9__;","module.exports = __WEBPACK_EXTERNAL_MODULE__10__;","module.exports = __WEBPACK_EXTERNAL_MODULE__11__;","import _ from 'underscore';\r\nimport { safeGetString } from './string-utils';\r\n\r\n/* eslint-disable no-throw-literal, prefer-rest-params, no-plusplus, prefer-spread */\r\nexport class ModuleI18nShim {\r\n  constructor(realI18n) {\r\n    this.realI18n = realI18n;\r\n  }\r\n\r\n  getString(key) {\r\n    if (!_.isString(key)) {\r\n      throw 'Localization key was not a String';\r\n    }\r\n\r\n    let res = safeGetString(this.realI18n, key) || '';\r\n\r\n    if (res) {\r\n      if (arguments.length > 1) {\r\n        for (let i = 1; i < arguments.length; i++) {\r\n          const regex = new RegExp(`\\\\{${i - 1}\\\\}`, 'gi');\r\n\r\n          res = res.replace(regex, arguments[i]);\r\n        }\r\n      }\r\n    }\r\n\r\n    return res || '';\r\n  }\r\n\r\n  getStringOrDefault(key, defValue) {\r\n    if (!_.isString(key)) {\r\n      throw 'Localization key was not a String';\r\n    }\r\n\r\n    if (!_.isString(defValue)) {\r\n      throw 'The default value must be specified and must be a String';\r\n    }\r\n\r\n    const args = _.toArray(arguments);\r\n    args.splice(1, 1);\r\n\r\n    return this.getString.apply(this, args) || defValue;\r\n  }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function checkKey(key) {\r\n  return !_.isString(key);\r\n}\r\n\r\nexport const safeGetString = (realI18n, key) => {\r\n  if (key === '') {\r\n    return '';\r\n  }\r\n\r\n  try {\r\n    return realI18n.getString(key);\r\n  } catch (e) {\r\n    if (e.name === 'RangeError') {\r\n      return undefined;\r\n    }\r\n    throw e;\r\n  }\r\n};\r\n","import { curlyTemplate } from '@bingads-webui-universal/primitive-utilities';\r\nimport { checkKey, safeGetString } from './string-utils';\r\n\r\nexport class ComponentI18nShim {\r\n  constructor(realI18n) {\r\n    this.realI18n = realI18n;\r\n  }\r\n\r\n  getString(key, ...args) {\r\n    if (checkKey(key)) return '';\r\n\r\n    let res = safeGetString(this.realI18n, key) || '';\r\n\r\n    if (res) {\r\n      // eslint-disable-next-line\r\n      for (const i in args) {\r\n        const regex = new RegExp(`\\\\{${i}\\\\}`, 'gi');\r\n\r\n        res = res.replace(regex, args[i]);\r\n      }\r\n    }\r\n\r\n    return res || '';\r\n  }\r\n\r\n  get(key, model /* , options */) {\r\n    if (checkKey(key)) return '';\r\n\r\n    let ret = safeGetString(this.realI18n, key);\r\n\r\n    if (ret) {\r\n      if (model) {\r\n        const compiled = curlyTemplate(ret);\r\n\r\n        ret = compiled(model);\r\n      }\r\n    }\r\n\r\n    return ret;\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__15__;","import _ from 'underscore';\r\nimport core from '@bingads-webui-universal/i18n-cldr-data-modern/core.json';\r\nimport enLocale from '@bingads-webui-universal/i18n-cldr-data-modern/locales/en.json';\r\nimport timeZoneData from 'iana-tz-data/iana-tz-data.json';\r\nimport { I18nModel } from '@bingads-webui-universal/i18n-model';\r\nimport { curlyTemplate } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nI18nModel.setGlobalLocale('en-US');\r\nI18nModel.loadCLDRData(core);\r\nI18nModel.loadCLDRData(enLocale);\r\nI18nModel.loadTimeZoneData(timeZoneData);\r\n\r\nconst staticI18nModelMock = new I18nModel({\r\n  loadCLDRData: loc => loc,\r\n  loadTranslationData: () => ({}),\r\n  failFast: true,\r\n});\r\n\r\nstaticI18nModelMock.ready();\r\nstaticI18nModelMock.getString = (key, model, { preprocess = _.identity } = {}) => {\r\n  let ret = key;\r\n  if (ret) {\r\n    ret = preprocess(ret);\r\n\r\n    if (model) {\r\n      const compiled = curlyTemplate(ret);\r\n\r\n      ret = compiled(model);\r\n    }\r\n  }\r\n\r\n  return ret;\r\n};\r\n\r\nexport { staticI18nModelMock };\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__17__;","module.exports = __WEBPACK_EXTERNAL_MODULE__28__;","\r\n\r\nexport * from './src/index';\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport URI from 'urijs';\r\nimport topDomainList from './top-domain';\r\n\r\nexport function join(first: string, ...frags: string[]) {\r\n  return frags.reduce((memo, frag) => {\r\n    if (_.isEmpty(frag)) {\r\n      return memo;\r\n    }\r\n    const eSlash = /\\/$/.test(memo);\r\n    const sSlash = /^\\//.test(frag);\r\n\r\n    if (!eSlash && !sSlash) {\r\n      return `${memo}/${frag}`;\r\n    } else if (eSlash && sSlash) {\r\n      return memo + frag.substring(1);\r\n    }\r\n    return memo + frag;\r\n  }, first);\r\n}\r\n\r\ntype QueryObject = any[] | JQuery.PlainObject | JQuery;\r\n\r\nexport function queryify(url: string, data: QueryObject, serializeParam = (originalData: QueryObject) => $.param(originalData)) {\r\n  const startOfRoute = url.indexOf('#');\r\n  let route = '';\r\n  let pathAndQuery = url;\r\n\r\n  if (startOfRoute !== -1) {\r\n    route = url.substring(startOfRoute);\r\n    pathAndQuery = url.substring(0, startOfRoute);\r\n  }\r\n\r\n  // $.param is not supported by node, so use custom param serialization function\r\n  return pathAndQuery + (pathAndQuery.indexOf('?') === -1 ? '?' : '&') + serializeParam(data) + route;\r\n}\r\n\r\nexport function mailto(recipient: string, subject: string, body: string) {\r\n  return `mailto:${recipient}?subject=${subject}&body=${body}`;\r\n}\r\n\r\nexport function setUrlParameter(name: string, value: string, url = window.location.href, options = { keepSqBrackets: false }) {\r\n  const keepSqBrackets = !!options.keepSqBrackets;\r\n\r\n  const setQueryStringParam = function (innerUrl: string, originalN: string, v: string, replaceOnly: boolean) {\r\n    let n = originalN;\r\n    if (!keepSqBrackets) {\r\n      n = n.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n    }\r\n    const regex = new RegExp(`([\\\\?&])${n}=.*?(&|$|#)`);\r\n    if (innerUrl.match(regex)) {\r\n      return innerUrl.replace(regex, `$1${n}=${v}$2`);\r\n    }\r\n    if (!replaceOnly) {\r\n      let qs = '';\r\n      const position = innerUrl.indexOf('?');\r\n      if (position > -1) {\r\n        if (position + 1 < innerUrl.length) {\r\n          qs = '&';\r\n        }\r\n      } else {\r\n        qs = '?';\r\n      }\r\n      return `${innerUrl + qs + n}=${v}`;\r\n    }\r\n    return innerUrl;\r\n  };\r\n\r\n  const pound = url.lastIndexOf('#');\r\n  if (pound > -1) {\r\n    return setQueryStringParam(url.slice(0, pound), name, value, false)\r\n      + setQueryStringParam(url.slice(pound), name, value, true);\r\n  }\r\n\r\n  return setQueryStringParam(url, name, value, false);\r\n}\r\n\r\n// Gets the url parameter value by parameter name.\r\nexport function getParameter(originalName: string, url = window.location.href) {\r\n  const name = originalName.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n  const value = (RegExp(`[\\\\?&]${name}=([^&#]*)`).exec(url) || [null, null])[1];\r\n  if (value) return decodeURIComponent(value);\r\n  return value;\r\n}\r\n\r\n// Update the url parameter by parameter name and value.\r\nexport function updateParameter(key: string, value: string, originalUrl: string) {\r\n  const re = new RegExp(`([?|&])${key}=.*?(&|#|$)`, 'i');\r\n  let url = originalUrl;\r\n  if (url.match(re)) {\r\n    return url.replace(re, `$1${key}=${value}$2`);\r\n  }\r\n\r\n  let hash = '';\r\n  if (url.indexOf('#') !== -1) {\r\n    hash = url.replace(/.*#/, '#');\r\n    url = url.replace(/#.*/, '');\r\n  }\r\n  const separator = url.indexOf('?') !== -1 ? '&' : '?';\r\n  return `${url + separator + key}=${value}${hash}`;\r\n}\r\n\r\nexport function hasScheme(url: string) {\r\n  const urlRegex = new RegExp('^(http|https|ftp)(://)(.+)', 'i');\r\n  return urlRegex.test(url);\r\n}\r\n\r\nexport function hasProtocol(url: string) {\r\n  const urlRegex = new RegExp('^(http|https|ftp)(://)', 'i');\r\n  return urlRegex.test(url);\r\n}\r\n\r\nexport function extendPath(url: string, path: string) {\r\n  const queryIndex = url.indexOf('?');\r\n  if (queryIndex === -1) {\r\n    return join(url, path);\r\n  }\r\n\r\n  return join(url.slice(0, queryIndex), path) + url.slice(queryIndex);\r\n}\r\n\r\nexport function getDomain(originalUrl: string) {\r\n  let url = originalUrl;\r\n  if (!_.isString(url) || _.isEmpty(url.trim())) {\r\n    return '';\r\n  }\r\n\r\n  url = url.trim();\r\n  const a = document.createElement('a');\r\n  let domain = '';\r\n  a.href = hasProtocol(url) ? url : (`http://${url}`);\r\n\r\n  try {\r\n    const { hostname } = a;\r\n    const startIndex = url.toLowerCase().indexOf(hostname);\r\n\r\n    domain = (startIndex === -1 ? '' : url.substring(startIndex, hostname.length + startIndex));\r\n  } catch (err) {\r\n    domain = '';\r\n  }\r\n\r\n  return domain;\r\n}\r\n\r\nexport function isRelativeUrl(url: string) {\r\n  return _.isString(url) && (url.indexOf('/') === 0);\r\n}\r\n\r\nexport function isInternalUrl(url: string, domainsToCheck = ['ads.microsoft.com', 'ads-int.microsoft.com', 'corp.microsoft.com']) {\r\n  if (isRelativeUrl(url)) {\r\n    return true;\r\n  }\r\n\r\n  const domain = getDomain(url).toLowerCase();\r\n\r\n  return (domain === 'localhost') ||\r\n  _.any(domainsToCheck, toCheck => domain.indexOf(toCheck.toLowerCase()) > -1);\r\n}\r\n\r\nexport function getUrlWithProtocol(website: string) {\r\n  const site = website.trim();\r\n  const uri = new URI(site);\r\n\r\n  if (uri.protocol()) {\r\n    return uri.toString();\r\n  }\r\n\r\n  return URI(site).protocol('https').toString();\r\n}\r\n\r\nexport function isValidUrlWithValidTopDomain(url: string) {\r\n  const regex = /^https?:\\/\\/([a-z0-9-_]+\\.)*[a-z0-9-_]+\\.([a-z]{2,63})(?=$|\\/|\\?)/i;\r\n  const matchs = url.match(regex);\r\n  const topLevelDomain = _.result(matchs, '2');\r\n  return _.isString(url) && regex.test(url) &&\r\n    topLevelDomain && _.contains(topDomainList, topLevelDomain.toUpperCase());\r\n}\r\n\r\n// Regular expressions used to determine if a URL starts with a valid domain name.\r\n// Similar regex to Microsoft.Ads.Mca.Implementation.Ads.EO.ValidationHelper.ValidateWebsite\r\nexport const UrlRegex = /^https?:\\/\\/([a-z0-9-_]+\\.)*[a-z0-9-_]+\\.[a-z]{2,63}(?=$|\\/|\\?)/i;\r\nexport const UrlRegexWithOptionalProtocol = /^(?:http(s)?:\\/\\/)?([a-z0-9-_]+\\.)*[a-z0-9-_]+\\.[a-z]{2,63}(?=$|\\/|\\?)/i;\r\n\r\n/**\r\n * Validate a HTTP or HTTPS URL.\r\n * @param {String} url - Fully qualified URL, including the prefix. E.g. http://www.example.com/foo\r\n * @returns {Boolean} - True if the URL is valid.\r\n */\r\nexport function isValidUrl(url: string) {\r\n  return _.isString(url) && UrlRegex.test(url);\r\n}\r\n\r\n/**\r\n * Extracts the protocol and domain from a URL, with no trailing slash.\r\n * @param {String} url - URL to extract from, e.g. 'https://abc-123.com/foo.html'\r\n * @returns {String} - Protocol and domain name, or null if url could not be parsed.\r\n */\r\nexport function getUrlProtocolAndDomain(url: string) {\r\n  const matches = url.match(UrlRegex);\r\n  if (matches) {\r\n    const result = _.first(matches);\r\n    return result || '';\r\n  }\r\n  return '';\r\n}\r\n","// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\r\n// # Version 2022101900, Last Updated Wed Oct 19 07:07:01 2022 UTC\r\n\r\nexport default [\r\n  'AAA',\r\n  'AARP',\r\n  'ABARTH',\r\n  'ABB',\r\n  'ABBOTT',\r\n  'ABBVIE',\r\n  'ABC',\r\n  'ABLE',\r\n  'ABOGADO',\r\n  'ABUDHABI',\r\n  'AC',\r\n  'ACADEMY',\r\n  'ACCENTURE',\r\n  'ACCOUNTANT',\r\n  'ACCOUNTANTS',\r\n  'ACO',\r\n  'ACTOR',\r\n  'AD',\r\n  'ADAC',\r\n  'ADS',\r\n  'ADULT',\r\n  'AE',\r\n  'AEG',\r\n  'AERO',\r\n  'AETNA',\r\n  'AF',\r\n  'AFL',\r\n  'AFRICA',\r\n  'AG',\r\n  'AGAKHAN',\r\n  'AGENCY',\r\n  'AI',\r\n  'AIG',\r\n  'AIRBUS',\r\n  'AIRFORCE',\r\n  'AIRTEL',\r\n  'AKDN',\r\n  'AL',\r\n  'ALFAROMEO',\r\n  'ALIBABA',\r\n  'ALIPAY',\r\n  'ALLFINANZ',\r\n  'ALLSTATE',\r\n  'ALLY',\r\n  'ALSACE',\r\n  'ALSTOM',\r\n  'AM',\r\n  'AMAZON',\r\n  'AMERICANEXPRESS',\r\n  'AMERICANFAMILY',\r\n  'AMEX',\r\n  'AMFAM',\r\n  'AMICA',\r\n  'AMSTERDAM',\r\n  'ANALYTICS',\r\n  'ANDROID',\r\n  'ANQUAN',\r\n  'ANZ',\r\n  'AO',\r\n  'AOL',\r\n  'APARTMENTS',\r\n  'APP',\r\n  'APPLE',\r\n  'AQ',\r\n  'AQUARELLE',\r\n  'AR',\r\n  'ARAB',\r\n  'ARAMCO',\r\n  'ARCHI',\r\n  'ARMY',\r\n  'ARPA',\r\n  'ART',\r\n  'ARTE',\r\n  'AS',\r\n  'ASDA',\r\n  'ASIA',\r\n  'ASSOCIATES',\r\n  'AT',\r\n  'ATHLETA',\r\n  'ATTORNEY',\r\n  'AU',\r\n  'AUCTION',\r\n  'AUDI',\r\n  'AUDIBLE',\r\n  'AUDIO',\r\n  'AUSPOST',\r\n  'AUTHOR',\r\n  'AUTO',\r\n  'AUTOS',\r\n  'AVIANCA',\r\n  'AW',\r\n  'AWS',\r\n  'AX',\r\n  'AXA',\r\n  'AZ',\r\n  'AZURE',\r\n  'BA',\r\n  'BABY',\r\n  'BAIDU',\r\n  'BANAMEX',\r\n  'BANANAREPUBLIC',\r\n  'BAND',\r\n  'BANK',\r\n  'BAR',\r\n  'BARCELONA',\r\n  'BARCLAYCARD',\r\n  'BARCLAYS',\r\n  'BAREFOOT',\r\n  'BARGAINS',\r\n  'BASEBALL',\r\n  'BASKETBALL',\r\n  'BAUHAUS',\r\n  'BAYERN',\r\n  'BB',\r\n  'BBC',\r\n  'BBT',\r\n  'BBVA',\r\n  'BCG',\r\n  'BCN',\r\n  'BD',\r\n  'BE',\r\n  'BEATS',\r\n  'BEAUTY',\r\n  'BEER',\r\n  'BENTLEY',\r\n  'BERLIN',\r\n  'BEST',\r\n  'BESTBUY',\r\n  'BET',\r\n  'BF',\r\n  'BG',\r\n  'BH',\r\n  'BHARTI',\r\n  'BI',\r\n  'BIBLE',\r\n  'BID',\r\n  'BIKE',\r\n  'BING',\r\n  'BINGO',\r\n  'BIO',\r\n  'BIZ',\r\n  'BJ',\r\n  'BLACK',\r\n  'BLACKFRIDAY',\r\n  'BLOCKBUSTER',\r\n  'BLOG',\r\n  'BLOOMBERG',\r\n  'BLUE',\r\n  'BM',\r\n  'BMS',\r\n  'BMW',\r\n  'BN',\r\n  'BNPPARIBAS',\r\n  'BO',\r\n  'BOATS',\r\n  'BOEHRINGER',\r\n  'BOFA',\r\n  'BOM',\r\n  'BOND',\r\n  'BOO',\r\n  'BOOK',\r\n  'BOOKING',\r\n  'BOSCH',\r\n  'BOSTIK',\r\n  'BOSTON',\r\n  'BOT',\r\n  'BOUTIQUE',\r\n  'BOX',\r\n  'BR',\r\n  'BRADESCO',\r\n  'BRIDGESTONE',\r\n  'BROADWAY',\r\n  'BROKER',\r\n  'BROTHER',\r\n  'BRUSSELS',\r\n  'BS',\r\n  'BT',\r\n  'BUILD',\r\n  'BUILDERS',\r\n  'BUSINESS',\r\n  'BUY',\r\n  'BUZZ',\r\n  'BV',\r\n  'BW',\r\n  'BY',\r\n  'BZ',\r\n  'BZH',\r\n  'CA',\r\n  'CAB',\r\n  'CAFE',\r\n  'CAL',\r\n  'CALL',\r\n  'CALVINKLEIN',\r\n  'CAM',\r\n  'CAMERA',\r\n  'CAMP',\r\n  'CANON',\r\n  'CAPETOWN',\r\n  'CAPITAL',\r\n  'CAPITALONE',\r\n  'CAR',\r\n  'CARAVAN',\r\n  'CARDS',\r\n  'CARE',\r\n  'CAREER',\r\n  'CAREERS',\r\n  'CARS',\r\n  'CASA',\r\n  'CASE',\r\n  'CASH',\r\n  'CASINO',\r\n  'CAT',\r\n  'CATERING',\r\n  'CATHOLIC',\r\n  'CBA',\r\n  'CBN',\r\n  'CBRE',\r\n  'CBS',\r\n  'CC',\r\n  'CD',\r\n  'CENTER',\r\n  'CEO',\r\n  'CERN',\r\n  'CF',\r\n  'CFA',\r\n  'CFD',\r\n  'CG',\r\n  'CH',\r\n  'CHANEL',\r\n  'CHANNEL',\r\n  'CHARITY',\r\n  'CHASE',\r\n  'CHAT',\r\n  'CHEAP',\r\n  'CHINTAI',\r\n  'CHRISTMAS',\r\n  'CHROME',\r\n  'CHURCH',\r\n  'CI',\r\n  'CIPRIANI',\r\n  'CIRCLE',\r\n  'CISCO',\r\n  'CITADEL',\r\n  'CITI',\r\n  'CITIC',\r\n  'CITY',\r\n  'CITYEATS',\r\n  'CK',\r\n  'CL',\r\n  'CLAIMS',\r\n  'CLEANING',\r\n  'CLICK',\r\n  'CLINIC',\r\n  'CLINIQUE',\r\n  'CLOTHING',\r\n  'CLOUD',\r\n  'CLUB',\r\n  'CLUBMED',\r\n  'CM',\r\n  'CN',\r\n  'CO',\r\n  'COACH',\r\n  'CODES',\r\n  'COFFEE',\r\n  'COLLEGE',\r\n  'COLOGNE',\r\n  'COM',\r\n  'COMCAST',\r\n  'COMMBANK',\r\n  'COMMUNITY',\r\n  'COMPANY',\r\n  'COMPARE',\r\n  'COMPUTER',\r\n  'COMSEC',\r\n  'CONDOS',\r\n  'CONSTRUCTION',\r\n  'CONSULTING',\r\n  'CONTACT',\r\n  'CONTRACTORS',\r\n  'COOKING',\r\n  'COOKINGCHANNEL',\r\n  'COOL',\r\n  'COOP',\r\n  'CORSICA',\r\n  'COUNTRY',\r\n  'COUPON',\r\n  'COUPONS',\r\n  'COURSES',\r\n  'CPA',\r\n  'CR',\r\n  'CREDIT',\r\n  'CREDITCARD',\r\n  'CREDITUNION',\r\n  'CRICKET',\r\n  'CROWN',\r\n  'CRS',\r\n  'CRUISE',\r\n  'CRUISES',\r\n  'CU',\r\n  'CUISINELLA',\r\n  'CV',\r\n  'CW',\r\n  'CX',\r\n  'CY',\r\n  'CYMRU',\r\n  'CYOU',\r\n  'CZ',\r\n  'DABUR',\r\n  'DAD',\r\n  'DANCE',\r\n  'DATA',\r\n  'DATE',\r\n  'DATING',\r\n  'DATSUN',\r\n  'DAY',\r\n  'DCLK',\r\n  'DDS',\r\n  'DE',\r\n  'DEAL',\r\n  'DEALER',\r\n  'DEALS',\r\n  'DEGREE',\r\n  'DELIVERY',\r\n  'DELL',\r\n  'DELOITTE',\r\n  'DELTA',\r\n  'DEMOCRAT',\r\n  'DENTAL',\r\n  'DENTIST',\r\n  'DESI',\r\n  'DESIGN',\r\n  'DEV',\r\n  'DHL',\r\n  'DIAMONDS',\r\n  'DIET',\r\n  'DIGITAL',\r\n  'DIRECT',\r\n  'DIRECTORY',\r\n  'DISCOUNT',\r\n  'DISCOVER',\r\n  'DISH',\r\n  'DIY',\r\n  'DJ',\r\n  'DK',\r\n  'DM',\r\n  'DNP',\r\n  'DO',\r\n  'DOCS',\r\n  'DOCTOR',\r\n  'DOG',\r\n  'DOMAINS',\r\n  'DOT',\r\n  'DOWNLOAD',\r\n  'DRIVE',\r\n  'DTV',\r\n  'DUBAI',\r\n  'DUNLOP',\r\n  'DUPONT',\r\n  'DURBAN',\r\n  'DVAG',\r\n  'DVR',\r\n  'DZ',\r\n  'EARTH',\r\n  'EAT',\r\n  'EC',\r\n  'ECO',\r\n  'EDEKA',\r\n  'EDU',\r\n  'EDUCATION',\r\n  'EE',\r\n  'EG',\r\n  'EMAIL',\r\n  'EMERCK',\r\n  'ENERGY',\r\n  'ENGINEER',\r\n  'ENGINEERING',\r\n  'ENTERPRISES',\r\n  'EPSON',\r\n  'EQUIPMENT',\r\n  'ER',\r\n  'ERICSSON',\r\n  'ERNI',\r\n  'ES',\r\n  'ESQ',\r\n  'ESTATE',\r\n  'ET',\r\n  'ETISALAT',\r\n  'EU',\r\n  'EUROVISION',\r\n  'EUS',\r\n  'EVENTS',\r\n  'EXCHANGE',\r\n  'EXPERT',\r\n  'EXPOSED',\r\n  'EXPRESS',\r\n  'EXTRASPACE',\r\n  'FAGE',\r\n  'FAIL',\r\n  'FAIRWINDS',\r\n  'FAITH',\r\n  'FAMILY',\r\n  'FAN',\r\n  'FANS',\r\n  'FARM',\r\n  'FARMERS',\r\n  'FASHION',\r\n  'FAST',\r\n  'FEDEX',\r\n  'FEEDBACK',\r\n  'FERRARI',\r\n  'FERRERO',\r\n  'FI',\r\n  'FIAT',\r\n  'FIDELITY',\r\n  'FIDO',\r\n  'FILM',\r\n  'FINAL',\r\n  'FINANCE',\r\n  'FINANCIAL',\r\n  'FIRE',\r\n  'FIRESTONE',\r\n  'FIRMDALE',\r\n  'FISH',\r\n  'FISHING',\r\n  'FIT',\r\n  'FITNESS',\r\n  'FJ',\r\n  'FK',\r\n  'FLICKR',\r\n  'FLIGHTS',\r\n  'FLIR',\r\n  'FLORIST',\r\n  'FLOWERS',\r\n  'FLY',\r\n  'FM',\r\n  'FO',\r\n  'FOO',\r\n  'FOOD',\r\n  'FOODNETWORK',\r\n  'FOOTBALL',\r\n  'FORD',\r\n  'FOREX',\r\n  'FORSALE',\r\n  'FORUM',\r\n  'FOUNDATION',\r\n  'FOX',\r\n  'FR',\r\n  'FREE',\r\n  'FRESENIUS',\r\n  'FRL',\r\n  'FROGANS',\r\n  'FRONTDOOR',\r\n  'FRONTIER',\r\n  'FTR',\r\n  'FUJITSU',\r\n  'FUN',\r\n  'FUND',\r\n  'FURNITURE',\r\n  'FUTBOL',\r\n  'FYI',\r\n  'GA',\r\n  'GAL',\r\n  'GALLERY',\r\n  'GALLO',\r\n  'GALLUP',\r\n  'GAME',\r\n  'GAMES',\r\n  'GAP',\r\n  'GARDEN',\r\n  'GAY',\r\n  'GB',\r\n  'GBIZ',\r\n  'GD',\r\n  'GDN',\r\n  'GE',\r\n  'GEA',\r\n  'GENT',\r\n  'GENTING',\r\n  'GEORGE',\r\n  'GF',\r\n  'GG',\r\n  'GGEE',\r\n  'GH',\r\n  'GI',\r\n  'GIFT',\r\n  'GIFTS',\r\n  'GIVES',\r\n  'GIVING',\r\n  'GL',\r\n  'GLASS',\r\n  'GLE',\r\n  'GLOBAL',\r\n  'GLOBO',\r\n  'GM',\r\n  'GMAIL',\r\n  'GMBH',\r\n  'GMO',\r\n  'GMX',\r\n  'GN',\r\n  'GODADDY',\r\n  'GOLD',\r\n  'GOLDPOINT',\r\n  'GOLF',\r\n  'GOO',\r\n  'GOODYEAR',\r\n  'GOOG',\r\n  'GOOGLE',\r\n  'GOP',\r\n  'GOT',\r\n  'GOV',\r\n  'GP',\r\n  'GQ',\r\n  'GR',\r\n  'GRAINGER',\r\n  'GRAPHICS',\r\n  'GRATIS',\r\n  'GREEN',\r\n  'GRIPE',\r\n  'GROCERY',\r\n  'GROUP',\r\n  'GS',\r\n  'GT',\r\n  'GU',\r\n  'GUARDIAN',\r\n  'GUCCI',\r\n  'GUGE',\r\n  'GUIDE',\r\n  'GUITARS',\r\n  'GURU',\r\n  'GW',\r\n  'GY',\r\n  'HAIR',\r\n  'HAMBURG',\r\n  'HANGOUT',\r\n  'HAUS',\r\n  'HBO',\r\n  'HDFC',\r\n  'HDFCBANK',\r\n  'HEALTH',\r\n  'HEALTHCARE',\r\n  'HELP',\r\n  'HELSINKI',\r\n  'HERE',\r\n  'HERMES',\r\n  'HGTV',\r\n  'HIPHOP',\r\n  'HISAMITSU',\r\n  'HITACHI',\r\n  'HIV',\r\n  'HK',\r\n  'HKT',\r\n  'HM',\r\n  'HN',\r\n  'HOCKEY',\r\n  'HOLDINGS',\r\n  'HOLIDAY',\r\n  'HOMEDEPOT',\r\n  'HOMEGOODS',\r\n  'HOMES',\r\n  'HOMESENSE',\r\n  'HONDA',\r\n  'HORSE',\r\n  'HOSPITAL',\r\n  'HOST',\r\n  'HOSTING',\r\n  'HOT',\r\n  'HOTELES',\r\n  'HOTELS',\r\n  'HOTMAIL',\r\n  'HOUSE',\r\n  'HOW',\r\n  'HR',\r\n  'HSBC',\r\n  'HT',\r\n  'HU',\r\n  'HUGHES',\r\n  'HYATT',\r\n  'HYUNDAI',\r\n  'IBM',\r\n  'ICBC',\r\n  'ICE',\r\n  'ICU',\r\n  'ID',\r\n  'IE',\r\n  'IEEE',\r\n  'IFM',\r\n  'IKANO',\r\n  'IL',\r\n  'IM',\r\n  'IMAMAT',\r\n  'IMDB',\r\n  'IMMO',\r\n  'IMMOBILIEN',\r\n  'IN',\r\n  'INC',\r\n  'INDUSTRIES',\r\n  'INFINITI',\r\n  'INFO',\r\n  'ING',\r\n  'INK',\r\n  'INSTITUTE',\r\n  'INSURANCE',\r\n  'INSURE',\r\n  'INT',\r\n  'INTERNATIONAL',\r\n  'INTUIT',\r\n  'INVESTMENTS',\r\n  'IO',\r\n  'IPIRANGA',\r\n  'IQ',\r\n  'IR',\r\n  'IRISH',\r\n  'IS',\r\n  'ISMAILI',\r\n  'IST',\r\n  'ISTANBUL',\r\n  'IT',\r\n  'ITAU',\r\n  'ITV',\r\n  'JAGUAR',\r\n  'JAVA',\r\n  'JCB',\r\n  'JE',\r\n  'JEEP',\r\n  'JETZT',\r\n  'JEWELRY',\r\n  'JIO',\r\n  'JLL',\r\n  'JM',\r\n  'JMP',\r\n  'JNJ',\r\n  'JO',\r\n  'JOBS',\r\n  'JOBURG',\r\n  'JOT',\r\n  'JOY',\r\n  'JP',\r\n  'JPMORGAN',\r\n  'JPRS',\r\n  'JUEGOS',\r\n  'JUNIPER',\r\n  'KAUFEN',\r\n  'KDDI',\r\n  'KE',\r\n  'KERRYHOTELS',\r\n  'KERRYLOGISTICS',\r\n  'KERRYPROPERTIES',\r\n  'KFH',\r\n  'KG',\r\n  'KH',\r\n  'KI',\r\n  'KIA',\r\n  'KIDS',\r\n  'KIM',\r\n  'KINDER',\r\n  'KINDLE',\r\n  'KITCHEN',\r\n  'KIWI',\r\n  'KM',\r\n  'KN',\r\n  'KOELN',\r\n  'KOMATSU',\r\n  'KOSHER',\r\n  'KP',\r\n  'KPMG',\r\n  'KPN',\r\n  'KR',\r\n  'KRD',\r\n  'KRED',\r\n  'KUOKGROUP',\r\n  'KW',\r\n  'KY',\r\n  'KYOTO',\r\n  'KZ',\r\n  'LA',\r\n  'LACAIXA',\r\n  'LAMBORGHINI',\r\n  'LAMER',\r\n  'LANCASTER',\r\n  'LANCIA',\r\n  'LAND',\r\n  'LANDROVER',\r\n  'LANXESS',\r\n  'LASALLE',\r\n  'LAT',\r\n  'LATINO',\r\n  'LATROBE',\r\n  'LAW',\r\n  'LAWYER',\r\n  'LB',\r\n  'LC',\r\n  'LDS',\r\n  'LEASE',\r\n  'LECLERC',\r\n  'LEFRAK',\r\n  'LEGAL',\r\n  'LEGO',\r\n  'LEXUS',\r\n  'LGBT',\r\n  'LI',\r\n  'LIDL',\r\n  'LIFE',\r\n  'LIFEINSURANCE',\r\n  'LIFESTYLE',\r\n  'LIGHTING',\r\n  'LIKE',\r\n  'LILLY',\r\n  'LIMITED',\r\n  'LIMO',\r\n  'LINCOLN',\r\n  'LINDE',\r\n  'LINK',\r\n  'LIPSY',\r\n  'LIVE',\r\n  'LIVING',\r\n  'LK',\r\n  'LLC',\r\n  'LLP',\r\n  'LOAN',\r\n  'LOANS',\r\n  'LOCKER',\r\n  'LOCUS',\r\n  'LOFT',\r\n  'LOL',\r\n  'LONDON',\r\n  'LOTTE',\r\n  'LOTTO',\r\n  'LOVE',\r\n  'LPL',\r\n  'LPLFINANCIAL',\r\n  'LR',\r\n  'LS',\r\n  'LT',\r\n  'LTD',\r\n  'LTDA',\r\n  'LU',\r\n  'LUNDBECK',\r\n  'LUXE',\r\n  'LUXURY',\r\n  'LV',\r\n  'LY',\r\n  'MA',\r\n  'MACYS',\r\n  'MADRID',\r\n  'MAIF',\r\n  'MAISON',\r\n  'MAKEUP',\r\n  'MAN',\r\n  'MANAGEMENT',\r\n  'MANGO',\r\n  'MAP',\r\n  'MARKET',\r\n  'MARKETING',\r\n  'MARKETS',\r\n  'MARRIOTT',\r\n  'MARSHALLS',\r\n  'MASERATI',\r\n  'MATTEL',\r\n  'MBA',\r\n  'MC',\r\n  'MCKINSEY',\r\n  'MD',\r\n  'ME',\r\n  'MED',\r\n  'MEDIA',\r\n  'MEET',\r\n  'MELBOURNE',\r\n  'MEME',\r\n  'MEMORIAL',\r\n  'MEN',\r\n  'MENU',\r\n  'MERCKMSD',\r\n  'MG',\r\n  'MH',\r\n  'MIAMI',\r\n  'MICROSOFT',\r\n  'MIL',\r\n  'MINI',\r\n  'MINT',\r\n  'MIT',\r\n  'MITSUBISHI',\r\n  'MK',\r\n  'ML',\r\n  'MLB',\r\n  'MLS',\r\n  'MM',\r\n  'MMA',\r\n  'MN',\r\n  'MO',\r\n  'MOBI',\r\n  'MOBILE',\r\n  'MODA',\r\n  'MOE',\r\n  'MOI',\r\n  'MOM',\r\n  'MONASH',\r\n  'MONEY',\r\n  'MONSTER',\r\n  'MORMON',\r\n  'MORTGAGE',\r\n  'MOSCOW',\r\n  'MOTO',\r\n  'MOTORCYCLES',\r\n  'MOV',\r\n  'MOVIE',\r\n  'MP',\r\n  'MQ',\r\n  'MR',\r\n  'MS',\r\n  'MSD',\r\n  'MT',\r\n  'MTN',\r\n  'MTR',\r\n  'MU',\r\n  'MUSEUM',\r\n  'MUSIC',\r\n  'MUTUAL',\r\n  'MV',\r\n  'MW',\r\n  'MX',\r\n  'MY',\r\n  'MZ',\r\n  'NA',\r\n  'NAB',\r\n  'NAGOYA',\r\n  'NAME',\r\n  'NATURA',\r\n  'NAVY',\r\n  'NBA',\r\n  'NC',\r\n  'NE',\r\n  'NEC',\r\n  'NET',\r\n  'NETBANK',\r\n  'NETFLIX',\r\n  'NETWORK',\r\n  'NEUSTAR',\r\n  'NEW',\r\n  'NEWS',\r\n  'NEXT',\r\n  'NEXTDIRECT',\r\n  'NEXUS',\r\n  'NF',\r\n  'NFL',\r\n  'NG',\r\n  'NGO',\r\n  'NHK',\r\n  'NI',\r\n  'NICO',\r\n  'NIKE',\r\n  'NIKON',\r\n  'NINJA',\r\n  'NISSAN',\r\n  'NISSAY',\r\n  'NL',\r\n  'NO',\r\n  'NOKIA',\r\n  'NORTHWESTERNMUTUAL',\r\n  'NORTON',\r\n  'NOW',\r\n  'NOWRUZ',\r\n  'NOWTV',\r\n  'NP',\r\n  'NR',\r\n  'NRA',\r\n  'NRW',\r\n  'NTT',\r\n  'NU',\r\n  'NYC',\r\n  'NZ',\r\n  'OBI',\r\n  'OBSERVER',\r\n  'OFFICE',\r\n  'OKINAWA',\r\n  'OLAYAN',\r\n  'OLAYANGROUP',\r\n  'OLDNAVY',\r\n  'OLLO',\r\n  'OM',\r\n  'OMEGA',\r\n  'ONE',\r\n  'ONG',\r\n  'ONL',\r\n  'ONLINE',\r\n  'OOO',\r\n  'OPEN',\r\n  'ORACLE',\r\n  'ORANGE',\r\n  'ORG',\r\n  'ORGANIC',\r\n  'ORIGINS',\r\n  'OSAKA',\r\n  'OTSUKA',\r\n  'OTT',\r\n  'OVH',\r\n  'PA',\r\n  'PAGE',\r\n  'PANASONIC',\r\n  'PARIS',\r\n  'PARS',\r\n  'PARTNERS',\r\n  'PARTS',\r\n  'PARTY',\r\n  'PASSAGENS',\r\n  'PAY',\r\n  'PCCW',\r\n  'PE',\r\n  'PET',\r\n  'PF',\r\n  'PFIZER',\r\n  'PG',\r\n  'PH',\r\n  'PHARMACY',\r\n  'PHD',\r\n  'PHILIPS',\r\n  'PHONE',\r\n  'PHOTO',\r\n  'PHOTOGRAPHY',\r\n  'PHOTOS',\r\n  'PHYSIO',\r\n  'PICS',\r\n  'PICTET',\r\n  'PICTURES',\r\n  'PID',\r\n  'PIN',\r\n  'PING',\r\n  'PINK',\r\n  'PIONEER',\r\n  'PIZZA',\r\n  'PK',\r\n  'PL',\r\n  'PLACE',\r\n  'PLAY',\r\n  'PLAYSTATION',\r\n  'PLUMBING',\r\n  'PLUS',\r\n  'PM',\r\n  'PN',\r\n  'PNC',\r\n  'POHL',\r\n  'POKER',\r\n  'POLITIE',\r\n  'PORN',\r\n  'POST',\r\n  'PR',\r\n  'PRAMERICA',\r\n  'PRAXI',\r\n  'PRESS',\r\n  'PRIME',\r\n  'PRO',\r\n  'PROD',\r\n  'PRODUCTIONS',\r\n  'PROF',\r\n  'PROGRESSIVE',\r\n  'PROMO',\r\n  'PROPERTIES',\r\n  'PROPERTY',\r\n  'PROTECTION',\r\n  'PRU',\r\n  'PRUDENTIAL',\r\n  'PS',\r\n  'PT',\r\n  'PUB',\r\n  'PW',\r\n  'PWC',\r\n  'PY',\r\n  'QA',\r\n  'QPON',\r\n  'QUEBEC',\r\n  'QUEST',\r\n  'RACING',\r\n  'RADIO',\r\n  'RE',\r\n  'READ',\r\n  'REALESTATE',\r\n  'REALTOR',\r\n  'REALTY',\r\n  'RECIPES',\r\n  'RED',\r\n  'REDSTONE',\r\n  'REDUMBRELLA',\r\n  'REHAB',\r\n  'REISE',\r\n  'REISEN',\r\n  'REIT',\r\n  'RELIANCE',\r\n  'REN',\r\n  'RENT',\r\n  'RENTALS',\r\n  'REPAIR',\r\n  'REPORT',\r\n  'REPUBLICAN',\r\n  'REST',\r\n  'RESTAURANT',\r\n  'REVIEW',\r\n  'REVIEWS',\r\n  'REXROTH',\r\n  'RICH',\r\n  'RICHARDLI',\r\n  'RICOH',\r\n  'RIL',\r\n  'RIO',\r\n  'RIP',\r\n  'RO',\r\n  'ROCHER',\r\n  'ROCKS',\r\n  'RODEO',\r\n  'ROGERS',\r\n  'ROOM',\r\n  'RS',\r\n  'RSVP',\r\n  'RU',\r\n  'RUGBY',\r\n  'RUHR',\r\n  'RUN',\r\n  'RW',\r\n  'RWE',\r\n  'RYUKYU',\r\n  'SA',\r\n  'SAARLAND',\r\n  'SAFE',\r\n  'SAFETY',\r\n  'SAKURA',\r\n  'SALE',\r\n  'SALON',\r\n  'SAMSCLUB',\r\n  'SAMSUNG',\r\n  'SANDVIK',\r\n  'SANDVIKCOROMANT',\r\n  'SANOFI',\r\n  'SAP',\r\n  'SARL',\r\n  'SAS',\r\n  'SAVE',\r\n  'SAXO',\r\n  'SB',\r\n  'SBI',\r\n  'SBS',\r\n  'SC',\r\n  'SCA',\r\n  'SCB',\r\n  'SCHAEFFLER',\r\n  'SCHMIDT',\r\n  'SCHOLARSHIPS',\r\n  'SCHOOL',\r\n  'SCHULE',\r\n  'SCHWARZ',\r\n  'SCIENCE',\r\n  'SCOT',\r\n  'SD',\r\n  'SE',\r\n  'SEARCH',\r\n  'SEAT',\r\n  'SECURE',\r\n  'SECURITY',\r\n  'SEEK',\r\n  'SELECT',\r\n  'SENER',\r\n  'SERVICES',\r\n  'SES',\r\n  'SEVEN',\r\n  'SEW',\r\n  'SEX',\r\n  'SEXY',\r\n  'SFR',\r\n  'SG',\r\n  'SH',\r\n  'SHANGRILA',\r\n  'SHARP',\r\n  'SHAW',\r\n  'SHELL',\r\n  'SHIA',\r\n  'SHIKSHA',\r\n  'SHOES',\r\n  'SHOP',\r\n  'SHOPPING',\r\n  'SHOUJI',\r\n  'SHOW',\r\n  'SHOWTIME',\r\n  'SI',\r\n  'SILK',\r\n  'SINA',\r\n  'SINGLES',\r\n  'SITE',\r\n  'SJ',\r\n  'SK',\r\n  'SKI',\r\n  'SKIN',\r\n  'SKY',\r\n  'SKYPE',\r\n  'SL',\r\n  'SLING',\r\n  'SM',\r\n  'SMART',\r\n  'SMILE',\r\n  'SN',\r\n  'SNCF',\r\n  'SO',\r\n  'SOCCER',\r\n  'SOCIAL',\r\n  'SOFTBANK',\r\n  'SOFTWARE',\r\n  'SOHU',\r\n  'SOLAR',\r\n  'SOLUTIONS',\r\n  'SONG',\r\n  'SONY',\r\n  'SOY',\r\n  'SPA',\r\n  'SPACE',\r\n  'SPORT',\r\n  'SPOT',\r\n  'SR',\r\n  'SRL',\r\n  'SS',\r\n  'ST',\r\n  'STADA',\r\n  'STAPLES',\r\n  'STAR',\r\n  'STATEBANK',\r\n  'STATEFARM',\r\n  'STC',\r\n  'STCGROUP',\r\n  'STOCKHOLM',\r\n  'STORAGE',\r\n  'STORE',\r\n  'STREAM',\r\n  'STUDIO',\r\n  'STUDY',\r\n  'STYLE',\r\n  'SU',\r\n  'SUCKS',\r\n  'SUPPLIES',\r\n  'SUPPLY',\r\n  'SUPPORT',\r\n  'SURF',\r\n  'SURGERY',\r\n  'SUZUKI',\r\n  'SV',\r\n  'SWATCH',\r\n  'SWISS',\r\n  'SX',\r\n  'SY',\r\n  'SYDNEY',\r\n  'SYSTEMS',\r\n  'SZ',\r\n  'TAB',\r\n  'TAIPEI',\r\n  'TALK',\r\n  'TAOBAO',\r\n  'TARGET',\r\n  'TATAMOTORS',\r\n  'TATAR',\r\n  'TATTOO',\r\n  'TAX',\r\n  'TAXI',\r\n  'TC',\r\n  'TCI',\r\n  'TD',\r\n  'TDK',\r\n  'TEAM',\r\n  'TECH',\r\n  'TECHNOLOGY',\r\n  'TEL',\r\n  'TEMASEK',\r\n  'TENNIS',\r\n  'TEVA',\r\n  'TF',\r\n  'TG',\r\n  'TH',\r\n  'THD',\r\n  'THEATER',\r\n  'THEATRE',\r\n  'TIAA',\r\n  'TICKETS',\r\n  'TIENDA',\r\n  'TIFFANY',\r\n  'TIPS',\r\n  'TIRES',\r\n  'TIROL',\r\n  'TJ',\r\n  'TJMAXX',\r\n  'TJX',\r\n  'TK',\r\n  'TKMAXX',\r\n  'TL',\r\n  'TM',\r\n  'TMALL',\r\n  'TN',\r\n  'TO',\r\n  'TODAY',\r\n  'TOKYO',\r\n  'TOOLS',\r\n  'TOP',\r\n  'TORAY',\r\n  'TOSHIBA',\r\n  'TOTAL',\r\n  'TOURS',\r\n  'TOWN',\r\n  'TOYOTA',\r\n  'TOYS',\r\n  'TR',\r\n  'TRADE',\r\n  'TRADING',\r\n  'TRAINING',\r\n  'TRAVEL',\r\n  'TRAVELCHANNEL',\r\n  'TRAVELERS',\r\n  'TRAVELERSINSURANCE',\r\n  'TRUST',\r\n  'TRV',\r\n  'TT',\r\n  'TUBE',\r\n  'TUI',\r\n  'TUNES',\r\n  'TUSHU',\r\n  'TV',\r\n  'TVS',\r\n  'TW',\r\n  'TZ',\r\n  'UA',\r\n  'UBANK',\r\n  'UBS',\r\n  'UG',\r\n  'UK',\r\n  'UNICOM',\r\n  'UNIVERSITY',\r\n  'UNO',\r\n  'UOL',\r\n  'UPS',\r\n  'US',\r\n  'UY',\r\n  'UZ',\r\n  'VA',\r\n  'VACATIONS',\r\n  'VANA',\r\n  'VANGUARD',\r\n  'VC',\r\n  'VE',\r\n  'VEGAS',\r\n  'VENTURES',\r\n  'VERISIGN',\r\n  'VERSICHERUNG',\r\n  'VET',\r\n  'VG',\r\n  'VI',\r\n  'VIAJES',\r\n  'VIDEO',\r\n  'VIG',\r\n  'VIKING',\r\n  'VILLAS',\r\n  'VIN',\r\n  'VIP',\r\n  'VIRGIN',\r\n  'VISA',\r\n  'VISION',\r\n  'VIVA',\r\n  'VIVO',\r\n  'VLAANDEREN',\r\n  'VN',\r\n  'VODKA',\r\n  'VOLKSWAGEN',\r\n  'VOLVO',\r\n  'VOTE',\r\n  'VOTING',\r\n  'VOTO',\r\n  'VOYAGE',\r\n  'VU',\r\n  'VUELOS',\r\n  'WALES',\r\n  'WALMART',\r\n  'WALTER',\r\n  'WANG',\r\n  'WANGGOU',\r\n  'WATCH',\r\n  'WATCHES',\r\n  'WEATHER',\r\n  'WEATHERCHANNEL',\r\n  'WEBCAM',\r\n  'WEBER',\r\n  'WEBSITE',\r\n  'WED',\r\n  'WEDDING',\r\n  'WEIBO',\r\n  'WEIR',\r\n  'WF',\r\n  'WHOSWHO',\r\n  'WIEN',\r\n  'WIKI',\r\n  'WILLIAMHILL',\r\n  'WIN',\r\n  'WINDOWS',\r\n  'WINE',\r\n  'WINNERS',\r\n  'WME',\r\n  'WOLTERSKLUWER',\r\n  'WOODSIDE',\r\n  'WORK',\r\n  'WORKS',\r\n  'WORLD',\r\n  'WOW',\r\n  'WS',\r\n  'WTC',\r\n  'WTF',\r\n  'XBOX',\r\n  'XEROX',\r\n  'XFINITY',\r\n  'XIHUAN',\r\n  'XIN',\r\n  'XN--11B4C3D',\r\n  'XN--1CK2E1B',\r\n  'XN--1QQW23A',\r\n  'XN--2SCRJ9C',\r\n  'XN--30RR7Y',\r\n  'XN--3BST00M',\r\n  'XN--3DS443G',\r\n  'XN--3E0B707E',\r\n  'XN--3HCRJ9C',\r\n  'XN--3PXU8K',\r\n  'XN--42C2D9A',\r\n  'XN--45BR5CYL',\r\n  'XN--45BRJ9C',\r\n  'XN--45Q11C',\r\n  'XN--4DBRK0CE',\r\n  'XN--4GBRIM',\r\n  'XN--54B7FTA0CC',\r\n  'XN--55QW42G',\r\n  'XN--55QX5D',\r\n  'XN--5SU34J936BGSG',\r\n  'XN--5TZM5G',\r\n  'XN--6FRZ82G',\r\n  'XN--6QQ986B3XL',\r\n  'XN--80ADXHKS',\r\n  'XN--80AO21A',\r\n  'XN--80AQECDR1A',\r\n  'XN--80ASEHDB',\r\n  'XN--80ASWG',\r\n  'XN--8Y0A063A',\r\n  'XN--90A3AC',\r\n  'XN--90AE',\r\n  'XN--90AIS',\r\n  'XN--9DBQ2A',\r\n  'XN--9ET52U',\r\n  'XN--9KRT00A',\r\n  'XN--B4W605FERD',\r\n  'XN--BCK1B9A5DRE4C',\r\n  'XN--C1AVG',\r\n  'XN--C2BR7G',\r\n  'XN--CCK2B3B',\r\n  'XN--CCKWCXETD',\r\n  'XN--CG4BKI',\r\n  'XN--CLCHC0EA0B2G2A9GCD',\r\n  'XN--CZR694B',\r\n  'XN--CZRS0T',\r\n  'XN--CZRU2D',\r\n  'XN--D1ACJ3B',\r\n  'XN--D1ALF',\r\n  'XN--E1A4C',\r\n  'XN--ECKVDTC9D',\r\n  'XN--EFVY88H',\r\n  'XN--FCT429K',\r\n  'XN--FHBEI',\r\n  'XN--FIQ228C5HS',\r\n  'XN--FIQ64B',\r\n  'XN--FIQS8S',\r\n  'XN--FIQZ9S',\r\n  'XN--FJQ720A',\r\n  'XN--FLW351E',\r\n  'XN--FPCRJ9C3D',\r\n  'XN--FZC2C9E2C',\r\n  'XN--FZYS8D69UVGM',\r\n  'XN--G2XX48C',\r\n  'XN--GCKR3F0F',\r\n  'XN--GECRJ9C',\r\n  'XN--GK3AT1E',\r\n  'XN--H2BREG3EVE',\r\n  'XN--H2BRJ9C',\r\n  'XN--H2BRJ9C8C',\r\n  'XN--HXT814E',\r\n  'XN--I1B6B1A6A2E',\r\n  'XN--IMR513N',\r\n  'XN--IO0A7I',\r\n  'XN--J1AEF',\r\n  'XN--J1AMH',\r\n  'XN--J6W193G',\r\n  'XN--JLQ480N2RG',\r\n  'XN--JLQ61U9W7B',\r\n  'XN--JVR189M',\r\n  'XN--KCRX77D1X4A',\r\n  'XN--KPRW13D',\r\n  'XN--KPRY57D',\r\n  'XN--KPUT3I',\r\n  'XN--L1ACC',\r\n  'XN--LGBBAT1AD8J',\r\n  'XN--MGB9AWBF',\r\n  'XN--MGBA3A3EJT',\r\n  'XN--MGBA3A4F16A',\r\n  'XN--MGBA7C0BBN0A',\r\n  'XN--MGBAAKC7DVF',\r\n  'XN--MGBAAM7A8H',\r\n  'XN--MGBAB2BD',\r\n  'XN--MGBAH1A3HJKRD',\r\n  'XN--MGBAI9AZGQP6J',\r\n  'XN--MGBAYH7GPA',\r\n  'XN--MGBBH1A',\r\n  'XN--MGBBH1A71E',\r\n  'XN--MGBC0A9AZCG',\r\n  'XN--MGBCA7DZDO',\r\n  'XN--MGBCPQ6GPA1A',\r\n  'XN--MGBERP4A5D4AR',\r\n  'XN--MGBGU82A',\r\n  'XN--MGBI4ECEXP',\r\n  'XN--MGBPL2FH',\r\n  'XN--MGBT3DHD',\r\n  'XN--MGBTX2B',\r\n  'XN--MGBX4CD0AB',\r\n  'XN--MIX891F',\r\n  'XN--MK1BU44C',\r\n  'XN--MXTQ1M',\r\n  'XN--NGBC5AZD',\r\n  'XN--NGBE9E0A',\r\n  'XN--NGBRX',\r\n  'XN--NODE',\r\n  'XN--NQV7F',\r\n  'XN--NQV7FS00EMA',\r\n  'XN--NYQY26A',\r\n  'XN--O3CW4H',\r\n  'XN--OGBPF8FL',\r\n  'XN--OTU796D',\r\n  'XN--P1ACF',\r\n  'XN--P1AI',\r\n  'XN--PGBS0DH',\r\n  'XN--PSSY2U',\r\n  'XN--Q7CE6A',\r\n  'XN--Q9JYB4C',\r\n  'XN--QCKA1PMC',\r\n  'XN--QXA6A',\r\n  'XN--QXAM',\r\n  'XN--RHQV96G',\r\n  'XN--ROVU88B',\r\n  'XN--RVC1E0AM3E',\r\n  'XN--S9BRJ9C',\r\n  'XN--SES554G',\r\n  'XN--T60B56A',\r\n  'XN--TCKWE',\r\n  'XN--TIQ49XQYJ',\r\n  'XN--UNUP4Y',\r\n  'XN--VERMGENSBERATER-CTB',\r\n  'XN--VERMGENSBERATUNG-PWB',\r\n  'XN--VHQUV',\r\n  'XN--VUQ861B',\r\n  'XN--W4R85EL8FHU5DNRA',\r\n  'XN--W4RS40L',\r\n  'XN--WGBH1C',\r\n  'XN--WGBL6A',\r\n  'XN--XHQ521B',\r\n  'XN--XKC2AL3HYE2A',\r\n  'XN--XKC2DL3A5EE0H',\r\n  'XN--Y9A3AQ',\r\n  'XN--YFRO4I67O',\r\n  'XN--YGBI2AMMX',\r\n  'XN--ZFR164B',\r\n  'XXX',\r\n  'XYZ',\r\n  'YACHTS',\r\n  'YAHOO',\r\n  'YAMAXUN',\r\n  'YANDEX',\r\n  'YE',\r\n  'YODOBASHI',\r\n  'YOGA',\r\n  'YOKOHAMA',\r\n  'YOU',\r\n  'YOUTUBE',\r\n  'YT',\r\n  'YUN',\r\n  'ZA',\r\n  'ZAPPOS',\r\n  'ZARA',\r\n  'ZERO',\r\n  'ZIP',\r\n  'ZM',\r\n  'ZONE',\r\n  'ZUERICH',\r\n  'ZW',\r\n];\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__32__;","export { PerfMarkerFactory } from './src/index';\r\nexport { functionWithPerfMarker, asyncFunctionWithPerfMarker } from './src/helpers';\r\nexport { perfMarkerPropTypes } from './src/proptypes';\r\n","import { createActivity } from './activity';\r\nimport { PerfMarker } from './marker';\r\n\r\nlet instrumentation;\r\nconst filesFetched = [];\r\n\r\nexport class PerfMarkerFactory {\r\n  static init(instr) {\r\n    instrumentation = instr;\r\n  }\r\n\r\n  static createMarker(\r\n    name,\r\n    markerOptions = { autoEnd: false, isActiveChild: true },\r\n    activity = createActivity(instrumentation),\r\n    parentMarker = {}\r\n  ) {\r\n    const isFileFetched = filesFetched.indexOf(name) > -1;\r\n\r\n    if (!isFileFetched) {\r\n      filesFetched.push(name);\r\n    }\r\n\r\n    return new PerfMarker(name, markerOptions, isFileFetched, activity, parentMarker);\r\n  }\r\n\r\n  static isPerfMarker(obj) {\r\n    return obj instanceof PerfMarker;\r\n  }\r\n\r\n  static isInit() {\r\n    return instrumentation !== null && instrumentation !== undefined;\r\n  }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst schema = {\r\n  scenario: [\r\n    {\r\n      name: 'perfMarker',\r\n      value: 'PerfMarker',\r\n      setting: {},\r\n      activity: [\r\n        {\r\n          name: 'sendLog',\r\n          value: 'SendLog',\r\n        },\r\n      ],\r\n    },\r\n  ],\r\n};\r\n\r\nlet perfScenario = null;\r\n\r\nfunction getScenario(instrumentation) {\r\n  if (_.isEmpty(perfScenario)) {\r\n    instrumentation.addScenario(schema);\r\n    perfScenario = instrumentation.perfMarker.create();\r\n  }\r\n\r\n  return perfScenario;\r\n}\r\n\r\nexport function createActivity(instrumentation) {\r\n  const scenario = getScenario(instrumentation);\r\n\r\n  return scenario.sendLog.create();\r\n}\r\n","import _ from 'underscore';\r\nimport { PageReady } from '@bingads-webui/page-ready';\r\nimport { PerfMarkerFactory } from './index';\r\n\r\nlet isPageReadyFulfilled = false;\r\n\r\nPageReady.afterPageReady().then(() => {\r\n  isPageReadyFulfilled = true;\r\n});\r\n\r\nfunction markTime() {\r\n  return {\r\n    time: performance.now(),\r\n    activeTime: _.result(performance, 'activeTime', NaN),\r\n  };\r\n}\r\n\r\nfunction isMarkerValid({ time, activeTime } = {}) {\r\n  return _.isNumber(time) && time >= 0 &&\r\n    _.isNumber(activeTime) && activeTime >= 0;\r\n}\r\n\r\nfunction getUrl() {\r\n  return (window.location.pathname || '') + (window.location.search || '') + (window.location.hash || '');\r\n}\r\n\r\n/**\r\n * Do not access PerfMarker class directly, use PerfMarker Factory\r\n */\r\nexport class PerfMarker {\r\n  constructor(name, markerOptions, isFileFetched, activity, parentMarker) {\r\n    this.markers = {};\r\n    this.InitUrl = getUrl();\r\n    this.isFileFetched = isFileFetched; // is js file already downloaded or not\r\n    this.name = name;\r\n    this.parentMarker = parentMarker;\r\n    this.hierarchy = this.parentMarker.hierarchy ? `${this.parentMarker.hierarchy}.${this.name}` : this.name;\r\n    this.activity = activity;\r\n    this.isDone = false;\r\n    this.autoEnd = markerOptions.autoEnd;\r\n    this.isActiveChild = markerOptions.isActiveChild;\r\n    this.activeChildren = [];\r\n    this.data = markerOptions.data || {};\r\n    this.doneCallback = null;\r\n  }\r\n\r\n  createChild(name, markerOptions = { autoEnd: false, isActiveChild: true }) {\r\n    const childMarker = PerfMarkerFactory.createMarker(name, markerOptions, this.activity, this);\r\n\r\n    if (childMarker && childMarker.isActiveChild !== false) {\r\n      this.activeChildren.push(childMarker);\r\n    }\r\n\r\n    return childMarker;\r\n  }\r\n\r\n  willFetchFile() {\r\n    this.markers.timeFetchFile = markTime();\r\n\r\n    this.markConsole('willFetchFile');\r\n  }\r\n\r\n  willFetchData() {\r\n    this.markers.timeFetchData = markTime();\r\n\r\n    this.markConsole('willFetchData');\r\n  }\r\n\r\n  willInit() {\r\n    this.markers.timeInit = markTime();\r\n\r\n    this.markConsole('willInit');\r\n  }\r\n\r\n  willRender() {\r\n    this.markers.timeRender = markTime();\r\n\r\n    this.markConsole('willRender');\r\n  }\r\n\r\n  onChildDone(childMarker) {\r\n    this.activeChildren = _.reject(this.activeChildren, activeChild => activeChild === childMarker);\r\n\r\n    if (this.autoEnd &&\r\n      !this.isDone &&\r\n      _.isEmpty(this.activeChildren)) {\r\n      this.done();\r\n    }\r\n  }\r\n\r\n  done(additionalMessage = {}) {\r\n    this.markers.timeDone = markTime();\r\n    this.markConsole('done');\r\n\r\n    this.additionalMessage = additionalMessage;\r\n\r\n    // If marker already done, do not log again\r\n    if (this.isDone) {\r\n      return;\r\n    }\r\n\r\n    this.send();\r\n\r\n    this.isDone = true;\r\n\r\n    if (this.doneCallback && _.isFunction(this.doneCallback)) {\r\n      this.doneCallback();\r\n    }\r\n\r\n    if (this.parentMarker.onChildDone) {\r\n      this.parentMarker.onChildDone(this);\r\n    }\r\n  }\r\n\r\n  markConsole(markerPoint) {\r\n    if (console.timeStamp) {\r\n      console.timeStamp(`PerfMarker ${this.name} ${markerPoint}`);\r\n    }\r\n  }\r\n\r\n  send() {\r\n    const message = this.parseMarkers();\r\n\r\n    if (_.isEmpty(message)) {\r\n      return;\r\n    }\r\n\r\n    this.activity.perf(JSON.stringify(message), this.hierarchy);\r\n  }\r\n\r\n  parseMarkers() {\r\n    // Calling willFetchFile is optional. If not called, clear file fetching flag\r\n    if (!isMarkerValid(this.markers.timeFetchFile)) {\r\n      this.isFileFetched = true;\r\n    }\r\n\r\n    if (_.some([this.markers.timeInit, this.markers.timeDone], marker => !isMarkerValid(marker))) {\r\n      return null; // init and done markers should be valid\r\n    }\r\n\r\n    const doneUrl = getUrl();\r\n    const didUrlChange = this.InitUrl !== doneUrl;\r\n\r\n    return {\r\n      Version: 'perf-marker@0.2.0',\r\n      Name: this.name,\r\n      ParentName: this.parentMarker.name,\r\n      Data: this.data,\r\n      IsParentDone: this.parentMarker.isDone,\r\n      IsPageReadyFulfilled: isPageReadyFulfilled,\r\n      IsFileFetched: this.isFileFetched,\r\n      FileFetchStartTime: _.result(this.markers.timeFetchFile, 'time', 0),\r\n      FileFetchActiveStartTime: _.result(this.markers.timeFetchFile, 'activeTime', 0),\r\n      DataFetchStartTime: _.result(this.markers.timeFetchData, 'time', 0),\r\n      DataFetchActiveStartTime: _.result(this.markers.timeFetchData, 'activeTime', 0),\r\n      RenderStartTime: _.result(this.markers.timeRender, 'time', 0),\r\n      RenderActiveStartTime: _.result(this.markers.timeRender, 'activeTime', 0),\r\n      InitStartTime: this.markers.timeInit.time,\r\n      InitActiveStartTime: this.markers.timeInit.activeTime,\r\n      DoneStartTime: this.markers.timeDone.time,\r\n      DoneActiveStartTime: this.markers.timeDone.activeTime,\r\n      DidUrlChange: didUrlChange,\r\n      InitUrl: didUrlChange ? this.InitUrl : '',\r\n      DoneUrl: didUrlChange ? doneUrl : '',\r\n      AdditionalMessage: this.additionalMessage,\r\n    };\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__52__;","\r\nimport _ from 'underscore';\r\n\r\nconst functionWithPerfMarker = function (perfMarker, func, context) {\r\n  if (!_.isFunction(func)) {\r\n    return null;\r\n  }\r\n\r\n  const newFunc = function (...args) {\r\n    perfMarker.willInit();\r\n\r\n    const result = func.apply(context || this, args);\r\n\r\n    perfMarker.done();\r\n\r\n    return result;\r\n  };\r\n\r\n  return newFunc;\r\n};\r\n\r\nconst asyncFunctionWithPerfMarker = function (perfMarker, asyncFunc, context) {\r\n  if (!_.isFunction(asyncFunc)) {\r\n    return null;\r\n  }\r\n\r\n  const newAsyncFunc = function (...args) {\r\n    perfMarker.willInit();\r\n\r\n    return asyncFunc.apply(context || this, args).then((result) => {\r\n      perfMarker.done();\r\n\r\n      return result;\r\n    });\r\n  };\r\n\r\n  return newAsyncFunc;\r\n};\r\n\r\nexport { functionWithPerfMarker, asyncFunctionWithPerfMarker };\r\n","import PropTypes from 'prop-types';\r\n\r\nexport const perfMarkerPropTypes = PropTypes.shape({\r\n  createChild: PropTypes.func.isRequired,\r\n  willFetchFile: PropTypes.func.isRequired,\r\n  willFetchData: PropTypes.func.isRequired,\r\n  willInit: PropTypes.func.isRequired,\r\n  willRender: PropTypes.func.isRequired,\r\n  done: PropTypes.func.isRequired,\r\n});\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__55__;","module.exports = __WEBPACK_EXTERNAL_MODULE__22__;","import { include } from 'underscore.string';\r\n\r\nconst TOKENS = {\r\n  // NewTenantTest database for local debugging\r\n  Local: 'c2048c8ee1c7466fa53ff77880fc797c-3d99112e-5e15-4022-b9a5-f53983937f76-6526',\r\n  // Test: SI/TIP\r\n  Aria3: 'f37eb78c41a442f4ba7e4d0b3660d938-954f8a2a-10e1-4c9b-b467-6a966e9994c9-7308',\r\n  // PROD\r\n  Aria07: '9cf7b68164b34e7e995562121503c72a-72856c17-5747-49e6-bd96-fde5bb08a4f4-7006',\r\n  // AdInsight\r\n  AdInsight: '2b2318c0ebbf44808a5e789256fab332-cd52b35b-3679-4c06-8958-fae3a1646c7c-7279',\r\n};\r\n\r\nconst allTokens = {\r\n  // Local\r\n  'ccui.devdev.bingads.microsoft.com': TOKENS.Local,\r\n  'redmond.corp.microsoft.com': TOKENS.Local,\r\n\r\n  // Test\r\n  'app1.ads-int.microsoft.com': TOKENS.Aria3,\r\n  'ui.si.bingads.microsoft.com': TOKENS.Aria3,\r\n  'ui.beta.si.bingads.microsoft.com': TOKENS.Aria3,\r\n  'ui.ads-int.microsoft.com': TOKENS.Aria3,\r\n  'ui.beta.ads-int.microsoft.com': TOKENS.Aria3,\r\n  'ui.tip.bingads.microsoft.com': TOKENS.Aria3,\r\n  'ui.tip.ads.microsoft.com': TOKENS.Aria3,\r\n  'si.bingads.microsoft.com': TOKENS.Aria3,\r\n  'beta.si.bingads.microsoft.com': TOKENS.Aria3,\r\n  'ads-int.microsoft.com': TOKENS.Aria3,\r\n  'beta.ads-int.microsoft.com': TOKENS.Aria3,\r\n  'tip.bingads.microsoft.com': TOKENS.Aria3,\r\n  'tip.ads.microsoft.com': TOKENS.Aria3,\r\n\r\n  'ui.sandbox.bingads.microsoft.com': TOKENS.Aria3,\r\n  'ui.sandbox.ads.microsoft.com': TOKENS.Aria3,\r\n\r\n  // Prod\r\n  'ui.bingads.microsoft.com': TOKENS.Aria07,\r\n  'ui.beta.bingads.microsoft.com': TOKENS.Aria07,\r\n  'ui.ads.microsoft.com': TOKENS.Aria07,\r\n  'ui.beta.ads.microsoft.com': TOKENS.Aria07,\r\n  'bingads.microsoft.com': TOKENS.Aria07,\r\n  'beta.bingads.microsoft.com': TOKENS.Aria07,\r\n  'ads.microsoft.com': TOKENS.Aria07,\r\n  'beta.ads.microsoft.com': TOKENS.Aria07,\r\n\r\n\r\n  // AdLibrary\r\n  'adlibraryui-test.azureedge.net': TOKENS.Aria3,\r\n  'adlibrary.ads.microsoft.com': TOKENS.Aria07,\r\n\r\n  // AdInsight\r\n  // TODO: move out once adinsights use shared listener\r\n  adInsightOppTracking: TOKENS.AdInsight,\r\n};\r\n\r\nconst defaultConfig = {\r\n  // Note: keeping this for backward compatability\r\n  tokens: {\r\n    'ui.si.bingads.microsoft.com': TOKENS.Aria3,\r\n    'ui.beta.si.bingads.microsoft.com': TOKENS.Aria3,\r\n    'ui.bingads.microsoft.com': TOKENS.Aria07,\r\n    'ui.beta.bingads.microsoft.com': TOKENS.Aria07,\r\n    'ui.tip.bingads.microsoft.com': TOKENS.Aria3,\r\n    adInsightOppTracking: TOKENS.AdInsight, // TODO: move out once adinsights use shared listener\r\n    'redmond.corp.microsoft.com': TOKENS.Local,\r\n    // Rebranded domain mappings\r\n    'ui.ads-int.microsoft.com': TOKENS.Aria3,\r\n    'ui.beta.ads-int.microsoft.com': TOKENS.Aria3,\r\n    'ui.ads.microsoft.com': TOKENS.Aria07,\r\n    'ui.beta.ads.microsoft.com': TOKENS.Aria07,\r\n    'ui.tip.ads.microsoft.com': TOKENS.Aria3,\r\n    'ui.sandbox.bingads.microsoft.com': TOKENS.Aria3,\r\n    'ui.sandbox.ads.microsoft.com': TOKENS.Aria3,\r\n    // AdLibrary\r\n    'adlibraryui-test.azureedge.net': TOKENS.Aria3,\r\n    'adlibrary.ads.microsoft.com': TOKENS.Aria07,\r\n  },\r\n  flushInterval: 3000,\r\n  batchSize: 40,\r\n};\r\n\r\nexport function getTokensForSmartPage(env, token) {\r\n  let spToken = token;\r\n  if (include(env, 'biz.site') || include(env, 'beta.smartpage.microsoft.com')) {\r\n    spToken = TOKENS.Aria07;\r\n  } else if (include(env, 'si.smartpage.microsoft.com')) {\r\n    spToken = TOKENS.Aria3;\r\n  } else if (include(env, 'ci.smartpage.microsoft.com')) {\r\n    spToken = TOKENS.Local;\r\n  }\r\n\r\n  return spToken;\r\n}\r\n\r\nexport default function getAriaConfig(env = null) {\r\n  let token = allTokens[env];\r\n  if (include(env, 'redmond.corp.microsoft.com')) {\r\n    token = TOKENS.Local;\r\n  } else if (include(env, 'biz.site') || include(env, 'smartpage')) {\r\n    token = getTokensForSmartPage(env, token);\r\n  }\r\n\r\n  return {\r\n    token,\r\n    ...defaultConfig,\r\n  };\r\n}\r\n","import { constants } from '@bingads-webui/instrumentation';\r\n\r\nexport default {\r\n  logTableNames: {\r\n    [constants.LOGCATEGORY.ERROR]: {\r\n      name: 'clienterr',\r\n      priority: 1,\r\n    },\r\n    [constants.LOGCATEGORY.PERFORMANCE]: {\r\n      name: 'clientperf',\r\n      priority: 2,\r\n    },\r\n    [constants.LOGCATEGORY.TRACE]: {\r\n      name: 'clienttrace',\r\n      priority: 3,\r\n    },\r\n    [constants.LOGCATEGORY.SUBSTRATE]: {\r\n      name: 'substrate1',\r\n      priority: 3,\r\n    },\r\n  },\r\n  defaultLogCategory: constants.LOGCATEGORY.TRACE,\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__490__;","import { constants } from '@bingads-webui/instrumentation';\r\n\r\nexport default {\r\n  logTableNames: {\r\n    [constants.LOGCATEGORY.ERROR]: {\r\n      name: 'OpportunityEvent',\r\n      priority: 1,\r\n    },\r\n    [constants.LOGCATEGORY.PERFORMANCE]: {\r\n      name: 'OpportunityEvent',\r\n      priority: 2,\r\n    },\r\n    [constants.LOGCATEGORY.TRACE]: {\r\n      name: 'OpportunityEvent',\r\n      priority: 3,\r\n    },\r\n  },\r\n  defaultLogCategory: constants.LOGCATEGORY.TRACE,\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport class ContextProcessor {\r\n  constructor(options) {\r\n    this.pageContext = _.defaults(options.pageContext || {}, {\r\n      CurrentCustomer: { Id: -1 },\r\n      CurrentAccount: { Id: -1 },\r\n      CurrentUser: {\r\n        Id: -1, Locale: '', Market: '', UserRole: '', ManagedBy: '', LocaleID: '',\r\n      },\r\n    });\r\n  }\r\n\r\n  get CustomerId() {\r\n    return this.pageContext.CurrentCustomer.Id;\r\n  }\r\n\r\n  get AccountId() {\r\n    return _.result(this.pageContext.CurrentAccount, 'Id', -1);\r\n  }\r\n\r\n  get UserId() {\r\n    return this.pageContext.CurrentUser.Id;\r\n  }\r\n\r\n  get Lcid() {\r\n    return this.pageContext.CurrentUser.Locale || this.pageContext.CurrentUser.LocaleID;\r\n  }\r\n\r\n  get CustomerMarket() {\r\n    return this.pageContext.CurrentUser.Market;\r\n  }\r\n\r\n  get UserRole() {\r\n    const role = (this.pageContext &&\r\n      this.pageContext.Permissions &&\r\n      this.pageContext.Permissions.IsInternalUser) ? '(Internal)' : '';\r\n    return `${this.pageContext.CurrentUser.UserRole}${role}`;\r\n  }\r\n\r\n  get CustomerManagedBy() {\r\n    return this.pageContext.CurrentUser.ManagedBy;\r\n  }\r\n\r\n  get SessionId() {\r\n    return (this.pageContext.Omniture || {}).SessionId || '';\r\n  }\r\n\r\n  get PageTrackingId() {\r\n    return this.pageContext.PageTrackingId;\r\n  }\r\n\r\n  get PageVersion() {\r\n    return this.pageContext.Version;\r\n  }\r\n\r\n  get Pilots() {\r\n    return 'grid';\r\n  }\r\n\r\n  process(rawLogs) {\r\n    return _.extend(rawLogs, {\r\n      customerId: this.CustomerId,\r\n      accountId: this.AccountId,\r\n      userId: this.UserId,\r\n      lcid: this.Lcid,\r\n      sessionId: this.SessionId,\r\n      pageTrackingId: this.PageTrackingId,\r\n      pageVersion: this.PageVersion,\r\n      market: this.CustomerMarket,\r\n      userRole: this.UserRole,\r\n      managedBy: this.CustomerManagedBy,\r\n      pilots: this.Pilots,\r\n    });\r\n  }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport class DebugProcessor {\r\n  constructor({ isDebugMode }) {\r\n    this.isDebugMode = isDebugMode;\r\n  }\r\n\r\n  process(rawLogs) {\r\n    return _.extend(rawLogs, {\r\n      isDebugMode: this.isDebugMode,\r\n    });\r\n  }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport class PerfTimingProcessor {\r\n  constructor({ landingPageUrl = '' }) {\r\n    this.landingPageUrl = landingPageUrl;\r\n  }\r\n\r\n  process(rawLogs) {\r\n    return _.extend(rawLogs, {\r\n      href: window.location.href,\r\n      referrer: document.referrer,\r\n      landingPg: this.landingPageUrl,\r\n    });\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport { Formatter } from '@bingads-webui/listener';\r\nimport { getParameter, updateParameter } from '@bingads-webui/url-util';\r\nimport { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { safeParseInteger } from './format-utilities';\r\n\r\nexport class BasicFormatter extends Formatter {\r\n  constructor(options = {}) {\r\n    super();\r\n    this.applicationSystem = options.applicationSystem;\r\n    this.applicationSubSystem = options.applicationSubSystem;\r\n  }\r\n\r\n  getPFlagsProps(rawLog) {\r\n    let pflags = '';\r\n\r\n    if (_.isString(rawLog.api)) {\r\n      let apiString = rawLog.api.trim();\r\n      // hide all token / code related values due to privacy issue.\r\n      if (getParameter('authCode', apiString)) {\r\n        apiString = updateParameter('authCode', 'authCodePlaceholder', apiString);\r\n      } else if (getParameter('accessToken', apiString)) {\r\n        apiString = updateParameter('accessToken', 'accessTokenPlaceholder', apiString);\r\n      }\r\n      pflags += `rUrl:${apiString};`;\r\n    }\r\n    if (rawLog.parentScenarioName && rawLog.parentScenarioId) {\r\n      pflags += `pScenario:${rawLog.parentScenarioName};pScenarioId:${rawLog.parentScenarioId};`;\r\n    }\r\n    return pflags;\r\n  }\r\n\r\n  getEventType(rawLog) {\r\n    if (rawLog.message && JSON.stringify(rawLog.message).indexOf('perf-marker@') !== -1) {\r\n      return 'perfmarker';\r\n    }\r\n    return rawLog.entryType;\r\n  }\r\n\r\n  format(rawLog) {\r\n    const log = {\r\n      Sn: rawLog.scenarioName || '',\r\n      SceID: rawLog.scenarioId || '',\r\n      RID: rawLog.requestId || '',\r\n      Api: _.isString(rawLog.api) ? rawLog.api.trim().toLowerCase() : '',\r\n      Pass: _.isUndefined(rawLog.pass) ? '' : rawLog.pass,\r\n      Dur: safeParseInteger(rawLog.timeTaken),\r\n      Ime: _.isUndefined(rawLog.isMethodEnter) ? '' : rawLog.isMethodEnter,\r\n      Hm: rawLog.httpMethod || '',\r\n      Timestamp: rawLog.timeStamp || getUtcTime(),\r\n      SesID: rawLog.sessionId || '',\r\n      Url: (window.location.pathname || '') + (window.location.search || '') + (window.location.hash || ''),\r\n      UID: rawLog.userId || '',\r\n      CID: rawLog.customerId || '',\r\n      AID: rawLog.accountId || '',\r\n      LCID: rawLog.lcid || '',\r\n      Mes: JSON.stringify(rawLog.message),\r\n      Lc: _.isArray(rawLog.logCategory) ?\r\n        rawLog.logCategory.join(',') : rawLog.logCategory,\r\n      Ll: rawLog.logLevel ? rawLog.logLevel.name : '',\r\n      Env: window.location.hostname,\r\n      As: this.applicationSystem || '',\r\n      Asub: this.applicationSubSystem || '',\r\n      An: rawLog.activityName || '',\r\n      ActID: rawLog.activityId || '',\r\n      Et: this.getEventType(rawLog) || '',\r\n      Loc: rawLog.market || '',\r\n      Role: rawLog.userRole || '',\r\n      MgdBy: rawLog.managedBy || '',\r\n      PFlags: this.getPFlagsProps(rawLog) || '',\r\n      Iu: rawLog.impactUser || null,\r\n      Ec: safeParseInteger(rawLog.entityCount),\r\n      UserAgent: (window.navigator || {}).userAgent || '',\r\n      PgID: rawLog.pageTrackingId || '',\r\n      PgVer: rawLog.pageVersion || '',\r\n      DbgMode: rawLog.isDebugMode || false,\r\n    };\r\n\r\n    return log;\r\n  }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function safeParseInteger(number, defaultValue = 0) {\r\n  const parsedNum = Number(number);\r\n\r\n  if (_.isNaN(parsedNum) || parsedNum < 0) {\r\n    return defaultValue;\r\n  }\r\n  return Math.round(parsedNum);\r\n}\r\n","import _ from 'underscore';\r\nimport { Formatter } from '@bingads-webui/listener';\r\n\r\nconst bracketedParamsRegex = new RegExp(/\\([^)]*\\)/g);\r\n\r\nexport class ApiFormatter extends Formatter {\r\n  /* eslint-disable no-param-reassign */\r\n  convertAbsoluteToRelativePath(log) {\r\n    const path = log.Api.toLowerCase();\r\n\r\n    if ((path.indexOf('http://') !== 0) && (path.indexOf('https://') !== 0)) {\r\n      return log;\r\n    }\r\n\r\n    const a = document.createElement('a');\r\n\r\n    a.href = path;\r\n    log.Api = a.pathname;\r\n    if (log.Api.indexOf('/') === 0 && log.Api.length > 1) {\r\n      log.Api = log.Api.substring(1);\r\n    }\r\n\r\n    return log;\r\n  }\r\n\r\n  removeQueryParameters(log) {\r\n    [log.Api] = log.Api.split('?');\r\n    return log;\r\n  }\r\n\r\n  removeDotMExtension(log) {\r\n    log.Api = log.Api.replace('.m/', '/');\r\n    if (log.Api.substr(-2) === '.m') {\r\n      log.Api = log.Api.substr(0, log.Api.length - 2);\r\n    }\r\n    return log;\r\n  }\r\n\r\n  removeBracketedParameters(log) {\r\n    log.Api = log.Api.replace(bracketedParamsRegex, '');\r\n    return log;\r\n  }\r\n\r\n  removeApplicationNameFromApi(log) {\r\n    const appName = `${log.As}/`.toLowerCase();\r\n\r\n    if (log.Api.toLowerCase().indexOf(appName.toLowerCase()) === 0) {\r\n      log.Api = log.Api.substring(appName.length);\r\n    }\r\n    return log;\r\n  }\r\n\r\n  format(log) {\r\n    if (!_.isEmpty(log.Api)) {\r\n      log = _.chain(log)\r\n        .tap(this.removeQueryParameters)\r\n        .tap(this.removeDotMExtension)\r\n        .tap(this.convertAbsoluteToRelativePath)\r\n        .tap(this.removeBracketedParameters)\r\n        .tap(this.removeApplicationNameFromApi)\r\n        .value();\r\n    }\r\n    return log;\r\n  }\r\n}\r\n","/**\r\n * @file\r\n * AdInsight Opportunity Log Spec:\r\n * https://microsoft.sharepoint.com/:w:/r/teams/stcaadinsights/Shared%20Documents/AdvertiserIntelligence/Log%20Requirements.docx?d=w0e50147bfce943a6a1325bfb995c9902&csf=1&e=aZkNhs\r\n */\r\n\r\nimport _ from 'underscore';\r\nimport { Formatter } from '@bingads-webui/listener';\r\n\r\nexport class AdInsightOpportunityLogFormatter extends Formatter {\r\n  format(rawLog) {\r\n    let clientName = 'CampaignWebUI';\r\n    let environment;\r\n    let Action;\r\n    const logApi = _.result(rawLog, 'api');\r\n    const channel = _.result(rawLog.message, 'channel');\r\n    const logApiClientNameMapper = {\r\n      OverviewOpportunityTile: 'Opportunities[Overview]',\r\n      MCCOverviewOpportunityTile: 'bingadsweb[mccoverviewpage]',\r\n    };\r\n\r\n    if (_.has(logApiClientNameMapper, logApi)) {\r\n      clientName = _.result(logApiClientNameMapper, logApi);\r\n    } else if (!_.isUndefined(channel)) {\r\n      clientName = `bingadsweb[${channel}]`;\r\n    }\r\n\r\n    if (document.domain === 'ui.bingads.microsoft.com' || document.domain === 'ui.ads.microsoft.com') {\r\n      environment = 'Production';\r\n    } else if (document.domain === 'ui.si.bingads.microsoft.com' || document.domain === 'ui.ads-int.microsoft.com') {\r\n      environment = 'SI';\r\n    } else {\r\n      environment = document.domain;\r\n    }\r\n\r\n    if (rawLog.message.action) {\r\n      Action = rawLog.message.action;\r\n    } else {\r\n      Action = rawLog.message.isClick ? 'Click' : 'View';\r\n    }\r\n\r\n    const isMCC = clientName === 'bingadsweb[mccrecommendationpage]';\r\n\r\n    return {\r\n      RequestId: rawLog.requestId,\r\n      OpportunityId: rawLog.message.id,\r\n      OpportunityType: rawLog.message.type,\r\n      OpportunityTypeId: rawLog.message.typeId,\r\n      Action,\r\n      UserId: rawLog.userId,\r\n      CustomerId: rawLog.customerId,\r\n      AccountId: isMCC\r\n        ? rawLog.message.accountId || null\r\n        : rawLog.accountId,\r\n      CampaignId: rawLog.message.campaignId,\r\n      ClientName: clientName,\r\n      Environment: environment,\r\n      Source: document.URL,\r\n      GUID: rawLog.message.guid,\r\n      Position: rawLog.message.position,\r\n      UserFeedback: rawLog.message.input,\r\n      Context: rawLog.message.context,\r\n    };\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport { Formatter } from '@bingads-webui/listener';\r\nimport { safeParseInteger } from './format-utilities';\r\n\r\nexport class ReportingApiFormatter extends Formatter {\r\n  format(log) {\r\n    if (log.As === 'campaign' && log.Api.indexOf('reporting/syncdata/') > -1) {\r\n      /* eslint-disable no-param-reassign */\r\n      log.As = 'reporting';\r\n      const apiChunks = this.getValidatedApiChunks(log.Api.split('/'));\r\n\r\n      if (apiChunks.length > 5) {\r\n        const operationId = safeParseInteger(apiChunks[5], -1);\r\n\r\n        if ((operationId >= 0 && operationId <= 4) || operationId === 23) {\r\n          log.Api = 'sync/trendchart';\r\n        } else if (operationId === 5) {\r\n          log.Api = 'sync/kdg';\r\n        } else if ((operationId >= 24 && operationId <= 26) || operationId === 6) {\r\n          log.Api = 'sync/changehistorygrid';\r\n        } else if (operationId !== -1) {\r\n          log.Api = 'sync/dimensiongrid';\r\n        }\r\n      }\r\n    }\r\n    return log;\r\n  }\r\n\r\n  // make sure that the first element of the rawChunks is the string 'reporting'\r\n  // if not we'll strip all the elements before the 'reporting' element\r\n  getValidatedApiChunks(rawChunks) {\r\n    if (_.isUndefined(rawChunks) || !_.isArray(rawChunks) || rawChunks.length === 0 || rawChunks[0] === 'reporting') {\r\n      return rawChunks;\r\n    }\r\n\r\n    const index = _.indexOf(rawChunks, 'reporting');\r\n\r\n    if (index > 0) {\r\n      return rawChunks.slice(index);\r\n    }\r\n\r\n    return rawChunks;\r\n  }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport { Formatter } from '@bingads-webui/listener';\r\n\r\nexport class UetTagHelperFormatter extends Formatter {\r\n  format(log) {\r\n    if (log.As === 'campaign' && log.Api.indexOf('campaignext/uettagassistant/') > -1) {\r\n      log.As = 'campaignExt';\r\n      log.Asub = 'UetTagAssistant';\r\n    }\r\n    return log;\r\n  }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport { Formatter } from '@bingads-webui/listener';\r\n\r\nexport class ImportApiFormatter extends Formatter {\r\n  format(log) {\r\n    if (log.Api.indexOf('api/v1/bingads/hasplaceholderstores') !== -1) {\r\n      // remove extra customer id appended after this api to reduce false alarm for api availability\r\n      log.Api = log.Api.substring(0, log.Api.indexOf('hasplaceholderstores') + 20);\r\n    }\r\n\r\n    return log;\r\n  }\r\n}\r\n","import { Formatter } from '@bingads-webui/listener';\r\n\r\nexport class ConsoleFormatter extends Formatter {\r\n  format(log) {\r\n    const logMessage = JSON.stringify(log.message);\r\n\r\n    return logMessage;\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport { Formatter } from '@bingads-webui/listener';\r\n\r\n// Values from window.performance.timing and firstPaintTime\r\nconst pageNavigationColumns = ['navigationStart', 'unloadEventStart', 'unloadEventEnd', 'redirectStart', 'redirectEnd',\r\n  'fetchStart', 'domainLookupStart', 'domainLookupEnd', 'connectStart', 'connectEnd', 'secureConnectionStart', 'requestStart',\r\n  'responseStart', 'responseEnd', 'domLoading', 'domInteractive', 'domContentLoadedEventStart', 'domContentLoadedEventEnd',\r\n  'domComplete', 'loadEventStart', 'loadEventEnd', 'navigationStart', 'unloadEventStart', 'unloadEventEnd', 'redirectStart',\r\n  'redirectEnd', 'redirectCount', 'fetchStart', 'firstPaintTime', 'domainLookupStart', 'domainLookupEnd', 'connectStart', 'connectEnd', 'secureConnectionStart',\r\n  'requestStart', 'responseStart', 'responseEnd', 'domLoading', 'domInteractive', 'domContentLoadedEventStart', 'domContentLoadedEventEnd',\r\n  'domComplete', 'loadEventStart', 'loadEventEnd', 'landingPg', 'inactiveTime'];\r\n\r\n// Values from window.perfromance.getEntries('resource')\r\nconst resourceTimingColumns = ['unloadEventStart', 'unloadEventEnd', 'domInteractive',\r\n  'domContentLoadedEventStart', 'domContentLoadedEventEnd', 'domComplete', 'loadEventStart',\r\n  'loadEventEnd', 'type', 'redirectCount', 'initiatorType', 'workerStart', 'redirectStart',\r\n  'redirectEnd', 'fetchStart', 'domainLookupStart', 'domainLookupEnd', 'connectStart', 'connectEnd',\r\n  'secureConnectionStart', 'requestStart', 'responseStart', 'responseEnd', 'transferSize', 'encodedBodySize',\r\n  'decodedBodySize', 'name', 'entryType', 'startTime', 'duration'];\r\n\r\nexport class PerformanceLogsFormatter extends Formatter {\r\n  format(log) {\r\n    const columns = log.isPageNavigationLog ? pageNavigationColumns : resourceTimingColumns;\r\n\r\n    let formattedLogs = _.pick(log, columns);\r\n\r\n    formattedLogs = _.extend(formattedLogs, {\r\n      uid: log.userId,\r\n      aid: log.accountId,\r\n      cid: log.customerId,\r\n      mkt: log.market,\r\n      href: log.href,\r\n      referrer: log.referrer,\r\n      dbgMode: log.isDebugMode,\r\n      pgId: log.pageTrackingId || null,\r\n      pgVer: log.pageVersion || null,\r\n    });\r\n\r\n    return formattedLogs;\r\n  }\r\n}\r\n","import { constants } from '@bingads-webui/instrumentation';\r\nimport { Filter } from '@bingads-webui/listener';\r\n\r\nexport class LogLevelFilter extends Filter {\r\n  check(logMessage) {\r\n    const appLogLevel = constants.LOGLEVEL.INFO;\r\n\r\n    if (logMessage.logLevel) {\r\n      return logMessage.logLevel.value > appLogLevel.value;\r\n    }\r\n\r\n    return false;\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport { constants } from '@bingads-webui/instrumentation';\r\nimport { Filter } from '@bingads-webui/listener';\r\n\r\nconst ignoredApis = [\r\n  'http://help',\r\n  'https://help',\r\n  'g.bing.com/clientsdk',\r\n  'api/updates/get',\r\n];\r\n\r\nexport class ApiFilter extends Filter {\r\n  check(logMessage) {\r\n    let shouldFilter = false;\r\n\r\n    // If API is in ignored API list, only log it if log category is error.\r\n    if (_.isString(logMessage.api)) {\r\n      const isErrorLog = logMessage.logCategory === constants.LOGCATEGORY.ERROR;\r\n      const isIgnoreApi = _.any(\r\n        ignoredApis,\r\n        ignoredApi => logMessage.api.toLowerCase().indexOf(ignoredApi) > -1\r\n      );\r\n\r\n      shouldFilter = !isErrorLog && isIgnoreApi;\r\n    }\r\n\r\n    return shouldFilter;\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport { Filter } from '@bingads-webui/listener';\r\n\r\nexport class AdInsightOpportunityApiFilter extends Filter {\r\n  check(rawLog) {\r\n    const allowedApiList = [\r\n      'competitionpage',\r\n      'recommendationpage',\r\n      'Recommendations',\r\n      'OverviewOpportunityTile',\r\n      'MCCOverviewOpportunityTile',\r\n      'incontextcard',\r\n      'searchinsight',\r\n    ];\r\n    const logApi = _.result(rawLog, 'api');\r\n\r\n    return !(\r\n      rawLog.entryType === 'Message' &&\r\n      _.isObject(rawLog.message) &&\r\n      _.isString(_.chain(rawLog).result('message').result('type').value()) &&\r\n      ((logApi === 'ViewInlineOpportunity' &&\r\n        _.chain(rawLog).result('message').result('id').value() &&\r\n        _.isNumber(_.chain(rawLog).result('message').result('campaignId').value())\r\n      ) || _.contains(allowedApiList, logApi)));\r\n  }\r\n}\r\n","import { constants } from '@bingads-webui/instrumentation';\r\nimport { Filter } from '@bingads-webui/listener';\r\n\r\nexport class ConsoleFilter extends Filter {\r\n  check(logMessage) {\r\n    const category = logMessage.logCategory || '';\r\n    const api = logMessage.api || '';\r\n\r\n    // log only error logs from window.onerror\r\n    if (api === 'onerror' && category === constants.LOGCATEGORY.ERROR) {\r\n      return false;\r\n    }\r\n\r\n    return true;\r\n  }\r\n}\r\n","import { Filter } from '@bingads-webui/listener';\r\n\r\nexport class UnloadLogFilter extends Filter {\r\n  check(log) {\r\n    return !(log.activityName === 'RunAriaV2UnloadHandler' &&\r\n            log.scenarioName === 'PageUnload' &&\r\n            !log.excludeFromLocalStorage);\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport { Filter } from '@bingads-webui/listener';\r\n\r\nconst campaignEnvs = [\r\n  'ui.bingads.microsoft.com',\r\n  'ui.tip.bingads.microsoft.com',\r\n  'ui.si.bingads.microsoft.com',\r\n  'ui.ads.microsoft.com',\r\n  'ui.tip.ads.microsoft.com',\r\n  'ui.ads-int.microsoft.com',\r\n  'adlibraryui-test.azureedge.net',\r\n  'adlibrary.ads.microsoft.com',\r\n];\r\n\r\nconst signupEnvs = [\r\n  'bingads.microsoft.com',\r\n  'tip.bingads.microsoft.com',\r\n  'si.bingads.microsoft.com',\r\n  'ads.microsoft.com',\r\n  'tip.ads.microsoft.com',\r\n  'ads-int.microsoft.com',\r\n];\r\n\r\nconst allowedEnvs = [...campaignEnvs, ...signupEnvs];\r\n\r\nconst exlcudeResources = [\r\n  '/campaign/API/Updates/get',\r\n  '/root/keepalive',\r\n  'aria.microsoft.com',\r\n  'liveperson.net',\r\n];\r\n\r\nexport class PerformanceLogsFilter extends Filter {\r\n  check(log) {\r\n    if (!_.contains(allowedEnvs, document.domain) || log.isDebugMode) {\r\n      return true;\r\n    }\r\n\r\n    if (log.isPageNavigationLog) {\r\n      return false;\r\n    }\r\n\r\n    const resourceName = log.name;\r\n\r\n    return _.any(exlcudeResources, excludedResource => resourceName && resourceName.search(new RegExp(excludedResource, 'i')) > 0);\r\n  }\r\n}\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * OdataErrorMapper - Maps ajax errors from odata calls to known user errors\r\n */\r\nexport class OdataErrorMapper {\r\n  /**\r\n   * @param {object} errorCodes - odata user error codes\r\n   */\r\n  constructor(errorCodes) {\r\n    this.errorCodes = errorCodes || [];\r\n  }\r\n\r\n  /**\r\n   * Checks if an ajax error is a known user error\r\n   * @param {object} ajaxData - data related to the current ajax call\r\n   * @returns {bool} - if the error maps to a known error or not\r\n   */\r\n  check(ajaxData) {\r\n    const errorString = ajaxData.error;\r\n\r\n    return _.any(this.errorCodes, errorCode => errorString.toUpperCase().indexOf(errorCode) >= 0);\r\n  }\r\n}\r\n","/**\r\n * CampaignApiErrorMapper - Maps ajax errors from campaign/api to known user errors\r\n */\r\nexport class CampaignApiErrorMapper {\r\n  /**\r\n   * @param {object} errorCodes - campaign api user error codes\r\n   */\r\n  constructor(errorCodes) {\r\n    this.knownUserErrorCodes = errorCodes || [];\r\n  }\r\n\r\n  /**\r\n   * Checks if an ajax error is a known user error\r\n   * @param {object} ajaxData - data related to the current ajax call\r\n   * @param {object} jqXHR - jqXHR of the ajax call\r\n   * @returns {bool} - if the error maps to a known error or not\r\n   */\r\n  check(ajaxData, jqXHR) {\r\n    const urlString = ajaxData.url;\r\n    const { responseText } = jqXHR;\r\n\r\n    if (!urlString) {\r\n      return false;\r\n    }\r\n\r\n    if (urlString.toUpperCase().indexOf('/CAMPAIGN/API/') >= 0) {\r\n      try {\r\n        const errorCode = JSON.parse(responseText).Errors[0].Code;\r\n\r\n        if (this.knownUserErrorCodes.indexOf(errorCode) >= 0) {\r\n          return true;\r\n        }\r\n      } catch (e) {\r\n        // ignore any parse exceptions\r\n      }\r\n    }\r\n\r\n    return false;\r\n  }\r\n}\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * UrlErrorMapper - Maps ajax errors from known invalid domains as user errors\r\n */\r\nexport class UrlErrorMapper {\r\n  /**\r\n   * @param {object} domains - known invalid domains\r\n   */\r\n  constructor(domains) {\r\n    this.domains = domains || [];\r\n  }\r\n\r\n  /**\r\n   * Checks if the url is of a known invalid domain\r\n   * @param {object} ajaxData - data related to the current ajax call\r\n   * @returns {bool} - if the url maps to a known invalid domain or not\r\n   */\r\n  check(ajaxData) {\r\n    const ajaxUrlString = ajaxData.url;\r\n\r\n    return _.isString(ajaxUrlString) &&\r\n      _.any(this.domains, domain => ajaxUrlString.toUpperCase().indexOf(domain.toUpperCase()) >= 0);\r\n  }\r\n}\r\n","\r\nconst prodEnvs = [\r\n  // CMUI\r\n  'ui.bingads.microsoft.com',\r\n  'ui.beta.bingads.microsoft.com',\r\n  'ui.ads.microsoft.com',\r\n  'ui.beta.ads.microsoft.com',\r\n  // CCUI\r\n  'bingads.microsoft.com',\r\n  'beta.bingads.microsoft.com',\r\n  'ads.microsoft.com',\r\n  'beta.ads.microsoft.com',\r\n  // AdLibrary\r\n  'adlibrary.ads.microsoft.com',\r\n];\r\n\r\nexport function isTestEnvironment(envToCheck) {\r\n  return prodEnvs.indexOf(envToCheck) === -1;\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst logKeyPrefix = 'localStorageListener';\r\n\r\n/**\r\n * Retrieves logs stored in local storage using the LocalStorageListener\r\n * @param {Object} options - options for log retrieval\r\n * @param {bool} [options.deleteAfterRetrieval = false] - True to delete\r\n *  the log after it is retrieved\r\n * @returns {Object[]} - Array of log objects stored in local storage\r\n */\r\nexport function retrieveLocalStorageLogs({ deleteAfterRetrieval = false }) {\r\n  const storage = window.localStorage;\r\n\r\n  if (!storage) {\r\n    return [];\r\n  }\r\n\r\n  return _.keys(storage).reduce((retrievedLogs, key) => {\r\n    if (key.indexOf(logKeyPrefix) === 0) {\r\n      try {\r\n        const parsedLog = JSON.parse(storage.getItem(key));\r\n\r\n        retrievedLogs.push(parsedLog);\r\n        if (deleteAfterRetrieval) {\r\n          storage.removeItem(key);\r\n        }\r\n      } catch (e) {\r\n        console.error(e); // eslint-disable-line no-console\r\n      }\r\n    }\r\n    return retrievedLogs;\r\n  }, []);\r\n}\r\n","// specify odata error codes that represent user errors\r\nconst odataErrorCodes = [\r\n  'ACCOUNTIDCOLUMNNOTFOUND',\r\n  'ACCOUNTIDINVALID',\r\n  'ACCOUNTNOTINPILOTFORPORTFOLIOBIDSTRATEGY',\r\n  'ACCOUNTNUMBERSMAXLIMITEXCEEDED',\r\n  'ADDESTINATIONURLINVALID',\r\n  'ADEXTENSIONASSOCIATIONSLIMITEXCEEDEDPERENTITYTYPE',\r\n  'ADEXTENSIONCITYNAMENULLOREMPTY',\r\n  'ADEXTENSIONPHONENUMBERINVALID',\r\n  'ADEXTENSIONPHONENUMBERTOOLONG',\r\n  'ADGROUPCRITERIONIDINVALID',\r\n  'ADGROUPCRITERIONSENTITYLIMITEXCEEDED',\r\n  'ADGROUPEXPIRED',\r\n  'ADGROUPIDINVALID',\r\n  'ADGROUPINEXPIREDSTATECANNOTBEUPDATED',\r\n  'ADGROUPISDELETED',\r\n  'ADIDINVALID',\r\n  'ADTEXTINVALID',\r\n  'ADTITLEINVALID',\r\n  'ADTYPEINVALIDFORCUSTOMER',\r\n  'ADTYPENOTSUPPORTEDFORDISCLAIMERCAMPAIGN', // Added from legacy error file\r\n  'ADULTADVERTISERERR',\r\n  'ALREADYHASPENDINGFEED',\r\n  'APPADEXTENSIONAPPSTOREIDINVALID',\r\n  'APPADEXTENSIONDESTINATIONURLINVALID',\r\n  'APPEALQUOTAEXCEEDED',\r\n  'ASSETDATAENCODINGINVALID',\r\n  'ASSETDATAINVALID',\r\n  'ASSETDATAINVALIDASPECT',\r\n  'ASSETDATAINVALIDHEIGHT',\r\n  'ASSETDATAINVALIDWIDTH',\r\n  'ASSETISALREADYDELETED',\r\n  'ASSETISUSED',\r\n  'ASSOCIATIONSLIMITEXCEEDEDPERADEXTENSIONTYPE',\r\n  'ASSOCIATIONSLIMITEXCEEDEDPERADEXTENSIONTYPEFORENTITY',\r\n  'ATTRIBUTENAMELENGTHEXCEEDED',\r\n  'ATTRIBUTEVALUELENGTHEXCEEDED',\r\n  'ATTRIBUTEVALUESTRINGTOOLONG',\r\n  'AUDIENCESHOULDNOTBEACCOUNTLEVEL',\r\n  'BASECAMPAIGNBUDGETTYPEINVALID',\r\n  'BOTHDESTINATIONURLANDFINALURLNOTALLOWED',\r\n  'BUDGETAMOUNTISABOVELIMIT',\r\n  'BUDGETAMOUNTISBELOWLIMIT',\r\n  'BUDGETIDINVALID',\r\n  'BULKFILEEXPIRED',\r\n  'BULKFILENOTPRESENT',\r\n  'BULKFILESCANNOTBEMULTIPLE',\r\n  'CAMPAIGNADGROUPNOTMATCHED',\r\n  'CAMPAIGNOREXPERIMENTWITHNAMEALREADYEXISTS',\r\n  'CAMPAIGNSERVICECANNOTADDCRITERIONTOCAMPAIGNWITHOUTDYNAMICSEARCHSETTINGS',\r\n  'CAMPAIGNSERVICEEXPANDEDTEXTADDEFAULTTEXTREQUIREDFORKEYWORD',\r\n  'CAMPAIGNSERVICEEXPERIMENTDOESNOTSUPPORTMIXEDMODECAMPAIGN',\r\n  'CAMPAIGNSERVICERESPONSIVESEARCHADDESCRIPTIONSLESSTHANMINREQUIRED',\r\n  'CAMPAIGNSERVICERESPONSIVESEARCHADHEADLINESLESSTHANMINREQUIRED',\r\n  'CAMPAIGNSERVICERESPONSIVESEARCHADPATH1INVALID',\r\n  'CAMPAIGNSERVICERESPONSIVESEARCHADPATH2INVALID',\r\n  'CAMPAIGNWITHNAMEALREADYEXISTS',\r\n  'CANNOTUPDATEACCOUNTPROPERTYBYCUSTOMERIDFORTHISPROPERTYNAME',\r\n  'CANNOTUSESTANDARDFEEDATTRIBUTENAME',\r\n  'CANNOTUSETARGETINGFEEDATTRIBUTENAME',\r\n  'COOPINVALIDCOOPERR',\r\n  'COUNTDOWNDAYSBEFOREOUTOFRANGE',\r\n  'COUNTDOWNINVALIDDATETIME',\r\n  'COUNTDOWNINVALIDDAYSBEFORE',\r\n  'COUNTDOWNINVALIDDEFAULTTEXT',\r\n  'COUNTDOWNINVALIDLANGUAGECODE',\r\n  'COUNTDOWNINVALIDPARAMETERS',\r\n  'COUNTDOWNPASTDATETIME',\r\n  'CREATESTOREWITHFRAUDDOMAINERR',\r\n  'CUSTOMERNOTELIGIBLEFORDYNAMICDATAFEED',\r\n  'CUSTOMERUNDERMIGRATION',\r\n  'CUSTOMIDATTRIBUTESHOULDBEOFSTRINGTYPE',\r\n  'DEFAULTHOTELGROUPUPDATENOTALLOWED',\r\n  'DESTINATIONGOALURLSTRINGHASINVALIDCHARACTERS',\r\n  'DESTINATIONGOALURLSTRINGTOOLONG',\r\n  'DESTINATIONURLPROTOCOLINVALID',\r\n  'DOWNLOADFILTEREXPRESSIONSCOUNTEXCEEDED',\r\n  'DUPLICATEASSETSUNDERFOLDER',\r\n  'DUPLICATEAUDIENCEID', // when trying to create audience with the same ID\r\n  'DUPLICATEAUDIENCENAME',\r\n  'DUPLICATEDOMAINNAMEERR',\r\n  'DUPLICATEENTITY', // duplicate folder created (user error)\r\n  'DUPLICATEFEEDATTRIBUTENAME',\r\n  'DUPLICATEFEEDFILENAMEERR',\r\n  'DUPLICATEFEEDNAME',\r\n  'DUPLICATEFEEDNAMEERR',\r\n  'DUPLICATEFOLDERNAME',\r\n  'DUPLICATEIMAGE',\r\n  'DUPLICATELISTITEMINLIST',\r\n  'DUPLICATEPRODUCTAUDIENCE', // when trying to create audience with same audience setting(tag, type)\r\n  'DUPLICATESHAREDLISTNAME',\r\n  'DUPLICATESOURCEPULLURLERR',\r\n  'DUPLICATESTORENAMEERR',\r\n  'DUPLICATETAGID', // when creating tag for the audience with same ID\r\n  'DUPLICATEVALUES', // when creating hotel center length of stay with same value in different stay length\r\n  'DYNAMICSEARCHADPATH1INVALID', // Added from legacy error file\r\n  'DYNAMICSEARCHADTEXTPART2INVALID',\r\n  'EDITORIALADDESTINATIONURLBLANKACROSSALLASSOCIATIONS',\r\n  'EDITORIALADTEXTBLANKACROSSALLASSOCIATIONS',\r\n  'EDITORIALADTITLEBLANKACROSSALLASSOCIATIONS',\r\n  'EDITORIALAPPEALCREATIONQUOTAEXCEEDED',\r\n  'EDITORIALAPPEALCREATIONQUOTAEXCEEDEDFORLAST24HOURS',\r\n  'EDITORIALAPPEALENTITYALREADYAPPEALED',\r\n  'EDITORIALERROR',\r\n  'EDITORIALSYNTAXERRORINTITLE',\r\n  'EDITORIALTOOMUCHADTEXTINDESTINATIONURL',\r\n  'EDITORIALTOOMUCHADTEXTINTEXT',\r\n  'EDITORIALTOOMUCHADTEXTINTEXTACROSSALLASSOCIATIONS',\r\n  'EDITORIALTOOMUCHADTEXTINTITLE',\r\n  'EDITORIALTOOMUCHADTEXTINTITLEACROSSALLASSOCIATIONS',\r\n  'ENDEDEXPERIMENTCANNOTBECHANGED',\r\n  'ENTITYALREADYEXISTS',\r\n  'EXPANDEDTEXTADCOMBINEDTITLETOOLONG',\r\n  'EXPANDEDTEXTADCOUNTDOWNDAYSBEFOREOUTOFRANGE',\r\n  'EXPANDEDTEXTADCOUNTDOWNINVALIDDATETIME',\r\n  'EXPANDEDTEXTADCOUNTDOWNINVALIDDAYSBEFORE',\r\n  'EXPANDEDTEXTADCOUNTDOWNINVALIDDEFAULTTEXT',\r\n  'EXPANDEDTEXTADCOUNTDOWNINVALIDLANGUAGECODE',\r\n  'EXPANDEDTEXTADCOUNTDOWNINVALIDPARAMETERS',\r\n  'EXPANDEDTEXTADCOUNTDOWNPASTDATETIME',\r\n  'EXPANDEDTEXTADDEFAULTTEXTREQUIREDFORKEYWORDPARAMETER',\r\n  'EXPANDEDTEXTADDISPLAYURLDOMAINEXTRACTIONFAILED',\r\n  'EXPANDEDTEXTADDISPLAYURLDOMAININVALID',\r\n  'EXPANDEDTEXTADFINALURLDOMAINTOOLONG',\r\n  'EXPANDEDTEXTADINVALIDFUNCTIONFORMAT',\r\n  'EXPANDEDTEXTADMISSINGDELIMITERBETWEENFUNCTIONS',\r\n  'EXPANDEDTEXTADPATH1INVALID',\r\n  'EXPANDEDTEXTADPATH2INVALID',\r\n  'EXPANDEDTEXTADTEXTPART1INVALID',\r\n  'EXPANDEDTEXTADTEXTPART1TOOLONG',\r\n  'EXPANDEDTEXTADTEXTPART2INVALID',\r\n  'EXPANDEDTEXTADTEXTPART2TOOLONG',\r\n  'EXPANDEDTEXTADTITLEPART1INVALID',\r\n  'EXPANDEDTEXTADTITLEPART1TOOLONG',\r\n  'EXPANDEDTEXTADTITLEPART2INVALID',\r\n  'EXPANDEDTEXTADTITLEPART2TOOLONG',\r\n  'EXPANDEDTEXTADTITLEPART3INVALID',\r\n  'EXPANDEDTEXTADTITLEPART3TOOLONG',\r\n  'EXPANDEDTEXTADUNKNOWNFUNCTION',\r\n  'EXPERIMENTCAMPAIGNCANNOTBEUPDATED',\r\n  'EXPERIMENTENDDATELESSTHANTODAY',\r\n  'EXPERIMENTIDINVALID',\r\n  'EXPERIMENTNAMEISSAMEASBASECAMPAIGNNAME',\r\n  'EXPERIMENTNOTSUPPORTEDFORDISCLAIMERCAMPAIGN',\r\n  'EXPERIMENTTIMEPERIODOVERLAPPING',\r\n  'EXPERIMENTTRAFFICSPLITPERCENTCANNOTBECHANGED',\r\n  'FEEDASSOCIATIONLIMITATIONREACHED',\r\n  'FEEDITEMMAXLIMITREACHED',\r\n  'FEEDNOTFOUNDERR',\r\n  'FEEDUPLOADSCHEDULEINVALIDURL',\r\n  'FEEDUPLOADSCHEDULEUNABLETOFETCHFILE',\r\n  'FEEDUPLOADSCHEDULEUSERNAMEREQUIREDFORPASSWORD',\r\n  'FILEFETCHAUTHENTICATIONERROR',\r\n  'FILEFETCHCONNECTIONERROR',\r\n  'FILEFETCHFILEPATHNOTFOUND',\r\n  'FILEFETCHPERMISSIONLEVELERROR',\r\n  'FILEFORMATNOTSUPPORTED',\r\n  'FILESIZEEXCEEDED',\r\n  'FINALURLREQUIREDWHENUSINGTRACKINGURLTEMPLATEORURLCUSTOMPARAMETER',\r\n  'FOLDERHASASSETS',\r\n  'FOLDERHASSUBFOLDERS',\r\n  'FORMATVERSIONNOTSUPPORTED',\r\n  'FORMATVERSIONREQUIRED',\r\n  'FTPSETTINGSUSERNAMEINVALIDCHARACTERS',\r\n  'FTPSETTINGSUSERNAMETOOLONG',\r\n  'FTPSETTINGSUSERNAMETOOSHORT',\r\n  'FTPSETTINGUSERNAMEALREADYUSED',\r\n  'GOALWITHSAMENAMEALREADYEXISTSUNDERTAG',\r\n  'GOOGLEIMPORTCANNOTRETRIEVEREFRESHTOKEN',\r\n  'GOOGLEIMPORTCONTENTAPIINSUFFICIENTAUTHSCOPE',\r\n  'GOOGLESYNCACCOUNTNOTSETUP',\r\n  'GOOGLESYNCNOTADWORDSUSER',\r\n  'GOOGLESYNCOAUTHTOKENREVOKED',\r\n  'GOOGLESYNCTWOSTEPVERIFICATIONNOTENROLLED',\r\n  'GOOGLESYNCUSERISNOTAUTHORIZED',\r\n  'GOOGLESYNCUSERPERMISSIONDENIED',\r\n  'IFFUNCTIONAUDIENCESEXCEEDSMAXFIELDLENGTH',\r\n  'IFFUNCTIONCUSTOMERNOTINPILOT',\r\n  'IFFUNCTIONDUPLICATEAUDIENCES',\r\n  'IFFUNCTIONINVALIDAUDIENCE',\r\n  'IFFUNCTIONINVALIDSYNTAX',\r\n  'IFFUNCTIONNESTINGNOTALLOWED',\r\n  'IFFUNCTIONNUMAUDIENCESEXCEEDSMAXFORAD',\r\n  'IFFUNCTIONSOMEHAVEDEFAULTVALUEBUTNOTALL',\r\n  'IFFUNCTIONSPECIALCHARACTERSARENOTESCAPED',\r\n  'IFFUNCTIONSPECIALCHARACTERSNOTALLOWED',\r\n  'IMAGESLIMITEXCEEDEDPERACCOUNT',\r\n  'IMAGEDOESNTFITASPECTRATIO',\r\n  'IMPORTEXCEEDGOOGLESTORECOUNTLIMIT',\r\n  'IMPORTFEEDTYPENOTSUPPORTED',\r\n  'IMPORTINVALIDEXCELFILEFORMATHAVINGMULTIPLEWORKSHEETS',\r\n  'IMPORTINVALIDFILEFORMAT',\r\n  'IMPORTMARKETALREADYEXISTS',\r\n  'IMPORTSTATUSINVALID',\r\n  'INVALIDADEXTENSIONSTATUS',\r\n  'INVALIDAUDIENCEDESCRIPTION',\r\n  'INVALIDAUDIENCEID',\r\n  'INVALIDAUDIENCELOOKBACKWINDOW',\r\n  'INVALIDAUDIENCENAME',\r\n  'INVALIDCATEGORYFORGOALTYPE',\r\n  'INVALIDCHARACTERSINKEY',\r\n  'INVALIDCHARACTERSINVALUE',\r\n  'INVALIDDATETIMEFEEDITEMATTRIBUTEVALUE',\r\n  'INVALIDDURATION',\r\n  'INVALIDEMAILADDRESSERR',\r\n  'INVALIDENDDATEATTRIBUTEVALUE',\r\n  'INVALIDFEEDATTRIBUTE',\r\n  'INVALIDFEEDATTRIBUTETYPEINCOUNTDOWN',\r\n  'INVALIDFEEDFILENAMEERR',\r\n  'INVALIDFEEDITEMATTRIBUTEVALUE',\r\n  'INVALIDFEEDNAME',\r\n  'INVALIDFEEDNAMEERR',\r\n  'INVALIDFEEDUPLOADFILE',\r\n  'INVALIDFILTERLINKTEXTCHARACTER',\r\n  'INVALIDFOLDERNAME',\r\n  'INVALIDFUNCTIONFORMAT',\r\n  'INVALIDGEOGRAPHICALLOCATIONSEARCHSTRING',\r\n  'INVALIDGOALID',\r\n  'INVALIDGRIDDATAPARAMETERS',\r\n  'INVALIDID',\r\n  'INVALIDINT64FEEDITEMATTRIBUTEVALUE',\r\n  'INVALIDPAGEFEEDLABEL',\r\n  'INVALIDPAGEFEEDURL',\r\n  'INVALIDPRICEFEEDITEMATTRIBUTEVALUE',\r\n  'INVALIDPULLUSERNAMEERR',\r\n  'INVALIDSTARTDATEATTRIBUTEVALUE',\r\n  'INVALIDSTOREDESCRIPTIONERR',\r\n  'INVALIDTAG',\r\n  'INVALIDTAGDESCRIPTION',\r\n  'INVALIDTAGNAME',\r\n  'INVALIDTARGETADGROUPATTRIBUTEVALUE',\r\n  'INVALIDTARGETAUDIENCEIDATTRIBUTEVALUE',\r\n  'INVALIDTARGETCAMPAIGNATTRIBUTEVALUE',\r\n  'INVALIDTARGETKEYWORDTEXTATTRIBUTEVALUE',\r\n  'INVALIDURL',\r\n  'INVALIDURLFEEDITEMATTRIBUTEVALUE',\r\n  'INVALIDVALUE',\r\n  'KEYFEEDITEMATTRIBUTEVALUECONFLICTION',\r\n  'KEYWORDANDMATCHTYPECOMBINATIONALREADYEXISTS',\r\n  'KEYWORDIDINVALID',\r\n  'KEYWORDSUBSTITUTIONNOTSUPPORTED',\r\n  'LABELNAMEDUPLICATE',\r\n  'LANGUAGEMISMATCHUSERAD',\r\n  'LISTINGADGROUPNOTMATCHED',\r\n  'LOCATIONFUNCTIONINVALIDPARAMETERS',\r\n  'MAXADSLIMITEXCEEDED',\r\n  'MAXAUDIENCECRITERIONSPERACCOUNTLIMITREACHED',\r\n  'MAXAUDIENCESPERACCOUNTLIMITREACHED',\r\n  'MAXAUDIENCESPERCUSTOMERLIMITREACHED',\r\n  'MAXFEEDLIMITREACHEDERR',\r\n  'MAXINMARKETAUDIENCEEXCLUSIONPERACCOUNTLIMITREACHED',\r\n  'MAXLISTITEMLIMITEXCEEDEDFORLIST',\r\n  'MAXMMAADSLIMITREACHEDINADGROUP',\r\n  'MAXRSAADSLIMITREACHEDINADGROUP',\r\n  'MEDIAFORMATNOTSUPPORTED',\r\n  'MISSINGDELIMITERBETWEENFUNCTIONS',\r\n  'MISSINGLANDINGPAGEURLTAG',\r\n  'MOBILEFINALURLNOTALLOWEDWITHMOBILEDEVICEPREFERENCE',\r\n  'MULTIACCOUNTBULKUPLOADACCOUNTCOUNTEXCEEDED',\r\n  'MULTIACCOUNTUPLOADMISSINGFILENAME',\r\n  'MULTIACCOUNTUPLOADUNSUPPORTEDFILETYPE',\r\n  'NAMECOLLISION',\r\n  'NEGATIVEKEYWORDDUPLICATE',\r\n  'NEGATIVEKEYWORDHASINVALIDCHARS',\r\n  'NEGATIVEKEYWORDTOOLONG',\r\n  'NEGATIVESITECANNOTBEOWNEDOROPERATEDSITE',\r\n  'NEGATIVESITEURLEXCEEDMAXSUBDIRECTORIES',\r\n  'NEGATIVESITEURLEXCEEDMAXSUBDOMAINS',\r\n  'NEGATIVESITEURLINVALID',\r\n  'NEGATIVESITEURLTOOLONG',\r\n  'NESTEDPARAMETERINCUSTOMATTRIBUTENOTSUPPORTED',\r\n  'NOENOUGHCONVERSIONFORMAXCONVERSIONSBIDDINGSCHEME',\r\n  'NOENOUGHCONVERSIONFORTARGETCPABIDDINGSCHEME',\r\n  'OFFLINECONVERSIONADDITIONCOLUMNSNOTEXPECTEDINHEADER',\r\n  'OFFLINECONVERSIONADJUSTMENTCOLUMNSNOTEXPECTEDINHEADER',\r\n  'OFFLINECONVERSIONCOLUMNCONVERSIONCURRENCYNOTFOUND',\r\n  'OFFLINECONVERSIONCOLUMNCONVERSIONNAMENOTFOUND',\r\n  'OFFLINECONVERSIONCOLUMNCONVERSIONTIMENOTFOUND',\r\n  'OFFLINECONVERSIONCOLUMNCONVERSIONVALUENOTFOUND',\r\n  'OFFLINECONVERSIONCOLUMNMICROSOFTCLICKIDNOTFOUND',\r\n  'OFFLINECONVERSIONFILEFORMATINVALID',\r\n  'OFFLINECONVERSIONHEADERSROWNOTFOUND',\r\n  'OFFLINECONVERSIONTIMEZONEINVALID',\r\n  'OFFLINECONVERSIONUPLOADACCOUNTIDCOLUMNNOTFOUND',\r\n  'OFFLINECONVERSIONUPLOADFILESIZEEXCEEDED',\r\n  'OFFLINECONVERSIONUPLOADMULTIPLEFILESINZIPFILE',\r\n  'OFFLINECONVERSIONUPLOADZIPFILEEMPTY',\r\n  'ONLYONEACTIVENODEISALLOWED',\r\n  'PAGEFEEDLABELTOOLONG',\r\n  'PORTFOLIOBIDSTRATEGYIDINVALID',\r\n  'PORTFOLIOBIDSTRATEGYISASSOCIATEDWITHACTIVECAMPAIGNS',\r\n  'PROMOTIONCANNOTBEUPDATEDATCURRENTSTATE',\r\n  'PROMOTIONIDALREADYUSED',\r\n  'REQUESTFAILED',\r\n  'REQUESTIDINVALID',\r\n  'RESPONSIVESEARCHADDEFAULTTEXTREQUIREDFORKEYWORDPARAMETER', // Added from legacy error file\r\n  'RESPONSIVESEARCHADDESCRIPTIONSLESSTHANMINREQUIRED',\r\n  'RESPONSIVESEARCHADFINALURLDOMAINTOOLONG',\r\n  'RESPONSIVESEARCHADHEADLINESLESSTHANMINREQUIRED',\r\n  'RESPONSIVESEARCHADPATH1INVALID',\r\n  'RESPONSIVESEARCHADSBOTHCOUNTDOWNANDGLOBALCOUNTDOWN',\r\n  'RESPONSIVESEARCHADSDESCRIPTIONSLESSTHANMINREQUIRED',\r\n  'RESPONSIVESEARCHADSDUPLICATEHEADLINES',\r\n  'RESPONSIVESEARCHADSHEADLINESLESSTHANMINREQUIRED',\r\n  'RETURNPOLICYINVALIDURLERR',\r\n  'ROWCOUNTEXCEEDED',\r\n  'RSAADCUSTOMIZERATTRIBUTECOUNTMORETHANLIMIT',\r\n  'RSAADCUSTOMIZERATTRIBUTETYPECHANGEDINUPDATE',\r\n  'SCHEDULEDAYSNOTINDATERANGE',\r\n  'SHAREDENTITIESWITHACTIVEASSOCIATIONSCANNOTBEDELETED',\r\n  'SHAREDENTITYASSOCIATIONDOESNOTEXIST',\r\n  'SHAREDENTITYASSOCIATIONSBATCHLIMITEXCEEDED',\r\n  'SHAREDENTITYLIMITEXCEEDED',\r\n  'SHAREDENTITYNAMEINVALID',\r\n  'SHAREDLISTIDINVALID',\r\n  'SHAREDLISTITEMBATCHLIMITEXCEEDED',\r\n  'SHAREDLISTITEMIDSLIMITEXCEEDED',\r\n  'SHAREDLISTITEMNOTINLIST',\r\n  'SHIPPINGSETTINGSDUPLICATELABELNAMEUSED',\r\n  'SITELINKDESCRIPTION1INVALID',\r\n  'SITELINKDESCRIPTION1TOOLONG',\r\n  'SITELINKDESCRIPTION2INVALID',\r\n  'SITELINKDESCRIPTION2TOOLONG',\r\n  'SITELINKDESTINATIONURLNULLOREMPTY',\r\n  'SITELINKDISPLAYTEXTINVALID',\r\n  'SITELINKDISPLAYTEXTTOOLONG',\r\n  'SMARTPAGECONCURRENTUPDATINGISNOTALLOWED',\r\n  'SMARTPAGEGETFBPAGEOAUTHERROR',\r\n  'SMARTPAGEGETFBPAGEUSERERROR',\r\n  'SMARTPAGEINVALIDSTATUS',\r\n  'SMARTPAGEINVALIDSUBDOMAIN',\r\n  'SMARTPAGESUBDOMAINISNOTAVAILABLE',\r\n  'SMARTPAGEURLISREJECTEDBYEDITORIAL',\r\n  'STARTDATECOMESAFTERENDDATE',\r\n  'STOCKIMAGELIMITEXCEEDEDPERCUSTOMER', // Added from legacy error file\r\n  'STORENOTCOMPLIANTERR',\r\n  'STORENOTFOUNDERR',\r\n  'TAGWITHSAMENAMEALREADYEXISTSUNDERCUSTOMER',\r\n  'TARGETFEEDSTATUSINVALID',\r\n  'TASKSCHEDULINGINVALID',\r\n  'TOKENEXPIRED',\r\n  'TOOMANAYCUSTOMBIDSINADGROUP',\r\n  'TOOMANYADEXTENSIONSPERACCOUNT',\r\n  'TOOMANYCUSTOMBIDSINADGROUP',\r\n  'TOOMANYPAGEFEEDLABELS',\r\n  'TOOMANYVALUES',\r\n  'TOOMUCHDATAFORINLINEDOWNLOAD',\r\n  'TOOMUCHDATATODOWNLOAD',\r\n  'TOOMUCHEXCELDATATODOWNLOAD',\r\n  'UNKNOWNFUNCTION',\r\n  'URLNOTACCESSIBLE',\r\n  'VALUETOOLONG',\r\n  'VIDEOEXTENSIONINVALIDASPECTRATIO',\r\n  'VIDEOEXTENSIONINVALIDIMAGEFORMAT',\r\n  'VIDEOEXTENSIONINVALIDVIDEODURATION',\r\n  'VIDEOEXTENSIONINVALIDVIDEOID',\r\n  'VIDEOEXTENSIONTHUMBNAILTOOSMALL',\r\n  'VIDEOEXTENSIONVIDEOPROCESSINGFAILED',\r\n  'VIDEOEXTENSIONVIDEOTOOSMALL', // Added from legacy error file\r\n  'VIDEOOVERWEIGHT',\r\n  'WEBPAGECRITERIONALREADYEXISTS',\r\n  'GOALLEVELCANNOTBEDOWNGRADED',\r\n  'CUSTOMERNOTELIGIBLEFORENHANCEDCONVERSIONS',\r\n  'CONVERSIONEMAILADDRESSISNOTHASHED', // The conversion email address value is not hashed.\r\n  'CONVERSIONPHONENUMBERISNOTHASHED', // The conversion phone number value is not hashed.\r\n  'ONLINECONVERSIONHASHEDEMAILADDRESSNOTEXPECTED', // Invalid column HashedEmailAddress in online conversion file\r\n  'ONLINECONVERSIONHASHEDPHONENUMBERNOTEXPECTED', // Invalid column HashedPhoneNumber in online conversion file\r\n  'GOOGLEMYBUSINESSIMPORTUSERERROR',\r\n  'SHAREDLIBRARYUSERPERMISSIONDENIED',\r\n  'LOGOEXTENSIONLOGONOTSQUARE',\r\n  'IMAGEADEXTENSIONALTERNATIVETEXTINVALID',\r\n];\r\n\r\n// specify campaign api error codes that represent user errors\r\nconst campaignApiErrorCodes = [\r\n  276, // EditorialError\r\n  9028, // AssetIsUsed\r\n  2512, // AdGroupIdInvalid\r\n  9017, // AssetDataInvalid\r\n  9021, // AssetDataInvalidWidth\r\n  9022, // AssetDataInvalidHeight\r\n  9023, // AssetDataInvalidAspect\r\n  9045, // InvalidDuration\r\n  9046, // VideoOverweight\r\n  35305, // ImageAdExtensionAlternativeTextInvalid\r\n  35307, // ImageAdExtensionDestinationUrlInvalid\r\n  35310, // InvalidImageExtensionDescription\r\n];\r\n\r\n// specify unsupported domains that result in failed requests\r\nconst invalidDomains = [\r\n  'www.googletagmanager.com',\r\n  'cdn.optimizely.com',\r\n  'tracker.marinsm.com',\r\n  'lptag.liveperson.net',\r\n];\r\n\r\nexport { odataErrorCodes, campaignApiErrorCodes, invalidDomains };\r\n\r\n","export const defaultSchema = {\r\n  scenario: [{\r\n    name: 'defaultScenario',\r\n    value: 'Ad Library Default Scenario',\r\n    activity: [{\r\n      name: 'logError',\r\n      value: 'Ad Library Custom Error',\r\n    }, {\r\n      name: 'logTrace',\r\n      value: 'Ad Library Custom Trace',\r\n    }, {\r\n      name: 'logMetrics',\r\n      value: 'Ad Library Metrics',\r\n    }],\r\n  }],\r\n};\r\n\r\nexport const fetchEventSchema = {\r\n  scenario: [\r\n    {\r\n      name: 'fetchEvent',\r\n      value: 'Fetch Event Scenario',\r\n      activity: [\r\n        {\r\n          name: 'fetchTrace',\r\n          value: 'Fetch Event Trace',\r\n        },\r\n        {\r\n          name: 'fetchError',\r\n          value: 'Fetch Event Error',\r\n        },\r\n      ],\r\n    },\r\n  ],\r\n};\r\n\r\nexport const globalErrorSchema = {\r\n  scenario: [{\r\n    name: 'appReactGlobalError',\r\n    value: 'Log application global react error',\r\n    activity: [{\r\n      name: 'logError',\r\n      value: 'Log Error Info',\r\n    }],\r\n  }],\r\n};\r\n","import _ from 'underscore';\r\nimport {\r\n  getInstrumentation as getInstrumentationInstance,\r\n  InstrumentationSchema,\r\n} from '@bingads-webui-campaign/instrumentation-setup';\r\nimport {\r\n  OdataErrorMapper,\r\n  CampaignApiErrorMapper,\r\n  UrlErrorMapper,\r\n  odataErrorCodes,\r\n  campaignApiErrorCodes,\r\n  invalidDomains,\r\n} from '@bingads-webui-campaign/instrumentation';\r\nimport { isInternalUrl } from '@bingads-webui/url-util';\r\nimport { AjaxStub, AjaxEventHandler, ErrorStub } from '@bingads-webui/instrumentation-stubs';\r\nimport { defaultSchema } from './instrumentation-schema';\r\n\r\nconst errorMappers = {\r\n  odataErrorMapper: new OdataErrorMapper(odataErrorCodes),\r\n  campaignApiErrorMapper: new CampaignApiErrorMapper(campaignApiErrorCodes),\r\n  urlErrorMapper: new UrlErrorMapper(invalidDomains),\r\n};\r\n\r\nconst formatNameValue = (name, value) => {\r\n  if (_.isEmpty(value)) {\r\n    return `${name}`;\r\n  } else if (_.isObject(value)) {\r\n    return `${name}|${JSON.stringify(value)}|NetworkIsOnline:${window.navigator.onLine}`;\r\n  }\r\n  return `${name}|${value}`;\r\n};\r\n\r\nfunction stub(instrumentation, serverContext) {\r\n  const stubOptions = {\r\n    pageTrackingId: serverContext && serverContext.PageTrackingId,\r\n    lcid: serverContext && serverContext.CurrentUser && serverContext.CurrentUser.Locale,\r\n  };\r\n\r\n  const shouldAddHeaders = ajaxContext => isInternalUrl(ajaxContext.url);\r\n  const eventHandler = new AjaxEventHandler({\r\n    errorMappers,\r\n    shouldAddHeaders,\r\n  });\r\n\r\n  const ajaxStub = new AjaxStub({\r\n    stubOptions,\r\n    eventHandler,\r\n    instrumentation,\r\n  });\r\n\r\n  const errorStub = new ErrorStub({\r\n    instrumentation,\r\n  });\r\n\r\n  ajaxStub.init();\r\n  errorStub.init();\r\n}\r\n\r\nexport const getInstrumentation = ({ serverContext }) => {\r\n  const {\r\n    CurrentCustomer,\r\n    CurrentAccount,\r\n    CurrentUser,\r\n  } = serverContext;\r\n\r\n  const userContext = {\r\n    CurrentCustomer: CurrentCustomer || {},\r\n    CurrentAccount: CurrentAccount || {},\r\n    CurrentUser: CurrentUser || {},\r\n  };\r\n\r\n  return getInstrumentationInstance({\r\n    pageTrackingId: serverContext.PageTrackingId,\r\n    errorMappers,\r\n    isInDevelopmentMode: process.env.NODE_ENV === 'development',\r\n    userContext,\r\n    applicationName: {\r\n      systemName: 'adlibrary',\r\n      subSystemName: 'ui',\r\n    },\r\n    serverContext: {\r\n      ...serverContext,\r\n      ...userContext,\r\n    },\r\n    objectsToStub: [],\r\n  });\r\n};\r\n\r\nexport const getInstrumentationService = ({ instrumentation, serverContext, scenario = 'defaultScenario' }) => {\r\n  instrumentation.addScenario({\r\n    scenario: [\r\n      ...defaultSchema.scenario,\r\n      ...InstrumentationSchema.scenario,\r\n    ],\r\n  });\r\n\r\n  const defaultScenario = instrumentation[scenario].create();\r\n  const logError = defaultScenario.logError.create();\r\n  const logTrace = defaultScenario.logTrace.create();\r\n  const logMetrics = defaultScenario.logMetrics.create();\r\n\r\n  stub(instrumentation, serverContext);\r\n\r\n  return {\r\n    instrumentation,\r\n    logError: (name, value = '') => {\r\n      logError.error(formatNameValue(name, value));\r\n    },\r\n    logTrace: (name, value = '') => {\r\n      logTrace.trace(formatNameValue(name, value));\r\n    },\r\n    logMetrics: (name, value = '') => {\r\n      logMetrics.trace(formatNameValue(name, value));\r\n    },\r\n  };\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useContext } from 'react';\r\n\r\nexport const InstrumentationServiceContext = React.createContext({\r\n  logError: _.noop,\r\n  logTrace: _.noop,\r\n  logMetrics: _.noop,\r\n  instrumentation: {},\r\n});\r\n\r\nexport const useInstrumentationServiceContext = () => {\r\n  const context = useContext(InstrumentationServiceContext);\r\n  return context;\r\n};\r\n","export { getInstrumentation } from './src/instrumentation';\r\nexport { InstrumentationSchema } from './src/instrumentation-schema';\r\n","import { Instrumentation } from '@bingads-webui/instrumentation';\r\n\r\nimport { PerformanceTimingLogger } from '@bingads-webui/performance-timing-logger';\r\nimport { PerfMarkerFactory } from '@bingads-webui/performance-marker';\r\nimport { getListeners } from './listeners';\r\nimport { getProcessors } from './processors';\r\nimport { setStub } from './set-stub';\r\nimport getPerfLogListeners from './perf-timing-config';\r\n\r\nexport function getInstrumentation({\r\n  pageTrackingId,\r\n  errorMappers,\r\n  isInDevelopmentMode,\r\n  userContext,\r\n  applicationName,\r\n  serverContext,\r\n  ajaxStubOptions,\r\n  ariaConfig = {},\r\n  objectsToStub = [window.$],\r\n}) {\r\n  const processors = getProcessors({\r\n    isInDevelopmentMode,\r\n    pageTrackingId,\r\n    userContext,\r\n    serverContext,\r\n  });\r\n\r\n  const instrumentationForPerfTiming = new Instrumentation({\r\n    listeners: getPerfLogListeners({ ariaConfig }),\r\n    processors,\r\n  });\r\n\r\n  const perfTimingLogger = new PerformanceTimingLogger({\r\n    instrumentation: instrumentationForPerfTiming,\r\n  });\r\n  perfTimingLogger.init();\r\n\r\n  const instrumentation = new Instrumentation({\r\n    listeners: getListeners({ pageTrackingId, applicationName, ariaConfig }),\r\n    processors: {\r\n      contextProcessor: processors.contextProcessor,\r\n      debugProcessor: processors.debugProcessor,\r\n    },\r\n  });\r\n\r\n  setStub({\r\n    instrumentation,\r\n    pageTrackingId,\r\n    errorMappers,\r\n    objectsToStub,\r\n    ajaxStubOptions,\r\n    lcid: userContext.CurrentUser.Locale,\r\n  });\r\n\r\n  // init Perf Marker Factory\r\n  PerfMarkerFactory.init(instrumentation);\r\n\r\n  window.vNextInstrumentation = instrumentation;\r\n\r\n  return instrumentation;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__521__;","module.exports = __WEBPACK_EXTERNAL_MODULE__522__;","import _ from 'underscore';\r\nimport { AriaListener } from '@bingads-webui/aria-listener';\r\nimport { ConsoleListener } from '@bingads-webui/console-listener';\r\nimport { LocalStorageListener } from '@bingads-webui/local-storage-listener';\r\nimport { InMemoryListener, InMemorySink } from '@bingads-webui/in-memory-listener';\r\nimport {\r\n  getAriaConfig,\r\n  campaignLogTableConfig,\r\n  adInsightLogTableConfig,\r\n  BasicFormatter,\r\n  ApiFormatter,\r\n  AdInsightOpportunityLogFormatter,\r\n  ReportingApiFormatter,\r\n  ConsoleFormatter,\r\n  LogLevelFilter,\r\n  ApiFilter,\r\n  AdInsightOpportunityApiFilter,\r\n  ConsoleFilter,\r\n  UnloadLogFilter,\r\n  isTestEnvironment,\r\n} from '@bingads-webui-campaign/instrumentation';\r\n\r\nexport function getListeners({\r\n  pageTrackingId,\r\n  applicationName,\r\n  ariaConfig: applicationAriaConfig = {},\r\n}) {\r\n  const currentEnv = document.domain;\r\n  const ariaConfig = {\r\n    ...getAriaConfig(currentEnv),\r\n    ...applicationAriaConfig,\r\n  };\r\n\r\n  const applicationSystem = applicationName && applicationName.systemName ?\r\n    applicationName.systemName : 'campaign';\r\n  const applicationSubSystem = applicationName && applicationName.subSystemName ?\r\n    applicationName.subSystemName : 'webui';\r\n\r\n  // init log formatters\r\n  const basicFormatter = new BasicFormatter({\r\n    applicationSystem,\r\n    applicationSubSystem,\r\n  });\r\n  const apiFormatter = new ApiFormatter();\r\n  const reportingApiFormatter = new ReportingApiFormatter();\r\n  const consoleFormatter = new ConsoleFormatter();\r\n  // init log filters\r\n  const logLevelFilter = new LogLevelFilter();\r\n  const apiFilter = new ApiFilter();\r\n  const consoleFilter = new ConsoleFilter();\r\n  const unloadLogFilter = new UnloadLogFilter();\r\n\r\n  const localStorageListener = new LocalStorageListener({\r\n    formatters: {},\r\n    filters: {\r\n      unloadLogFilter,\r\n    },\r\n    uniquePageId: pageTrackingId,\r\n  });\r\n\r\n  localStorageListener.init();\r\n\r\n  const campaignAriaListener = new AriaListener({\r\n    tenantToken: ariaConfig.token,\r\n    flushInterval: ariaConfig.flushInterval,\r\n    batchSize: ariaConfig.batchSize,\r\n    logTableNames: campaignLogTableConfig.logTableNames,\r\n    defaultLogCategory: campaignLogTableConfig.defaultLogCategory,\r\n    formatters: {\r\n      basicFormatter,\r\n      apiFormatter,\r\n      reportingApiFormatter,\r\n    },\r\n    filters: {\r\n      logLevelFilter,\r\n      apiFilter,\r\n    },\r\n  });\r\n\r\n  campaignAriaListener.init();\r\n  campaignAriaListener.registerForTeardown();\r\n\r\n  const adInsightLogFormatter = new AdInsightOpportunityLogFormatter();\r\n  const adInsightApiFilter = new AdInsightOpportunityApiFilter();\r\n\r\n  const adInsightAriaListener = new AriaListener({\r\n    tenantToken: ariaConfig.tokens.adInsightOppTracking,\r\n    flushInterval: ariaConfig.flushInterval,\r\n    batchSize: ariaConfig.batchSize,\r\n    logTableNames: adInsightLogTableConfig.logTableNames,\r\n    defaultLogCategory: adInsightLogTableConfig.defaultLogCategory,\r\n    formatters: {\r\n      adInsightLogFormatter,\r\n    },\r\n    filters: {\r\n      adInsightApiFilter,\r\n    },\r\n  });\r\n\r\n  adInsightAriaListener.init();\r\n  adInsightAriaListener.registerForTeardown();\r\n\r\n  const consoleListener = new ConsoleListener({\r\n    filters: {\r\n      consoleFilter,\r\n    },\r\n    formatters: {\r\n      consoleFormatter,\r\n    },\r\n  });\r\n\r\n  consoleListener.init();\r\n\r\n  const listeners = {\r\n    localStorageListener,\r\n    campaignAriaListener,\r\n    adInsightAriaListener,\r\n    consoleListener,\r\n  };\r\n\r\n  if (isTestEnvironment(currentEnv)) {\r\n    window.seleniumLogsSink = new InMemorySink({ maxSize: 1000 });\r\n    const inMemoryListener = new InMemoryListener({\r\n      sink: window.seleniumLogsSink,\r\n      formatters: {\r\n        basicFormatter,\r\n        apiFormatter,\r\n      },\r\n      filters: {\r\n        logLevelFilter,\r\n        apiFilter,\r\n      },\r\n    });\r\n\r\n    inMemoryListener.init();\r\n\r\n    _.extend(listeners, { inMemoryListener });\r\n  }\r\n\r\n  return listeners;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__524__;","module.exports = __WEBPACK_EXTERNAL_MODULE__525__;","module.exports = __WEBPACK_EXTERNAL_MODULE__526__;","module.exports = __WEBPACK_EXTERNAL_MODULE__527__;","module.exports = __WEBPACK_EXTERNAL_MODULE__528__;","import {\r\n  ContextProcessor,\r\n  DebugProcessor,\r\n  PerfTimingProcessor\r\n} from '@bingads-webui-campaign/instrumentation';\r\n\r\nexport function getProcessors({\r\n  isInDevelopmentMode,\r\n  pageTrackingId,\r\n  userContext,\r\n  serverContext,\r\n}) {\r\n  const pageContext = serverContext || Object.assign({}, userContext, {\r\n    Version: '0.0.0',\r\n    PageTrackingId: pageTrackingId,\r\n  });\r\n  const contextProcessor = new ContextProcessor({ pageContext });\r\n  const debugProcessor = new DebugProcessor({\r\n    isDebugMode: isInDevelopmentMode,\r\n  });\r\n  const perfTimingProcessor = new PerfTimingProcessor({\r\n    landingPageUrl: window.location.href,\r\n  });\r\n\r\n  const processors = {\r\n    contextProcessor,\r\n    debugProcessor,\r\n    perfTimingProcessor,\r\n  };\r\n\r\n  return processors;\r\n}\r\n","import { AjaxStub, ErrorStub, AjaxEventHandler } from '@bingads-webui/instrumentation-stubs';\r\nimport { isInternalUrl } from '@bingads-webui/url-util';\r\nimport _ from 'underscore';\r\n\r\nexport function setStub({\r\n  instrumentation,\r\n  pageTrackingId,\r\n  errorMappers,\r\n  objectsToStub,\r\n  ajaxStubOptions,\r\n  lcid,\r\n}) {\r\n  // If the application pulls in jQuery, stub it for ajax call.\r\n  const filteredObjectsToStub = _.compact(objectsToStub);\r\n  if (!_.isEmpty(filteredObjectsToStub)) {\r\n    const shouldAddHeaders = ajaxContext => isInternalUrl(ajaxContext.url);\r\n    const eventHandler = new AjaxEventHandler({ errorMappers, shouldAddHeaders });\r\n    const ajaxStub = new AjaxStub({\r\n      stubOptions: {\r\n        filteredObjectsToStub,\r\n        pageTrackingId,\r\n        lcid,\r\n        ajaxStubOptions,\r\n      },\r\n      eventHandler,\r\n      instrumentation,\r\n    });\r\n\r\n    ajaxStub.init();\r\n  }\r\n\r\n  const errorStub = new ErrorStub({\r\n    instrumentation,\r\n  });\r\n  errorStub.init();\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__531__;","import { AriaListener } from '@bingads-webui/aria-listener';\r\nimport {\r\n  getAriaConfig,\r\n  PerformanceLogsFormatter,\r\n  PerformanceLogsFilter,\r\n} from '@bingads-webui-campaign/instrumentation';\r\n\r\nexport default function getPerfLogListeners(props) {\r\n  const { ariaConfig: applicationAriaConfig = {} } = props || {};\r\n  const currentEnv = document.domain;\r\n  const ariaConfig = {\r\n    ...getAriaConfig(currentEnv),\r\n    ...applicationAriaConfig,\r\n  };\r\n\r\n  // init log formatters\r\n  const performanceLogsFormatter = new PerformanceLogsFormatter();\r\n\r\n  // init log filters\r\n  const performanceLogsFilter = new PerformanceLogsFilter();\r\n\r\n  const ariaListener = new AriaListener({\r\n    tenantToken: ariaConfig.token,\r\n    flushInterval: ariaConfig.flushInterval,\r\n    batchSize: ariaConfig.batchSize,\r\n    logTableNames: {\r\n      resourcetiming: {\r\n        name: 'resourcetiming',\r\n      },\r\n    },\r\n    defaultLogCategory: 'resourcetiming',\r\n    formatters: {\r\n      performanceLogsFormatter,\r\n    },\r\n    filters: {\r\n      performanceLogsFilter,\r\n    },\r\n  });\r\n\r\n  ariaListener.init();\r\n  ariaListener.registerForTeardown();\r\n\r\n  const listeners = {\r\n    ariaListener,\r\n  };\r\n\r\n  return listeners;\r\n}\r\n","export const InstrumentationSchema = {\r\n  scenario: [\r\n    {\r\n      name: 'appScenario',\r\n      value: 'app scenario',\r\n      activity: [\r\n        {\r\n          name: 'appActivity',\r\n          value: 'app Activity',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'preInstrumentationInitializeScenario',\r\n      value: 'pre instrumentation start',\r\n      activity: [\r\n        {\r\n          name: 'perfActivity',\r\n          value: 'perf activity',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'globalSearchScenario',\r\n      value: 'global search scenario',\r\n      activity: [\r\n        {\r\n          name: 'searchActivity',\r\n          value: 'search Activity',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'datePicker',\r\n      value: 'datePicker',\r\n      activity: [\r\n        {\r\n          name: 'dateRangePicked',\r\n          value: 'dateRangePicked',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'mainMenuScenario',\r\n      value: 'main menu scenario',\r\n      activity: [\r\n        {\r\n          name: 'changeScopeActivity',\r\n          value: 'change scope Activity',\r\n        },\r\n        {\r\n          name: 'toggleMainMenuActivity',\r\n          value: 'toggle mainMenu Activity',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'summaryBarScenario',\r\n      value: 'summary bar scenario',\r\n      activity: [\r\n        {\r\n          name: 'changeScopeActivity',\r\n          value: 'change scope Activity',\r\n        },\r\n        {\r\n          name: 'summaryBarBudgetActivity',\r\n          value: 'update campaign summary bar budget Activity',\r\n        },\r\n        {\r\n          name: 'summaryBarBidActivity',\r\n          value: 'update ad group summary bar bid Activity',\r\n        },\r\n        {\r\n          name: 'summaryBarExperimentCampaignActivity',\r\n          value: 'update experiment campaign summary bar items Activity',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'globalMenuEntityBarScenario',\r\n      value: 'global menu entity bar scenario',\r\n      activity: [\r\n        {\r\n          name: 'changeScopeActivity',\r\n          value: 'change scope Activity',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'newUINavigation',\r\n      value: 'new UI navigation',\r\n      activity: [\r\n        'preferenceSet',\r\n      ],\r\n    },\r\n    {\r\n      name: 'urlChange',\r\n      value: 'url change',\r\n      activity: [\r\n        'routeChange',\r\n        'paramChange',\r\n      ],\r\n    },\r\n    {\r\n      name: 'feedbackScenario',\r\n      value: 'feedback scenario',\r\n      activity: [\r\n        'feedbackActivity',\r\n      ],\r\n    },\r\n    {\r\n      name: 'globalMenuScenario',\r\n      value: 'global menu scenario',\r\n      activity: [\r\n        'globalMenuActivity',\r\n      ],\r\n    },\r\n    {\r\n      name: 'newUIShortcuts',\r\n      value: 'new UI shortcuts',\r\n      activity: [\r\n        'shortcutSet',\r\n      ],\r\n    },\r\n    {\r\n      name: 'nkllPage',\r\n      value: 'nkllPage',\r\n      activity: [\r\n        'nkllPageLifeCycle',\r\n      ],\r\n    },\r\n    {\r\n      name: 'newUISmartShoppingCampaignCreationScenario',\r\n      value: 'newUISmartShoppingCampaignCreationScenario',\r\n      activity: [\r\n        'SSCCreationActivity',\r\n      ],\r\n    },\r\n    {\r\n      name: 'newUICreateCampaignImportIntegration',\r\n      value: 'newUICreateCampaignImportIntegration',\r\n      activity: [\r\n        'createCampaign',\r\n        'importIntegration',\r\n      ],\r\n    },\r\n  ],\r\n};\r\n","export { AjaxStub } from './src/ajax-stub/ajax-stub';\r\nexport { AjaxEventHandler } from './src/ajax-stub/ajax-event-handler';\r\nexport { ErrorStub } from './src/error-stub/error-stub';\r\n","import _ from 'underscore';\r\nimport { AjaxInterceptor } from './ajax-interceptor';\r\nimport { defaultConfig } from './default-config';\r\nimport { schema } from './ajax-stub-schema';\r\n\r\n/**\r\n * AjaxStub class - Creates an ajax stub that can be used by Instrumentation to stub ajax calls\r\n */\r\nexport class AjaxStub {\r\n  /**\r\n   * @param {object} options - contains instrumentation and optionally stubOptions, AjaxEventhandler\r\n   */\r\n  constructor(options = {}) {\r\n    this.stubOptions = _.defaults(options.stubOptions || {}, defaultConfig.stubOptions);\r\n    this.handler = options.eventHandler || defaultConfig.eventHandler;\r\n\r\n    // create scenario for logging\r\n    this.setupScenario(options.instrumentation);\r\n\r\n    this.interceptor = new AjaxInterceptor(this.stubOptions, this.handler, this.ajaxStubScenario);\r\n  }\r\n\r\n  init() {\r\n    _.each(this.stubOptions.objectsToStub, (objectToStub) => {\r\n      this.interceptor.intercept(objectToStub);\r\n    });\r\n  }\r\n\r\n  setupScenario(instr) {\r\n    instr.addScenario(schema);\r\n    this.ajaxStubScenario = instr.ajaxStubScenario.create(instr.ScenarioContext);\r\n  }\r\n}\r\n","import _ from 'underscore';\r\nimport urijs from 'urijs';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\nimport { AjaxEventInterceptor } from './ajax-event-interceptor';\r\n\r\n// We only want one ajax intercept, however instrumentation can be created a second time\r\n// e.g. after creating a CID during signup\r\nlet globalInterceptInstance = null;\r\n\r\n/**\r\n * AjaxInterceptor - Provides functionality to intercept ajax calls\r\n */\r\nexport class AjaxInterceptor {\r\n  /**\r\n   * @param {object} stubOptions - stub options to be used in ajax logging\r\n   * @param {object} eventHandler - handler for ajax events\r\n   * @param {object} scenario - scenario to be used by the stub\r\n   * @param {function} generateRid - optional: overwrites the function that generates an RID\r\n   */\r\n  constructor(stubOptions, eventHandler, scenario, generateRid) {\r\n    this.stubOptions = stubOptions;\r\n    this.eventHandler = eventHandler;\r\n    this.scenario = scenario;\r\n    this.generateRid = generateRid || generateGuid;\r\n  }\r\n\r\n  /* eslint-disable no-param-reassign */\r\n  intercept(jQuery) {\r\n    const originalAjax = jQuery.ajax;\r\n    const intercept = (url, options) => {\r\n      options = options || {};\r\n\r\n      if (_.isObject(url)) {\r\n        options = url;\r\n      } else if (_.isString(url)) {\r\n        options.url = url;\r\n      }\r\n\r\n      // add requestId to url\r\n      const requestId = this.generateRid();\r\n      if (this.shouldAddRequestId(options.dataType, options.url)) {\r\n        options.url = urijs(options.url).setQuery('ReqId', requestId).toString();\r\n      }\r\n\r\n      const activity = this.scenario.ajaxStubActivity.create();\r\n      const ajaxEventInterceptor = new AjaxEventInterceptor(\r\n        options,\r\n        requestId,\r\n        this.stubOptions,\r\n        this.eventHandler,\r\n        activity\r\n      );\r\n      ajaxEventInterceptor.triggerEventInterceptors();\r\n\r\n      return originalAjax.call(jQuery, options);\r\n    };\r\n\r\n    globalInterceptInstance = intercept;\r\n\r\n    jQuery.ajax = (url, options) => (globalInterceptInstance === intercept ?\r\n      intercept(url, options) :\r\n      originalAjax.call(jQuery, url, options));\r\n  }\r\n\r\n  shouldAddRequestId(dataType, url) {\r\n    const urlInLowerCase = _.isString(url) ? url.toLowerCase() : '';\r\n\r\n    return _.isString(url) &&\r\n      urlInLowerCase.indexOf('reqid') === -1 &&\r\n      (_.isUndefined(dataType) || dataType !== 'script') &&\r\n      urlInLowerCase.indexOf('scripts/') === -1;\r\n  }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst event = {\r\n  BEFORESEND: 'beforeSend', SUCCESS: 'success', COMPLETE: 'complete', ERROR: 'error',\r\n};\r\n\r\n/**\r\n * AjaxInterceptor - Intercepts ajax events (beforeSend, success, error, complete)\r\n */\r\nexport class AjaxEventInterceptor {\r\n  /**\r\n   * @param {object} options - options from ajax call\r\n   * @param {object} requestId - request id\r\n   * @param {object} stubOptions - stub options to be used in ajax logging\r\n   * @param {object} eventHandler - handler for ajax events\r\n   * @param {object} activity - activity to be used by the ajax logging calls\r\n   */\r\n  constructor(options, requestId, stubOptions, eventHandler, activity) {\r\n    this.options = options;\r\n    this.requestId = requestId;\r\n    this.stubOptions = stubOptions;\r\n    this.eventHandler = eventHandler;\r\n    this.activity = activity;\r\n  }\r\n\r\n  triggerEventInterceptors() {\r\n    const pageTrackingId = _.result(this.stubOptions, 'pageTrackingId');\r\n    const ajaxContext = {\r\n      stubOptions: this.stubOptions,\r\n      url: this.options.url,\r\n      requestId: this.requestId,\r\n      pageTrackingId,\r\n      requestResult: true,\r\n      httpMethod: this.options.type,\r\n      error: '',\r\n      ajaxStartTime: 0,\r\n      ajaxRenderStartTime: 0,\r\n      entityCount: this.stubOptions.getPageSize(this.options.data),\r\n      activity: this.activity,\r\n    };\r\n\r\n    if (this.eventHandler.beforeSendHandler) this.interceptBeforeSend(this.options, ajaxContext);\r\n    if (this.eventHandler.successHandler) this.interceptSuccess(this.options, ajaxContext);\r\n    if (this.eventHandler.errorHandler) this.interceptError(this.options, ajaxContext);\r\n    if (this.eventHandler.completeHandler) this.interceptComplete(this.options, ajaxContext);\r\n  }\r\n\r\n  /* eslint-disable no-param-reassign */\r\n  interceptBeforeSend(ajaxOptions, ajaxContext) {\r\n    const context = this;\r\n\r\n    if (_.isUndefined(ajaxOptions[event.BEFORESEND])) {\r\n      ajaxOptions[event.BEFORESEND] = (...args) => {\r\n        context.eventHandler.beforeSendHandler(ajaxContext, args);\r\n      };\r\n    } else if (_.isFunction(ajaxOptions[event.BEFORESEND])) {\r\n      const originalEventHandler = ajaxOptions[event.BEFORESEND];\r\n      ajaxOptions[event.BEFORESEND] = function onBeforeSend(...args) {\r\n        const wrappedFunc = context.constructor.handleException(\r\n          originalEventHandler,\r\n          context.options.url,\r\n          context.requestId,\r\n          context.activity\r\n        );\r\n        const originalRet = wrappedFunc.apply(this, args);\r\n        context.eventHandler.beforeSendHandler(ajaxContext, args);\r\n        if (originalRet && _.isFunction(originalRet.onBeforeSendDone)) {\r\n          return originalRet.onBeforeSendDone(ajaxContext, args);\r\n        }\r\n        return originalRet;\r\n      };\r\n    }\r\n  }\r\n\r\n  interceptSuccess(ajaxOptions, ajaxContext) {\r\n    const context = this;\r\n\r\n    if (_.isUndefined(ajaxOptions[event.SUCCESS])) {\r\n      ajaxOptions[event.SUCCESS] = (...args) => {\r\n        context.eventHandler.successHandler(ajaxContext, args);\r\n        if (context.eventHandler.successRenderHandler) {\r\n          context.eventHandler.successRenderHandler(ajaxContext, args);\r\n        }\r\n      };\r\n    } else if (_.isFunction(ajaxOptions[event.SUCCESS])) {\r\n      const originalEventHandler = ajaxOptions[event.SUCCESS];\r\n      ajaxOptions[event.SUCCESS] = function onSuccess(...args) {\r\n        context.eventHandler.successHandler(ajaxContext, args);\r\n        const wrappedFunc = context.constructor.handleException(\r\n          originalEventHandler,\r\n          context.options.url,\r\n          context.requestId,\r\n          context.activity\r\n        );\r\n        const originalRet = wrappedFunc.apply(this, args);\r\n        if (context.eventHandler.successRenderHandler) {\r\n          context.eventHandler.successRenderHandler(ajaxContext, args);\r\n        }\r\n        return originalRet;\r\n      };\r\n    }\r\n  }\r\n\r\n  interceptError(ajaxOptions, ajaxContext) {\r\n    const context = this;\r\n\r\n    if (_.isUndefined(ajaxOptions[event.ERROR])) {\r\n      ajaxOptions[event.ERROR] = (...args) => {\r\n        context.eventHandler.errorHandler(ajaxContext, args);\r\n      };\r\n    } else if (_.isFunction(ajaxOptions[event.ERROR])) {\r\n      const originalEventHandler = ajaxOptions[event.ERROR];\r\n      ajaxOptions[event.ERROR] = function onError(...args) {\r\n        context.eventHandler.errorHandler(ajaxContext, args);\r\n        const wrappedFunc = context.constructor.handleException(\r\n          originalEventHandler,\r\n          context.options.url,\r\n          context.requestId,\r\n          context.activity\r\n        );\r\n        const originalRet = wrappedFunc.apply(this, args);\r\n        return originalRet;\r\n      };\r\n    }\r\n  }\r\n\r\n  interceptComplete(ajaxOptions, ajaxContext) {\r\n    const context = this;\r\n\r\n    if (_.isUndefined(ajaxOptions[event.COMPLETE])) {\r\n      ajaxOptions[event.COMPLETE] = (...args) => {\r\n        context.eventHandler.completeHandler(ajaxContext, args);\r\n      };\r\n    } else if (_.isFunction(ajaxOptions[event.COMPLETE])) {\r\n      const originalEventHandler = ajaxOptions[event.COMPLETE];\r\n      ajaxOptions[event.COMPLETE] = function onComplete(...args) {\r\n        const wrappedFunc = context.constructor.handleException(\r\n          originalEventHandler,\r\n          context.options.url,\r\n          context.requestId,\r\n          context.activity\r\n        );\r\n        const originalRet = wrappedFunc.apply(this, args);\r\n        context.eventHandler.completeHandler(ajaxContext, args);\r\n        return originalRet;\r\n      };\r\n    }\r\n  }\r\n\r\n  static handleException(func, api, requestId, activity, message) {\r\n    return function wrappedFunc(...args) {\r\n      const context = this;\r\n      let error = !_.isUndefined(message) ? `${message}: ` : '';\r\n      try {\r\n        return func.apply(context, args);\r\n      } catch (ex) {\r\n        if (!ex.message) {\r\n          error += ex.toString();\r\n        } else if (!ex.stack) {\r\n          error += ex.message;\r\n        } else {\r\n          error += `${ex.message}\\tStackTrace: ${ex.stack}`;\r\n        }\r\n        activity.error(error, api, requestId);\r\n\r\n        throw ex;\r\n      }\r\n    };\r\n  }\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { AjaxEventHandler } from './ajax-event-handler';\r\n\r\nconst defaultStubOptions = {\r\n  objectsToStub: [$],\r\n  serverErrorCodes: [-1],\r\n  detectError(respData, serverErrorCodes) {\r\n    const result = {\r\n      pass: true,\r\n    };\r\n\r\n    if (respData &&\r\n      respData.Errors &&\r\n      respData.Errors[0] &&\r\n      respData.Errors[0].Code &&\r\n      _.isArray(serverErrorCodes) &&\r\n      _.contains(serverErrorCodes, respData.Errors[0].Code)) {\r\n      result.pass = false;\r\n      result.message = respData.Errors[0].Message;\r\n      result.impactUser = true;\r\n    }\r\n    return result;\r\n  },\r\n  getEntityCount(respData) {\r\n    if (respData && respData.Records) {\r\n      return respData.Records.RowCount;\r\n    }\r\n    return -1;\r\n  },\r\n  getPageSize(requestData) {\r\n    const pageSizeParam = '.PageSize';\r\n    if (_.isObject(requestData) && requestData.BiDateRange) {\r\n      const keys = _.keys(requestData);\r\n      const pageSizeProp = _.find(keys, key => key.length > pageSizeParam.length &&\r\n        key.substr(key.length - pageSizeParam.length) === pageSizeParam);\r\n      return requestData[pageSizeProp];\r\n    }\r\n    return -1;\r\n  },\r\n};\r\n\r\n// default ajax event handler\r\nconst ajaxEventHandler = new AjaxEventHandler();\r\n\r\nexport const defaultConfig = {\r\n  stubOptions: defaultStubOptions,\r\n  eventHandler: ajaxEventHandler,\r\n};\r\n\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { getTimestamp } from '@bingads-webui-universal/primitive-utilities';\r\n\r\n/* eslint-disable max-len */\r\n\r\n/**\r\n * AjaxEventHandler - contains event handlers for ajax events (beforeSend, success, error, complete)\r\n * The consuming application can override the handlers here by extending from this base handler\r\n * and pass in a custom AjaxEventHandler when instantiating the AjaxStub\r\n */\r\nexport class AjaxEventHandler {\r\n  constructor(options = {}) {\r\n    this.errorMappers = options.errorMappers || [];\r\n    this.shouldAddHeaders = options.shouldAddHeaders || _.constant(true);\r\n  }\r\n\r\n  /**\r\n   * Handler for the ajax beforeSend event.\r\n   * @param {object} ajaxContext - data related to the current ajax call\r\n   * @param {Array} args - args passed to the beforeSend ajax callback\r\n   * @returns {undefined} - no returns\r\n   */\r\n  beforeSendHandler(ajaxContext, [jqXHR]) {\r\n    /* eslint-disable no-param-reassign */\r\n    ajaxContext.ajaxStartTime = getTimestamp();\r\n\r\n    if (this.shouldAddHeaders(ajaxContext) === true) {\r\n      const applicationName = _.result(ajaxContext.stubOptions.ajaxStubOptions, 'applicationName', 'bingadsweb');\r\n\r\n      jqXHR.setRequestHeader('x-ms-requestid', ajaxContext.requestId);\r\n      // eslint-disable-next-line no-unused-expressions\r\n      ajaxContext.pageTrackingId && jqXHR.setRequestHeader('x-ms-pagetrackingid', ajaxContext.pageTrackingId);\r\n      jqXHR.setRequestHeader('x-ms-applicationname', applicationName);\r\n      jqXHR.setRequestHeader('x-ms-lcid', ajaxContext.stubOptions.lcid);\r\n      jqXHR.setRequestHeader('lcid', ajaxContext.stubOptions.lcid);\r\n    }\r\n\r\n    ajaxContext.activity.ajax(\r\n      ajaxContext.requestId,\r\n      ajaxContext.url,\r\n      true,\r\n      ajaxContext.httpMethod,\r\n      0,\r\n      true,\r\n      '',\r\n      ajaxContext.entityCount\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Handler for the ajax success event.\r\n   * @param {object} ajaxContext - data related to the current ajax call\r\n   * @param {Array} args - args passed to the success ajax callback\r\n   * @returns {undefined} - no returns\r\n   */\r\n  successHandler(ajaxContext, [data, textStatus, jqXHR]) { // eslint-disable-line no-unused-vars\r\n    const ajaxTimeTaken = getTimestamp() - ajaxContext.ajaxStartTime;\r\n    const result = ajaxContext.stubOptions.detectError(data);\r\n\r\n    if (!result.pass) {\r\n      ajaxContext.requestResult = false;\r\n      ajaxContext.error = result.message;\r\n\r\n      ajaxContext.activity.error(\r\n        ajaxContext.error,\r\n        ajaxContext.url,\r\n        ajaxContext.requestId,\r\n        result.impactUser,\r\n        ajaxContext.httpMethod\r\n      );\r\n    }\r\n\r\n    ajaxContext.activity.ajax(\r\n      ajaxContext.requestId,\r\n      ajaxContext.url,\r\n      false,\r\n      ajaxContext.httpMethod,\r\n      ajaxTimeTaken,\r\n      ajaxContext.requestResult,\r\n      this.constructor.getServerPerf(jqXHR),\r\n      ajaxContext.entityCount\r\n    );\r\n\r\n    ajaxContext.entityCount = ajaxContext.stubOptions.getEntityCount(data);\r\n    ajaxContext.ajaxRenderStartTime = getTimestamp();\r\n  }\r\n\r\n  /**\r\n   * Handler to execute after the ajax success callback.\r\n   * It's only purpose is to measure ajaxRender time.\r\n   * @param {object} ajaxContext - data related to the current ajax call\r\n   * @returns {undefined} - no returns\r\n   */\r\n  successRenderHandler(ajaxContext) {\r\n    if (ajaxContext.requestResult === true) {\r\n      const renderTimeTaken = getTimestamp() - ajaxContext.ajaxRenderStartTime;\r\n\r\n      ajaxContext.activity.ajax(\r\n        ajaxContext.requestId,\r\n        ajaxContext.url,\r\n        false,\r\n        ajaxContext.httpMethod,\r\n        renderTimeTaken,\r\n        ajaxContext.requestResult,\r\n        '',\r\n        ajaxContext.entityCount,\r\n        true\r\n      );\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Handler for the ajax error event.\r\n   * This may need to be overriden by the application to handle expected errors.\r\n   * @param {object} ajaxContext - data related to the current ajax call\r\n   * @param {Array} args - args passed to the error ajax callback\r\n   * @returns {undefined} - no returns\r\n   */\r\n  errorHandler(ajaxContext, [jqXHR, textStatus, errorThrown]) {\r\n    const ajaxTimeTaken = getTimestamp() - ajaxContext.ajaxStartTime;\r\n\r\n    if (jqXHR.status !== 0) {\r\n      ajaxContext.requestResult = false;\r\n\r\n      ajaxContext.error = `Ajax error [${jqXHR.status}]`;\r\n\r\n      if (textStatus && $.trim(textStatus) !== '') {\r\n        ajaxContext.error += (`, ${textStatus}`);\r\n        // Log jqXHR.responseText when it is not 200 (which means will enter errorHandler)\r\n        if (jqXHR.responseText && $.trim(jqXHR.responseText) !== '') {\r\n          ajaxContext.error += (`, ${jqXHR.responseText}`);\r\n        } else if (jqXHR.responseXML && $.trim(jqXHR.responseXML) !== '') {\r\n          ajaxContext.error += (`, ${jqXHR.responseXML}`);\r\n        }\r\n      }\r\n\r\n      if (errorThrown && $.trim(errorThrown) !== '') {\r\n        ajaxContext.error += (`, ${errorThrown}`);\r\n      }\r\n\r\n      switch (jqXHR.status) {\r\n        case 400:\r\n        case 404:\r\n          // If error maps to a user error, log at trace level\r\n          if (this.isUserError(ajaxContext, jqXHR, textStatus, errorThrown)) {\r\n            ajaxContext.requestResult = true;\r\n          }\r\n          break;\r\n        case 401:\r\n          // Log 401 unauthorized error at trace level\r\n          ajaxContext.requestResult = true;\r\n          break;\r\n        default:\r\n          ajaxContext.requestResult = false;\r\n      }\r\n\r\n      if (ajaxContext.requestResult === false) {\r\n        ajaxContext.activity.error(ajaxContext.error, ajaxContext.url, ajaxContext.requestId, '', ajaxContext.httpMethod);\r\n      } else {\r\n        ajaxContext.activity.trace(ajaxContext.error, ajaxContext.url, ajaxContext.requestId, ajaxContext.httpMethod);\r\n      }\r\n    }\r\n\r\n    ajaxContext.activity.ajax(\r\n      ajaxContext.requestId,\r\n      ajaxContext.url,\r\n      false,\r\n      ajaxContext.httpMethod,\r\n      ajaxTimeTaken,\r\n      ajaxContext.requestResult\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Handler for the ajax complete event.\r\n   * @param {object} ajaxContext - data related to the current ajax call\r\n   * @param {Array} args - args passed to the beforeSend ajax callback\r\n   * @returns {undefined} - no returns\r\n   */\r\n  completeHandler(ajaxContext, [jqXHR]) { // eslint-disable-line no-unused-vars\r\n    // do nothing\r\n  }\r\n\r\n  /**\r\n   * private method to check if ajax error maps to an user error\r\n   * @param {object} ajaxContext - data related to the current ajax call\r\n   * @param {object} jqXHR - jqXHR passed to the ajax callback\r\n   * @param {object} textStatus - textStatus passed to the ajax callback\r\n   * @param {object} errorThrown - errorThrown passed to the ajax callback\r\n   * @returns {bool} - if error is an user error\r\n   */\r\n  isUserError(ajaxContext, jqXHR, textStatus, errorThrown) {\r\n    return _.any(this.errorMappers, errorMapper => errorMapper.check(\r\n      ajaxContext,\r\n      jqXHR,\r\n      textStatus,\r\n      errorThrown\r\n    ));\r\n  }\r\n\r\n  static getServerPerf(jqXHR) {\r\n    if (jqXHR && _.isFunction(jqXHR.getResponseHeader)) {\r\n      const perfTimings = jqXHR.getResponseHeader('PerfTimings');\r\n      if (perfTimings) {\r\n        return perfTimings;\r\n      }\r\n      const odataPerf = {};\r\n      _.each(\r\n        ['x-ms-mte2eelapsedtimems', 'x-ms-odataapie2eelapsedtimems', 'x-ms-odataapionlye2eelapsedtimems'],\r\n        (header) => {\r\n          const value = jqXHR.getResponseHeader(header);\r\n          if (value) {\r\n            odataPerf[header] = value;\r\n          }\r\n        }\r\n      );\r\n\r\n      if (jqXHR.responseJSON) {\r\n        const key = '@ns.cacheobjectused';\r\n        odataPerf[key] = jqXHR.responseJSON[key];\r\n\r\n        const keyUnfilteredCount = '@ns.unfiltered.count';\r\n        odataPerf[keyUnfilteredCount] = jqXHR.responseJSON[keyUnfilteredCount];\r\n\r\n        const keyOdataCount = '@odata.count';\r\n        odataPerf[keyOdataCount] = jqXHR.responseJSON[keyOdataCount];\r\n      }\r\n\r\n      return JSON.stringify(odataPerf);\r\n    }\r\n    return '';\r\n  }\r\n}\r\n","/**\r\n * Pre-defined schema used for Ajax Stub\r\n */\r\nexport const schema = {\r\n  scenario: [{\r\n    name: 'ajaxStubScenario',\r\n    value: 'Ajax Stub Scenario',\r\n    setting: {\r\n      hidden: true,\r\n    },\r\n    activity: [\r\n      {\r\n        name: 'ajaxStubActivity',\r\n        value: 'Ajax Stub Activity',\r\n        setting: {},\r\n      },\r\n    ],\r\n  }],\r\n};\r\n","import _ from 'underscore';\r\nimport StackTrace from 'stacktrace-js';\r\nimport Promise from 'bluebird';\r\nimport { schema } from './error-stub-schema';\r\n\r\nfunction getStackStringFromStackFrames(stackFrames) {\r\n  const stackLines = _.map(stackFrames, frame => [\r\n    frame.getFunctionName() || '<anonymous>', ' (',\r\n    frame.getFileName(), ':',\r\n    frame.getLineNumber(), ':',\r\n    frame.getColumnNumber(), ')',\r\n  ].join('')).join('\\n');\r\n\r\n  return stackLines;\r\n}\r\n\r\n// By default, stacktrace-js loads source maps synchronously. This is not good for performance.\r\nexport function asyncAjaxOverride(url) {\r\n  return new Promise((resolve, reject) => {\r\n    const req = new XMLHttpRequest();\r\n    req.open('get', url, true); // Third parameter true for async call\r\n    req.onerror = reject;\r\n    req.onreadystatechange = function onreadystatechange() {\r\n      if (req.readyState === 4) {\r\n        if ((req.status >= 200 && req.status < 300) ||\r\n          (url.substr(0, 7) === 'file://' && req.responseText)) {\r\n          resolve(req.responseText);\r\n        } else {\r\n          reject(new Error(`HTTP status: ${req.status} retrieving ${url}`));\r\n        }\r\n      }\r\n    };\r\n    req.send();\r\n  });\r\n}\r\n\r\n/**\r\n * ErrorStub class - Creates a window.onerror stub that can be used by Instrumentation\r\n */\r\nexport class ErrorStub {\r\n  /**\r\n   * @param {object} options - contains instrumentation for logging\r\n   */\r\n  constructor(options = {}) {\r\n    // create scenario for logging\r\n    this.setupScenario(options.instrumentation);\r\n    this.logUnhandledPromiseRejections = options.logUnhandledPromiseRejections || false;\r\n    this.skipStackTraceResolutionForPromiseRejections = options.skipStackTraceResolutionForPromiseRejections;\r\n\r\n    this.isExpectedUnhandledPromiseError = options.isExpectedUnhandledPromiseError;\r\n    this.stackTraceOptions = {\r\n      ajax: asyncAjaxOverride, // by default it uses synchroneous ajax\r\n    };\r\n  }\r\n\r\n  init() {\r\n    this.intercept();\r\n  }\r\n\r\n  intercept() {\r\n    window.onerror = (errorMsg, url, lineNumber, column, errorObj) => {\r\n      const activity = this.errorStubScenario.errorStubActivity.create();\r\n\r\n      this.handleError(errorMsg, url, lineNumber, column, errorObj, activity);\r\n\r\n      return true;\r\n    };\r\n\r\n    if (this.logUnhandledPromiseRejections) {\r\n      window.addEventListener('unhandledrejection', (promiseRejection) => {\r\n        const activity = this.errorStubScenario.errorStubActivity.create();\r\n\r\n        this.handlePromiseRejection(promiseRejection, activity);\r\n      });\r\n    }\r\n  }\r\n\r\n  handleError(errorMsg, url, lineNumber, column, errorObj, activity) {\r\n    let errorMessage = `${errorMsg}\\tScript: ${url} Line: ${lineNumber}`;\r\n    if (!_.isUndefined(column)) {\r\n      errorMessage += ` Column: ${column}`;\r\n    }\r\n    return StackTrace.fromError(errorObj, this.stackTraceOptions).then((stackFrames) => {\r\n      errorMessage += ` StackTrace: ${getStackStringFromStackFrames(stackFrames)}`;\r\n    }).catch((ex) => {\r\n      if (_.isObject(errorObj) && _.has(errorObj, 'stack')) {\r\n        errorMessage += ` StackTrace: ${errorObj.stack}\\n [StackTrace Error: ${ex}]`;\r\n      }\r\n    }).finally(() => {\r\n      errorMessage += `\\tCurrentURL: ${window.location.href}\\tPreviousURL: ${document.referrer ? document.referrer : 'Unknown'}`;\r\n\r\n      const perviousRoute = window.history.state && window.history.state.state ?\r\n        window.history.state.state.previousRoute : null;\r\n\r\n      if (perviousRoute) {\r\n        errorMessage += `\\tPreviousRoute: ${perviousRoute}`;\r\n      }\r\n\r\n      activity.error(errorMessage, 'onerror');\r\n    });\r\n  }\r\n\r\n  handlePromiseRejection(promiseRejectionEvent, activity) {\r\n    let errorMessage = 'Unhandled promise rejection;';\r\n\r\n    const logError = (message) => {\r\n      if (this.isExpectedUnhandledPromiseError && this.isExpectedUnhandledPromiseError(message)) {\r\n        activity.trace(message, 'onunhandledrejection');\r\n      } else {\r\n        activity.error(message, 'onunhandledrejection');\r\n      }\r\n      return Promise.resolve();\r\n    };\r\n\r\n    // Bluebird stores these properties in .detail while native promise stores these properties at top level\r\n    const { promise, reason } = promiseRejectionEvent.detail || promiseRejectionEvent;\r\n\r\n    // Reason is an Error-like object\r\n    if (reason && (reason.message || reason.stack)) {\r\n      const { message, stack } = reason;\r\n      if (this.skipStackTraceResolutionForPromiseRejections) {\r\n        errorMessage += ` Message: ${message}; StackTrace: ${stack}`;\r\n        return logError(errorMessage);\r\n      }\r\n\r\n      return StackTrace.fromError(reason, this.stackTraceOptions).then((stackFrames) => {\r\n        errorMessage += ` Message: ${message}; StackTrace: ${getStackStringFromStackFrames(stackFrames)}`;\r\n      }).catch((ex) => {\r\n        errorMessage += `${message} at ${stack}\\n [StackTrace Error: ${ex}]`;\r\n      }).finally(() => {\r\n        logError(errorMessage);\r\n      });\r\n    }\r\n\r\n    // Use bluebird's stack trace if available\r\n    errorMessage += `Non error object thrown; Reason: ${JSON.stringify(reason)}; StackTrace: ${_.get(promise, '_trace.stack')};`;\r\n    logError(errorMessage);\r\n    return Promise.resolve();\r\n  }\r\n\r\n  setupScenario(instr) {\r\n    instr.addScenario(schema);\r\n    this.errorStubScenario = instr.errorStubScenario.create(instr.ScenarioContext);\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__36__;","/**\r\n * Pre-defined schema used for Error Stub\r\n */\r\nexport const schema = {\r\n  scenario: [{\r\n    name: 'errorStubScenario',\r\n    value: 'Error Stub Scenario',\r\n    setting: {\r\n      hidden: true,\r\n    },\r\n    activity: [\r\n      {\r\n        name: 'errorStubActivity',\r\n        value: 'Error Stub Activity',\r\n        setting: {},\r\n      },\r\n    ],\r\n  }],\r\n};\r\n","export { AriaListener } from './src/aria-listener';\r\n","import _ from 'underscore';\r\nimport { AWTLogManager, AWT_NEAR_REAL_TIME, AWTSessionState } from '@aria/webjs-sdk';\r\nimport { Listener } from '@bingads-webui/listener';\r\nimport { defaultConfig } from './default-config';\r\n\r\nconst activeListeners = [];\r\nlet flushEventAttached = false;\r\nfunction registerListener(listener) {\r\n  activeListeners.push(listener);\r\n\r\n  if (!flushEventAttached) {\r\n    window.addEventListener('beforeunload', () => {\r\n      activeListeners.forEach(l => l.flushLogs(false));\r\n      AWTLogManager.flush();\r\n    });\r\n\r\n    flushEventAttached = true;\r\n  }\r\n}\r\n\r\n/**\r\n * Create an instance of an Aria listener\r\n */\r\nexport class AriaListener extends Listener {\r\n  constructor(options = {}) {\r\n    super(options);\r\n    this.options = _.defaults(options, {\r\n      flushInterval: defaultConfig.flushInterval,\r\n      batchSize: defaultConfig.batchSize,\r\n      enableSessionTracking: defaultConfig.enableSessionTracking,\r\n    });\r\n    this.formatters = _.defaults(this.options.formatters || {}, defaultConfig.formatters);\r\n    this.filters = this.options.filters || [];\r\n    this.logTableNames = this.options.logTableNames;\r\n    this.defaultLogCategory = this.options.defaultLogCategory;\r\n  }\r\n\r\n  /**\r\n   * init aria listener\r\n   * @returns {undefined} - no returns\r\n   */\r\n  init() {\r\n    if (!this.options.tenantToken || this.initialized) {\r\n      return;\r\n    }\r\n\r\n    this.logs = [];\r\n\r\n    // Setup AriaTelemetry\r\n    AWTLogManager.initialize(this.options.tenantToken);\r\n    AWTLogManager.setTransmitProfile(AWT_NEAR_REAL_TIME);\r\n\r\n    this.defaultLogger = AWTLogManager.getLogger(this.options.tenantToken);\r\n\r\n    if (this.options.enableSessionTracking) {\r\n      this.defaultLogger.logSession(AWTSessionState.Started);\r\n    }\r\n\r\n    if (!AWTLogManager.trackedListenerRefs) {\r\n      AWTLogManager.trackedListenerRefs = { count: 0 };\r\n    }\r\n\r\n    setInterval(() => this.flushBatch(), this.options.flushInterval);\r\n    registerListener(this);\r\n    this.initialized = true;\r\n  }\r\n\r\n  /**\r\n   * register instance for final flush of logs to Aria\r\n   * @private\r\n   * @returns {undefined} - no returns\r\n   */\r\n  registerForTeardown() {\r\n    if (this.registeredForTeardown || !this.initialized) {\r\n      return;\r\n    }\r\n\r\n    this.registeredForTeardown = true;\r\n    AWTLogManager.trackedListenerRefs.count += 1;\r\n  }\r\n\r\n  /**\r\n   * flushes logs to Aria and tears down the logger\r\n   * @returns {undefined} - no returns\r\n   */\r\n  teardown() {\r\n    if (!this.initialized) {\r\n      return;\r\n    }\r\n    this.flushAll(false);\r\n    this.initialized = false;\r\n\r\n    if (this.options.enableSessionTracking) {\r\n      this.defaultLogger.logSession(AWTSessionState.Ended);\r\n    }\r\n\r\n    if (this.registeredForTeardown) {\r\n      AWTLogManager.trackedListenerRefs.count -= 1;\r\n    }\r\n\r\n    this.release();\r\n  }\r\n\r\n  /**\r\n  * flushes logs to aria telemetry logger\r\n  * @param {bool} batchLogs - specify if the logs should be flushed in batches\r\n  * @private\r\n  * @returns {undefined} - no returns\r\n   */\r\n  flushLogs(batchLogs) {\r\n    const useBatching = batchLogs && (this.logs.length > this.options.batchSize);\r\n    const batchSize = useBatching ? this.options.batchSize : this.logs.length;\r\n    const logsToFlush = this.logs.splice(0, batchSize);\r\n    _.each(logsToFlush, (log) => {\r\n      this.defaultLogger.logEvent(log);\r\n    });\r\n  }\r\n\r\n  /**\r\n   * If there are no active listeners then tear down the underlying logger.\r\n   * @private\r\n   * @returns {undefined} - no returns\r\n   */\r\n  release() {\r\n    if (AWTLogManager.trackedListenerRefs.count === 0) {\r\n      AWTLogManager.flushAndTeardown();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * writes logs to the listener\r\n   * @param {object} logMessage - logs to be written\r\n   * @returns {undefined} - no returns\r\n   */\r\n  write(logMessage) {\r\n    if (!this.initialized || this.filterLogs(logMessage)) {\r\n      return;\r\n    }\r\n\r\n    const categoryName = this.getCategoryName(logMessage.logCategory);\r\n    const formattedMsg = this.formatLogs(logMessage);\r\n\r\n    this.logs.push({\r\n      name: this.logTableNames[categoryName].name,\r\n      properties: formattedMsg,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * @private\r\n   * @returns {undefined} - no returns\r\n   */\r\n  flushAll() {\r\n    this.flushLogs(false);\r\n  }\r\n\r\n  /**\r\n   * @private\r\n   * @returns {undefined} - no returns\r\n   */\r\n  flushBatch() {\r\n    this.flushLogs(true);\r\n  }\r\n\r\n  /**\r\n   * @private\r\n   * @param {object} logCategory - logs to be written\r\n   * @returns {undefined} - no returns\r\n   */\r\n  getCategoryName(logCategory) {\r\n    const isValidLogCategory = _.has(this.logTableNames, logCategory);\r\n    return isValidLogCategory ? logCategory : this.defaultLogCategory;\r\n  }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","import { AriaPropertyFormatter } from './formatters/log-property-formatter';\r\n\r\nconst propertyFormatter = new AriaPropertyFormatter();\r\n\r\nexport const defaultConfig = {\r\n  formatters: { propertyFormatter },\r\n  enableSessionTracking: true,\r\n  flushInterval: 5000,\r\n  batchSize: 50,\r\n};\r\n","import _ from 'underscore';\r\nimport { Formatter } from '@bingads-webui/listener';\r\n\r\nexport class AriaPropertyFormatter extends Formatter {\r\n  format(logMessage) {\r\n    return _.mapObject(logMessage, val => ({\r\n      value: val,\r\n    }));\r\n  }\r\n}\r\n","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}","export { LocalStorageListener } from './src/local-storage-listener';\r\n","import { Listener } from '@bingads-webui/listener';\r\n\r\nlet logCount = 0;\r\n/**\r\n * Local storage listener class. This logs to Local Storage using\r\n * the Storage API.\r\n */\r\n\r\nexport class LocalStorageListener extends Listener {\r\n  constructor(options = {}) {\r\n    super(options);\r\n\r\n    this.formatters = options.formatters || [];\r\n    this.filters = options.filters || [];\r\n    this.uniquePageId = options.uniquePageId;\r\n    this.storage = window.localStorage;\r\n  }\r\n\r\n  init() {\r\n    if (this.storage && this.uniquePageId) {\r\n      this.initialized = true;\r\n    }\r\n  }\r\n\r\n  write(logMessage) {\r\n    if (!this.initialized || this.filterLogs(logMessage)) {\r\n      return;\r\n    }\r\n\r\n    const formattedMsg = this.formatLogs(logMessage);\r\n\r\n    const key = this.generateKey();\r\n\r\n    try {\r\n      this.storage.setItem(key, JSON.stringify(formattedMsg));\r\n      logCount += 1;\r\n    } catch (e) {\r\n      this.logError(e);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Generate key to use when putting log in local storage.\r\n   * It uses the string unique page Id and total count of logs\r\n   * written already to determine the key\r\n   * @private\r\n   * @returns {undefined} - no returns\r\n   */\r\n  generateKey() {\r\n    return `localStorageListener.${this.uniquePageId}.${logCount}`;\r\n  }\r\n\r\n  logError(e) {\r\n    console.error(e); // eslint-disable-line no-console\r\n  }\r\n}\r\n","export { PerformanceTimingLogger } from './src/index';\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\n\r\n/**\r\n * Create an instance of Performance Timing Logger\r\n */\r\nexport class PerformanceTimingLogger {\r\n  constructor(options = {}) {\r\n    this.instrumentation = options.instrumentation;\r\n    this.updateInterval = options.updateInterval || 2500;\r\n  }\r\n\r\n  /**\r\n   * init performance timing logging\r\n   * @returns {undefined} - no returns\r\n   */\r\n  init() {\r\n    if (!_.isFunction(window.performance.getEntriesByType)) {\r\n      return;\r\n    }\r\n\r\n    this.isPageLoaded = false;\r\n    this.pageNavLogged = false;\r\n\r\n    if (document.readyState === 'complete') {\r\n      this.logOnLoad();\r\n    } else {\r\n      $(window).on('load', () => this.logOnLoad());\r\n    }\r\n\r\n    this.timer = setInterval(() => this.logOnTimer(), this.updateInterval);\r\n\r\n    this.instrumentation.beforeStop = () => {\r\n      this.logOnUnload();\r\n    };\r\n  }\r\n\r\n  /**\r\n   * @private\r\n   * @returns {undefined} - no returns\r\n   */\r\n  logOnLoad() {\r\n    this.writeResourceTimingLogs();\r\n    this.tryRecordInactiveTime();\r\n    this.tryLogPageNavigation();\r\n    this.isPageLoaded = true;\r\n  }\r\n\r\n  /**\r\n   * @private\r\n   * @returns {undefined} - no returns\r\n   */\r\n  logOnTimer() {\r\n    this.writeResourceTimingLogs();\r\n    this.tryLogPageNavigation();\r\n  }\r\n\r\n  /**\r\n   * @private\r\n   * @returns {undefined} - no returns\r\n   */\r\n  logOnUnload() {\r\n    this.writeResourceTimingLogs();\r\n  }\r\n\r\n  /**\r\n   * writes resource timing logs\r\n   * @private\r\n   * @returns {undefined} - no returns\r\n   */\r\n  writeResourceTimingLogs() {\r\n    const logs = window.performance.getEntriesByType('resource');\r\n\r\n    this.clearLogBuffer();\r\n\r\n    if (!logs.length) {\r\n      return;\r\n    }\r\n\r\n    _.each(logs, (log) => {\r\n      _.extend(log, { pageLoaded: this.isPageLoaded });\r\n      this.instrumentation.writeRawLog(log);\r\n    });\r\n  }\r\n\r\n  /**\r\n   * If supported, record the amount of time the page was in the background.\r\n   * It gets the foreground time from window.performance.activeTime\r\n   * @private\r\n   * @returns {undefined} - no returns\r\n   */\r\n  tryRecordInactiveTime() {\r\n    if (_.isFunction(window.performance.activeTime)) {\r\n      this.inactiveTime = window.performance.now() - window.performance.activeTime();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * try log page navigation logs\r\n   * @private\r\n   * @returns {bool} - if page navigation has been logged\r\n   */\r\n  tryLogPageNavigation() {\r\n    if (!this.pageNavLogged &&\r\n      window.performance.timing &&\r\n      window.performance.timing.loadEventEnd > 0) {\r\n      this.pageNavLogged = this.writePageNavigationLogs();\r\n    }\r\n\r\n    return this.pageNavLogged;\r\n  }\r\n\r\n  /**\r\n   * writes page navigation logs\r\n   * @private\r\n   * @returns {bool} - if page navigation has been logged\r\n   */\r\n  writePageNavigationLogs() {\r\n    const extensions = {\r\n      isPageNavigationLog: true,\r\n    };\r\n\r\n    if (window.chrome && _.isFunction(window.chrome.loadTimes)) {\r\n      const { firstPaintTime } = (window.chrome.loadTimes() || {});\r\n\r\n      if (_.isNumber(firstPaintTime) && firstPaintTime > 0) {\r\n        extensions.firstPaintTime = firstPaintTime * 1000;\r\n      } else {\r\n        return false;\r\n      }\r\n    }\r\n\r\n    const navTimingV2Logs = window.performance.getEntriesByType('navigation');\r\n\r\n    if (_.isArray(navTimingV2Logs) && _.size(navTimingV2Logs) > 0) {\r\n      const navTimingV2Log = _.first(navTimingV2Logs);\r\n      const colsToReplace = _.pick(\r\n        navTimingV2Log,\r\n        'unloadEventStart', 'unloadEventEnd', 'redirectCount', 'redirectStart'\r\n        , 'redirectEnd'\r\n      );\r\n      _.extend(extensions, colsToReplace);\r\n    } else {\r\n      extensions.redirectCount = window.performance.navigation.redirectCount;\r\n    }\r\n\r\n    if (this.inactiveTime) {\r\n      extensions.inactiveTime = this.inactiveTime;\r\n    }\r\n\r\n    this.instrumentation.writeRawLog(_.extend({}, window.performance.timing, extensions));\r\n    return true;\r\n  }\r\n\r\n  /**\r\n   * @private\r\n   * @returns {undefined} - no returns\r\n   */\r\n  clearLogBuffer() {\r\n    if (_.isFunction(window.performance.clearResourceTimings)) {\r\n      window.performance.clearResourceTimings();\r\n    } else if (_.isFunction(window.performance.webkitClearResourceTimings)) {\r\n      window.performance.webkitClearResourceTimings();\r\n    }\r\n  }\r\n}\r\n"],"sourceRoot":""}