SlideShare a Scribd company logo
T04f
T04f
Mesh Services extend Web applications into Desktop by providing
Access to Live user Social Graph, Synchronized Storage and
Offline Access


Live Services add Value to various Stages of application
Development and Use Lifecycle


Live Framework provides Runtimes, API Kits, Resource Model, Tools
and Controls to Build, Deploy, Run and Update Mesh-Enabled Web
Applications
Synchronized
                        Storage

                                       Identity &
         Analytics
                                      Membership




Hosting and            Mesh
                                              Timely News
 Execution
                     Application



                                      Deployment to
        Catalogue
                                        Devices

                      Servicing and
                         Update
Developers                                Users


       Analyze
                     Evaluate
       Usage &                              Uninstall      Discover
                     & Learn
       Improve


Update &                                Get
                            Develop                               Evaluate
Maintain                              Updates


                                        Share
  License &                Test &                               License &
                                         and
   Market                  Debug                                 Acquire
                                       Socialize

               Deploy &                            Configure
                Publish                             & Use
Websites                      Client Applications
             Reach                                 Rich

Highpoints                           Highpoints
   Access from Anywhere                Rich and Native User Experience
   Instant On Updates                  Occasionally Connected (Offline)
   Sandboxed to Browser                Hosted on OS
   Deployment & Update
   Discoverable via Search
   Shareable via URL
                                     Challenges
Challenges                              Deployment & Update
   Occasional Connection(offline)      Discoverability
   Rich & Native User Experience       Ability to share
   Scalability                         Sandboxing & Access control




           Mesh-Enabled Web Applications
Sync…




Websites
                            Sync…


                   Devices & Social Mesh
T04f
 Client-side Web Apps Hosted on Live Services or Websites
 • DHTML, JavaScript/Ajax, Silverlight, etc

 Simple Feed-based Programming APIs
 • AtomPub/RSS/XML/HTTP                                           Mesh-Enabled Web
                                                                     Application
 Auto Deployment and Update
 • Sync Web App Files                                        • Application Mesh Object
                                                                 •Data Feed(s)
 Socially Aware and Shareable                                        •Application Data
                                                                      •Settings
 • Sync Web App data with users and devices                           •User data
                                                             •Associated Mesh Objects
 Accessed by Originating Website
                                                                  •Access to user data
 • User controlled access of data

 Runs in a Sandbox
 • Browser sandbox Online & Offline
Contoso.com                                                       Device                                                                                                              Live Website

Third-Party             Desktop Host
 Website




                          Sandbox
                                                   Mesh-Enabled




                                                                                                                      Mesh Bar
                                                                                                                                                                    Sandbox
                                                    Web App
                                                                                                                                                                            Mesh-Enabled




                                                                                                                                                                                                     Mesh Bar
                                                   Silverlight/Ajax                                                                                                          Web App
                                                      Kit & APIs
                                                                                                                                                                            SilverLight/Ajax
                                                                                                                                                                                Kit & APIs

                                AtomPub/FeedSync/XML/HTTP
                       App Manager
                        App Host                                                      Client LOE




                                           AtomPub/FeedSync/XML/HTTP

                                                   Cloud Live Operating Envrionment
                                                                   Live Desktop App




                                                                                                                                               Synchronization
                                                                                       Communication
                        App Catalogue


                                                    App Manager




                                                                                                       Notification




                                                                                                                                                                          Enclosure
                                        App Host




                                                                                                                                                                 PubSub
                                                                                                                                    Identity
                                                                                                                          Storage




       Live Services
           Store

                                                                   Live Services
Register your domain and get a App ID & Secret
                                                          Developer Portal



     Download Live Framework SDK and VS Tools



  Build and debug application using Visual Studio (or
                   preferred tool)



Upload Application to Azure Developer Portal (Optional)



  Market and publicize your app on your web site (or
                   anywhere else)!



        Get user consent and access their data
T04f
1                           ∞
Application   User Installs
                               Installed              User Gives    User Private
                                                       Access
(Catalogue)                   Application                              Data




                                   User Creates
                                                  ∞
                                  Data
                                Instance
                                   Has




                                                  ∞                            ∞
                              Synchronized                            Member
                              Mesh Object             User Shares
                                                                     (Live User)
                                (DataFeeds)
T04f
Live Framework APIs provide
capabilities to:
• Manage app News
• Manage app Members           News
• View mapped Devices

App can use Live social and
device context                Members


Apps can build their own      Devices
control/experience

Mesh Control is the current
default implementation
public Page()
{
       InitializeComponent();
       MeshApplicationService meshApp = Application.Current.GetMeshApplicationService();
       meshApp.LoadCompleted += new EventHandler(app_Load);
       meshApp.Load();
}

void app_Load(object sender, EventArgs e)
{
      MeshApplicationService meshApp = Application.Current.GetMeshApplicationService();
      RenderContent(meshApp);
}

void RenderContent(MeshApplicationService meshApp)
{
       //Accessing Mesh
      myMesh = meshApp.LiveOperatingEnvironment.Mesh;
      //Accessing the Application Mesh Object
      meshApp.Resources.Title = "My Title";
MeshApp.run = function MeshApp$run() {
    Microsoft.LiveFX.MeshApplication.loadAsync(windows.location.hostname,
         Delegate.create(null, function(meshApplicationContext)
         {
                  if (meshApplicationContext.state !==
                  Microsoft.LiveFX.OperationState.Success)
                  {
                       MeshApp._showError('MeshApplication Load Failed');
                  }
        else
         {
            var meshApplication = meshApplicationContext.resource;
            meshApplication.get_runtimeEndpoint().get_mesh().loadAsync
                  (Delegate.create(null, function(meshOperationContext)
                  {
                         MeshApp._onLoadMesh(meshOperationContext);
                  }));
        }
    }));
Mesh-Enabled                                      Rich Client
                          Web Apps
Web Application                                      Apps
• Pre-authenticated   • Request for partial   • App runs as the
• Pre-authorized to     access to user data     user, with full
  only access user      (Delegated              permission
  consented data        Authentication)       • Access to Cloud or
• Sandboxed to        • Pass requested          Client Live Services
  browser               permissions, App ID     endpoints
• No token              & Secret
  management is       • After user consent,
  required              gets a token to use
                        against Live
                        Services endpoint
All about putting users in control of their data and apps

Application Secure Context
 • Apps not allowed to access disk, other apps and user private data
 • User can explicitly grant permission to private data
Offers & Roles (Read, Write, Full)
 • Standard: Contacts, Profiles, News, LiveMeshFolder
 • Custom Offers: <Custom Type> of Mesh Objects (promotes app type sharing)

Client Sandbox: Shared secret and cookies isolate each application

Live Desktop Sandbox: Cookies, Iframe and domain isolation
1) Add App to Mesh                           2) Consent Request



                                                    5) Del Auth Token
                               Third Party
                                Web Site            6) Call with Token     Live
                                                                          Website
                                                                         ________
User
                                                                           Live
                            3) Consent Request UI                        Services

                            4) Agree to Consent
T04f
Application ID    • Uniquely identifies a Live Mesh Application



    Secret         • Used to authenticate a third party website


                   • Permissions can be managed at Mesh Object, Profiles, Contacts and
   Resources         Mesh Application level

                   • Privileges requested/given to third party web sites
 Roles & Offers    • Read, Contribute, Own


Consent Request    • A request by a web site to get access to a Mesh resource


                   • User explicit permission to an application to access his/her data &
 User Consent        applications


Delegation Token   • An encrypted token representing a granted consent



 Refresh Token     • Used to refresh a token for a granted consent
Updating Applications is a pain point for developers and end-
users

Mesh Auto update service updates all the instances of a
Mesh App upon use

Triggered when developer uploads a new version into
Application Catalogue

Auto update is optional (user decides whether and when to
update)

App Catalogue stores and renders multiple versions of an
application
Global Store for all Mesh-Enabled Web Applications

Install From Catalogue Or Website

Developer View vs End-user View

Application Approval Process

Applications are addressable & shareable via URL

Accessed via Live Desktop web site
Mesh-enabled Web Apps             Mesh Service
 Extend Websites to run        Synchronizes App Files
   Offline on Desktop              and App Data




 Live Framework Provides
   Tools and APIs Kits for   Users Control Access to
  Building Live Connected       their Apps and Data
            Apps
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
     conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
                                 MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
www.microsoft.com
T04f
T04f
10%   9%


23%        58%
T04f
T04f
T04f
T04f
T04f
T04f
T04f

More Related Content

PPTX
Deep Dive SharePoint 2013: Developing applications in SharePoint 2013: forget...
PPTX
MoMoAthens Cross-Screen_Introduction to Webinos by Webinos
PDF
Effectively using Nokia Web Tools 2.0 templates for Series 40 web apps
PPTX
Codestrong 2012 breakout session the role of cloud services in your next ge...
PDF
Intrgrating sps-2010-and-windows-azure
PDF
02 Ms Online Identity Session 1
PDF
"BlackBerry Webworks : Apps for The Smartphone and Tablet"
PPTX
Building and packaging highly scalable services for maximum market penetratio...
Deep Dive SharePoint 2013: Developing applications in SharePoint 2013: forget...
MoMoAthens Cross-Screen_Introduction to Webinos by Webinos
Effectively using Nokia Web Tools 2.0 templates for Series 40 web apps
Codestrong 2012 breakout session the role of cloud services in your next ge...
Intrgrating sps-2010-and-windows-azure
02 Ms Online Identity Session 1
"BlackBerry Webworks : Apps for The Smartphone and Tablet"
Building and packaging highly scalable services for maximum market penetratio...

What's hot (20)

PPTX
Working with Data and Web Services in Microsoft Silverlight 2
PPT
Fast, Strong & Nimble Mobile Performance Testing
PDF
Intro to Force.com Webinar presentation
PDF
Metrics that Matter-Approaches To Managing High Performing Websites
PDF
API Reliability Guide
PPSX
FOREST - VMware Zimbra Collaboration Server Overview
PDF
Jee技术在移动互联网中的应用
PPTX
When worlds Collide: HTML5 Meets the Cloud
PDF
VMware Zimbra 7
PPTX
SharePoint 2010 as a Development Platform
PDF
Why Load Testing from the Cloud Doesn't Work
PDF
Silverlight Document Search Engine
PPT
Simplified Web2.0 application development with Project Zero
PPTX
vFabric - Ideal Platform for SaaS Apps
PPTX
eXo overview Fev 2013. Introducing our new positioning.
PDF
Camo Tech (Apr 2010)
PDF
6 develop web20_with_rad-tim_frnacis_sarika-s
 
PPTX
Sql Server 2012 Reporting-Services is Now a SharePoint Service Application
PDF
IMS presence for intuitive communications
PPTX
InduSoft Web Studio e Dream Report
Working with Data and Web Services in Microsoft Silverlight 2
Fast, Strong & Nimble Mobile Performance Testing
Intro to Force.com Webinar presentation
Metrics that Matter-Approaches To Managing High Performing Websites
API Reliability Guide
FOREST - VMware Zimbra Collaboration Server Overview
Jee技术在移动互联网中的应用
When worlds Collide: HTML5 Meets the Cloud
VMware Zimbra 7
SharePoint 2010 as a Development Platform
Why Load Testing from the Cloud Doesn't Work
Silverlight Document Search Engine
Simplified Web2.0 application development with Project Zero
vFabric - Ideal Platform for SaaS Apps
eXo overview Fev 2013. Introducing our new positioning.
Camo Tech (Apr 2010)
6 develop web20_with_rad-tim_frnacis_sarika-s
 
Sql Server 2012 Reporting-Services is Now a SharePoint Service Application
IMS presence for intuitive communications
InduSoft Web Studio e Dream Report
Ad

Viewers also liked (12)

PDF
[社内向け]Titanium勉強会
PPTX
Etica para los negocios
PPT
Motivation
PPTX
Ucla hospital
PDF
Manual toshiba l655
PPTX
Using Pro quest-Raul Marrero
PPTX
What’s up with wikipedia
PPTX
Package Holiday White Paper
PPTX
CEREBELLUM & GAIT by Dr ROTO ROBO
PPTX
Glycogen disorder disease
PPTX
Treament of malaria
PPT
Educational technology ppt
[社内向け]Titanium勉強会
Etica para los negocios
Motivation
Ucla hospital
Manual toshiba l655
Using Pro quest-Raul Marrero
What’s up with wikipedia
Package Holiday White Paper
CEREBELLUM & GAIT by Dr ROTO ROBO
Glycogen disorder disease
Treament of malaria
Educational technology ppt
Ad

Similar to T04f (20)

PPTX
Mesh-Enabled Web Applications
PDF
Enterprise apps in SharePoint 2013
PDF
Glass Fish Mobility Platform Santiago Pericas Geersten V2
PDF
Ideas for addictive series 40 web apps
PPTX
SPEC INDIA Java Case Study
PDF
Azure Cloud Application Development Workshop - UGIdotNET
PPTX
Building single page applications
PDF
Google App Engine At A Glance
PDF
Toronto Share Point Camp 2009 Social Computing With Share Point & Silverlig...
PDF
GlassFish Mobility Platform - Hans Hrasna
PPTX
Azure Services Platform
PPTX
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
PPTX
6.Live Framework 和Mesh Services
PPTX
Patterns of Cloud Applications Using Microsoft Azure Services Platform
PDF
V fabric overview
PPTX
OpenStack Quantum Network Service
PPTX
SharePoint Development with Visual Studio 2012
PDF
Client Continuum Dec Fy09
PPTX
On-Demand Webinar: Software Virtualization Lifecycle
PDF
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mesh-Enabled Web Applications
Enterprise apps in SharePoint 2013
Glass Fish Mobility Platform Santiago Pericas Geersten V2
Ideas for addictive series 40 web apps
SPEC INDIA Java Case Study
Azure Cloud Application Development Workshop - UGIdotNET
Building single page applications
Google App Engine At A Glance
Toronto Share Point Camp 2009 Social Computing With Share Point & Silverlig...
GlassFish Mobility Platform - Hans Hrasna
Azure Services Platform
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
6.Live Framework 和Mesh Services
Patterns of Cloud Applications Using Microsoft Azure Services Platform
V fabric overview
OpenStack Quantum Network Service
SharePoint Development with Visual Studio 2012
Client Continuum Dec Fy09
On-Demand Webinar: Software Virtualization Lifecycle
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks

Recently uploaded (20)

PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
Cloud computing and distributed systems.
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
cuic standard and advanced reporting.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Modernizing your data center with Dell and AMD
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
KodekX | Application Modernization Development
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Diabetes mellitus diagnosis method based random forest with bat algorithm
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Cloud computing and distributed systems.
Chapter 3 Spatial Domain Image Processing.pdf
cuic standard and advanced reporting.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Understanding_Digital_Forensics_Presentation.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Reach Out and Touch Someone: Haptics and Empathic Computing
Building Integrated photovoltaic BIPV_UPV.pdf
A Presentation on Artificial Intelligence
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Modernizing your data center with Dell and AMD
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Big Data Technologies - Introduction.pptx
KodekX | Application Modernization Development

T04f

  • 3. Mesh Services extend Web applications into Desktop by providing Access to Live user Social Graph, Synchronized Storage and Offline Access Live Services add Value to various Stages of application Development and Use Lifecycle Live Framework provides Runtimes, API Kits, Resource Model, Tools and Controls to Build, Deploy, Run and Update Mesh-Enabled Web Applications
  • 4. Synchronized Storage Identity & Analytics Membership Hosting and Mesh Timely News Execution Application Deployment to Catalogue Devices Servicing and Update
  • 5. Developers Users Analyze Evaluate Usage & Uninstall Discover & Learn Improve Update & Get Develop Evaluate Maintain Updates Share License & Test & License & and Market Debug Acquire Socialize Deploy & Configure Publish & Use
  • 6. Websites Client Applications Reach Rich Highpoints Highpoints Access from Anywhere Rich and Native User Experience Instant On Updates Occasionally Connected (Offline) Sandboxed to Browser Hosted on OS Deployment & Update Discoverable via Search Shareable via URL Challenges Challenges Deployment & Update Occasional Connection(offline) Discoverability Rich & Native User Experience Ability to share Scalability Sandboxing & Access control Mesh-Enabled Web Applications
  • 7. Sync… Websites Sync… Devices & Social Mesh
  • 9.  Client-side Web Apps Hosted on Live Services or Websites • DHTML, JavaScript/Ajax, Silverlight, etc  Simple Feed-based Programming APIs • AtomPub/RSS/XML/HTTP Mesh-Enabled Web Application  Auto Deployment and Update • Sync Web App Files • Application Mesh Object •Data Feed(s)  Socially Aware and Shareable •Application Data •Settings • Sync Web App data with users and devices •User data •Associated Mesh Objects  Accessed by Originating Website •Access to user data • User controlled access of data  Runs in a Sandbox • Browser sandbox Online & Offline
  • 10. Contoso.com Device Live Website Third-Party Desktop Host Website Sandbox Mesh-Enabled Mesh Bar Sandbox Web App Mesh-Enabled Mesh Bar Silverlight/Ajax Web App Kit & APIs SilverLight/Ajax Kit & APIs AtomPub/FeedSync/XML/HTTP App Manager App Host Client LOE AtomPub/FeedSync/XML/HTTP Cloud Live Operating Envrionment Live Desktop App Synchronization Communication App Catalogue App Manager Notification Enclosure App Host PubSub Identity Storage Live Services Store Live Services
  • 11. Register your domain and get a App ID & Secret Developer Portal Download Live Framework SDK and VS Tools Build and debug application using Visual Studio (or preferred tool) Upload Application to Azure Developer Portal (Optional) Market and publicize your app on your web site (or anywhere else)! Get user consent and access their data
  • 13. 1 ∞ Application User Installs Installed User Gives User Private Access (Catalogue) Application Data User Creates ∞ Data Instance Has ∞ ∞ Synchronized Member Mesh Object User Shares (Live User) (DataFeeds)
  • 15. Live Framework APIs provide capabilities to: • Manage app News • Manage app Members News • View mapped Devices App can use Live social and device context Members Apps can build their own Devices control/experience Mesh Control is the current default implementation
  • 16. public Page() { InitializeComponent(); MeshApplicationService meshApp = Application.Current.GetMeshApplicationService(); meshApp.LoadCompleted += new EventHandler(app_Load); meshApp.Load(); } void app_Load(object sender, EventArgs e) { MeshApplicationService meshApp = Application.Current.GetMeshApplicationService(); RenderContent(meshApp); } void RenderContent(MeshApplicationService meshApp) { //Accessing Mesh myMesh = meshApp.LiveOperatingEnvironment.Mesh; //Accessing the Application Mesh Object meshApp.Resources.Title = "My Title";
  • 17. MeshApp.run = function MeshApp$run() { Microsoft.LiveFX.MeshApplication.loadAsync(windows.location.hostname, Delegate.create(null, function(meshApplicationContext) { if (meshApplicationContext.state !== Microsoft.LiveFX.OperationState.Success) { MeshApp._showError('MeshApplication Load Failed'); } else { var meshApplication = meshApplicationContext.resource; meshApplication.get_runtimeEndpoint().get_mesh().loadAsync (Delegate.create(null, function(meshOperationContext) { MeshApp._onLoadMesh(meshOperationContext); })); } }));
  • 18. Mesh-Enabled Rich Client Web Apps Web Application Apps • Pre-authenticated • Request for partial • App runs as the • Pre-authorized to access to user data user, with full only access user (Delegated permission consented data Authentication) • Access to Cloud or • Sandboxed to • Pass requested Client Live Services browser permissions, App ID endpoints • No token & Secret management is • After user consent, required gets a token to use against Live Services endpoint
  • 19. All about putting users in control of their data and apps Application Secure Context • Apps not allowed to access disk, other apps and user private data • User can explicitly grant permission to private data Offers & Roles (Read, Write, Full) • Standard: Contacts, Profiles, News, LiveMeshFolder • Custom Offers: <Custom Type> of Mesh Objects (promotes app type sharing) Client Sandbox: Shared secret and cookies isolate each application Live Desktop Sandbox: Cookies, Iframe and domain isolation
  • 20. 1) Add App to Mesh 2) Consent Request 5) Del Auth Token Third Party Web Site 6) Call with Token Live Website ________ User Live 3) Consent Request UI Services 4) Agree to Consent
  • 22. Application ID • Uniquely identifies a Live Mesh Application Secret • Used to authenticate a third party website • Permissions can be managed at Mesh Object, Profiles, Contacts and Resources Mesh Application level • Privileges requested/given to third party web sites Roles & Offers • Read, Contribute, Own Consent Request • A request by a web site to get access to a Mesh resource • User explicit permission to an application to access his/her data & User Consent applications Delegation Token • An encrypted token representing a granted consent Refresh Token • Used to refresh a token for a granted consent
  • 23. Updating Applications is a pain point for developers and end- users Mesh Auto update service updates all the instances of a Mesh App upon use Triggered when developer uploads a new version into Application Catalogue Auto update is optional (user decides whether and when to update) App Catalogue stores and renders multiple versions of an application
  • 24. Global Store for all Mesh-Enabled Web Applications Install From Catalogue Or Website Developer View vs End-user View Application Approval Process Applications are addressable & shareable via URL Accessed via Live Desktop web site
  • 25. Mesh-enabled Web Apps Mesh Service Extend Websites to run Synchronizes App Files Offline on Desktop and App Data Live Framework Provides Tools and APIs Kits for Users Control Access to Building Live Connected their Apps and Data Apps
  • 26. © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
  • 30. 10% 9% 23% 58%