CINXE.COM

Just a moment...

<!DOCTYPE html><html lang="en-US"><head><title>Just a moment...</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge"><meta name="robots" content="noindex,nofollow"><meta name="viewport" content="width=device-width,initial-scale=1"><style>*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;max-width:60rem;padding-left:1.5rem}@media (width <= 720px){.main-content{margin-top:4rem}}.h2{font-size:1.5rem;font-weight:500;line-height:2.25rem}@media (width <= 720px){.h2{font-size:1.25rem;line-height:1.5rem}}#challenge-error-text{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0IyMEYwMyIgZD0iTTE2IDNhMTMgMTMgMCAxIDAgMTMgMTNBMTMuMDE1IDEzLjAxNSAwIDAgMCAxNiAzbTAgMjRhMTEgMTEgMCAxIDEgMTEtMTEgMTEuMDEgMTEuMDEgMCAwIDEtMTEgMTEiLz48cGF0aCBmaWxsPSIjQjIwRjAzIiBkPSJNMTcuMDM4IDE4LjYxNUgxNC44N0wxNC41NjMgOS41aDIuNzgzem0tMS4wODQgMS40MjdxLjY2IDAgMS4wNTcuMzg4LjQwNy4zODkuNDA3Ljk5NCAwIC41OTYtLjQwNy45ODQtLjM5Ny4zOS0xLjA1Ny4zODktLjY1IDAtMS4wNTYtLjM4OS0uMzk4LS4zODktLjM5OC0uOTg0IDAtLjU5Ny4zOTgtLjk4NS40MDYtLjM5NyAxLjA1Ni0uMzk3Ii8+PC9zdmc+);background-repeat:no-repeat;background-size:contain;padding-left:34px}@media (prefers-color-scheme:dark){body{background-color:#222;color:#d9d9d9}}</style><meta http-equiv="refresh" content="390"></head><body class="no-js"><div class="main-wrapper" role="main"><div class="main-content"><noscript><div class="h2"><span id="challenge-error-text">Enable JavaScript and cookies to continue</span></div></noscript></div></div><script>(function(){window._cf_chl_opt={cvId: '3',cZone: "bookshop.org",cType: 'managed',cRay: '917ca538dc5e9e2e',cH: '3wdXJOhbiVjvD9B.aovxHQi2nbKVtx3NoVZ25nUwGQw-1740538412-1.2.1.1-xa3vs5A18or5t4sy9qVFqkkCSpQQEZcdieq6wyvj8FloK5tka4vi8kcaETtDtE5U',cUPMDTk: "\/a\/1688\/9781501142970?__cf_chl_tk=eVi5j6jOw6yQzxDvGQeD8CliGJQmYTPPG0m7roaT4E8-1740538412-1.0.1.1-dmJZwpKrr87YZCx2K9PYInMJRYlj8WumGISsltn5iA0",cFPWv: 'b',cITimeS: '1740538412',cTTimeMs: '1000',cMTimeMs: '390000',cTplC: 0,cTplV: 5,cTplB: 'cf',cK: "",fa: "\/a\/1688\/9781501142970?__cf_chl_f_tk=eVi5j6jOw6yQzxDvGQeD8CliGJQmYTPPG0m7roaT4E8-1740538412-1.0.1.1-dmJZwpKrr87YZCx2K9PYInMJRYlj8WumGISsltn5iA0",md: "bLAIygmNM1hK2SD1Remamigxmo83RyuwajQkBfkQpak-1740538412-1.2.1.1-pcxGyH4uLObNVXrqllwRxdNqAqeEeo9dbnn9WiYXtIFGd0wHyPvxt77uNPdXdvEeXS0.cBASnvnm2NS7W.X6VJiuwSOxm4x0Mhf_jjIMUZPNrSpOqopTgquss06mFOoPrqPENYFcgq_ptA5MGOrXNPGG18G_fnHdVk3Xaccaxp81QUZSQQWzkyTPFqwRk40uG_sIGDzFqG7Zoefd8Z3pzqhSd7cArRM.HiirpfdaUfA3mTAbeL3kCkrgd8wPL6mYnDbBB64YQBftxKgtB2AcGjgNOx_k5awvt0WHoJlEXvonn31quruumOtSCNHzEL5Ek_owgUHqTUViiG_BQ5Uhy.fGs9ZxV6eWl9baOO10.hCwcllwxoCTUnr3sfzr0IlBCR2ZpvhTT8_osbTHMK.f8XhJaVN8ZjoJJc.XBIfcc_FwzCBTKQ34vxcbp1Q7rxe_VfQF3n8kni8_BMlafbsdT4O__0zNMHyErveQRS5yKuSD8lQGTF4AlWpzWF2aj5lSPWk8CWPT8FPbYpQYmPYuWo9pbV2Ib4s51qS1agX0TBix8voXDxYwiiErCTmM8kJN1X4IUZx8OrzQGALd21oooNtJySFwbuK9LjbPACQGm2pUaAciGAQHVDBFT76v6YqSeAmu0IoU5pQizP2E7DrIs5XH.b6dtEbZLZhGFLUr80Qi3zC9i4Fi_b9.s1SuuiDu7Ye3VY1UorurhTxk67vG_k_W.d_hGpp.JHvQXA3jmProG5.x_2DUQLSc3FtuGsoBR4SeKGrK6CsaM30EJxf0u8NtxPcV35JU6H7PTUeVRsnkCtKOkINJgE_iwt3Kv_xK.LiwLU9r5eMQyaLhBLlD_lTrKaq6L5WXHAJ9.J2o32Tt0afOXD0.cWHL.9d3vHRV09kjRfoYcCSzsKh.3qZIqPYDg3cL.NY0Hb4U6IhayMyiUwubKsylPGVSfbjyNmiWwz4FoHkmdy6IPzdpoU64MsH1EoTLTiouA0l1WJz92qrVm_ZBROiEveZzNvDRtsUVOfzUhDHgI5fhmYjEhlv8XdaJN4SOjKEj6KEUglicYUrOcIt5aZXtuaDqVUXTjL16HRr74QSkpuC5UyUgrvlR1S7u9tJnXGWaI.v1gnJKbemyy8MCZl9buOzaxJw_Aql9YfWDZRrT8PaqAvcOu4I24wsrJlCHoIExRmdYAz2VV2jSk3NWusNS8IrFeXGxsKD1UCqyTXIlOAS6KWmU96Qqc3YYRGn7aow2D6buxcQwnfyTEv0KiB5R3YvqQL.UVfKdvLGjZeMoQ0AHeE3qk8XJLcLMgYejF7dgF1hzepTkCiCuI2e0QqlIlQfgMe6iqiHVdGhXjNMBUgl8R2Urd0h6PlAc8r0_WQMvbkds3JGsQylw1vTrZ9X95fib5ecbHKilKD1mq9UwczRrRzZWCnV9EEaT71_gIt2IrD2NVgQxU8i5RIKQyNtUdOhv3Q1n4NtTtZEfk9psScEcy_NQ08xp4_uKX4JwQXsaGfg1Q8xYfY43sfIhepO0ZqIK8s.ztARa9HRcDN_V8.38A0k9aL04ezuLjPkfr3CGaKcsGxuOfVnGrNZbkRCVICzBUABSF8f86rgQGKehjJ8xXw9Zz9Khg8eYw8acqCoINyDiW0pSvyGpuU4zonuI.HIBXcNzOyh4f48OIovSEj_D_MANa11sx8gr.ipIBgmPNx8L47kueHz.LG0bOec0VUfNm_AYO9TfFle3zVYkfRAOuglN9sa3gTJHSTQAVRiXVsjbOoAQT3.O4Un0m.smFlebNRer9mSwd51x56XM4P3ZAX7zy03C31MGvqA_1LzLoAKeMjdChStNvorCEJjsu7yBurp2LZp9JLr9wPsM29Zbk3AZwGLx_8m9NosHb3e61uLctNqedenyi4kH8FP6sRHOauYCFXEbjcG7t5GiiIEzsc96MNZpVzG7AFbmbzf6rOyo6PpGrwfwpTv56wAZdLoFFshB_Cg2HV.k1TfF4KZPWMfRtwNiiU.JOPKWZEJGoNXSaQgZyDBpjR68WUDl6a2.R4y.mJjsYz2qdgtFH6UNom_jgH4DI2F1CMj6uESH29ZpNnFgPd2sAAJd.wXUapfANXEDISukt5LznAYvzwfQQnTi5nDZdoAl._x8LKHxKei3F0rxivrMpyp1JId0RJsj_RLoFW5SzOZRmqUq4.kSqTIuDXEt0q6xWZKo1kFjQ1D2p3qnLpaUDCaST.nln.EksAtrkPHZsZbNaPxCcANrngTEpD4xyw0oX_d5aUZXONw2LMWsRZq2N.PCiXs6NX4kcITVq62iA2OrxIcbv6LHtD4dCg6Rs7F_Mh205UxyoTWYxk5DOGDCtN308VVJYLDDhPS27U93QoWKavZJ1bnC1dQA9MtkwbBly5dwzcjaduHOCtdJihZBWK9rK22HGELFILAzlTxYlYqc9p6ljnqhmFyIz0AxXQkx21Xzqu9IiQp.JVIdfF94zocKyB9jw1SK9dr5zlxFzcvzSZnKgvi.nDAkbLUmQtb6Ip9ojeJtpcdNgeDIxdQ",mdrd: "voBC.ASi5svb6PKIjz_IDCcbNxsFGMEqqijrGdxfn9A-1740538412-1.2.1.1-7y4OzfOta7lmnKCCX0IaeWqv18Oq1rl.FBQ7ydCIzWMf2qCF.R43bKxRFaxrKjxef8yRU9uwAVV4G0oR9fsr5XTQR6ju5Xiv88Z0hG0Gag.8Y5in1846bYdqZ7CO8waJMbzUktVwq4cgmZVIHdLUYqKki3DSex8GcqJgX6I9i.gTHI_CHhEny1fnyDK6KKnu_GbsTVS0trloMz1sLoWJaOBZMBEbXsdONfUPFP_PbwvmPDtC9XfmGi0SMMAr7gnZKq6kSOsaMwz3_IIU_r5lFgkQBVJN4L8gShMAmQJs7zLuhp9xgzGHG7pKSkQa4VrCFDfyh_IPVABVzJCvyXIc7xMsM5LD.VFlUSQx3IMtwHQ9OQm4NKA.1tFqBIT0EIKekDKtEYodW3_o.zDYL55qvklORaKdxsLW1RZLndBIKN2lQRivkZOgssTq1wAzP91Ipg228pHX3WUWWc5DBxxvQfCuoMt9CqQ0iqRn7_E6su0eveUPn9aZehwrqQZpUeQTBymnQP5fAQ0Iv5AJ8jrnNbxuXWwuEP9MsOwJ8Zckyuats1r2qiKnsHy7bnm.JKYbw2YjavxuQJ.5Z1b55iKoN4MYgsnH9siIv6T4Zv8bNfisCfwzkvD3AcnRUXyVXV9XCU6IHsopBcOLTQ.eK05JYgaFZfjLi7Ri9ByFQYLHZGUm8mURLYlytiMr2ihyJPr.9V9lKGzAapG0x9pqNoVuUOmjqgWwJaRL9QsBWbX6PxdlY1yTaeRm9OQUtzQoDa4tRusa4zaHCjirCP6QbOc2Ap8yeObs78iuxFtuZcUeNH12bysgYAr57eFU..vPdK.DVjENokZgdOeF_Ty_4l1bevPo3t9MFarjFyA5336bWNeMyoUaXoc6_Jq_aYaeVgfytBx.XgUaxfh_ECcpk4KeipQNyqtOia.mnTcMKecZ7GnTwZH6yKFS9Isv233Di70YuD4exTpa1ftbYlOyp7MqrM.LAgpqRipOB1DHVImvvcvaiSvRwrJu2JhYwpysya_gxai1bsH0nTwK4OceBkyCOLxJEHRxPCwbLMo6Df3jRv9Dkxshd4PHXO3RuntY8PWvRNrbd6ipd2G93LGj5nyYq6TEZ1G.QsmZybPR6j1vsC4dxb1seLT6JbtrO2Bg6qEavcq2gWL8eEnfZPRdSXOhfZppVOxh20DY0dgjwZIZK.kkjJD.k0V7vHIK3Hfz26SScLqVg6LWvEBu6r2Hj9ffUL6qn.wW7cq37IlOUCMspR9q_eeFBuIlCp799qckNUqN2CElkK4qGdn7KAFoE6.UE9GbR8qQ7nIv_Ixcl0Eg7ekVV3Lnv.wYInSD9uKia34BAwHSl2ZHifqdLn0pqWJ6Ln2jUsqQyC2wHh3K8EC4GtM0dLBx0kw9ss6PS_ExgAacoxiVRQOJT37VBucKeKjBAxzWomJrWZQO1b8bd457aZjLrfQ7YOWCJgrEhx2y.4EQZIA0UKkzYVGMpHNx2kDVDoN7O80RYKdgtwU0TASI.a.KGzwTKVdy_I8s7cXj2VafMzZJtZXyn8zcnSZ5J76zbGd2zhelZCmu7Vr65iFlEHE902UfQdjWjtCOBBwGI2TdUtmu2g2io_G3rv5qd4fZNzfJ1mDl_33guhxPp0099BU7fDpqkeEbjYx72j_JBfWJmYWtb8aIhkLfBKG0n0cTqo2iB3zdakTW0kC_D3vojtFozFCn2BpCN2.CYz7KW1RPDwRrN0S1lnliSLI2w5R9NGr6erCWbouubTDpVOI2hb.PxiQ9zi7uT.W4gYLXAHbBIpYbq1CH3lpDB.E3.6iiso8EcWY3DxplfSCH33es.oqwBXSNmTlZQOCStRWTEvwUggX05I0HbnSWMmfRocK0qRaRxtSs669qHsKmiBMVqPf.mYfvXxl.BaxZWxexQsLSoJ8Xdfp7UNNRtXApwOZMIAfRdHsHeaXlqmBoXxk986M"};var cpo = document.createElement('script');cpo.src = '/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=917ca538dc5e9e2e';window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;if (window.history && window.history.replaceState) {var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;history.replaceState(null, null, "\/a\/1688\/9781501142970?__cf_chl_rt_tk=eVi5j6jOw6yQzxDvGQeD8CliGJQmYTPPG0m7roaT4E8-1740538412-1.0.1.1-dmJZwpKrr87YZCx2K9PYInMJRYlj8WumGISsltn5iA0" + window._cf_chl_opt.cOgUHash);cpo.onload = function() {history.replaceState(null, null, ogU);}}document.getElementsByTagName('head')[0].appendChild(cpo);}());</script></body></html>