[{"data":1,"prerenderedAt":523},["ShallowReactive",2],{"/en-us/the-source/security/beyond-shift-left-engineering-supply-chain-safety-at-scale":3,"footer-en-us":56,"the-source-banner-en-us":390,"the-source-navigation-en-us":396,"article-site-categories-en-us":419,"the-source-newsletter-en-us":421,"beyond-shift-left-engineering-supply-chain-safety-at-scale-article-hero-category-en-us":428,"beyond-shift-left-engineering-supply-chain-safety-at-scale-the-source-source-cta-en-us":453,"beyond-shift-left-engineering-supply-chain-safety-at-scale-article-hero-author-en-us":463,"beyond-shift-left-engineering-supply-chain-safety-at-scale-category-en-us":487,"beyond-shift-left-engineering-supply-chain-safety-at-scale-the-source-resources-en-us":500},{"id":4,"title":5,"body":6,"category":7,"config":8,"content":14,"description":6,"extension":47,"meta":48,"navigation":12,"path":49,"seo":50,"slug":52,"stem":53,"type":54,"__hash__":55},"theSource/en-us/the-source/security/beyond-shift-left-engineering-supply-chain-safety-at-scale.yml","Beyond Shift Left Engineering Supply Chain Safety At Scale",null,"security",{"layout":9,"template":10,"author":11,"featured":12,"sourceCTA":13},"the-source","TheSourceArticle","josh-lemos",true,"application-security-in-the-digital-age",{"title":15,"date":16,"description":17,"timeToRead":18,"heroImage":19,"keyTakeaways":20,"articleBody":24,"faq":25},"Beyond “shift left”: Engineering supply chain safety at scale","2025-03-27","Learn why the traditional “shift left” approach falls short and how supply chain safety can transform your software security approach at scale.","3 min read","https://res.cloudinary.com/about-gitlab-com/image/upload/v1751464122/kxhyozwsjf8ik6ssm3id.jpg",[21,22,23],"Most DevSecOps implementations are just DevOps with bolted-on security tools. True software supply chain safety requires engineering security directly into development processes, with tools serving as verification rather than primary protection.","Success in software supply chain safety depends on four pillars: infrastructure guardrails, language security features, automated dependency management, and security function abstraction through service mesh.","Align security and development team incentives through shared metrics and security champions. Focus on building systems that make secure development the path of least resistance rather than adding friction.","Your organization has probably already recognized the value of DevSecOps: removing silos between development, security, and operations teams. You’ve integrated security tools into your CI/CD pipeline, developers are scanning their code, and you have a dedicated security team reviewing findings. So why are you still struggling with security vulnerabilities, team burnout, and the constant tension between development velocity and security requirements? The truth is, most DevSecOps implementations today amount to little more than DevOps with security tools bolted on. It’s time to fundamentally change how we approach software supply chain security.\n\n## The promise and reality of the shift left\nThe journey to modern DevSecOps began with good intentions. As organizations moved to the cloud and adopted DevOps practices, security teams attempted to “shift left” by pushing security responsibilities earlier in the development cycle. However, this often meant taking the same noisy security tools - static analysis, dynamic testing, and software composition analysis - and simply making them the developers’ problem.\n\nThe results are predictable: With unrealistic security-to-developer ratios, [security teams are overwhelmed](https://about.gitlab.com/the-source/security/security-its-more-than-culture-addressing-the-root-cause-of-common-security/) by the volume of findings from improperly tuned tools. Developers, already under pressure to deliver features quickly, face constant interruptions from release-gating security tools, with unacceptable false positive rates. The promised integration of security into development workflows has instead created new bottlenecks and friction points.\n\n## Why traditional approaches miss the mark\nThe fundamental flaw in many DevSecOps implementations is treating security as an add-on rather than a core platform engineering capability. Organizations implement basic continuous integration practices with security tools attached, but fail to address the underlying challenges:\n\n- Security tools produce overwhelming noise without proper tuning and context\n- Workflow interruptions and governance processes create frustrating slowdowns\n- Security and development teams operate in silos with misaligned incentives\n- Traditional security metrics fail to demonstrate meaningful risk reduction\n\nShifting security left isn’t enough. We need to transform how we think about security entirely.\n\n## Engineering for supply chain safety\nInstead of focusing on security as a state free from threats, we should embrace safety as our guiding principle - creating systems inherently protected from and unlikely to cause danger. **Supply chain safety** means implementing systematic safeguards throughout the software development lifecycle that protect both the code you write and the dependencies you consume. It encompasses everything from the infrastructure your applications run on to the third-party packages you integrate, ensuring that each component is verified, validated, and continuously monitored for potential risks. This approach builds on the success patterns we’ve seen in other areas of software security, like the adoption of memory-safe languages and ubiquitous Transport Layer Security (TLS) encryption.\n\nHere’s how you can implement supply chain safety effectively:\n1. **Infrastructure guardrails**: Leverage [platform engineering](https://about.gitlab.com/the-source/platform/driving-business-results-with-platform-engineering/) to create pre-hardened templates that enforce security controls by default. This ensures teams inherit security best practices without additional cognitive load.\n1. **Language and framework security**: Take advantage of built-in security features in modern programming languages and frameworks. From automated memory management to deserialization filters, these features can prevent entire classes of vulnerabilities.\n1. **Automated dependency management**: Implement dependency proxies that automatically scan, validate, and cache third-party packages. Define clear policies for package verification and maintain a curated list of approved dependencies.\n1. **Security function abstraction**: Use service mesh and security sidecars to handle cross-cutting security concerns like authentication and authorization. This removes the burden of implementing security controls from individual service code.\n\n## Making it work: The human element\nTechnical solutions alone aren’t enough - success requires addressing the human factors that often derail security initiatives. Start by aligning incentives between security and development teams through shared goals and metrics that reward software resiliency improvements. Build a network of security champions within development teams who can act as bridges between security and engineering.\n\nCreate targeted training programs that focus on the security enablement features you’ve built, demonstrating how they reduce operational burden rather than add to it. Regular cross-team collaboration ensures both groups understand and support each other’s needs.\n\n## Moving forward\nThe path to true supply chain safety requires a fundamental shift in approaching security. Instead of bolting on security tools and hoping for the best, [build security directly into your engineering processes and practices](https://about.gitlab.com/the-source/security/strengthen-your-cybersecurity-strategy-with-secure-by-design/). You should layer in security tools for assurance and verification only after establishing strong engineering foundations.\n\nStart by evaluating your current DevSecOps implementation. Are you truly integrating security into your engineering practices, or just adding security tools to your pipeline? Focus first on building the infrastructure and platform capabilities that make secure development the path of least resistance. Remember, the goal isn’t to make developers think more about security - it’s about engineering safety from the ground up to help teams build secure software naturally through well-designed systems and processes.",[26,29,32,35,38,41,44],{"header":27,"content":28},"Why isn’t “shift left” enough to improve software security?","While shifting security earlier in the development cycle is a well-intentioned step, it often results in security tools being handed off to developers without adequate tuning or context. This creates noise, slows workflows, and introduces friction rather than improving safety or resilience.",{"header":30,"content":31},"What’s the difference between software security and software safety?","Security often focuses on reacting to threats, whereas safety is about proactively designing systems that are resistant to risk by default. A safety-driven approach builds protections into the software supply chain from the ground up, not just at the edges.",{"header":33,"content":34},"How does supply chain safety improve developer experience?","Supply chain safety reduces the operational burden on developers by integrating security controls into infrastructure and workflows. Pre-hardened templates, secure-by-default configurations, and abstracted security functions reduce the need for manual intervention.",{"header":36,"content":37},"What role do development frameworks and languages play in this approach?","Modern languages and frameworks offer built-in protections, such as memory management and deserialization controls. Leveraging these features helps eliminate entire categories of vulnerabilities without needing to create custom security logic.",{"header":39,"content":40},"How can organizations reduce risk from third-party dependencies?","Using automated tools like dependency proxies and curated package lists allows teams to validate, scan, and control third-party components. This helps ensure that all integrated packages meet security standards before reaching production.",{"header":42,"content":43},"What is the importance of aligning security and development teams?","Security outcomes improve when both teams share goals, metrics, and mutual understanding. Creating a network of champions and offering enablement training helps foster collaboration and encourages adoption of secure engineering practices.",{"header":45,"content":46},"How can engineering teams get started with supply chain safety?","Begin by assessing your current workflows. Prioritize infrastructure and platform investments that embed security into the development lifecycle. Focus on creating systems that naturally support secure behavior, and use tools to reinforce, not replace, these foundations.","yml",{},"/en-us/the-source/security/beyond-shift-left-engineering-supply-chain-safety-at-scale",{"title":15,"description":17,"ogImage":19,"config":51},{"ignoreTitleCharLimit":12},"beyond-shift-left-engineering-supply-chain-safety-at-scale","en-us/the-source/security/beyond-shift-left-engineering-supply-chain-safety-at-scale","article","vuFvIcBbdJac69aciKa6TMorIPgdeeQoTZMrYFm6BFM",{"data":57},{"text":58,"source":59,"edit":65,"contribute":70,"config":75,"items":80,"minimal":379},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":60,"config":61},"View page source",{"href":62,"dataGaName":63,"dataGaLocation":64},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":66,"config":67},"Edit this page",{"href":68,"dataGaName":69,"dataGaLocation":64},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":71,"config":72},"Please contribute",{"href":73,"dataGaName":74,"dataGaLocation":64},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":76,"facebook":77,"youtube":78,"linkedin":79},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[81,138,195,254,317],{"title":82,"links":83,"subMenu":99},"Pricing",[84,89,94],{"text":85,"config":86},"View plans",{"href":87,"dataGaName":88,"dataGaLocation":64},"/pricing/","view plans",{"text":90,"config":91},"Why Premium?",{"href":92,"dataGaName":93,"dataGaLocation":64},"/pricing/premium/","why premium",{"text":95,"config":96},"Why Ultimate?",{"href":97,"dataGaName":98,"dataGaLocation":64},"/pricing/ultimate/","why ultimate",[100],{"title":101,"links":102},"Contact Us",[103,108,113,118,123,128,133],{"text":104,"config":105},"Contact sales",{"href":106,"dataGaName":107,"dataGaLocation":64},"/sales/","sales",{"text":109,"config":110},"Support portal",{"href":111,"dataGaName":112,"dataGaLocation":64},"https://support.gitlab.com","support portal",{"text":114,"config":115},"Customer portal",{"href":116,"dataGaName":117,"dataGaLocation":64},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"text":119,"config":120},"Status",{"href":121,"dataGaName":122,"dataGaLocation":64},"https://status.gitlab.com/","status",{"text":124,"config":125},"Terms of use",{"href":126,"dataGaName":127,"dataGaLocation":64},"/terms/","terms of use",{"text":129,"config":130},"Privacy statement",{"href":131,"dataGaName":132,"dataGaLocation":64},"/privacy/","privacy statement",{"text":134,"config":135},"Cookie preferences",{"dataGaName":136,"dataGaLocation":64,"id":137,"isOneTrustButton":12},"cookie preferences","ot-sdk-btn",{"title":139,"links":140,"subMenu":151},"Product",[141,146],{"text":142,"config":143},"DevSecOps platform",{"href":144,"dataGaName":145,"dataGaLocation":64},"/platform/","devsecops platform",{"text":147,"config":148},"AI-Assisted Development",{"href":149,"dataGaName":150,"dataGaLocation":64},"/gitlab-duo/","ai-assisted development",[152],{"title":153,"links":154},"Topics",[155,160,165,170,175,180,185,190],{"text":156,"config":157},"CICD",{"href":158,"dataGaName":159,"dataGaLocation":64},"/topics/ci-cd/","cicd",{"text":161,"config":162},"GitOps",{"href":163,"dataGaName":164,"dataGaLocation":64},"/topics/gitops/","gitops",{"text":166,"config":167},"DevOps",{"href":168,"dataGaName":169,"dataGaLocation":64},"/topics/devops/","devops",{"text":171,"config":172},"Version Control",{"href":173,"dataGaName":174,"dataGaLocation":64},"/topics/version-control/","version control",{"text":176,"config":177},"DevSecOps",{"href":178,"dataGaName":179,"dataGaLocation":64},"/topics/devsecops/","devsecops",{"text":181,"config":182},"Cloud Native",{"href":183,"dataGaName":184,"dataGaLocation":64},"/topics/cloud-native/","cloud native",{"text":186,"config":187},"AI for Coding",{"href":188,"dataGaName":189,"dataGaLocation":64},"/topics/devops/ai-for-coding/","ai for coding",{"text":191,"config":192},"Agentic AI",{"href":193,"dataGaName":194,"dataGaLocation":64},"/topics/agentic-ai/","agentic ai",{"title":196,"links":197},"Solutions",[198,202,207,212,217,221,226,229,234,239,244,249],{"text":199,"config":200},"Application Security Testing",{"href":201,"dataGaName":199,"dataGaLocation":64},"/solutions/application-security-testing/",{"text":203,"config":204},"Automated software delivery",{"href":205,"dataGaName":206,"dataGaLocation":64},"/solutions/delivery-automation/","automated software delivery",{"text":208,"config":209},"Agile development",{"href":210,"dataGaName":211,"dataGaLocation":64},"/solutions/agile-delivery/","agile delivery",{"text":213,"config":214},"SCM",{"href":215,"dataGaName":216,"dataGaLocation":64},"/solutions/source-code-management/","source code management",{"text":156,"config":218},{"href":219,"dataGaName":220,"dataGaLocation":64},"/solutions/continuous-integration/","continuous integration & delivery",{"text":222,"config":223},"Value stream management",{"href":224,"dataGaName":225,"dataGaLocation":64},"/solutions/value-stream-management/","value stream management",{"text":161,"config":227},{"href":228,"dataGaName":164,"dataGaLocation":64},"/solutions/gitops/",{"text":230,"config":231},"Enterprise",{"href":232,"dataGaName":233,"dataGaLocation":64},"/enterprise/","enterprise",{"text":235,"config":236},"Small business",{"href":237,"dataGaName":238,"dataGaLocation":64},"/small-business/","small business",{"text":240,"config":241},"Public sector",{"href":242,"dataGaName":243,"dataGaLocation":64},"/solutions/public-sector/","public sector",{"text":245,"config":246},"Education",{"href":247,"dataGaName":248,"dataGaLocation":64},"/solutions/education/","education",{"text":250,"config":251},"Financial services",{"href":252,"dataGaName":253,"dataGaLocation":64},"/solutions/finance/","financial services",{"title":255,"links":256},"Resources",[257,262,267,272,277,282,287,292,297,302,307,312],{"text":258,"config":259},"Install",{"href":260,"dataGaName":261,"dataGaLocation":64},"/install/","install",{"text":263,"config":264},"Quick start guides",{"href":265,"dataGaName":266,"dataGaLocation":64},"/get-started/","quick setup checklists",{"text":268,"config":269},"Learn",{"href":270,"dataGaName":271,"dataGaLocation":64},"https://university.gitlab.com/","learn",{"text":273,"config":274},"Product documentation",{"href":275,"dataGaName":276,"dataGaLocation":64},"https://docs.gitlab.com/","docs",{"text":278,"config":279},"Blog",{"href":280,"dataGaName":281,"dataGaLocation":64},"/blog/","blog",{"text":283,"config":284},"Customer success stories",{"href":285,"dataGaName":286,"dataGaLocation":64},"/customers/","customer success stories",{"text":288,"config":289},"Remote",{"href":290,"dataGaName":291,"dataGaLocation":64},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":293,"config":294},"GitLab Services",{"href":295,"dataGaName":296,"dataGaLocation":64},"/services/","services",{"text":298,"config":299},"Community",{"href":300,"dataGaName":301,"dataGaLocation":64},"/community/","community",{"text":303,"config":304},"Forum",{"href":305,"dataGaName":306,"dataGaLocation":64},"https://forum.gitlab.com/","forum",{"text":308,"config":309},"Events",{"href":310,"dataGaName":311,"dataGaLocation":64},"/events/","events",{"text":313,"config":314},"Partners",{"href":315,"dataGaName":316,"dataGaLocation":64},"/partners/","partners",{"title":318,"links":319},"Company",[320,325,330,335,340,345,350,354,359,364,369,374],{"text":321,"config":322},"About",{"href":323,"dataGaName":324,"dataGaLocation":64},"/company/","company",{"text":326,"config":327},"Jobs",{"href":328,"dataGaName":329,"dataGaLocation":64},"/jobs/","jobs",{"text":331,"config":332},"Leadership",{"href":333,"dataGaName":334,"dataGaLocation":64},"/company/team/e-group/","leadership",{"text":336,"config":337},"Team",{"href":338,"dataGaName":339,"dataGaLocation":64},"/company/team/","team",{"text":341,"config":342},"Handbook",{"href":343,"dataGaName":344,"dataGaLocation":64},"https://handbook.gitlab.com/","handbook",{"text":346,"config":347},"Investor relations",{"href":348,"dataGaName":349,"dataGaLocation":64},"https://ir.gitlab.com/","investor relations",{"text":351,"config":352},"Sustainability",{"href":353,"dataGaName":351,"dataGaLocation":64},"/sustainability/",{"text":355,"config":356},"Diversity, inclusion and belonging (DIB)",{"href":357,"dataGaName":358,"dataGaLocation":64},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":360,"config":361},"Trust Center",{"href":362,"dataGaName":363,"dataGaLocation":64},"/security/","trust center",{"text":365,"config":366},"Newsletter",{"href":367,"dataGaName":368,"dataGaLocation":64},"/company/contact/#contact-forms","newsletter",{"text":370,"config":371},"Press",{"href":372,"dataGaName":373,"dataGaLocation":64},"/press/","press",{"text":375,"config":376},"Modern Slavery Transparency Statement",{"href":377,"dataGaName":378,"dataGaLocation":64},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":380},[381,384,387],{"text":382,"config":383},"Terms",{"href":126,"dataGaName":127,"dataGaLocation":64},{"text":385,"config":386},"Cookies",{"dataGaName":136,"dataGaLocation":64,"id":137,"isOneTrustButton":12},{"text":388,"config":389},"Privacy",{"href":131,"dataGaName":132,"dataGaLocation":64},{"visibility":12,"title":391,"button":392},"The Intelligent Software Development Era: How AI is reshaping DevSecOps teams",{"config":393,"text":395},{"href":394},"/developer-survey/","Get the research report",{"logo":397,"subscribeLink":402,"navItems":406},{"altText":398,"config":399},"the source logo",{"src":400,"href":401},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1750191004/t7wz1klfb2kxkezksv9t.svg","/the-source/",{"text":403,"config":404},"Subscribe",{"href":405},"#subscribe",[407,411,415],{"text":408,"config":409},"Artificial Intelligence",{"href":410},"/the-source/ai/",{"text":412,"config":413},"Security & Compliance",{"href":414},"/the-source/security/",{"text":416,"config":417},"Platform & Infrastructure",{"href":418},"/the-source/platform/",{"categoryNames":420},{"ai":408,"platform":416,"security":412},{"title":422,"description":423,"submitMessage":424,"formData":425},"The Source Newsletter","Stay updated with insights for the future of software development.","You have successfully signed up for The Source’s newsletter.",{"config":426},{"formId":427,"formName":368,"hideRequiredLabel":12},1077,{"id":429,"title":430,"body":6,"category":6,"config":431,"content":432,"description":6,"extension":47,"meta":447,"navigation":12,"path":448,"seo":449,"slug":7,"stem":450,"testContent":6,"type":451,"__hash__":452},"pages/en-us/the-source/security/index.yml","",{"layout":9},[433,440],{"componentName":434,"type":434,"componentContent":435},"TheSourceCategoryHero",{"title":412,"description":436,"image":437},"Get up to speed on how organizations can ensure they're staying on top of evolving security threats and compliance requirements.",{"config":438},{"src":439},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1751463273/aplkxrvwpii26xao5yhi.png",{"componentName":441,"type":441,"componentContent":442},"TheSourceCategoryMainSection",{"config":443},{"sourceCTAs":444},[445,446,13],"source-lp-guide-to-dynamic-sboms","source-lp-devsecops-the-key-to-modern-security-resilience",{},"/en-us/the-source/security",{"title":412,"description":436,"ogImage":439},"en-us/the-source/security/index","category","Yz-XSZ2w3Zg4r2_4aWlzq2kmfduukECmMNfXD6Ha26w",{"config":454,"title":455,"description":456,"link":457},{"slug":13},"Application security in the digital age","Read our survey findings from more than 5,000 DevSecOps professionals worldwide for insights on how organizations are grappling with increasing attack surfaces and changing attitudes towards security and AI.",{"text":458,"config":459},"Read the report",{"href":460,"dataGaName":461,"dataGaLocation":462},"/developer-survey/2024/security-compliance/","Application Security in the Digital Age","thesource",{"id":464,"title":465,"body":6,"category":6,"config":466,"content":467,"description":6,"extension":47,"meta":481,"navigation":12,"path":482,"seo":483,"slug":11,"stem":484,"testContent":6,"type":485,"__hash__":486},"theSourceAuthors/en-us/the-source/authors/josh-lemos.yml","Josh Lemos",{"layout":9},[468,479],{"componentName":469,"type":469,"componentContent":470},"TheSourceAuthorHero",{"config":471,"name":465,"role":474,"bio":475,"headshot":476},{"gitlabHandle":472,"linkedInProfileUrl":473},"joshlemos","https://www.linkedin.com/in/joshlemos/","Chief Information Security Officer","Josh Lemos is the Chief Information Security Officer at GitLab Inc., where he brings 20 years of experience leading information security teams to his role. He is responsible for establishing and maintaining the enterprise vision, strategy, and program to ensure information assets and technologies are adequately protected, fortifying the Gitlab DevSecOps platform and ensuring the highest level of security for customers.",{"altText":465,"config":477},{"src":478},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1751463405/f4rqtiecakrekvxfhqar.jpg",{"componentName":480,"type":480},"TheSourceArticlesList",{},"/en-us/the-source/authors/josh-lemos",{"title":465},"en-us/the-source/authors/josh-lemos","author","Kzh9L_9H8IeYxDNNFgPiZ3BBOSdgaHIyKFkhllwdLjI",{"id":429,"title":430,"body":6,"category":6,"config":488,"content":489,"description":6,"extension":47,"meta":498,"navigation":12,"path":448,"seo":499,"slug":7,"stem":450,"testContent":6,"type":451,"__hash__":452},{"layout":9},[490,494],{"componentName":434,"type":434,"componentContent":491},{"title":412,"description":436,"image":492},{"config":493},{"src":439},{"componentName":441,"type":441,"componentContent":495},{"config":496},{"sourceCTAs":497},[445,446,13],{},{"title":412,"description":436,"ogImage":439},[501,505,514],{"config":502,"title":455,"description":456,"link":503},{"slug":13},{"text":458,"config":504},{"href":460,"dataGaName":461,"dataGaLocation":462},{"config":506,"title":507,"description":508,"link":509},{"slug":446},"DevSecOps: The key to modern security resilience","Learn how embedding security in development can slash incident response time by 720x and save millions in security costs annually.",{"text":510,"config":511},"Download the guide",{"href":512,"dataGaName":513,"dataGaLocation":462},"/the-source/security/devsecops-the-key-to-modern-security-resilience/","DevSecOps the key to modern security resilience",{"config":515,"title":516,"description":517,"link":518},{"slug":445},"Guide to dynamic SBOMs: An integral element of modern software development","Learn how to gain visibility into previously unidentified organizational risks with a software bill of materials (SBOM).",{"text":519,"config":520},"Read the guide",{"href":521,"dataGaName":522,"dataGaLocation":462},"/the-source/security/guide-to-dynamic-sboms/","Guide to Dynamic SBOMs",1772652088421]