CINXE.COM

Lexico's Oxford English Synonyms | Lexico.com

<!DOCTYPE html><html lang="en" data-theme="light"><!--[if lt IE 7]><html class="no-js ie6 oldie" lang="en"></html><![endif]--><!--[if IE 7]><html class="no-js ie7 oldie" lang="en"></html><![endif]--><!--[if IE 8]><html class="no-js ie8 oldie" lang="en"></html><![endif]--><!--[if gte IE 8]><html class="no-js" lang="en"></html><![endif]--><head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://www.lexico.com/synonyms","20210627183838","https://web.archive.org/","web","/_static/", "1624819118"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <title>Lexico&#39;s Oxford English Synonyms | Lexico.com</title> <meta name="description" content="Lexico helps you find the right word to express precisely what you mean, for writing or everyday use. Powered by The Oxford Dictionary."> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="Lexico's Oxford English Synonyms | Lexico.com"> <meta name="twitter:description" content="Lexico helps you find the right word to express precisely what you mean, for writing or everyday use. Powered by The Oxford Dictionary."> <meta name="twitter:image" content="https://web.archive.org/web/20210627183838im_/https://www.lexico.com/lexico-logo.png"> <meta property="og:title" content="Lexico's Oxford English Synonyms | Lexico.com"> <meta property="og:description" content="Lexico helps you find the right word to express precisely what you mean, for writing or everyday use. Powered by The Oxford Dictionary."> <meta property="og:type" content="website"> <meta property="og:url" content="https://web.archive.org/web/20210627183838/https://www.lexico.com/synonyms"> <meta property="og:locale" content="en_GB"> <meta property="og:site_name" content="Lexico Dictionaries | English"> <meta property="og:image" content="https://web.archive.org/web/20210627183838im_/https://www.lexico.com/lexico-logo.png"><meta charset="utf-8"/><meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport"/><meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"/><meta itemprop="copyrightHolder" content="Lexico Dictionaries"/><meta itemprop="copyrightYear" content="2021"/><meta itemprop="inLanguage" content="en"/><meta itemprop="publisher" content="Lexico Dictionaries"/><link href="https://www.lexico.com" rel="publisher"/><link href="/web/20210627183838/https://www.lexico.com/opensearch/en_dictionary.xml" rel="search" title="Lexico UK Dictionary search" type="application/opensearchdescription+xml"/><link href="/web/20210627183838/https://www.lexico.com/opensearch/noad.xml" rel="search" title="Lexico US Dictionary search" type="application/opensearchdescription+xml"/><link href="/web/20210627183838/https://www.lexico.com/opensearch/thesaurus.xml" rel="search" title="Lexico Synonyms search" type="application/opensearchdescription+xml"/><link href="/web/20210627183838/https://www.lexico.com/opensearch/en_grammar.xml" rel="search" title="Lexico English Grammar search" type="application/opensearchdescription+xml"/><link href="/web/20210627183838/https://www.lexico.com/opensearch/es_dictionary.xml" rel="search" title="Lexico Spanish search" type="application/opensearchdescription+xml"/><link href="/web/20210627183838/https://www.lexico.com/opensearch/to_english.xml" rel="search" title="Lexico Spanish - English search" type="application/opensearchdescription+xml"/><link href="/web/20210627183838/https://www.lexico.com/opensearch/from_english.xml" rel="search" title="Lexico English - Spanish search" type="application/opensearchdescription+xml"/><link href="/web/20210627183838/https://www.lexico.com/opensearch/es_grammar.xml" rel="search" title="Lexico Spanish Grammar search" type="application/opensearchdescription+xml"/><link rel="preconnect" href="//web.archive.org/web/20210627183838/https://ads.pubmatic.com/"/><link rel="preconnect" href="//web.archive.org/web/20210627183838/https://securepubads.g.doubleclick.net/"/><link rel="preconnect" href="//web.archive.org/web/20210627183838/https://cm.g.doubleclick.net/"/><link rel="preconnect" href="//web.archive.org/web/20210627183838/https://pagead2.googlesyndication.com/"/><link rel="preconnect" href="//web.archive.org/web/20210627183838/https://ib.adnxs.com/"/><link rel="preconnect" href="//web.archive.org/web/20210627183838/https://ce.lijit.com/"/><link rel="preconnect" href="//web.archive.org/web/20210627183838/https://ap.lijit.com/"/><link rel="preconnect" href="//web.archive.org/web/20210627183838/https://us-u.openx.net/"/><script async="async" src="https://web.archive.org/web/20210627183838js_/https://securepubads.g.doubleclick.net/tag/js/gpt.js" onload="(function() { window.performance.mark('gptLoadEnd'); window.performance.measure('gptLoad', 'gptLoadStart', 'gptLoadEnd'); var timing = window.performance.getEntriesByName('gptLoad')[0].duration; window.dataLayer.push({ event: 'gptLoad', page: page, timing: timing }); })()"></script><script>var isEU = false; var adlerGeo = "US"; var detectedDevice = "Desktop"; var site = "lexi"; var page = "HP"; var mupFpbConfiguration = { adlerGeo: adlerGeo, detectedDevice: detectedDevice, mupFpbApiEndpoint: "https://web.archive.org/web/20210627183838/https://irene.lexico.com/mup-fpb/v1", site: site }; var rtfFpbApiEndpoint = "https://web.archive.org/web/20210627183838/https://irene.lexico.com/v1"; var rtfFpbConfig = { adlerGeo: adlerGeo, detectedDevice: detectedDevice, rtfFpbApiEndpoint: rtfFpbApiEndpoint, site: site }; var pageTargeting = { loc: adlerGeo, tx1: "homepage", tx2: "homepage", ptype: "homepage", ld: "1" }; // slotConfigs, lazySlotConfigs var slotConfigs = [{"placement":"lexi_home_dkt_atf_728x90_1","code":"/23219321/lexico","sizes":[[728,90],[970,90],[970,250]],"targeting":{"pos":"top","pos2":"1"},"ad_uuid":"lexi_home_dkt_atf_728x90_1"},{"placement":"lexi_home_dkt_btf_300x250_10","code":"/23219321/lexico","sizes":[[300,250]],"targeting":{"pos":"bot","pos2":"10"},"ad_uuid":"lexi_home_dkt_btf_300x250_10"}]; var lazySlotConfigs = [{"placement":"lexi_home_dkt_atf_300x250_20","code":"/23219321/lexico","sizes":[[300,250]],"targeting":{"pos":"bot","pos2":"20"},"ad_uuid":"lexi_home_dkt_atf_300x250_20"}]; window.adlerData = { mup: { values: null, processed: false }, rtf: { values: null, processed: false } }; var generateFormattedTime = function generateFormattedTime() { var date = new Date(); var formattedMilliseconds = "".concat(date.getMilliseconds()); while (formattedMilliseconds.length < 3) { formattedMilliseconds = "0".concat(formattedMilliseconds); } var formattedSeconds = "".concat(date.getSeconds()); while (formattedSeconds.length < 2) { formattedSeconds = "0".concat(formattedSeconds); } return "" .concat(date.getHours(), ":") .concat(date.getMinutes(), ":") .concat(formattedSeconds, ".") .concat(formattedMilliseconds); }; var generateSessionId = function generateSessionId() { var sessionId = ""; var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for (var i = 0; i < 32; i += 1) { sessionId += characters.charAt( Math.floor(Math.random() * characters.length) ); } return sessionId; }; var sessionId = generateSessionId(); window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: "oneTrustScriptLoaded", timing: generateFormattedTime(), sessionId: sessionId }); if (typeof window.__cmp === "function") { window.__cmp("getVendorConsents", {}, function(c) { window.dataLayer.push({ event: "cmpDoesExist", timing: generateFormattedTime(), consents: JSON.stringify(c), sessionId: sessionId }); }); } else { window.dataLayer.push({ event: "cmpDoesNotExist", timing: generateFormattedTime(), sessionId: sessionId }); } window.performance.mark("adStackStart"); var PWT = {}; /**-------------- Page level ad targeting configs --------------*/ pageTargeting.dow = new Date().getDay().toString(); var allSlotConfigs = filterSize((slotConfigs || []).concat(lazySlotConfigs)); // To prevent the 300 wide ad from displaying on smaller screens function filterSize(sizes){ var temp_sizes = []; for (var i = sizes.length - 1; i >= 0; i--) { if ( (sizes[i].placement.indexOf("_160x600_") > -1) && (sizes[i].sizes.join("_").indexOf("300,600") > -1) && window.innerWidth < 1540) { sizes[i].sizes = [160, 600]; } temp_sizes.push(sizes[i]); } return temp_sizes; } var determineConsent = function determineConsent() { /* FPB Determine IAB consent for ad personalization, and set for GPT. Default for EU is false, and default for non-EU is true. */ if (isEU) { try { if (typeof __cmp === "function") { __cmp("getVendorConsents", {}, function(c) { var consent = false; if (Array.isArray(c.purposeConsents)) { consent = c.purposeConsents.indexOf("3:true") !== -1; } else if (typeof c.purposeConsents === "object") { consent = c.purposeConsents[3]; } if (consent !== false && consent !== true) consent = false; setFpbGPTPersonalization(consent); }); } else { setFpbGPTPersonalization(false); } } catch (error) { console.error("personalization: ", error); setFpbGPTPersonalization(false); } } else { setFpbGPTPersonalization(true); } }; var setFpbGPTPersonalization = function setFpbGPTPersonalization( personalized, googletag ) { /* FPB Wait until DFP is ready and push personalization to DPT. */ googletag = googletag || window.googletag; googletag.cmd.push(function() { if (!window.dfpReady) { setTimeout(setFpbGPTPersonalization, 100, personalized); } else { if (personalized) { googletag.pubads().setRequestNonPersonalizedAds(0); } else { googletag.pubads().setRequestNonPersonalizedAds(1); } } }); }; /**-------------- Targeting runtime setup --------------*/ pageTargeting.ref = window.document.referrer.search( "dictionary.com|thesaurus.com|reference.com|lexico.com" ) > -1 ? "organic" : "direct"; pageTargeting.lang = window.navigator.userLanguage || window.navigator.language; pageTargeting.pv = typeof SCCookie !== "undefined" ? SCCookie.getPageViewCount() + "" : ""; pageTargeting.rpv = Math.floor(Math.random() * 100 + 1).toString(); pageTargeting.sid = "8d785d3f-78a1-464c-b642-18c386194b15"; pageTargeting.bid = "8d637c06-307e-43cb-b4cf-8f33f323f99f"; var bidRpvThreshold = 4; window.adlerData.shouldSetLoki = pageTargeting.rpv > bidRpvThreshold; var apstagSlots = (function(slotConfigs) { var slots = slotConfigs.reduce(function(accumulator, currentValue) { accumulator.push({ slotID: currentValue.placement, sizes: currentValue.sizes }); return accumulator; }, []); return slots; })(slotConfigs); var FAILSAFE_TIMEOUT = 5000; // this timeout should be more than OpenWrap timeout var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; var adSlots = adSlots || { slots: {} }; window.performance.mark('gptLoadStart');</script><script type="text/javascript" src="https://web.archive.org/web/20210627183838js_/https://ads.pubmatic.com/AdServer/js/pwt/103207/1483/pwt.js"></script><script>determineConsent(); window.dataLayer.push({ event: "initialDetermineConsentInvocationComplete", timing: generateFormattedTime(), sessionId: sessionId }); function initAdserver(wasCalledByFailsafe) { if ( window.initAdserverFlag !== true && (wasCalledByFailsafe === true || (PWT.a9_BidsReceived && PWT.ow_BidsReceived && window.adlerData.mup.values && window.adlerData.rtf.values)) ) { window.dataLayer.push({ event: "initAdServerRun", timing: generateFormattedTime(), sessionId: sessionId }); window.initAdserverFlag = true; if (!PWT.ow_Bids) { var owBackup = []; for (var i = 0; i < slotConfigs.length; i++) { owBackup.push({ adUnitIndex: "" + i, adUnitId: slotConfigs[i].code, bidData: { kvp: {} }, code: slotConfigs[i].placement, divId: slotConfigs[i].placement }); } PWT.ow_Bids = owBackup; } if (!PWT.a9_Bids) { PWT.a9_Bids = []; } processMupFpbValues(PWT.ow_Bids); processRtfFpbValues(PWT.ow_Bids, PWT.a9_Bids, allSlotConfigs, window.adlerData.shouldSetLoki); PWT.addKeyValuePairsToGPTSlots(PWT.ow_Bids); PWT.a9_BidsReceived = PWT.ow_BidsReceived = false; PWT.a9_Bids = PWT.ow_Bids = undefined; googletag.pubads().refresh(PWT.requestBidSlots); window.performance.mark("adStackEnd"); window.performance.measure("adStack", "adStackStart", "adStackEnd"); window.performance.clearMarks(); window.performance.clearMeasures(); } } function initAdsWithFailsafe() { googletag.cmd.push(function() { window.dataLayer.push({ event: "setupDFP", timing: generateFormattedTime(), sessionId: sessionId }); /**-------------- Set page level targeting for DFP --------------*/ (function setPageLevelTargeting(googletag) { /* Both Bidders Set targeting params pertaining to all slots on page. */ googletag = googletag || window.googletag; Object.keys(pageTargeting).forEach(function(pageTarget) { if ( Object.prototype.hasOwnProperty.call(pageTargeting, pageTarget) ) { (function(key, value) { googletag.cmd.push(function() { googletag.pubads().setTargeting(key, value); }); })(pageTarget, pageTargeting[pageTarget]); } }); googletag.cmd.push(function() { }); })(googletag); /**-------------- Set ad slot level targeting for DFP --------------*/ if (typeof slotConfigs === "object") { (function setAdSlotTargeting(googletag) { /* Both Bidders 1. Define initial (static) slots for DPT. 2. Add listeners for events relevant to analytics. 3. Set targeting params pertaining to individual slots. */ var adSlotRenderPeriods = {}; googletag = googletag || window.googletag; slotConfigs.forEach(function(slot) { googletag.cmd.push(function() { adSlots.slots[slot.placement] = googletag .defineSlot(slot.code, slot.sizes, slot.placement) .addService(googletag.pubads()); googletag .pubads() .addEventListener("slotRenderEnded", function(event) { if (event.slot === adSlots.slots[slot.placement]) { adSlotRenderPeriods[slot.placement] = Date.now(); } }); googletag .pubads() .addEventListener("slotOnload", function(event) { if (event.slot === adSlots.slots[slot.placement]) { window.dataLayer.push({ event: "gptSlotRenderPeriod", page: page, slotId: slot.placement, code: slot.code, position: slot.targeting.pos, position2: slot.targeting.pos2, time: Date.now() - adSlotRenderPeriods[slot.placement] }); } }); googletag .pubads() .addEventListener("impressionViewable", function(event) { if (event.slot === adSlots.slots[slot.placement]) { window.dataLayer.push({ event: "gptImpressionViewable", page: page, slotId: slot.placement, code: slot.code, position: slot.targeting.pos, position2: slot.targeting.pos2 }); } }); Object.keys(slot.targeting).forEach(function(target) { if ( Object.prototype.hasOwnProperty.call(slot.targeting, target) ) { adSlots.slots[slot.placement].setTargeting( target, slot.targeting[target] ); } }); adSlots.slots[slot.placement].setTargeting("adrefresh", "n"); }); }); })(googletag); } (function pushAdSlots(googletag) { googletag = googletag || window.googletag; googletag.cmd.push(function() { googletag.pubads().enableSingleRequest(); googletag.pubads().disableInitialLoad(); googletag.enableServices(); window.dfpReady = true; }); })(googletag); googletag.display(); PWT.requestBidSlots = googletag.pubads().getSlots(); if (typeof PWT.requestBids === "function") { const config = PWT.generateConfForGPT( PWT.requestBidSlots ); PWT.requestBids(config, function(adUnitsArray) { PWT.ow_Bids = adUnitsArray; PWT.ow_BidsReceived = true; initAdserver(false); }); } setTimeout(function() { initAdserver(true); }, FAILSAFE_TIMEOUT); }); } /**-------------------- A9 --------------------*/ function a9Q(c, r) { window[a9]._Q.push([c, r]); } window.apstag = { init: function init() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } a9Q('i', args); }, fetchBids: function fetchBids() { for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } a9Q('f', args); }, setDisplayBids: function setDisplayBids() {}, _Q: [] }; window.performance.mark('apstagLoadStart'); </script><script type="text/javascript" src="https://web.archive.org/web/20210627183838js_/https://c.amazon-adsystem.com/aax2/apstag.js"></script><script>/** * Copyright 2016 Google Inc. All Rights Reserved. * * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE. * * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document * */ (function() { 'use strict'; // Exit early if we're not running in a browser. if (typeof window !== 'object') { return; } // Exit early if all IntersectionObserver and IntersectionObserverEntry // features are natively supported. if ('IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype) { // Minimal polyfill for Edge 15's lack of `isIntersecting` // See: https://github.com/w3c/IntersectionObserver/issues/211 if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) { Object.defineProperty(window.IntersectionObserverEntry.prototype, 'isIntersecting', { get: function () { return this.intersectionRatio > 0; } }); } return; } /** * Returns the embedding frame element, if any. * @param {!Document} doc * @return {!Element} */ function getFrameElement(doc) { try { return doc.defaultView && doc.defaultView.frameElement || null; } catch (e) { // Ignore the error. return null; } } /** * A local reference to the root document. */ var document = (function(startDoc) { var doc = startDoc; var frame = getFrameElement(doc); while (frame) { doc = frame.ownerDocument; frame = getFrameElement(doc); } return doc; })(window.document); /** * An IntersectionObserver registry. This registry exists to hold a strong * reference to IntersectionObserver instances currently observing a target * element. Without this registry, instances without another reference may be * garbage collected. */ var registry = []; /** * The signal updater for cross-origin intersection. When not null, it means * that the polyfill is configured to work in a cross-origin mode. * @type {function(DOMRect|ClientRect, DOMRect|ClientRect)} */ var crossOriginUpdater = null; /** * The current cross-origin intersection. Only used in the cross-origin mode. * @type {DOMRect|ClientRect} */ var crossOriginRect = null; /** * Creates the global IntersectionObserverEntry constructor. * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry * @param {Object} entry A dictionary of instance properties. * @constructor */ function IntersectionObserverEntry(entry) { this.time = entry.time; this.target = entry.target; this.rootBounds = ensureDOMRect(entry.rootBounds); this.boundingClientRect = ensureDOMRect(entry.boundingClientRect); this.intersectionRect = ensureDOMRect(entry.intersectionRect || getEmptyRect()); this.isIntersecting = !!entry.intersectionRect; // Calculates the intersection ratio. var targetRect = this.boundingClientRect; var targetArea = targetRect.width * targetRect.height; var intersectionRect = this.intersectionRect; var intersectionArea = intersectionRect.width * intersectionRect.height; // Sets intersection ratio. if (targetArea) { // Round the intersection ratio to avoid floating point math issues: // https://github.com/w3c/IntersectionObserver/issues/324 this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4)); } else { // If area is zero and is intersecting, sets to 1, otherwise to 0 this.intersectionRatio = this.isIntersecting ? 1 : 0; } } /** * Creates the global IntersectionObserver constructor. * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface * @param {Function} callback The function to be invoked after intersection * changes have queued. The function is not invoked if the queue has * been emptied by calling the `takeRecords` method. * @param {Object=} opt_options Optional configuration options. * @constructor */ function IntersectionObserver(callback, opt_options) { var options = opt_options || {}; if (typeof callback != 'function') { throw new Error('callback must be a function'); } if ( options.root && options.root.nodeType != 1 && options.root.nodeType != 9 ) { throw new Error('root must be a Document or Element'); } // Binds and throttles `this._checkForIntersections`. this._checkForIntersections = throttle( this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT); // Private properties. this._callback = callback; this._observationTargets = []; this._queuedEntries = []; this._rootMarginValues = this._parseRootMargin(options.rootMargin); // Public properties. this.thresholds = this._initThresholds(options.threshold); this.root = options.root || null; this.rootMargin = this._rootMarginValues.map(function(margin) { return margin.value + margin.unit; }).join(' '); /** @private @const {!Array<!Document>} */ this._monitoringDocuments = []; /** @private @const {!Array<function()>} */ this._monitoringUnsubscribes = []; } /** * The minimum interval within which the document will be checked for * intersection changes. */ IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100; /** * The frequency in which the polyfill polls for intersection changes. * this can be updated on a per instance basis and must be set prior to * calling `observe` on the first target. */ IntersectionObserver.prototype.POLL_INTERVAL = null; /** * Use a mutation observer on the root element * to detect intersection changes. */ IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true; /** * Sets up the polyfill in the cross-origin mode. The result is the * updater function that accepts two arguments: `boundingClientRect` and * `intersectionRect` - just as these fields would be available to the * parent via `IntersectionObserverEntry`. This function should be called * each time the iframe receives intersection information from the parent * window, e.g. via messaging. * @return {function(DOMRect|ClientRect, DOMRect|ClientRect)} */ IntersectionObserver._setupCrossOriginUpdater = function() { if (!crossOriginUpdater) { /** * @param {DOMRect|ClientRect} boundingClientRect * @param {DOMRect|ClientRect} intersectionRect */ crossOriginUpdater = function(boundingClientRect, intersectionRect) { if (!boundingClientRect || !intersectionRect) { crossOriginRect = getEmptyRect(); } else { crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect); } registry.forEach(function(observer) { observer._checkForIntersections(); }); }; } return crossOriginUpdater; }; /** * Resets the cross-origin mode. */ IntersectionObserver._resetCrossOriginUpdater = function() { crossOriginUpdater = null; crossOriginRect = null; }; /** * Starts observing a target element for intersection changes based on * the thresholds values. * @param {Element} target The DOM element to observe. */ IntersectionObserver.prototype.observe = function(target) { var isTargetAlreadyObserved = this._observationTargets.some(function(item) { return item.element == target; }); if (isTargetAlreadyObserved) { return; } if (!(target && target.nodeType == 1)) { throw new Error('target must be an Element'); } this._registerInstance(); this._observationTargets.push({element: target, entry: null}); this._monitorIntersections(target.ownerDocument); this._checkForIntersections(); }; /** * Stops observing a target element for intersection changes. * @param {Element} target The DOM element to observe. */ IntersectionObserver.prototype.unobserve = function(target) { this._observationTargets = this._observationTargets.filter(function(item) { return item.element != target; }); this._unmonitorIntersections(target.ownerDocument); if (this._observationTargets.length == 0) { this._unregisterInstance(); } }; /** * Stops observing all target elements for intersection changes. */ IntersectionObserver.prototype.disconnect = function() { this._observationTargets = []; this._unmonitorAllIntersections(); this._unregisterInstance(); }; /** * Returns any queue entries that have not yet been reported to the * callback and clears the queue. This can be used in conjunction with the * callback to obtain the absolute most up-to-date intersection information. * @return {Array} The currently queued entries. */ IntersectionObserver.prototype.takeRecords = function() { var records = this._queuedEntries.slice(); this._queuedEntries = []; return records; }; /** * Accepts the threshold value from the user configuration object and * returns a sorted array of unique threshold values. If a value is not * between 0 and 1 and error is thrown. * @private * @param {Array|number=} opt_threshold An optional threshold value or * a list of threshold values, defaulting to [0]. * @return {Array} A sorted list of unique and valid threshold values. */ IntersectionObserver.prototype._initThresholds = function(opt_threshold) { var threshold = opt_threshold || [0]; if (!Array.isArray(threshold)) threshold = [threshold]; return threshold.sort().filter(function(t, i, a) { if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) { throw new Error('threshold must be a number between 0 and 1 inclusively'); } return t !== a[i - 1]; }); }; /** * Accepts the rootMargin value from the user configuration object * and returns an array of the four margin values as an object containing * the value and unit properties. If any of the values are not properly * formatted or use a unit other than px or %, and error is thrown. * @private * @param {string=} opt_rootMargin An optional rootMargin value, * defaulting to '0px'. * @return {Array<Object>} An array of margin objects with the keys * value and unit. */ IntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) { var marginString = opt_rootMargin || '0px'; var margins = marginString.split(/\s+/).map(function(margin) { var parts = /^(-?\d*\.?\d+)(px|%)$/.exec(margin); if (!parts) { throw new Error('rootMargin must be specified in pixels or percent'); } return {value: parseFloat(parts[1]), unit: parts[2]}; }); // Handles shorthand. margins[1] = margins[1] || margins[0]; margins[2] = margins[2] || margins[0]; margins[3] = margins[3] || margins[1]; return margins; }; /** * Starts polling for intersection changes if the polling is not already * happening, and if the page's visibility state is visible. * @param {!Document} doc * @private */ IntersectionObserver.prototype._monitorIntersections = function(doc) { var win = doc.defaultView; if (!win) { // Already destroyed. return; } if (this._monitoringDocuments.indexOf(doc) != -1) { // Already monitoring. return; } // Private state for monitoring. var callback = this._checkForIntersections; var monitoringInterval = null; var domObserver = null; // If a poll interval is set, use polling instead of listening to // resize and scroll events or DOM mutations. if (this.POLL_INTERVAL) { monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL); } else { addEvent(win, 'resize', callback, true); addEvent(doc, 'scroll', callback, true); if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) { domObserver = new win.MutationObserver(callback); domObserver.observe(doc, { attributes: true, childList: true, characterData: true, subtree: true }); } } this._monitoringDocuments.push(doc); this._monitoringUnsubscribes.push(function() { // Get the window object again. When a friendly iframe is destroyed, it // will be null. var win = doc.defaultView; if (win) { if (monitoringInterval) { win.clearInterval(monitoringInterval); } removeEvent(win, 'resize', callback, true); } removeEvent(doc, 'scroll', callback, true); if (domObserver) { domObserver.disconnect(); } }); // Also monitor the parent. var rootDoc = (this.root && (this.root.ownerDocument || this.root)) || document; if (doc != rootDoc) { var frame = getFrameElement(doc); if (frame) { this._monitorIntersections(frame.ownerDocument); } } }; /** * Stops polling for intersection changes. * @param {!Document} doc * @private */ IntersectionObserver.prototype._unmonitorIntersections = function(doc) { var index = this._monitoringDocuments.indexOf(doc); if (index == -1) { return; } var rootDoc = (this.root && (this.root.ownerDocument || this.root)) || document; // Check if any dependent targets are still remaining. var hasDependentTargets = this._observationTargets.some(function(item) { var itemDoc = item.element.ownerDocument; // Target is in this context. if (itemDoc == doc) { return true; } // Target is nested in this context. while (itemDoc && itemDoc != rootDoc) { var frame = getFrameElement(itemDoc); itemDoc = frame && frame.ownerDocument; if (itemDoc == doc) { return true; } } return false; }); if (hasDependentTargets) { return; } // Unsubscribe. var unsubscribe = this._monitoringUnsubscribes[index]; this._monitoringDocuments.splice(index, 1); this._monitoringUnsubscribes.splice(index, 1); unsubscribe(); // Also unmonitor the parent. if (doc != rootDoc) { var frame = getFrameElement(doc); if (frame) { this._unmonitorIntersections(frame.ownerDocument); } } }; /** * Stops polling for intersection changes. * @param {!Document} doc * @private */ IntersectionObserver.prototype._unmonitorAllIntersections = function() { var unsubscribes = this._monitoringUnsubscribes.slice(0); this._monitoringDocuments.length = 0; this._monitoringUnsubscribes.length = 0; for (var i = 0; i < unsubscribes.length; i++) { unsubscribes[i](); } }; /** * Scans each observation target for intersection changes and adds them * to the internal entries queue. If new entries are found, it * schedules the callback to be invoked. * @private */ IntersectionObserver.prototype._checkForIntersections = function() { if (!this.root && crossOriginUpdater && !crossOriginRect) { // Cross origin monitoring, but no initial data available yet. return; } var rootIsInDom = this._rootIsInDom(); var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect(); this._observationTargets.forEach(function(item) { var target = item.element; var targetRect = getBoundingClientRect(target); var rootContainsTarget = this._rootContainsTarget(target); var oldEntry = item.entry; var intersectionRect = rootIsInDom && rootContainsTarget && this._computeTargetAndRootIntersection(target, targetRect, rootRect); var rootBounds = null; if (!this._rootContainsTarget(target)) { rootBounds = getEmptyRect(); } else if (!crossOriginUpdater || this.root) { rootBounds = rootRect; } var newEntry = item.entry = new IntersectionObserverEntry({ time: now(), target: target, boundingClientRect: targetRect, rootBounds: rootBounds, intersectionRect: intersectionRect }); if (!oldEntry) { this._queuedEntries.push(newEntry); } else if (rootIsInDom && rootContainsTarget) { // If the new entry intersection ratio has crossed any of the // thresholds, add a new entry. if (this._hasCrossedThreshold(oldEntry, newEntry)) { this._queuedEntries.push(newEntry); } } else { // If the root is not in the DOM or target is not contained within // root but the previous entry for this target had an intersection, // add a new record indicating removal. if (oldEntry && oldEntry.isIntersecting) { this._queuedEntries.push(newEntry); } } }, this); if (this._queuedEntries.length) { this._callback(this.takeRecords(), this); } }; /** * Accepts a target and root rect computes the intersection between then * following the algorithm in the spec. * TODO(philipwalton): at this time clip-path is not considered. * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo * @param {Element} target The target DOM element * @param {Object} targetRect The bounding rect of the target. * @param {Object} rootRect The bounding rect of the root after being * expanded by the rootMargin value. * @return {?Object} The final intersection rect object or undefined if no * intersection is found. * @private */ IntersectionObserver.prototype._computeTargetAndRootIntersection = function(target, targetRect, rootRect) { // If the element isn't displayed, an intersection can't happen. if (window.getComputedStyle(target).display == 'none') return; var intersectionRect = targetRect; var parent = getParentNode(target); var atRoot = false; while (!atRoot && parent) { var parentRect = null; var parentComputedStyle = parent.nodeType == 1 ? window.getComputedStyle(parent) : {}; // If the parent isn't displayed, an intersection can't happen. if (parentComputedStyle.display == 'none') return null; if (parent == this.root || parent.nodeType == /* DOCUMENT */ 9) { atRoot = true; if (parent == this.root || parent == document) { if (crossOriginUpdater && !this.root) { if (!crossOriginRect || crossOriginRect.width == 0 && crossOriginRect.height == 0) { // A 0-size cross-origin intersection means no-intersection. parent = null; parentRect = null; intersectionRect = null; } else { parentRect = crossOriginRect; } } else { parentRect = rootRect; } } else { // Check if there's a frame that can be navigated to. var frame = getParentNode(parent); var frameRect = frame && getBoundingClientRect(frame); var frameIntersect = frame && this._computeTargetAndRootIntersection(frame, frameRect, rootRect); if (frameRect && frameIntersect) { parent = frame; parentRect = convertFromParentRect(frameRect, frameIntersect); } else { parent = null; intersectionRect = null; } } } else { // If the element has a non-visible overflow, and it's not the <body> // or <html> element, update the intersection rect. // Note: <body> and <html> cannot be clipped to a rect that's not also // the document rect, so no need to compute a new intersection. var doc = parent.ownerDocument; if (parent != doc.body && parent != doc.documentElement && parentComputedStyle.overflow != 'visible') { parentRect = getBoundingClientRect(parent); } } // If either of the above conditionals set a new parentRect, // calculate new intersection data. if (parentRect) { intersectionRect = computeRectIntersection(parentRect, intersectionRect); } if (!intersectionRect) break; parent = parent && getParentNode(parent); } return intersectionRect; }; /** * Returns the root rect after being expanded by the rootMargin value. * @return {ClientRect} The expanded root rect. * @private */ IntersectionObserver.prototype._getRootRect = function() { var rootRect; if (this.root && !isDoc(this.root)) { rootRect = getBoundingClientRect(this.root); } else { // Use <html>/<body> instead of window since scroll bars affect size. var doc = isDoc(this.root) ? this.root : document; var html = doc.documentElement; var body = doc.body; rootRect = { top: 0, left: 0, right: html.clientWidth || body.clientWidth, width: html.clientWidth || body.clientWidth, bottom: html.clientHeight || body.clientHeight, height: html.clientHeight || body.clientHeight }; } return this._expandRectByRootMargin(rootRect); }; /** * Accepts a rect and expands it by the rootMargin value. * @param {DOMRect|ClientRect} rect The rect object to expand. * @return {ClientRect} The expanded rect. * @private */ IntersectionObserver.prototype._expandRectByRootMargin = function(rect) { var margins = this._rootMarginValues.map(function(margin, i) { return margin.unit == 'px' ? margin.value : margin.value * (i % 2 ? rect.width : rect.height) / 100; }); var newRect = { top: rect.top - margins[0], right: rect.right + margins[1], bottom: rect.bottom + margins[2], left: rect.left - margins[3] }; newRect.width = newRect.right - newRect.left; newRect.height = newRect.bottom - newRect.top; return newRect; }; /** * Accepts an old and new entry and returns true if at least one of the * threshold values has been crossed. * @param {?IntersectionObserverEntry} oldEntry The previous entry for a * particular target element or null if no previous entry exists. * @param {IntersectionObserverEntry} newEntry The current entry for a * particular target element. * @return {boolean} Returns true if a any threshold has been crossed. * @private */ IntersectionObserver.prototype._hasCrossedThreshold = function(oldEntry, newEntry) { // To make comparing easier, an entry that has a ratio of 0 // but does not actually intersect is given a value of -1 var oldRatio = oldEntry && oldEntry.isIntersecting ? oldEntry.intersectionRatio || 0 : -1; var newRatio = newEntry.isIntersecting ? newEntry.intersectionRatio || 0 : -1; // Ignore unchanged ratios if (oldRatio === newRatio) return; for (var i = 0; i < this.thresholds.length; i++) { var threshold = this.thresholds[i]; // Return true if an entry matches a threshold or if the new ratio // and the old ratio are on the opposite sides of a threshold. if (threshold == oldRatio || threshold == newRatio || threshold < oldRatio !== threshold < newRatio) { return true; } } }; /** * Returns whether or not the root element is an element and is in the DOM. * @return {boolean} True if the root element is an element and is in the DOM. * @private */ IntersectionObserver.prototype._rootIsInDom = function() { return !this.root || containsDeep(document, this.root); }; /** * Returns whether or not the target element is a child of root. * @param {Element} target The target element to check. * @return {boolean} True if the target element is a child of root. * @private */ IntersectionObserver.prototype._rootContainsTarget = function(target) { var rootDoc = (this.root && (this.root.ownerDocument || this.root)) || document; return ( containsDeep(rootDoc, target) && (!this.root || rootDoc == target.ownerDocument) ); }; /** * Adds the instance to the global IntersectionObserver registry if it isn't * already present. * @private */ IntersectionObserver.prototype._registerInstance = function() { if (registry.indexOf(this) < 0) { registry.push(this); } }; /** * Removes the instance from the global IntersectionObserver registry. * @private */ IntersectionObserver.prototype._unregisterInstance = function() { var index = registry.indexOf(this); if (index != -1) registry.splice(index, 1); }; /** * Returns the result of the performance.now() method or null in browsers * that don't support the API. * @return {number} The elapsed time since the page was requested. */ function now() { return window.performance && performance.now && performance.now(); } /** * Throttles a function and delays its execution, so it's only called at most * once within a given time period. * @param {Function} fn The function to throttle. * @param {number} timeout The amount of time that must pass before the * function can be called again. * @return {Function} The throttled function. */ function throttle(fn, timeout) { var timer = null; return function () { if (!timer) { timer = setTimeout(function() { fn(); timer = null; }, timeout); } }; } /** * Adds an event handler to a DOM node ensuring cross-browser compatibility. * @param {Node} node The DOM node to add the event handler to. * @param {string} event The event name. * @param {Function} fn The event handler to add. * @param {boolean} opt_useCapture Optionally adds the even to the capture * phase. Note: this only works in modern browsers. */ function addEvent(node, event, fn, opt_useCapture) { if (typeof node.addEventListener == 'function') { node.addEventListener(event, fn, opt_useCapture || false); } else if (typeof node.attachEvent == 'function') { node.attachEvent('on' + event, fn); } } /** * Removes a previously added event handler from a DOM node. * @param {Node} node The DOM node to remove the event handler from. * @param {string} event The event name. * @param {Function} fn The event handler to remove. * @param {boolean} opt_useCapture If the event handler was added with this * flag set to true, it should be set to true here in order to remove it. */ function removeEvent(node, event, fn, opt_useCapture) { if (typeof node.removeEventListener == 'function') { node.removeEventListener(event, fn, opt_useCapture || false); } else if (typeof node.detatchEvent == 'function') { node.detatchEvent('on' + event, fn); } } /** * Returns the intersection between two rect objects. * @param {Object} rect1 The first rect. * @param {Object} rect2 The second rect. * @return {?Object|?ClientRect} The intersection rect or undefined if no * intersection is found. */ function computeRectIntersection(rect1, rect2) { var top = Math.max(rect1.top, rect2.top); var bottom = Math.min(rect1.bottom, rect2.bottom); var left = Math.max(rect1.left, rect2.left); var right = Math.min(rect1.right, rect2.right); var width = right - left; var height = bottom - top; return (width >= 0 && height >= 0) && { top: top, bottom: bottom, left: left, right: right, width: width, height: height } || null; } /** * Shims the native getBoundingClientRect for compatibility with older IE. * @param {Element} el The element whose bounding rect to get. * @return {DOMRect|ClientRect} The (possibly shimmed) rect of the element. */ function getBoundingClientRect(el) { var rect; try { rect = el.getBoundingClientRect(); } catch (err) { // Ignore Windows 7 IE11 "Unspecified error" // https://github.com/w3c/IntersectionObserver/pull/205 } if (!rect) return getEmptyRect(); // Older IE if (!(rect.width && rect.height)) { rect = { top: rect.top, right: rect.right, bottom: rect.bottom, left: rect.left, width: rect.right - rect.left, height: rect.bottom - rect.top }; } return rect; } /** * Returns an empty rect object. An empty rect is returned when an element * is not in the DOM. * @return {ClientRect} The empty rect. */ function getEmptyRect() { return { top: 0, bottom: 0, left: 0, right: 0, width: 0, height: 0 }; } /** * Ensure that the result has all of the necessary fields of the DOMRect. * Specifically this ensures that `x` and `y` fields are set. * * @param {?DOMRect|?ClientRect} rect * @return {?DOMRect} */ function ensureDOMRect(rect) { // A `DOMRect` object has `x` and `y` fields. if (!rect || 'x' in rect) { return rect; } // A IE's `ClientRect` type does not have `x` and `y`. The same is the case // for internally calculated Rect objects. For the purposes of // `IntersectionObserver`, it's sufficient to simply mirror `left` and `top` // for these fields. return { top: rect.top, y: rect.top, bottom: rect.bottom, left: rect.left, x: rect.left, right: rect.right, width: rect.width, height: rect.height }; } /** * Inverts the intersection and bounding rect from the parent (frame) BCR to * the local BCR space. * @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect. * @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect. * @return {ClientRect} The local root bounding rect for the parent's children. */ function convertFromParentRect(parentBoundingRect, parentIntersectionRect) { var top = parentIntersectionRect.top - parentBoundingRect.top; var left = parentIntersectionRect.left - parentBoundingRect.left; return { top: top, left: left, height: parentIntersectionRect.height, width: parentIntersectionRect.width, bottom: top + parentIntersectionRect.height, right: left + parentIntersectionRect.width }; } /** * Checks to see if a parent element contains a child element (including inside * shadow DOM). * @param {Node} parent The parent element. * @param {Node} child The child element. * @return {boolean} True if the parent node contains the child node. */ function containsDeep(parent, child) { var node = child; while (node) { if (node == parent) return true; node = getParentNode(node); } return false; } /** * Gets the parent node of an element or its host element if the parent node * is a shadow root. * @param {Node} node The node whose parent to get. * @return {Node|null} The parent node or null if no parent exists. */ function getParentNode(node) { var parent = node.parentNode; if (node.nodeType == /* DOCUMENT */ 9 && node != document) { // If this node is a document node, look for the embedding frame. return getFrameElement(node); } // If the parent has element that is assigned through shadow root slot if (parent && parent.assignedSlot) { parent = parent.assignedSlot.parentNode } if (parent && parent.nodeType == 11 && parent.host) { // If the parent is a shadow root, return the host element. return parent.host; } return parent; } /** * Returns true if `node` is a Document. * @param {!Node} node * @returns {boolean} */ function isDoc(node) { return node && node.nodeType === 9; } // Exposes the constructors globally. window.IntersectionObserver = IntersectionObserver; window.IntersectionObserverEntry = IntersectionObserverEntry; }()); window.performance.mark('apstagLoadEnd'); window.performance.measure('apstagLoad', 'apstagLoadStart', 'apstagLoadEnd'); var timing = window.performance.getEntriesByName('apstagLoad')[0].duration; window.dataLayer.push({ event: 'apstagLoad', page: page, timing: timing }); /**----------------- Initialize apstag (A9) -----------------*/ function apstagInitAndFetch() { apstag.init({ pubID: "3067", adServer: "googletag", bidTimeout: 1000 }); window.dataLayer.push({ event: "initialA9RequestInitiated", timing: generateFormattedTime(), sessionId: sessionId }); apstag.fetchBids( { slots: apstagSlots, timeout: 1000 // Make sure this timeout is less than or equal to OpenWrap TimeOut }, function(bids) { googletag.cmd.push(function() { apstag.setDisplayBids(); PWT.a9_Bids = bids; PWT.a9_BidsReceived = true; initAdserver(false); }); } ); } /**-------------------------- Mup Fpb integration --------------------------*/ var MAGIC = 0xbeefcafe; function getMupFpbParams(mupFpbSlotConfigs, mupFpbConfig) { var mupParams = {}; mupFpbSlotConfigs.forEach(function(slotConfig) { try { mupParams[slotConfig.placement] = { site: mupFpbConfig.site, geo: mupFpbConfig.adlerGeo || "", platform: mupFpbConfig.detectedDevice, sizes: slotConfig.sizes, position: slotConfig.targeting.pos }; } catch (error) { console.log("Error forming mup params:", error.message); return false; } return true; }); return mupParams; } function getAdlerKey(size) { var keyMap = { "970x250": "adler_a", "300x600": "adler_a", "320x100": "adler_a", "970x90": "adler_b", "728x90": "adler", "300x250": "adler", "320x50": "adler", "160x600": "adler" }; return keyMap[size]; } function parseMupResponse(mupFpbAjaxCall) { try { window.adlerData.mup.values = JSON.parse(mupFpbAjaxCall.responseText); initAdserver(false); } catch (err) { console.log("Error parsing mupResponse: ".concat(err.message)); } } function processMupFpbValues(adUnitsArray) { if (!window.adlerData.mup.values) return false; var mupFpbValues = window.adlerData.mup.values; adUnitsArray.forEach(function(adUnit) { if (adUnit.bidData.kvp.pwtsz) { try { var adlerKey = getAdlerKey(adUnit.bidData.kvp.pwtsz); if ( adlerKey === null || !mupFpbValues[adUnit.code] || !mupFpbValues[adUnit.code][adlerKey] ) { return false; } var markup = mupFpbValues[adUnit.code][adlerKey]; var deobfuscatedMarkup = deobMup(markup.adler); var muv = 100 + deobfuscatedMarkup; var centPwtecp = parseInt( adUnit.bidData.kvp.pwtecp.replace(".", ""), 10 ); var adjustedPwtecp = (centPwtecp * muv) / 10000; adUnit.bidData.kvp.pwtecp = adjustedPwtecp.toFixed(2); adUnit.bidData.kvp.mup = "".concat(deobfuscatedMarkup); } catch (error) { console.log("Error applying mup for:", adUnit.code); return false; } } return true; }); window.adlerData.mup.processed = true; return true; } function callMupFpb(slotConfigs, mupFpbConfig) { var mupFpbReq = new XMLHttpRequest(); mupFpbReq.addEventListener( "load", parseMupResponse.bind(null, mupFpbReq) ); mupFpbReq.open("POST", mupFpbConfig.mupFpbApiEndpoint, true); mupFpbReq.timeout = 1000; mupFpbReq.send( JSON.stringify(getMupFpbParams(slotConfigs, mupFpbConfig)) ); } function reverse(n) { var x = new Uint32Array(1); x[0] = n; x[0] = ((x[0] & 0x0000ffff) << 16) | ((x[0] & 0xffff0000) >>> 16); x[0] = ((x[0] & 0x55555555) << 1) | ((x[0] & 0xaaaaaaaa) >>> 1); x[0] = ((x[0] & 0x33333333) << 2) | ((x[0] & 0xcccccccc) >>> 2); x[0] = ((x[0] & 0x0f0f0f0f) << 4) | ((x[0] & 0xf0f0f0f0) >>> 4); x[0] = ((x[0] & 0x00ff00ff) << 8) | ((x[0] & 0xff00ff00) >>> 8); return x[0]; } function unflip(n) { return reverse(n ^ MAGIC); } function deobMup(encryptedMup) { if (!encryptedMup) { throw new Error( "Missing Mup. Please confirm value is being passed in." ); } var decryptedMup = unflip(parseInt(encryptedMup, 10)); return decryptedMup; } /**-------------- End of Mup Fpb integration --------------*/ /**--------------------- Rtf integration ------------------*/ function setRtfInstrumentationKV(rtfSlotConfigs, status, error) { rtfSlotConfigs.forEach(function(slotConfig) { slotConfig.targeting.adler_status = status; if (error) { slotConfig.targeting.adler_error = error; } }); } function getRtfParams(rtfSlotConfigs, rtfFpbConfig) { var requestParams = {}; var geo = rtfFpbConfig.adlerGeo || ""; if (geo === "") { setRtfInstrumentationKV(rtfSlotConfigs, "nogeo", "nogeo"); } rtfSlotConfigs.forEach(function(slotConfig) { try { requestParams[slotConfig.placement] = { site: rtfFpbConfig.site, geo: geo, platform: rtfFpbConfig.detectedDevice, sizes: slotConfig.sizes, position: slotConfig.targeting.pos }; } catch (error) { console.log("Error forming rtf params:", error.message); return false; } return true; }); return requestParams; } function rtfFallback(rtfSlotConfigs, event) { setRtfInstrumentationKV(rtfSlotConfigs, event.type); } function injectRtfValue(adUnit, rtfSlotConfigs) { var rtfFpbValues = window.adlerData.rtf.values; rtfSlotConfigs.forEach(function(slotConfig) { if (slotConfig.placement !== adUnit.code) return false; if (!rtfFpbValues[slotConfig.placement]) { slotConfig.targeting.adler_status = "nofloor"; } else { slotConfig.targeting.adler = rtfFpbValues[slotConfig.placement].adler; slotConfig.targeting.adler_a = rtfFpbValues[slotConfig.placement].adler_a; slotConfig.targeting.adler_b = rtfFpbValues[slotConfig.placement].adler_b; slotConfig.targeting.adler_status = "ok"; } return true; }); } function parseRtfValues(rtfAjaxCall, rtfSlotConfigs) { try { window.adlerData.rtf.values = JSON.parse(rtfAjaxCall.responseText); initAdserver(false); } catch (err) { setRtfInstrumentationKV(rtfSlotConfigs, "parse", err.message); } } function processRtfFpbValues( pubmaticAdUnitsArray, a9BidsArray, rtfSlotConfigs, shouldSetLoki ) { if (!window.adlerData.rtf.values) return false; var rtfFpbValues = window.adlerData.rtf.values; var a9NoBidValues = ["0", "1", "2"]; for (var i = 0; i < pubmaticAdUnitsArray.length; i += 1) { var adUnit = pubmaticAdUnitsArray[i]; var noA9bidForSlot = false; for (var j = 0; j < a9BidsArray.length; j += 1) { var a9Bid = a9BidsArray[j]; if ( a9Bid.slotID === pubmaticAdUnitsArray[i].code && (!a9Bid.amznbid || a9NoBidValues.indexOf(a9Bid.amznbid) !== -1) ) { noA9bidForSlot = true; break; } } if ( !adUnit.bidData.kvp.pwtsz && (noA9bidForSlot || a9BidsArray.length === 0) && shouldSetLoki ) { try { if (!rtfFpbValues[adUnit.code]) { return false; } var rtfValue = rtfFpbValues[adUnit.code].adler_a || rtfFpbValues[adUnit.code].adler; adUnit.bidData.kvp.pwtpid = "loki"; adUnit.bidData.kvp.pwtecp = rtfValue; adUnit.bidData.kvp.pwtbst = "1"; injectRtfValue(adUnit, rtfSlotConfigs); } catch (error) { console.log("Error applying rtf for:", adUnit.code); } } } window.adlerData.rtf.processed = true; return true; } function callRTFFpb(slotConfigs, rtfFpbConfig) { var rtfReq = new XMLHttpRequest(); rtfReq.addEventListener( "load", parseRtfValues.bind(null, rtfReq, slotConfigs) ); rtfReq.addEventListener("timeout", rtfFallback.bind(null, slotConfigs)); rtfReq.addEventListener("error", rtfFallback.bind(null, slotConfigs)); rtfReq.open("POST", rtfFpbConfig.rtfFpbApiEndpoint, true); rtfReq.timeout = 1000; rtfReq.send(JSON.stringify(getRtfParams(slotConfigs, rtfFpbConfig))); } /**------------------ End of Rtf integration ------------------*/ googletag.cmd.push(function() { callMupFpb(allSlotConfigs, mupFpbConfiguration); callRTFFpb(allSlotConfigs, rtfFpbConfig); }); var testAdParam = {}; var mupData = undefined; var updatePageTargeting = function(pageTargeting, testParam) { pageTargeting.spe = 'n'; pageTargeting.kw = ''; pageTargeting.loc = mupFpbConfiguration && mupFpbConfiguration.adlerGeo ? mupFpbConfiguration.adlerGeo : ''; pageTargeting.rpv = Math.floor(Math.random() * 100 + 1).toString(); pageTargeting.evince = 'ad'; pageTargeting.ref = 'organic'; pageTargeting.lang = window.navigator.userLanguage || window.navigator.language; pageTargeting.dow = new Date().getDay().toString(); pageTargeting.pv = typeof SCCookie !== "undefined" ? SCCookie.getPageViewCount() + "" : ""; if (mupData) { pageTargeting.mup = mupData.profileNumber; } window.adlerData.shouldSetLoki = pageTargeting.rpv > bidRpvThreshold; const objs = [pageTargeting, testParam]; const targeting = objs.reduce(function(r, o) { Object.keys(o).forEach(function(key) { r[key] = o[key]; }); return r; }); return targeting; } function refreshAds(event) { var refreshSlotConfigs = event.detail.slotConfigs.concat(event.detail.lazySlotConfigs); var pageTargeting = updatePageTargeting(event.detail.pageTargeting, testAdParam); window.performance.mark('adStackStart'); (function refreshLazySlots(lazySlotConfigs) { window.refreshLazyAds = lazySlotConfigs.map(function(slot) { return { placement: slot.placement, refresh: true }; }); })(event.detail.lazySlotConfigs); // Clear old state window.initAdserverFlag = false; // Delete old config googletag.destroySlots(); callMupFpb(refreshSlotConfigs, mupFpbConfiguration); callRTFFpb(refreshSlotConfigs, rtfFpbConfig); determineConsent(); /**---------- Set page level targeting for DFP ----------*/ (function setPageLevelTargeting(googletag) { /* Both Bidders Set targeting params pertaining to all slots on page. */ googletag = googletag || window.googletag; Object.keys(pageTargeting).forEach(function(pageTarget) { if (Object.prototype.hasOwnProperty.call(pageTargeting, pageTarget)) { (function(key, value) { googletag.cmd.push(function() { googletag.pubads().setTargeting(key, value); }); })(pageTarget, pageTargeting[pageTarget]); } }); })(googletag); /**---------- Set ad slot level targeting for DFP ----------*/ if (typeof event.detail.slotConfigs === "object") { (function setSpecificAdSlotTargeting(googletag, specificSlotConfigs) { var refresh = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; /* FPB 1. Define initial (static) slots for DPT. 2. Add listeners for events relevant to analytics. 3. Set targeting params pertaining to individual slots. */ var adSlotRenderPeriods = {}; googletag = googletag || window.googletag; specificSlotConfigs.forEach(function(slot) { googletag.cmd.push(function() { adSlots.slots[slot.placement] = googletag.defineSlot(slot.code, slot.sizes, slot.placement).addService(googletag.pubads()); googletag.pubads().addEventListener('slotRenderEnded', function(event) { if (event.slot === adSlots.slots[slot.placement]) { adSlotRenderPeriods[slot.placement] = Date.now(); } }); googletag.pubads().addEventListener('slotOnload', function(event) { if (event.slot === adSlots.slots[slot.placement]) { window.dataLayer.push({ event: 'gptSlotRenderPeriod', page: page, slotId: slot.placement, code: slot.code, position: slot.targeting.pos, position2: slot.targeting.pos2, time: Date.now() - adSlotRenderPeriods[slot.placement] }); } }); googletag.pubads().addEventListener('impressionViewable', function(event) { if (event.slot === adSlots.slots[slot.placement]) { window.dataLayer.push({ event: 'gptImpressionViewable', page: page, slotId: slot.placement, code: slot.code, position: slot.targeting.pos, position2: slot.targeting.pos2 }); } }); Object.keys(slot.targeting).forEach(function(target) { if (Object.prototype.hasOwnProperty.call(slot.targeting, target)) { adSlots.slots[slot.placement].setTargeting(target, slot.targeting[target]); } }); adSlots.slots[slot.placement].setTargeting('adrefresh', refresh ? 'y' : 'n'); }); }); })(googletag, event.detail.slotConfigs, event.detail.isNotPageTransition); } (function pushAdSlots(googletag) { googletag = googletag || window.googletag; googletag.cmd.push(function() { googletag.pubads().enableSingleRequest(); googletag.pubads().disableInitialLoad(); googletag.enableServices(); window.dfpReady = true; }); })(googletag); googletag.display(); PWT.requestBidSlots = googletag.pubads().getSlots(); if (typeof PWT.requestBids === 'function') { const config = PWT.generateConfForGPT(PWT.requestBidSlots); PWT.requestBids( config, function(adUnitsArray) { PWT.ow_Bids = adUnitsArray; PWT.ow_BidsReceived = true; initAdserver(false); } ); } apstag.fetchBids({ slots: apstagSlots, timeout: 1000 // Make sure this timeout is less than or equal to OpenWrap TimeOut }, function(bids) { googletag.cmd.push(function() { apstag.setDisplayBids(); PWT.a9_Bids = bids; PWT.a9_BidsReceived = true; initAdserver(false); }); }); } function requestLazyAd(event) { var results = {}; var lazyInitAdserver = function(slot) { if (results.a9_BidsReceived && results.ow_BidsReceived && window.adlerData.mup.values && window.adlerData.rtf.values) { if (!results.ow_Bids) { var owBackup = []; for (var i = 0; i < slotConfigs.length; i++) { owBackup.push({ adUnitIndex: '' + i, adUnitId: slotConfigs[i].code, bidData: { kvp: {} }, code: slotConfigs[i].placement, divId: slotConfigs[i].placement, }); } results.ow_Bids = owBackup; } if (!results.a9_Bids) { results.a9_Bids = []; } processMupFpbValues(results.ow_Bids); processRtfFpbValues(results.ow_Bids, results.a9_Bids, allSlotConfigs, window.adlerData.shouldSetLoki); PWT.addKeyValuePairsToGPTSlots(results.ow_Bids); googletag.display(slotConfig.placement); googletag.pubads().refresh([slot]); } } var slotConfig = lazySlotConfigs.find( (function(config) { return config.placement === event.detail; }) ); if (slotConfig && googletag) { var apstagSlot = (function formatApstagSlot(slot) { var slots = [{ slotID: slot.placement, sizes: slot.sizes }]; return slots; })(slotConfig); googletag.cmd.push(function() { googletag.destroySlots([adSlots.slots[slotConfig.placement]]); adSlots.slots[slotConfig.placement] = null; const slot = googletag.defineSlot( slotConfig.code, slotConfig.sizes, slotConfig.placement ); if (slot) { adSlots.slots[slotConfig.placement] = slot.addService( googletag.pubads() ); Object.keys(slotConfig.targeting).forEach(function(key) { adSlots.slots[slotConfig.placement].setTargeting( key, slotConfig.targeting[key] ); }); if (typeof PWT.requestBids === 'function') { const config = PWT.generateConfForGPT([slot]); PWT.requestBids( config, function(adUnitsArray) { results.ow_Bids = adUnitsArray; results.ow_BidsReceived = true; lazyInitAdserver(slot); } ); } apstag.fetchBids( { slots: apstagSlot, timeout: 1000 }, (function(bids) { googletag.cmd.push(function() { apstag.setDisplayBids(); results.a9_Bids = bids; results.a9_BidsReceived = true; lazyInitAdserver(slot); }); }) ); } }); } }; window.addEventListener('refreshAds', refreshAds); window.addEventListener('refreshAds', function() { console.log("FIRED: refreshAds") } ); window.addEventListener('requestLazyAd', requestLazyAd); window.addEventListener('requestLazyAd', function() { console.log("FIRED: requestLazyAd") } ); var hasLazyLoaded = false; function handler(entries, observer) { for (var i = 0; i < entries.length; i++) { var entry = entries[i]; if (entry.isIntersecting && !hasLazyLoaded) { hasLazyLoaded = true; requestLazyAd(new CustomEvent('requestLazyAd', { detail: lazySlotConfigs[0].placement })); } } } setTimeout(function(){ var observer = new IntersectionObserver(handler); var hp_grammar = document.getElementById("grammar_section"); if ( hp_grammar ) { observer.observe(hp_grammar); } var further_reading = document.getElementById("further_reading_section"); if ( further_reading ) { observer.observe(further_reading); } }, 3000); </script><script>initAdsWithFailsafe(); apstagInitAndFetch();</script><script type="application/ld+json" id="search_schema"> { "@context": "https://web.archive.org/web/20210627183838/https://schema.org", "@type": "WebSite", "url": "https://web.archive.org/web/20210627183838/https://www.lexico.com/en", "potentialAction": { "@type": "SearchAction", "target": "https://web.archive.org/web/20210627183838/https://www.lexico.com/en/definition/{search_term_string}", "query-input": "required name=search_term_string" } } </script><link rel="canonical" href="https://web.archive.org/web/20210627183838/https://www.lexico.com/synonyms"/><script>// GTM (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://web.archive.org/web/20210627183838/https://www.googletagmanager.com/gtm.js?id='+i+dl;j.addEventListener('load', function() {var _ge = new CustomEvent('gtm_loaded', { bubbles: true });d.dispatchEvent(_ge);});f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-WDVJNM5'); // BING Webmaster Tools Clarity (function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src="https://web.archive.org/web/20210627183838/https://www.clarity.ms/tag/"+i;y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window, document, "clarity", "script", "4w9afsnc8y");</script><link rel="stylesheet" media="all" href="/web/20210627183838cs_/https://www.lexico.com/assets/application_monolingual-f56a1168598fdf7e7e54535aea3a1c6e15bd410aca9ac3c7b153ddb094d82e5c.css"/><!--[if lt IE 9] = javascript_include_tag 'ie'--><script src="/web/20210627183838js_/https://www.lexico.com/assets/application_monolingual-a1f2e7ce87e04c37b3e9c6d000dc98e90eeb6c1b5be845eb0846a33d7f5d8803.js"></script><link href="/web/20210627183838im_/https://www.lexico.com/apple-touch-icon.png" rel="apple-touch-icon"/><link href="/web/20210627183838im_/https://www.lexico.com/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png"/><link href="/web/20210627183838im_/https://www.lexico.com/icon-192x192.png" rel="icon" sizes="192x192" type="image/png"/><link href="/web/20210627183838im_/https://www.lexico.com/icon-256x256.png" rel="icon" sizes="256x256" type="image/png"/><link href="/web/20210627183838im_/https://www.lexico.com/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png"/><link href="/web/20210627183838im_/https://www.lexico.com/favicon.ico?v2" rel="shortcut icon"/><link href="/web/20210627183838/https://www.lexico.com/manifest.json" rel="manifest"/><link color="#50b46c" href="/web/20210627183838im_/https://www.lexico.com/safari-pinned-tab.svg" rel="mask-icon"/><meta content="#50b46c" name="msapplication-TileColor"/><meta content="/mstile-144x144.png" name="msapplication-TileImage"/><meta content="#50b46c" name="theme-color"/><meta name="csrf-param" content="authenticity_token"/> <meta name="csrf-token" content="qn6lmu6Hk7yFoIkW/vA6RrGEA7ELqNM3GmniuDkjxQQPQEbUMKutuO5E2sm/vtzZ5QmcFP2IHIcwK7mjkkUjbA=="/><script>var controller = "pages"; var action = "home"; var csite = "EN"; var page_category = "";</script><!--OneTrust Cookies Consent Notice start--><script src="https://web.archive.org/web/20210627183838js_/https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="102ab651-9f24-4508-8f31-aed4a903e146"></script><script defer="" src="https://web.archive.org/web/20210627183838js_/https://cdn.cookielaw.org/opt-out/otCCPAiab.js" type="text/javascript" charset="UTF-8" ccpa-opt-out-ids="C0002,C0004" ccpa-opt-out-geo="us" ccpa-opt-out-lspa="false"></script><script>function OptanonWrapper() {}</script><!--OneTrust Cookies Consent Notice end--></head><body class="controller__pages action__home dictionary__odo partition_ dictionary__en " lang="en" id="homePage"><noscript><iframe src="https://web.archive.org/web/20210627183838if_/https://www.googletagmanager.com/ns.html?id=GTM-WDVJNM5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><div id="wrapper"><header id="header"><div class="bg close transition"></div><div class="topHeader"><div class="container full"><div class="headerContent"><a class="logo" href="/web/20210627183838/https://www.lexico.com/"><img src="/web/20210627183838im_/https://www.lexico.com/assets/oup/logos/svg/lexico-logo-new-b9f707cb98e4c645833379725ea1e859c34b4668104de80dbafdf872cabaccb4.svg" alt="Lexico logo"/></a></div><nav class="nav"><ul><li><a data-behaviour="ga-event-menu" data-value="ENGLISH DICTIONARY" href="/web/20210627183838/https://www.lexico.com/">ENGLISH DICTIONARY</a></li><li><a class="active" data-behaviour="ga-event-menu" data-value="SYNONYMS" href="/web/20210627183838/https://www.lexico.com/synonyms">SYNONYMS</a></li><li><a class="not-active" data-behaviour="ga-event-menu" data-value="TRANSLATE" href="/web/20210627183838/https://www.lexico.com/translate">TRANSLATE</a></li><li class="drop mob not-active"><span><a class="not-active" data-behaviour="ga-event-menu" data-value="GRAMMAR " href="/web/20210627183838/https://www.lexico.com/grammar">GRAMMAR </a></span><ul><li><a class="not-active" data-behaviour="ga-event-menu" data-value="GRAMMAR - GRAMMAR A-Z " href="/web/20210627183838/https://www.lexico.com/grammar/grammar-a-z">GRAMMAR A-Z </a></li><li><a class="not-active" data-behaviour="ga-event-menu" data-value="GRAMMAR - SPELLING " href="/web/20210627183838/https://www.lexico.com/grammar/spelling">SPELLING </a></li><li><a class="not-active" data-behaviour="ga-event-menu" data-value="GRAMMAR - PUNCTUATION " href="/web/20210627183838/https://www.lexico.com/grammar/punctuation">PUNCTUATION </a></li><li><a class="not-active" data-behaviour="ga-event-menu" data-value="GRAMMAR - WRITING TIPS " href="/web/20210627183838/https://www.lexico.com/grammar/writing-help">WRITING TIPS </a></li><li><a class="not-active" data-behaviour="ga-event-menu" data-value="GRAMMAR - USAGE " href="/web/20210627183838/https://www.lexico.com/grammar/usage">USAGE </a></li></ul></li><li class="drop mob not-active"><span><a class="not-active" data-behaviour="ga-event-menu" data-value="EXPLORE " href="/web/20210627183838/https://www.lexico.com/explore">EXPLORE </a></span><ul><li><a class="not-active" data-behaviour="ga-event-menu" data-value="EXPLORE - WORD ORIGINS " href="/web/20210627183838/https://www.lexico.com/explore/word-origins">WORD ORIGINS </a></li><li><a class="not-active" data-behaviour="ga-event-menu" data-value="EXPLORE - LANGUAGE QUESTIONS " href="/web/20210627183838/https://www.lexico.com/explore/language-questions">LANGUAGE QUESTIONS </a></li><li><a class="not-active" data-behaviour="ga-event-menu" data-value="EXPLORE - WORD LISTS" href="/web/20210627183838/https://www.lexico.com/explore/word-lists">WORD LISTS</a></li></ul></li><li class="mob"><a class="not-active" data-behaviour="ga-event-menu" data-value="SPANISH DICTIONARY" href="/web/20210627183838/https://www.lexico.com/es">SPANISH DICTIONARY</a></li><li class="drop more"><span>More</span><ul><li class="drop mob not-active"><span><a class="not-active" data-behaviour="ga-event-menu" data-value="GRAMMAR " href="/web/20210627183838/https://www.lexico.com/grammar">GRAMMAR </a></span><ul><li><a class="not-active" data-behaviour="ga-event-menu" data-value="GRAMMAR - GRAMMAR A-Z " href="/web/20210627183838/https://www.lexico.com/grammar/grammar-a-z">GRAMMAR A-Z </a></li><li><a class="not-active" data-behaviour="ga-event-menu" data-value="GRAMMAR - SPELLING " href="/web/20210627183838/https://www.lexico.com/grammar/spelling">SPELLING </a></li><li><a class="not-active" data-behaviour="ga-event-menu" data-value="GRAMMAR - PUNCTUATION " href="/web/20210627183838/https://www.lexico.com/grammar/punctuation">PUNCTUATION </a></li><li><a class="not-active" data-behaviour="ga-event-menu" data-value="GRAMMAR - WRITING TIPS " href="/web/20210627183838/https://www.lexico.com/grammar/writing-help">WRITING TIPS </a></li><li><a class="not-active" data-behaviour="ga-event-menu" data-value="GRAMMAR - USAGE " href="/web/20210627183838/https://www.lexico.com/grammar/usage">USAGE </a></li></ul></li><li class="drop mob not-active"><span><a class="not-active" data-behaviour="ga-event-menu" data-value="EXPLORE " href="/web/20210627183838/https://www.lexico.com/explore">EXPLORE </a></span><ul><li><a class="not-active" data-behaviour="ga-event-menu" data-value="EXPLORE - WORD ORIGINS " href="/web/20210627183838/https://www.lexico.com/explore/word-origins">WORD ORIGINS </a></li><li><a class="not-active" data-behaviour="ga-event-menu" data-value="EXPLORE - LANGUAGE QUESTIONS " href="/web/20210627183838/https://www.lexico.com/explore/language-questions">LANGUAGE QUESTIONS </a></li><li><a class="not-active" data-behaviour="ga-event-menu" data-value="EXPLORE - WORD LISTS" href="/web/20210627183838/https://www.lexico.com/explore/word-lists">WORD LISTS</a></li></ul></li><li class="mob"><a class="not-active" data-behaviour="ga-event-menu" data-value="SPANISH DICTIONARY" href="/web/20210627183838/https://www.lexico.com/es">SPANISH DICTIONARY</a></li></ul></li></ul></nav><nav class="nav right" lang="en"><ul><li class="drop"><span>Site language</span><ul class="language_selector"><li><a rel="nofollow" href="/web/20210627183838/https://www.lexico.com/synonyms?locale=en">English</a></li><li><a rel="nofollow" href="/web/20210627183838/https://www.lexico.com/synonyms?locale=es">español</a></li></ul></li></ul></nav></div><span class="close"><svg enable-background="new -33 14 19.1 19.1" height="19" viewbox="-33 14 19.1 19.1" width="19" xmlns="http://www.w3.org/2000/svg"><path d="m-13.9 16.1l-2.1-2.1-7.4 7.4-7.5-7.4-2.1 2.1 7.4 7.5-7.4 7.4 2.1 2.1 7.5-7.4 7.4 7.4 2.1-2.1-7.4-7.4z" fill="#fff"/></svg></span></div><div class="mainHeader"><div class="container"><div class="headerContent"><a class="logo" href="/web/20210627183838/https://www.lexico.com/" data-behaviour="ga-event" data-value="Homepage anchor image"><img src="/web/20210627183838im_/https://www.lexico.com/assets/oup/logos/svg/lexico-logo-new-b9f707cb98e4c645833379725ea1e859c34b4668104de80dbafdf872cabaccb4.svg" alt="Lexico logo"/></a><div class="searchField"><h1>Oxford English Synonyms &amp; Antonyms</h1><div class="beforeSearch"></div><div class="searchMain" data-locale="en"><form class="search" action="/web/20210627183838/https://www.lexico.com/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓"/><select name="filter" id="filter" class="dictionary" data-ga-language-indicator="EN"><option value="en_dictionary">UK Dictionary</option> <option value="noad">US Dictionary</option> <option selected="selected" value="thesaurus">Synonyms</option> <option value="en_grammar">English Grammar</option> <option value="es_dictionary">Spanish</option> <option value="to_english">Spanish - English</option> <option value="from_english">English - Spanish</option> <option value="es_grammar">Spanish Grammar</option></select><fieldset><input type="hidden" name="dictionary" id="dictionary" value="en"/><input type="hidden" name="s" id="s" value="t"/><label class="sr-only" for="query">Search</label><input type="text" name="query" id="query" placeholder="Type word or phrase" autocomplete="off" maxlength="100" autocapitalize="none" class="autocomplete"/><div class="keyboard kBoxContent" data-behaviour="ga-event-search-scope" data-value="character keyboard"><svg enable-background="new 0 0 28 16.7" height="17" viewbox="0 0 28 16.7" width="28" xmlns="http://www.w3.org/2000/svg"><path d="m26.5 0h-25c-.8 0-1.5.6-1.5 1.4v13.9c0 .8.7 1.4 1.5 1.4h25.1c.8 0 1.5-.6 1.5-1.4v-13.9c-.1-.8-.8-1.4-1.6-1.4m-10.1 2.8h2.9v2.8h-2.9v-2.8m4.3 4.1v2.8h-2.9v-2.8h2.9m-8.7-4.1h2.9v2.8h-2.9v-2.8m4.4 4.1v2.8h-2.9v-2.8h2.9m-8.8-4.1h2.9v2.8h-2.9v-2.8m4.4 4.1v2.8h-2.9v-2.8h2.9m-9-4.1h3.2v2.8h-3.2v-2.8m0 4.1h4.6v2.8h-4.6v-2.8m3.2 7h-3.2v-2.8h3.1v2.8zm13.1 0h-11.7v-2.8h11.6v2.8zm5.8 0h-4.4v-2.8h4.4v2.8m0-4.2h-2.9v-2.8h2.9v2.8m0-4.1h-4.4v-2.8h4.4v2.8" fill="#999"/></svg> <svg enable-background="new 0 0 14 7" height="7" viewbox="0 0 14 7" width="14" xmlns="http://www.w3.org/2000/svg"><path d="M7 4.4 2.6 0 0 0 6.1 6.1 7 7 7.9 6.1 14 0 11.4 0z" fill="#989898"/></svg></div><button type="submit" data-behaviour="ga-event-search-scope" data-value="Launch search" aria-label="Launch search"><svg enable-background="new 0 0 22 22" height="30" viewbox="-0.5 -0.5 22 22" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m21.8 19.6l-4.5-4.5c2.7-3.7 2.3-8.9-1-12.3-3.7-3.7-9.8-3.7-13.5 0-3.7 3.7-3.7 9.7 0 13.5 3.4 3.4 8.6 3.7 12.3 1l4.5 4.5c.4.4 1 .3 1.5-.2l.5-.5c.5-.5.5-1.1.2-1.5m-7.6-5.3c-2.6 2.6-6.8 2.6-9.4 0-2.6-2.6-2.6-6.8 0-9.4 2.6-2.6 6.8-2.6 9.4 0 2.5 2.6 2.5 6.8 0 9.4" fill="#f77941"/></svg></button><div class="autocompleteBox"></div><div class="keyboardBox"><div class="kBoxContent"><ul><li><span>à</span></li><li><span>á</span></li><li><span>â</span></li><li><span>ä</span></li><li><span>ã</span></li><li><span>ă</span></li><li><span>ā</span></li><li><span>ç</span></li><li><span>č</span></li><li><span>è</span></li><li><span>é</span></li><li><span>ê</span></li><li><span>ë</span></li><li><span>ē</span></li><li><span>ģ</span></li><li><span>ì</span></li><li><span>í</span></li><li><span>î</span></li><li><span>ï</span></li><li><span>ī</span></li><li><span>ķ</span></li><li><span>ļ</span></li><li><span>ñ</span></li><li><span>ň</span></li><li><span>ņ</span></li><li><span>ò</span></li><li><span>ó</span></li><li><span>ô</span></li><li><span>ö</span></li><li><span>õ</span></li><li><span>ş</span></li><li><span>š</span></li><li><span>ţ</span></li><li><span>ù</span></li><li><span>ú</span></li><li><span>û</span></li><li><span>ü</span></li><li><span>ū</span></li><li><span>ý</span></li><li><span>ž</span></li><li><span>æ</span></li><li><span>œ</span></li><li><span>ß</span></li></ul><i class="upper"><svg enable-background="new 0 0 16.8 16" height="16" viewbox="0 0 16.8 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m8.4 0l-8.4 8.4h5.1v7.6h6.6v-7.6h5.1z" fill="#2a2a2a"/></svg></i></div></div></fieldset></form></div></div></div><div class="burger"><img src="/web/20210627183838im_/https://www.lexico.com/assets/oup/svg/hamburger-menu-594799c23e03196ed910c5798976a15b1779b55f9c9824608c69cf0ff6191ee8.svg" height="18" width="28" alt="menu"/><span>menu</span></div></div></div></header><div id="main"><div class="errors__container headerHead"></div><div id="content"><div class="greybox banbox mobile_banner"><div class="container"><div class="banner adUnit"><div id="lexi_home_dkt_atf_728x90_1"></div><div id="lexi_home_mweb_atf_320x50_1"></div></div></div></div><div><div class="container full"><div class="news layout"><section class="mainNews"><a href="/web/20210627183838/https://www.lexico.com/es/grammar/writing-letters-in-spanish" data-behaviour="ga-event" data-value="Region 1 - lead image"><div class="box-img tablet-short" data-ratiox="2.35" data-ratioy="1"><img src="https://web.archive.org/web/20210627183838im_/https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7192/original/writing-letters-in-spanish.jpg"/></div><h3>Learning Spanish? Read These Tips For Writing Emails And Letters</h3></a></section><section><a href="/web/20210627183838/https://www.lexico.com/es/grammar/difficulties-in-spanish" data-behaviour="ga-event" data-value="Region 1 - top image"><div class="box-img" data-ratiox="16" data-ratioy="9.5"><img src="https://web.archive.org/web/20210627183838im_/https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7329/medium/difficulties-in-spanish-min.jpg"/></div><article><h2>Learn Spanish</h2><h3>These Are The Most Notorious Difficulties Of The Spanish Language</h3></article></a></section><section><a href="/web/20210627183838/https://www.lexico.com/es/grammar/spanish-grammar-notes-for-english-speakers-landing-page" data-behaviour="ga-event" data-value="Region 1 - middle image"><div class="box-img" data-ratiox="16" data-ratioy="9.5"><img src="https://web.archive.org/web/20210627183838im_/https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7142/medium/about-the-spanish-language.jpg"/></div><article><h2>Spanish Grammar</h2><h3>Brush Up On These Spanish Grammar Notes</h3></article></a></section><section><a href="/web/20210627183838/https://www.lexico.com/es/grammar/spanish-expressions" data-behaviour="ga-event" data-value="Region 1 - bottom image"><div class="box-img" data-ratiox="16" data-ratioy="9.5"><img src="https://web.archive.org/web/20210627183838im_/https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7275/medium/what-is-a-dialect.jpg"/></div><article><h2>Spanish Phrases</h2><h3>Try Out These Useful Spanish Expressions</h3></article></a></section></div></div></div><div class="violbox"><div class="container full"><div class="words layout"><div class="trend" lang="en"><section class="boxSizing"><h2><span class="trending trending-icon">Trending Words</span></h2><div class="popular"><p><span>Most popular in the world</span></p></div><ol class="words_section"><li><a data-behaviour="ga-event-trending-words" data-value="word 1" href="/web/20210627183838/https://www.lexico.com/definition/hog_constable">hog constable</a></li><li><a data-behaviour="ga-event-trending-words" data-value="word 2" href="/web/20210627183838/https://www.lexico.com/definition/curvet">curvet</a></li><li><a data-behaviour="ga-event-trending-words" data-value="word 3" href="/web/20210627183838/https://www.lexico.com/definition/cosmic_irony">cosmic irony</a></li><li><a data-behaviour="ga-event-trending-words" data-value="word 4" href="/web/20210627183838/https://www.lexico.com/definition/ar">Ar</a></li><li><a data-behaviour="ga-event-trending-words" data-value="word 5" href="/web/20210627183838/https://www.lexico.com/definition/question_and_answer">question and answer</a></li></ol></section></div><div class="dayword"><section><div class="daywordmain"><h2 class="boxSizing">Word of the day</h2><div class="word_spacer"></div><div><div><strong><a class="linkword" id="1dad1e89-9dbd-4fbf-9a06-3afb04e5830c" href="/web/20210627183838/https://www.lexico.com/definition/shove_up" data-behaviour="ga-event-wotd" data-value="Word">shove up</a></strong><p class="word_type pos">phrasal verb</p></div></div><div class="cta"><a id="1dad1e89-9dbd-4fbf-9a06-3afb04e5830c" href="/web/20210627183838/https://www.lexico.com/definition/shove_up" data-behaviour="ga-event-wotd" data-value="Word">See definitions &amp; examples</a></div></div></section></div><div class="banbox-mini"><div class="adUnit banner "><div id="lexi_home_dkt_btf_300x250_10"><script>googletag.cmd.push(function() { googletag.display("lexi_home_dkt_btf_300x250_10"); });</script></div><div id="lexi_home_mweb_btf_300x250_10"><script>googletag.cmd.push(function() { googletag.display("lexi_home_mweb_btf_300x250_10"); });</script></div></div></div></div></div></div><div><div class="container full"><h1 class="title"><span>Explore Grammar Content from Oxford Dictionary</span></h1><div class="posts layout"><section class="mainPost"><a href="/web/20210627183838/https://www.lexico.com/explore/what-is-the-longest-english-word" data-behaviour="ga-event" data-value="Region 3 - Primary story"><div class="box-img" data-ratiox="16" data-ratioy="9.5"><img alt="https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7314/original/literary-words-you%27ll-want-to-know-min.jpg" data-src="https://web.archive.org/web/20210627183838/https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7314/original/literary-words-you%27ll-want-to-know-min.jpg" class="lazy" src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="/></div><article><h2><span>LANGUAGE QUESTIONS</span></h2><h3>What Is The Longest English Word?</h3><p></p></article></a></section><section><a href="/web/20210627183838/https://www.lexico.com/explore/how-many-words-begin-with-x" data-behaviour="ga-event" data-value="Region 3 - Story 2"><div class="box-img" data-ratiox="16" data-ratioy="9.5"><img alt="https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7135/medium/words-beginning-with-x.jpg" data-src="https://web.archive.org/web/20210627183838/https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7135/medium/words-beginning-with-x.jpg" class="lazy" src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="/></div><article><h2><span>Language Questions</span></h2><h3>How Many Words Begin With The Letter &#39;X&#39;?</h3></article></a></section><section><a href="https://web.archive.org/web/20210627183838/https://www.lexico.com/explore/shall-or-will" data-behaviour="ga-event" data-value="Region 3 - Story 3"><div class="box-img" data-ratiox="16" data-ratioy="9.5"><img alt="https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7261/medium/shall-or-will.jpg" data-src="https://web.archive.org/web/20210627183838/https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7261/medium/shall-or-will.jpg" class="lazy" src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="/></div><article><h2><span>Confused Words</span></h2><h3>When To Use The Words &#39;Shall&#39; and &#39;Will&#39;</h3></article></a></section><section><a href="/web/20210627183838/https://www.lexico.com/explore/what-is-the-origin-of-the-word-ok" data-behaviour="ga-event" data-value="Region 3 - Story 4"><div class="box-img" data-ratiox="16" data-ratioy="9.5"><img alt="https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7284/medium/what-is-origin-of-word-ok.jpg" data-src="https://web.archive.org/web/20210627183838/https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7284/medium/what-is-origin-of-word-ok.jpg" class="lazy" src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="/></div><article><h2><span>Word Origins</span></h2><h3>What Is The Origin Of The Word &#39;Ok&#39;?</h3></article></a></section><section><a href="/web/20210627183838/https://www.lexico.com/explore/foreign-words-and-phrases" data-behaviour="ga-event" data-value="Region 3 - Story 5"><div class="box-img" data-ratiox="16" data-ratioy="9.5"><img alt="https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7131/medium/foreign-words-and-phrases-now-used-in-english.jpg" data-src="https://web.archive.org/web/20210627183838/https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7131/medium/foreign-words-and-phrases-now-used-in-english.jpg" class="lazy" src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="/></div><article><h2><span>WORD LISTS</span></h2><h3>Foreign Words And Phrases Now Used In English</h3></article></a></section></div></div></div><div class="violbox h-box" id="grammar_section"><div class="container full"><h1 class="title"><span>Quizzes &amp; Games</span></h1><div class="quizzes layout"><div class="quizze"><section><div class="quiz-panel" id="quiz_120"><div class="quizTitle">Test Your Spanish</div><form class="simple_form new_quiz_response" id="new_quiz_response" action="/web/20210627183838/https://www.lexico.com/quiz_responses" accept-charset="UTF-8" data-remote="true" method="post"><input name="utf8" type="hidden" value="✓"/><input type="hidden" name="quiz_id" id="quiz_id" value="120"/><div class="questions"><div class="question first current"><p class="question-text">What is the English term for <i>asignatura</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7707" value="7707"/><label class="option_text" for="quiz_option_id_7707">subject</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7708" value="7708"/><label class="option_text" for="quiz_option_id_7708">assignment</label></li></ul></div><div class="question"><p class="question-text">What is the English term for <i>secretario</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7730" value="7730"/><label class="option_text" for="quiz_option_id_7730">secretariat</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7729" value="7729"/><label class="option_text" for="quiz_option_id_7729">secretary</label></li></ul></div><div class="question"><p class="question-text">What is the Spanish term for <i>composition</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7685" value="7685"/><label class="option_text" for="quiz_option_id_7685">redacción</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7686" value="7686"/><label class="option_text" for="quiz_option_id_7686">compuesto</label></li></ul></div><div class="question"><p class="question-text">What is the English term for <i>uniforme</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7734" value="7734"/><label class="option_text" for="quiz_option_id_7734">uniformity</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7733" value="7733"/><label class="option_text" for="quiz_option_id_7733">uniform</label></li></ul></div><div class="question"><p class="question-text">What is the Spanish term for <i>physics</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7696" value="7696"/><label class="option_text" for="quiz_option_id_7696">físico</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7695" value="7695"/><label class="option_text" for="quiz_option_id_7695">física</label></li></ul></div><div class="question"><p class="question-text">What is the Spanish term for <i>board</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7677" value="7677"/><label class="option_text" for="quiz_option_id_7677">pizarra</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7678" value="7678"/><label class="option_text" for="quiz_option_id_7678">aburrido</label></li></ul></div><div class="question"><p class="question-text">What is the English term for <i>pupitre</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7727" value="7727"/><label class="option_text" for="quiz_option_id_7727">desk</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7728" value="7728"/><label class="option_text" for="quiz_option_id_7728">pupil</label></li></ul></div><div class="question"><p class="question-text">What is the English term for <i>alumno</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7705" value="7705"/><label class="option_text" for="quiz_option_id_7705">pupil</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7706" value="7706"/><label class="option_text" for="quiz_option_id_7706">people</label></li></ul></div><div class="question"><p class="question-text">What is the English term for <i>internado</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7721" value="7721"/><label class="option_text" for="quiz_option_id_7721">boarding school</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7722" value="7722"/><label class="option_text" for="quiz_option_id_7722">internment</label></li></ul></div><div class="question"><p class="question-text">What is the Spanish term for <i>calculator</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7680" value="7680"/><label class="option_text" for="quiz_option_id_7680">cálculo</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_7679" value="7679"/><label class="option_text" for="quiz_option_id_7679">calculadora</label></li></ul></div><div class="question last"><h3 class="score-message">You scored <span class="final-score"></span>/10 practise again?</h3><button class="retry-quiz">Retry</button></div></div></form><button name="button" type="button" data-behaviour="ga-event-quiz" data-value="next question" class="next-question" html="{:disabled=>&quot;disabled&quot;}">Next</button><div class="score-counter"><span class="current-score">0</span>/10</div></div></section></div><div class="quizze"><section><div class="quiz-panel" id="quiz_97"><div class="quizTitle">Rhyming Slang</div><form class="simple_form new_quiz_response" id="new_quiz_response" action="/web/20210627183838/https://www.lexico.com/quiz_responses" accept-charset="UTF-8" data-remote="true" method="post"><input name="utf8" type="hidden" value="✓"/><input type="hidden" name="quiz_id" id="quiz_id" value="97"/><div class="questions"><div class="question first current"><p class="question-text">What is British rhyming slang for <i>thief</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_6006" value="6006"/><label class="option_text" for="quiz_option_id_6006">tea leaf</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_6007" value="6007"/><label class="option_text" for="quiz_option_id_6007">coral reef</label></li></ul></div><div class="question"><p class="question-text">What is British rhyming slang for <i>teeth</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_5992" value="5992"/><label class="option_text" for="quiz_option_id_5992">Hampstead Heath</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_5993" value="5993"/><label class="option_text" for="quiz_option_id_5993">Uncle Keith</label></li></ul></div><div class="question"><p class="question-text">What is British rhyming slang for <i>tea</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_6005" value="6005"/><label class="option_text" for="quiz_option_id_6005">garden pea</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_6004" value="6004"/><label class="option_text" for="quiz_option_id_6004">Rosy Lee</label></li></ul></div><div class="question"><p class="question-text">What is British rhyming slang for <i>pinch</i> (as in steal)?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_5996" value="5996"/><label class="option_text" for="quiz_option_id_5996">half inch</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_5997" value="5997"/><label class="option_text" for="quiz_option_id_5997">oil winch</label></li></ul></div><div class="question"><p class="question-text">What is British rhyming slang for <i>alone</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_5983" value="5983"/><label class="option_text" for="quiz_option_id_5983">Norma Jones</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_5982" value="5982"/><label class="option_text" for="quiz_option_id_5982">Jack Jones</label></li></ul></div><div class="question"><p class="question-text">What is British rhyming slang for <i>head</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_5968" value="5968"/><label class="option_text" for="quiz_option_id_5968">loaf of bread</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_5969" value="5969"/><label class="option_text" for="quiz_option_id_5969">ruby red</label></li></ul></div><div class="question"><p class="question-text">What is British rhyming slang for <i>dead</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_6014" value="6014"/><label class="option_text" for="quiz_option_id_6014">brown bread</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_6015" value="6015"/><label class="option_text" for="quiz_option_id_6015">big shed</label></li></ul></div><div class="question"><p class="question-text">What is British rhyming slang for <i>talk</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_6000" value="6000"/><label class="option_text" for="quiz_option_id_6000">rabbit and pork</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_6001" value="6001"/><label class="option_text" for="quiz_option_id_6001">knife and fork</label></li></ul></div><div class="question"><p class="question-text">What is British rhyming slang for <i>road</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_5981" value="5981"/><label class="option_text" for="quiz_option_id_5981">metal load</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_5980" value="5980"/><label class="option_text" for="quiz_option_id_5980">frog and toad</label></li></ul></div><div class="question"><p class="question-text">What is British rhyming slang for <i>mouth</i>?</p><ul class="options"><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_5970" value="5970"/><label class="option_text" for="quiz_option_id_5970">north and south</label></li><li class="radio question_option" data-behaviour="ga-event-quiz" data-value="clicks"><input type="radio" name="quiz_option_id" id="quiz_option_id_5971" value="5971"/><label class="option_text" for="quiz_option_id_5971">Old South</label></li></ul></div><div class="question last"><h3 class="score-message">You scored <span class="final-score"></span>/10 practise again?</h3><button class="retry-quiz">Retry</button></div></div></form><button name="button" type="button" data-behaviour="ga-event-quiz" data-value="next question" class="next-question" html="{:disabled=>&quot;disabled&quot;}">Next</button><div class="score-counter"><span class="current-score">0</span>/10</div></div></section></div><div class="banbox-mini"><div class="adUnit banner "><div id="lexi_home_dkt_atf_300x250_20"><script>googletag.cmd.push(function() { googletag.display("lexi_home_dkt_atf_300x250_20"); });</script></div><div id="lexi_home_mweb_btf_300x250_20"><script>googletag.cmd.push(function() { googletag.display("lexi_home_mweb_btf_300x250_20"); });</script></div></div></div></div></div></div><div class="faces"><div class="faces-pic"></div><div><div class="halfcontainer"><section><h1>Hola Hispanohablantes!</h1><p>Explore our Spanish Dictionary and Translation Tools for Spanish to English and English to Spanish</p><a href="/web/20210627183838/https://www.lexico.com/es" data-behaviour="ga-event" data-value="Region community link">Find Out More</a></section></div></div></div><div class="violbox"><div class="container full"><div class="quotes layout"><div class="quote"><div class="quotewrap boxSizing"><i><svg enable-background="new 0 0 21.4 13" height="16" viewbox="0 0 21.4 13" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M4.2,0h5.5L8.3,13H0L4.2,0z M15.9,0h5.5L20,13h-8.3L15.9,0z" fill="#006059"/></svg></i><h3>Spanish Quote Of The Month </h3><div class="quotemain"><p>“Todos nuestros sueños se pueden hacer realidad si tenemos el coraje de perseguirlos.”</p></div><span class="auth">Walt Disney</span></div></div><div class="blogbox"><section><a href="/web/20210627183838/https://www.lexico.com/es/grammar/spanish-expressions" data-behaviour="ga-event" data-value="Region 7 - story 1"><div class="box-img mobile-short" data-ratiox="2.35" data-ratioy="1"><img alt="https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7147/original/effective-spanish.jpg" data-src="https://web.archive.org/web/20210627183838/https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7147/original/effective-spanish.jpg" class="lazy" src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="/></div><article><h2>EXPLORING SPANISH</h2><h3>Try These Useful Spanish Expressions In Your Next Conversation</h3></article></a></section></div></div></div></div><div class="h-box"><div class="container full"><h1 class="title"><span>Grammar Help from Oxford Dictionary</span></h1><div class="videos"><ul><li><a href="/web/20210627183838/https://www.lexico.com/grammar/key-to-pronunciation" data-behaviour="ga-event" data-value="Region 8 - story 1"><div class="box-img" data-ratiox="16" data-ratioy="9.5"><img alt="https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7235/medium/how-to-use-word-like.jpg" data-src="https://web.archive.org/web/20210627183838/https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7235/medium/how-to-use-word-like.jpg" class="lazy" src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="/></div><h2>Learn How To Pronounce These English Words Correctly</h2></a></li><li><a href="/web/20210627183838/https://www.lexico.com/grammar/compare-with-or-compare-to" data-behaviour="ga-event" data-value="Region 8 - story 2"><div class="box-img" data-ratiox="16" data-ratioy="9.5"><img alt="https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7207/medium/compare-with-or-compare-to.jpg" data-src="https://web.archive.org/web/20210627183838/https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7207/medium/compare-with-or-compare-to.jpg" class="lazy" src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="/></div><h2>Which Is Correct: &#39;Compare With&quot; Or &quot;Compare To&quot;?</h2></a></li><li><a href="/web/20210627183838/https://www.lexico.com/grammar/common-misspellings" data-behaviour="ga-event" data-value="Region 8 - story 3"><div class="box-img" data-ratiox="16" data-ratioy="9.5"><img alt="https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7250/medium/most-common-misspellings.jpg" data-src="https://web.archive.org/web/20210627183838/https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7250/medium/most-common-misspellings.jpg" class="lazy" src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="/></div><h2>Have You Ever Spelled These Words Incorrectly?</h2></a></li><li><a href="/web/20210627183838/https://www.lexico.com/grammar/learnt-vs-learned" data-behaviour="ga-event" data-value="Region 8 - story 4"><div class="box-img" data-ratiox="16" data-ratioy="9.5"><img alt="https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7245/medium/learnt-or-learned.jpg" data-src="https://web.archive.org/web/20210627183838/https://s3.amazonaws.com/lexico.useremarkable.com/production/images/uploads/7245/medium/learnt-or-learned.jpg" class="lazy" src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="/></div><h2>Learnt&#39; vs. &#39;Learned&#39;: Is There A Difference?</h2></a></li></ul></div></div></div></div></div><a id="feedbackTab" title="Tell us your opinion!" href="https://web.archive.org/web/20210627183838/https://www.surveymonkey.com/r/D293BWP" target="_blank" rel="noopener">Feedback</a><footer id="footer"><div class="container"><div class="footerWrap"><div class="footer-sitemap"><ul id="footer-horizontal-list"><span class="sitemap-title">Browse The English Dictionary: </span><li><a href="/web/20210627183838/https://www.lexico.com/list/0">#</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/a">a</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/b">b</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/c">c</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/d">d</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/e">e</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/f">f</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/g">g</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/h">h</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/i">i</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/j">j</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/k">k</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/l">l</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/m">m</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/n">n</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/o">o</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/p">p</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/q">q</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/r">r</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/s">s</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/t">t</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/u">u</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/v">v</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/w">w</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/x">x</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/y">y</a></li><li><a href="/web/20210627183838/https://www.lexico.com/list/z">z</a></li></ul></div><div class="footerNav" lang="en"><nav class="inlineBlock"><p>Find out More</p><ul><li><a data-behaviour="ga-event-footer" target="" data-value="About" href="/web/20210627183838/https://www.lexico.com/about">About</a></li><li><a data-behaviour="ga-event-footer" target="" data-value="Contact Us" href="/web/20210627183838/https://www.lexico.com/contact-us">Contact Us</a></li><li><a data-behaviour="ga-event-footer" target="" data-value="Privacy Policy" href="/web/20210627183838/https://www.lexico.com/cookies-terms-privacy">Privacy Policy</a></li><li><button name="button" type="submit" class="ot-sdk-show-settings">Do Not Sell My Info</button></li></ul></nav><nav class="inlineBlock"><p>Dictionary &amp; Synonyms</p><ul><li><a data-behaviour="ga-event-footer" target="" data-value="UK English Dictionary" href="/web/20210627183838/https://www.lexico.com/uk-english">UK English Dictionary</a></li><li><a data-behaviour="ga-event-footer" target="" data-value="US English Dictionary" href="/web/20210627183838/https://www.lexico.com/us-english">US English Dictionary</a></li><li><a data-behaviour="ga-event-footer" target="" data-value="Spanish Dictionary" href="/web/20210627183838/https://www.lexico.com/es/spanish">Spanish Dictionary</a></li><li><a data-behaviour="ga-event-footer" target="" data-value="English Synonyms" href="/web/20210627183838/https://www.lexico.com/english-synonyms">English Synonyms</a></li></ul></nav><nav class="inlineBlock"><p>Translations</p><ul><li><a data-behaviour="ga-event-footer" target="" data-value="Spanish to English" href="/web/20210627183838/https://www.lexico.com/es/spanish-english">Spanish to English</a></li><li><a data-behaviour="ga-event-footer" target="" data-value="English to Spanish" href="/web/20210627183838/https://www.lexico.com/es/english-spanish">English to Spanish</a></li></ul></nav><nav class="inlineBlock"><p>Explore</p><ul><li><a data-behaviour="ga-event-footer" target="" data-value="Articles" href="/web/20210627183838/https://www.lexico.com/explore">Articles</a></li></ul></nav></div><p class="copyright">&copy; 2021 Lexico.com</p></div></div></footer></div><div id="autocompleteWrap"></div><script>$(document).ready(function () { App.init(); App.initCore(); initOdoPage(); ahoy.trackView(); ahoy.trackClicks(); initAutocompleteSearch(); autoHighlightSearchTerm(); showMobileSelector(); registerGAEvents(); $('body').resize(); initQuiz(); }); registerListener('load', setLazy); registerListener('load', lazyLoad); registerListener('scroll', lazyLoad); var lazy = []; function setLazy(){ lazy = document.getElementsByClassName('lazy'); } function lazyLoad(){ for(var i=0; i<lazy.length; i++){ if(isInViewport(lazy[i])){ if (lazy[i].getAttribute('data-src')){ lazy[i].src = lazy[i].getAttribute('data-src'); lazy[i].removeAttribute('data-src'); } } } cleanLazy(); } function cleanLazy(){ lazy = Array.prototype.filter.call(lazy, function(l){ return l.getAttribute('data-src');}); } function isInViewport(el){ var rect = el.getBoundingClientRect(); return ( rect.bottom >= 0 && rect.right >= 0 && rect.top <= (window.innerHeight || document.documentElement.clientHeight) && rect.left <= (window.innerWidth || document.documentElement.clientWidth) ); } function registerListener(event, func) { if (window.addEventListener) { window.addEventListener(event, func) } else { window.attachEvent('on' + event, func) } } // Accessibility hack for selectbox, for Lighthouse purpose only window.addEventListener('load', function () { document.querySelector('.sbToggle').innerHTML = "<span class='sr-only'>dropdown toggle</a>"; })</script><img class="daisy_tracker" src="https://web.archive.org/web/20210627183838im_/https://track.lexico.com/main.gif?ab=0&amp;cb=50598916&amp;dc=Desktop&amp;ev=p&amp;pn=lexico&amp;rf=https%3A%2F%2Fwww.lexico.com%2Fdefinition%2FWuhan&amp;st=lexico" alt="Tiny transparent pixel"/><div class="one-click-underline" data-word-highlight="true"></div></body></html><!-- FILE ARCHIVED ON 18:38:38 Jun 27, 2021 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 09:53:40 Dec 12, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.518 exclusion.robots: 0.028 exclusion.robots.policy: 0.017 esindex: 0.009 cdx.remote: 83.683 LoadShardBlock: 57.547 (3) PetaboxLoader3.datanode: 58.28 (4) load_resource: 107.28 PetaboxLoader3.resolve: 57.95 -->

Pages: 1 2 3 4 5 6 7 8 9 10