1<!DOCTYPE html> 2<html class="no-js" lang="en-US"> 3<head> 4 5 <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <link rel="profile" href="https://gmpg.org/xfn/11"> <meta http-equiv="x-ua-compatible" content="ie=edge"> 7 <!-- SpeedCurve RUM -->
8<script> 9LUX=(function(){var a=("undefined"!==typeof(LUX)&&"undefined"!==typeof(LUX.gaMarks)?LUX.gaMarks:[]);var d=("undefined"!==typeof(LUX)&&"undefined"!==typeof(LUX.gaMeasures)?LUX.gaMeasures:[]);var j="LUX_start";var k=window.performance;var l=("undefined"!==typeof(LUX)&&LUX.ns?LUX.ns:(Date.now?Date.now():+(new Date())));if(k&&k.timing&&k.timing.navigationStart){l=k.timing.navigationStart}function f(){if(k&&k.now){return k.now()}var o=Date.now?Date.now():+(new Date());return o-l}function b(n){if(k){if(k.mark){return k.mark(n)}else{if(k.webkitMark){return k.webkitMark(n)}}}a.push({name:n,entryType:"mark",startTime:f(),duration:0});return}function m(p,t,n){if("undefined"===typeof(t)&&h(j)){t=j}if(k){if(k.measure){if(t){if(n){return k.measure(p,t,n)}else{return k.measure(p,t)}}else{return k.measure(p)}}else{if(k.webkitMeasure){return k.webkitMeasure(p,t,n)}}}var r=0,o=f();if(t){var s=h(t);if(s){r=s.startTime}else{if(k&&k.timing&&k.timing[t]){r=k.timing[t]-k.timing.navigationStart}else{return}}}if(n){var q=h(n);if(q){o=q.startTime}else{if(k&&k.timing&&k.timing[n]){o=k.timing[n]-k.timing.navigationStart}else{return}}}d.push({name:p,entryType:"measure",startTime:r,duration:(o-r)});return}function h(n){return c(n,g())}function c(p,o){for(i=o.length-1;i>=0;i--){var n=o[i];if(p===n.name){return n}}return undefined}function g(){if(k){if(k.getEntriesByType){return k.getEntriesByType("mark")}else{if(k.webkitGetEntriesByType){return k.webkitGetEntriesByType("mark")}}}return a}return{mark:b,measure:m,gaMarks:a,gaMeasures:d}})();LUX.ns=(Date.now?Date.now():+(new Date()));LUX.ac=[];LUX.cmd=function(a){LUX.ac.push(a)};LUX.init=function(){LUX.cmd(["init"])};LUX.send=function(){LUX.cmd(["send"])};LUX.addData=function(a,b){LUX.cmd(["addData",a,b])};LUX_ae=[];window.addEventListener("error",function(a){LUX_ae.push(a)});LUX_al=[];if("function"===typeof(PerformanceObserver)&&"function"===typeof(PerformanceLongTaskTiming)){var LongTaskObserver=new PerformanceObserver(function(c){var b=c.getEntries();for(var a=0;a<b.length;a++){var d=b[a];LUX_al.push(d)}});try{LongTaskObserver.observe({type:["longtask"]})}catch(e){}}; 10 11LUX.label = JSON.parse( decodeURIComponent( '%5B%22Page%22%5D' ) ); 12 13if ( typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent === 'test' ) { 14 LUX.samplerate = 0; 15} 16</script>
vendor: 1 bytes, line 16
16
17<script src="https://cdn.speedcurve.com/js/lux.js?id=510586868" async defer crossorigin="anonymous"></script>
17 18<!-- End Speedcurve RUM --> 19<meta name='robots' content='noindex, follow' /> 20 21<!-- Google Tag Manager for WordPress by gtm4wp.com -->
22<script data-cfasync="false" data-pagespeed-no-defer> 23 var gtm4wp_datalayer_name = "dataLayer"; 24 var dataLayer = dataLayer || []; 25</script>
25 26<!-- End Google Tag Manager for WordPress by gtm4wp.com -->
26<script id="pianojs-detect" type="text/javascript"> 27;(function(){ 28 document.cookie = "__adblocker=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; 29 var setNptTechAdblockerCookie = function(adblocker) { 30 var d = new Date(); 31 d.setTime(d.getTime() + 60 * 5 * 1000); 32 document.cookie = "__adblocker=" + (adblocker ? "true" : "false") + "; expires=" + d.toUTCString() + "; path=/"; 33 }; 34 var script = document.createElement("script"); 35 script.setAttribute("async", true); 36 script.setAttribute("src", "//www.npttech.com/advertising.js"); 37 script.setAttribute("onerror", "setNptTechAdblockerCookie(true);"); 38 document.getElementsByTagName("head")[0].appendChild(script); 39})(); 40</script>
40 41 42 <!-- This site is optimized with the Yoast SEO plugin v26.9 - https://yoast.com/product/yoast-seo-wordpress/ --> 43 <title>My Account – The China Project</title> 44 <meta property="og:locale" content="en_US" /> 45 <meta property="og:type" content="article" /> 46 <meta property="og:title" content="My Account – The China Project" /> 47 <meta property="og:url" content="https://thechinaproject.com/my-account/" /> 48 <meta property="og:site_name" content="The China Project" /> 49 <meta property="article:publisher" content="https://www.facebook.com/thechinaprojectnews/" /> 50 <meta property="article:modified_time" content="2022-02-11T17:17:50+00:00" /> 51 <meta property="og:image" content="https://thechinaproject.com/wp-content/uploads/2022/09/the-china-project-website-social-share-image.jpg" /> 52 <meta property="og:image:width" content="1920" /> 53 <meta property="og:image:height" content="1080" /> 54 <meta property="og:image:type" content="image/jpeg" /> 55 <meta name="twitter:card" content="summary_large_image" /> 56 <meta name="twitter:site" content="@thechinaproj" /> 57 <meta name="twitter:label1" content="Written by" /> 58 <meta name="twitter:data1" content="The editors" /> 59
59<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://thechinaproject.com/my-account/","url":"https://thechinaproject.com/my-account/","name":"My Account – The China Project","isPartOf":{"@id":"https://thechinaproject.com/#website"},"datePublished":"2021-10-22T15:29:52+00:00","dateModified":"2022-02-11T17:17:50+00:00","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://thechinaproject.com/my-account/"]}]},{"@type":"WebSite","@id":"https://thechinaproject.com/#website","url":"https://thechinaproject.com/","name":"The China Project","description":"All things China.","publisher":{"@id":"https://thechinaproject.com/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://thechinaproject.com/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://thechinaproject.com/#organization","name":"The China Project","url":"https://thechinaproject.com/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://thechinaproject.com/#/schema/logo/image/","url":"https://thechinaproject.com/wp-content/uploads/2022/09/the-china-project-website-social-share-image.jpg","contentUrl":"https://thechinaproject.com/wp-content/uploads/2022/09/the-china-project-website-social-share-image.jpg","width":1920,"height":1080,"caption":"The China Project"},"image":{"@id":"https://thechinaproject.com/#/schema/logo/image/"},"sameAs":["https://www.facebook.com/thechinaprojectnews/","https://x.com/thechinaproj","https://www.instagram.com/thechinaproj/","https://www.linkedin.com/company/thechinaproject/","https://www.youtube.com/c/TheChinaProject"]}]}</script>
59 60 <!-- / Yoast SEO plugin. --> 61 62 63<link rel='dns-prefetch' href='//use.typekit.net' /> 64<link rel="alternate" type="application/rss+xml" title="The China Project » Feed" href="https://thechinaproject.com/feed/" /> 65<link rel="alternate" type="application/rss+xml" title="The China Project » Comments Feed" href="https://thechinaproject.com/comments/feed/" /> 66<!-- Google Tag Manager -->
67<script> 68if ( !(typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent === 'test') ) {
vendor: 333 bytes, lines 68-73
68 69 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 70 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 71 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 72 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 73 })(window,document,'script','dataLayer','
73GTM-PZRP993
vendor: 4 bytes, line 73
73');
74} 75</script>
75 76<!-- End Google Tag Manager --> 77 <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://thechinaproject.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fthechinaproject.com%2Fmy-account%2F" /> 78<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://thechinaproject.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fthechinaproject.com%2Fmy-account%2F&format=xml" /> 79<link rel="preconnect" crossorigin href="https://use.typekit.com"> 80<link rel="preload" as="font" crossorigin type="font/woff2" href="https://thechinaproject.com/wp-content/themes/supchina/fonts/founders-grotesk-web-bold.woff2"> 81<link rel="preload" as="font" crossorigin type="font/woff2" href="https://thechinaproject.com/wp-content/themes/supchina/fonts/tiempos-text-web-regular.woff2"> 82<link rel="preload" as="font" crossorigin type="font/woff2" href="https://thechinaproject.com/wp-content/themes/supchina/fonts/tiempos-text-web-regular-italic.woff2"> 83<link rel="preload" as="font" crossorigin type="font/woff2" href="https://thechinaproject.com/wp-content/themes/supchina/fonts/tiempos-text-web-bold.woff2"> 84<style id="wp-img-auto-sizes-contain-inline-css"> 85img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 86/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 87</style> 88<link rel='stylesheet' id='typekit-aktiv-css' href='https://use.typekit.net/ogo8sxt.css?ver=7.0.6' media='all' /> 89<link rel='stylesheet' id='select2-css' href='https://thechinaproject.com/wp-content/themes/supchina/modules/links-archive/vendor/select2/select2.min.css?ver=4.1.0-rc.0' media='all' /> 90<link rel='stylesheet' id='slick-css' href='https://thechinaproject.com/wp-content/themes/supchina/modules/links-archive/vendor/slick/slick.css?ver=1.8.1' media='all' /> 91<link rel='stylesheet' id='slick-theme-css' href='https://thechinaproject.com/wp-content/themes/supchina/modules/links-archive/vendor/slick/slick-theme.css?ver=1.8.1' media='all' /> 92<link rel='stylesheet' id='flickity-css' href='https://thechinaproject.com/wp-content/themes/supchina/assets/vendor/flickity.min.css?ver=2.2.1' media='all' /> 93<style id="classic-theme-styles-inline-css"> 94/*! This file is auto-generated */ 95.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 96/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 97</style> 98 99<style id="global-styles-inline-css"> 100:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
100--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
100.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 101/*# sourceURL=global-styles-inline-css */ 102</style> 103 104<link rel='stylesheet' id='cookie-law-info-css' href='https://thechinaproject.com/wp-content/plugins/webtoffee-gdpr-cookie-consent/public/css/cookie-law-info-public.css?ver=2.3.4' media='all' /> 105<link rel='stylesheet' id='cookie-law-info-gdpr-css' href='https://thechinaproject.com/wp-content/plugins/webtoffee-gdpr-cookie-consent/public/css/cookie-law-info-gdpr.css?ver=2.3.4' media='all' /> 106<style id="cookie-law-info-gdpr-inline-css"> 107.cli-modal-content, .cli-tab-content { background-color: #ffffff; }.cli-privacy-content-text, .cli-modal .cli-modal-dialog, .cli-tab-container p, a.cli-privacy-readmore { color: #000000; }.cli-tab-header { background-color: #f2f2f2; }.cli-tab-header, .cli-tab-header a.cli-nav-link,span.cli-necessary-caption,.cli-switch .cli-slider:after { color: #000000; }.cli-switch .cli-slider:before { background-color: #ffffff; }.cli-switch input:checked + .cli-slider:before { background-color: #ffffff; }.cli-switch .cli-slider { background-color: #e3e1e8; }.cli-switch input:checked + .cli-slider { background-color: #28a745; }.cli-modal-close svg { fill: #000000; }.cli-tab-footer .wt-cli-privacy-accept-all-btn { background-color: #00acad; color: #ffffff}.cli-tab-footer .wt-cli-privacy-accept-btn { background-color: #00acad; color: #ffffff}.cli-tab-header a:before{ border-right: 1px solid #000000; border-bottom: 1px solid #000000; } 108/*# sourceURL=cookie-law-info-gdpr-inline-css */ 109</style> 110<link rel='stylesheet' id='base-main-css' href='https://thechinaproject.com/wp-content/themes/supchina/assets/main.css?ver=096210' media='all' /> 111<link rel='stylesheet' id='base-company-profiles-css' href='https://thechinaproject.com/wp-content/themes/supchina/modules/company-profiles/company-profiles.css?ver=096210' media='all' /> 112<link rel='stylesheet' id='jquery-ui-datepicker-css' href='https://thechinaproject.com/wp-content/themes/supchina/modules/links-archive/vendor/jquery-ui/jquery-ui.css?ver=1.12.0' media='all' /> 113<link rel='stylesheet' id='piano-user-nav-css' href='https://thechinaproject.com/wp-content/themes/supchina/modules/piano-watchlist/piano-user-nav.css?ver=939740' media='all' /> 114<link rel='stylesheet' id='piano-watchlist-css' href='https://thechinaproject.com/wp-content/themes/supchina/modules/piano-watchlist/piano-watchlist.css?ver=939740' media='all' />
115<script id="jquery-js" src="https://thechinaproject.com/wp-content/themes/supchina/assets/vendor/jquery-2.2.4.min.js"></script>
vendor: 1 bytes, line 115
115
116<script id="cookie-law-info-js-extra"> 117var Cli_Data = {"nn_cookie_ids":["test_cookie","__cfduid","_omappvp","_omappvs","lang","lidc","_fbp","fr","_ga","_gid","test_cookie","bcookie","personalization_id","__gads","VISITOR_INFO1_LIVE","YSC","GPS","IDE","TDID","PugT","PUBMDCID","uid","TDCPM","everest_g_v2","uuid","uuidc","_gat","_pxvid","mc","__qca"],"non_necessary_cookies":{"performance":["YSC","_gat"],"preferences":["lang","lidc","bcookie","PugT"],"analytics":["_omappvp","_omappvs","_ga","_gid","__gads","GPS"],"advertisement":["_fbp","fr","test_cookie","personalization_id","VISITOR_INFO1_LIVE","IDE","TDID","PUBMDCID","uid","TDCPM","everest_g_v2","uuid","uuidc","mc","__qca"],"necessary":["__cfduid","_pxvid"]},"cookielist":{"necessary":{"id":21,"status":true,"title":"Necessary","strict":true,"default_state":false,"ccpa_optout":false,"loadonstart":false},"performance":{"id":15719,"status":true,"title":"Performance","strict":false,"default_state":true,"ccpa_optout":false,"loadonstart":false},"preferences":{"id":15717,"status":true,"title":"Preferences","strict":false,"default_state":true,"ccpa_optout":false,"loadonstart":false},"analytics":{"id":15716,"status":true,"title":"Analytics","strict":false,"default_state":true,"ccpa_optout":false,"loadonstart":false},"advertisement":{"id":15718,"status":true,"title":"Advertisement","strict":false,"default_state":true,"ccpa_optout":false,"loadonstart":false}},"ajax_url":"https://thechinaproject.com/wp-admin/admin-ajax.php","current_lang":"en","security":"4667ac7bf0","eu_countries":["GB"],"geoIP":"enabled","use_custom_geolocation_api":"","custom_geolocation_api":"https://geoip.cookieyes.com/geoip/checker/result.php","consentVersion":"1","strictlyEnabled":["necessary","obligatoire"],"cookieDomain":"","privacy_length":"250","ccpaEnabled":"","ccpaRegionBased":"","ccpaBarEnabled":"","ccpaType":"gdpr","triggerDomRefresh":""}; 118var log_object = {"ajax_url":"https://thechinaproject.com/wp-admin/admin-ajax.php"}; 119//# sourceURL=cookie-law-info-js-extra 120</script>
vendor: 1 bytes, line 120
120
121<script id="cookie-law-info-js" src="https://thechinaproject.com/wp-content/plugins/webtoffee-gdpr-cookie-consent/public/js/cookie-law-info-public.js?ver=2.3.4"></script>
vendor: 1 bytes, line 121
121
122<script id="jquery-debouncedresize-js" src="https://thechinaproject.com/wp-content/themes/supchina/assets/vendor/jquery.debouncedresize.js"></script>
vendor: 1 bytes, line 122
122
123<script id="base-modal-js" src="https://thechinaproject.com/wp-content/themes/supchina/assets/modal.min.js?ver=096210" defer></script>
vendor: 1 bytes, line 123
123
124<script id="jquery-ba-throttle-debounce-js" src="https://thechinaproject.com/wp-content/themes/supchina/assets/vendor/jquery.ba-throttle-debounce.min.js?ver=1.1"></script>
vendor: 1 bytes, line 124
124
125<script id="gtm-scripts-js" src="https://thechinaproject.com/wp-content/themes/supchina/assets/gtm.min.js?ver=096210"></script>
vendor: 1 bytes, line 125
125
126<script id="gtm-scripts-js-after"> 127var postId = 211945;var contentType = "My Account"; 128//# sourceURL=gtm-scripts-js-after 129</script>
vendor: 1 bytes, line 129
129
130<script id="tcpr_single_profile-js-extra"> 131var tcpr_single_obj = {"ajax_url":"https://thechinaproject.com/wp-admin/admin-ajax.php","nonce":"47a2a19efe"}; 132//# sourceURL=tcpr_single_profile-js-extra 133</script>
vendor: 1 bytes, line 133
133
134<script id="tcpr_single_profile-js" src="https://thechinaproject.com/wp-content/themes/supchina/modules/company-profiles/single-profile.min.js?ver=096210"></script>
vendor: 1 bytes, line 134
134
135<script id="select2-js" src="https://thechinaproject.com/wp-content/themes/supchina/modules/links-archive/vendor/select2/select2.min.js?ver=4.1.0-rc.0"></script>
vendor: 1 bytes, line 135
135
136<script id="piano-js" src="https://cdn.tinypass.com/api/tinypass.min.js?ver=7.0.6" async></script>
vendor: 1 bytes, line 136
136
137<script id="piano-js-after"> 138tp = window.tp || []; 139;(function(){ 140 var spchAID = decodeURIComponent( 'gukdowMUpu' ); 141 tp.push(['setAid', spchAID]); 142 var spchEndpoint = "https:\/\/buy.tinypass.com\/api\/v3"; 143 tp.push(['setEndpoint', spchEndpoint]); 144})(); 145tp.push(['setUseTinypassAccounts', false]); 146tp.push(['setUsePianoIdUserProvider', true]); 147 148//# sourceURL=piano-js-after 149</script>
149 150<link rel="https://api.w.org/" href="https://thechinaproject.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://thechinaproject.com/wp-json/wp/v2/pages/211945" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://thechinaproject.com/xmlrpc.php?rsd" /> 151<meta name="generator" content="WordPress 7.0.6" /> 152<meta name="generator" content="Seriously Simple Podcasting 3.14.0" /> 153<link rel='shortlink' href='https://thechinaproject.com/?p=211945' /> 154 155<link rel="alternate" type="application/rss+xml" title="Podcast RSS feed" href="https://thechinaproject.com/feed/podcast" /> 156 157 158<!-- Google Tag Manager for WordPress by gtm4wp.com --> 159<!-- GTM Container placement set to off -->
160<script data-cfasync="false" data-pagespeed-no-defer> 161 var dataLayer_content = {"visitorIP":"181.215.65.68","pagePostType":"page","pagePostType2":"single-page","pagePostAuthor":"The editors","postFormat":"standard"}; 162 dataLayer.push( dataLayer_content ); 163</script>
vendor: 1 bytes, line 163
163
164<script data-cfasync="false" data-pagespeed-no-defer> 165 console.warn && console.warn("[GTM4WP] Google Tag Manager container code placement set to OFF !!!"); 166 console.warn && console.warn("[GTM4WP] Data layer codes are active but GTM container must be loaded using custom coding !!!"); 167</script>
167 168<!-- End Google Tag Manager for WordPress by gtm4wp.com -->
168<script id="spchLog" type="text/javascript"> 169function spchLog(title, data) { 170} 171</script>
171 172
172<script> 173 !function(){window.flywheel=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"].reduce((function(e,t){return e[t]=function(){for(var e,n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];(e=window.flywheel.preLibInitBuffer)[t]||(e[t]=[]),window.flywheel.preLibInitBuffer[t].push(n)},e}),{writeKey:"2352a4db-16fd-40ed-85a6-d0c6ccbdfef0",apiHost:"theflywheel.app",snippetVersion:"0.0.0",preLibInitBuffer:{}});var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src="https://cdn.theflywheel.app/flywheel.min.js";var t=document.getElementsByTagName("script")[0];t.parentNode&&t.parentNode.insertBefore(e,t),window.flywheel.page()}(); 174 </script>
174 175
175<script>document.documentElement.className = document.documentElement.className.replace('no-js', 'js');</script>
175 176 <link rel="apple-touch-icon" sizes="180x180" href="https://thechinaproject.com/apple-touch-icon.png?ver=7" /> 177<link rel="icon" type="image/png" href="https://thechinaproject.com/favicon-32x32.png?ver=7" sizes="32x32" /> 178<link rel="icon" type="image/png" href="https://thechinaproject.com/favicon-16x16.png?ver=7" sizes="16x16" /> 179<link rel="manifest" href="https://thechinaproject.com/site.webmanifest"> 180<link rel="mask-icon" href="https://thechinaproject.com/safari-pinned-tab.svg?ver=7" color="#F73044"> 181<meta name="msapplication-TileColor" content="#3A13F3" /> 182<meta name="theme-color" content="#3A13F3" /> 183 184<link rel='stylesheet' id='cookie-law-info-table-css' href='https://thechinaproject.com/wp-content/plugins/webtoffee-gdpr-cookie-consent/public/css/cookie-law-info-table.css?ver=2.3.4' media='all' /> 185 186</head> 187<body class="wp-singular page-template page-template-template-account-preferences page-template-template-account-preferences-php page page-id-211945 wp-theme-supchina has-ticker"> 188 189 <a class="skip-to-content skip-link screen-reader-text" 190 href="#site-content">Skip to the content</a> 191 <!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 191-192
191 192<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
192GTM-PZRP993
vendor: 83 bytes, lines 192-193
192" 193height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
194<!-- End Google Tag Manager (noscript) --> 195
195<script> 196 (function ($) { 197 198 var prevClientHeight; 199 200 function setVH100(doc) { 201 function handleResize() { 202 var clientHeight = doc.clientHeight; 203 if (clientHeight === prevClientHeight) return; 204 // console.log('Prev --vh100 value:', clientHeight, prevClientHeight); 205 // console.log(clientHeight); 206 requestAnimationFrame(function updateViewportHeight() { 207 doc.style.setProperty('--vh100', (clientHeight) + 'px'); 208 prevClientHeight = clientHeight; 209 // console.log('--vh100 CHANGED. Update:', clientHeight); 210 }); 211 } 212 213 handleResize(); 214 return handleResize; 215 } 216 217 setVH100(document.documentElement); 218 219 window.addEventListener('load', function () { 220 221 $(window) 222 .on('debouncedresize', function () { 223 setVH100(document.documentElement); 224 }); 225 }); 226 227 })(jQuery); 228 </script>
228 229 230 <!-- site-container --> 231 <div class="site-container"> 232 233 <div class="site-wrap"> 234 235 <div id="js-non-footer" class="non-footer"> 236 237 <div class="pre-site-header"></div> 238 239 <div class="site-top"> 240 241 <div id="js-ticker--mobile" class="js-ticker ticker ticker--mobile hidden@lg"> 242 <div id="js-ticker--mobile__holder" class="ticker__holder"> 243 <div class="ticker__inner js-ticker--mobile__inner"> 244 <h2 class="ticker__title iblock">Trending</h2><nav class="nav nav--horizontal nav--ticker iblock"><ul class="listless"><li id="menu-item-229881" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-229881 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/tag/taiwan/" class="menu-target menu-link menu-target--loc-ticker">#taiwan</a></li><li id="menu-item-274814" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-274814 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/tag/espionage/" class="menu-target menu-link menu-target--loc-ticker">#espionage</a></li><li id="menu-item-227376" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-227376 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/tag/lgbtq/" class="menu-target menu-link menu-target--loc-ticker">#lgbtq</a></li><li id="menu-item-274815" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-274815 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/tag/artificial-intelligence/" class="menu-target menu-link menu-target--loc-ticker">#artificialintelligence</a></li><li id="menu-item-226310" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-226310 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/tag/xinjiang/" class="menu-target menu-link menu-target--loc-ticker">#xinjiang</a></li></ul></nav> </div> 245 </div> 246 </div> 247 248 <div id="js-site-header-posholder"></div> 249 250 <div class="site-header-placeholder"></div> 251 252 <header id="js-site-header" class="site-header" role="banner"> 253 254 <div class="search-form__wrap search-form--header__wrap visible@lg clearfix"> 255 256 <button id="js-search-toggle" type="button" class="search-form__toggle unbtn" aria-expanded="false" data-modal-open="#js-search-form" data-sctrack="searchBtn"> 257 <svg xmlns="http://www.w3.org/2000/svg" width="34.036" height="34.036" viewBox="0 0 34.036 34.036"><g transform="translate(2.5 2.5)"><circle cx="9.5" cy="9.5" r="9.5" fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="5"/><line x2="11.383" y2="11.383" transform="translate(16.617 16.617)" fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="5"/></g></svg> 258 </button> 259 260 </div> 261 262 <div class="site-logo site-logo--header"> 263 <a href="https://thechinaproject.com/" rel="home"> 264 <span class="screen-reader-text">The China Project</span> 265 <svg id="Layer_2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 251.46 76.61"> 266 <defs><style>.cls-1{fill:#ef4453;}</style></defs> 267 <g id="Layer_1-2"><g> 268 <path class="cls-1" d="M153.54,12.88h0c3.75,0,52.02,.08,53.97,.08,2.12,0,15.16,2.29,15.16,14.99s-11.27,15.59-16.26,15.59c0,0-4.24,.08-5.85,0,2.12,4.49,3.47,7.79,5.85,12.37,15.42,0,27.95-12.54,27.95-27.95S221.83,0,206.41,0h-61.16l7.05,12.88h1.24Z"/><path class="cls-1" d="M244.39,63.36h-1.27s-38.71-.09-40.74-.09-15.08-2.29-15.08-14.99,11.27-15.59,16.26-15.59c0,0,4.15-.09,5.84,0-2.2-4.49-3.56-7.79-5.84-12.37-15.5,0-27.95,12.54-27.95,27.95s12.45,27.95,27.95,27.95h47.89l-7.07-12.87Z"/><polygon class="cls-1" points="6.12 4.5 0 4.5 0 0 18.11 0 18.11 4.5 11.87 4.5 11.87 20.23 6.12 20.23 6.12 4.5"/><polygon class="cls-1" points="43.46 0 43.46 20.23 37.84 20.23 37.84 12.37 29.98 12.37 29.98 20.23 24.23 20.23 24.23 0 29.98 0 29.98 7.62 37.84 7.62 37.84 0 43.46 0"/><polygon class="cls-1" points="67.82 15.86 67.82 20.23 51.58 20.23 51.58 0 67.44 0 67.44 4.37 57.2 4.37 57.2 7.74 66.2 7.74 66.2 12.12 57.2 12.12 57.2 15.86 67.82 15.86"/><path class="cls-1" d="M5.37,47.05c-1.62-.87-3-2.12-4-3.75C.5,41.8,0,39.93,0,37.93s.5-3.87,1.37-5.5c1-1.62,2.37-2.87,4-3.75,1.75-.87,3.62-1.37,5.75-1.37,1.87,0,3.5,.37,5,1,1.5,.62,2.75,1.62,3.75,2.87l-3.62,3.25c-1.37-1.5-3-2.37-4.87-2.37-1,0-2,.25-2.87,.75-.87,.5-1.5,1.25-2,2.12-.5,.87-.75,1.87-.75,3s.25,2.12,.75,3c.5,.87,1.12,1.62,2,2,.87,.5,1.87,.75,2.87,.75,1.87,0,3.5-.75,4.87-2.37l3.62,3.37c-1,1.25-2.25,2.12-3.75,2.75-1.5,.75-3.12,1-5,1-2.12,0-4-.37-5.75-1.37"/><polygon class="cls-1" points="45.71 27.81 45.71 48.05 39.97 48.05 39.97 40.18 32.1 40.18 32.1 48.05 26.35 48.05 26.35 27.81 32.1 27.81 32.1 35.43 39.97 35.43 39.97 27.81 45.71 27.81"/><rect class="cls-1" x="53.71" y="27.81" width="5.75" height="20.23"/><polygon class="cls-1" points="86.8 27.81 86.8 48.05 82.06 48.05 73.06 37.18 73.06 48.05 67.44 48.05 67.44 27.81 72.19 27.81 81.18 38.55 81.18 27.81 86.8 27.81"/><path class="cls-1" d="M108.41,44.05h-8.62l-1.62,4h-5.74l8.87-20.23h5.75l8.87,20.23h-5.87l-1.62-4Zm-1.75-4.12l-2.5-6.49-2.62,6.49h5.12Z"/><path class="cls-1" d="M13.99,56.88c1.37,.62,2.37,1.5,3.12,2.62s1.12,2.37,1.12,4c0,1.5-.37,2.87-1.12,3.87-.75,1.12-1.75,2-3.12,2.62-1.37,.62-2.87,1-4.75,1h-3.5v5.25H0v-20.23H9.24c1.87,0,3.37,.25,4.75,.87m-2.37,8.74c.5-.5,.87-1.25,.87-2.12,0-1-.37-1.75-.87-2.25-.62-.5-1.5-.75-2.75-.75h-3.12v5.87h3.12c1.25,0,2.12-.25,2.75-.75"/><path class="cls-1" d="M33.85,70.87h-3.12v5.37h-5.75v-20.23h9.24c1.87,0,3.5,.25,4.87,.87,1.37,.62,2.37,1.5,3.12,2.62,.75,1.12,1.12,2.37,1.12,4,0,1.37-.37,2.75-1.12,3.75-.62,1.12-1.62,2-2.87,2.62l4.37,6.37h-6.12l-3.75-5.37Zm2.7
2685-9.62c-.62-.5-1.5-.75-2.62-.75h-3.25v5.87h3.25c1.12,0,2-.25,2.62-.75s.87-1.25,.87-2.12c0-1-.25-1.75-.87-2.25"/><path class="cls-1" d="M54.83,75.24c-1.62-.87-3-2.12-4-3.75-1-1.62-1.5-3.37-1.5-5.37s.5-3.87,1.5-5.5c1-1.5,2.37-2.75,4-3.75,1.75-.87,3.62-1.37,5.87-1.37,2.12,0,4,.5,5.75,1.37,1.75,1,3,2.25,4,3.75,1,1.62,1.5,3.5,1.5,5.5s-.5,3.75-1.5,5.37c-1,1.62-2.25,2.87-4,3.75-1.75,1-3.62,1.37-5.75,1.37-2.25,0-4.12-.37-5.87-1.37m8.62-4.12c.75-.37,1.5-1.12,2-2,.37-.87,.62-1.87,.62-3s-.25-2.12-.62-3c-.5-.87-1.25-1.62-2-2.12-.87-.5-1.75-.75-2.75-.75-1.12,0-2,.25-2.87,.75-.75,.5-1.5,1.25-2,2.12-.37,.87-.62,1.87-.62,3s.25,2.12,.62,3c.5,.87,1.25,1.62,2,2,.87,.5,1.75,.75,2.87,.75,1,0,1.87-.25,2.75-.75"/><path class="cls-1" d="M78.81,75.86c-1.25-.5-2.12-1.25-3-2.25l3.12-3.62c1.12,1.37,2.25,2.12,3.5,2.12,.87,0,1.5-.25,2-.75,.37-.5,.62-1.25,.62-2.25v-8.74h-6.99v-4.37h12.61v12.74c0,2.62-.62,4.62-2,5.87-1.25,1.37-3.25,2-5.74,2-1.5,0-2.87-.25-4.12-.75"/><polygon class="cls-1" points="114.91 71.86 114.91 76.24 98.54 76.24 98.54 56 114.53 56 114.53 60.37 104.29 60.37 104.29 63.75 113.28 63.75 113.28 68.12 104.29 68.12 104.29 71.86 114.91 71.86"/><path class="cls-1" d="M126.4,75.24c-1.75-.87-3-2.12-4-3.75-1-1.5-1.5-3.37-1.5-5.37s.5-3.87,1.5-5.5c1-1.62,2.25-2.87,4-3.75,1.62-.87,3.62-1.37,5.75-1.37,1.75,0,3.5,.37,5,1,1.5,.62,2.75,1.62,3.62,2.87l-3.62,3.25c-1.25-1.5-2.87-2.37-4.75-2.37-1.12,0-2.12,.25-3,.75-.75,.5-1.5,1.25-2,2.12-.37,.87-.62,1.87-.62,3s.25,2.12,.62,3c.5,.87,1.25,1.62,2,2,.87,.5,1.87,.75,3,.75,1.87,0,3.5-.75,4.75-2.37l3.62,3.37c-.87,1.25-2.12,2.12-3.62,2.75-1.5,.75-3.25,1-5,1-2.12,0-4.12-.37-5.75-1.37"/><polygon class="cls-1" points="151.5 60.5 145.25 60.5 145.25 56 163.36 56 163.36 60.5 157.25 60.5 157.25 76.24 151.5 76.24 151.5 60.5"/> 269 </g></g> 270 </svg> 271 </a> 272 </div> 273 274 <div class="newsletter-icon"> 275 <a href="https://thechinaproject.com/newsletters/" rel="newsletter"> 276 <span class="screen-reader-text">Newsletter</span> 277 <svg xmlns="http://www.w3.org/2000/svg" width="31.214" height="26.125" viewBox="0 0 31.214 26.125"> 278 <g transform="translate(-0.015 -4.438)"> 279 <path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" d="M12,27.4v9.059l4.964-4.406" transform="translate(-3.795 -8.121)"/> 280 <path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" d="M17.823,28.338,29.3,6,2,13.446Z"/> 281 <line fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" x1="21.097" y2="13.279" transform="translate(8.205 6)"/> 282 </g> 283 </svg> 284 </a> 285 </div> 286 <div class="site-header__row site-header__row--main"> 287 288 <div class="site-header__row-inner clearfix"> 289 290 <div class="site-header__left visible@lg"> 291 292 <nav id="js-nav-main" class="nav nav--horizontal nav--main" role="navigation" data-sctrack="mainNav"> 293 <ul class="menu"> 294 <li id="menu-item-202814" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-202814 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/newsletters/" class="menu-target menu-link menu-target--loc-header-main">Newsletters</a></li><li id="menu-item-195013" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-195013 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/podcasts/" class="menu-target menu-link menu-target--loc-header-main">Podcasts</a></li><li id="menu-item-260288" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260288 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/section/politics-and-current-affairs/" class="menu-target menu-link menu-target--loc-header-main">Politics</a></li><li id="menu-item-192235" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-192235 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/section/business-and-technology/" class="menu-target menu-link menu-target--loc-header-main">Business & Tech</a></li><li id="menu-item-189262" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-189262 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/section/society-and-culture/" class="menu-target menu-link menu-target--loc-header-main">Society</a></li><li id="menu-item-192419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-192419 menu-item-depth-0 no-children visible@xxl"><a target="_blank" rel="noopener noreferrer" href="https://events.supchina.com" class="menu-target menu-link menu-target--loc-header-main">Events</a></li><li id="menu-item-239341" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-239341 menu-item-depth-0 no-children visible@xxl"><a href="https://thechinaproject.com/section/video/" class="menu-target menu-link menu-target--loc-header-main">Video</a></li><li class="menu-item menu-item-depth-0 no-children menu-item-fixed hidden@xxl"> 295 <button id="js-tray__expand" class="menu-target tray__expand unbtn" type="button" aria-expanded="false" data-modal-close="#js-members-modal"> 296 <span class="tray__expand-inner"> 297 <span class="screen-reader-text">
297Toggle mobile menu</span> 298 <span class="visible-text">...</span> 299 </span> 300 </button> 301 </li> </ul> 302 </nav> 303 304 <nav id="js-nav-main-2" class="nav nav--horizontal nav--main-2" role="navigation" data-sctrack="mainNav"> 305 <ul class="menu"> 306 <li id="menu-item-219112" class="red-links menu-item menu-item-type-post_type menu-item-object-page menu-item-219112 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/subscribe/" class="menu-target menu-link menu-target--loc-header-the-china-project-pro">Research tools:</a></li><li id="menu-item-221476" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-221476 menu-item-depth-0 no-children"><a target="_blank" rel="noopener noreferrer" href="https://thechinaproject.com/meetchinaedge" class="menu-target menu-link menu-target--loc-header-the-china-project-pro">ChinaEdge</a></li><li id="menu-item-219114" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-219114 menu-item-depth-0 no-children"><a target="_blank" rel="noopener noreferrer" href="https://thechinaproject.com/china-newsbase/" class="menu-target menu-link menu-target--loc-header-the-china-project-pro">China Newsbase</a></li> </ul> 307 </nav> 308 309 </div> 310 311 <div class="site-header__right"> 312 313 <nav id="js-nav--util" class="nav nav--horizontal nav--util" role="navigation" data-sctrack="utilNav"> 314 <ul class="menu"> 315 316 <li> 317 <a href="/subscribe/" class="unbtn menu-target util-btn util-btn--subscribe" data-sctrack="subscribeBtn"> 318 <strong>Subscribe</strong> 319 </a> 320 </li> <li> 321 <a href="/log-in/" id="js-login-button" class="unbtn menu-target util-btn util-btn--log-in" data-sctrack="loginBtn"> 322 <strong>Log In</strong> 323 </a> 324 </li> 325 326 <li id="js-nav--acct__wrap" class="nav--acct__wrap show-if-piano-user"> 327 328 <button id="js-nav--acct__trigger" class="unbtn menu-target util-btn util-btn--see-account nav--acct__trigger" data-sctrack="acctNavBtn" type="button"> 329 <span class="nav--acct__trigger-inner"> 330 <strong>My Account</strong> 331 <span class="icon-arrow-bottom"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="angle-down" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z"></path></svg></span> 332 </span> 333 </button> 334 335 <div id="js-nav--acct" class="nav nav--acct light-area light-area--white" data-render="user_nav" data-sctrack="pianoSubNav"> 336 <ul class="menu"> 337 338 <li class="nav--acct__user"> 339 <span class="nav--acct__user-type"></span> </li> 340 341 <li id="menu-item-218383" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-218383"><a href="https://thechinaproject.com/saved-articles/" class=" menu-target--loc-header-piano-account">Saved Articles</a></li><li id="menu-item-218382" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-218382"><a href="https://thechinaproject.com/watchlist/" class=" menu-target--loc-header-piano-account">Watchlist</a></li><li id="menu-item-218384" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-211945 current_page_item menu-item-218384"><a href="https://thechinaproject.com/my-account/" aria-current="page" class=" menu-target--loc-header-piano-account">My Account</a></li><li id="menu-item-218385" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-218385"><a href="https://thechinaproject.com/contact/" class=" menu-target--loc-header-piano-account">Help</a></li> 342 343 <li class="nav--acct__log-out"> 344 <button id="js-logout" class="util-btn util-btn--logout" type="button"> 345 Log Out </button> 346 </li> 347 348</ul> 349 </div> 350 351 </li> 352 353 354 </ul> 355 </nav> 356 357 </div> 358 359 </div> 360 361 </div> 362 363 <button id="js-tray__toggle" class="tray__toggle unbtn" type="button" aria-expanded="false" data-modal-close="#js-members-modal" data-sctrack="trayToggle"> 364 <div class="tray__toggle-inner"> 365 <span class="screen-reader-text">
365Toggle mobile menu</span> 366 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="32" height="24" viewBox="0 0 32 24"> 367 <g transform="translate(2 2)"> 368 <line class="tray__toggle-line tray__toggle-line--a" x2="28" fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="4"/> 369 <line class="tray__toggle-line tray__toggle-line--b" x2="28" fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="4"/> 370 <line class="tray__toggle-line tray__toggle-line--c" x2="28" fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="4"/> 371 <line class="tray__toggle-line tray__toggle-line--d" x2="28" fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="4"/> 372 </g> 373 </svg> 374 </div> 375 </button> 376 377 </header> 378 379 <div id="js-header-sticky-point" class="js-header-sticky-point"></div> 380 381 <div id="js-tray__wrap" class="tray__wrap"> 382 383 <div id="js-tray" class="tray dark-area dark-area--black text-align-left text-align-inherit@sm"> 384 <div class="tray__inner"> 385 <div class="tray-section tray-section--top"> 386 387 <div class="container container--xl tray-container tray-container--top"> 388 389 <div class="row gutters tray-row tray-row--search"> 390 391 <h2 class="screen-reader-text">Extended Navigation</h2> 392 393 <div class="col-12 col-6@md col-4@lg col-5@xl tray-search"> 394 <form class="search-form" method="get" action="https://thechinaproject.com/" role="search"> 395 <label> 396 <span class="spch-label screen-reader-text">Search</span> 397 <input class="search-form__input btn-height js-focus-on-modal-open fancy-cancel" type="search" name="s" autocomplete="off"></label><button class="search-form__submit btn" type="submit" role="submit"> 398 Search </button> 399</form> 400 </div> 401 402 </div> 403 404 <div class="row gutters tray-row tray-row--top"> 405 406 <div class="col-12 col-6@md col-3@lg tray-col tray-col--top tray-col--a"> 407 408 <nav class="nav nav--vertical nav--tray nav--tray-main" role="navigation"> 409 <li id="menu-item-219117" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-219117 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/newsletters/" class="menu-target menu-link menu-target--loc-mega-jumbo-links">Newsletters</a></li><li id="menu-item-219118" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-219118 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/video/" class="menu-target menu-link menu-target--loc-mega-jumbo-links">Video</a></li><li id="menu-item-219119" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-219119 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/podcasts/" class="menu-target menu-link menu-target--loc-mega-jumbo-links">Podcasts</a></li><li id="menu-item-219120" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-219120 menu-item-depth-0 no-children"><a href="https://events.supchina.com" class="menu-target menu-link menu-target--loc-mega-jumbo-links">Events</a></li> </nav> 410 411 <div id="menu-research-tools" class="col-12 col-12@sm hidden"> 412 413 <nav class="nav nav--vertical nav--tray nav--tray-main" role="navigation"> 414 <h3 class="tray-nav__title iblock tray-nav__title--main text">Research Tools</h3><ul class="menu menu--tray menu--main-menu-2-mobile"><li id="menu-item-281117" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-281117 menu-item-depth-0 no-children vmarg vmarg-mini@lg vmarg@xl tray-nav__h-link"><a href="/meetchinaedge" class="menu-target menu-link menu-target--loc-mega-research-tools">ChinaEdge</a></li><li id="menu-item-281118" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-281118 menu-item-depth-0 no-children vmarg vmarg-mini@lg vmarg@xl tray-nav__h-link"><a href="/china-newsbase/" class="menu-target menu-link menu-target--loc-mega-research-tools">China Newsbase</a></li></ul> </nav> 415 416 </div> 417 </div> 418 419 <div class="col-12 col-6@md col-3@lg tray-col tray-col--top tray-col--b"> 420 421 <nav class="nav nav--vertical nav--tray nav--tray-main" role="navigation"> 422 <h3 class="tray-nav__title iblock tray-nav__title--main text">Sections</h3><ul class="menu menu--tray menu--tray-main-col-1"><li id="menu-item-260256" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260256 menu-item-depth-0 no-children vmarg vmarg-mini@lg vmarg@xl tray-nav__h-link"><a href="https://thechinaproject.com/section/politics-and-current-affairs/" class="menu-target menu-link menu-target--loc-mega-sections">Politics & Current Affairs</a></li><li id="menu-item-192601" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-192601 menu-item-depth-0 no-children vmarg vmarg-mini@lg vmarg@xl tray-nav__h-link"><a href="https://thechinaproject.com/section/business-and-technology/" class="menu-target menu-link menu-target--loc-mega-sections">Business & Technology</a></li><li id="menu-item-190258" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-190258 menu-item-depth-0 no-children vmarg vmarg-mini@lg vmarg@xl tray-nav__h-link"><a href="https://thechinaproject.com/section/society-and-culture/" class="menu-target menu-link menu-target--loc-mega-sections">Society & Culture</a></li><li id="menu-item-192602" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-192602 menu-item-depth-0 no-children vmarg vmarg-mini@lg vmarg@xl tray-nav__h-link"><a href="https://thechinaproject.com/section/science-and-health/" class="menu-target menu-link menu-target--loc-mega-sections">Science & Health</a></li><li id="menu-item-193345" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-193345 menu-item-depth-0 no-children vmarg vmarg-mini@lg vmarg@xl tray-nav__h-link"><a href="https://thechinaproject.com/section/opinion/" class="menu-target menu-link menu-target--loc-mega-sections">Opinion</a></li></ul> </nav> 423 424 </div> 425 426 <div class="col-12 col-6@md col-3@lg tray-col tray-col--top tray-col--c"> 427 428 <nav class="nav nav--vertical nav--tray nav--tray-main" role="navigation"> 429 <h3 class="tray-nav__title iblock tray-nav__title--main text">Columns</h3><ul class="menu menu--tray menu--tray-main-col-2"><li id="menu-item-183235" class="menu-item menu-item-type-taxonomy menu-item-object-column menu-item-183235 menu-item-depth-0 no-children vmarg vmarg-mini@lg"><a href="https://thechinaproject.com/column/this-week-in-chinas-history/" class="menu-target menu-link menu-target--loc-mega-columns">This Week in China’s History<div class="tray-nav__column-author">by <span class="author-name">James Carter</span></div></a></li><li id="menu-item-253459" class="menu-item menu-item-type-taxonomy menu-item-object-column menu-item-253459 menu-item-depth-0 no-children vmarg vmarg-mini@lg"><a href="https://thechinaproject.com/column/ultimate-china-books
429helf/" class="menu-target menu-link menu-target--loc-mega-columns">Paul French’s Ultimate China Bookshelf<div class="tray-nav__column-author">by <span class="author-name">Paul French</span></div></a></li><li id="menu-item-275422" class="menu-item menu-item-type-taxonomy menu-item-object-column menu-item-275422 menu-item-depth-0 no-children vmarg vmarg-mini@lg"><a href="https://thechinaproject.com/column/china-ties/" class="menu-target menu-link menu-target--loc-mega-columns">China Ties<div class="tray-nav__column-author">by <span class="author-name">Alex Colville</span></div></a></li><li id="menu-item-226309" class="menu-item menu-item-type-taxonomy menu-item-object-column menu-item-226309 menu-item-depth-0 no-children vmarg vmarg-mini@lg"><a href="https://thechinaproject.com/column/invited-to-tea/" class="menu-target menu-link menu-target--loc-mega-columns">Invited to Tea<div class="tray-nav__column-author">by <span class="author-name">Jeremy Goldkorn</span></div></a></li><li id="menu-item-277522" class="menu-item menu-item-type-taxonomy menu-item-object-column menu-item-277522 menu-item-depth-0 no-children vmarg vmarg-mini@lg"><a href="https://thechinaproject.com/column/chinas-world/" class="menu-target menu-link menu-target--loc-mega-columns">China’s World<div class="tray-nav__column-author">by <span class="author-name">Duncan Bartlett</span></div></a></li><li id="menu-item-229883" class="menu-item menu-item-type-taxonomy menu-item-object-column menu-item-229883 menu-item-depth-0 no-children vmarg vmarg-mini@lg"><a href="https://thechinaproject.com/column/queer-china/" class="menu-target menu-link menu-target--loc-mega-columns">Queer China<div class="tray-nav__column-author">by <span class="author-name">Nathan Wei</span></div></a></li><li id="menu-item-280671" class="menu-item menu-item-type-taxonomy menu-item-object-column menu-item-280671 menu-item-depth-0 no-children vmarg vmarg-mini@lg"><a href="https://thechinaproject.com/column/southern-view/" class="menu-target menu-link menu-target--loc-mega-columns">Southern View<div class="tray-nav__column-author">by <span class="author-name">Cobus van Staden</span></div></a></li><li id="menu-item-224297" class="menu-item menu-item-type-taxonomy menu-item-object-column menu-item-224297 menu-item-depth-0 no-children vmarg vmarg-mini@lg"><a href="https://thechinaproject.com/column/phrase-of-the-week/" class="menu-target menu-link menu-target--loc-mega-columns">Phrase of the Week<div class="tray-nav__column-author">by <span class="author-name">Andrew Methven</span></div></a></li><li id="menu-item-280670" class="menu-item menu-item-type-taxonomy menu-item-object-column menu-item-280670 menu-item-depth-0 no-children vmarg vmarg-mini@lg"><a href="https://thechinaproject.com/column/china-book-chats/" class="menu-target menu-link menu-target--loc-mega-columns">China Book Chats<div class="tray-nav__column-author">by <span class="author-name">Christopher Marquis</span></div></a></li><li id="menu-item-272123" class="menu-item menu-item-type-taxonomy menu-item-object-column menu-item-272123 menu-item-depth-0 no-children vmarg vmarg-mini@lg"><a href="https://thechinaproject.com/column/china-and-the-town/" class="menu-target menu-link menu-target--loc-mega-columns">China and the Town<div class="tray-nav__column-author">by <span class="author-name">Laurel Schwartz</span></div></a></li><li id="menu-item-183236" class="menu-item menu-item-type-taxonomy menu-item-object-column menu-item-183236 menu-item-depth-0 no-children vmarg vmarg-mini@lg"><a href="https://thechinaproject.com/column/window-on-xinjiang/" class="menu-target menu-link menu-target--loc-mega-columns">Window on Xinjiang<div class="tray-nav__column-author">by <span class="author-name">Darren Byler</span></div></a></li><li id="menu-item-253730" class="menu-item menu-item-type-taxonomy menu-item-object-column menu-item-253730 menu-item-depth-0 no-children vmarg vmarg-mini@lg"><a href="https://thechinaproject.com/column/uyghur-bulletin/" class="menu-target menu-link menu-target--loc-mega-columns">Uyghur Bulletin<div class="tray-nav__column-author">by <span class="author-name">Ruth Ingram</span></div></a></li></ul> </nav> 430 431 </div> 432 433 <div class="col-12 col-6@md col-3@lg tray-col tray-col--top tray-col--d"> 434 435 <nav class="nav nav--vertical nav--tray nav--tray-main" role="navigation"> 436 <h3 class="tray-nav__title iblock tray-nav__title--main text">Business Services</h3><ul class="menu menu--tray menu--tray-btm-col-2"><li id="menu-item-199905" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-199905 menu-item-depth-0 no-children vmarg vmarg-mini@lg vmarg@xl tray-nav__h-link"><a href="https://thechinaproject.com/china-consulting/" class="menu-target menu-link menu-target--loc-mega-business-services">China Consulting Marketplace</a></li><li id="menu-item-191118" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-191118 menu-item-depth-0 no-children vmarg vmarg-mini@lg vmarg@xl tray-nav__h-link"><a href="https://thechinaproject.com/advertising/" class="menu-target menu-link menu-target--loc-mega-business-services">Advertising</a></li></ul> </nav> 437 438 </div> 439 440 </div> 441 </div> 442 443</div> 444 445<div class="tray-section tray-section--btm"> 446 447 <div class="container container--xl tray-container tray-container--btm"> 448 449 <div class="row gutters tray-row tray-row--btm"> 450 451 <div class="col-12 tray-col tray-col--btm vmarg vmarg-none@md"> 452 <nav class="nav nav--horizontal nav--connect"> 453 454 <ul class="connect-icons listless"> 455 456 457 <li class="connect-icon connect-icon--linkedin"> 458 <a href="https://www.linkedin.com/company/thechinaproject/" target="_blank" rel="noopener"> 459 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><g fill="none" stroke="currentColor" stroke-width="2"><circle cx="16" cy="16" r="16" stroke="none"/><circle cx="16" cy="16" r="15" fill="none"/></g><g transform="translate(-28.995 -20.796)"><path d="M38.729,43.931h2.937V33.651H38.729Zm11.212-9.694a4.576,4.576,0,0,0-3.87-.135v-.451H43.135v10.28h2.937V37.356a1.561,1.561,0,0,1,.535-.557,1.277,1.277,0,0,1,.808-.23,1.82,1.82,0,0,1,1.09.23.923.923,0,0,1,.5.891v6.241h2.937V37.69A4.173,4.173,0,0,0,49.941,34.237ZM40.2,28.878a1.836,1.836,0,1,0,1.836,1.836A1.835,1.835,0,0,0,40.2,28.878Z" transform="translate(0 0)" fill="currentColor"/></g></svg> </a> 460 </li> 461 462 463 <li class="connect-icon connect-icon--facebook"> 464 <a href="https://www.facebook.com/thechinaprojectnews" target="_blank" rel="noopener"> 465 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><g fill="none" stroke="currentColor" stroke-width="2"><circle cx="16" cy="16" r="16" stroke="none"/><circle cx="16" cy="16" r="15"/></g><path d="M17.37 10.901h2.3V7.688h-2.3c-1.9 0-3.452 1.892-3.452 4.217v1.622h-2.3v3.224h2.3v7.8h2.877v-7.8h2.877v-3.225h-2.877v-1.653c0-.556.305-.972.575-.972z" fill="currentColor"/></svg> </a> 466 </li> 467 468 469 <li class="connect-icon connect-icon--instagram">
470 <a href="https://www.instagram.com/thechinaproj/" target="_blank" rel="noopener"> 471 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><g fill="none" stroke="currentColor" stroke-width="2"><circle cx="16" cy="16" r="16" stroke="none"/><circle cx="16" cy="16" r="15" fill="none"/></g><g transform="translate(-24.567 -26.568)"><path d="M45.515,35.635H35.7A1.7,1.7,0,0,0,34,37.328v9.823a1.7,1.7,0,0,0,1.7,1.692h9.819a1.7,1.7,0,0,0,1.7-1.692V37.328A1.7,1.7,0,0,0,45.515,35.635Zm-2.076,2.073a.5.5,0,0,1,.5-.5h1.2a.5.5,0,0,1,.5.5v1.2a.5.5,0,0,1-.5.5h-1.2a.5.5,0,0,1-.5-.5v-1.2Zm-2.833,1.7a2.827,2.827,0,1,1-2.831,2.827A2.829,2.829,0,0,1,40.606,39.409Zm5.358,7.65a.525.525,0,0,1-.525.523H35.788a.525.525,0,0,1-.525-.523V41.291h1.361a4.1,4.1,0,1,0,7.968,0h1.371v5.768Z" fill="currentColor"/></g></svg> </a> 472 </li> 473 474 475 <li class="connect-icon connect-icon--spotify"> 476 <a href="https://open.spotify.com/show/1QlGMoMsAncoBdH9Uz5u4N?si=F5M0J5ilSOKdn5ekonAiMA" target="_blank" rel="noopener"> 477 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><g id="Ellipse_1" data-name="Ellipse 1" fill="none" stroke="currentColor" stroke-width="2"> 478 <circle cx="16" cy="16" r="16" stroke="none"/><circle cx="16" cy="16" r="15" fill="none"/></g><path id="Spotify-Icon-White-Logo.wine" d="M14.324,7.979C11.423,6.256,6.637,6.1,3.868,6.938a.842.842,0,0,1-.489-1.611c3.179-.965,8.464-.779,11.8,1.2a.842.842,0,0,1-.859,1.448m-.095,2.552a.7.7,0,0,1-.965.231A11.813,11.813,0,0,0,4.3,9.713.7.7,0,1,1,3.888,8.37,13.129,13.129,0,0,1,14,9.566a.7.7,0,0,1,.231.965m-1.1,2.451a.561.561,0,0,1-.771.187c-2.113-1.292-4.774-1.583-7.906-.868a.561.561,0,1,1-.25-1.093c3.428-.784,6.369-.446,8.741,1a.561.561,0,0,1,.186.771M9,0a9,9,0,1,0,9,9A9,9,0,0,0,9,0" transform="translate(7 7)" fill="currentColor" /></svg> </a> 479 </li> 480 481 482 </ul> 483 484</nav> 485 </div> 486 487 </div> 488 489 <div class="row gutters tray-row tray-row--btm tray-row--b"> 490 491 <div class="col-12 tray-col tray-col--btm vmarg vmarg-none@md"> 492 493 <nav class="nav nav--vertical nav--tray nav--tray-btm-col nav--tray-btm-col-1" role="navigation"> 494 <h3 class="tray-nav__title iblock h3">About The China Project</h3><ul class="menu menu--tray menu--tray-btm-col-1"><li id="menu-item-189587" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-189587 menu-item-depth-0 no-children vmarg-mini vmarg-none@lg"><a href="https://thechinaproject.com/about-2/" class="menu-target menu-link menu-target--loc-mega-about">About The China Project</a></li><li id="menu-item-191032" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-191032 menu-item-depth-0 no-children vmarg-mini vmarg-none@lg"><a href="https://thechinaproject.com/the-china-project-manifesto/" class="menu-target menu-link menu-target--loc-mega-about">Manifesto</a></li><li id="menu-item-192303" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-192303 menu-item-depth-0 no-children vmarg-mini vmarg-none@lg"><a href="https://thechinaproject.com/contact/" class="menu-target menu-link menu-target--loc-mega-about">Contact</a></li></ul> </nav> 495 496 </div> 497 498 </div> 499 500 </div> 501 502</div> 503 </div> 504 </div> 505 506 <button id="js-tray__bg" class="tray__bg" type="button"> 507 <span class="screen-reader-text">Close expanded menu</span> 508 </button> 509 510 </div> 511 512 <div class="js-ticker ticker ticker--desktop visible@lg"> 513 <div" class="ticker__holder"> 514 <div class="ticker__inner"> 515 <h2 class="ticker__title iblock">Trending</h2><nav class="nav nav--horizontal nav--ticker iblock"><ul class="listless"><li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-229881 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/tag/taiwan/" class="menu-target menu-link menu-target--loc-ticker">#taiwan</a></li><li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-274814 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/tag/espionage/" class="menu-target menu-link menu-target--loc-ticker">#espionage</a></li><li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-227376 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/tag/lgbtq/" class="menu-target menu-link menu-target--loc-ticker">#lgbtq</a></li><li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-274815 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/tag/artificial-intelligence/" class="menu-target menu-link menu-target--loc-ticker">#artificialintelligence</a></li><li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-226310 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/tag/xinjiang/" class="menu-target menu-link menu-target--loc-ticker">#xinjiang</a></li></ul></nav> </div> 516 </div> 517 </div> 518 519 <div class="site-content-wrap">
520 <div id="site-content" class="site-content" tabindex="-1"> 521<main id="main" class="main js-piano-watchlist piano-watchlist piano-watchlist--prefs" role="main"> 522 523 <section class="section section--my-acct light-area light-area--white"> 524 <header class="loop-header red-links"> 525 <div class="container container--xxl"> 526 527 <div class="row show-if-piano-user"> 528 <div class="col-12 col-9@xl"> 529 530 <div class="card__meta"> 531 <div class="card__cat card--loop__cat meta2">My Account</div> 532 </div> 533 534 <h1 class="h1">My Account</h1> 535 536 <div id="js-account__frame" class="inline-frame inline-frame--account"></div> 537 538 </div> 539 </div> 540 541 <div class="row flex-center-top show-if-not-piano-user"> 542 <div class="col-12 col-6@lg text-align-center"> 543 544 545 <h1 class="h1 screen-reader-text">Log In</h1> 546 547 <div id="js-login__frame" class="inline-frame inline-frame--login"></div> 548 549 </div> 550 </div> 551 552 </div> 553 </header> 554 </section> 555 556</main> 557 558 </div> 559 </div> 560 </div> 561 </div> 562 563 <div id="js-site-footer__wrap" class="site-footer__wrap"> 564 <footer id="js-site-footer" class="site-footer clearfix"> 565 <div class="footer-row-1 footer-row light-area light-area--offwhite clearfix"> 566 <div class="footer-row-1__inner footer-row__inner container container--full-width"> 567 <div class="row gutters"> 568 569 <div class="footer-top-left col-12 col-6@md col-4@xl"> 570 571 <div class="site-logo site-logo--footer"> 572 <a href="https://thechinaproject.com/" rel="home"> 573 <span class="screen-reader-text">The China Project</span> 574 <svg id="Layer_2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100.64 100.64"> 575 <path class="cls-1" style="fill:#ef4453;" d="M49.42,45.87c-4.1,0-13.35,2.36-13.35,12.79s10.71,12.3,12.37,12.3c1,0,12.77,.03,22.06,.04h25.68c3.32-7.35,4.92-15.6,4.32-24.21C98.57,19.08,74.52-1.82,46.8,.13,32.14,1.15,19.39,8.37,10.91,19.03H51.37c12.65,0,22.94,10.29,22.94,22.94s-10.29,22.94-22.94,22.94c-1.95-3.75-3.06-6.47-4.8-10.15,1.32,.07,4.8,0,4.8,0,4.1,0,13.35-2.36,13.35-12.79s-10.71-12.3-12.44-12.3c-1.29,0-27.11-.04-38.81-.06H4.46C1.13,36.96-.48,45.22,.12,53.83c1.94,27.72,25.99,48.62,53.71,46.68,14.66-1.03,27.41-8.24,35.89-18.91H49.42c-12.72,0-22.94-10.29-22.94-22.94s10.22-22.94,22.94-22.94c1.88,3.75,2.99,6.47,4.8,10.15-1.39-.07-4.8,0-4.8,0"/> 576 </svg> 577 </a> 578 </div> 579 580 <div class="quote__wrap"> 581 <blockquote><strong>"A jewel in the crown of China reporting.</strong> I look to it daily... It adds so much insight into the real China."</blockquote> <footer> 582 <p class="quote__name">Max Baucus</p> 583 <p class="quote__position">Former U.S. Ambassador to China</p> 584 </footer> 585 </div> 586 587 <div class="site-footer__cta has-btns has-btns--wire"><p><a href="https://thechinaproject.com/subscribe/">Get Premium Access</a></p> 588</div> 589 590 <nav class="nav nav--horizontal nav--connect"> 591 592 <ul class="connect-icons listless"> 593 594 595 <li class="connect-icon connect-icon--linkedin"> 596 <a href="https://www.linkedin.com/company/thechinaproject/" target="_blank" rel="noopener"> 597 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><g fill="none" stroke="currentColor" stroke-width="2"><circle cx="16" cy="16" r="16" stroke="none"/><circle cx="16" cy="16" r="15" fill="none"/></g><g transform="translate(-28.995 -20.796)"><path d="M38.729,43.931h2.937V33.651H38.729Zm11.212-9.694a4.576,4.576,0,0,0-3.87-.135v-.451H43.135v10.28h2.937V37.356a1.561,1.561,0,0,1,.535-.557,1.277,1.277,0,0,1,.808-.23,1.82,1.82,0,0,1,1.09.23.923.923,0,0,1,.5.891v6.241h2.937V37.69A4.173,4.173,0,0,0,49.941,34.237ZM40.2,28.878a1.836,1.836,0,1,0,1.836,1.836A1.835,1.835,0,0,0,40.2,28.878Z" transform="translate(0 0)" fill="currentColor"/></g></svg> </a> 598 </li> 599 600 601 <li class="connect-icon connect-icon--facebook"> 602 <a href="https://www.facebook.com/thechinaprojectnews" target="_blank" rel="noopener"> 603 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><g fill="none" stroke="currentColor" stroke-width="2"><circle cx="16" cy="16" r="16" stroke="none"/><circle cx="16" cy="16" r="15"/></g><path d="M17.37 10.901h2.3V7.688h-2.3c-1.9 0-3.452 1.892-3.452 4.217v1.622h-2.3v3.224h2.3v7.8h2.877v-7.8h2.877v-3.225h-2.877v-1.653c0-.556.305-.972.575-.972z" fill="currentColor"/></svg> </a> 604 </li> 605 606 607 <li class="connect-icon connect-icon--instagram">
608 <a href="https://www.instagram.com/thechinaproj/" target="_blank" rel="noopener"> 609 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><g fill="none" stroke="currentColor" stroke-width="2"><circle cx="16" cy="16" r="16" stroke="none"/><circle cx="16" cy="16" r="15" fill="none"/></g><g transform="translate(-24.567 -26.568)"><path d="M45.515,35.635H35.7A1.7,1.7,0,0,0,34,37.328v9.823a1.7,1.7,0,0,0,1.7,1.692h9.819a1.7,1.7,0,0,0,1.7-1.692V37.328A1.7,1.7,0,0,0,45.515,35.635Zm-2.076,2.073a.5.5,0,0,1,.5-.5h1.2a.5.5,0,0,1,.5.5v1.2a.5.5,0,0,1-.5.5h-1.2a.5.5,0,0,1-.5-.5v-1.2Zm-2.833,1.7a2.827,2.827,0,1,1-2.831,2.827A2.829,2.829,0,0,1,40.606,39.409Zm5.358,7.65a.525.525,0,0,1-.525.523H35.788a.525.525,0,0,1-.525-.523V41.291h1.361a4.1,4.1,0,1,0,7.968,0h1.371v5.768Z" fill="currentColor"/></g></svg> </a> 610 </li> 611 612 613 <li class="connect-icon connect-icon--spotify"> 614 <a href="https://open.spotify.com/show/1QlGMoMsAncoBdH9Uz5u4N?si=F5M0J5ilSOKdn5ekonAiMA" target="_blank" rel="noopener"> 615 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><g id="Ellipse_1" data-name="Ellipse 1" fill="none" stroke="currentColor" stroke-width="2"> 616 <circle cx="16" cy="16" r="16" stroke="none"/><circle cx="16" cy="16" r="15" fill="none"/></g><path id="Spotify-Icon-White-Logo.wine" d="M14.324,7.979C11.423,6.256,6.637,6.1,3.868,6.938a.842.842,0,0,1-.489-1.611c3.179-.965,8.464-.779,11.8,1.2a.842.842,0,0,1-.859,1.448m-.095,2.552a.7.7,0,0,1-.965.231A11.813,11.813,0,0,0,4.3,9.713.7.7,0,1,1,3.888,8.37,13.129,13.129,0,0,1,14,9.566a.7.7,0,0,1,.231.965m-1.1,2.451a.561.561,0,0,1-.771.187c-2.113-1.292-4.774-1.583-7.906-.868a.561.561,0,1,1-.25-1.093c3.428-.784,6.369-.446,8.741,1a.561.561,0,0,1,.186.771M9,0a9,9,0,1,0,9,9A9,9,0,0,0,9,0" transform="translate(7 7)" fill="currentColor" /></svg> </a> 617 </li> 618 619 620 </ul> 621 622</nav> 623 624 </div> 625 626 <div class="footer-top-right col-12 col-6@md col-8@xl red-links"> 627 <div class="row"> 628 <div class="footer-nav-col col-6 col-3@xl"> 629 <h3 class="footer-nav-col__title h4">Subscribe</h3><nav class="footer-nav-col__nav nav nav--vertical"><ul class="menu"><li id="menu-item-190735" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-190735 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/subscribe/" class="menu-target menu-link menu-target--loc-footer-subscribe">Premium Subscription</a></li><li id="menu-item-203782" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-203782 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/newsletters/" class="menu-target menu-link menu-target--loc-footer-subscribe">Newsletters</a></li><li id="menu-item-177830" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-177830 menu-item-depth-0 no-children"><a target="_blank" rel="noopener noreferrer" href="https://thechinaproject.com/podcasts/" class="menu-target menu-link menu-target--loc-footer-subscribe">Podcasts</a></li><li id="menu-item-177836" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-177836 menu-item-depth-0 no-children"><a href="https://www.youtube.com/channel/UCqgLGmwFAy6XQtvT5oVBeCw/" class="menu-target menu-link menu-target--loc-footer-subscribe">Video</a></li></ul></nav> </div> 630 <div class="footer-nav-col col-6 col-3@xl"> 631 <h3 class="footer-nav-col__title h4">About</h3><nav class="footer-nav-col__nav nav nav--vertical"><ul class="menu"><li id="menu-item-189297" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-189297 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/about-2/" class="menu-target menu-link menu-target--loc-footer-about">About The China Project</a></li><li id="menu-item-191031" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-191031 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/the-china-project-manifesto/" class="menu-target menu-link menu-target--loc-footer-about">The China Project Manifesto</a></li><li id="menu-item-201470" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-201470 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/serica-initiative/" class="menu-target menu-link menu-target--loc-footer-about">Nonprofit | The Serica Initiative</a></li><li id="menu-item-281465" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-281465 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/student-ambassadors/" class="menu-target menu-link menu-target--loc-footer-about">Student Ambassador Program</a></li><li id="menu-item-189420" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-189420 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/contact/" class="menu-target menu-link menu-target--loc-footer-about">Contact Us (including pitch guidelines)</a></li></ul></nav> </div> 632 <div class="footer-nav-col col-6 col-3@xl"> 633 <h3 class="footer-nav-col__title h4">Business Services</h3><nav class="footer-nav-col__nav nav nav--vertical"><ul class="menu"><li id="menu-item-202011" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-202011 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/china-consulting/" class="menu-target menu-link menu-target--loc-footer-business-services">China Consulting Marketplace</a></li><li id="menu-item-190708" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-190708 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/corporate-subscriptions/" class="menu-target menu-link menu-target--loc-footer-business-services">Corporate Subscriptions</a></li></ul></nav> </div> 634 <div class="footer-nav-col col-6 col-3@xl"> 635 <h3 class="footer-nav-col__title h4">Advertise</h3><nav class="footer-nav-col__nav nav nav--vertical"><ul class="menu"><li id="menu-item-189421" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-189421 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/advertising/" class="menu-target menu-link menu-target--loc-footer-advertise">Advertise with Us</a></li><li id="menu-item-189425" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-189425 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/event-sponsorship/" class="menu-target menu-link menu-target--loc-footer-advertise">Event Sponsorship</a></li></ul></nav> </div> 636 </div> 637 </div> 638 639 </div> 640 </div> 641 </div> 642 643 <div class="footer-row-2 footer-row dark-area dark-area--black clearfix"> 644 <div class="footer-row-2__inner footer-row__inner container container--full-width"> 645 <div class="row"> 646
647 <div class="site-footer__copyright"> 648 © 2026 TheChinaProject.com. All Rights Reserved. </div> 649 650 <nav class="nav-footer-utility nav nav--horizontal nav--with-pipes"> 651 <ul class="menu"> 652 <li id="menu-item-192335" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-192335 menu-item-depth-0 no-children"><a href="https://thechinaproject.com/privacy-policy/" class="menu-target menu-link menu-target--loc-footer-utility-menu">Privacy</a></li> </ul> 653 </nav> 654 655 </div> 656 </div> 657 </div> 658 659 </footer> 660 661 </div> 662 663 </div> 664 665 </div> 666 667 <div class="piano-frame__wrap piano-frame__wrap--fixed piano-frame__wrap--bar"> 668 <div id="js-piano-bar" class="piano-frame piano-frame--fixed piano-frame--bar"></div> 669</div> 670
670<script id="pianojs-init" type="text/javascript"> 671;(function($){ 672 673 // ---------------------------------- 674 // Piano state 675 // ---------------------------------- 676 677 window.PianoESPConfig = { 678 id: 199 }; 679 680 tp = window.tp || []; 681 682 // ---------------------------------- 683 // SPCH state 684 // ---------------------------------- 685 686 var loginFrameLoadStarted = false; 687 var acctFrameLoadStarted = false; 688 var paywallEngaged = false; 689 690 691 // ---------------------------------- 692 // Selectors 693 // ---------------------------------- 694 695 // Outermost container 696 var customPianoModalSel = '#js-members-modal'; 697 698 var accountAreaSel = '#js-account__frame'; 699 var accountLoginSel = '#js-login__frame'; 700 701 702 // ---------------------------------- 703 // Subscribe to mailing list 704 // ---------------------------------- 705 706 function subscribeComplete(iframeId, success, feedbackStr, object) { 707 708 spchLog('subscribeComplete'); 709 710 if ( typeof object !== 'object' ) { 711 var object = {}; 712 } 713 714 object.success = success; 715 716 if ( typeof feedbackStr !== 'string' ) { 717 var feedbackStr = ''; 718 } 719 720 // Success! 721 if ( success ) { 722 723 var message = (feedbackStr) ? feedbackStr : 'Subscribed!'; 724 725 spchLog(message); 726 727 if ( iframeId ) { 728 sendPostMessageToPiano(iframeId, true, message, object); 729 } else { 730 alert(message); 731 console.error('subscribeComplete success, but iframe missing.'); 732 } 733 734 // Failed! 735 } else { 736 737 var message = 'Sorry, something went wrong while subscribing. Please leave this page open and contact [email protected]. ' + feedbackStr; 738 739 console.error(message); 740 741 if ( iframeId ) { 742 sendPostMessageToPiano(iframeId, false, message, object); 743 } else { 744 alert(message); 745 console.error('subscribeComplete failed, but iframe missing.'); 746 } 747 748 } 749 750 751 } 752 753 function subscribeToLists(iframeId, email, listIDs) { 754 755 spchLog('subscribeToLists'); 756 spchLog(iframeId, email, listIDs); 757 758 if ( window.PianoESPConfig && typeof window.PianoESPConfig === 'object' ) { 759 window.PianoESPConfig.email = window.PianoESPConfig.email || email; 760 } else { 761 console.error('window.PianoESPConfig not found.'); 762 subscribeComplete(iframeId, false, '(Error code 0.)', {}); 763 return; 764 } 765 766 if ( window.PianoESP && typeof window.PianoESP.handleUserDataPromise === 'function' ) { 767 768 var subscribePromise = window.PianoESP.handleUserDataPromise({ 769 email: email, 770 squads: listIDs 771 }); 772 773 spchLog('subscribePromise initiated', subscribePromise); 774 775 subscribePromise 776 .then(function(success) { 777 778 if ( success ) { 779 spchLog('subscribePromise success!', success); 780 subscribeComplete(iframeId, true, 'Success!', { promiseResponse: success }); 781 LUX.addData('subscription.complete', 1); 782 } else { 783 console.error('subscribePromise error :(', success); 784 subscribeComplete(iframeId, false, '(Error code STL1.)', { promiseResponse: success }); 785 } 786 787 }, function(error) { 788
789 // @todo: Figure out how it responds to errors 790 console.error('subscribePromise error :(', error); 791 subscribeComplete(iframeId, false, '(Error code STL2.)', { promiseResponse: error }); 792 793 }); 794 795 } else { 796 797 console.error('PianoESP.handleUserDataPromise not found.'); 798 subscribeComplete(iframeId, false, '(Error code STL3.)', {}); 799 800 } 801 802 } 803 804 function isValidEmail(email) { 805 const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 806 return re.test(String(email).toLowerCase()); 807 } 808 809 function startsWith(haystack, needle) { 810 811 if ( typeof haystack === 'string' && haystack && typeof needle === 'string' && needle ) { 812 return haystack.lastIndexOf(needle, 0) === 0; 813 } else { 814 return false; 815 } 816 817 } 818 819 /** 820 * Function to send data upstream to Piano template 821 * @param iframeId - Element id of the Piano iframe 822 * @param success - true/false. Status of the message 823 * @param message - Error message text 824 * @param object - Additional data, like the the field that triggered the error 825 */ 826 function sendPostMessageToPiano(iframeId, success, message, object) { 827 828 spchLog('sendPostMessageToPiano -- ' + iframeId); 829 830 var iframe = jQuery('#' + iframeId); 831 832 if (iframe.length) { 833 iframe[0].contentWindow.postMessage({ 834 piano: { 835 success: success, 836 message: message, 837 object: object 838 } 839 }, '*'); 840 } 841 842 } 843 844 /** 845 * Sets cookie for later use in custom variables 846 * @param name - Custom variable's name 847 * @param value - Custom variable's value 848 */ 849 function pianoSetCustomVariableCookie(name, value) { 850 851 // Get all existing values from the cookie 852 var cookieValue = pianoReadCustomVariableCookie(); 853 854 // Set the value 855 cookieValue[name] = value; 856 857 // Get cookie expiration date in 3 years 858 var d = new Date(); d.setTime(d.getTime() + (94608000000)); var expires = "expires=" + d.toUTCString(); 859 860 // Write the cookie value 861 document.cookie = "__pcvc=" + JSON.stringify(cookieValue) + ";" + expires + ";path=/"; 862 863 } 864
865 /** 866 * Read values from cookie and convert them from JSON 867 * @param specificName (optional) Name specific value from the set 868 * @returns {*} If specificName is specified - returns a single value, otherwise returns a JSON object with all values 869 */ 870 function pianoReadCustomVariableCookie(specificName) { 871 872 var cookieValue; 873 874 try { 875 876 // Try to get the cookie value with regexp 877 var match = document.cookie.match(new RegExp('(^| )__pcvc=([^;]+)')); 878 879 if (match) { 880 881 // If cookie with this name was found - try to parse the JSON value 882 cookieValue = JSON.parse(match[2]); 883 884 } 885 886 } catch (e) { 887 888 // By default - set value as empty object 889 cookieValue = {}; 890 891 } 892 893 if ( ! cookieValue ) { 894 895 // By default - set value as empty object 896 cookieValue = {}; 897 898 } 899 900 if (typeof specificName != "undefined") { 901 902 // Get the specific value from the set 903 if (typeof cookieValue[specificName] != "undefined") { 904 return cookieValue[specificName]; 905 } 906 907 return null; 908 909 } 910 911 return cookieValue; 912 913 } 914 915 (function() { 916 917 // Read all values from cookie 918 var pianoCustomVariableCookie = pianoReadCustomVariableCookie(); 919 920 // Set custom variables from cookie on each page load 921 for (var i in pianoCustomVariableCookie) { 922 tp.push(['setCustomVariable', i, pianoCustomVariableCookie[i]]); 923 } 924 925 })(); 926 927 928 // ---------------------------------- 929 // Methods 930 // ---------------------------------- 931 932 function logout() { 933 934 spchLog('logout --'); 935 936 // if ( typeof closeModal === 'function' ) { 937 938 // var $modal = $(customPianoModalSel); 939 940 // closeModal($modal, function(){ 941 942 spchLog('closeModal (should be) complete (in response to logout).'); 943 944 if ( typeof tp === 'object' && typeof tp.pianoId === 'object' && typeof tp.pianoId.logout === 'function' ) { 945 tp.pianoId.logout(function(){ 946 spchLog('logout -- logged out.'); 947 acctFrameLoadStarted = false; 948 loginFrameLoadStarted = false; 949 eraseCookie('spch_visitor_uuid'); 950 eraseCookie('spch_visitor_name'); 951 eraseCookie('spch_visitor_email'); 952 eraseCookie('__utp'); 953 eraseCookie('__idr'); 954 eraseCookie('tcprUserType'); 955 location.reload(); 956 }); 957 } else { 958 console.error('tp.pianoId.logout() not found.'); 959 } 960 961 962 // }); 963 964 // } 965 966 } 967 968 function openPianoIDModal() { 969 970 spchLog('openPianoIDModal --'); 971 972 var $modalOpenBtn = $('button[data-modal-open="#js-members-modal"]'); 973 var expanded = $modalOpenBtn.attr('aria-expanded'); 974 expanded = ( expanded === true || expanded === 'true' ); 975 976 if ( ! expanded ) { 977 $modalOpenBtn.click(); 978 } 979 980 } 981 982 // @todo: UPDATE TO newer global method 983 function closePianoIDModal() { 984 985 spchLog('closePianoIDModal --'); 986 987 var $modalCloseBtn = $('button[data-modal-close="#js-members-modal"]'); 988 var expanded = $modalCloseBtn.attr('aria-expanded'); 989 expanded = ( expanded === true || expanded === 'true' ); 990 991 if ( expanded ) { 992 $modalCloseBtn.click(); 993 } 994 995 } 996 997 function startLogin() { 998 999 spchLog('startLogin -- loginFrameLoadStarted?', loginFrameLoadStarted); 1000 1001 $(window).trigger('loginRevealStart'); 1002 1003 if ( ! loginFrameLoadStarted ) { 1004 1005 loginFrameLoadStarted = true; 1006 1007 spchLog('Setting loginFrameLoadStarted = true, then tp.pianoId.show()', loginFrameLoadStarted); 1008 1009 tp.pianoId.show(); 1010 1011 } 1012 1013 } 1014 1015 // Loads Piano account iframe 1016 // (previously preloaded in a hidden modal, now loaded in the body of a designated page) 1017 function loadAcct() { 1018 1019 spchLog('loadAcct() -- acctFrameLoadStarted?', acctFrameLoadStarted); 1020 1021 if ( ! acctFrameLoadStarted ) { 1022 1023 acctFrameLoadStarted = true; 1024 1025 tp.myaccount.show({ 1026 containerSelector: accountAreaSel, 1027 displayMode: 'inline', 1028 loginRequired: function() { 1029 1030 spchLog('loadAcct -- myacct show login required'); 1031 1032 } 1033 }); 1034 1035 } 1036 1037 } 1038 1039 var $regArea; 1040 var $restOfArticle; 1041 1042 function enablePaywall() { 1043 1044 if ( tp.pianoId.isUserValid() ) { 1045 return; 1046 } 1047 1048 spchLog('enablePaywall --'); 1049 1050 // Remove ESP signup 1051 $('.piano-frame__wrap--esp').remove(); 1052 1053 $regArea = $('#js-reg-wrap'); 1054 1055 if ( typeof $restOfArticle !== 'object' ) { 1056 1057 // Remove from DOM and store to var 1058 $restOfArticle = $regArea.nextAll().not('.post-recs').detach(); 1059 $("#js-reg-wrap").parent().css('position','static'); 1060 // paywallSpace(); 1061 1062 } 1063 1064 paywallEngaged = true; 1065 1066 } 1067 1068 function paywallSpace() { 1069 $("#js-reg-wrap").next().css('margin-top', $("#js-reg-wrap").outerHeight(true)); 1070 } 1071 1072 function disablePaywall() { 1073 1074 spchLog('disablePaywall -- paywallEngaged?', paywallEngaged); 1075 1076 if ( paywallEngaged ) { 1077 1078 if ( typeof $regArea === 'object' && $regArea.length && typeof $restOfArticle === 'object' && $restOfArticle.length ) { 1079 $restOfArticle.insertAfter($regArea); 1080 $restOfArticle = null; 1081 } else { 1082 console.warn('Disable failed.'); 1083 } 1084 1085 paywallEngaged = false;
1086 1087 } 1088 1089 } 1090 1091 function addToMailingLists() { 1092 1093 spchLog('addToMailingLists --'); 1094 1095 1096 var email = tp.pianoId.getUser().email; 1097 var API_URL = "\/\/api-esp.piano.io"; 1098 var SITE_ID = decodeURIComponent( 'gukdowMUpu' ); 1099 var MAILING_LISTS = JSON.parse( decodeURIComponent( '%5B%5D' ) ); 1100 1101 var body = {email: email, sqids: MAILING_LISTS}; 1102 var xhr = new XMLHttpRequest(); 1103 xhr.open('POST', API_URL + '/tracker/lucid/sub/' + SITE_ID, true); 1104 xhr.setRequestHeader('Content-type', 'application/json'); 1105 xhr.send(JSON.stringify(body)); 1106 1107 } 1108 1109 function hideBottomBar() { 1110 spchLog('hideBottomBar --'); 1111 $('#js-piano-bar').hide(); 1112 } 1113 1114 function hideAllFrames() { 1115 spchLog('hideAllFrames --'); 1116 var $customPianoModal = $(customPianoModalSel); 1117 $customPianoModal.find('.modal-frame').removeClass('active'); 1118 $customPianoModal.removeClass('login-frame-active account-frame-active'); 1119 } 1120 1121 // Must be run within a Piano JS hook (e.g. 'init') 1122 function userHasResource(resourceID, callback) { 1123 1124 spchLog('userHasResource - Checking access for "' + resourceID + '"'); 1125 1126 var params = { 1127 rid: resourceID 1128 }; 1129 1130 var tpCallback = function(response) { 1131 1132 var hasAccess = (response.access && response.access.granted); 1133 1134 spchLog('Has access to "' + resourceID + '"? ' + (hasAccess ? 'YES' : 'NO')); 1135 1136 // Before uncommenting: ensure compatibility with paid-newsletters.js 1137 // if ( hasAccess ) { 1138 // 1139 // // Add html.piano-access-WHATEVER 1140 // var thisClass = 'piano-access-' + resourceID; 1141 // 1142 // // Remove spaces 1143 // thisClass = thisClass.replace(' ', ''); 1144 // 1145 // $('html').addClass(thisClass); 1146 // 1147 // } 1148 1149 callback(hasAccess, resourceID); 1150 1151 } 1152 1153 // https://docs.piano.io/checking-access/ 1154 tp.api.callApi('/access/check', params, tpCallback); 1155 1156 } 1157 1158 // Check if user has access to any of a set of Piano resources 1159 // Must be run within a Piano JS hook (e.g. 'init') 1160 function userHasResources(resourceIDs, callback) { 1161 1162 spchLog('userHasResources'); 1163 1164 // tp.pianoId.isUserValid() Might check this first. 1165 if ( ! tp.pianoId.isUserValid() ) { 1166 spchLog('userHasResources - Not a valid user!'); 1167 callback([]); 1168 } 1169 1170 var leftToCheck = resourceIDs.length; 1171 var userResourceIDs = []; 1172 1173 $.each(resourceIDs, function(i, resourceID) { 1174 1175 userHasResource(resourceID, function(hasAccess, thisRID) { 1176 1177 if ( hasAccess ) { 1178 userResourceIDs.push(thisRID); 1179 } 1180 1181 leftToCheck--; 1182 1183 // Done checking all? 1184 if ( leftToCheck === 0 ) { 1185 1186 // Before uncommenting: ensure compatibility with paid-newsletters.js 1187 // $('html').addClass('accesses-retrieved'); 1188 1189 callback(userResourceIDs); 1190 1191 return; 1192 1193 } 1194 1195 }); 1196 1197 }); 1198 1199 } 1200 1201 var freeResources = ['BASIC1']; 1202 var paidResources = ['ACCESS1', 'BR4PSQ09', 'BRJ0JBSX', 'R2O59EE', 'GROUP', 'R090PZA']; 1203 var isMidCheckout = false; 1204 1205 /* 1206 // Note: Free access is a legacy feature. We don't prioritize them anymore; they should not get Pro features. 1207 function userHasFreeAccess(callback) { 1208 userHasResources(freeResources, function(resourceIDs) { 1209 var hasFreeResource = resourceIDs.length > 0; 1210 callback(hasFreeResource); 1211 }); 1212 } 1213 1214 function userHasPaidAccess(callback) { 1215 userHasResources(paidResources, function(resourceIDs) { 1216 var hasPaidResource = resourceIDs.length > 0; 1217 callback(hasPaidResource); 1218 }); 1219 } 1220 */ 1221 1222 function getUserType(callback, forceRecheck) { 1223 1224 spchLog('getUserType'); 1225 1226 var userType = ''; 1227 // var forceRecheck = (typeof forceRecheck ==='boolean') ? forceRecheck : false; 1228 var forceRecheck = true; 1229 1230 if ( ! forceRecheck ) { 1231 1232 // Check cookie first if we can (to save time/API calls) 1233 userType = getCookie('spch_visitor_type'); 1234 1235 if ( userType && ( userType === 'paid' || userType === 'free' ) ) { 1236 callback(userType); 1237 return; 1238 } 1239 1240 } 1241 1242 userHasResources(paidResources, function(resourceIDs) { 1243 1244 var hasAnyPaidResources = (resourceIDs.length); 1245 1246 if ( hasAnyPaidResources ) { 1247 userType = 'paid'; 1248 } else { 1249 userType = 'free'; 1250 } 1251 1252 callback(userType); 1253 1254 }); 1255 1256 } 1257 1258 //@TODO find a better place to group newsletters code 1259 function initTcprNewsletters() { 1260 $('#js-multinews-email').val( tp.pianoId.getUser().email ); 1261 $('#js-multinews-email').prop('readonly', true); 1262 $('.spch-layout--multinews #js-multinews-submit t').text('Update'); 1263 // single/mid articles 1264 $('#spch-email').val( tp.pianoId.getUser().email ); 1265 $('#spch-email').prop('readonly', true); 1266 1267 const user = tp.pianoId.getUser(); 1268 1269 tcprGetUserType(user, (userType) => { 1270 if(userType !== 'loggedIn' && userType !== 'TCP Basic') { 1271 $("#js-piano-newsletter-hero").removeClass("non-interactive"); 1272 $('.hide-for-premium').hide(); 1273 } 1274 }); 1275 1276 } 1277 1278 function flagAsUser(forceRecheck, callback) { 1279 1280 getUserType(function(userType) { 1281 initTcprNewsletters(); 1282 1283 if ( userType === 'paid' ) { 1284 1285 $('html') 1286 .addClass('is-piano-user is-piano-user--paid not-piano-user--free') 1287 .removeClass('not-piano-user not-piano-user--paid is-piano-user--free') 1288 ; 1289
1290 setCookie('spch_visitor_type', userType, 1); 1291 1292 } else { 1293 1294 $('html') 1295 .addClass('is-piano-user is-piano-user--free not-piano-user--paid') 1296 .removeClass('not-piano-user not-piano-user--free is-piano-user--paid') 1297 ; 1298 1299 setCookie('spch_visitor_type', userType, 1); 1300 1301 } 1302 1303 if ( typeof callback === 'function' ) { 1304 callback(userType); 1305 } 1306 1307 }, forceRecheck); 1308 1309 LUX.addData('loggedIn', 'Yes'); 1310 1311 var $landingPageForm = $('.js-landing-page-form'); 1312 if( $landingPageForm.length && $('.js-hidden-piano-field').length === 0 ){ 1313 let inputEl = document.createElement("input"); 1314 inputEl.setAttribute('class', 'js-hidden-piano-field'); 1315 inputEl.setAttribute('type', 'hidden'); 1316 inputEl.setAttribute('name', 'MEMBERSHIP'); 1317 inputEl.setAttribute('tabindex', '-1'); 1318 inputEl.setAttribute('value', 'Paid Piano'); 1319 $landingPageForm.append(inputEl); 1320 } 1321 1322 } 1323 1324 function unflagAsUser() { 1325 1326 $('html') 1327 .addClass('not-piano-user not-piano-user--free not-piano-user--paid') 1328 .removeClass('is-piano-user is-piano-user--free is-piano-user--paid') 1329 ; 1330 1331 eraseCookie('spch_visitor_type'); 1332 eraseCookie('loginFired'); 1333 eraseCookie('tcprUserType'); 1334 1335 LUX.addData('loggedIn', 'No'); 1336 1337 } 1338 1339 function getCookie(name) { 1340 var nameEQ = name + "="; 1341 var ca = document.cookie.split(';'); 1342 for(var i=0;i < ca.length;i++) { 1343 var c = ca[i]; 1344 while (c.charAt(0)==' ') c = c.substring(1,c.length); 1345 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 1346 } 1347 return null; 1348 } 1349 1350 function setCookie(cName, cValue, expDays) { 1351 let date = new Date(); 1352 date.setTime(date.getTime() + (expDays * 24 * 60 * 60 * 1000)); 1353 const expires = "expires=" + date.toUTCString(); 1354 document.cookie = cName + "=" + cValue + "; " + expires + "; path=/"; 1355 } 1356 1357 function eraseCookie(name) { 1358 document.cookie = name+'=; Max-Age=-99999999; path=/'; 1359 } 1360 1361 1362 // ---------------------------------- 1363 // Callback handlers 1364 // ---------------------------------- 1365 1366 tp.push(["addHandler", "registrationSuccess", function (data){ 1367 1368 spchLog('registrationSuccess -- Turning off maybeRedirectBack() until checkout.', data); 1369 isMidCheckout = true; 1370 LUX.addData('registration.complete', 1); 1371 1372 window.dataLayer = window.dataLayer || []; 1373 window.dataLayer.push({ 1374 'event': 'sign_up', //Sent when a new user account is created, whether free or paid 1375 }); 1376 }]); 1377 1378 // triggers gtm purchase event when subscription is purchased 1379 tp.push(["addHandler", "checkoutComplete", function(data){ 1380 1381 if( data.type === "registration" && data.rid === "BASIC1" ) { 1382 setCookie('spch_visitor_pre_login_url', '', 1); 1383 } 1384 1385 getResourceAndTermNames(data.rid, data.termId, function(resourceName, termName) { 1386 // Push the data to Google Tag Manager dataLayer 1387 window.dataLayer = window.dataLayer || []; 1388 let pianoResource = resourceName || data.rid; 1389 let pianoTerm = termName || data.term_id; 1390 window.dataLayer.push({ 1391 'event': 'purchase', 1392 'ecommerce': { 1393 'currency': data.chargeCurrency, 1394 'value': data.chargeAmount, 1395 'transaction_id': data.paymentId, 1396 'coupon': data.promotionId || 'no_coupon', // Use 'no_coupon' if no promotionId is available 1397 'items': [{ 1398 'item_name': pianoResource, 1399 'variant': pianoTerm, 1400 'price': data.chargeAmount, 1401 }] 1402 } 1403 }); 1404 }); 1405 1406 if(data && data.rid) { 1407 var baseUrl = window.location.protocol + "//" + window.location.host; 1408 // Check if an edge subscriber 1409 if(tcprIsEdgeSubscriber(data.rid)) { 1410 window.location.href = baseUrl + "/chinaedge/"; 1411 } 1412 } 1413 }]); 1414 1415 function onCompleteUpgradePurchase(params) { 1416 // params = { termConversionId: 'term conversion id'} 1417 1418 const user = tp.pianoId.getUser(); 1419 1420 let oldTcprUserType = getCookie("tcprUserType"); 1421 tcprGetUserType(user, (userType) => { 1422 if(userType !== oldTcprUserType) { 1423 //maybe need to update the meter cookie here 1424 } 1425 }, true); 1426 } 1427 tp.push(["addHandler", "completeUpgradePurchase", onCompleteUpgradePurchase]); 1428 1429 /** 1430 * Makes an AJAX request to retrieve resource and term names from Piano API. 1431 * 1432 * @param {string} rid - The resource ID. 1433 * @param {string} termId - The term ID. 1434 * @param {function} callback - The function to call when the AJAX request is complete. 1435 * @returns {void} 1436 */ 1437 function getResourceAndTermNames(rid, termId, callback) { 1438 jQuery.ajax({ 1439 url: 'https://thechinaproject.com/wp-admin/admin-ajax.php', // Replace this with your WordPress AJAX URL 1440 type: 'POST', 1441 data: { 1442 action: 'get_piano_resource_and_term_name', 1443 rid: rid, 1444 term_id: termId, 1445 nonce: 'a64cf5cbe7', // Replace this with your actual nonce value 1446 }, 1447 success: function(response) { 1448 if (response.success) { 1449 callback(response.data.resource_name, response.data.term_name); 1450 } else { 1451 callback(null, null); 1452 } 1453 }, 1454 error: function() { 1455 callback(null, null); 1456 }, 1457 }); 1458 } 1459 1460 /** 1461 * This function identifies the user and sends their information to the Flywheel identify method. 1462 * If the user is logged in, it sends the user details. 1463 * If the user is not logged in, it generates a unique identifier for the visitor and sends it. 1464 */ 1465 function sendUserIdentityToFlywheel() { 1466 if (tp.pianoId.isUserValid()) { 1467 // Get user info when logged in 1468 const user = tp.pianoId.getUser(); 1469 1470 tcprGetUserType(user, (userType) => { 1471 if (!userType) { 1472 userType = 'loggedIn'; 1473 } 1474 1475 flywheel.identify( 1476 user.uid, 1477 { 1478 userId: user.uid, 1479 firstName: user.firstName, 1480 lastName: user.lastName, 1481 email: user.email, 1482 username: user.given_name, 1483 userType: userType, 1484 } 1485 ); 1486 }); 1487 } else { 1488 // Generate a unique identifier for the visitor 1489 const visitorId = 'visitor-' + Date.now() + '-' + Math.random().toString(36).substr(2, 9); 1490 1491 // Fill in the Flywheel identify method with visitor info 1492 flywheel.identify( 1493 visitorId, 1494 { 1495 userId: visitorId, 1496 userType: 'visitor', 1497 } 1498 ); 1499 } 1500 } 1501
1502 /** 1503 * Pushes a user login event to Google Tag Manager (GTM) only once by using a 'loginFired' cookie. 1504 * The cookie is set on the first event fire and lasts for 1 day. 1505 * 1506 * @function 1507 * @name pushUserLoginToGTM 1508 * @returns {void} 1509 */ 1510 function pushUserLoginToGTM() { 1511 // Cookie name 1512 const cookieName = 'loginFired'; 1513 1514 // If the function has been fired before, simply return 1515 if (getCookie(cookieName)) { 1516 return; 1517 } 1518 1519 // Add the Google Tag Manager login event 1520 window.dataLayer = window.dataLayer || []; 1521 if (!tp.pianoId.isUserValid()) { 1522 return; 1523 } 1524 1525 const user = tp.pianoId.getUser(); 1526 1527 tcprGetUserType(user, (userType) => { 1528 if (!userType) { 1529 userType = 'loggedIn'; 1530 } 1531 1532 window.dataLayer.push({ 1533 'event': 'login', // Sent when a user logs in 1534 userType: userType, 1535 userId: user.uid, 1536 }); 1537 1538 // Set the cookie after firing the event 1539 setCookie(cookieName, 'true', 1); 1540 }); 1541 } 1542 1543 /** 1544 * Pushes a user login event to Google Tag Manager (GTM) on every page load. 1545 * 1546 * @function 1547 * @name pushUserAndTypeToGTMonLoad 1548 * @returns {void} 1549 */ 1550 function pushUserAndTypeToGTMonLoad() { 1551 // Add the Google Tag Manager login event 1552 window.dataLayer = window.dataLayer || []; 1553 if (!tp.pianoId.isUserValid()) { 1554 return; 1555 } 1556 1557 const user = tp.pianoId.getUser(); 1558 1559 tcprGetUserType(user, (userType) => { 1560 if (!userType) { 1561 userType = 'loggedIn'; 1562 } 1563 1564 window.dataLayer.push({ 1565 userType: userType, 1566 userId: user.uid, 1567 }); 1568 }); 1569 } 1570 1571 /** 1572 * This function is particularly used to add user type in My Account dropdown menu when it is initially empty. 1573 * 1574 * @function addUsertypeInDropdown 1575 */ 1576 function addUsertypeInDropdown() { 1577 // Check if the container exists 1578 if($('#js-nav--acct .nav--acct__user').length > 0) { 1579 // Check if the span inside the container is empty 1580 if($('#js-nav--acct .nav--acct__user .nav--acct__user-type').text().trim() === "") { 1581 // Add a value to the container 1582 const user = tp.pianoId.getUser(); 1583 1584 tcprGetUserType(user, (userType) => { 1585 if(userType !== 'loggedIn') { 1586 $('#js-nav--acct .nav--acct__user .nav--acct__user-type').text(userType); 1587 } 1588 }); 1589 } 1590 } 1591 } 1592 1593 /** 1594 * Returns a Promise that resolves with the user type based on the user's access to paid resources. 1595 * The function checks each resource in the paidResourceIds array and sets the userType to the corresponding resource name if access is granted. 1596 * 1597 * @param {Object} user - The user object containing user information from tp.pianoId.getUser() 1598 * @returns {Promise<string>} A Promise that resolves with the user type (either 'loggedIn' or the corresponding resource name) 1599 */ 1600 function tcprGetUserType(user, callback, hardUpdate = false) { 1601 const paidResourceIds = [ 1602 { id: 'GROUP', name: 'TCP Group Subscription' }, 1603 { id: 'R090PZA', name: 'TCP Support Contribution' }, 1604 { id: 'BASIC1', name: 'TCP Basic' }, 1605 { id: 'ACCESS1', name: 'ChinaAccess' }, 1606 { id: 'R2O59EE', name: 'ChinaEdge' }, 1607 { id: 'BRJ0JBSX', name: 'Institutional' }, 1608 { id: 'BR4PSQ09', name: 'ChinaPro' }, 1609 { id: 'CHINAEDGE_FREE', name: 'ChinaEdge Free Trial' }, 1610 { id: 'CHINAEDGE1_OTP', name: 'ChinaEdge Tier 1' }, 1611 { id: 'CHINAEDGE2_OTP', name: 'ChinaEdge Tier 2' }, 1612 { id: 'CHINAEDGE3_OTP', name: 'ChinaEdge Tier 3' }, 1613 { id: 'CHINAEDGE4_OTP', name: 'ChinaEdge Tier 4' }, 1614 { id: 'CHINAEDGE5_OTP', name: 'ChinaEdge Tier 5' }, 1615 { id: 'CHINAEDGE1', name: 'ChinaEdge Tier 1' }, 1616 { id: 'CHINAEDGE2', name: 'ChinaEdge Tier 2' }, 1617 { id: 'CHINAEDGE3', name: 'ChinaEdge Tier 3' }, 1618 { id: 'CHINAEDGE4', name: 'ChinaEdge Tier 4' }, 1619 { id: 'CHINAEDGE5', name: 'ChinaEdge Tier 5' } 1620 ] 1621 1622 if (hardUpdate) { 1623 removeCookie("tcprUserType"); // Remove the existing cookie 1624 } 1625 1626 // Check if user type is already stored in a cookie 1627 let tcprUserType = getCookie("tcprUserType"); 1628 1629 if(tcprUserType && tcprUserType !== 'loggedIn') { 1630 callback(tcprUserType); 1631 } else { 1632 tcprUserType = 'loggedIn'; 1633 1634 const checkResourceAccess = (index) => { 1635 if (index < paidResourceIds.length) { 1636 userHasResource(paidResourceIds[index].id, (hasAccess) => { 1637 if (hasAccess) { 1638 tcprUserType = paidResourceIds[index].name; 1639 } 1640 checkResourceAccess(index + 1); 1641 }); 1642 } else { 1643 // Set tcprUserType in cookie when all resources are checked
1644 setCookie("tcprUserType", tcprUserType, 1); // Expires in 1 day 1645 callback(tcprUserType); 1646 } 1647 }; 1648 1649 checkResourceAccess(0); 1650 } 1651 } 1652 1653 tp.push(["addHandler", "checkoutClose", function (data){ 1654 1655 spchLog('Closed checkout modal. -- ', data); 1656 1657 if ( data.state && ( data.state === 'checkoutCompleted' || data.state === 'alreadyHasAccess' ) ) { 1658 1659 spchLog('checkoutClose - Signed up or already had access.'); 1660 1661 disablePaywall(); 1662 1663 addToMailingLists(); 1664 1665 closePianoIDModal(); 1666 1667 if ( data.state === 'checkoutCompleted' ) { 1668 1669 spchLog('checkoutClose - checkoutCompleted'); 1670 1671 isMidCheckout = false; 1672 1673 var forceRecheck = true; 1674 1675 flagAsUser(forceRecheck, function(){ 1676 if(data && data.rid) { 1677 1678 var baseUrl = window.location.protocol + "//" + window.location.host; 1679 // Check if an edge subscriber 1680 if(tcprIsEdgeSubscriber(data.rid)) { 1681 window.location.href = baseUrl + "/chinaedge/"; 1682 } 1683 } 1684 1685 maybeRedirectBack(); 1686 }); 1687 1688 LUX.addData('checkout.complete', 1); 1689 1690 } else { 1691 1692 spchLog('checkoutClose - alreadyHasAccess'); 1693 1694 maybeRedirectBack(); 1695 1696 } 1697 1698 } else { 1699 1700 spchLog('checkoutClose: Decided not to sign up? (State is neither checkoutCompleted nor alreadyHasAccess.)'); 1701 1702 } 1703 1704 }]); 1705 1706 tp.push(["addHandler", "externalCheckoutComplete", function (data){ 1707 1708 spchLog('externalCheckoutComplete -- ', data); 1709 1710 disablePaywall(); 1711 LUX.addData('externalCheckout.complete', 1); 1712 1713 var forceRecheck = true; 1714 flagAsUser(forceRecheck, function(){ 1715 var elseReload = true; 1716 maybeRedirectBack(elseReload); 1717 }); 1718 1719 }]); 1720 1721 function loginRequiredCallback(data) { 1722 1723 spchLog('loginRequiredCallback', data); 1724 1725 hideBottomBar(); 1726 1727 var wasWPLoginClick = ( typeof data.startScreen === 'string' && data.startScreen === 'login' ); 1728 1729 var wasMeterRegClick = ( typeof data.startScreen === 'string' && data.startScreen === 'register' ); 1730 1731 // Clicked external-event="login-needed" 1732 var wasPianoLoginClick = ( typeof data.eventName === 'string' && data.eventName === 'login-needed' ); 1733 1734 if ( ! wasWPLoginClick && ! wasMeterRegClick && ! wasPianoLoginClick ) { 1735 console.warn('loginRequiredCallback - Not initiated by a login request.'); 1736 return; 1737 } 1738 1739 // openPianoIDModal(); 1740 startLogin(); 1741 1742 } 1743 1744 /** 1745 * checks if logged-in user is a chinaEDGE user 1746 * */ 1747 function tcprIsEdgeSubscriber( userType ) { 1748 const chinaEdgeUserTypes = [ 1749 'CHINAEDGE1', 1750 'CHINAEDGE2', 1751 'CHINAEDGE3', 1752 'CHINAEDGE4', 1753 'CHINAEDGE5' 1754 ]; 1755 1756 // Check if the tcprUserType value is in the chinaEdgeUserTypes array 1757 return chinaEdgeUserTypes.includes(userType); 1758 } 1759 1760 tp.push(["addHandler", "startCheckout", function(data){ 1761 1762 spchLog('startCheckout', data); 1763 LUX.addData('checkout.started', 1); 1764 1765 }]); 1766 1767 tp.push(["addHandler", "loginRequired", function(data){ 1768 1769 spchLog('loginRequired', data); 1770 1771 loginRequiredCallback(data); 1772 1773 return false; 1774 1775 }]); 1776 1777 // Logged in without refreshing the page. Does NOT run on every page load. 1778 tp.push(["addHandler", "loginSuccess", function(params){ 1779 spchLog('loginSuccess', params); 1780 var forceRecheck = true; 1781 flagAsUser(forceRecheck); 1782 disablePaywall(); 1783 if ( typeof params.source === 'string' && params.source === 'OFFER' ) { 1784 closePianoIDModal(); 1785 } 1786 1787 //fly wheel signed in 1788 if (typeof flywheel !== "undefined") { 1789 flywheel.track("Signed In"); 1790 } else { 1791 console.error("Flywheel is not defined."); 1792 } 1793 }]); 1794 1795 tp.push(["addHandler", "meterActive", function(meterData){ 1796 spchLog('meterActive -- meterData', meterData); 1797 LUX.addData('meter.seen', 1); 1798 // spchLog("You've seen " + meterData.views + " out of " + meterData.maxViews + " free articles. You have" + meterData.viewsLeft + " articles left."); 1799 }]); 1800 1801 tp.push(["addHandler", "meterExpired", function(meterData){ 1802 spchLog('meterExpired -- meterData', meterData); 1803 enablePaywall(); 1804 LUX.addData('meter.expired', 1); 1805 }]); 1806 1807 tp.push(["addHandler", "beforeBrowserEvent", function(eventParams) { 1808 spchLog('beforeBrowserEvent -- eventParams', eventParams); 1809 return true; 1810 }]); 1811 1812 tp.push(["addHandler", "customEvent", function(event, iframeId) { 1813 1814 spchLog('customEvent - ' + event.eventName, event, iframeId); 1815 1816 switch (event.eventName) { 1817 1818 case 'login-needed': 1819 1820 loginRequiredCallback(event); 1821 1822 break; 1823 1824 case 'multinews-submit': 1825 1826 // event.params.params = more detailed params object than passed to event 1827 if ( typeof event.params.details === 'string' ) { 1828 var paramsDetailed = JSON.parse(event.params.details); 1829 spchLog('paramsDetailed', paramsDetailed); 1830 } 1831 1832 // Basic params sent via external-event-* attributes 1833 var params = event.params; 1834 var iframeId = ( typeof iframeId === 'undefined' ) ? params.iframeId : iframeId; 1835 var email = ''; 1836 1837 if ( typeof params.email !== 'undefined' && params.email.length > 0 ) { 1838 email = params.email; 1839 } 1840 1841 spchLog('multinews-submit - iframeId', iframeId); 1842 spchLog('multinews-submit - email', email); 1843 spchLog('multinews-submit - params', params); 1844 1845 var listIDs = []; 1846 1847 // Assume all params which are not empty, not 'email', and evaluate to a number, are valid. Push to list ID array 1848 for (var key in event.params) { 1849 if ( event.params.hasOwnProperty(key) && key !== 'email' && key !== 'details' && event.params[key] !== '' && typeof event.params[key] === 'string' ) { 1850 1851 var listIDStr = event.params[key]; 1852 var listIDLength = listIDStr.length; 1853 1854 if ( listIDLength > 0 && listIDLength < 11 ) { 1855 1856 if ( ! isNaN( parseInt(listIDStr) ) ) { 1857 1858 // Push string version 1859 listIDs.push(listIDStr); 1860 1861 } else { 1862 1863 // Will be "false" if checked then unchecked 1864 console.error('List ID is not a valid number:', listIDStr); 1865 1866 } 1867 1868 } else { 1869 1870 console.error('Invalid list ID length:', listIDStr); 1871 1872 } 1873 1874 } 1875 } 1876 1877 spchLog('listIDs', listIDs); 1878 1879 if ( typeof email === 'string' && email && isValidEmail(email) ) { 1880 1881 if ( listIDs.length > 0 ) { 1882 1883 subscribeToLists(iframeId, email, listIDs); 1884 1885 1886 } else { 1887 1888 sendPostMessageToPiano(iframeId, false, 'Please select at least 1 newsletter.', {type: 'validation'}); 1889 1890 } 1891 1892 } else { 1893 1894 sendPostMessageToPiano(iframeId, false, 'Please enter a valid email.', {type: 'validation'}); 1895 1896 } 1897 1898 break; 1899 1900 } 1901 1902 }]); 1903 1904 // ---------------------------------- 1905 // Init 1906 // ---------------------------------- 1907 1908 function maybeRememberCurrentURL() { 1909 1910 spchLog('maybeRememberCurrentURL()? No, this is an account or log in page.'); 1911 1912 } 1913 1914 function maybeRedirectBack(elseReload) { 1915 pushUserLoginToGTM(); 1916 1917 spchLog('maybeRedirectBack()? No. Disabled for this page.'); 1918 1919 if ( typeof elseReload === 'boolean' && elseReload ) { 1920 if ( isMidCheckout ) { 1921 spchLog('maybeRedirectBack() - elseReload: Not reloading because visitor is mid-checkout.'); 1922 } else { 1923 location.reload(); 1924 } 1925 } 1926 1927 } 1928 1929 function clearExpiredLogin() { 1930 eraseCookie('spch_visitor_uuid'); 1931 eraseCookie('spch_visitor_name'); 1932 eraseCookie('spch_visitor_email'); 1933 eraseCookie('__utp'); 1934 eraseCookie('__idr'); 1935 eraseCookie('tcprUserType'); 1936 } 1937 1938 tp.push(["init", function() { 1939 1940 // EZproxy domain? 1941 if ( startsWith(document.location.hostname, 'thechinaproject-com.') ) { 1942 1943 var composerHost = document.location.hostname.replace('thechinaproject-com.', 'c2-piano-io.'); 1944 composerHost = 'https://' + composerHost; 1945 1946 spchLog('EZproxy hostname detected: ' + document.location.hostname + '. Setting Piano composerHost: ' + composerHost); 1947 1948 tp.push(['setComposerHost', composerHost]); 1949 1950 } 1951 1952 pushUserAndTypeToGTMonLoad(); 1953 1954 // Already logged in as a Piano subscriber? 1955 if ( tp.pianoId.isUserValid() ) { 1956 1957 spchLog('Already logged in as a Piano subscriber.'); 1958 1959 flagAsUser(); 1960 // Not logged in as a Piano subscriber? 1961 } else { 1962 1963 spchLog('Not logged in as a Piano subscriber.'); 1964 1965 unflagAsUser(); 1966 1967 maybeRememberCurrentURL(); 1968 1969 // Clear personalization cookies if they exist, since their Piano session must've expired too. 1970 clearExpiredLogin(); 1971 } 1972 1973 // user tracking 1974 sendUserIdentityToFlywheel(); 1975 1976 tp.experience.init(); 1977 1978 1979 loadAcct(); 1980 1981 tp.pianoId.init({ 1982 1983 // Runs on EVERY page load if logged into Piano. 1984 loggedIn: function(data) { 1985 1986 spchLog('Piano ID init -- loggedIn callback', data); 1987 1988 if ( typeof data.source === 'string' && data.source === 'PIANOID' ) { 1989 loadAcct(); 1990 } 1991 1992 flagAsUser(); 1993 1994 // ------------------------- 1995 // Watchlist cookies 1996 // ------------------------- 1997 var pianoUser = tp.pianoId.getUser(); 1998 1999 spchLog('pianoUser', pianoUser); 2000 2001 if ( typeof pianoUser.uid !== 'undefined' && pianoUser.uid ) { 2002 spchLog('Setting spch_visitor_uuid cookie: pianoUser.uid', pianoUser.uid);
2003 setCookie('spch_visitor_uuid', pianoUser.uid, 1); 2004 } else { 2005 console.error('Invalid pianoUser.uid.'); 2006 } 2007 2008 if ( typeof pianoUser.firstName === 'string' && pianoUser.firstName ) { 2009 spchLog('Setting spch_visitor_name cookie: pianoUser.firstName', pianoUser.firstName); 2010 setCookie('spch_visitor_name', pianoUser.firstName, 1); 2011 } else { 2012 console.warn('Invalid pianoUser.firstName. This field is optional.'); 2013 } 2014 2015 if ( typeof pianoUser.email === 'string' && pianoUser.email ) { 2016 setCookie('spch_visitor_email', pianoUser.email, 1); 2017 } else { 2018 console.error('Invalid pianoUser.email.'); 2019 } 2020 2021 addUsertypeInDropdown(); 2022 maybeRedirectBack(); 2023 2024 }, 2025 2026 // Fires in 2 scenarios: 1) When you load a page while logged out of Piano. 2) When you log out of Piano (though it also refreshes the page near-immediately after) 2027 loggedOut: function(data) { 2028 2029 spchLog('Piano ID init -- loggedOut callback', data); 2030 unflagAsUser(); 2031 clearExpiredLogin(); 2032 2033 }, 2034 2035 screen: 'login', 2036 containerSelector: accountLoginSel, 2037 2038 // We have used Piano's displayMode: 'inline' both for our own "inline" login/account page as well as our modal version of that (which has since been retired) 2039 displayMode: 'inline' 2040 2041 }); 2042 2043 2044 tp.enableGACrossDomainLinking('UA-65056602-1'); 2045 2046 // set excluded events here 2047 tp.setExcludedGAEvents({ 2048 experienceExecute: true, 2049 loginDisplayed: true, 2050 meterActive: true, 2051 meterExpired: true, 2052 termSelected: true, 2053 checkoutStateChange: true, 2054 receiptDisplayed: true, 2055 submitPayment: true 2056 }); 2057 2058 tp.setGA4Config({ 2059 measurementId: 'G-W6ZK45SEMX', 2060 eventParameters: { 2061 send_page_view: false, 2062 page_location: 'https://thechinaproject.com/my-account/', 2063 page_title: 'My Account – The China Project', 2064 } 2065 }); 2066 2067 $(document).trigger('tcprInitSingleProfile'); 2068 }]); 2069 2070 $(document).on('click', '#js-logout', logout); 2071 2072 // $(window).load(paywallSpace); 2073 // $(window).on('resize', paywallSpace); 2074 2075})(jQuery); 2076</script>
2076 2077 <div id="js-search-companies-form" class="modal modal--search" role="dialog" 2078 aria-label="Dialog window (Press escape to close)" 2079 data-modal="#js-search-companies-form"> 2080 <button class="modal__bg" aria-hidden="true" tabindex="-1" 2081 data-modal-close="#js-search-companies-form"></button> 2082 <div class="modal__inner" role="document"> 2083 <div class="search-container"> 2084 <form action="#" method="post" id="search-companies-modal"> 2085 2086 <input type="text" placeholder="Search for any China-based company" class="company-search-box"> 2087 <input type="hidden" name="country" id="jurisdiction-hidden" required> 2088 2089 <!-- Jurisdiction Dropdown --> 2090 <div class="jurisdiction-dropdown"> 2091 <span id="selectDisplay">Jurisdiction</span> 2092 <div class="country-list" id="countryList"> 2093 <div class="country" data-value="CHN">🇨🇳 China</div> 2094 <div class="country" data-value="TWN">🇹🇼 Taiwan</div> 2095 <!--<div class="country" data-value="HKG">ðŸ‡Â🇰 Hong Kong</div>--> 2096 </div> 2097 </div> 2098 2099 <button type="submit" class="search-button" disabled> 2100 <svg xmlns="http://www.w3.org/2000/svg" width="34.036" height="34.036" 2101 viewBox="0 0 34.036 34.036"> 2102 <g transform="translate(2.5 2.5)"> 2103 <circle cx="9.5" cy="9.5" r="9.5" fill="none" stroke="#ffffff" 2104 stroke-linecap="round" stroke-miterlimit="10" stroke-width="5"/> 2105 <line x2="11.383" y2="11.383" transform="translate(16.617 16.617)" 2106 fill="none" stroke="#ffffff" stroke-linecap="round" 2107 stroke-miterlimit="10" stroke-width="5"/> 2108 </g> 2109 </svg> 2110 </button> 2111 </form> 2112 </div> 2113 </div> 2114 <button class="modal__close" type="button" data-modal-close="#js-search-companies-form"> 2115 <span class="screen-reader-text">Close dialog window</span> 2116 <svg xmlns="http://www.w3.org/2000/svg" width="26.87" height="26.87" viewBox="0 0 26.87 26.87" role="img" 2117 aria-hidden="true"> 2118 <g transform="translate(2.828 2.828)"> 2119 <line x2="30" transform="translate(0 0) rotate(45)" fill="none" stroke="currentColor" 2120 stroke-linecap="round" stroke-width="4"/> 2121 <line x2="30" transform="translate(21.213 0) rotate(135)" fill="none" stroke="currentColor" 2122 stroke-linecap="round" stroke-width="4"/> 2123 </g> 2124 </svg> 2125 </button> 2126 </div> 2127 <div id="js-members-modal" class="modal modal--members" role="dialog" 2128 aria-label="Account dialog window (Press escape to close)" 2129 data-modal="#js-members-modal"> 2130 <button class="modal__bg" aria-hidden="true" tabindex="-1" data-modal-close="#js-members-modal"></button> 2131 <div class="modal__inner modal__inner--members js-focus-on-modal-open" role="document" tabindex="-1"> 2132 <div id="js-login-loader" class="loader loader--login"> 2133 2134 <div class="spinner-dots"> 2135 <div class="spinner-dot"></div> 2136 <div class="spinner-dot"></div> 2137 <div class="spinner-dot"></div> 2138 <div class="spinner-dot"></div> 2139 </div> 2140 2141 <div class="loader__content loader__content--css loader__content--css-b"> 2142 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0" y="0" 2143 viewBox="0 0 113.9 89.3" xml:space="preserve"><style>.sc-loader-1 { 2144 fill: #F73044 2145 }</style> 2146 <path fill="#000000" 2147 d="M49.6 35.3l-16.2-2.9c-5.3-1-8.6-2.5-8.6-6.4 0-3.4 2.3-6 6.4-7.1 4.3-7.7 10.9-13.7 18.9-17.4C46.2.6 41.8.1 37 .1 15.7.1 2 10.6 2 28c0 15 9.8 22.9 23.9 25.5l15.7 2.7c6.5 1.2 11.6 2 11.6 7.1C53.2 68.1 48 71 40 71c-9.5 0-17.9-3.7-18.7-14.5L0 57.2c0 20.7 16.6 32 40 32 20 0 35.9-9.1 35.9-27.4-.1-14-8.3-23.4-26.3-26.5z"/> 2148 <path class="sc-loader-1" fill="#F73044" 2149 d="M30.5 28.5c1 .3 2.2.6 3.5.8l16.2 2.9c1.2.2 2.4.4 3.5.7 3-7.7 9.2-12.3 18-12.3 13.4 0 18.5 8.9 19.9 18.4l22.2-.8C112.3 16.8 98.2 0 71.9 0 52.3 0 36.5 11 30.5 28.5z"/> 2150 <path class="sc-loader-1" fill="#000000" 2151 d="M78.4 67.7c-1.5 9.9-8.3 16.6-17.8 20.1 3.6.9 7.4 1.3 11.4 1.3 26.3 0 40.4-16.6 42-38l-22.2-1c-1.2 7.9-4.9 15.2-13.4 17.6z"/> 2152 <path fill="#ce0000" 2153 d="M80.2 22c-2.5-1-5.9-1.5-8.4-1.5-8.8 0-15.1 4.6-18 12.3-1.1-.3-2.3-.5-3.5-.7L34 29.3c-1.3-.2-2.5-.5-3.5-.8C42.7 14.8 52.2 15 58.4 15c13.3-.1 21.8 7 21.8 7z"/> 2154 <path fill="#202023" 2155 d="M62.6 48.9c-10.1-2-24.3-5.3-40.4-8.4-19.6-4.8-20-14.6-20-15.6-.1 1-.2 2.1-.2 3.1 0 15 9.8 22.9 23.9 25.5l15.7 2.7c6.5 1.2 11.6 2 11.6 7.1C53.2 68.1 48 71 40 71c-9.5 0-17.9-3.7-18.7-14.5L0 57.2c0 20.7 16.6 32 40 32 20 0 35.9-9.1 35.9-27.4 0-1.8-.1-3.6-.4-5.3-1.2-3.3-6.5-6.3-12.9-7.6z"/></svg>
2156 </div> 2157 2158 </div> 2159 2160 2161 <div id="js-account__frame" class="modal-frame modal-frame--account active"></div> 2162 2163 <div id="js-login__frame" class="modal-frame modal-frame--login"></div> 2164 2165 <div class="modal__ctrls modal__ctrls--btm"> 2166 <button id="js-logout" class="btn2 btn2--logout fade-in" 2167 type="button">Log Out</button> 2168 </div> 2169 2170 </div> 2171 <button class="modal__close" type="button" data-modal-close="#js-members-modal"> 2172 <span class="screen-reader-text">Close account dialog window</span> 2173 <svg xmlns="http://www.w3.org/2000/svg" width="26.87" height="26.87" viewBox="0 0 26.87 26.87" role="img" 2174 aria-hidden="true"> 2175 <g transform="translate(2.828 2.828)"> 2176 <line x2="30" transform="translate(0 0) rotate(45)" fill="none" stroke="currentColor" 2177 stroke-linecap="round" stroke-width="4"/> 2178 <line x2="30" transform="translate(21.213 0) rotate(135)" fill="none" stroke="currentColor" 2179 stroke-linecap="round" stroke-width="4"/> 2180 </g> 2181 </svg> 2182 </button> 2183 </div> 2184 <div id="js-search-form" class="modal modal--search" role="dialog" 2185 aria-label="Dialog window (Press escape to close)" 2186 data-modal="#js-search-form"> 2187 <button class="modal__bg" aria-hidden="true" tabindex="-1" data-modal-close="#js-search-form"></button> 2188 <div class="modal__inner" role="document"> 2189 <form class="search-form" method="get" action="https://thechinaproject.com/" role="search"> 2190 <label> 2191 <span class="spch-label screen-reader-text">Search</span> 2192 <input class="search-form__input btn-height js-focus-on-modal-open fancy-cancel" type="search" name="s" autocomplete="off"></label><button class="search-form__submit btn" type="submit" role="submit"> 2193 Search </button> 2194</form> 2195 </div> 2196 <button class="modal__close" type="button" data-modal-close="#js-search-form"> 2197 <span class="screen-reader-text">Close dialog window</span> 2198 <svg xmlns="http://www.w3.org/2000/svg" width="26.87" height="26.87" viewBox="0 0 26.87 26.87" role="img" 2199 aria-hidden="true"> 2200 <g transform="translate(2.828 2.828)"> 2201 <line x2="30" transform="translate(0 0) rotate(45)" fill="none" stroke="currentColor" 2202 stroke-linecap="round" stroke-width="4"/> 2203 <line x2="30" transform="translate(21.213 0) rotate(135)" fill="none" stroke="currentColor" 2204 stroke-linecap="round" stroke-width="4"/> 2205 </g> 2206 </svg> 2207 </button> 2208 </div> 2209
2209<script type="speculationrules"> 2210{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/supchina/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 2211</script>
2211 2212<div class="wt-cli-cookie-bar-container" data-nosnippet="true"><!--googleoff: all--><div id="cookie-law-info-bar" role="dialog" aria-live="polite" aria-label="cookieconsent" aria-describedby="wt-cli-cookie-banner" data-cli-geo-loc="0" style="padding:20px; box-sizing:border-box; float:left; border:0px solid rgb(255, 255, 255); font-size:16px; font-weight:300;" class="wt-cli-cookie-bar"><div class="cli-wrapper"><span id="wt-cli-cookie-banner">This web site uses cookies to deliver a modern, enjoyable web site experience.<br /> 2213<a id="wt-cli-settings-btn" tabindex="0" role='button' style="margin:5px 20px; border-color:rgb(238, 69, 66); font-size:16px; font-weight:300;" class="wt-cli-element medium cli-plugin-button cli-plugin-main-button cli_settings_button" >Cookie Settings</a> <a id="wt-cli-accept-btn" tabindex="0" role='button' style="margin:5px; border-color:rgb(255, 255, 255); font-size:15px; font-weight:500; ;" data-cli_action="accept" class="wt-cli-element medium cli-plugin-button cli-plugin-main-button cookie_action_close_header cli_action_button" >Accept</a></span></div></div><div tabindex="0" id="cookie-law-info-again" style="display:none;"><span id="cookie_hdr_showagain">Cookie Settings</span></div><div class="cli-modal" id="cliSettingsPopup" role="dialog" aria-labelledby="wt-cli-privacy-title" tabindex="-1" aria-hidden="true"> 2214 <div class="cli-modal-dialog" role="document"> 2215 <div class="cli-modal-content cli-bar-popup"> 2216 <button aria-label="Close" type="button" class="cli-modal-close" id="cliModalClose"> 2217 <svg class="" viewBox="0 0 24 24"><path d="M19 6.41l-1.41-1.41-5.59 5.59-5.59-5.59-1.41 1.41 5.59 5.59-5.59 5.59 1.41 1.41 5.59-5.59 5.59 5.59 1.41-1.41-5.59-5.59z"></path><path d="M0 0h24v24h-24z" fill="none"></path></svg> 2218 <span class="wt-cli-sr-only">Close</span> 2219 </button> 2220 <div class="cli-modal-body"> 2221 2222 <div class="wt-cli-element cli-container-fluid cli-tab-container"> 2223 <div class="cli-row"> 2224 <div class="cli-col-12 cli-align-items-stretch cli-px-0"> 2225 <div class="cli-privacy-overview"> 2226 <h4 id='wt-cli-privacy-title'>Privacy Overview</h4> <div class="cli-privacy-content"> 2227 <div class="cli-privacy-content-text">This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.</div> 2228 </div> 2229 <a id="wt-cli-privacy-readmore" tabindex="0" role="button" class="cli-privacy-readmore" data-readmore-text="Show more" data-readless-text="Show less"></a> </div> 2230 </div> 2231 <div class="cli-col-12 cli-align-items-stretch cli-px-0 cli-tab-section-container"> 2232 2233 2234 <div class="cli-tab-section"> 2235 <div class="cli-tab-header"> 2236 <a id="wt-cli-tab-link-necessary" tabindex="0" role="tab" aria-expanded="false" aria-describedby="wt-cli-tab-necessary" aria-controls="wt-cli-tab-necessary" class="cli-nav-link cli-settings-mobile" data-target="necessary" data-toggle="cli-toggle-tab"> 2237 Necessary </a> 2238 <div class="wt-cli-necessary-checkbox"> 2239 <input type="checkbox" class="cli-user-preference-checkbox" id="wt-cli-checkbox-necessary" aria-label="Necessary" data-id="checkbox-necessary" checked="checked" /> 2240 <label class="form-check-label" for="wt-cli-checkbox-necessary"> Necessary </label> 2241 </div>
2242 <span class="cli-necessary-caption"> 2243 Always Enabled </span> 2244 </div> 2245 <div class="cli-tab-content"> 2246 <div id="wt-cli-tab-necessary" tabindex="0" role="tabpanel" aria-labelledby="wt-cli-tab-link-necessary" class="cli-tab-pane cli-fade" data-id="necessary"> 2247 <p>Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.</p> 2248 </div> 2249 </div> 2250 </div> 2251 <div class="cli-tab-section"> 2252 <div class="cli-tab-header"> 2253 <a id="wt-cli-tab-link-performance" tabindex="0" role="tab" aria-expanded="false" aria-describedby="wt-cli-tab-performance" aria-controls="wt-cli-tab-performance" class="cli-nav-link cli-settings-mobile" data-target="performance" data-toggle="cli-toggle-tab"> 2254 Performance </a> 2255 <div class="cli-switch"> 2256 <input type="checkbox" class="cli-user-preference-checkbox" id="wt-cli-checkbox-performance" aria-label="performance" data-id="checkbox-performance" role="switch" aria-controls="wt-cli-tab-link-performance" aria-labelledby="wt-cli-tab-link-performance" checked='checked' /> 2257 <label for="wt-cli-checkbox-performance" class="cli-slider" data-cli-enable="Enabled" data-cli-disable="Disabled"><span class="wt-cli-sr-only">performance</span></label> 2258 </div> 2259 </div> 2260 <div class="cli-tab-content"> 2261 <div id="wt-cli-tab-performance" tabindex="0" role="tabpanel" aria-labelledby="wt-cli-tab-link-performance" class="cli-tab-pane cli-fade" data-id="performance"> 2262 <p>Performance cookies are key in allowing web site screens and content to load quickly on all types of devices.<table class="wt-cli-element cookielawinfo-row-cat-table cookielawinfo-rounded"><thead><tr><th scope="col" class="cookielawinfo-column-1">Cookie</th><th scope="col" class="cookielawinfo-column-4">Description</th></tr></thead><tbody><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">_gat</td><td class="cookielawinfo-column-4">This cookies is installed by Google Universal Analytics to throttle the request rate to limit the colllection of data on high traffic sites.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">YSC</td><td class="cookielawinfo-column-4">This cookies is set by Youtube and is used to track the views of embedded videos.</td></tr></tbody></table></p> 2263 </div> 2264 </div> 2265 </div> 2266 <div class="cli-tab-section"> 2267 <div class="cli-tab-header"> 2268 <a id="wt-cli-tab-link-preferences" tabindex="0" role="tab" aria-expanded="false" aria-describedby="wt-cli-tab-preferences" aria-controls="wt-cli-tab-preferences" class="cli-nav-link cli-settings-mobile" data-target="preferences" data-toggle="cli-toggle-tab"> 2269 Preferences </a> 2270 <div class="cli-switch"> 2271 <input type="checkbox" class="cli-user-preference-checkbox" id="wt-cli-checkbox-preferences" aria-label="preferences" data-id="checkbox-preferences" role="switch" aria-controls="wt-cli-tab-link-preferences" aria-labelledby="wt-cli-tab-link-preferences" checked='checked' /> 2272 <label for="wt-cli-checkbox-preferences" class="cli-slider" data-cli-enable="Enabled" data-cli-disable="Disabled"><span class="wt-cli-sr-only">preferences</span></label> 2273 </div> 2274 </div> 2275 <div class="cli-tab-content"> 2276 <div id="wt-cli-tab-preferences" tabindex="0" role="tabpanel" aria-labelledby="wt-cli-tab-link-preferences" class="cli-tab-pane cli-fade" data-id="preferences"> 2277 <p>Preference cookies are used to store user preferences to provide them with content that is customized accordingly. These cookies also allow for the viewing of embedded content, such as videos.<table class="wt-cli-element cookielawinfo-row-cat-table cookielawinfo-rounded"><thead><tr><th scope="col" class="cookielawinfo-column-1">Cookie</th><th scope="col" class="cookielawinfo-column-4">Description</th></tr></thead><tbody><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">bcookie</td><td class="cookielawinfo-column-4">This cookie is set by linkedIn. The purpose of the cookie is to enable LinkedIn functionalities on the page.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">lang</td><td class="cookielawinfo-column-4">This cookie is used to store the language preferences of a user to serve up content in that stored language the next time user visit the website.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">lidc</td><td class="cookielawinfo-column-4">This cookie is set by LinkedIn and used for routing.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">PugT</td><td class="cookielawinfo-column-4">
2277This cookie is set by pubmatic.com. The purpose of the cookie is to check when the cookies were last updated on the browser in order to limit the number of calls to the server-side cookie store.</td></tr></tbody></table></p> 2278 </div> 2279 </div> 2280 </div> 2281 <div class="cli-tab-section"> 2282 <div class="cli-tab-header"> 2283 <a id="wt-cli-tab-link-analytics" tabindex="0" role="tab" aria-expanded="false" aria-describedby="wt-cli-tab-analytics" aria-controls="wt-cli-tab-analytics" class="cli-nav-link cli-settings-mobile" data-target="analytics" data-toggle="cli-toggle-tab"> 2284 Analytics </a> 2285 <div class="cli-switch"> 2286 <input type="checkbox" class="cli-user-preference-checkbox" id="wt-cli-checkbox-analytics" aria-label="analytics" data-id="checkbox-analytics" role="switch" aria-controls="wt-cli-tab-link-analytics" aria-labelledby="wt-cli-tab-link-analytics" checked='checked' /> 2287 <label for="wt-cli-checkbox-analytics" class="cli-slider" data-cli-enable="Enabled" data-cli-disable="Disabled"><span class="wt-cli-sr-only">analytics</span></label> 2288 </div> 2289 </div> 2290 <div class="cli-tab-content"> 2291 <div id="wt-cli-tab-analytics" tabindex="0" role="tabpanel" aria-labelledby="wt-cli-tab-link-analytics" class="cli-tab-pane cli-fade" data-id="analytics"> 2292 <p>Analytics cookies help us understand how our visitors interact with the website. It helps us understand the number of visitors, where the visitors are coming from, and the pages they navigate. The cookies collect this data and report it anonymously.<table class="wt-cli-element cookielawinfo-row-cat-table cookielawinfo-rounded"><thead><tr><th scope="col" class="cookielawinfo-column-1">Cookie</th><th scope="col" class="cookielawinfo-column-4">Description</th></tr></thead><tbody><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">__gads</td><td class="cookielawinfo-column-4">This cookie is set by Google and stored under the name dounleclick.com. This cookie is used to track how many times users see a particular advert which helps in measuring the success of the campaign and calculate the revenue generated by the campaign. These cookies can only be read from the domain that it is set on so it will not track any data while browsing through another sites.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">_ga</td><td class="cookielawinfo-column-4">This cookie is installed by Google Analytics. The cookie is used to calculate visitor, session, campaign data and keep track of site usage for the site's analytics report. The cookies store information anonymously and assigns a randomly generated number to identify unique visitors.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">_gid</td><td class="cookielawinfo-column-4">This cookie is installed by Google Analytics. The cookie is used to store information of how visitors use a website and helps in creating an analytics report of how the wbsite is doing. The data collected including the number visitors, the source where they have come from, and the pages viisted in an anonymous form.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">_omappvp</td><td class="cookielawinfo-column-4">The cookie is set to identify new vs returning users. The cookie is used in conjunction with _omappvs cookie to determine whether a user is new or returning.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">_omappvs</td><td class="cookielawinfo-column-4">The cookie is used to in conjunction with the _omappvp cookies. If the cookies are set, the user is a returning user. If neither of the cookies are set, the user is a
2292new user.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">GPS</td><td class="cookielawinfo-column-4">This cookie is set by Youtube and registers a unique ID for tracking users based on their geographical location</td></tr></tbody></table></p> 2293 </div> 2294 </div> 2295 </div> 2296 <div class="cli-tab-section"> 2297 <div class="cli-tab-header"> 2298 <a id="wt-cli-tab-link-advertisement" tabindex="0" role="tab" aria-expanded="false" aria-describedby="wt-cli-tab-advertisement" aria-controls="wt-cli-tab-advertisement" class="cli-nav-link cli-settings-mobile" data-target="advertisement" data-toggle="cli-toggle-tab"> 2299 Advertisement </a> 2300 <div class="cli-switch"> 2301 <input type="checkbox" class="cli-user-preference-checkbox" id="wt-cli-checkbox-advertisement" aria-label="advertisement" data-id="checkbox-advertisement" role="switch" aria-controls="wt-cli-tab-link-advertisement" aria-labelledby="wt-cli-tab-link-advertisement" checked='checked' /> 2302 <label for="wt-cli-checkbox-advertisement" class="cli-slider" data-cli-enable="Enabled" data-cli-disable="Disabled"><span class="wt-cli-sr-only">advertisement</span></label> 2303 </div> 2304 </div> 2305 <div class="cli-tab-content"> 2306 <div id="wt-cli-tab-advertisement" tabindex="0" role="tabpanel" aria-labelledby="wt-cli-tab-link-advertisement" class="cli-tab-pane cli-fade" data-id="advertisement"> 2307 <p>Advertisement cookies help us provide our visitors with the most relevant ads and marketing campaigns.<table class="wt-cli-element cookielawinfo-row-cat-table cookielawinfo-rounded"><thead><tr><th scope="col" class="cookielawinfo-column-1">Cookie</th><th scope="col" class="cookielawinfo-column-4">Description</th></tr></thead><tbody><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">__qca</td><td class="cookielawinfo-column-4">This cookie is associated with Quantcast and is used for collecting anonymized data to analyze log data from different websites to create reports that enables the website owners and advertisers provide ads for the appropriate audience segments.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">_fbp</td><td class="cookielawinfo-column-4">This cookie is set by Facebook to deliver advertisement when they are on Facebook or a digital platform powered by Facebook advertising after visiting this website.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">everest_g_v2</td><td class="cookielawinfo-column-4">The cookie is set under eversttech.net domain. The purpose of the cookie is to map clicks to other events on the client's website.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">fr</td><td class="cookielawinfo-column-4">The cookie is set by Facebook to show relevant advertisments to the users and measure and improve the advertisements. The cookie also tracks the behavior of the user across the web on sites that have Facebook pixel or Facebook social plugin.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">IDE</td><td class="cookielawinfo-column-4">Used by Google DoubleClick and stores information about how the user uses the website and any other advertisement before visiting the website. This is used to present users with ads that are relevant to them according to the user profile.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">mc</td><td class="cookielawinfo-column-4">This cookie is associated with Quantserve to track anonymously how a user interact with the website.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">personalization_id</td><td class="cookielawinfo-column-4">This cookie is set by twitter.com. It is used integrate the sharing features of this social media. It also stores information about how the user uses the website for tracking and targeting.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">PUBMDCID</td><td class="cookielawinfo-column-4">
2307This cookie is set by pubmatic.com. The cookie stores an ID that is used to display ads on the users' browser.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">TDCPM</td><td class="cookielawinfo-column-4">The cookie is set by CloudFare service to store a unique ID to identify a returning users device which then is used for targeted advertising.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">TDID</td><td class="cookielawinfo-column-4">The cookie is set by CloudFare service to store a unique ID to identify a returning users device which then is used for targeted advertising.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">test_cookie</td><td class="cookielawinfo-column-4">This cookie is set by doubleclick.net. The purpose of the cookie is to determine if the users' browser supports cookies.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">uid</td><td class="cookielawinfo-column-4">This cookie is used to measure the number and behavior of the visitors to the website anonymously. The data includes the number of visits, average duration of the visit on the website, pages visited, etc. for the purpose of better understanding user preferences for targeted advertisments.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">uuid</td><td class="cookielawinfo-column-4">To optimize ad relevance by collecting visitor data from multiple websites such as what pages have been loaded.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">uuidc</td><td class="cookielawinfo-column-4">This cookie is used to stores information about how the user uses the website such as what pages have been loaded and any other advertisement before visiting the website. This data is used to provide users with relevant ads.</td></tr><tr class="cookielawinfo-row"><td class="cookielawinfo-column-1">VISITOR_INFO1_LIVE</td><td class="cookielawinfo-column-4">This cookie is set by Youtube. Used to track the information of the embedded YouTube videos on a website.</td></tr></tbody></table></p> 2308 </div> 2309 </div> 2310 </div> 2311 2312 </div> 2313 </div> 2314 </div> 2315</div> 2316<div class="cli-modal-footer"> 2317 <div class="wt-cli-element cli-container-fluid cli-tab-container"> 2318 <div class="cli-row"> 2319 <div class="cli-col-12 cli-align-items-stretch cli-px-0"> 2320 <div class="cli-tab-footer wt-cli-privacy-overview-actions"> 2321 2322 2323 <a id="wt-cli-privacy-save-btn" role="button" tabindex="0" data-cli-action="accept" class="wt-cli-privacy-btn cli_setting_save_button wt-cli-privacy-accept-btn cli-btn">Save & Accept</a> 2324 2325 </div> 2326 </div> 2327 </div> 2328 </div> 2329</div> 2330 </div> 2331 </div> 2332</div> 2333<div class="cli-modal-backdrop cli-fade cli-settings-overlay"></div> 2334<div class="cli-modal-backdrop cli-fade cli-popupbar-overlay"></div> 2335<!--googleon: all--></div>
2336<script type="text/javascript"> 2337 /* <![CDATA[ */ 2338 cli_cookiebar_settings='{"animate_speed_hide":"500","animate_speed_show":"500","background":"rgb(255, 255, 255)","border":"#b1a6a6c2","border_on":false,"button_1_button_colour":"rgb(247, 48, 68)","button_1_button_hover":"rgb(247, 48, 68)","button_1_link_colour":"rgb(255, 255, 255)","button_1_as_button":true,"button_1_new_win":false,"button_2_button_colour":"rgb(255, 255, 255)","button_2_button_hover":"rgb(255, 255, 255)","button_2_link_colour":"#ec0000","button_2_as_button":true,"button_2_hidebar":false,"button_2_nofollow":false,"button_3_button_colour":"rgb(236, 0, 0)","button_3_button_hover":"rgb(236, 0, 0)","button_3_link_colour":"#fff","button_3_as_button":true,"button_3_new_win":false,"button_4_button_colour":"rgb(255, 255, 255)","button_4_button_hover":"rgb(255, 255, 255)","button_4_link_colour":"rgb(247, 48, 68)","button_4_as_button":true,"button_7_button_colour":"rgb(97, 162, 41)","button_7_button_hover":"rgb(97, 162, 41)","button_7_link_colour":"#fff","button_7_as_button":true,"button_7_new_win":false,"font_family":"inherit","header_fix":false,"notify_animate_hide":false,"notify_animate_show":false,"notify_div_id":"#cookie-law-info-bar","notify_position_horizontal":"right","notify_position_vertical":"bottom","scroll_close":false,"scroll_close_reload":false,"accept_close_reload":false,"reject_close_reload":false,"showagain_tab":false,"showagain_background":"#fff","showagain_border":"#000","showagain_div_id":"#cookie-law-info-again","showagain_x_position":"10px","text":"rgb(0, 0, 0)","show_once_yn":false,"show_once":"10000","logging_on":false,"as_popup":false,"popup_overlay":true,"bar_heading_text":"","cookie_bar_as":"widget","cookie_setting_popup":true,"accept_all":true,"js_script_blocker":false,"popup_showagain_position":"bottom-right","widget_position":"left","button_1_style":[["margin","5px"],["border-color","rgb(255, 255, 255)"],["font-size","15px"],["font-weight","500"],[""]],"button_2_style":[["display","inline-block"],["text-align","center"],["font-size","12px"],["padding","8px 16px 8px"],["border","solid 0px #fff"]],"button_3_style":[["display","inline-block"],["padding","8px 16px 8px"],["border-radius","4px"],["text-align","center"],["font-size","12px"],["border","solid 0px #fff"]],"button_4_style":[["margin","5px 20px"],["border-color","rgb(238, 69, 66)"],["font-size","16px"],["font-weight","300"]],"button_5_style":{"0":["display","inline-block"],"1":["background","none"],"2":["border-radius","20px"],"3":["border","solid 1px #ccc"],"4":["color","#ccc"],"5":["text-align","center"],"6":["font-size","12px"],"7":["width","22px"],"8":["height","22px"],"9":["line-height","22px"],"10":["margin-right","-22px"],"11":["margin-top","-24px"],"12":["float","right"],"13":["position","relative"],"14":["cursor","pointer"],"15":[""],"16":["background-color","rgba(0, 0, 0, 0)"],"19":["background-color","rgba(0, 0, 0, 0)"]},"button_7_style":[["margin","5px 5px 5px 30px"],["border-radius","0"],["padding","8px 25px 8px 25px"]],"accept_close_page_navigation":false}'; 2339 /* ]]> */ 2340</script>
vendor: 1 bytes, line 2340
2340
2341<script id="base-nav-tray-js" src="https://thechinaproject.com/wp-content/themes/supchina/assets/nav-tray.min.js?ver=096210" defer></script>
vendor: 1 bytes, line 2341
2341
2342<script id="base-main-js" src="https://thechinaproject.com/wp-content/themes/supchina/assets/main.min.js?ver=096210" defer></script>
vendor: 1 bytes, line 2342
2342
2343<script id="base-click-area-js" src="https://thechinaproject.com/wp-content/themes/supchina/assets/click-area.min.js?ver=096210" defer></script>
vendor: 1 bytes, line 2343
2343
2344<script id="scrollmonitor-js" src="https://thechinaproject.com/wp-content/themes/supchina/assets/vendor/scrollMonitor.min.js?ver=20191209" defer></script>
vendor: 1 bytes, line 2344
2344
2345<script id="gsap-js" src="https://thechinaproject.com/wp-content/themes/supchina/assets/vendor/gsap/gsap.min.js?ver=3.2.4" defer></script>
vendor: 1 bytes, line 2345
2345
2346<script id="base-scroll-events-js" src="https://thechinaproject.com/wp-content/themes/supchina/assets/scroll-events.min.js?ver=096210" defer></script>
vendor: 1 bytes, line 2346
2346
2347<script id="page-links-to-js" src="https://thechinaproject.com/wp-content/plugins/page-links-to/dist/new-tab.js?ver=3.3.6"></script>
vendor: 1 bytes, line 2347
2347
2348<script id="focus-visible-js" src="https://thechinaproject.com/wp-content/themes/supchina/assets/vendor/focus-visible.min.js?ver=5.0.2" defer></script>
vendor: 1 bytes, line 2348
2348
2349<script id="ticker-js" src="https://thechinaproject.com/wp-content/themes/supchina/assets/ticker.min.js?ver=096210" defer></script>
vendor: 1 bytes, line 2349
2349
2350<script id="base-company-profile-js" src="https://thechinaproject.com/wp-content/themes/supchina/modules/company-profiles/company-profiles.min.js?ver=096210"></script>
vendor: 1 bytes, line 2350
2350
2351<script id="jquery-ui-core-js" src="https://thechinaproject.com/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3"></script>
vendor: 1 bytes, line 2351
2351
2352<script id="jquery-ui-datepicker-js" src="https://thechinaproject.com/wp-includes/js/jquery/ui/datepicker.min.js?ver=1.13.3"></script>
vendor: 1 bytes, line 2352
2352
2353<script id="jquery-ui-datepicker-js-after"> 2354jQuery(function(jQuery){jQuery.datepicker.setDefaults({"closeText":"Close","currentText":"Today","monthNames":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesShort":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"nextText":"Next","prevText":"Previous","dayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dayNamesShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dayNamesMin":["S","M","T","W","T","F","S"],"dateFormat":"MM d, yy","firstDay":0,"isRTL":false});}); 2355//# sourceURL=jquery-ui-datepicker-js-after 2356</script>
vendor: 1 bytes, line 2356
2356
2357<script id="base-company-profiles-news-table-actions-js-extra"> 2358var nt_actions = {"ajaxURL":"https://thechinaproject.com/wp-admin/admin-ajax.php","ntMessage":"We\u2019re still gathering news for this profile. Add it to your \u003Ca href=\"/watchlist\"\u003EWatchlist\u003C/a\u003E to get all the latest updates, or research 60,000+ other articles in the \u003Ca href=\"/china-newsbase/\"\u003ENewsbase\u003C/a\u003E."}; 2359//# sourceURL=base-company-profiles-news-table-actions-js-extra 2360</script>
vendor: 1 bytes, line 2360
2360
2361<script id="base-company-profiles-news-table-actions-js" src="https://thechinaproject.com/wp-content/themes/supchina/modules/company-profiles/news-table.min.js?ver=096210"></script>
vendor: 1 bytes, line 2361
2361
2362<script id="base-company-profiles-search-js-extra"> 2363var edgeSearch = {"add_company_url":"http://44juny3pece.typeform.com/ChinaEDGE1","ajaxURL":"https://thechinaproject.com/wp-admin/admin-ajax.php"}; 2364//# sourceURL=base-company-profiles-search-js-extra 2365</script>
vendor: 1 bytes, line 2365
2365
2366<script id="base-company-profiles-search-js" src="https://thechinaproject.com/wp-content/themes/supchina/modules/company-profiles/company-profiles-search.min.js?ver=096210"></script>
vendor: 1 bytes, line 2366
2366
2367<script id="piano-render-js-extra"> 2368var pianoRender = {"ajax_url":"https://thechinaproject.com/wp-admin/admin-ajax.php"}; 2369//# sourceURL=piano-render-js-extra 2370</script>
vendor: 1 bytes, line 2370
2370
2371<script id="piano-render-js" src="https://thechinaproject.com/wp-content/themes/supchina/modules/piano-watchlist/piano-render.min.js?ver=939740"></script>
vendor: 1 bytes, line 2371
2371
2372<script id="piano-user-nav-js-extra"> 2373var pianoUserNav = {"ajax_url":"https://thechinaproject.com/wp-admin/admin-ajax.php"}; 2374//# sourceURL=piano-user-nav-js-extra 2375</script>
vendor: 1 bytes, line 2375
2375
2376<script id="piano-user-nav-js" src="https://thechinaproject.com/wp-content/themes/supchina/modules/piano-watchlist/piano-user-nav.min.js?ver=939740"></script>
vendor: 1 bytes, line 2376
2376
2377<script id="piano-filter-watchlist-js-extra"> 2378var pianoWatchlist = {"ajax_url":"https://thechinaproject.com/wp-admin/admin-ajax.php"}; 2379//# sourceURL=piano-filter-watchlist-js-extra 2380</script>
vendor: 1 bytes, line 2380
2380
2381<script id="piano-filter-watchlist-js" src="https://thechinaproject.com/wp-content/themes/supchina/modules/piano-watchlist/piano-filter-watchlist.min.js?ver=939740"></script>
2381 2382 2383</body> 2384</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.