From ff5065770addc53ece10822054b0bda979dc9100 Mon Sep 17 00:00:00 2001 From: sstent Date: Thu, 28 Aug 2025 17:31:01 -0700 Subject: [PATCH] partital fix - checkpoint 2 --- COMPLETION_NOTES.md | 95 - JUNIOR_ENGINEER_GUIDE.md | 67 - PORTING_PLAN.md | 100 - examples/basic/main.go | 54 + garth.md | 8 +- go.mod | 10 +- go.sum | 18 + internal/api/health.go | 47 +- internal/api/health_test.go | 93 +- internal/api/hrv.go | 25 + internal/api/integration_test.go | 123 + internal/api/mock_server_test.go | 66 +- internal/api/sleep.go | 32 + internal/api/steps.go | 25 + internal/api/stress.go | 24 + internal/api/user_test.go | 56 +- python-garminconnect/.coderabbit.yaml | 22 - python-garminconnect/.pre-commit-config.yaml | 28 - python-garminconnect/.vscode/settings.json | 7 - python-garminconnect/LICENSE | 21 - python-garminconnect/Makefile | 104 - python-garminconnect/README.md | 166 - python-garminconnect/example.py | 956 - python-garminconnect/example_tracking_gear.py | 219 - .../garminconnect/__init__.py | 1540 - python-garminconnect/garminconnect/fit.py | 511 - .../garminconnect/graphql_queries.txt | 23829 ---------------- python-garminconnect/pyproject.toml | 92 - python-garminconnect/reference.ipynb | 529 - python-garminconnect/requirements-dev.txt | 10 - python-garminconnect/requirements-test.txt | 4 - .../tests/12129115726_ACTIVITY.fit | Bin 5289 -> 0 bytes .../tests/cassettes/test_all_day_stress.yaml | 518 - .../tests/cassettes/test_body_battery.yaml | 146 - .../cassettes/test_body_composition.yaml | 237 - .../tests/cassettes/test_daily_steps.yaml | 145 - .../cassettes/test_download_activity.yaml | 12960 --------- .../tests/cassettes/test_floors.yaml | 208 - .../tests/cassettes/test_heart_rates.yaml | 417 - .../tests/cassettes/test_hrv_data.yaml | 312 - .../tests/cassettes/test_hydration_data.yaml | 240 - .../tests/cassettes/test_request_reload.yaml | 737 - .../cassettes/test_respiration_data.yaml | 455 - .../tests/cassettes/test_spo2_data.yaml | 255 - .../tests/cassettes/test_stats.yaml | 372 - .../tests/cassettes/test_stats_and_body.yaml | 333 - .../tests/cassettes/test_steps_data.yaml | 332 - .../tests/cassettes/test_upload.yaml | 348 - .../tests/cassettes/test_user_summary.yaml | 178 - python-garminconnect/tests/conftest.py | 78 - python-garminconnect/tests/test_garmin.py | 146 - 51 files changed, 491 insertions(+), 46807 deletions(-) delete mode 100644 COMPLETION_NOTES.md delete mode 100644 JUNIOR_ENGINEER_GUIDE.md delete mode 100644 PORTING_PLAN.md create mode 100644 examples/basic/main.go create mode 100644 internal/api/hrv.go create mode 100644 internal/api/integration_test.go create mode 100644 internal/api/sleep.go create mode 100644 internal/api/steps.go create mode 100644 internal/api/stress.go delete mode 100644 python-garminconnect/.coderabbit.yaml delete mode 100644 python-garminconnect/.pre-commit-config.yaml delete mode 100644 python-garminconnect/.vscode/settings.json delete mode 100644 python-garminconnect/LICENSE delete mode 100644 python-garminconnect/Makefile delete mode 100644 python-garminconnect/README.md delete mode 100755 python-garminconnect/example.py delete mode 100755 python-garminconnect/example_tracking_gear.py delete mode 100644 python-garminconnect/garminconnect/__init__.py delete mode 100644 python-garminconnect/garminconnect/fit.py delete mode 100644 python-garminconnect/garminconnect/graphql_queries.txt delete mode 100644 python-garminconnect/pyproject.toml delete mode 100644 python-garminconnect/reference.ipynb delete mode 100644 python-garminconnect/requirements-dev.txt delete mode 100644 python-garminconnect/requirements-test.txt delete mode 100644 python-garminconnect/tests/12129115726_ACTIVITY.fit delete mode 100644 python-garminconnect/tests/cassettes/test_all_day_stress.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_body_battery.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_body_composition.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_daily_steps.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_download_activity.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_floors.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_heart_rates.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_hrv_data.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_hydration_data.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_request_reload.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_respiration_data.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_spo2_data.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_stats.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_stats_and_body.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_steps_data.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_upload.yaml delete mode 100644 python-garminconnect/tests/cassettes/test_user_summary.yaml delete mode 100644 python-garminconnect/tests/conftest.py delete mode 100644 python-garminconnect/tests/test_garmin.py diff --git a/COMPLETION_NOTES.md b/COMPLETION_NOTES.md deleted file mode 100644 index eace6a0..0000000 --- a/COMPLETION_NOTES.md +++ /dev/null @@ -1,95 +0,0 @@ -# Go Garmin Connect API Implementation - Completion Report - -## Completed Phases - -### Phase 1: Setup & Core Structure -- [x] Go module initialized -- [x] Project structure created -- [x] Docker infrastructure with multi-stage builds -- [x] CI/CD pipeline setup -- [x] Initial documentation added - -### Phase 2: Authentication System -- [x] OAuth2 authentication with MFA support implemented -- [x] Token storage with file-based system -- [x] MFA handling support -- [x] Authentication tests - -### Phase 3: API Client Core -- [x] Client struct defined -- [x] Request/response handling -- [x] Logging implementation -- [x] Rate limiting - -### Phase 4: Endpoint Implementation -- [x] User profile endpoint -- [x] Activities endpoint with pagination -- [x] Response validation - -### Phase 5: FIT Handling -- [x] Basic FIT decoder implementation -- [x] Streaming FIT encoder implementation - - io.WriteSeeker interface - - Incremental CRC calculation - - Memory efficient for large files - -## How to Run the Application - -1. Set environment variables: -```bash -export GARMIN_CONSUMER_KEY=your_key -export GARMIN_CONSUMER_SECRET=your_secret -``` - -2. Build and run with Docker: -```bash -cd docker -docker compose up -d --build -``` - -3. Access the application at: http://localhost:8080 - -## Activity Endpoints Implementation Details -- [x] Implemented `GetActivities` with pagination support -- [x] Created `GetActivityDetails` endpoint -- [x] Added custom JSON unmarshalling for activity data -- [x] Implemented robust error handling for 404 responses -- [x] Added GPS track point timestamp parsing -- [x] Created comprehensive table-driven tests - - Custom time parsing with garminTime structure - - Mock server implementation - - Test coverage for 200/404 responses - -## Activity Upload/Download Implementation -- [x] Implemented `UploadActivity` endpoint - - Handles multipart FIT file uploads - - Validates FIT file structure - - Returns created activity ID -- [x] Implemented `DownloadActivity` endpoint - - Retrieves activity as FIT binary - - Sets proper content headers -- [x] Added FIT file validation -- [x] Created comprehensive tests for upload/download flow - -## Gear Management Implementation Details -- [x] Implemented `GetGearStats` endpoint - - Retrieves detailed statistics for a gear item - - Handles 404 responses for invalid UUIDs -- [x] Implemented `GetGearActivities` endpoint - - Supports pagination (start, limit parameters) - - Returns activity details with proper time formatting -- [x] Added comprehensive table-driven tests - - Mock server implementations - - Test coverage for success and error cases - - Pagination verification - -## MFA Session Management -- [x] Implemented state persistence for MFA flow -- [x] Created MFA state storage interface -- [x] Added file-based implementation for MFA state -- [x] Integrated with authentication flow -- [x] Added comprehensive tests for session persistence - -## Next Steps -- Add comprehensive test coverage for all endpoints -- Improve error handling and logging diff --git a/JUNIOR_ENGINEER_GUIDE.md b/JUNIOR_ENGINEER_GUIDE.md deleted file mode 100644 index e796dca..0000000 --- a/JUNIOR_ENGINEER_GUIDE.md +++ /dev/null @@ -1,67 +0,0 @@ -# Junior Engineer Implementation Guide - -## Task Implementation Checklist -```markdown -**Task: [Task Name]** -- [ ] Study Python equivalent functionality -- [ ] Design Go implementation approach -- [ ] Implement core functionality -- [ ] Add comprehensive unit tests -- [ ] Handle edge cases and errors -- [ ] Benchmark performance -- [ ] Document public interfaces -- [ ] Submit PR for review -``` - -## Workflow Guidelines -1. **Task Selection**: - - Choose one endpoint or module at a time - - Start with authentication before moving to endpoints - -2. **Implementation Process**: - ```mermaid - graph LR - A[Study Python Code] --> B[Design Go Interface] - B --> C[Implement Core] - C --> D[Write Tests] - D --> E[Benchmark] - E --> F[Document] - ``` - -3. **Code Standards**: - - Follow Go idioms and effective Go guidelines - - Use interfaces for external dependencies - - Keep functions small and focused - - Add comments for complex logic - - Write self-documenting code - -4. **Testing Requirements**: - - Maintain 80%+ test coverage - - Test all error conditions - - Verify boundary cases - - Include concurrency tests - -5. **PR Submission**: - - Include implementation details in PR description - - Add references to Python source - - Document test cases - - Note any potential limitations - -## Common Endpoint Implementation Template -```go -func (c *Client) GetEndpoint(ctx context.Context, params url.Values) (*ResponseType, error) { - // 1. Build request URL - // 2. Handle authentication - // 3. Send request - // 4. Parse response - // 5. Handle errors - // 6. Return structured data -} -``` - -## Troubleshooting Tips -- When stuck, compare with Python implementation -- Use debug logging for API calls -- Verify token refresh functionality -- Check response status codes -- Consult FIT specification documents diff --git a/PORTING_PLAN.md b/PORTING_PLAN.md deleted file mode 100644 index c43a2fd..0000000 --- a/PORTING_PLAN.md +++ /dev/null @@ -1,100 +0,0 @@ -# Go Porting Implementation Plan - -## Project Structure -```text -/go-garminconnect -├── cmd/ # CLI example applications -├── garminconnect/ # Core API wrapper package -├── fit/ # FIT encoding package -├── internal/ # Internal helpers and utilities -├── examples/ # Example usage -├── PORTING_PLAN.md -├── JUNIOR_ENGINEER_GUIDE.md -└── README.md -``` - -## Phase Implementation Details - -### Phase 1: Setup & Core Structure -- [x] Initialize Go module: `go mod init github.com/sstent/go-garminconnect` -- [x] Create directory structure -- [x] Set up CI/CD pipeline -- [x] Create Makefile with build/test targets -- [x] Add basic README with project overview - -### Phase 2: Authentication Implementation -- [x] Implement OAuth2 authentication flow with MFA support -- [x] Create token storage interface -- [x] Implement session management with auto-refresh -- [x] Handle MFA authentication -- [x] Test against sandbox environment - -### Phase 3: API Client Core -- [x] Create Client struct with configuration -- [x] Implement generic request handler -- [x] Add automatic token refresh -- [x] Implement rate limiting -- [x] Set up connection pooling -- [x] Create response parsing utilities - -### Phase 4: Endpoint Implementation -#### Health Data Endpoints -- [ ] Body composition -- [ ] Sleep data -- [ ] Heart rate/HRV/RHR -- [ ] Stress data -- [ ] Body battery - -#### Activity Endpoints -- [x] Activity list/search - - Implemented with pagination support -- [x] Activity details - - Added GPS track point timestamp parsing - - Custom time handling with garminTime structure - - Comprehensive table-driven tests -- [x] Activity upload/download - - Added FIT validation - - Implemented multipart upload - - Added endpoint for downloading activities in FIT format -- [x] Gear management - - Implemented GetGearStats - - Implemented GetGearActivities with pagination - - Comprehensive tests - -#### User Data Endpoints -- [ ] User summary -- [ ] Daily stats -- [ ] Goals/badges - -### Phase 5: FIT Handling -- [x] Port FIT encoder from Python - - Implemented core encoder with header/CRC - - Added support for activity messages -- [x] Implement weight composition encoding -- [x] Create streaming FIT encoder - - Supports io.WriteSeeker interface - - Implements incremental CRC calculation - - Handles large files with minimal memory -- [x] Add FIT parser - -### Phase 6: Testing & Quality -- [ ] Table-driven endpoint tests -- [ ] Mock server implementation -- [ ] FIT golden file tests -- [ ] Performance benchmarks -- [ ] Static analysis integration - -### Phase 7: Documentation & Examples -- [ ] Complete GoDoc coverage -- [ ] Create usage examples -- [ ] Build CLI example app -- [x] Write migration guide - -## Weekly Milestones -| Week | Focus Area | Key Deliverables | -|------|------------|------------------| -| 1 | Setup + Auth | Auth working, CI green | -| 2 | Core + Health | 40% test coverage, health endpoints | -| 3 | Activity + User | All endpoints implemented | -| 4 | FIT Handling | FIT encoding complete, 85% coverage | -| 5 | Documentation | Examples, guides, v1.0 release | diff --git a/examples/basic/main.go b/examples/basic/main.go new file mode 100644 index 0000000..48bfecf --- /dev/null +++ b/examples/basic/main.go @@ -0,0 +1,54 @@ +package main + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/sstent/go-garminconnect/internal/api" + "github.com/sstent/go-garminconnect/internal/auth/garth" +) + +func main() { + // Initialize authentication session + session := &garth.Session{ + OAuth2Token: "your_oauth2_token_here", + ExpiresAt: time.Now().Add(8 * time.Hour), + } + + // Create API client + client, err := api.NewClient(session, "") + if err != nil { + log.Fatalf("Failed to create client: %v", err) + } + + // Get user profile + profile, err := client.GetUserProfile(context.Background()) + if err != nil { + log.Fatalf("Failed to get user profile: %v", err) + } + fmt.Printf("User: %s (%s)\n", profile.FullName, profile.DisplayName) + + // Get sleep data for today + today := time.Now() + sleepData, err := client.GetSleepData(context.Background(), today) + if err != nil { + log.Fatalf("Failed to get sleep data: %v", err) + } + fmt.Printf("Sleep duration: %s\n", time.Duration(sleepData.SleepTimeSeconds)*time.Second) + + // Get stress data + stressData, err := client.GetStressData(context.Background(), today) + if err != nil { + log.Fatalf("Failed to get stress data: %v", err) + } + fmt.Printf("Daily stress level: %d\n", stressData.OverallStressLevel) + + // Get steps data + stepsData, err := client.GetStepsData(context.Background(), today) + if err != nil { + log.Fatalf("Failed to get steps data: %v", err) + } + fmt.Printf("Steps today: %d\n", stepsData.TotalSteps) +} diff --git a/garth.md b/garth.md index 4b97e6c..b84b625 100644 --- a/garth.md +++ b/garth.md @@ -352,9 +352,9 @@ func (m *MockGarminAPI) Do(req *http.Request) (*http.Response, error) { - [ ] JSON marshaling/unmarshaling tests ### Week 5: Data Models - Health Metrics -- [ ] Stress data models -- [ ] Steps, HRV, weight models -- [ ] Validation and business logic +- [x] Stress data models +- [x] Steps, HRV, weight models +- [x] Validation and business logic ### Week 6: Main Interface + Integration - [ ] High-level API implementation @@ -401,4 +401,4 @@ func (m *MockGarminAPI) Do(req *http.Request) (*http.Response, error) { - [ ] Intuitive API design - [ ] Comprehensive error messages -This TDD approach ensures that the Go port will be robust, well-tested, and maintain feature parity with the original Python library while leveraging Go's strengths in performance and concurrency. \ No newline at end of file +This TDD approach ensures that the Go port will be robust, well-tested, and maintain feature parity with the original Python library while leveraging Go's strengths in performance and concurrency. diff --git a/go.mod b/go.mod index 5b4c65f..54606cf 100644 --- a/go.mod +++ b/go.mod @@ -10,13 +10,21 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect + github.com/gabriel-vasile/mimetype v1.4.8 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.27.0 // indirect github.com/go-resty/resty/v2 v2.11.0 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/joho/godotenv v1.5.1 // indirect + github.com/leodido/go-urn v1.4.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/stretchr/objx v0.5.0 // indirect - golang.org/x/net v0.19.0 // indirect + golang.org/x/crypto v0.33.0 // indirect + golang.org/x/net v0.34.0 // indirect golang.org/x/oauth2 v0.15.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.22.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index f95a625..96cfadc 100644 --- a/go.sum +++ b/go.sum @@ -3,6 +3,14 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dghubble/oauth1 v0.7.3 h1:EkEM/zMDMp3zOsX2DC/ZQ2vnEX3ELK0/l9kb+vs4ptE= github.com/dghubble/oauth1 v0.7.3/go.mod h1:oxTe+az9NSMIucDPDCCtzJGsPhciJV33xocHfcR2sVY= +github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3GqacKw1NM= +github.com/gabriel-vasile/mimetype v1.4.8/go.mod h1:ByKUIKGjh1ODkGM1asKUbQZOLGrPjydw3hYPU2YU9t8= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.27.0 h1:w8+XrWVMhGkxOaaowyKH35gFydVHOvC0/uWoy2Fzwn4= +github.com/go-playground/validator/v10 v10.27.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= github.com/go-resty/resty/v2 v2.11.0 h1:i7jMfNOJYMp69lq7qozJP+bjgzfAzeOhuGlyDrqxT/8= github.com/go-resty/resty/v2 v2.11.0/go.mod h1:iiP/OpA0CkcL3IGt1O0+/SIItFUbkkyw5BGXiVdTu+A= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -12,6 +20,8 @@ github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -26,6 +36,8 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= @@ -37,6 +49,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -50,6 +64,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -62,6 +78,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= diff --git a/internal/api/health.go b/internal/api/health.go index 516404d..49d69d9 100644 --- a/internal/api/health.go +++ b/internal/api/health.go @@ -6,25 +6,16 @@ import ( "time" ) -// SleepData represents a user's sleep information -type SleepData struct { - Date time.Time `json:"date"` - Duration float64 `json:"duration"` // in minutes - Quality float64 `json:"quality"` // 0-100 scale - SleepStages struct { - Deep float64 `json:"deep"` - Light float64 `json:"light"` - REM float64 `json:"rem"` - Awake float64 `json:"awake"` - } `json:"sleepStages"` -} - // HRVData represents Heart Rate Variability data type HRVData struct { - Date time.Time `json:"date"` - RestingHrv float64 `json:"restingHrv"` // in milliseconds - WeeklyAvg float64 `json:"weeklyAvg"` - LastNightAvg float64 `json:"lastNightAvg"` + Date time.Time `json:"date"` + RestingHrv float64 `json:"restingHrv"` + WeeklyAvg float64 `json:"weeklyAvg"` + LastNightAvg float64 `json:"lastNightAvg"` + HrvStatus string `json:"hrvStatus"` + HrvStatusMessage string `json:"hrvStatusMessage"` + BaselineHrv int `json:"baselineHrv"` + ChangeFromBaseline int `json:"changeFromBaseline"` } // BodyBatteryData represents Garmin's Body Battery energy metric @@ -58,6 +49,28 @@ func (c *Client) GetHRVData(ctx context.Context, date time.Time) (*HRVData, erro return &data, nil } +// GetStressData retrieves stress data for a specific date +func (c *Client) GetStressData(ctx context.Context, date time.Time) (*DailyStress, error) { + var data DailyStress + path := fmt.Sprintf("/wellness-service/stress/daily/%s", date.Format("2006-01-02")) + + if err := c.Get(ctx, path, &data); err != nil { + return nil, fmt.Errorf("failed to get stress data: %w", err) + } + return &data, nil +} + +// GetStepsData retrieves step count data for a specific date +func (c *Client) GetStepsData(ctx context.Context, date time.Time) (*DailySteps, error) { + var data DailySteps + path := fmt.Sprintf("/wellness-service/steps/daily/%s", date.Format("2006-01-02")) + + if err := c.Get(ctx, path, &data); err != nil { + return nil, fmt.Errorf("failed to get steps data: %w", err) + } + return &data, nil +} + // GetBodyBatteryData retrieves Body Battery data for a specific date func (c *Client) GetBodyBatteryData(ctx context.Context, date time.Time) (*BodyBatteryData, error) { var data BodyBatteryData diff --git a/internal/api/health_test.go b/internal/api/health_test.go index 3b90b82..ebbf4cd 100644 --- a/internal/api/health_test.go +++ b/internal/api/health_test.go @@ -26,14 +26,20 @@ func BenchmarkGetSleepData(b *testing.B) { w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(map[string]interface{}{ - "date": testDate, - "duration": 480.0, - "quality": 85.0, - "sleepStages": map[string]interface{}{ - "deep": 120.0, - "light": 240.0, - "rem": 90.0, - "awake": 30.0, + "calendarDate": testDate, + "sleepTimeSeconds": 28800, // 8 hours in seconds + "deepSleepSeconds": 7200, // 2 hours + "lightSleepSeconds": 14400, // 4 hours + "remSleepSeconds": 7200, // 2 hours + "awakeSeconds": 1800, // 30 minutes + "sleepScore": 85, + "sleepScores": map[string]interface{}{ + "overall": 85, + "duration": 90, + "deep": 80, + "rem": 75, + "light": 70, + "awake": 95, }, }) }) @@ -124,31 +130,45 @@ func TestGetSleepData(t *testing.T) { name: "successful sleep data retrieval", date: now, mockResponse: map[string]interface{}{ - "date": testDate, - "duration": 480.0, - "quality": 85.0, - "sleepStages": map[string]interface{}{ - "deep": 120.0, - "light": 240.0, - "rem": 90.0, - "awake": 30.0, + "calendarDate": testDate, + "sleepTimeSeconds": 28800, + "deepSleepSeconds": 7200, + "lightSleepSeconds": 14400, + "remSleepSeconds": 7200, + "awakeSeconds": 1800, + "sleepScore": 85, + "sleepScores": map[string]interface{}{ + "overall": 85, + "duration": 90, + "deep": 80, + "rem": 75, + "light": 70, + "awake": 95, }, }, mockStatus: http.StatusOK, expected: &SleepData{ - Date: now.Truncate(time.Second), // Truncate to avoid precision issues - Duration: 480.0, - Quality: 85.0, - SleepStages: struct { - Deep float64 `json:"deep"` - Light float64 `json:"light"` - REM float64 `json:"rem"` - Awake float64 `json:"awake"` + CalendarDate: now.Truncate(time.Second), // Truncate to avoid precision issues + SleepTimeSeconds: 28800, + DeepSleepSeconds: 7200, + LightSleepSeconds: 14400, + RemSleepSeconds: 7200, + AwakeSeconds: 1800, + SleepScore: 85, + SleepScores: struct { + Overall int `json:"overall"` + Duration int `json:"duration"` + Deep int `json:"deep"` + Rem int `json:"rem"` + Light int `json:"light"` + Awake int `json:"awake"` }{ - Deep: 120.0, - Light: 240.0, - REM: 90.0, - Awake: 30.0, + Overall: 85, + Duration: 90, + Deep: 80, + Rem: 75, + Light: 70, + Awake: 95, }, }, }, @@ -201,8 +221,19 @@ func TestGetSleepData(t *testing.T) { assert.NotNil(t, data) // Only check fields if data is not nil if data != nil { - assert.Equal(t, tt.expected.Duration, data.Duration) - assert.Equal(t, tt.expected.Quality, data.Quality) + assert.Equal(t, tt.expected.CalendarDate, data.CalendarDate) + assert.Equal(t, tt.expected.SleepTimeSeconds, data.SleepTimeSeconds) + assert.Equal(t, tt.expected.DeepSleepSeconds, data.DeepSleepSeconds) + assert.Equal(t, tt.expected.LightSleepSeconds, data.LightSleepSeconds) + assert.Equal(t, tt.expected.RemSleepSeconds, data.RemSleepSeconds) + assert.Equal(t, tt.expected.AwakeSeconds, data.AwakeSeconds) + assert.Equal(t, tt.expected.SleepScore, data.SleepScore) + assert.Equal(t, tt.expected.SleepScores.Overall, data.SleepScores.Overall) + assert.Equal(t, tt.expected.SleepScores.Duration, data.SleepScores.Duration) + assert.Equal(t, tt.expected.SleepScores.Deep, data.SleepScores.Deep) + assert.Equal(t, tt.expected.SleepScores.Rem, data.SleepScores.Rem) + assert.Equal(t, tt.expected.SleepScores.Light, data.SleepScores.Light) + assert.Equal(t, tt.expected.SleepScores.Awake, data.SleepScores.Awake) } } }) @@ -382,4 +413,4 @@ func TestGetBodyBatteryData(t *testing.T) { } }) } -} \ No newline at end of file +} diff --git a/internal/api/hrv.go b/internal/api/hrv.go new file mode 100644 index 0000000..2963797 --- /dev/null +++ b/internal/api/hrv.go @@ -0,0 +1,25 @@ +package api + +import ( + "time" + + "github.com/go-playground/validator/v10" +) + +// HRVSummary represents Heart Rate Variability summary data from Garmin Connect +type HRVSummary struct { + Date time.Time `json:"date" validate:"required"` + RestingHrv float64 `json:"restingHrv" validate:"min=0"` + WeeklyAvg float64 `json:"weeklyAvg" validate:"min=0"` + LastNightAvg float64 `json:"lastNightAvg" validate:"min=0"` + HrvStatus string `json:"hrvStatus"` + HrvStatusMessage string `json:"hrvStatusMessage"` + BaselineHrv int `json:"baselineHrv" validate:"min=0"` + ChangeFromBaseline int `json:"changeFromBaseline"` +} + +// Validate ensures HRVSummary fields meet requirements +func (h *HRVSummary) Validate() error { + validate := validator.New() + return validate.Struct(h) +} diff --git a/internal/api/integration_test.go b/internal/api/integration_test.go new file mode 100644 index 0000000..1f0191e --- /dev/null +++ b/internal/api/integration_test.go @@ -0,0 +1,123 @@ +package api + +import ( + "context" + "net/http" + "strings" + "testing" + "time" + + "github.com/sstent/go-garminconnect/internal/auth/garth" + "github.com/stretchr/testify/assert" +) + +// TestIntegrationHealthMetrics tests end-to-end retrieval of all health metrics +func TestIntegrationHealthMetrics(t *testing.T) { + // Create test server + mockServer := NewMockServer() + defer mockServer.Close() + + // Setup mock responses + mockServer.SetHealthHandler(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json") + switch { + case strings.Contains(r.URL.Path, "sleep/daily"): + w.Write([]byte(`{ + "calendarDate": "2025-08-28T00:00:00Z", + "sleepTimeSeconds": 28800, + "deepSleepSeconds": 7200, + "lightSleepSeconds": 14400, + "remSleepSeconds": 7200, + "awakeSeconds": 1800, + "sleepScore": 85, + "sleepScores": { + "overall": 85, + "duration": 90, + "deep": 80, + "rem": 75, + "light": 70, + "awake": 95 + } + }`)) + case strings.Contains(r.URL.Path, "stress/daily"): + w.Write([]byte(`{ + "calendarDate": "2025-08-28T00:00:00Z", + "overallStressLevel": 42, + "restStressDuration": 18000, + "lowStressDuration": 14400, + "mediumStressDuration": 7200, + "highStressDuration": 3600, + "stressQualifier": "Balanced" + }`)) + case strings.Contains(r.URL.Path, "steps/daily"): + w.Write([]byte(`{ + "calendarDate": "2025-08-28T00:00:00Z", + "totalSteps": 12500, + "goal": 10000, + "activeMinutes": 90, + "distanceMeters": 8500.5, + "caloriesBurned": 450, + "stepsToGoal": 0, + "stepGoalAchieved": true + }`)) + case strings.Contains(r.URL.Path, "hrv-service/hrv/"): + w.Write([]byte(`{ + "date": "2025-08-28T00:00:00Z", + "restingHrv": 65, + "weeklyAvg": 62, + "lastNightAvg": 68, + "hrvStatus": "Balanced", + "hrvStatusMessage": "Normal variation", + "baselineHrv": 64, + "changeFromBaseline": 1 + }`)) + default: + w.WriteHeader(http.StatusNotFound) + } + }) + + // Create authenticated client + session := &garth.Session{ + OAuth2Token: "test-token", + ExpiresAt: time.Now().Add(8 * time.Hour), + } + client, err := NewClient(session, "") + assert.NoError(t, err) + client.HTTPClient.SetBaseURL(mockServer.URL()) + + // Test context + ctx := context.Background() + date := time.Date(2025, 8, 28, 0, 0, 0, 0, time.UTC) + + t.Run("RetrieveSleepData", func(t *testing.T) { + data, err := client.GetSleepData(ctx, date) + assert.NoError(t, err) + assert.NotNil(t, data) + assert.Equal(t, 28800, data.SleepTimeSeconds) + assert.Equal(t, 85, data.SleepScore) + }) + + t.Run("RetrieveStressData", func(t *testing.T) { + data, err := client.GetStressData(ctx, date) + assert.NoError(t, err) + assert.NotNil(t, data) + assert.Equal(t, 42, data.OverallStressLevel) + assert.Equal(t, "Balanced", data.StressQualifier) + }) + + t.Run("RetrieveStepsData", func(t *testing.T) { + data, err := client.GetStepsData(ctx, date) + assert.NoError(t, err) + assert.NotNil(t, data) + assert.Equal(t, 12500, data.TotalSteps) + assert.True(t, data.StepGoalAchieved) + }) + + t.Run("RetrieveHRVData", func(t *testing.T) { + data, err := client.GetHRVData(ctx, date) + assert.NoError(t, err) + assert.NotNil(t, data) + assert.Equal(t, 65.0, data.RestingHrv) + assert.Equal(t, "Balanced", data.HrvStatus) + }) +} diff --git a/internal/api/mock_server_test.go b/internal/api/mock_server_test.go index 79a799b..5dc0324 100644 --- a/internal/api/mock_server_test.go +++ b/internal/api/mock_server_test.go @@ -16,7 +16,7 @@ import ( type MockServer struct { server *httptest.Server mu sync.Mutex - + // Endpoint handlers activitiesHandler http.HandlerFunc activityDetailsHandler http.HandlerFunc @@ -24,7 +24,8 @@ type MockServer struct { userHandler http.HandlerFunc healthHandler http.HandlerFunc authHandler http.HandlerFunc - + statsHandler http.HandlerFunc // Added for stats endpoints + // Request counters requestCounters map[string]int } @@ -42,10 +43,10 @@ func NewMockServer() *MockServer { if m.requestCounters == nil { m.requestCounters = make(map[string]int) } - + endpointType := "unknown" path := r.URL.Path - + // Route requests to appropriate handlers based on path patterns switch { case strings.Contains(path, "/activitylist-service/activities"): @@ -72,6 +73,9 @@ func NewMockServer() *MockServer { case strings.Contains(path, "/gear-service"): endpointType = "gear" m.handleGear(w, r) + case strings.Contains(path, "/stats-service"): // Added stats routing + endpointType = "stats" + m.handleStats(w, r) default: endpointType = "unknown" http.Error(w, "Not found", http.StatusNotFound) @@ -133,6 +137,13 @@ func (m *MockServer) SetAuthHandler(handler http.HandlerFunc) { m.authHandler = handler } +// SetStatsHandler sets a custom handler for stats endpoint +func (m *MockServer) SetStatsHandler(handler http.HandlerFunc) { + m.mu.Lock() + defer m.mu.Unlock() + m.statsHandler = handler +} + // Reset resets all handlers and counters to default state func (m *MockServer) Reset() { m.mu.Lock() @@ -143,6 +154,7 @@ func (m *MockServer) Reset() { m.userHandler = nil m.healthHandler = nil m.authHandler = nil + m.statsHandler = nil m.requestCounters = make(map[string]int) } @@ -174,6 +186,8 @@ func (m *MockServer) SetResponse(endpoint string, status int, body interface{}) m.SetHealthHandler(handler) case "auth": m.SetAuthHandler(handler) + case "stats": + m.SetStatsHandler(handler) } } @@ -199,7 +213,7 @@ func (m *MockServer) handleActivities(w http.ResponseWriter, r *http.Request) { Distance: 10.0, }, } - + w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(ActivitiesResponse{ @@ -267,11 +281,24 @@ func (m *MockServer) handleUserData(w http.ResponseWriter, r *http.Request) { m.userHandler(w, r) return } - // Return mock user data + + // Default to successful response user := map[string]interface{}{ - "displayName": "Mock User", - "email": "mock@example.com", + "displayName": "Mock User", + "fullName": "Mock User Full", + "emailAddress": "mock@example.com", + "username": "mockuser", + "profileId": "mock-123", + "profileImageUrlLarge": "https://example.com/mock.jpg", + "location": "Mock Location", + "fitnessLevel": "INTERMEDIATE", + "height": 175.0, + "weight": 70.0, + "birthDate": "1990-01-01", } + + // If a custom handler is set, it will handle the response + // Otherwise, we return the default success response w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(user) @@ -328,6 +355,27 @@ func (m *MockServer) handleAuth(w http.ResponseWriter, r *http.Request) { json.NewEncoder(w).Encode(response) } +// handleStats is the default stats handler +func (m *MockServer) handleStats(w http.ResponseWriter, r *http.Request) { + if m.statsHandler != nil { + m.statsHandler(w, r) + return + } + + // Default stats response + stats := map[string]interface{}{ + "totalSteps": 10000, + "totalDistance": 8.5, + "totalCalories": 2200, + "activeMinutes": 45, + "restingHeartRate": 55, + } + + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(stats) +} + // handleBodyComposition handles body composition requests func (m *MockServer) handleBodyComposition(w http.ResponseWriter, r *http.Request) { BodyCompositionHandler(w, r) @@ -356,4 +404,4 @@ func NewClientWithBaseURL(baseURL string) *Client { } client.HTTPClient.SetBaseURL(baseURL) return client -} \ No newline at end of file +} diff --git a/internal/api/sleep.go b/internal/api/sleep.go new file mode 100644 index 0000000..921d4bb --- /dev/null +++ b/internal/api/sleep.go @@ -0,0 +1,32 @@ +package api + +import ( + "time" + + "github.com/go-playground/validator/v10" +) + +// SleepData represents sleep metrics from Garmin Connect +type SleepData struct { + CalendarDate time.Time `json:"calendarDate" validate:"required"` + SleepTimeSeconds int `json:"sleepTimeSeconds" validate:"min=0"` + DeepSleepSeconds int `json:"deepSleepSeconds" validate:"min=0"` + LightSleepSeconds int `json:"lightSleepSeconds" validate:"min=0"` + RemSleepSeconds int `json:"remSleepSeconds" validate:"min=0"` + AwakeSeconds int `json:"awakeSeconds" validate:"min=0"` + SleepScore int `json:"sleepScore" validate:"min=0,max=100"` + SleepScores struct { + Overall int `json:"overall"` + Duration int `json:"duration"` + Deep int `json:"deep"` + Rem int `json:"rem"` + Light int `json:"light"` + Awake int `json:"awake"` + } `json:"sleepScores"` +} + +// Validate ensures SleepData fields meet requirements +func (s *SleepData) Validate() error { + validate := validator.New() + return validate.Struct(s) +} diff --git a/internal/api/steps.go b/internal/api/steps.go new file mode 100644 index 0000000..f49ed2b --- /dev/null +++ b/internal/api/steps.go @@ -0,0 +1,25 @@ +package api + +import ( + "time" + + "github.com/go-playground/validator/v10" +) + +// DailySteps represents daily step count data from Garmin Connect +type DailySteps struct { + CalendarDate time.Time `json:"calendarDate" validate:"required"` + TotalSteps int `json:"totalSteps" validate:"min=0"` + Goal int `json:"goal" validate:"min=0"` + ActiveMinutes int `json:"activeMinutes" validate:"min=0"` + DistanceMeters float64 `json:"distanceMeters" validate:"min=0"` + CaloriesBurned int `json:"caloriesBurned" validate:"min=0"` + StepsToGoal int `json:"stepsToGoal"` + StepGoalAchieved bool `json:"stepGoalAchieved"` +} + +// Validate ensures DailySteps fields meet requirements +func (s *DailySteps) Validate() error { + validate := validator.New() + return validate.Struct(s) +} diff --git a/internal/api/stress.go b/internal/api/stress.go new file mode 100644 index 0000000..8c9e293 --- /dev/null +++ b/internal/api/stress.go @@ -0,0 +1,24 @@ +package api + +import ( + "time" + + "github.com/go-playground/validator/v10" +) + +// DailyStress represents daily stress data from Garmin Connect +type DailyStress struct { + CalendarDate time.Time `json:"calendarDate" validate:"required"` + OverallStressLevel int `json:"overallStressLevel" validate:"min=0,max=100"` + RestStressDuration int `json:"restStressDuration" validate:"min=0"` + LowStressDuration int `json:"lowStressDuration" validate:"min=0"` + MediumStressDuration int `json:"mediumStressDuration" validate:"min=0"` + HighStressDuration int `json:"highStressDuration" validate:"min=0"` + StressQualifier string `json:"stressQualifier"` +} + +// Validate ensures DailyStress fields meet requirements +func (s *DailyStress) Validate() error { + validate := validator.New() + return validate.Struct(s) +} diff --git a/internal/api/user_test.go b/internal/api/user_test.go index 44c1fac..2cb44ca 100644 --- a/internal/api/user_test.go +++ b/internal/api/user_test.go @@ -21,31 +21,31 @@ func TestGetUserProfile(t *testing.T) { { name: "successful profile retrieval", mockResponse: map[string]interface{}{ - "displayName": "John Doe", - "fullName": "John Michael Doe", - "emailAddress": "john.doe@example.com", - "username": "johndoe", - "profileId": "123456", - "profileImageUrlLarge": "https://example.com/profile.jpg", - "location": "San Francisco, CA", + "displayName": "Mock User", + "fullName": "Mock User Full", + "emailAddress": "mock@example.com", + "username": "mockuser", + "profileId": "mock-123", + "profileImageUrlLarge": "https://example.com/mock.jpg", + "location": "Mock Location", "fitnessLevel": "INTERMEDIATE", - "height": 180.0, - "weight": 75.0, - "birthDate": "1985-01-01", + "height": 175.0, + "weight": 70.0, + "birthDate": "1990-01-01", }, mockStatus: http.StatusOK, expected: &UserProfile{ - DisplayName: "John Doe", - FullName: "John Michael Doe", - EmailAddress: "john.doe@example.com", - Username: "johndoe", - ProfileID: "123456", - ProfileImage: "https://example.com/profile.jpg", - Location: "San Francisco, CA", + DisplayName: "Mock User", + FullName: "Mock User Full", + EmailAddress: "mock@example.com", + Username: "mockuser", + ProfileID: "mock-123", + ProfileImage: "https://example.com/mock.jpg", + Location: "Mock Location", FitnessLevel: "INTERMEDIATE", - Height: 180.0, - Weight: 75.0, - Birthdate: "1985-01-01", + Height: 175.0, + Weight: 70.0, + Birthdate: "1990-01-01", }, }, { @@ -100,7 +100,7 @@ func TestGetUserProfile(t *testing.T) { func BenchmarkGetUserProfile(b *testing.B) { mockServer := NewMockServer() defer mockServer.Close() - + mockResponse := map[string]interface{}{ "displayName": "Benchmark User", "fullName": "Benchmark User Full", @@ -113,7 +113,7 @@ func BenchmarkGetUserProfile(b *testing.B) { client := NewClientWithBaseURL(mockServer.URL()) b.ResetTimer() - + for i := 0; i < b.N; i++ { _, _ = client.GetUserProfile(context.Background()) } @@ -200,19 +200,19 @@ func BenchmarkGetUserStats(b *testing.B) { now := time.Now() mockServer := NewMockServer() defer mockServer.Close() - + path := fmt.Sprintf("/stats-service/stats/daily/%s", now.Format("2006-01-02")) mockResponse := map[string]interface{}{ - "totalSteps": 15000, - "totalDistance": 12000.0, - "totalCalories": 3000, - "activeMinutes": 60, + "totalSteps": 15000, + "totalDistance": 12000.0, + "totalCalories": 3000, + "activeMinutes": 60, } mockServer.SetResponse(path, http.StatusOK, mockResponse) client := NewClientWithBaseURL(mockServer.URL()) b.ResetTimer() - + for i := 0; i < b.N; i++ { _, _ = client.GetUserStats(context.Background(), now) } diff --git a/python-garminconnect/.coderabbit.yaml b/python-garminconnect/.coderabbit.yaml deleted file mode 100644 index 2b22bda..0000000 --- a/python-garminconnect/.coderabbit.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json # Schema for CodeRabbit configurations -language: "en-US" -early_access: true -reviews: - profile: "assertive" - request_changes_workflow: false - high_level_summary: true - poem: false - review_status: true - collapse_walkthrough: false - auto_review: - enabled: true - drafts: false - path_filters: - - "!tests/**/cassettes/**" - path_instructions: - - path: "tests/**" - instructions: | - - test functions shouldn't have a return type hint - - it's ok to use `assert` instead of `pytest.assume()` -chat: - auto_reply: true diff --git a/python-garminconnect/.pre-commit-config.yaml b/python-garminconnect/.pre-commit-config.yaml deleted file mode 100644 index 4ba12aa..0000000 --- a/python-garminconnect/.pre-commit-config.yaml +++ /dev/null @@ -1,28 +0,0 @@ -exclude: '.*\.ipynb$' - -repos: -- repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 - hooks: - - id: check-yaml - args: ['--unsafe'] - - id: check-toml - - id: end-of-file-fixer - - id: trailing-whitespace - -- repo: https://github.com/codespell-project/codespell - rev: v2.2.5 - hooks: - - id: codespell - additional_dependencies: - - tomli - exclude: 'cassettes/' - -- repo: local - hooks: - - id: lint - name: lint - entry: make lint - types: [python] - language: system - pass_filenames: false diff --git a/python-garminconnect/.vscode/settings.json b/python-garminconnect/.vscode/settings.json deleted file mode 100644 index 9b38853..0000000 --- a/python-garminconnect/.vscode/settings.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "python.testing.pytestArgs": [ - "tests" - ], - "python.testing.unittestEnabled": false, - "python.testing.pytestEnabled": true -} \ No newline at end of file diff --git a/python-garminconnect/LICENSE b/python-garminconnect/LICENSE deleted file mode 100644 index e6a6977..0000000 --- a/python-garminconnect/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020-2024 Ron Klinkien - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/python-garminconnect/Makefile b/python-garminconnect/Makefile deleted file mode 100644 index 2280aa7..0000000 --- a/python-garminconnect/Makefile +++ /dev/null @@ -1,104 +0,0 @@ -.DEFAULT_GOAL := all -sources = garminconnect tests - -.PHONY: .pdm ## Check that PDM is installed -.pdm: - @pdm -V || echo 'Please install PDM: https://pdm.fming.dev/latest/\#installation' - -.PHONY: .pre-commit ## Check that pre-commit is installed -.pre-commit: - @pre-commit -V || echo 'Please install pre-commit: https://pre-commit.com/' - -.PHONY: install ## Install the package, dependencies, and pre-commit for local development -install: .pdm .pre-commit - pdm install --group :all - pre-commit install --install-hooks - -.PHONY: refresh-lockfiles ## Sync lockfiles with requirements files. -refresh-lockfiles: .pdm - pdm update --update-reuse --group :all - -.PHONY: rebuild-lockfiles ## Rebuild lockfiles from scratch, updating all dependencies -rebuild-lockfiles: .pdm - pdm update --update-eager --group :all - -.PHONY: format ## Auto-format python source files -format: .pdm - pdm run isort $(sources) - pdm run black -l 79 $(sources) - pdm run ruff check $(sources) - -.PHONY: lint ## Lint python source files -lint: .pdm - pdm run isort --check-only $(sources) - pdm run ruff check $(sources) - pdm run black -l 79 $(sources) --check --diff - pdm run mypy $(sources) - -.PHONY: codespell ## Use Codespell to do spellchecking -codespell: .pre-commit - pre-commit run codespell --all-files - -.PHONY: .venv ## Install virtual environment -.venv: - python3 -m venv .venv - -.PHONY: install ## Install package -install: .venv - pip3 install -qUe . - -.PHONY: install-test ## Install package in development mode -install-test: .venv install - pip3 install -qU -r requirements-test.txt - -.PHONY: test ## Run tests -test: - pytest --cov=garminconnect --cov-report=term-missing - -.PHONY: test ## Run all tests, skipping the type-checker integration tests -test: .pdm - pdm run coverage run -m pytest -v --durations=10 - -.PHONY: testcov ## Run tests and generate a coverage report, skipping the type-checker integration tests -testcov: test - @echo "building coverage html" - @pdm run coverage html - @echo "building coverage xml" - @pdm run coverage xml -o coverage/coverage.xml - -.PHONY: publish ## Publish to PyPi -publish: .pdm - pdm build - twine upload dist/* - -.PHONY: all ## Run the standard set of checks performed in CI -all: lint typecheck codespell testcov - -.PHONY: clean ## Clear local caches and build artifacts -clean: - find . -type d -name __pycache__ -exec rm -r {} + - find . -type f -name '*.py[co]' -exec rm -f {} + - find . -type f -name '*~' -exec rm -f {} + - find . -type f -name '.*~' -exec rm -f {} + - rm -rf .cache - rm -rf .pytest_cache - rm -rf .ruff_cache - rm -rf htmlcov - rm -rf *.egg-info - rm -f .coverage - rm -f .coverage.* - rm -rf build - rm -rf dist - rm -rf site - rm -rf docs/_build - rm -rf docs/.changelog.md docs/.version.md docs/.tmp_schema_mappings.html - rm -rf fastapi/test.db - rm -rf coverage.xml - - -.PHONY: help ## Display this message -help: - @grep -E \ - '^.PHONY: .*?## .*$$' $(MAKEFILE_LIST) | \ - sort | \ - awk 'BEGIN {FS = ".PHONY: |## "}; {printf "\033[36m%-19s\033[0m %s\n", $$2, $$3}' \ No newline at end of file diff --git a/python-garminconnect/README.md b/python-garminconnect/README.md deleted file mode 100644 index 2c2c1b4..0000000 --- a/python-garminconnect/README.md +++ /dev/null @@ -1,166 +0,0 @@ -# Python: Garmin Connect - -```bash -$ ./example.py -*** Garmin Connect API Demo by cyberjunky *** - -Trying to login to Garmin Connect using token data from directory '~/.garminconnect'... - -1 -- Get full name -2 -- Get unit system -3 -- Get activity data for '2024-11-10' -4 -- Get activity data for '2024-11-10' (compatible with garminconnect-ha) -5 -- Get body composition data for '2024-11-10' (compatible with garminconnect-ha) -6 -- Get body composition data for from '2024-11-03' to '2024-11-10' (to be compatible with garminconnect-ha) -7 -- Get stats and body composition data for '2024-11-10' -8 -- Get steps data for '2024-11-10' -9 -- Get heart rate data for '2024-11-10' -0 -- Get training readiness data for '2024-11-10' -- -- Get daily step data for '2024-11-03' to '2024-11-10' -/ -- Get body battery data for '2024-11-03' to '2024-11-10' -! -- Get floors data for '2024-11-03' -? -- Get blood pressure data for '2024-11-03' to '2024-11-10' -. -- Get training status data for '2024-11-10' -a -- Get resting heart rate data for '2024-11-10' -b -- Get hydration data for '2024-11-10' -c -- Get sleep data for '2024-11-10' -d -- Get stress data for '2024-11-10' -e -- Get respiration data for '2024-11-10' -f -- Get SpO2 data for '2024-11-10' -g -- Get max metric data (like vo2MaxValue and fitnessAge) for '2024-11-10' -h -- Get personal record for user -i -- Get earned badges for user -j -- Get adhoc challenges data from start '0' and limit '100' -k -- Get available badge challenges data from '1' and limit '100' -l -- Get badge challenges data from '1' and limit '100' -m -- Get non completed badge challenges data from '1' and limit '100' -n -- Get activities data from start '0' and limit '100' -o -- Get last activity -p -- Download activities data by date from '2024-11-03' to '2024-11-10' -r -- Get all kinds of activities data from '0' -s -- Upload activity data from file 'MY_ACTIVITY.fit' -t -- Get all kinds of Garmin device info -u -- Get active goals -v -- Get future goals -w -- Get past goals -y -- Get all Garmin device alarms -x -- Get Heart Rate Variability data (HRV) for '2024-11-10' -z -- Get progress summary from '2024-11-03' to '2024-11-10' for all metrics -A -- Get gear, the defaults, activity types and statistics -B -- Get weight-ins from '2024-11-03' to '2024-11-10' -C -- Get daily weigh-ins for '2024-11-10' -D -- Delete all weigh-ins for '2024-11-10' -E -- Add a weigh-in of 89.6kg on '2024-11-10' -F -- Get virtual challenges/expeditions from '2024-11-03' to '2024-11-10' -G -- Get hill score data from '2024-11-03' to '2024-11-10' -H -- Get endurance score data from '2024-11-03' to '2024-11-10' -I -- Get activities for date '2024-11-10' -J -- Get race predictions -K -- Get all day stress data for '2024-11-10' -L -- Add body composition for '2024-11-10' -M -- Set blood pressure "120,80,80,notes='Testing with example.py'" -N -- Get user profile/settings -O -- Reload epoch data for '2024-11-10' -P -- Get workouts 0-100, get and download last one to .FIT file -R -- Get solar data from your devices -S -- Get pregnancy summary data -T -- Add hydration data -U -- Get Fitness Age data for '2024-11-10' -V -- Get daily wellness events data for '2024-11-03' -W -- Get userprofile settings -Z -- Remove stored login tokens (logout) -q -- Exit -Make your selection: -``` - -[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/cyberjunkynl/) - -Python 3 API wrapper for Garmin Connect. - -## About - -This package allows you to request garmin device, activity and health data from your Garmin Connect account. -See - -## Installation - -```bash -pip3 install garminconnect -``` - -## Authentication - -The library uses the same authentication method as the app using [Garth](https://github.com/matin/garth). -The login credentials generated with Garth are valid for a year to avoid needing to login each time. -NOTE: We obtain the OAuth tokens using the consumer key and secret as the Connect app does. -`garth.sso.OAUTH_CONSUMER` can be set manually prior to calling api.login() if someone wants to use a custom consumer key and secret. - -## Testing - -The test files use the credential tokens created by `example.py` script, so use that first. - -```bash -export GARMINTOKENS=~/.garminconnect -sudo apt install python3-pytest (needed some distros) - -make install-test -make test -``` - -## Development - -To create a development environment to commit code. - -```bash -make .venv -source .venv/bin/activate - -pip3 install pdm -pip3 install ruff -pdm init - -sudo apt install pre-commit isort black mypy -pip3 install pre-commit -``` - -Run checks before PR/Commit: - -```bash -make format -make lint -make codespell -``` - -## Publish - -To publish new package (author only) - -```bash -sudo apt install twine -vi ~/.pypirc -[pypi] -username = __token__ -password = - -make publish -``` - -## Example - -The tests provide examples of how to use the library. -There is a Jupyter notebook called `reference.ipynb` provided [here](https://github.com/cyberjunky/python-garminconnect/blob/master/reference.ipynb). -And you can check out the `example.py` code you can find [here](https://raw.githubusercontent.com/cyberjunky/python-garminconnect/master/example.py), you can run it like so: - -```bash -pip3 install -r requirements-dev.txt -./example.py -``` - -## Credits - -:heart: Special thanks to all people contributed, either by asking questions, reporting bugs, coming up with great ideas, or even by creating whole Pull Requests to add new features! -This project deserves more attention, but I'm struggling to free up time sometimes, so thank you for your patience too! - -## Donations - -[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/cyberjunkynl/) diff --git a/python-garminconnect/example.py b/python-garminconnect/example.py deleted file mode 100755 index c143a47..0000000 --- a/python-garminconnect/example.py +++ /dev/null @@ -1,956 +0,0 @@ -#!/usr/bin/env python3 -""" -pip3 install garth requests readchar - -export EMAIL= -export PASSWORD= - -""" -import datetime -from datetime import timezone -import json -import logging -import os -import sys -from getpass import getpass - -import readchar -import requests -from garth.exc import GarthHTTPError - -from garminconnect import ( - Garmin, - GarminConnectAuthenticationError, - GarminConnectConnectionError, - GarminConnectTooManyRequestsError, -) - -# Configure debug logging -# logging.basicConfig(level=logging.DEBUG) -logging.basicConfig(level=logging.INFO) -logger = logging.getLogger(__name__) - -# Load environment variables if defined -email = os.getenv("EMAIL") -password = os.getenv("PASSWORD") -tokenstore = os.getenv("GARMINTOKENS") or "~/.garminconnect" -tokenstore_base64 = os.getenv("GARMINTOKENS_BASE64") or "~/.garminconnect_base64" -api = None - -# Example selections and settings - -# Let's say we want to scrape all activities using switch menu_option "p". We change the values of the below variables, IE startdate days, limit,... -today = datetime.date.today() -startdate = today - datetime.timedelta(days=7) # Select past week -start = 0 -limit = 100 -start_badge = 1 # Badge related calls calls start counting at 1 -activitytype = "" # Possible values are: cycling, running, swimming, multi_sport, fitness_equipment, hiking, walking, other -activityfile = "MY_ACTIVITY.fit" # Supported file types are: .fit .gpx .tcx -weight = 89.6 -weightunit = "kg" -# workout_example = """ -# { -# 'workoutId': "random_id", -# 'ownerId': "random", -# 'workoutName': 'Any workout name', -# 'description': 'FTP 200, TSS 1, NP 114, IF 0.57', -# 'sportType': {'sportTypeId': 2, 'sportTypeKey': 'cycling'}, -# 'workoutSegments': [ -# { -# 'segmentOrder': 1, -# 'sportType': {'sportTypeId': 2, 'sportTypeKey': 'cycling'}, -# 'workoutSteps': [ -# {'type': 'ExecutableStepDTO', 'stepOrder': 1, -# 'stepType': {'stepTypeId': 3, 'stepTypeKey': 'interval'}, 'childStepId': None, -# 'endCondition': {'conditionTypeId': 2, 'conditionTypeKey': 'time'}, 'endConditionValue': 60, -# 'targetType': {'workoutTargetTypeId': 2, 'workoutTargetTypeKey': 'power.zone'}, -# 'targetValueOne': 95, 'targetValueTwo': 105}, -# {'type': 'ExecutableStepDTO', 'stepOrder': 2, -# 'stepType': {'stepTypeId': 3, 'stepTypeKey': 'interval'}, 'childStepId': None, -# 'endCondition': {'conditionTypeId': 2, 'conditionTypeKey': 'time'}, 'endConditionValue': 120, -# 'targetType': {'workoutTargetTypeId': 2, 'workoutTargetTypeKey': 'power.zone'}, -# 'targetValueOne': 114, 'targetValueTwo': 126} -# ] -# } -# ] -# } -# """ - -menu_options = { - "1": "Get full name", - "2": "Get unit system", - "3": f"Get activity data for '{today.isoformat()}'", - "4": f"Get activity data for '{today.isoformat()}' (compatible with garminconnect-ha)", - "5": f"Get body composition data for '{today.isoformat()}' (compatible with garminconnect-ha)", - "6": f"Get body composition data for from '{startdate.isoformat()}' to '{today.isoformat()}' (to be compatible with garminconnect-ha)", - "7": f"Get stats and body composition data for '{today.isoformat()}'", - "8": f"Get steps data for '{today.isoformat()}'", - "9": f"Get heart rate data for '{today.isoformat()}'", - "0": f"Get training readiness data for '{today.isoformat()}'", - "-": f"Get daily step data for '{startdate.isoformat()}' to '{today.isoformat()}'", - "/": f"Get body battery data for '{startdate.isoformat()}' to '{today.isoformat()}'", - "!": f"Get floors data for '{startdate.isoformat()}'", - "?": f"Get blood pressure data for '{startdate.isoformat()}' to '{today.isoformat()}'", - ".": f"Get training status data for '{today.isoformat()}'", - "a": f"Get resting heart rate data for {today.isoformat()}'", - "b": f"Get hydration data for '{today.isoformat()}'", - "c": f"Get sleep data for '{today.isoformat()}'", - "d": f"Get stress data for '{today.isoformat()}'", - "e": f"Get respiration data for '{today.isoformat()}'", - "f": f"Get SpO2 data for '{today.isoformat()}'", - "g": f"Get max metric data (like vo2MaxValue and fitnessAge) for '{today.isoformat()}'", - "h": "Get personal record for user", - "i": "Get earned badges for user", - "j": f"Get adhoc challenges data from start '{start}' and limit '{limit}'", - "k": f"Get available badge challenges data from '{start_badge}' and limit '{limit}'", - "l": f"Get badge challenges data from '{start_badge}' and limit '{limit}'", - "m": f"Get non completed badge challenges data from '{start_badge}' and limit '{limit}'", - "n": f"Get activities data from start '{start}' and limit '{limit}'", - "o": "Get last activity", - "p": f"Download activities data by date from '{startdate.isoformat()}' to '{today.isoformat()}'", - "r": f"Get all kinds of activities data from '{start}'", - "s": f"Upload activity data from file '{activityfile}'", - "t": "Get all kinds of Garmin device info", - "u": "Get active goals", - "v": "Get future goals", - "w": "Get past goals", - "y": "Get all Garmin device alarms", - "x": f"Get Heart Rate Variability data (HRV) for '{today.isoformat()}'", - "z": f"Get progress summary from '{startdate.isoformat()}' to '{today.isoformat()}' for all metrics", - "A": "Get gear, the defaults, activity types and statistics", - "B": f"Get weight-ins from '{startdate.isoformat()}' to '{today.isoformat()}'", - "C": f"Get daily weigh-ins for '{today.isoformat()}'", - "D": f"Delete all weigh-ins for '{today.isoformat()}'", - "E": f"Add a weigh-in of {weight}{weightunit} on '{today.isoformat()}'", - "F": f"Get virtual challenges/expeditions from '{startdate.isoformat()}' to '{today.isoformat()}'", - "G": f"Get hill score data from '{startdate.isoformat()}' to '{today.isoformat()}'", - "H": f"Get endurance score data from '{startdate.isoformat()}' to '{today.isoformat()}'", - "I": f"Get activities for date '{today.isoformat()}'", - "J": "Get race predictions", - "K": f"Get all day stress data for '{today.isoformat()}'", - "L": f"Add body composition for '{today.isoformat()}'", - "M": "Set blood pressure '120,80,80,notes='Testing with example.py'", - "N": "Get user profile/settings", - "O": f"Reload epoch data for {today.isoformat()}", - "P": "Get workouts 0-100, get and download last one to .FIT file", - # "Q": "Upload workout from json data", - "R": "Get solar data from your devices", - "S": "Get pregnancy summary data", - "T": "Add hydration data", - "U": f"Get Fitness Age data for {today.isoformat()}", - "V": f"Get daily wellness events data for {startdate.isoformat()}", - "W": "Get userprofile settings", - "Z": "Remove stored login tokens (logout)", - "q": "Exit", -} - - -def display_json(api_call, output): - """Format API output for better readability.""" - - dashed = "-" * 20 - header = f"{dashed} {api_call} {dashed}" - footer = "-" * len(header) - - # print(header) - - # if isinstance(output, (int, str, dict, list)): - # print(json.dumps(output, indent=4)) - # else: - # print(output) - - # print(footer) - # Format the output - if isinstance(output, (int, str, dict, list)): - formatted_output = json.dumps(output, indent=4) - else: - formatted_output = str(output) - - # Combine the header, output, and footer - full_output = f"{header}\n{formatted_output}\n{footer}" - - # Print to console - print(full_output) - - # Save to a file - output_filename = "response.json" - with open(output_filename, "w") as file: - file.write(full_output) - - print(f"Output saved to {output_filename}") - -def display_text(output): - """Format API output for better readability.""" - - dashed = "-" * 60 - header = f"{dashed}" - footer = "-" * len(header) - - print(header) - print(json.dumps(output, indent=4)) - print(footer) - - -def get_credentials(): - """Get user credentials.""" - - email = input("Login e-mail: ") - password = getpass("Enter password: ") - - return email, password - - -def init_api(email, password): - """Initialize Garmin API with your credentials.""" - - try: - # Using Oauth1 and OAuth2 token files from directory - print( - f"Trying to login to Garmin Connect using token data from directory '{tokenstore}'...\n" - ) - - # Using Oauth1 and Oauth2 tokens from base64 encoded string - # print( - # f"Trying to login to Garmin Connect using token data from file '{tokenstore_base64}'...\n" - # ) - # dir_path = os.path.expanduser(tokenstore_base64) - # with open(dir_path, "r") as token_file: - # tokenstore = token_file.read() - - garmin = Garmin() - garmin.login(tokenstore) - - except (FileNotFoundError, GarthHTTPError, GarminConnectAuthenticationError): - # Session is expired. You'll need to log in again - print( - "Login tokens not present, login with your Garmin Connect credentials to generate them.\n" - f"They will be stored in '{tokenstore}' for future use.\n" - ) - try: - # Ask for credentials if not set as environment variables - if not email or not password: - email, password = get_credentials() - - garmin = Garmin( - email=email, password=password, is_cn=False, return_on_mfa=True - ) - result1, result2 = garmin.login() - if result1 == "needs_mfa": # MFA is required - mfa_code = get_mfa() - garmin.resume_login(result2, mfa_code) - - # Save Oauth1 and Oauth2 token files to directory for next login - garmin.garth.dump(tokenstore) - print( - f"Oauth tokens stored in '{tokenstore}' directory for future use. (first method)\n" - ) - - # Encode Oauth1 and Oauth2 tokens to base64 string and safe to file for next login (alternative way) - token_base64 = garmin.garth.dumps() - dir_path = os.path.expanduser(tokenstore_base64) - with open(dir_path, "w") as token_file: - token_file.write(token_base64) - print( - f"Oauth tokens encoded as base64 string and saved to '{dir_path}' file for future use. (second method)\n" - ) - - # Re-login Garmin API with tokens - garmin.login(tokenstore) - except ( - FileNotFoundError, - GarthHTTPError, - GarminConnectAuthenticationError, - requests.exceptions.HTTPError, - ) as err: - logger.error(err) - return None - - return garmin - - -def get_mfa(): - """Get MFA.""" - - return input("MFA one-time code: ") - - -def print_menu(): - """Print examples menu.""" - for key in menu_options.keys(): - print(f"{key} -- {menu_options[key]}") - print("Make your selection: ", end="", flush=True) - - -def switch(api, i): - """Run selected API call.""" - - # Exit example program - if i == "q": - print("Be active, generate some data to fetch next time ;-) Bye!") - sys.exit() - - # Skip requests if login failed - if api: - try: - print(f"\n\nExecuting: {menu_options[i]}\n") - - # USER BASICS - if i == "1": - # Get full name from profile - display_json("api.get_full_name()", api.get_full_name()) - elif i == "2": - # Get unit system from profile - display_json("api.get_unit_system()", api.get_unit_system()) - - # USER STATISTIC SUMMARIES - elif i == "3": - # Get activity data for 'YYYY-MM-DD' - display_json( - f"api.get_stats('{today.isoformat()}')", - api.get_stats(today.isoformat()), - ) - elif i == "4": - # Get activity data (to be compatible with garminconnect-ha) - display_json( - f"api.get_user_summary('{today.isoformat()}')", - api.get_user_summary(today.isoformat()), - ) - elif i == "5": - # Get body composition data for 'YYYY-MM-DD' (to be compatible with garminconnect-ha) - display_json( - f"api.get_body_composition('{today.isoformat()}')", - api.get_body_composition(today.isoformat()), - ) - elif i == "6": - # Get body composition data for multiple days 'YYYY-MM-DD' (to be compatible with garminconnect-ha) - display_json( - f"api.get_body_composition('{startdate.isoformat()}', '{today.isoformat()}')", - api.get_body_composition(startdate.isoformat(), today.isoformat()), - ) - elif i == "7": - # Get stats and body composition data for 'YYYY-MM-DD' - display_json( - f"api.get_stats_and_body('{today.isoformat()}')", - api.get_stats_and_body(today.isoformat()), - ) - - # USER STATISTICS LOGGED - elif i == "8": - # Get steps data for 'YYYY-MM-DD' - display_json( - f"api.get_steps_data('{today.isoformat()}')", - api.get_steps_data(today.isoformat()), - ) - elif i == "9": - # Get heart rate data for 'YYYY-MM-DD' - display_json( - f"api.get_heart_rates('{today.isoformat()}')", - api.get_heart_rates(today.isoformat()), - ) - elif i == "0": - # Get training readiness data for 'YYYY-MM-DD' - display_json( - f"api.get_training_readiness('{today.isoformat()}')", - api.get_training_readiness(today.isoformat()), - ) - elif i == "/": - # Get daily body battery data for 'YYYY-MM-DD' to 'YYYY-MM-DD' - display_json( - f"api.get_body_battery('{startdate.isoformat()}, {today.isoformat()}')", - api.get_body_battery(startdate.isoformat(), today.isoformat()), - ) - # Get daily body battery event data for 'YYYY-MM-DD' - display_json( - f"api.get_body_battery_events('{startdate.isoformat()}, {today.isoformat()}')", - api.get_body_battery_events(startdate.isoformat()), - ) - elif i == "?": - # Get daily blood pressure data for 'YYYY-MM-DD' to 'YYYY-MM-DD' - display_json( - f"api.get_blood_pressure('{startdate.isoformat()}, {today.isoformat()}')", - api.get_blood_pressure(startdate.isoformat(), today.isoformat()), - ) - elif i == "-": - # Get daily step data for 'YYYY-MM-DD' - display_json( - f"api.get_daily_steps('{startdate.isoformat()}, {today.isoformat()}')", - api.get_daily_steps(startdate.isoformat(), today.isoformat()), - ) - elif i == "!": - # Get daily floors data for 'YYYY-MM-DD' - display_json( - f"api.get_floors('{today.isoformat()}')", - api.get_floors(today.isoformat()), - ) - elif i == ".": - # Get training status data for 'YYYY-MM-DD' - display_json( - f"api.get_training_status('{today.isoformat()}')", - api.get_training_status(today.isoformat()), - ) - elif i == "a": - # Get resting heart rate data for 'YYYY-MM-DD' - display_json( - f"api.get_rhr_day('{today.isoformat()}')", - api.get_rhr_day(today.isoformat()), - ) - elif i == "b": - # Get hydration data 'YYYY-MM-DD' - display_json( - f"api.get_hydration_data('{today.isoformat()}')", - api.get_hydration_data(today.isoformat()), - ) - elif i == "c": - # Get sleep data for 'YYYY-MM-DD' - display_json( - f"api.get_sleep_data('{today.isoformat()}')", - api.get_sleep_data(today.isoformat()), - ) - elif i == "d": - # Get stress data for 'YYYY-MM-DD' - display_json( - f"api.get_stress_data('{today.isoformat()}')", - api.get_stress_data(today.isoformat()), - ) - elif i == "e": - # Get respiration data for 'YYYY-MM-DD' - display_json( - f"api.get_respiration_data('{today.isoformat()}')", - api.get_respiration_data(today.isoformat()), - ) - elif i == "f": - # Get SpO2 data for 'YYYY-MM-DD' - display_json( - f"api.get_spo2_data('{today.isoformat()}')", - api.get_spo2_data(today.isoformat()), - ) - elif i == "g": - # Get max metric data (like vo2MaxValue and fitnessAge) for 'YYYY-MM-DD' - display_json( - f"api.get_max_metrics('{today.isoformat()}')", - api.get_max_metrics(today.isoformat()), - ) - elif i == "h": - # Get personal record for user - display_json("api.get_personal_record()", api.get_personal_record()) - elif i == "i": - # Get earned badges for user - display_json("api.get_earned_badges()", api.get_earned_badges()) - elif i == "j": - # Get adhoc challenges data from start and limit - display_json( - f"api.get_adhoc_challenges({start},{limit})", - api.get_adhoc_challenges(start, limit), - ) # 1=start, 100=limit - elif i == "k": - # Get available badge challenges data from start and limit - display_json( - f"api.get_available_badge_challenges({start_badge}, {limit})", - api.get_available_badge_challenges(start_badge, limit), - ) # 1=start, 100=limit - elif i == "l": - # Get badge challenges data from start and limit - display_json( - f"api.get_badge_challenges({start_badge}, {limit})", - api.get_badge_challenges(start_badge, limit), - ) # 1=start, 100=limit - elif i == "m": - # Get non completed badge challenges data from start and limit - display_json( - f"api.get_non_completed_badge_challenges({start_badge}, {limit})", - api.get_non_completed_badge_challenges(start_badge, limit), - ) # 1=start, 100=limit - - # ACTIVITIES - elif i == "n": - # Get activities data from start and limit - display_json( - f"api.get_activities({start}, {limit})", - api.get_activities(start, limit), - ) # 0=start, 1=limit - elif i == "o": - # Get last activity - display_json("api.get_last_activity()", api.get_last_activity()) - elif i == "p": - # Get activities data from startdate 'YYYY-MM-DD' to enddate 'YYYY-MM-DD', with (optional) activitytype - # Possible values are: cycling, running, swimming, multi_sport, fitness_equipment, hiking, walking, other - activities = api.get_activities_by_date( - startdate.isoformat(), today.isoformat(), activitytype - ) - - # Download activities - for activity in activities: - activity_start_time = datetime.datetime.strptime( - activity["startTimeLocal"], "%Y-%m-%d %H:%M:%S" - ).strftime( - "%d-%m-%Y" - ) # Format as DD-MM-YYYY, for creating unique activity names for scraping - activity_id = activity["activityId"] - activity_name = activity["activityName"] - display_text(activity) - - print( - f"api.download_activity({activity_id}, dl_fmt=api.ActivityDownloadFormat.GPX)" - ) - gpx_data = api.download_activity( - activity_id, dl_fmt=api.ActivityDownloadFormat.GPX - ) - output_file = f"./{str(activity_name)}_{str(activity_start_time)}_{str(activity_id)}.gpx" - with open(output_file, "wb") as fb: - fb.write(gpx_data) - print(f"Activity data downloaded to file {output_file}") - - print( - f"api.download_activity({activity_id}, dl_fmt=api.ActivityDownloadFormat.TCX)" - ) - tcx_data = api.download_activity( - activity_id, dl_fmt=api.ActivityDownloadFormat.TCX - ) - output_file = f"./{str(activity_name)}_{str(activity_start_time)}_{str(activity_id)}.tcx" - with open(output_file, "wb") as fb: - fb.write(tcx_data) - print(f"Activity data downloaded to file {output_file}") - - print( - f"api.download_activity({activity_id}, dl_fmt=api.ActivityDownloadFormat.ORIGINAL)" - ) - zip_data = api.download_activity( - activity_id, dl_fmt=api.ActivityDownloadFormat.ORIGINAL - ) - output_file = f"./{str(activity_name)}_{str(activity_start_time)}_{str(activity_id)}.zip" - with open(output_file, "wb") as fb: - fb.write(zip_data) - print(f"Activity data downloaded to file {output_file}") - - print( - f"api.download_activity({activity_id}, dl_fmt=api.ActivityDownloadFormat.CSV)" - ) - csv_data = api.download_activity( - activity_id, dl_fmt=api.ActivityDownloadFormat.CSV - ) - output_file = f"./{str(activity_name)}_{str(activity_start_time)}_{str(activity_id)}.csv" - with open(output_file, "wb") as fb: - fb.write(csv_data) - print(f"Activity data downloaded to file {output_file}") - - elif i == "r": - # Get activities data from start and limit - activities = api.get_activities(start, limit) # 0=start, 1=limit - - # Get activity splits - first_activity_id = activities[0].get("activityId") - - display_json( - f"api.get_activity_splits({first_activity_id})", - api.get_activity_splits(first_activity_id), - ) - - # Get activity typed splits - - display_json( - f"api.get_activity_typed_splits({first_activity_id})", - api.get_activity_typed_splits(first_activity_id), - ) - # Get activity split summaries for activity id - display_json( - f"api.get_activity_split_summaries({first_activity_id})", - api.get_activity_split_summaries(first_activity_id), - ) - - # Get activity weather data for activity - display_json( - f"api.get_activity_weather({first_activity_id})", - api.get_activity_weather(first_activity_id), - ) - - # Get activity hr timezones id - display_json( - f"api.get_activity_hr_in_timezones({first_activity_id})", - api.get_activity_hr_in_timezones(first_activity_id), - ) - - # Get activity details for activity id - display_json( - f"api.get_activity_details({first_activity_id})", - api.get_activity_details(first_activity_id), - ) - - # Get gear data for activity id - display_json( - f"api.get_activity_gear({first_activity_id})", - api.get_activity_gear(first_activity_id), - ) - - # Activity data for activity id - display_json( - f"api.get_activity({first_activity_id})", - api.get_activity(first_activity_id), - ) - - # Get exercise sets in case the activity is a strength_training - if activities[0]["activityType"]["typeKey"] == "strength_training": - display_json( - f"api.get_activity_exercise_sets({first_activity_id})", - api.get_activity_exercise_sets(first_activity_id), - ) - - elif i == "s": - try: - # Upload activity from file - display_json( - f"api.upload_activity({activityfile})", - api.upload_activity(activityfile), - ) - except FileNotFoundError: - print(f"File to upload not found: {activityfile}") - - # DEVICES - elif i == "t": - # Get Garmin devices - devices = api.get_devices() - display_json("api.get_devices()", devices) - - # Get device last used - device_last_used = api.get_device_last_used() - display_json("api.get_device_last_used()", device_last_used) - - # Get settings per device - for device in devices: - device_id = device["deviceId"] - display_json( - f"api.get_device_settings({device_id})", - api.get_device_settings(device_id), - ) - - # Get primary training device information - primary_training_device = api.get_primary_training_device() - display_json( - "api.get_primary_training_device()", primary_training_device - ) - - elif i == "R": - # Get solar data from Garmin devices - devices = api.get_devices() - display_json("api.get_devices()", devices) - - # Get device last used - device_last_used = api.get_device_last_used() - display_json("api.get_device_last_used()", device_last_used) - - # Get settings per device - for device in devices: - device_id = device["deviceId"] - display_json( - f"api.get_device_solar_data({device_id}, {today.isoformat()})", - api.get_device_solar_data(device_id, today.isoformat()), - ) - # GOALS - elif i == "u": - # Get active goals - goals = api.get_goals("active") - display_json('api.get_goals("active")', goals) - - elif i == "v": - # Get future goals - goals = api.get_goals("future") - display_json('api.get_goals("future")', goals) - - elif i == "w": - # Get past goals - goals = api.get_goals("past") - display_json('api.get_goals("past")', goals) - - # ALARMS - elif i == "y": - # Get Garmin device alarms - alarms = api.get_device_alarms() - for alarm in alarms: - alarm_id = alarm["alarmId"] - display_json(f"api.get_device_alarms({alarm_id})", alarm) - - elif i == "x": - # Get Heart Rate Variability (hrv) data - display_json( - f"api.get_hrv_data({today.isoformat()})", - api.get_hrv_data(today.isoformat()), - ) - - elif i == "z": - # Get progress summary - for metric in [ - "elevationGain", - "duration", - "distance", - "movingDuration", - ]: - display_json( - f"api.get_progress_summary_between_dates({today.isoformat()})", - api.get_progress_summary_between_dates( - startdate.isoformat(), today.isoformat(), metric - ), - ) - # GEAR - elif i == "A": - last_used_device = api.get_device_last_used() - display_json("api.get_device_last_used()", last_used_device) - userProfileNumber = last_used_device["userProfileNumber"] - gear = api.get_gear(userProfileNumber) - display_json("api.get_gear()", gear) - display_json( - "api.get_gear_defaults()", api.get_gear_defaults(userProfileNumber) - ) - display_json("api.get()", api.get_activity_types()) - for gear in gear: - uuid = gear["uuid"] - name = gear["displayName"] - display_json( - f"api.get_gear_stats({uuid}) / {name}", api.get_gear_stats(uuid) - ) - - # WEIGHT-INS - elif i == "B": - # Get weigh-ins data - display_json( - f"api.get_weigh_ins({startdate.isoformat()}, {today.isoformat()})", - api.get_weigh_ins(startdate.isoformat(), today.isoformat()), - ) - elif i == "C": - # Get daily weigh-ins data - display_json( - f"api.get_daily_weigh_ins({today.isoformat()})", - api.get_daily_weigh_ins(today.isoformat()), - ) - elif i == "D": - # Delete weigh-ins data for today - display_json( - f"api.delete_weigh_ins({today.isoformat()}, delete_all=True)", - api.delete_weigh_ins(today.isoformat(), delete_all=True), - ) - elif i == "E": - # Add a weigh-in - display_json( - f"api.add_weigh_in(weight={weight}, unitKey={weightunit})", - api.add_weigh_in(weight=weight, unitKey=weightunit), - ) - - # Add a weigh-in with timestamps - yesterday = today - datetime.timedelta(days=1) # Get yesterday's date - weigh_in_date = datetime.datetime.strptime(yesterday.isoformat(), "%Y-%m-%d") - local_timestamp = weigh_in_date.strftime('%Y-%m-%dT%H:%M:%S') - gmt_timestamp = weigh_in_date.astimezone(timezone.utc).strftime('%Y-%m-%dT%H:%M:%S') - - display_json( - f"api.add_weigh_in_with_timestamps(weight={weight}, unitKey={weightunit}, dateTimestamp={local_timestamp}, gmtTimestamp={gmt_timestamp})", - api.add_weigh_in_with_timestamps( - weight=weight, - unitKey=weightunit, - dateTimestamp=local_timestamp, - gmtTimestamp=gmt_timestamp - ) - ) - - # CHALLENGES/EXPEDITIONS - elif i == "F": - # Get virtual challenges/expeditions - display_json( - f"api.get_inprogress_virtual_challenges({startdate.isoformat()}, {today.isoformat()})", - api.get_inprogress_virtual_challenges( - startdate.isoformat(), today.isoformat() - ), - ) - elif i == "G": - # Get hill score data - display_json( - f"api.get_hill_score({startdate.isoformat()}, {today.isoformat()})", - api.get_hill_score(startdate.isoformat(), today.isoformat()), - ) - elif i == "H": - # Get endurance score data - display_json( - f"api.get_endurance_score({startdate.isoformat()}, {today.isoformat()})", - api.get_endurance_score(startdate.isoformat(), today.isoformat()), - ) - elif i == "I": - # Get activities for date - display_json( - f"api.get_activities_fordate({today.isoformat()})", - api.get_activities_fordate(today.isoformat()), - ) - elif i == "J": - # Get race predictions - display_json("api.get_race_predictions()", api.get_race_predictions()) - elif i == "K": - # Get all day stress data for date - display_json( - f"api.get_all_day_stress({today.isoformat()})", - api.get_all_day_stress(today.isoformat()), - ) - elif i == "L": - # Add body composition - weight = 70.0 - percent_fat = 15.4 - percent_hydration = 54.8 - visceral_fat_mass = 10.8 - bone_mass = 2.9 - muscle_mass = 55.2 - basal_met = 1454.1 - active_met = None - physique_rating = None - metabolic_age = 33.0 - visceral_fat_rating = None - bmi = 22.2 - display_json( - f"api.add_body_composition({today.isoformat()}, {weight}, {percent_fat}, {percent_hydration}, {visceral_fat_mass}, {bone_mass}, {muscle_mass}, {basal_met}, {active_met}, {physique_rating}, {metabolic_age}, {visceral_fat_rating}, {bmi})", - api.add_body_composition( - today.isoformat(), - weight=weight, - percent_fat=percent_fat, - percent_hydration=percent_hydration, - visceral_fat_mass=visceral_fat_mass, - bone_mass=bone_mass, - muscle_mass=muscle_mass, - basal_met=basal_met, - active_met=active_met, - physique_rating=physique_rating, - metabolic_age=metabolic_age, - visceral_fat_rating=visceral_fat_rating, - bmi=bmi, - ), - ) - elif i == "M": - # Set blood pressure values - display_json( - "api.set_blood_pressure(120, 80, 80, notes=`Testing with example.py`)", - api.set_blood_pressure( - 120, 80, 80, notes="Testing with example.py" - ), - ) - elif i == "N": - # Get user profile - display_json("api.get_user_profile()", api.get_user_profile()) - elif i == "O": - # Reload epoch data for date - display_json( - f"api.request_reload({today.isoformat()})", - api.request_reload(today.isoformat()), - ) - - # WORKOUTS - elif i == "P": - workouts = api.get_workouts() - # Get workout 0-100 - display_json("api.get_workouts()", api.get_workouts()) - - # Get last fetched workout - workout_id = workouts[-1]["workoutId"] - workout_name = workouts[-1]["workoutName"] - display_json( - f"api.get_workout_by_id({workout_id})", - api.get_workout_by_id(workout_id), - ) - - # Download last fetched workout - print(f"api.download_workout({workout_id})") - workout_data = api.download_workout(workout_id) - - output_file = f"./{str(workout_name)}.fit" - with open(output_file, "wb") as fb: - fb.write(workout_data) - print(f"Workout data downloaded to file {output_file}") - - # elif i == "Q": - # display_json( - # f"api.upload_workout({workout_example})", - # api.upload_workout(workout_example)) - - # DAILY EVENTS - elif i == "V": - # Get all day wellness events for 7 days ago - display_json( - f"api.get_all_day_events({today.isoformat()})", - api.get_all_day_events(startdate.isoformat()), - ) - # WOMEN'S HEALTH - elif i == "S": - # Get pregnancy summary data - display_json("api.get_pregnancy_summary()", api.get_pregnancy_summary()) - - # Additional related calls: - # get_menstrual_data_for_date(self, fordate: str): takes a single date and returns the Garmin Menstrual Summary data for that date - # get_menstrual_calendar_data(self, startdate: str, enddate: str) takes two dates and returns summaries of cycles that have days between the two days - - elif i == "T": - # Add hydration data for today - value_in_ml = 240 - raw_date = datetime.date.today() - cdate = str(raw_date) - raw_ts = datetime.datetime.now() - timestamp = datetime.datetime.strftime(raw_ts, "%Y-%m-%dT%H:%M:%S.%f") - - display_json( - f"api.add_hydration_data(value_in_ml={value_in_ml},cdate='{cdate}',timestamp='{timestamp}')", - api.add_hydration_data( - value_in_ml=value_in_ml, cdate=cdate, timestamp=timestamp - ), - ) - - elif i == "U": - # Get fitness age data - display_json( - f"api.get_fitnessage_data({today.isoformat()})", - api.get_fitnessage_data(today.isoformat()), - ) - - elif i == "W": - # Get userprofile settings - display_json( - "api.get_userprofile_settings()", api.get_userprofile_settings() - ) - - elif i == "Z": - # Remove stored login tokens for Garmin Connect portal - tokendir = os.path.expanduser(tokenstore) - print(f"Removing stored login tokens from: {tokendir}") - try: - for root, dirs, files in os.walk(tokendir, topdown=False): - for name in files: - os.remove(os.path.join(root, name)) - for name in dirs: - os.rmdir(os.path.join(root, name)) - print(f"Directory {tokendir} removed") - except FileNotFoundError: - print(f"Directory not found: {tokendir}") - api = None - - except ( - GarminConnectConnectionError, - GarminConnectAuthenticationError, - GarminConnectTooManyRequestsError, - requests.exceptions.HTTPError, - GarthHTTPError, - ) as err: - logger.error(err) - except KeyError: - # Invalid menu option chosen - pass - else: - print("Could not login to Garmin Connect, try again later.") - - -# Main program loop -while True: - # Display header and login - print("\n*** Garmin Connect API Demo by cyberjunky ***\n") - - # Init API - if not api: - api = init_api(email, password) - - if api: - # Display menu - print_menu() - option = readchar.readkey() - switch(api, option) - else: - api = init_api(email, password) diff --git a/python-garminconnect/example_tracking_gear.py b/python-garminconnect/example_tracking_gear.py deleted file mode 100755 index 1fbe16f..0000000 --- a/python-garminconnect/example_tracking_gear.py +++ /dev/null @@ -1,219 +0,0 @@ -#!/usr/bin/env python3 -""" -pip3 install garth requests readchar - -export EMAIL= -export PASSWORD= - -""" -import datetime -import json -import logging -import os -from getpass import getpass - -import requests -from garth.exc import GarthHTTPError - -from garminconnect import ( - Garmin, - GarminConnectAuthenticationError, - GarminConnectConnectionError, - GarminConnectTooManyRequestsError, -) - -# Configure debug logging -# logging.basicConfig(level=logging.DEBUG) -logging.basicConfig(level=logging.INFO) -logger = logging.getLogger(__name__) - -# Load environment variables if defined -email = os.getenv("EMAIL") -password = os.getenv("PASSWORD") -tokenstore = os.getenv("GARMINTOKENS") or "~/.garminconnect" -tokenstore_base64 = os.getenv("GARMINTOKENS_BASE64") or "~/.garminconnect_base64" -api = None - -# Example selections and settings -today = datetime.date.today() -startdate = today - datetime.timedelta(days=7) # Select past week -start = 0 -limit = 100 -start_badge = 1 # Badge related calls calls start counting at 1 -activitytype = "" # Possible values are: cycling, running, swimming, multi_sport, fitness_equipment, hiking, walking, other -activityfile = "MY_ACTIVITY.fit" # Supported file types are: .fit .gpx .tcx -weight = 89.6 -weightunit = "kg" -gearUUID = "MY_GEAR_UUID" - - -def display_json(api_call, output): - """Format API output for better readability.""" - - dashed = "-" * 20 - header = f"{dashed} {api_call} {dashed}" - footer = "-" * len(header) - - print(header) - - if isinstance(output, (int, str, dict, list)): - print(json.dumps(output, indent=4)) - else: - print(output) - - print(footer) - - -def display_text(output): - """Format API output for better readability.""" - - dashed = "-" * 60 - header = f"{dashed}" - footer = "-" * len(header) - - print(header) - print(json.dumps(output, indent=4)) - print(footer) - - -def get_credentials(): - """Get user credentials.""" - - email = input("Login e-mail: ") - password = getpass("Enter password: ") - - return email, password - - -def init_api(email, password): - """Initialize Garmin API with your credentials.""" - - try: - # Using Oauth1 and OAuth2 token files from directory - print( - f"Trying to login to Garmin Connect using token data from directory '{tokenstore}'...\n" - ) - - # Using Oauth1 and Oauth2 tokens from base64 encoded string - # print( - # f"Trying to login to Garmin Connect using token data from file '{tokenstore_base64}'...\n" - # ) - # dir_path = os.path.expanduser(tokenstore_base64) - # with open(dir_path, "r") as token_file: - # tokenstore = token_file.read() - - garmin = Garmin() - garmin.login(tokenstore) - - except (FileNotFoundError, GarthHTTPError, GarminConnectAuthenticationError): - # Session is expired. You'll need to log in again - print( - "Login tokens not present, login with your Garmin Connect credentials to generate them.\n" - f"They will be stored in '{tokenstore}' for future use.\n" - ) - try: - # Ask for credentials if not set as environment variables - if not email or not password: - email, password = get_credentials() - - garmin = Garmin( - email=email, password=password, is_cn=False, prompt_mfa=get_mfa - ) - garmin.login() - # Save Oauth1 and Oauth2 token files to directory for next login - garmin.garth.dump(tokenstore) - print( - f"Oauth tokens stored in '{tokenstore}' directory for future use. (first method)\n" - ) - # Encode Oauth1 and Oauth2 tokens to base64 string and safe to file for next login (alternative way) - token_base64 = garmin.garth.dumps() - dir_path = os.path.expanduser(tokenstore_base64) - with open(dir_path, "w") as token_file: - token_file.write(token_base64) - print( - f"Oauth tokens encoded as base64 string and saved to '{dir_path}' file for future use. (second method)\n" - ) - except ( - FileNotFoundError, - GarthHTTPError, - GarminConnectAuthenticationError, - requests.exceptions.HTTPError, - ) as err: - logger.error(err) - return None - - return garmin - - -def get_mfa(): - """Get MFA.""" - - return input("MFA one-time code: ") - - -def format_timedelta(td): - minutes, seconds = divmod(td.seconds + td.days * 86400, 60) - hours, minutes = divmod(minutes, 60) - return "{:d}:{:02d}:{:02d}".format(hours, minutes, seconds) - - -def gear(api): - """Calculate total time of use of a piece of gear by going through all activities where said gear has been used.""" - - # Skip requests if login failed - if api: - try: - display_json( - f"api.get_gear_stats({gearUUID})", - api.get_gear_stats(gearUUID), - ) - activityList = api.get_gear_ativities(gearUUID) - if len(activityList) == 0: - print("No activities found for the given gear uuid.") - else: - print("Found " + str(len(activityList)) + " activities.") - - D = 0 - for a in activityList: - print( - "Activity: " - + a["startTimeLocal"] - + (" | " + a["activityName"] if a["activityName"] else "") - ) - print( - " Duration: " - + format_timedelta(datetime.timedelta(seconds=a["duration"])) - ) - D += a["duration"] - print("") - print("Total Duration: " + format_timedelta(datetime.timedelta(seconds=D))) - print("") - print("Done!") - except ( - GarminConnectConnectionError, - GarminConnectAuthenticationError, - GarminConnectTooManyRequestsError, - requests.exceptions.HTTPError, - GarthHTTPError, - ) as err: - logger.error(err) - except KeyError: - # Invalid menu option chosen - pass - else: - print("Could not login to Garmin Connect, try again later.") - - -# Main program loop - -# Display header and login -print("\n*** Garmin Connect API Demo by cyberjunky ***\n") - -# Init API -if not api: - api = init_api(email, password) - -if api: - gear(api) -else: - api = init_api(email, password) diff --git a/python-garminconnect/garminconnect/__init__.py b/python-garminconnect/garminconnect/__init__.py deleted file mode 100644 index afa9ace..0000000 --- a/python-garminconnect/garminconnect/__init__.py +++ /dev/null @@ -1,1540 +0,0 @@ -"""Python 3 API wrapper for Garmin Connect.""" - -import logging -import os -from datetime import date, datetime, timezone -from enum import Enum, auto -from typing import Any, Dict, List, Optional - -import garth - -from .fit import FitEncoderWeight - -logger = logging.getLogger(__name__) - - -class Garmin: - """Class for fetching data from Garmin Connect.""" - - def __init__( - self, - email=None, - password=None, - is_cn=False, - prompt_mfa=None, - return_on_mfa=False, - ): - """Create a new class instance.""" - self.username = email - self.password = password - self.is_cn = is_cn - self.prompt_mfa = prompt_mfa - self.return_on_mfa = return_on_mfa - - self.garmin_connect_user_settings_url = ( - "/userprofile-service/userprofile/user-settings" - ) - self.garmin_connect_userprofile_settings_url = ( - "/userprofile-service/userprofile/settings" - ) - self.garmin_connect_devices_url = ( - "/device-service/deviceregistration/devices" - ) - self.garmin_connect_device_url = "/device-service/deviceservice" - - self.garmin_connect_primary_device_url = ( - "/web-gateway/device-info/primary-training-device" - ) - - self.garmin_connect_solar_url = "/web-gateway/solar" - self.garmin_connect_weight_url = "/weight-service" - self.garmin_connect_daily_summary_url = ( - "/usersummary-service/usersummary/daily" - ) - self.garmin_connect_metrics_url = ( - "/metrics-service/metrics/maxmet/daily" - ) - self.garmin_connect_daily_hydration_url = ( - "/usersummary-service/usersummary/hydration/daily" - ) - self.garmin_connect_set_hydration_url = ( - "usersummary-service/usersummary/hydration/log" - ) - self.garmin_connect_daily_stats_steps_url = ( - "/usersummary-service/stats/steps/daily" - ) - self.garmin_connect_personal_record_url = ( - "/personalrecord-service/personalrecord/prs" - ) - self.garmin_connect_earned_badges_url = "/badge-service/badge/earned" - self.garmin_connect_adhoc_challenges_url = ( - "/adhocchallenge-service/adHocChallenge/historical" - ) - self.garmin_connect_adhoc_challenges_url = ( - "/adhocchallenge-service/adHocChallenge/historical" - ) - self.garmin_connect_adhoc_challenge_url = ( - "/adhocchallenge-service/adHocChallenge/" - ) - self.garmin_connect_badge_challenges_url = ( - "/badgechallenge-service/badgeChallenge/completed" - ) - self.garmin_connect_available_badge_challenges_url = ( - "/badgechallenge-service/badgeChallenge/available" - ) - self.garmin_connect_non_completed_badge_challenges_url = ( - "/badgechallenge-service/badgeChallenge/non-completed" - ) - self.garmin_connect_inprogress_virtual_challenges_url = ( - "/badgechallenge-service/virtualChallenge/inProgress" - ) - self.garmin_connect_daily_sleep_url = ( - "/wellness-service/wellness/dailySleepData" - ) - self.garmin_connect_daily_stress_url = ( - "/wellness-service/wellness/dailyStress" - ) - self.garmin_connect_hill_score_url = ( - "/metrics-service/metrics/hillscore" - ) - - self.garmin_connect_daily_body_battery_url = ( - "/wellness-service/wellness/bodyBattery/reports/daily" - ) - - self.garmin_connect_body_battery_events_url = ( - "/wellness-service/wellness/bodyBattery/events" - ) - - self.garmin_connect_blood_pressure_endpoint = ( - "/bloodpressure-service/bloodpressure/range" - ) - - self.garmin_connect_set_blood_pressure_endpoint = ( - "/bloodpressure-service/bloodpressure" - ) - - self.garmin_connect_endurance_score_url = ( - "/metrics-service/metrics/endurancescore" - ) - self.garmin_connect_menstrual_calendar_url = ( - "/periodichealth-service/menstrualcycle/calendar" - ) - - self.garmin_connect_menstrual_dayview_url = ( - "/periodichealth-service/menstrualcycle/dayview" - ) - self.garmin_connect_pregnancy_snapshot_url = ( - "periodichealth-service/menstrualcycle/pregnancysnapshot" - ) - self.garmin_connect_goals_url = "/goal-service/goal/goals" - - self.garmin_connect_rhr_url = "/userstats-service/wellness/daily" - - self.garmin_connect_hrv_url = "/hrv-service/hrv" - - self.garmin_connect_training_readiness_url = ( - "/metrics-service/metrics/trainingreadiness" - ) - - self.garmin_connect_race_predictor_url = ( - "/metrics-service/metrics/racepredictions" - ) - self.garmin_connect_training_status_url = ( - "/metrics-service/metrics/trainingstatus/aggregated" - ) - self.garmin_connect_user_summary_chart = ( - "/wellness-service/wellness/dailySummaryChart" - ) - self.garmin_connect_floors_chart_daily_url = ( - "/wellness-service/wellness/floorsChartData/daily" - ) - self.garmin_connect_heartrates_daily_url = ( - "/wellness-service/wellness/dailyHeartRate" - ) - self.garmin_connect_daily_respiration_url = ( - "/wellness-service/wellness/daily/respiration" - ) - self.garmin_connect_daily_spo2_url = ( - "/wellness-service/wellness/daily/spo2" - ) - self.garmin_connect_daily_intensity_minutes = ( - "/wellness-service/wellness/daily/im" - ) - self.garmin_all_day_stress_url = ( - "/wellness-service/wellness/dailyStress" - ) - self.garmin_daily_events_url = "/wellness-service/wellness/dailyEvents" - self.garmin_connect_activities = ( - "/activitylist-service/activities/search/activities" - ) - self.garmin_connect_activities_baseurl = ( - "/activitylist-service/activities/" - ) - self.garmin_connect_activity = "/activity-service/activity" - self.garmin_connect_activity_types = ( - "/activity-service/activity/activityTypes" - ) - self.garmin_connect_activity_fordate = ( - "/mobile-gateway/heartRate/forDate" - ) - self.garmin_connect_fitnessstats = "/fitnessstats-service/activity" - self.garmin_connect_fitnessage = "/fitnessage-service/fitnessage" - - self.garmin_connect_fit_download = "/download-service/files/activity" - self.garmin_connect_tcx_download = ( - "/download-service/export/tcx/activity" - ) - self.garmin_connect_gpx_download = ( - "/download-service/export/gpx/activity" - ) - self.garmin_connect_kml_download = ( - "/download-service/export/kml/activity" - ) - self.garmin_connect_csv_download = ( - "/download-service/export/csv/activity" - ) - - self.garmin_connect_upload = "/upload-service/upload" - - self.garmin_connect_gear = "/gear-service/gear/filterGear" - self.garmin_connect_gear_baseurl = "/gear-service/gear/" - - self.garmin_request_reload_url = ( - "/wellness-service/wellness/epoch/request" - ) - - self.garmin_workouts = "/workout-service" - - self.garmin_connect_delete_activity_url = "/activity-service/activity" - - self.garmin_graphql_endpoint = "graphql-gateway/graphql" - - self.garth = garth.Client( - domain="garmin.cn" if is_cn else "garmin.com", - pool_connections=20, - pool_maxsize=20, - ) - - self.display_name = None - self.full_name = None - self.unit_system = None - - def connectapi(self, path, **kwargs): - return self.garth.connectapi(path, **kwargs) - - def download(self, path, **kwargs): - return self.garth.download(path, **kwargs) - - def login(self, /, tokenstore: Optional[str] = None) -> tuple[Any, Any]: - """Log in using Garth.""" - tokenstore = tokenstore or os.getenv("GARMINTOKENS") - - if tokenstore: - if len(tokenstore) > 512: - self.garth.loads(tokenstore) - else: - self.garth.load(tokenstore) - - self.display_name = self.garth.profile["displayName"] - self.full_name = self.garth.profile["fullName"] - - settings = self.garth.connectapi( - self.garmin_connect_user_settings_url - ) - self.unit_system = settings["userData"]["measurementSystem"] - - return None, None - else: - if self.return_on_mfa: - token1, token2 = self.garth.login( - self.username, - self.password, - return_on_mfa=self.return_on_mfa, - ) - else: - token1, token2 = self.garth.login( - self.username, self.password, prompt_mfa=self.prompt_mfa - ) - self.display_name = self.garth.profile["displayName"] - self.full_name = self.garth.profile["fullName"] - - settings = self.garth.connectapi( - self.garmin_connect_user_settings_url - ) - self.unit_system = settings["userData"]["measurementSystem"] - - return token1, token2 - - def resume_login(self, client_state: dict, mfa_code: str): - """Resume login using Garth.""" - result1, result2 = self.garth.resume_login(client_state, mfa_code) - - self.display_name = self.garth.profile["displayName"] - self.full_name = self.garth.profile["fullName"] - - settings = self.garth.connectapi(self.garmin_connect_user_settings_url) - self.unit_system = settings["userData"]["measurementSystem"] - - return result1, result2 - - def get_full_name(self): - """Return full name.""" - - return self.full_name - - def get_unit_system(self): - """Return unit system.""" - - return self.unit_system - - def get_stats(self, cdate: str) -> Dict[str, Any]: - """ - Return user activity summary for 'cdate' format 'YYYY-MM-DD' - (compat for garminconnect). - """ - - return self.get_user_summary(cdate) - - def get_user_summary(self, cdate: str) -> Dict[str, Any]: - """Return user activity summary for 'cdate' format 'YYYY-MM-DD'.""" - - url = f"{self.garmin_connect_daily_summary_url}/{self.display_name}" - params = {"calendarDate": str(cdate)} - logger.debug("Requesting user summary") - - response = self.connectapi(url, params=params) - - if response["privacyProtected"] is True: - raise GarminConnectAuthenticationError("Authentication error") - - return response - - def get_steps_data(self, cdate): - """Fetch available steps data 'cDate' format 'YYYY-MM-DD'.""" - - url = f"{self.garmin_connect_user_summary_chart}/{self.display_name}" - params = {"date": str(cdate)} - logger.debug("Requesting steps data") - - return self.connectapi(url, params=params) - - def get_floors(self, cdate): - """Fetch available floors data 'cDate' format 'YYYY-MM-DD'.""" - - url = f"{self.garmin_connect_floors_chart_daily_url}/{cdate}" - logger.debug("Requesting floors data") - - return self.connectapi(url) - - def get_daily_steps(self, start, end): - """Fetch available steps data 'start' and 'end' format 'YYYY-MM-DD'.""" - - url = f"{self.garmin_connect_daily_stats_steps_url}/{start}/{end}" - logger.debug("Requesting daily steps data") - - return self.connectapi(url) - - def get_heart_rates(self, cdate): - """Fetch available heart rates data 'cDate' format 'YYYY-MM-DD'.""" - - url = f"{self.garmin_connect_heartrates_daily_url}/{self.display_name}" - params = {"date": str(cdate)} - logger.debug("Requesting heart rates") - - return self.connectapi(url, params=params) - - def get_stats_and_body(self, cdate): - """Return activity data and body composition (compat for garminconnect).""" - - return { - **self.get_stats(cdate), - **self.get_body_composition(cdate)["totalAverage"], - } - - def get_body_composition( - self, startdate: str, enddate=None - ) -> Dict[str, Any]: - """ - Return available body composition data for 'startdate' format - 'YYYY-MM-DD' through enddate 'YYYY-MM-DD'. - """ - - if enddate is None: - enddate = startdate - url = f"{self.garmin_connect_weight_url}/weight/dateRange" - params = {"startDate": str(startdate), "endDate": str(enddate)} - logger.debug("Requesting body composition") - - return self.connectapi(url, params=params) - - def add_body_composition( - self, - timestamp: Optional[str], - weight: float, - percent_fat: Optional[float] = None, - percent_hydration: Optional[float] = None, - visceral_fat_mass: Optional[float] = None, - bone_mass: Optional[float] = None, - muscle_mass: Optional[float] = None, - basal_met: Optional[float] = None, - active_met: Optional[float] = None, - physique_rating: Optional[float] = None, - metabolic_age: Optional[float] = None, - visceral_fat_rating: Optional[float] = None, - bmi: Optional[float] = None, - ): - dt = datetime.fromisoformat(timestamp) if timestamp else datetime.now() - fitEncoder = FitEncoderWeight() - fitEncoder.write_file_info() - fitEncoder.write_file_creator() - fitEncoder.write_device_info(dt) - fitEncoder.write_weight_scale( - dt, - weight=weight, - percent_fat=percent_fat, - percent_hydration=percent_hydration, - visceral_fat_mass=visceral_fat_mass, - bone_mass=bone_mass, - muscle_mass=muscle_mass, - basal_met=basal_met, - active_met=active_met, - physique_rating=physique_rating, - metabolic_age=metabolic_age, - visceral_fat_rating=visceral_fat_rating, - bmi=bmi, - ) - fitEncoder.finish() - - url = self.garmin_connect_upload - files = { - "file": ("body_composition.fit", fitEncoder.getvalue()), - } - return self.garth.post("connectapi", url, files=files, api=True) - - def add_weigh_in( - self, weight: int, unitKey: str = "kg", timestamp: str = "" - ): - """Add a weigh-in (default to kg)""" - - url = f"{self.garmin_connect_weight_url}/user-weight" - dt = datetime.fromisoformat(timestamp) if timestamp else datetime.now() - # Apply timezone offset to get UTC/GMT time - dtGMT = dt.astimezone(timezone.utc) - payload = { - "dateTimestamp": dt.isoformat()[:19] + ".00", - "gmtTimestamp": dtGMT.isoformat()[:19] + ".00", - "unitKey": unitKey, - "sourceType": "MANUAL", - "value": weight, - } - logger.debug("Adding weigh-in") - - return self.garth.post("connectapi", url, json=payload) - - def add_weigh_in_with_timestamps( - self, - weight: int, - unitKey: str = "kg", - dateTimestamp: str = "", - gmtTimestamp: str = "", - ): - """Add a weigh-in with explicit timestamps (default to kg)""" - - url = f"{self.garmin_connect_weight_url}/user-weight" - - # Validate and format the timestamps - dt = ( - datetime.fromisoformat(dateTimestamp) - if dateTimestamp - else datetime.now() - ) - dtGMT = ( - datetime.fromisoformat(gmtTimestamp) - if gmtTimestamp - else dt.astimezone(timezone.utc) - ) - - # Build the payload - payload = { - "dateTimestamp": dt.isoformat()[:19] + ".00", # Local time - "gmtTimestamp": dtGMT.isoformat()[:19] + ".00", # GMT/UTC time - "unitKey": unitKey, - "sourceType": "MANUAL", - "value": weight, - } - - # Debug log for payload - logger.debug(f"Adding weigh-in with explicit timestamps: {payload}") - - # Make the POST request - return self.garth.post("connectapi", url, json=payload) - - def get_weigh_ins(self, startdate: str, enddate: str): - """Get weigh-ins between startdate and enddate using format 'YYYY-MM-DD'.""" - - url = f"{self.garmin_connect_weight_url}/weight/range/{startdate}/{enddate}" - params = {"includeAll": True} - logger.debug("Requesting weigh-ins") - - return self.connectapi(url, params=params) - - def get_daily_weigh_ins(self, cdate: str): - """Get weigh-ins for 'cdate' format 'YYYY-MM-DD'.""" - - url = f"{self.garmin_connect_weight_url}/weight/dayview/{cdate}" - params = {"includeAll": True} - logger.debug("Requesting weigh-ins") - - return self.connectapi(url, params=params) - - def delete_weigh_in(self, weight_pk: str, cdate: str): - """Delete specific weigh-in.""" - url = f"{self.garmin_connect_weight_url}/weight/{cdate}/byversion/{weight_pk}" - logger.debug("Deleting weigh-in") - - return self.garth.request( - "DELETE", - "connectapi", - url, - api=True, - ) - - def delete_weigh_ins(self, cdate: str, delete_all: bool = False): - """ - Delete weigh-in for 'cdate' format 'YYYY-MM-DD'. - Includes option to delete all weigh-ins for that date. - """ - - daily_weigh_ins = self.get_daily_weigh_ins(cdate) - weigh_ins = daily_weigh_ins.get("dateWeightList", []) - if not weigh_ins or len(weigh_ins) == 0: - logger.warning(f"No weigh-ins found on {cdate}") - return - elif len(weigh_ins) > 1: - logger.warning(f"Multiple weigh-ins found for {cdate}") - if not delete_all: - logger.warning( - f"Set delete_all to True to delete all {len(weigh_ins)} weigh-ins" - ) - return - - for w in weigh_ins: - self.delete_weigh_in(w["samplePk"], cdate) - - return len(weigh_ins) - - def get_body_battery( - self, startdate: str, enddate=None - ) -> List[Dict[str, Any]]: - """ - Return body battery values by day for 'startdate' format - 'YYYY-MM-DD' through enddate 'YYYY-MM-DD' - """ - - if enddate is None: - enddate = startdate - url = self.garmin_connect_daily_body_battery_url - params = {"startDate": str(startdate), "endDate": str(enddate)} - logger.debug("Requesting body battery data") - - return self.connectapi(url, params=params) - - def get_body_battery_events(self, cdate: str) -> List[Dict[str, Any]]: - """ - Return body battery events for date 'cdate' format 'YYYY-MM-DD'. - The return value is a list of dictionaries, where each dictionary contains event data for a specific event. - Events can include sleep, recorded activities, auto-detected activities, and naps - """ - - url = f"{self.garmin_connect_body_battery_events_url}/{cdate}" - logger.debug("Requesting body battery event data") - - return self.connectapi(url) - - def set_blood_pressure( - self, - systolic: int, - diastolic: int, - pulse: int, - timestamp: str = "", - notes: str = "", - ): - """ - Add blood pressure measurement - """ - - url = f"{self.garmin_connect_set_blood_pressure_endpoint}" - dt = datetime.fromisoformat(timestamp) if timestamp else datetime.now() - # Apply timezone offset to get UTC/GMT time - dtGMT = dt.astimezone(timezone.utc) - payload = { - "measurementTimestampLocal": dt.isoformat()[:19] + ".00", - "measurementTimestampGMT": dtGMT.isoformat()[:19] + ".00", - "systolic": systolic, - "diastolic": diastolic, - "pulse": pulse, - "sourceType": "MANUAL", - "notes": notes, - } - - logger.debug("Adding blood pressure") - - return self.garth.post("connectapi", url, json=payload) - - def get_blood_pressure( - self, startdate: str, enddate=None - ) -> Dict[str, Any]: - """ - Returns blood pressure by day for 'startdate' format - 'YYYY-MM-DD' through enddate 'YYYY-MM-DD' - """ - - if enddate is None: - enddate = startdate - url = f"{self.garmin_connect_blood_pressure_endpoint}/{startdate}/{enddate}" - params = {"includeAll": True} - logger.debug("Requesting blood pressure data") - - return self.connectapi(url, params=params) - - def delete_blood_pressure(self, version: str, cdate: str): - """Delete specific blood pressure measurement.""" - url = f"{self.garmin_connect_set_blood_pressure_endpoint}/{cdate}/{version}" - logger.debug("Deleting blood pressure measurement") - - return self.garth.request( - "DELETE", - "connectapi", - url, - api=True, - ) - - def get_max_metrics(self, cdate: str) -> Dict[str, Any]: - """Return available max metric data for 'cdate' format 'YYYY-MM-DD'.""" - - url = f"{self.garmin_connect_metrics_url}/{cdate}/{cdate}" - logger.debug("Requesting max metrics") - - return self.connectapi(url) - - def add_hydration_data( - self, value_in_ml: float, timestamp=None, cdate: Optional[str] = None - ) -> Dict[str, Any]: - """Add hydration data in ml. Defaults to current date and current timestamp if left empty - :param float required - value_in_ml: The number of ml of water you wish to add (positive) or subtract (negative) - :param timestamp optional - timestamp: The timestamp of the hydration update, format 'YYYY-MM-DDThh:mm:ss.ms' Defaults to current timestamp - :param date optional - cdate: The date of the weigh in, format 'YYYY-MM-DD'. Defaults to current date - """ - - url = self.garmin_connect_set_hydration_url - - if timestamp is None and cdate is None: - # If both are null, use today and now - raw_date = date.today() - cdate = str(raw_date) - - raw_ts = datetime.now() - timestamp = datetime.strftime(raw_ts, "%Y-%m-%dT%H:%M:%S.%f") - - elif cdate is not None and timestamp is None: - # If cdate is not null, use timestamp associated with midnight - raw_ts = datetime.strptime(cdate, "%Y-%m-%d") - timestamp = datetime.strftime(raw_ts, "%Y-%m-%dT%H:%M:%S.%f") - - elif cdate is None and timestamp is not None: - # If timestamp is not null, set cdate equal to date part of timestamp - raw_ts = datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S.%f") - cdate = str(raw_ts.date()) - - payload = { - "calendarDate": cdate, - "timestampLocal": timestamp, - "valueInML": value_in_ml, - } - - logger.debug("Adding hydration data") - - return self.garth.put("connectapi", url, json=payload) - - def get_hydration_data(self, cdate: str) -> Dict[str, Any]: - """Return available hydration data 'cdate' format 'YYYY-MM-DD'.""" - - url = f"{self.garmin_connect_daily_hydration_url}/{cdate}" - logger.debug("Requesting hydration data") - - return self.connectapi(url) - - def get_respiration_data(self, cdate: str) -> Dict[str, Any]: - """Return available respiration data 'cdate' format 'YYYY-MM-DD'.""" - - url = f"{self.garmin_connect_daily_respiration_url}/{cdate}" - logger.debug("Requesting respiration data") - - return self.connectapi(url) - - def get_spo2_data(self, cdate: str) -> Dict[str, Any]: - """Return available SpO2 data 'cdate' format 'YYYY-MM-DD'.""" - - url = f"{self.garmin_connect_daily_spo2_url}/{cdate}" - logger.debug("Requesting SpO2 data") - - return self.connectapi(url) - - def get_intensity_minutes_data(self, cdate: str) -> Dict[str, Any]: - """Return available Intensity Minutes data 'cdate' format 'YYYY-MM-DD'.""" - - url = f"{self.garmin_connect_daily_intensity_minutes}/{cdate}" - logger.debug("Requesting Intensity Minutes data") - - return self.connectapi(url) - - def get_all_day_stress(self, cdate: str) -> Dict[str, Any]: - """Return available all day stress data 'cdate' format 'YYYY-MM-DD'.""" - - url = f"{self.garmin_all_day_stress_url}/{cdate}" - logger.debug("Requesting all day stress data") - - return self.connectapi(url) - - def get_all_day_events(self, cdate: str) -> Dict[str, Any]: - """ - Return available daily events data 'cdate' format 'YYYY-MM-DD'. - Includes autodetected activities, even if not recorded on the watch - """ - - url = f"{self.garmin_daily_events_url}?calendarDate={cdate}" - logger.debug("Requesting all day events data") - - return self.connectapi(url) - - def get_personal_record(self) -> Dict[str, Any]: - """Return personal records for current user.""" - - url = f"{self.garmin_connect_personal_record_url}/{self.display_name}" - logger.debug("Requesting personal records for user") - - return self.connectapi(url) - - def get_earned_badges(self) -> Dict[str, Any]: - """Return earned badges for current user.""" - - url = self.garmin_connect_earned_badges_url - logger.debug("Requesting earned badges for user") - - return self.connectapi(url) - - def get_adhoc_challenges(self, start, limit) -> Dict[str, Any]: - """Return adhoc challenges for current user.""" - - url = self.garmin_connect_adhoc_challenges_url - params = {"start": str(start), "limit": str(limit)} - logger.debug("Requesting adhoc challenges for user") - - return self.connectapi(url, params=params) - - def get_badge_challenges(self, start, limit) -> Dict[str, Any]: - """Return badge challenges for current user.""" - - url = self.garmin_connect_badge_challenges_url - params = {"start": str(start), "limit": str(limit)} - logger.debug("Requesting badge challenges for user") - - return self.connectapi(url, params=params) - - def get_available_badge_challenges(self, start, limit) -> Dict[str, Any]: - """Return available badge challenges.""" - - url = self.garmin_connect_available_badge_challenges_url - params = {"start": str(start), "limit": str(limit)} - logger.debug("Requesting available badge challenges") - - return self.connectapi(url, params=params) - - def get_non_completed_badge_challenges( - self, start, limit - ) -> Dict[str, Any]: - """Return badge non-completed challenges for current user.""" - - url = self.garmin_connect_non_completed_badge_challenges_url - params = {"start": str(start), "limit": str(limit)} - logger.debug("Requesting badge challenges for user") - - return self.connectapi(url, params=params) - - def get_inprogress_virtual_challenges( - self, start, limit - ) -> Dict[str, Any]: - """Return in-progress virtual challenges for current user.""" - - url = self.garmin_connect_inprogress_virtual_challenges_url - params = {"start": str(start), "limit": str(limit)} - logger.debug("Requesting in-progress virtual challenges for user") - - return self.connectapi(url, params=params) - - def get_sleep_data(self, cdate: str) -> Dict[str, Any]: - """Return sleep data for current user.""" - - url = f"{self.garmin_connect_daily_sleep_url}/{self.display_name}" - params = {"date": str(cdate), "nonSleepBufferMinutes": 60} - logger.debug("Requesting sleep data") - - return self.connectapi(url, params=params) - - def get_stress_data(self, cdate: str) -> Dict[str, Any]: - """Return stress data for current user.""" - - url = f"{self.garmin_connect_daily_stress_url}/{cdate}" - logger.debug("Requesting stress data") - - return self.connectapi(url) - - def get_rhr_day(self, cdate: str) -> Dict[str, Any]: - """Return resting heartrate data for current user.""" - - url = f"{self.garmin_connect_rhr_url}/{self.display_name}" - params = { - "fromDate": str(cdate), - "untilDate": str(cdate), - "metricId": 60, - } - logger.debug("Requesting resting heartrate data") - - return self.connectapi(url, params=params) - - def get_hrv_data(self, cdate: str) -> Dict[str, Any]: - """Return Heart Rate Variability (hrv) data for current user.""" - - url = f"{self.garmin_connect_hrv_url}/{cdate}" - logger.debug("Requesting Heart Rate Variability (hrv) data") - - return self.connectapi(url) - - def get_training_readiness(self, cdate: str) -> Dict[str, Any]: - """Return training readiness data for current user.""" - - url = f"{self.garmin_connect_training_readiness_url}/{cdate}" - logger.debug("Requesting training readiness data") - - return self.connectapi(url) - - def get_endurance_score(self, startdate: str, enddate=None): - """ - Return endurance score by day for 'startdate' format 'YYYY-MM-DD' - through enddate 'YYYY-MM-DD'. - Using a single day returns the precise values for that day. - Using a range returns the aggregated weekly values for that week. - """ - - if enddate is None: - url = self.garmin_connect_endurance_score_url - params = {"calendarDate": str(startdate)} - logger.debug("Requesting endurance score data for a single day") - - return self.connectapi(url, params=params) - else: - url = f"{self.garmin_connect_endurance_score_url}/stats" - params = { - "startDate": str(startdate), - "endDate": str(enddate), - "aggregation": "weekly", - } - logger.debug("Requesting endurance score data for a range of days") - - return self.connectapi(url, params=params) - - def get_race_predictions(self, startdate=None, enddate=None, _type=None): - """ - Return race predictions for the 5k, 10k, half marathon and marathon. - Accepts either 0 parameters or all three: - If all parameters are empty, returns the race predictions for the current date - Or returns the race predictions for each day or month in the range provided - - Keyword Arguments: - 'startdate' the date of the earliest race predictions - Cannot be more than one year before 'enddate' - 'enddate' the date of the last race predictions - '_type' either 'daily' (the predictions for each day in the range) or - 'monthly' (the aggregated monthly prediction for each month in the range) - """ - - valid = {"daily", "monthly", None} - if _type not in valid: - raise ValueError("results: _type must be one of %r." % valid) - - if _type is None and startdate is None and enddate is None: - url = ( - self.garmin_connect_race_predictor_url - + f"/latest/{self.display_name}" - ) - return self.connectapi(url) - - elif ( - _type is not None and startdate is not None and enddate is not None - ): - url = ( - self.garmin_connect_race_predictor_url - + f"/{_type}/{self.display_name}" - ) - params = { - "fromCalendarDate": str(startdate), - "toCalendarDate": str(enddate), - } - return self.connectapi(url, params=params) - - else: - raise ValueError( - "You must either provide all parameters or no parameters" - ) - - def get_training_status(self, cdate: str) -> Dict[str, Any]: - """Return training status data for current user.""" - - url = f"{self.garmin_connect_training_status_url}/{cdate}" - logger.debug("Requesting training status data") - - return self.connectapi(url) - - def get_fitnessage_data(self, cdate: str) -> Dict[str, Any]: - """Return Fitness Age data for current user.""" - - url = f"{self.garmin_connect_fitnessage}/{cdate}" - logger.debug("Requesting Fitness Age data") - - return self.connectapi(url) - - def get_hill_score(self, startdate: str, enddate=None): - """ - Return hill score by day from 'startdate' format 'YYYY-MM-DD' - to enddate 'YYYY-MM-DD' - """ - - if enddate is None: - url = self.garmin_connect_hill_score_url - params = {"calendarDate": str(startdate)} - logger.debug("Requesting hill score data for a single day") - - return self.connectapi(url, params=params) - - else: - url = f"{self.garmin_connect_hill_score_url}/stats" - params = { - "startDate": str(startdate), - "endDate": str(enddate), - "aggregation": "daily", - } - logger.debug("Requesting hill score data for a range of days") - - return self.connectapi(url, params=params) - - def get_devices(self) -> List[Dict[str, Any]]: - """Return available devices for the current user account.""" - - url = self.garmin_connect_devices_url - logger.debug("Requesting devices") - - return self.connectapi(url) - - def get_device_settings(self, device_id: str) -> Dict[str, Any]: - """Return device settings for device with 'device_id'.""" - - url = f"{self.garmin_connect_device_url}/device-info/settings/{device_id}" - logger.debug("Requesting device settings") - - return self.connectapi(url) - - def get_primary_training_device(self) -> Dict[str, Any]: - """Return detailed information around primary training devices, included the specified device and the - priority of all devices. - """ - - url = self.garmin_connect_primary_device_url - logger.debug("Requesting primary training device information") - - return self.connectapi(url) - - def get_device_solar_data( - self, device_id: str, startdate: str, enddate=None - ) -> Dict[str, Any]: - """Return solar data for compatible device with 'device_id'""" - if enddate is None: - enddate = startdate - single_day = True - else: - single_day = False - - params = {"singleDayView": single_day} - - url = f"{self.garmin_connect_solar_url}/{device_id}/{startdate}/{enddate}" - - return self.connectapi(url, params=params)["deviceSolarInput"] - - def get_device_alarms(self) -> List[Any]: - """Get list of active alarms from all devices.""" - - logger.debug("Requesting device alarms") - - alarms = [] - devices = self.get_devices() - for device in devices: - device_settings = self.get_device_settings(device["deviceId"]) - device_alarms = device_settings["alarms"] - if device_alarms is not None: - alarms += device_alarms - return alarms - - def get_device_last_used(self): - """Return device last used.""" - - url = f"{self.garmin_connect_device_url}/mylastused" - logger.debug("Requesting device last used") - - return self.connectapi(url) - - def get_activities( - self, - start: int = 0, - limit: int = 20, - activitytype: Optional[str] = None, - ): - """ - Return available activities. - :param start: Starting activity offset, where 0 means the most recent activity - :param limit: Number of activities to return - :param activitytype: (Optional) Filter activities by type - :return: List of activities from Garmin - """ - - url = self.garmin_connect_activities - params = {"start": str(start), "limit": str(limit)} - if activitytype: - params["activityType"] = str(activitytype) - - logger.debug("Requesting activities") - - return self.connectapi(url, params=params) - - def get_activities_fordate(self, fordate: str): - """Return available activities for date.""" - - url = f"{self.garmin_connect_activity_fordate}/{fordate}" - logger.debug(f"Requesting activities for date {fordate}") - - return self.connectapi(url) - - def set_activity_name(self, activity_id, title): - """Set name for activity with id.""" - - url = f"{self.garmin_connect_activity}/{activity_id}" - payload = {"activityId": activity_id, "activityName": title} - - return self.garth.put("connectapi", url, json=payload, api=True) - - def set_activity_type( - self, activity_id, type_id, type_key, parent_type_id - ): - url = f"{self.garmin_connect_activity}/{activity_id}" - payload = { - "activityId": activity_id, - "activityTypeDTO": { - "typeId": type_id, - "typeKey": type_key, - "parentTypeId": parent_type_id, - }, - } - logger.debug(f"Changing activity type: {str(payload)}") - return self.garth.put("connectapi", url, json=payload, api=True) - - def create_manual_activity_from_json(self, payload): - url = f"{self.garmin_connect_activity}" - logger.debug(f"Uploading manual activity: {str(payload)}") - return self.garth.post("connectapi", url, json=payload, api=True) - - def create_manual_activity( - self, - start_datetime, - timezone, - type_key, - distance_km, - duration_min, - activity_name, - ): - """ - Create a private activity manually with a few basic parameters. - type_key - Garmin field representing type of activity. See https://connect.garmin.com/modern/main/js/properties/activity_types/activity_types.properties - Value to use is the key without 'activity_type_' prefix, e.g. 'resort_skiing' - start_datetime - timestamp in this pattern "2023-12-02T10:00:00.00" - timezone - local timezone of the activity, e.g. 'Europe/Paris' - distance_km - distance of the activity in kilometers - duration_min - duration of the activity in minutes - activity_name - the title - """ - payload = { - "activityTypeDTO": {"typeKey": type_key}, - "accessControlRuleDTO": {"typeId": 2, "typeKey": "private"}, - "timeZoneUnitDTO": {"unitKey": timezone}, - "activityName": activity_name, - "metadataDTO": { - "autoCalcCalories": True, - }, - "summaryDTO": { - "startTimeLocal": start_datetime, - "distance": distance_km * 1000, - "duration": duration_min * 60, - }, - } - return self.create_manual_activity_from_json(payload) - - def get_last_activity(self): - """Return last activity.""" - - activities = self.get_activities(0, 1) - if activities: - return activities[-1] - - return None - - def upload_activity(self, activity_path: str): - """Upload activity in fit format from file.""" - # This code is borrowed from python-garminconnect-enhanced ;-) - - file_base_name = os.path.basename(activity_path) - file_extension = file_base_name.split(".")[-1] - allowed_file_extension = ( - file_extension.upper() in Garmin.ActivityUploadFormat.__members__ - ) - - if allowed_file_extension: - files = { - "file": (file_base_name, open(activity_path, "rb" or "r")), - } - url = self.garmin_connect_upload - return self.garth.post("connectapi", url, files=files, api=True) - else: - raise GarminConnectInvalidFileFormatError( - f"Could not upload {activity_path}" - ) - - def delete_activity(self, activity_id): - """Delete activity with specified id""" - - url = f"{self.garmin_connect_delete_activity_url}/{activity_id}" - logger.debug("Deleting activity with id %s", activity_id) - - return self.garth.request( - "DELETE", - "connectapi", - url, - api=True, - ) - - def get_activities_by_date( - self, startdate, enddate=None, activitytype=None, sortorder=None - ): - """ - Fetch available activities between specific dates - :param startdate: String in the format YYYY-MM-DD - :param enddate: (Optional) String in the format YYYY-MM-DD - :param activitytype: (Optional) Type of activity you are searching - Possible values are [cycling, running, swimming, - multi_sport, fitness_equipment, hiking, walking, other] - :param sortorder: (Optional) sorting direction. By default, Garmin uses descending order by startLocal field. - Use "asc" to get activities from oldest to newest. - :return: list of JSON activities - """ - - activities = [] - start = 0 - limit = 20 - # mimicking the behavior of the web interface that fetches - # 20 activities at a time - # and automatically loads more on scroll - url = self.garmin_connect_activities - params = { - "startDate": str(startdate), - "start": str(start), - "limit": str(limit), - } - if enddate: - params["endDate"] = str(enddate) - if activitytype: - params["activityType"] = str(activitytype) - if sortorder: - params["sortOrder"] = str(sortorder) - - logger.debug( - f"Requesting activities by date from {startdate} to {enddate}" - ) - while True: - params["start"] = str(start) - logger.debug(f"Requesting activities {start} to {start+limit}") - act = self.connectapi(url, params=params) - if act: - activities.extend(act) - start = start + limit - else: - break - - return activities - - def get_progress_summary_between_dates( - self, startdate, enddate, metric="distance", groupbyactivities=True - ): - """ - Fetch progress summary data between specific dates - :param startdate: String in the format YYYY-MM-DD - :param enddate: String in the format YYYY-MM-DD - :param metric: metric to be calculated in the summary: - "elevationGain", "duration", "distance", "movingDuration" - :param groupbyactivities: group the summary by activity type - :return: list of JSON activities with their aggregated progress summary - """ - - url = self.garmin_connect_fitnessstats - params = { - "startDate": str(startdate), - "endDate": str(enddate), - "aggregation": "lifetime", - "groupByParentActivityType": str(groupbyactivities), - "metric": str(metric), - } - - logger.debug( - f"Requesting fitnessstats by date from {startdate} to {enddate}" - ) - return self.connectapi(url, params=params) - - def get_activity_types(self): - url = self.garmin_connect_activity_types - logger.debug("Requesting activity types") - return self.connectapi(url) - - def get_goals(self, status="active", start=1, limit=30): - """ - Fetch all goals based on status - :param status: Status of goals (valid options are "active", "future", or "past") - :type status: str - :param start: Initial goal index - :type start: int - :param limit: Pagination limit when retrieving goals - :type limit: int - :return: list of goals in JSON format - """ - - goals = [] - url = self.garmin_connect_goals_url - params = { - "status": status, - "start": str(start), - "limit": str(limit), - "sortOrder": "asc", - } - - logger.debug(f"Requesting {status} goals") - while True: - params["start"] = str(start) - logger.debug( - f"Requesting {status} goals {start} to {start + limit - 1}" - ) - goals_json = self.connectapi(url, params=params) - if goals_json: - goals.extend(goals_json) - start = start + limit - else: - break - - return goals - - def get_gear(self, userProfileNumber): - """Return all user gear.""" - url = f"{self.garmin_connect_gear}?userProfilePk={userProfileNumber}" - logger.debug("Requesting gear for user %s", userProfileNumber) - - return self.connectapi(url) - - def get_gear_stats(self, gearUUID): - url = f"{self.garmin_connect_gear_baseurl}stats/{gearUUID}" - logger.debug("Requesting gear stats for gearUUID %s", gearUUID) - return self.connectapi(url) - - def get_gear_defaults(self, userProfileNumber): - url = ( - f"{self.garmin_connect_gear_baseurl}user/" - f"{userProfileNumber}/activityTypes" - ) - logger.debug("Requesting gear for user %s", userProfileNumber) - return self.connectapi(url) - - def set_gear_default(self, activityType, gearUUID, defaultGear=True): - defaultGearString = "/default/true" if defaultGear else "" - method_override = "PUT" if defaultGear else "DELETE" - url = ( - f"{self.garmin_connect_gear_baseurl}{gearUUID}/" - f"activityType/{activityType}{defaultGearString}" - ) - return self.garth.request(method_override, "connectapi", url, api=True) - - class ActivityDownloadFormat(Enum): - """Activity variables.""" - - ORIGINAL = auto() - TCX = auto() - GPX = auto() - KML = auto() - CSV = auto() - - class ActivityUploadFormat(Enum): - FIT = auto() - GPX = auto() - TCX = auto() - - def download_activity( - self, activity_id, dl_fmt=ActivityDownloadFormat.TCX - ): - """ - Downloads activity in requested format and returns the raw bytes. For - "Original" will return the zip file content, up to user to extract it. - "CSV" will return a csv of the splits. - """ - activity_id = str(activity_id) - urls = { - Garmin.ActivityDownloadFormat.ORIGINAL: f"{self.garmin_connect_fit_download}/{activity_id}", # noqa - Garmin.ActivityDownloadFormat.TCX: f"{self.garmin_connect_tcx_download}/{activity_id}", # noqa - Garmin.ActivityDownloadFormat.GPX: f"{self.garmin_connect_gpx_download}/{activity_id}", # noqa - Garmin.ActivityDownloadFormat.KML: f"{self.garmin_connect_kml_download}/{activity_id}", # noqa - Garmin.ActivityDownloadFormat.CSV: f"{self.garmin_connect_csv_download}/{activity_id}", # noqa - } - if dl_fmt not in urls: - raise ValueError(f"Unexpected value {dl_fmt} for dl_fmt") - url = urls[dl_fmt] - - logger.debug("Downloading activities from %s", url) - - return self.download(url) - - def get_activity_splits(self, activity_id): - """Return activity splits.""" - - activity_id = str(activity_id) - url = f"{self.garmin_connect_activity}/{activity_id}/splits" - logger.debug("Requesting splits for activity id %s", activity_id) - - return self.connectapi(url) - - def get_activity_typed_splits(self, activity_id): - """Return typed activity splits. Contains similar info to `get_activity_splits`, but for certain activity types - (e.g., Bouldering), this contains more detail.""" - - activity_id = str(activity_id) - url = f"{self.garmin_connect_activity}/{activity_id}/typedsplits" - logger.debug("Requesting typed splits for activity id %s", activity_id) - - return self.connectapi(url) - - def get_activity_split_summaries(self, activity_id): - """Return activity split summaries.""" - - activity_id = str(activity_id) - url = f"{self.garmin_connect_activity}/{activity_id}/split_summaries" - logger.debug( - "Requesting split summaries for activity id %s", activity_id - ) - - return self.connectapi(url) - - def get_activity_weather(self, activity_id): - """Return activity weather.""" - - activity_id = str(activity_id) - url = f"{self.garmin_connect_activity}/{activity_id}/weather" - logger.debug("Requesting weather for activity id %s", activity_id) - - return self.connectapi(url) - - def get_activity_hr_in_timezones(self, activity_id): - """Return activity heartrate in timezones.""" - - activity_id = str(activity_id) - url = f"{self.garmin_connect_activity}/{activity_id}/hrTimeInZones" - logger.debug( - "Requesting split summaries for activity id %s", activity_id - ) - - return self.connectapi(url) - - def get_activity(self, activity_id): - """Return activity summary, including basic splits.""" - - activity_id = str(activity_id) - url = f"{self.garmin_connect_activity}/{activity_id}" - logger.debug( - "Requesting activity summary data for activity id %s", activity_id - ) - - return self.connectapi(url) - - def get_activity_details(self, activity_id, maxchart=2000, maxpoly=4000): - """Return activity details.""" - - activity_id = str(activity_id) - params = { - "maxChartSize": str(maxchart), - "maxPolylineSize": str(maxpoly), - } - url = f"{self.garmin_connect_activity}/{activity_id}/details" - logger.debug("Requesting details for activity id %s", activity_id) - - return self.connectapi(url, params=params) - - def get_activity_exercise_sets(self, activity_id): - """Return activity exercise sets.""" - - activity_id = str(activity_id) - url = f"{self.garmin_connect_activity}/{activity_id}/exerciseSets" - logger.debug( - "Requesting exercise sets for activity id %s", activity_id - ) - - return self.connectapi(url) - - def get_activity_gear(self, activity_id): - """Return gears used for activity id.""" - - activity_id = str(activity_id) - params = { - "activityId": str(activity_id), - } - url = self.garmin_connect_gear - logger.debug("Requesting gear for activity_id %s", activity_id) - - return self.connectapi(url, params=params) - - def get_gear_ativities(self, gearUUID, limit=9999): - """Return activities where gear uuid was used. - :param gearUUID: UUID of the gear to get activities for - :param limit: Maximum number of activities to return (default: 9999) - :return: List of activities where the specified gear was used - """ - gearUUID = str(gearUUID) - - url = f"{self.garmin_connect_activities_baseurl}{gearUUID}/gear?start=0&limit={limit}" - logger.debug("Requesting activities for gearUUID %s", gearUUID) - - return self.connectapi(url) - - def get_user_profile(self): - """Get all users settings.""" - - url = self.garmin_connect_user_settings_url - logger.debug("Requesting user profile.") - - return self.connectapi(url) - - def get_userprofile_settings(self): - """Get user settings.""" - - url = self.garmin_connect_userprofile_settings_url - logger.debug("Getting userprofile settings") - - return self.connectapi(url) - - def request_reload(self, cdate: str): - """ - Request reload of data for a specific date. This is necessary because - Garmin offloads older data. - """ - - url = f"{self.garmin_request_reload_url}/{cdate}" - logger.debug(f"Requesting reload of data for {cdate}.") - - return self.garth.post("connectapi", url, api=True) - - def get_workouts(self, start=0, end=100): - """Return workouts from start till end.""" - - url = f"{self.garmin_workouts}/workouts" - logger.debug(f"Requesting workouts from {start}-{end}") - params = {"start": start, "limit": end} - return self.connectapi(url, params=params) - - def get_workout_by_id(self, workout_id): - """Return workout by id.""" - - url = f"{self.garmin_workouts}/workout/{workout_id}" - return self.connectapi(url) - - def download_workout(self, workout_id): - """Download workout by id.""" - - url = f"{self.garmin_workouts}/workout/FIT/{workout_id}" - logger.debug("Downloading workout from %s", url) - - return self.download(url) - - # def upload_workout(self, workout_json: str): - # """Upload workout using json data.""" - - # url = f"{self.garmin_workouts}/workout" - # logger.debug("Uploading workout using %s", url) - - # return self.garth.post("connectapi", url, json=workout_json, api=True) - def get_menstrual_data_for_date(self, fordate: str): - """Return menstrual data for date.""" - - url = f"{self.garmin_connect_menstrual_dayview_url}/{fordate}" - logger.debug(f"Requesting menstrual data for date {fordate}") - - return self.connectapi(url) - - def get_menstrual_calendar_data(self, startdate: str, enddate: str): - """Return summaries of cycles that have days between startdate and enddate.""" - - url = f"{self.garmin_connect_menstrual_calendar_url}/{startdate}/{enddate}" - logger.debug( - f"Requesting menstrual data for dates {startdate} through {enddate}" - ) - - return self.connectapi(url) - - def get_pregnancy_summary(self): - """Return snapshot of pregnancy data""" - - url = f"{self.garmin_connect_pregnancy_snapshot_url}" - logger.debug("Requesting pregnancy snapshot data") - - return self.connectapi(url) - - def query_garmin_graphql(self, query: dict): - """Returns the results of a POST request to the Garmin GraphQL Endpoints. - Requires a GraphQL structured query. See {TBD} for examples. - """ - - logger.debug(f"Querying Garmin GraphQL Endpoint with query: {query}") - - return self.garth.post( - "connectapi", self.garmin_graphql_endpoint, json=query - ).json() - - def logout(self): - """Log user out of session.""" - - logger.error( - "Deprecated: Alternative is to delete login tokens to logout." - ) - - -class GarminConnectConnectionError(Exception): - """Raised when communication ended in error.""" - - -class GarminConnectTooManyRequestsError(Exception): - """Raised when rate limit is exceeded.""" - - -class GarminConnectAuthenticationError(Exception): - """Raised when authentication is failed.""" - - -class GarminConnectInvalidFileFormatError(Exception): - """Raised when an invalid file format is passed to upload.""" diff --git a/python-garminconnect/garminconnect/fit.py b/python-garminconnect/garminconnect/fit.py deleted file mode 100644 index b6a7734..0000000 --- a/python-garminconnect/garminconnect/fit.py +++ /dev/null @@ -1,511 +0,0 @@ -import time -from datetime import datetime -from io import BytesIO -from struct import pack, unpack - - -def _calcCRC(crc, byte): - table = [ - 0x0000, - 0xCC01, - 0xD801, - 0x1400, - 0xF001, - 0x3C00, - 0x2800, - 0xE401, - 0xA001, - 0x6C00, - 0x7800, - 0xB401, - 0x5000, - 0x9C01, - 0x8801, - 0x4400, - ] - # compute checksum of lower four bits of byte - tmp = table[crc & 0xF] - crc = (crc >> 4) & 0x0FFF - crc = crc ^ tmp ^ table[byte & 0xF] - # now compute checksum of upper four bits of byte - tmp = table[crc & 0xF] - crc = (crc >> 4) & 0x0FFF - crc = crc ^ tmp ^ table[(byte >> 4) & 0xF] - return crc - - -class FitBaseType(object): - """BaseType Definition - - see FIT Protocol Document(Page.20)""" - - enum = { - "#": 0, - "endian": 0, - "field": 0x00, - "name": "enum", - "invalid": 0xFF, - "size": 1, - } - sint8 = { - "#": 1, - "endian": 0, - "field": 0x01, - "name": "sint8", - "invalid": 0x7F, - "size": 1, - } - uint8 = { - "#": 2, - "endian": 0, - "field": 0x02, - "name": "uint8", - "invalid": 0xFF, - "size": 1, - } - sint16 = { - "#": 3, - "endian": 1, - "field": 0x83, - "name": "sint16", - "invalid": 0x7FFF, - "size": 2, - } - uint16 = { - "#": 4, - "endian": 1, - "field": 0x84, - "name": "uint16", - "invalid": 0xFFFF, - "size": 2, - } - sint32 = { - "#": 5, - "endian": 1, - "field": 0x85, - "name": "sint32", - "invalid": 0x7FFFFFFF, - "size": 4, - } - uint32 = { - "#": 6, - "endian": 1, - "field": 0x86, - "name": "uint32", - "invalid": 0xFFFFFFFF, - "size": 4, - } - string = { - "#": 7, - "endian": 0, - "field": 0x07, - "name": "string", - "invalid": 0x00, - "size": 1, - } - float32 = { - "#": 8, - "endian": 1, - "field": 0x88, - "name": "float32", - "invalid": 0xFFFFFFFF, - "size": 2, - } - float64 = { - "#": 9, - "endian": 1, - "field": 0x89, - "name": "float64", - "invalid": 0xFFFFFFFFFFFFFFFF, - "size": 4, - } - uint8z = { - "#": 10, - "endian": 0, - "field": 0x0A, - "name": "uint8z", - "invalid": 0x00, - "size": 1, - } - uint16z = { - "#": 11, - "endian": 1, - "field": 0x8B, - "name": "uint16z", - "invalid": 0x0000, - "size": 2, - } - uint32z = { - "#": 12, - "endian": 1, - "field": 0x8C, - "name": "uint32z", - "invalid": 0x00000000, - "size": 4, - } - byte = { - "#": 13, - "endian": 0, - "field": 0x0D, - "name": "byte", - "invalid": 0xFF, - "size": 1, - } # array of byte, field is invalid if all bytes are invalid - - @staticmethod - def get_format(basetype): - formats = { - 0: "B", - 1: "b", - 2: "B", - 3: "h", - 4: "H", - 5: "i", - 6: "I", - 7: "s", - 8: "f", - 9: "d", - 10: "B", - 11: "H", - 12: "I", - 13: "c", - } - return formats[basetype["#"]] - - @staticmethod - def pack(basetype, value): - """function to avoid DeprecationWarning""" - if basetype["#"] in (1, 2, 3, 4, 5, 6, 10, 11, 12): - value = int(value) - fmt = FitBaseType.get_format(basetype) - return pack(fmt, value) - - -class Fit(object): - HEADER_SIZE = 12 - - # not sure if this is the mesg_num - GMSG_NUMS = { - "file_id": 0, - "device_info": 23, - "weight_scale": 30, - "file_creator": 49, - "blood_pressure": 51, - } - - -class FitEncoder(Fit): - FILE_TYPE = 9 - LMSG_TYPE_FILE_INFO = 0 - LMSG_TYPE_FILE_CREATOR = 1 - LMSG_TYPE_DEVICE_INFO = 2 - - def __init__(self): - self.buf = BytesIO() - self.write_header() # create header first - self.device_info_defined = False - - def __str__(self): - orig_pos = self.buf.tell() - self.buf.seek(0) - lines = [] - while True: - b = self.buf.read(16) - if not b: - break - lines.append(" ".join(["%02x" % ord(c) for c in b])) - self.buf.seek(orig_pos) - return "\n".join(lines) - - def write_header( - self, - header_size=Fit.HEADER_SIZE, - protocol_version=16, - profile_version=108, - data_size=0, - data_type=b".FIT", - ): - self.buf.seek(0) - s = pack( - "BBHI4s", - header_size, - protocol_version, - profile_version, - data_size, - data_type, - ) - self.buf.write(s) - - def _build_content_block(self, content): - field_defs = [] - values = [] - for num, basetype, value, scale in content: - s = pack("BBB", num, basetype["size"], basetype["field"]) - field_defs.append(s) - if value is None: - # invalid value - value = basetype["invalid"] - elif scale is not None: - value *= scale - values.append(FitBaseType.pack(basetype, value)) - return (b"".join(field_defs), b"".join(values)) - - def write_file_info( - self, - serial_number=None, - time_created=None, - manufacturer=None, - product=None, - number=None, - ): - if time_created is None: - time_created = datetime.now() - - content = [ - (3, FitBaseType.uint32z, serial_number, None), - (4, FitBaseType.uint32, self.timestamp(time_created), None), - (1, FitBaseType.uint16, manufacturer, None), - (2, FitBaseType.uint16, product, None), - (5, FitBaseType.uint16, number, None), - (0, FitBaseType.enum, self.FILE_TYPE, None), # type - ] - fields, values = self._build_content_block(content) - - # create fixed content - msg_number = self.GMSG_NUMS["file_id"] - fixed_content = pack( - "BBHB", 0, 0, msg_number, len(content) - ) # reserved, architecture(0: little endian) - - self.buf.write( - b"".join( - [ - # definition - self.record_header( - definition=True, lmsg_type=self.LMSG_TYPE_FILE_INFO - ), - fixed_content, - fields, - # record - self.record_header(lmsg_type=self.LMSG_TYPE_FILE_INFO), - values, - ] - ) - ) - - def write_file_creator(self, software_version=None, hardware_version=None): - content = [ - (0, FitBaseType.uint16, software_version, None), - (1, FitBaseType.uint8, hardware_version, None), - ] - fields, values = self._build_content_block(content) - - msg_number = self.GMSG_NUMS["file_creator"] - fixed_content = pack( - "BBHB", 0, 0, msg_number, len(content) - ) # reserved, architecture(0: little endian) - self.buf.write( - b"".join( - [ - # definition - self.record_header( - definition=True, lmsg_type=self.LMSG_TYPE_FILE_CREATOR - ), - fixed_content, - fields, - # record - self.record_header(lmsg_type=self.LMSG_TYPE_FILE_CREATOR), - values, - ] - ) - ) - - def write_device_info( - self, - timestamp, - serial_number=None, - cum_operationg_time=None, - manufacturer=None, - product=None, - software_version=None, - battery_voltage=None, - device_index=None, - device_type=None, - hardware_version=None, - battery_status=None, - ): - content = [ - (253, FitBaseType.uint32, self.timestamp(timestamp), 1), - (3, FitBaseType.uint32z, serial_number, 1), - (7, FitBaseType.uint32, cum_operationg_time, 1), - (8, FitBaseType.uint32, None, None), # unknown field(undocumented) - (2, FitBaseType.uint16, manufacturer, 1), - (4, FitBaseType.uint16, product, 1), - (5, FitBaseType.uint16, software_version, 100), - (10, FitBaseType.uint16, battery_voltage, 256), - (0, FitBaseType.uint8, device_index, 1), - (1, FitBaseType.uint8, device_type, 1), - (6, FitBaseType.uint8, hardware_version, 1), - (11, FitBaseType.uint8, battery_status, None), - ] - fields, values = self._build_content_block(content) - - if not self.device_info_defined: - header = self.record_header( - definition=True, lmsg_type=self.LMSG_TYPE_DEVICE_INFO - ) - msg_number = self.GMSG_NUMS["device_info"] - fixed_content = pack( - "BBHB", 0, 0, msg_number, len(content) - ) # reserved, architecture(0: little endian) - self.buf.write(header + fixed_content + fields) - self.device_info_defined = True - - header = self.record_header(lmsg_type=self.LMSG_TYPE_DEVICE_INFO) - self.buf.write(header + values) - - def record_header(self, definition=False, lmsg_type=0): - msg = 0 - if definition: - msg = 1 << 6 # 6th bit is a definition message - return pack("B", msg + lmsg_type) - - def crc(self): - orig_pos = self.buf.tell() - self.buf.seek(0) - - crc = 0 - while True: - b = self.buf.read(1) - if not b: - break - crc = _calcCRC(crc, unpack("b", b)[0]) - self.buf.seek(orig_pos) - return pack("H", crc) - - def finish(self): - """re-weite file-header, then append crc to end of file""" - data_size = self.get_size() - self.HEADER_SIZE - self.write_header(data_size=data_size) - crc = self.crc() - self.buf.seek(0, 2) - self.buf.write(crc) - - def get_size(self): - orig_pos = self.buf.tell() - self.buf.seek(0, 2) - size = self.buf.tell() - self.buf.seek(orig_pos) - return size - - def getvalue(self): - return self.buf.getvalue() - - def timestamp(self, t): - """the timestamp in fit protocol is seconds since - UTC 00:00 Dec 31 1989 (631065600)""" - if isinstance(t, datetime): - t = time.mktime(t.timetuple()) - return t - 631065600 - - -class FitEncoderBloodPressure(FitEncoder): - # Here might be dragons - no idea what lsmg stand for, found 14 somewhere in the deepest web - LMSG_TYPE_BLOOD_PRESSURE = 14 - - def __init__(self): - super().__init__() - self.blood_pressure_monitor_defined = False - - def write_blood_pressure( - self, - timestamp, - diastolic_blood_pressure=None, - systolic_blood_pressure=None, - mean_arterial_pressure=None, - map_3_sample_mean=None, - map_morning_values=None, - map_evening_values=None, - heart_rate=None, - ): - # BLOOD PRESSURE FILE MESSAGES - content = [ - (253, FitBaseType.uint32, self.timestamp(timestamp), 1), - (0, FitBaseType.uint16, systolic_blood_pressure, 1), - (1, FitBaseType.uint16, diastolic_blood_pressure, 1), - (2, FitBaseType.uint16, mean_arterial_pressure, 1), - (3, FitBaseType.uint16, map_3_sample_mean, 1), - (4, FitBaseType.uint16, map_morning_values, 1), - (5, FitBaseType.uint16, map_evening_values, 1), - (6, FitBaseType.uint8, heart_rate, 1), - ] - fields, values = self._build_content_block(content) - - if not self.blood_pressure_monitor_defined: - header = self.record_header( - definition=True, lmsg_type=self.LMSG_TYPE_BLOOD_PRESSURE - ) - msg_number = self.GMSG_NUMS["blood_pressure"] - fixed_content = pack( - "BBHB", 0, 0, msg_number, len(content) - ) # reserved, architecture(0: little endian) - self.buf.write(header + fixed_content + fields) - self.blood_pressure_monitor_defined = True - - header = self.record_header(lmsg_type=self.LMSG_TYPE_BLOOD_PRESSURE) - self.buf.write(header + values) - - -class FitEncoderWeight(FitEncoder): - LMSG_TYPE_WEIGHT_SCALE = 3 - - def __init__(self): - super().__init__() - self.weight_scale_defined = False - - def write_weight_scale( - self, - timestamp, - weight, - percent_fat=None, - percent_hydration=None, - visceral_fat_mass=None, - bone_mass=None, - muscle_mass=None, - basal_met=None, - active_met=None, - physique_rating=None, - metabolic_age=None, - visceral_fat_rating=None, - bmi=None, - ): - content = [ - (253, FitBaseType.uint32, self.timestamp(timestamp), 1), - (0, FitBaseType.uint16, weight, 100), - (1, FitBaseType.uint16, percent_fat, 100), - (2, FitBaseType.uint16, percent_hydration, 100), - (3, FitBaseType.uint16, visceral_fat_mass, 100), - (4, FitBaseType.uint16, bone_mass, 100), - (5, FitBaseType.uint16, muscle_mass, 100), - (7, FitBaseType.uint16, basal_met, 4), - (9, FitBaseType.uint16, active_met, 4), - (8, FitBaseType.uint8, physique_rating, 1), - (10, FitBaseType.uint8, metabolic_age, 1), - (11, FitBaseType.uint8, visceral_fat_rating, 1), - (13, FitBaseType.uint16, bmi, 10), - ] - fields, values = self._build_content_block(content) - - if not self.weight_scale_defined: - header = self.record_header( - definition=True, lmsg_type=self.LMSG_TYPE_WEIGHT_SCALE - ) - msg_number = self.GMSG_NUMS["weight_scale"] - fixed_content = pack( - "BBHB", 0, 0, msg_number, len(content) - ) # reserved, architecture(0: little endian) - self.buf.write(header + fixed_content + fields) - self.weight_scale_defined = True - - header = self.record_header(lmsg_type=self.LMSG_TYPE_WEIGHT_SCALE) - self.buf.write(header + values) diff --git a/python-garminconnect/garminconnect/graphql_queries.txt b/python-garminconnect/garminconnect/graphql_queries.txt deleted file mode 100644 index 070610e..0000000 --- a/python-garminconnect/garminconnect/graphql_queries.txt +++ /dev/null @@ -1,23829 +0,0 @@ -GRAPHQL_QUERIES_WITH_PARAMS = [ - { - "query": 'query{{activitiesScalar(displayName:"{self.display_name}", startTimestampLocal:"{startDateTime}", endTimestampLocal:"{endDateTime}", limit:{limit})}}', - "params": { - "limit": "int", - "startDateTime": "YYYY-MM-DDThh:mm:ss.ms", - "endDateTime": "YYYY-MM-DDThh:mm:ss.ms", - }, - }, - { - "query": 'query{{healthSnapshotScalar(startDate:"{startDate}", endDate:"{endDate}")}}', - "params": {"startDate": "YYYY-MM-DD", "endDate": "YYYY-MM-DD"}, - }, - { - "query": 'query{{golfScorecardScalar(startTimestampLocal:"{startDateTime}", endTimestampLocal:"{endDateTime}")}}', - "params": { - "startDateTime": "YYYY-MM-DDThh:mm:ss.ms", - "endDateTime": "YYYY-MM-DDThh:mm:ss.ms", - }, - }, - { - "query": 'query{{weightScalar(startDate:"{startDate}", endDate:"{endDate}")}}', - "params": {"startDate": "YYYY-MM-DD", "endDate": "YYYY-MM-DD"}, - }, - { - "query": 'query{{bloodPressureScalar(startDate:"{startDate}", endDate:"{endDate}")}}', - "params": {"startDate": "YYYY-MM-DD", "endDate": "YYYY-MM-DD"}, - }, - { - "query": 'query{{sleepSummariesScalar(startDate:"{startDate}", endDate:"{endDate}")}}', - "params": {"startDate": "YYYY-MM-DD", "endDate": "YYYY-MM-DD"}, - }, - { - "query": 'query{{heartRateVariabilityScalar(startDate:"{startDate}", endDate:"{endDate}")}}', - "params": {"startDate": "YYYY-MM-DD", "endDate": "YYYY-MM-DD"}, - }, - { - "query": 'query{{userDailySummaryV2Scalar(startDate:"{startDate}", endDate:"{endDate}")}}', - "params": {"startDate": "YYYY-MM-DD", "endDate": "YYYY-MM-DD"}, - }, - { - "query": 'query{{workoutScheduleSummariesScalar(startDate:"{startDate}", endDate:"{endDate}")}}', - "params": {"startDate": "YYYY-MM-DD", "endDate": "YYYY-MM-DD"}, - }, - { - "query": 'query{{trainingPlanScalar(calendarDate:"{calendarDate}", lang:"en-US", firstDayOfWeek:"monday")}}', - "params": { - "calendarDate": "YYYY-MM-DD", - "lang": "str", - "firstDayOfWeek": "str", - }, - }, - { - "query": 'query{{menstrualCycleDetail(date:"{date}", todayDate:"{todayDate}"){{daySummary{{pregnancyCycle}}dayLog{{calendarDate, symptoms, moods, discharge, hasBabyMovement}}}}', - "params": {"date": "YYYY-MM-DD", "todayDate": "YYYY-MM-DD"}, - }, - { - "query": 'query{{activityStatsScalar(aggregation:"daily", startDate:"{startDate}", endDate:"{endDate}", metrics:["duration", "distance"], activityType:["running", "cycling", "swimming", "walking", "multi_sport", "fitness_equipment", "para_sports"], groupByParentActivityType:true, standardizedUnits:true)}}', - "params": { - "startDate": "YYYY-MM-DD", - "endDate": "YYYY-MM-DD", - "aggregation": "str", - "metrics": "list[str]", - "activityType": "list[str]", - "groupByParentActivityType": "bool", - "standardizedUnits": "bool", - }, - }, - { - "query": 'query{{activityStatsScalar(aggregation:"daily", startDate:"{startDate}", endDate:"{endDate}", metrics:["duration", "distance"], groupByParentActivityType:false, standardizedUnits:true)}}', - "params": { - "startDate": "YYYY-MM-DD", - "endDate": "YYYY-MM-DD", - "aggregation": "str", - "metrics": "list[str]", - "activityType": "list[str]", - "groupByParentActivityType": "bool", - "standardizedUnits": "bool", - }, - }, - { - "query": 'query{{sleepScalar(date:"{date}", sleepOnly:false)}}', - "params": {"date": "YYYY-MM-DD", "sleepOnly": "bool"}, - }, - { - "query": 'query{{jetLagScalar(date:"{date}")}}', - "params": {"date": "YYYY-MM-DD"}, - }, - { - "query": 'query{{myDayCardEventsScalar(timeZone:"GMT", date:"{date}")}}', - "params": {"date": "YYYY-MM-DD", "timezone": "str"}, - }, - {"query": "query{{adhocChallengesScalar}", "params": {}}, - {"query": "query{{adhocChallengePendingInviteScalar}", "params": {}}, - {"query": "query{{badgeChallengesScalar}", "params": {}}, - {"query": "query{{expeditionsChallengesScalar}", "params": {}}, - { - "query": 'query{{trainingReadinessRangeScalar(startDate:"{startDate}", endDate:"{endDate}")}}', - "params": {"startDate": "YYYY-MM-DD", "endDate": "YYYY-MM-DD"}, - }, - { - "query": 'query{{trainingStatusDailyScalar(calendarDate:"{calendarDate}")}}', - "params": {"calendarDate": "YYYY-MM-DD"}, - }, - { - "query": 'query{{trainingStatusWeeklyScalar(startDate:"{startDate}", endDate:"{endDate}", displayName:"{self.display_name}")}}', - "params": {"startDate": "YYYY-MM-DD", "endDate": "YYYY-MM-DD"}, - }, - { - "query": 'query{{trainingLoadBalanceScalar(calendarDate:"{calendarDate}", fullHistoryScan:true)}}', - "params": {"calendarDate": "YYYY-MM-DD", "fullHistoryScan": "bool"}, - }, - { - "query": 'query{{heatAltitudeAcclimationScalar(date:"{date}")}}', - "params": {"date": "YYYY-MM-DD"}, - }, - { - "query": 'query{{vo2MaxScalar(startDate:"{startDate}", endDate:"{endDate}")}}', - "params": {"startDate": "YYYY-MM-DD", "endDate": "YYYY-MM-DD"}, - }, - { - "query": 'query{{activityTrendsScalar(activityType:"running", date:"{date}")}}', - "params": {"date": "YYYY-MM-DD", "activityType": "str"}, - }, - { - "query": 'query{{activityTrendsScalar(activityType:"all", date:"{date}")}}', - "params": {"date": "YYYY-MM-DD", "activityType": "str"}, - }, - { - "query": 'query{{activityTrendsScalar(activityType:"fitness_equipment", date:"{date}")}}', - "params": {"date": "YYYY-MM-DD", "activityType": "str"}, - }, - {"query": "query{{userGoalsScalar}", "params": {}}, - { - "query": 'query{{trainingStatusWeeklyScalar(startDate:"{startDate}", endDate:"{endDate}", displayName:"{self.display_name}")}}', - "params": {"startDate": "YYYY-MM-DD", "endDate": "YYYY-MM-DD"}, - }, - { - "query": 'query{{enduranceScoreScalar(startDate:"{startDate}", endDate:"{endDate}", aggregation:"weekly")}}', - "params": { - "startDate": "YYYY-MM-DD", - "endDate": "YYYY-MM-DD", - "aggregation": "str", - }, - }, - { - "query": 'query{{latestWeightScalar(asOfDate:"{asOfDate}")}}', - "params": {"asOfDate": "str"}, - }, - { - "query": 'query{{pregnancyScalar(date:"{date}")}}', - "params": {"date": "YYYY-MM-DD"}, - }, - { - "query": 'query{{epochChartScalar(date:"{date}", include:["stress"])}}', - "params": {"date": "YYYY-MM-DD", "include": "list[str]"}, - }, -] - -GRAPHQL_QUERIES_WITH_SAMPLE_RESPONSES = [ - { - "query": { - "query": 'query{activitiesScalar(displayName:"ca8406dd-d7dd-4adb-825e-16967b1e82fb", startTimestampLocal:"2024-07-02T00:00:00.00", endTimestampLocal:"2024-07-08T23:59:59.999", limit:40)}' - }, - "response": { - "data": { - "activitiesScalar": { - "activityList": [ - { - "activityId": 16204035614, - "activityName": "Merrimac - Base with Hill Sprints and Strid", - "startTimeLocal": "2024-07-02 06:56:49", - "startTimeGMT": "2024-07-02 10:56:49", - "activityType": { - "typeId": 1, - "typeKey": "running", - "parentTypeId": 17, - "isHidden": false, - "trimmable": true, - "restricted": false, - }, - "eventType": { - "typeId": 9, - "typeKey": "uncategorized", - "sortOrder": 10, - }, - "distance": 12951.5302734375, - "duration": 3777.14892578125, - "elapsedDuration": 3806.303955078125, - "movingDuration": 3762.374988555908, - "elevationGain": 106.0, - "elevationLoss": 108.0, - "averageSpeed": 3.428999900817871, - "maxSpeed": 6.727000236511231, - "startLatitude": 42.84449494443834, - "startLongitude": -71.0120471008122, - "hasPolyline": true, - "hasImages": false, - "ownerId": "user_id: int", - "ownerDisplayName": "display_name", - "ownerFullName": "owner_name", - "ownerProfileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/7768ce88-bdf9-4ba3-a19f-74a1674b760f-user_id.png", - "ownerProfileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/d1f17694-b757-4434-818b-36224f064b67-user_id.png", - "ownerProfileImageUrlLarge": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/db7c55db-a9f9-40e2-af33-eef9dedecee4-user_id.png", - "calories": 955.0, - "bmrCalories": 97.0, - "averageHR": 139.0, - "maxHR": 164.0, - "averageRunningCadenceInStepsPerMinute": 165.59375, - "maxRunningCadenceInStepsPerMinute": 219.0, - "steps": 10158, - "userRoles": [ - "SCOPE_GOLF_API_READ", - "SCOPE_ATP_READ", - "SCOPE_DIVE_API_WRITE", - "SCOPE_COMMUNITY_COURSE_ADMIN_READ", - "SCOPE_DIVE_API_READ", - "SCOPE_DI_OAUTH_2_CLIENT_READ", - "SCOPE_CONNECT_WRITE", - "SCOPE_COMMUNITY_COURSE_WRITE", - "SCOPE_MESSAGE_GENERATION_READ", - "SCOPE_DI_OAUTH_2_CLIENT_REVOCATION_ADMIN", - "SCOPE_CONNECT_WEB_TEMPLATE_RENDER", - "SCOPE_CONNECT_NON_SOCIAL_SHARED_READ", - "SCOPE_CONNECT_READ", - "SCOPE_DI_OAUTH_2_TOKEN_ADMIN", - "ROLE_CONNECTUSER", - "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", - "ROLE_OUTDOOR_USER", - ], - "privacy": {"typeId": 2, "typeKey": "private"}, - "userPro": false, - "hasVideo": false, - "timeZoneId": 149, - "beginTimestamp": 1719917809000, - "sportTypeId": 1, - "avgPower": 388.0, - "maxPower": 707.0, - "aerobicTrainingEffect": 3.200000047683716, - "anaerobicTrainingEffect": 2.4000000953674316, - "normPower": 397.0, - "avgVerticalOscillation": 9.480000305175782, - "avgGroundContactTime": 241.60000610351562, - "avgStrideLength": 124.90999755859376, - "vO2MaxValue": 60.0, - "avgVerticalRatio": 7.539999961853027, - "avgGroundContactBalance": 52.310001373291016, - "workoutId": 802967097, - "deviceId": 3472661486, - "minTemperature": 20.0, - "maxTemperature": 26.0, - "minElevation": 31.399999618530273, - "maxElevation": 51.0, - "maxDoubleCadence": 219.0, - "summarizedDiveInfo": {"summarizedDiveGases": []}, - "maxVerticalSpeed": 0.8000030517578125, - "manufacturer": "GARMIN", - "locationName": "Merrimac", - "lapCount": 36, - "endLatitude": 42.84442646428943, - "endLongitude": -71.01196898147464, - "waterEstimated": 1048.0, - "minRespirationRate": 21.68000030517578, - "maxRespirationRate": 42.36000061035156, - "avgRespirationRate": 30.920000076293945, - "trainingEffectLabel": "AEROBIC_BASE", - "activityTrainingLoad": 158.7926483154297, - "minActivityLapDuration": 15.0, - "aerobicTrainingEffectMessage": "IMPROVING_AEROBIC_BASE_8", - "anaerobicTrainingEffectMessage": "MAINTAINING_ANAEROBIC_POWER_7", - "splitSummaries": [ - { - "noOfSplits": 16, - "totalAscent": 67.0, - "duration": 2869.5791015625, - "splitType": "INTERVAL_ACTIVE", - "numClimbSends": 0, - "maxElevationGain": 63.0, - "averageElevationGain": 4.0, - "maxDistance": 8083, - "distance": 10425.3701171875, - "averageSpeed": 3.632999897003174, - "maxSpeed": 6.7270002365112305, - "numFalls": 0, - "elevationLoss": 89.0, - }, - { - "noOfSplits": 1, - "totalAscent": 0.0, - "duration": 3.000999927520752, - "splitType": "RWD_STAND", - "numClimbSends": 0, - "maxElevationGain": 0.0, - "averageElevationGain": 0.0, - "maxDistance": 4, - "distance": 4.570000171661377, - "averageSpeed": 1.5230000019073486, - "maxSpeed": 0.671999990940094, - "numFalls": 0, - "elevationLoss": 0.0, - }, - { - "noOfSplits": 8, - "totalAscent": 102.0, - "duration": 3698.02294921875, - "splitType": "RWD_RUN", - "numClimbSends": 0, - "maxElevationGain": 75.0, - "averageElevationGain": 13.0, - "maxDistance": 8593, - "distance": 12818.2900390625, - "averageSpeed": 3.4660000801086426, - "maxSpeed": 6.7270002365112305, - "numFalls": 0, - "elevationLoss": 105.0, - }, - { - "noOfSplits": 14, - "totalAscent": 29.0, - "duration": 560.0, - "splitType": "INTERVAL_RECOVERY", - "numClimbSends": 0, - "maxElevationGain": 7.0, - "averageElevationGain": 2.0, - "maxDistance": 121, - "distance": 1354.5899658203125, - "averageSpeed": 2.4189999103546143, - "maxSpeed": 6.568999767303467, - "numFalls": 0, - "elevationLoss": 18.0, - }, - { - "noOfSplits": 6, - "totalAscent": 3.0, - "duration": 79.0009994506836, - "splitType": "RWD_WALK", - "numClimbSends": 0, - "maxElevationGain": 2.0, - "averageElevationGain": 1.0, - "maxDistance": 38, - "distance": 128.6699981689453, - "averageSpeed": 1.628999948501587, - "maxSpeed": 1.996999979019165, - "numFalls": 0, - "elevationLoss": 3.0, - }, - { - "noOfSplits": 1, - "totalAscent": 9.0, - "duration": 346.8739929199219, - "splitType": "INTERVAL_COOLDOWN", - "numClimbSends": 0, - "maxElevationGain": 9.0, - "averageElevationGain": 9.0, - "maxDistance": 1175, - "distance": 1175.6099853515625, - "averageSpeed": 3.3889999389648438, - "maxSpeed": 3.7039999961853027, - "numFalls": 0, - "elevationLoss": 1.0, - }, - ], - "hasSplits": true, - "moderateIntensityMinutes": 55, - "vigorousIntensityMinutes": 1, - "avgGradeAdjustedSpeed": 3.4579999446868896, - "differenceBodyBattery": -18, - "purposeful": false, - "manualActivity": false, - "pr": false, - "autoCalcCalories": false, - "elevationCorrected": false, - "atpActivity": false, - "favorite": false, - "decoDive": false, - "parent": false, - }, - { - "activityId": 16226633730, - "activityName": "Long Beach Running", - "startTimeLocal": "2024-07-03 12:01:28", - "startTimeGMT": "2024-07-03 16:01:28", - "activityType": { - "typeId": 1, - "typeKey": "running", - "parentTypeId": 17, - "isHidden": false, - "trimmable": true, - "restricted": false, - }, - "eventType": { - "typeId": 9, - "typeKey": "uncategorized", - "sortOrder": 10, - }, - "distance": 19324.55078125, - "duration": 4990.2158203125, - "elapsedDuration": 4994.26708984375, - "movingDuration": 4985.841033935547, - "elevationGain": 5.0, - "elevationLoss": 2.0, - "averageSpeed": 3.871999979019165, - "maxSpeed": 4.432000160217285, - "startLatitude": 39.750197203829885, - "startLongitude": -74.1200018953532, - "hasPolyline": true, - "hasImages": false, - "ownerId": "user_id: int", - "ownerDisplayName": "display_name", - "ownerFullName": "owner_name", - "ownerProfileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/7768ce88-bdf9-4ba3-a19f-74a1674b760f-user_id.png", - "ownerProfileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/d1f17694-b757-4434-818b-36224f064b67-user_id.png", - "ownerProfileImageUrlLarge": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/db7c55db-a9f9-40e2-af33-eef9dedecee4-user_id.png", - "calories": 1410.0, - "bmrCalories": 129.0, - "averageHR": 151.0, - "maxHR": 163.0, - "averageRunningCadenceInStepsPerMinute": 173.109375, - "maxRunningCadenceInStepsPerMinute": 181.0, - "steps": 14260, - "userRoles": [ - "SCOPE_GOLF_API_READ", - "SCOPE_ATP_READ", - "SCOPE_DIVE_API_WRITE", - "SCOPE_COMMUNITY_COURSE_ADMIN_READ", - "SCOPE_DIVE_API_READ", - "SCOPE_DI_OAUTH_2_CLIENT_READ", - "SCOPE_CONNECT_WRITE", - "SCOPE_COMMUNITY_COURSE_WRITE", - "SCOPE_MESSAGE_GENERATION_READ", - "SCOPE_DI_OAUTH_2_CLIENT_REVOCATION_ADMIN", - "SCOPE_CONNECT_WEB_TEMPLATE_RENDER", - "SCOPE_CONNECT_NON_SOCIAL_SHARED_READ", - "SCOPE_CONNECT_READ", - "SCOPE_DI_OAUTH_2_TOKEN_ADMIN", - "ROLE_CONNECTUSER", - "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", - "ROLE_OUTDOOR_USER", - ], - "privacy": {"typeId": 2, "typeKey": "private"}, - "userPro": false, - "hasVideo": false, - "timeZoneId": 149, - "beginTimestamp": 1720022488000, - "sportTypeId": 1, - "avgPower": 429.0, - "maxPower": 503.0, - "aerobicTrainingEffect": 4.099999904632568, - "anaerobicTrainingEffect": 0.0, - "normPower": 430.0, - "avgVerticalOscillation": 9.45999984741211, - "avgGroundContactTime": 221.39999389648438, - "avgStrideLength": 134.6199951171875, - "vO2MaxValue": 60.0, - "avgVerticalRatio": 6.809999942779541, - "avgGroundContactBalance": 52.790000915527344, - "deviceId": 3472661486, - "minTemperature": 29.0, - "maxTemperature": 34.0, - "minElevation": 2.5999999046325684, - "maxElevation": 7.800000190734863, - "maxDoubleCadence": 181.0, - "summarizedDiveInfo": {"summarizedDiveGases": []}, - "maxVerticalSpeed": 0.6000001430511475, - "manufacturer": "GARMIN", - "locationName": "Long Beach", - "lapCount": 13, - "endLatitude": 39.75033424794674, - "endLongitude": -74.12003693170846, - "waterEstimated": 1385.0, - "minRespirationRate": 13.300000190734863, - "maxRespirationRate": 42.77000045776367, - "avgRespirationRate": 28.969999313354492, - "trainingEffectLabel": "TEMPO", - "activityTrainingLoad": 210.4363555908203, - "minActivityLapDuration": 201.4739990234375, - "aerobicTrainingEffectMessage": "HIGHLY_IMPACTING_TEMPO_23", - "anaerobicTrainingEffectMessage": "NO_ANAEROBIC_BENEFIT_0", - "splitSummaries": [ - { - "noOfSplits": 1, - "totalAscent": 5.0, - "duration": 4990.2158203125, - "splitType": "INTERVAL_ACTIVE", - "numClimbSends": 0, - "maxElevationGain": 5.0, - "averageElevationGain": 2.0, - "maxDistance": 19324, - "distance": 19324.560546875, - "averageSpeed": 3.871999979019165, - "maxSpeed": 4.432000160217285, - "numFalls": 0, - "elevationLoss": 2.0, - }, - { - "noOfSplits": 1, - "totalAscent": 0.0, - "duration": 3.0, - "splitType": "RWD_STAND", - "numClimbSends": 0, - "maxElevationGain": 0.0, - "averageElevationGain": 0.0, - "maxDistance": 5, - "distance": 5.239999771118164, - "averageSpeed": 1.746999979019165, - "maxSpeed": 0.31700000166893005, - "numFalls": 0, - "elevationLoss": 0.0, - }, - { - "noOfSplits": 1, - "totalAscent": 5.0, - "duration": 4990.09619140625, - "splitType": "RWD_RUN", - "numClimbSends": 0, - "maxElevationGain": 5.0, - "averageElevationGain": 5.0, - "maxDistance": 19319, - "distance": 19319.3203125, - "averageSpeed": 3.871999979019165, - "maxSpeed": 4.432000160217285, - "numFalls": 0, - "elevationLoss": 2.0, - }, - ], - "hasSplits": true, - "moderateIntensityMinutes": 61, - "vigorousIntensityMinutes": 19, - "avgGradeAdjustedSpeed": 3.871000051498413, - "differenceBodyBattery": -20, - "purposeful": false, - "manualActivity": false, - "pr": false, - "autoCalcCalories": false, - "elevationCorrected": false, - "atpActivity": false, - "favorite": false, - "decoDive": false, - "parent": false, - }, - { - "activityId": 16238254136, - "activityName": "Long Beach - Base", - "startTimeLocal": "2024-07-04 07:45:46", - "startTimeGMT": "2024-07-04 11:45:46", - "activityType": { - "typeId": 1, - "typeKey": "running", - "parentTypeId": 17, - "isHidden": false, - "trimmable": true, - "restricted": false, - }, - "eventType": { - "typeId": 9, - "typeKey": "uncategorized", - "sortOrder": 10, - }, - "distance": 8373.5498046875, - "duration": 2351.343017578125, - "elapsedDuration": 2351.343017578125, - "movingDuration": 2349.2779846191406, - "elevationGain": 4.0, - "elevationLoss": 2.0, - "averageSpeed": 3.5610001087188725, - "maxSpeed": 3.7980000972747807, - "startLatitude": 39.75017515942454, - "startLongitude": -74.12003056146204, - "hasPolyline": true, - "hasImages": false, - "ownerId": "user_id: int", - "ownerDisplayName": "display_name", - "ownerFullName": "owner_name", - "ownerProfileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/7768ce88-bdf9-4ba3-a19f-74a1674b760f-user_id.png", - "ownerProfileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/d1f17694-b757-4434-818b-36224f064b67-user_id.png", - "ownerProfileImageUrlLarge": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/db7c55db-a9f9-40e2-af33-eef9dedecee4-user_id.png", - "calories": 622.0, - "bmrCalories": 61.0, - "averageHR": 142.0, - "maxHR": 149.0, - "averageRunningCadenceInStepsPerMinute": 167.53125, - "maxRunningCadenceInStepsPerMinute": 180.0, - "steps": 6506, - "userRoles": [ - "SCOPE_GOLF_API_READ", - "SCOPE_ATP_READ", - "SCOPE_DIVE_API_WRITE", - "SCOPE_COMMUNITY_COURSE_ADMIN_READ", - "SCOPE_DIVE_API_READ", - "SCOPE_DI_OAUTH_2_CLIENT_READ", - "SCOPE_CONNECT_WRITE", - "SCOPE_COMMUNITY_COURSE_WRITE", - "SCOPE_MESSAGE_GENERATION_READ", - "SCOPE_DI_OAUTH_2_CLIENT_REVOCATION_ADMIN", - "SCOPE_CONNECT_WEB_TEMPLATE_RENDER", - "SCOPE_CONNECT_NON_SOCIAL_SHARED_READ", - "SCOPE_CONNECT_READ", - "SCOPE_DI_OAUTH_2_TOKEN_ADMIN", - "ROLE_CONNECTUSER", - "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", - "ROLE_OUTDOOR_USER", - ], - "privacy": {"typeId": 2, "typeKey": "private"}, - "userPro": false, - "hasVideo": false, - "timeZoneId": 149, - "beginTimestamp": 1720093546000, - "sportTypeId": 1, - "avgPower": 413.0, - "maxPower": 475.0, - "aerobicTrainingEffect": 3.0, - "anaerobicTrainingEffect": 0.0, - "normPower": 416.0, - "avgVerticalOscillation": 9.880000305175782, - "avgGroundContactTime": 236.5, - "avgStrideLength": 127.95999755859376, - "vO2MaxValue": 60.0, - "avgVerticalRatio": 7.510000228881836, - "avgGroundContactBalance": 51.61000061035156, - "workoutId": 271119547, - "deviceId": 3472661486, - "minTemperature": 25.0, - "maxTemperature": 31.0, - "minElevation": 3.0, - "maxElevation": 7.0, - "maxDoubleCadence": 180.0, - "summarizedDiveInfo": {"summarizedDiveGases": []}, - "maxVerticalSpeed": 0.20000028610229495, - "manufacturer": "GARMIN", - "locationName": "Long Beach", - "lapCount": 6, - "endLatitude": 39.750206507742405, - "endLongitude": -74.1200394462794, - "waterEstimated": 652.0, - "minRespirationRate": 16.700000762939453, - "maxRespirationRate": 40.41999816894531, - "avgRespirationRate": 26.940000534057617, - "trainingEffectLabel": "AEROBIC_BASE", - "activityTrainingLoad": 89.67962646484375, - "minActivityLapDuration": 92.66699981689453, - "aerobicTrainingEffectMessage": "IMPROVING_AEROBIC_BASE_8", - "anaerobicTrainingEffectMessage": "NO_ANAEROBIC_BENEFIT_0", - "splitSummaries": [ - { - "noOfSplits": 1, - "totalAscent": 4.0, - "duration": 2351.343017578125, - "splitType": "INTERVAL_ACTIVE", - "numClimbSends": 0, - "maxElevationGain": 4.0, - "averageElevationGain": 4.0, - "maxDistance": 8373, - "distance": 8373.5595703125, - "averageSpeed": 3.561000108718872, - "maxSpeed": 3.7980000972747803, - "numFalls": 0, - "elevationLoss": 2.0, - }, - { - "noOfSplits": 1, - "totalAscent": 0.0, - "duration": 3.0, - "splitType": "RWD_STAND", - "numClimbSends": 0, - "maxElevationGain": 0.0, - "averageElevationGain": 0.0, - "maxDistance": 6, - "distance": 6.110000133514404, - "averageSpeed": 2.0369999408721924, - "maxSpeed": 1.3619999885559082, - "numFalls": 0, - "elevationLoss": 0.0, - }, - { - "noOfSplits": 1, - "totalAscent": 4.0, - "duration": 2351.19189453125, - "splitType": "RWD_RUN", - "numClimbSends": 0, - "maxElevationGain": 4.0, - "averageElevationGain": 4.0, - "maxDistance": 8367, - "distance": 8367.4501953125, - "averageSpeed": 3.559000015258789, - "maxSpeed": 3.7980000972747803, - "numFalls": 0, - "elevationLoss": 2.0, - }, - ], - "hasSplits": true, - "moderateIntensityMinutes": 35, - "vigorousIntensityMinutes": 0, - "avgGradeAdjustedSpeed": 3.562999963760376, - "differenceBodyBattery": -10, - "purposeful": false, - "manualActivity": false, - "pr": false, - "autoCalcCalories": false, - "elevationCorrected": false, - "atpActivity": false, - "favorite": false, - "decoDive": false, - "parent": false, - }, - { - "activityId": 16258207221, - "activityName": "Long Beach Running", - "startTimeLocal": "2024-07-05 09:28:26", - "startTimeGMT": "2024-07-05 13:28:26", - "activityType": { - "typeId": 1, - "typeKey": "running", - "parentTypeId": 17, - "isHidden": false, - "trimmable": true, - "restricted": false, - }, - "eventType": { - "typeId": 9, - "typeKey": "uncategorized", - "sortOrder": 10, - }, - "distance": 28973.609375, - "duration": 8030.9619140625, - "elapsedDuration": 8102.52685546875, - "movingDuration": 8027.666015625, - "elevationGain": 9.0, - "elevationLoss": 7.0, - "averageSpeed": 3.6080000400543213, - "maxSpeed": 3.9100000858306885, - "startLatitude": 39.750175746157765, - "startLongitude": -74.12008135579526, - "hasPolyline": true, - "hasImages": false, - "ownerId": "user_id: int", - "ownerDisplayName": "display_name", - "ownerFullName": "owner_name", - "ownerProfileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/7768ce88-bdf9-4ba3-a19f-74a1674b760f-user_id.png", - "ownerProfileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/d1f17694-b757-4434-818b-36224f064b67-user_id.png", - "ownerProfileImageUrlLarge": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/db7c55db-a9f9-40e2-af33-eef9dedecee4-user_id.png", - "calories": 2139.0, - "bmrCalories": 207.0, - "averageHR": 148.0, - "maxHR": 156.0, - "averageRunningCadenceInStepsPerMinute": 170.859375, - "maxRunningCadenceInStepsPerMinute": 182.0, - "steps": 22650, - "userRoles": [ - "SCOPE_GOLF_API_READ", - "SCOPE_ATP_READ", - "SCOPE_DIVE_API_WRITE", - "SCOPE_COMMUNITY_COURSE_ADMIN_READ", - "SCOPE_DIVE_API_READ", - "SCOPE_DI_OAUTH_2_CLIENT_READ", - "SCOPE_CONNECT_WRITE", - "SCOPE_COMMUNITY_COURSE_WRITE", - "SCOPE_MESSAGE_GENERATION_READ", - "SCOPE_DI_OAUTH_2_CLIENT_REVOCATION_ADMIN", - "SCOPE_CONNECT_WEB_TEMPLATE_RENDER", - "SCOPE_CONNECT_NON_SOCIAL_SHARED_READ", - "SCOPE_CONNECT_READ", - "SCOPE_DI_OAUTH_2_TOKEN_ADMIN", - "ROLE_CONNECTUSER", - "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", - "ROLE_OUTDOOR_USER", - ], - "privacy": {"typeId": 2, "typeKey": "private"}, - "userPro": false, - "hasVideo": false, - "timeZoneId": 149, - "beginTimestamp": 1720186106000, - "sportTypeId": 1, - "avgPower": 432.0, - "maxPower": 520.0, - "aerobicTrainingEffect": 4.300000190734863, - "anaerobicTrainingEffect": 0.0, - "normPower": 433.0, - "avgVerticalOscillation": 9.8, - "avgGroundContactTime": 240.5, - "avgStrideLength": 127.30000000000001, - "vO2MaxValue": 60.0, - "avgVerticalRatio": 7.46999979019165, - "avgGroundContactBalance": 54.040000915527344, - "deviceId": 3472661486, - "minTemperature": 27.0, - "maxTemperature": 29.0, - "minElevation": 2.5999999046325684, - "maxElevation": 8.199999809265137, - "maxDoubleCadence": 182.0, - "summarizedDiveInfo": {"summarizedDiveGases": []}, - "maxVerticalSpeed": 0.40000009536743164, - "manufacturer": "GARMIN", - "locationName": "Long Beach", - "lapCount": 19, - "endLatitude": 39.75011992268264, - "endLongitude": -74.12015100941062, - "waterEstimated": 2230.0, - "minRespirationRate": 15.739999771118164, - "maxRespirationRate": 42.810001373291016, - "avgRespirationRate": 29.559999465942383, - "trainingEffectLabel": "AEROBIC_BASE", - "activityTrainingLoad": 235.14840698242188, - "minActivityLapDuration": 1.315999984741211, - "aerobicTrainingEffectMessage": "HIGHLY_IMPROVING_AEROBIC_ENDURANCE_10", - "anaerobicTrainingEffectMessage": "NO_ANAEROBIC_BENEFIT_0", - "splitSummaries": [ - { - "noOfSplits": 1, - "totalAscent": 9.0, - "duration": 8030.9619140625, - "splitType": "INTERVAL_ACTIVE", - "numClimbSends": 0, - "maxElevationGain": 9.0, - "averageElevationGain": 9.0, - "maxDistance": 28973, - "distance": 28973.619140625, - "averageSpeed": 3.6080000400543213, - "maxSpeed": 3.9100000858306885, - "numFalls": 0, - "elevationLoss": 7.0, - }, - { - "noOfSplits": 1, - "totalAscent": 0.0, - "duration": 3.0, - "splitType": "RWD_STAND", - "numClimbSends": 0, - "maxElevationGain": 0.0, - "averageElevationGain": 0.0, - "maxDistance": 4, - "distance": 4.989999771118164, - "averageSpeed": 1.6629999876022339, - "maxSpeed": 1.4559999704360962, - "numFalls": 0, - "elevationLoss": 0.0, - }, - { - "noOfSplits": 3, - "totalAscent": 9.0, - "duration": 8026.0361328125, - "splitType": "RWD_RUN", - "numClimbSends": 0, - "maxElevationGain": 6.0, - "averageElevationGain": 3.0, - "maxDistance": 12667, - "distance": 28956.9609375, - "averageSpeed": 3.6080000400543213, - "maxSpeed": 3.9100000858306885, - "numFalls": 0, - "elevationLoss": 7.0, - }, - { - "noOfSplits": 2, - "totalAscent": 0.0, - "duration": 4.758999824523926, - "splitType": "RWD_WALK", - "numClimbSends": 0, - "maxElevationGain": 0.0, - "averageElevationGain": 0.0, - "maxDistance": 8, - "distance": 11.680000305175781, - "averageSpeed": 2.4539999961853027, - "maxSpeed": 1.222000002861023, - "numFalls": 0, - "elevationLoss": 0.0, - }, - ], - "hasSplits": true, - "moderateIntensityMinutes": 131, - "vigorousIntensityMinutes": 0, - "avgGradeAdjustedSpeed": 3.6059999465942383, - "differenceBodyBattery": -30, - "purposeful": false, - "manualActivity": false, - "pr": false, - "autoCalcCalories": false, - "elevationCorrected": false, - "atpActivity": false, - "favorite": false, - "decoDive": false, - "parent": false, - }, - { - "activityId": 16271956235, - "activityName": "Long Beach - Base", - "startTimeLocal": "2024-07-06 08:28:19", - "startTimeGMT": "2024-07-06 12:28:19", - "activityType": { - "typeId": 1, - "typeKey": "running", - "parentTypeId": 17, - "isHidden": false, - "trimmable": true, - "restricted": false, - }, - "eventType": { - "typeId": 9, - "typeKey": "uncategorized", - "sortOrder": 10, - }, - "distance": 7408.22998046875, - "duration": 2123.346923828125, - "elapsedDuration": 2123.346923828125, - "movingDuration": 2121.5660095214844, - "elevationGain": 5.0, - "elevationLoss": 38.0, - "averageSpeed": 3.4890000820159917, - "maxSpeed": 3.686000108718872, - "startLatitude": 39.750188402831554, - "startLongitude": -74.11999653093517, - "hasPolyline": true, - "hasImages": false, - "ownerId": "user_id: int", - "ownerDisplayName": "display_name", - "ownerFullName": "owner_name", - "ownerProfileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/7768ce88-bdf9-4ba3-a19f-74a1674b760f-user_id.png", - "ownerProfileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/d1f17694-b757-4434-818b-36224f064b67-user_id.png", - "ownerProfileImageUrlLarge": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/db7c55db-a9f9-40e2-af33-eef9dedecee4-user_id.png", - "calories": 558.0, - "bmrCalories": 55.0, - "averageHR": 141.0, - "maxHR": 149.0, - "averageRunningCadenceInStepsPerMinute": 166.859375, - "maxRunningCadenceInStepsPerMinute": 177.0, - "steps": 5832, - "userRoles": [ - "SCOPE_GOLF_API_READ", - "SCOPE_ATP_READ", - "SCOPE_DIVE_API_WRITE", - "SCOPE_COMMUNITY_COURSE_ADMIN_READ", - "SCOPE_DIVE_API_READ", - "SCOPE_DI_OAUTH_2_CLIENT_READ", - "SCOPE_CONNECT_WRITE", - "SCOPE_COMMUNITY_COURSE_WRITE", - "SCOPE_MESSAGE_GENERATION_READ", - "SCOPE_DI_OAUTH_2_CLIENT_REVOCATION_ADMIN", - "SCOPE_CONNECT_WEB_TEMPLATE_RENDER", - "SCOPE_CONNECT_NON_SOCIAL_SHARED_READ", - "SCOPE_CONNECT_READ", - "SCOPE_DI_OAUTH_2_TOKEN_ADMIN", - "ROLE_CONNECTUSER", - "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", - "ROLE_OUTDOOR_USER", - ], - "privacy": {"typeId": 2, "typeKey": "private"}, - "userPro": false, - "hasVideo": false, - "timeZoneId": 149, - "beginTimestamp": 1720268899000, - "sportTypeId": 1, - "avgPower": 409.0, - "maxPower": 478.0, - "aerobicTrainingEffect": 2.9000000953674316, - "anaerobicTrainingEffect": 0.0, - "normPower": 413.0, - "avgVerticalOscillation": 9.790000152587892, - "avgGroundContactTime": 243.8000030517578, - "avgStrideLength": 125.7800048828125, - "vO2MaxValue": 60.0, - "avgVerticalRatio": 7.559999942779541, - "avgGroundContactBalance": 52.72999954223633, - "deviceId": 3472661486, - "minTemperature": 27.0, - "maxTemperature": 30.0, - "minElevation": 1.2000000476837158, - "maxElevation": 5.800000190734863, - "maxDoubleCadence": 177.0, - "summarizedDiveInfo": {"summarizedDiveGases": []}, - "maxVerticalSpeed": 0.40000009536743164, - "manufacturer": "GARMIN", - "locationName": "Long Beach", - "lapCount": 5, - "endLatitude": 39.7502083517611, - "endLongitude": -74.1200505103916, - "waterEstimated": 589.0, - "minRespirationRate": 23.950000762939453, - "maxRespirationRate": 45.40999984741211, - "avgRespirationRate": 33.619998931884766, - "trainingEffectLabel": "AEROBIC_BASE", - "activityTrainingLoad": 81.58389282226562, - "minActivityLapDuration": 276.1619873046875, - "aerobicTrainingEffectMessage": "MAINTAINING_AEROBIC_FITNESS_1", - "anaerobicTrainingEffectMessage": "NO_ANAEROBIC_BENEFIT_0", - "splitSummaries": [ - { - "noOfSplits": 1, - "totalAscent": 5.0, - "duration": 2123.346923828125, - "splitType": "INTERVAL_ACTIVE", - "numClimbSends": 0, - "maxElevationGain": 5.0, - "averageElevationGain": 5.0, - "maxDistance": 7408, - "distance": 7408.240234375, - "averageSpeed": 3.489000082015991, - "maxSpeed": 3.686000108718872, - "numFalls": 0, - "elevationLoss": 38.0, - }, - { - "noOfSplits": 1, - "totalAscent": 0.0, - "duration": 3.000999927520752, - "splitType": "RWD_STAND", - "numClimbSends": 0, - "maxElevationGain": 0.0, - "averageElevationGain": 0.0, - "maxDistance": 3, - "distance": 3.9000000953674316, - "averageSpeed": 1.2999999523162842, - "maxSpeed": 0.0, - "numFalls": 0, - "elevationLoss": 0.0, - }, - { - "noOfSplits": 1, - "totalAscent": 5.0, - "duration": 2123.1708984375, - "splitType": "RWD_RUN", - "numClimbSends": 0, - "maxElevationGain": 5.0, - "averageElevationGain": 5.0, - "maxDistance": 7404, - "distance": 7404.33984375, - "averageSpeed": 3.486999988555908, - "maxSpeed": 3.686000108718872, - "numFalls": 0, - "elevationLoss": 38.0, - }, - ], - "hasSplits": true, - "moderateIntensityMinutes": 31, - "vigorousIntensityMinutes": 0, - "avgGradeAdjustedSpeed": 3.4860000610351562, - "differenceBodyBattery": -10, - "purposeful": false, - "manualActivity": false, - "pr": false, - "autoCalcCalories": false, - "elevationCorrected": false, - "atpActivity": false, - "favorite": false, - "decoDive": false, - "parent": false, - }, - { - "activityId": 16278290894, - "activityName": "Long Beach Kayaking", - "startTimeLocal": "2024-07-06 15:12:08", - "startTimeGMT": "2024-07-06 19:12:08", - "activityType": { - "typeId": 231, - "typeKey": "kayaking_v2", - "parentTypeId": 228, - "isHidden": false, - "trimmable": true, - "restricted": false, - }, - "eventType": { - "typeId": 9, - "typeKey": "uncategorized", - "sortOrder": 10, - }, - "distance": 2285.330078125, - "duration": 2198.8310546875, - "elapsedDuration": 2198.8310546875, - "movingDuration": 1654.0, - "elevationGain": 3.0, - "elevationLoss": 1.0, - "averageSpeed": 1.0390000343322754, - "maxSpeed": 1.968999981880188, - "startLatitude": 39.75069425068796, - "startLongitude": -74.12023625336587, - "hasPolyline": true, - "hasImages": false, - "ownerId": "user_id: int", - "ownerDisplayName": "display_name", - "ownerFullName": "owner_name", - "ownerProfileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/7768ce88-bdf9-4ba3-a19f-74a1674b760f-user_id.png", - "ownerProfileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/d1f17694-b757-4434-818b-36224f064b67-user_id.png", - "ownerProfileImageUrlLarge": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/db7c55db-a9f9-40e2-af33-eef9dedecee4-user_id.png", - "calories": 146.0, - "bmrCalories": 57.0, - "averageHR": 77.0, - "maxHR": 107.0, - "userRoles": [ - "SCOPE_GOLF_API_READ", - "SCOPE_ATP_READ", - "SCOPE_DIVE_API_WRITE", - "SCOPE_COMMUNITY_COURSE_ADMIN_READ", - "SCOPE_DIVE_API_READ", - "SCOPE_DI_OAUTH_2_CLIENT_READ", - "SCOPE_CONNECT_WRITE", - "SCOPE_COMMUNITY_COURSE_WRITE", - "SCOPE_MESSAGE_GENERATION_READ", - "SCOPE_DI_OAUTH_2_CLIENT_REVOCATION_ADMIN", - "SCOPE_CONNECT_WEB_TEMPLATE_RENDER", - "SCOPE_CONNECT_NON_SOCIAL_SHARED_READ", - "SCOPE_CONNECT_READ", - "SCOPE_DI_OAUTH_2_TOKEN_ADMIN", - "ROLE_CONNECTUSER", - "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", - "ROLE_OUTDOOR_USER", - ], - "privacy": {"typeId": 2, "typeKey": "private"}, - "userPro": false, - "hasVideo": false, - "timeZoneId": 149, - "beginTimestamp": 1720293128000, - "sportTypeId": 41, - "aerobicTrainingEffect": 0.10000000149011612, - "anaerobicTrainingEffect": 0.0, - "deviceId": 3472661486, - "minElevation": 1.2000000476837158, - "maxElevation": 3.5999999046325684, - "summarizedDiveInfo": {"summarizedDiveGases": []}, - "maxVerticalSpeed": 0.40000009536743164, - "manufacturer": "GARMIN", - "locationName": "Long Beach", - "lapCount": 1, - "endLatitude": 39.75058360956609, - "endLongitude": -74.12024606019258, - "waterEstimated": 345.0, - "trainingEffectLabel": "UNKNOWN", - "activityTrainingLoad": 2.1929931640625, - "minActivityLapDuration": 2198.8310546875, - "aerobicTrainingEffectMessage": "NO_AEROBIC_BENEFIT_18", - "anaerobicTrainingEffectMessage": "NO_ANAEROBIC_BENEFIT_0", - "splitSummaries": [], - "hasSplits": false, - "differenceBodyBattery": -3, - "purposeful": false, - "manualActivity": false, - "pr": false, - "autoCalcCalories": false, - "elevationCorrected": false, - "atpActivity": false, - "favorite": false, - "decoDive": false, - "parent": false, - }, - { - "activityId": 16279951766, - "activityName": "Long Beach Cycling", - "startTimeLocal": "2024-07-06 19:55:27", - "startTimeGMT": "2024-07-06 23:55:27", - "activityType": { - "typeId": 2, - "typeKey": "cycling", - "parentTypeId": 17, - "isHidden": false, - "trimmable": true, - "restricted": false, - }, - "eventType": { - "typeId": 9, - "typeKey": "uncategorized", - "sortOrder": 10, - }, - "distance": 15816.48046875, - "duration": 2853.280029296875, - "elapsedDuration": 2853.280029296875, - "movingDuration": 2850.14404296875, - "elevationGain": 8.0, - "elevationLoss": 6.0, - "averageSpeed": 5.543000221252441, - "maxSpeed": 7.146999835968018, - "startLatitude": 39.75072040222585, - "startLongitude": -74.11923930980265, - "hasPolyline": true, - "hasImages": false, - "ownerId": "user_id: int", - "ownerDisplayName": "display_name", - "ownerFullName": "owner_name", - "ownerProfileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/7768ce88-bdf9-4ba3-a19f-74a1674b760f-user_id.png", - "ownerProfileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/d1f17694-b757-4434-818b-36224f064b67-user_id.png", - "ownerProfileImageUrlLarge": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/db7c55db-a9f9-40e2-af33-eef9dedecee4-user_id.png", - "calories": 414.0, - "bmrCalories": 74.0, - "averageHR": 112.0, - "maxHR": 129.0, - "userRoles": [ - "SCOPE_GOLF_API_READ", - "SCOPE_ATP_READ", - "SCOPE_DIVE_API_WRITE", - "SCOPE_COMMUNITY_COURSE_ADMIN_READ", - "SCOPE_DIVE_API_READ", - "SCOPE_DI_OAUTH_2_CLIENT_READ", - "SCOPE_CONNECT_WRITE", - "SCOPE_COMMUNITY_COURSE_WRITE", - "SCOPE_MESSAGE_GENERATION_READ", - "SCOPE_DI_OAUTH_2_CLIENT_REVOCATION_ADMIN", - "SCOPE_CONNECT_WEB_TEMPLATE_RENDER", - "SCOPE_CONNECT_NON_SOCIAL_SHARED_READ", - "SCOPE_CONNECT_READ", - "SCOPE_DI_OAUTH_2_TOKEN_ADMIN", - "ROLE_CONNECTUSER", - "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", - "ROLE_OUTDOOR_USER", - ], - "privacy": {"typeId": 2, "typeKey": "private"}, - "userPro": false, - "hasVideo": false, - "timeZoneId": 149, - "beginTimestamp": 1720310127000, - "sportTypeId": 2, - "aerobicTrainingEffect": 1.2999999523162842, - "anaerobicTrainingEffect": 0.0, - "deviceId": 3472661486, - "minElevation": 2.4000000953674316, - "maxElevation": 5.800000190734863, - "summarizedDiveInfo": {"summarizedDiveGases": []}, - "maxVerticalSpeed": 0.7999999523162843, - "manufacturer": "GARMIN", - "locationName": "Long Beach", - "lapCount": 2, - "endLatitude": 39.750200640410185, - "endLongitude": -74.12000114098191, - "waterEstimated": 442.0, - "trainingEffectLabel": "RECOVERY", - "activityTrainingLoad": 18.74017333984375, - "minActivityLapDuration": 1378.135986328125, - "aerobicTrainingEffectMessage": "RECOVERY_5", - "anaerobicTrainingEffectMessage": "NO_ANAEROBIC_BENEFIT_0", - "splitSummaries": [], - "hasSplits": false, - "moderateIntensityMinutes": 22, - "vigorousIntensityMinutes": 0, - "differenceBodyBattery": -3, - "purposeful": false, - "manualActivity": false, - "pr": false, - "autoCalcCalories": false, - "elevationCorrected": false, - "atpActivity": false, - "favorite": false, - "decoDive": false, - "parent": false, - }, - { - "activityId": 16287285483, - "activityName": "Long Beach Running", - "startTimeLocal": "2024-07-07 07:19:09", - "startTimeGMT": "2024-07-07 11:19:09", - "activityType": { - "typeId": 1, - "typeKey": "running", - "parentTypeId": 17, - "isHidden": false, - "trimmable": true, - "restricted": false, - }, - "eventType": { - "typeId": 9, - "typeKey": "uncategorized", - "sortOrder": 10, - }, - "distance": 9866.7802734375, - "duration": 2516.8779296875, - "elapsedDuration": 2547.64794921875, - "movingDuration": 2514.3160095214844, - "elevationGain": 6.0, - "elevationLoss": 3.0, - "averageSpeed": 3.9200000762939458, - "maxSpeed": 4.48799991607666, - "startLatitude": 39.75016954354942, - "startLongitude": -74.1200158931315, - "hasPolyline": true, - "hasImages": false, - "ownerId": "user_id: int", - "ownerDisplayName": "display_name", - "ownerFullName": "owner_name", - "ownerProfileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/7768ce88-bdf9-4ba3-a19f-74a1674b760f-user_id.png", - "ownerProfileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/d1f17694-b757-4434-818b-36224f064b67-user_id.png", - "ownerProfileImageUrlLarge": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/db7c55db-a9f9-40e2-af33-eef9dedecee4-user_id.png", - "calories": 722.0, - "bmrCalories": 65.0, - "averageHR": 152.0, - "maxHR": 166.0, - "averageRunningCadenceInStepsPerMinute": 175.265625, - "maxRunningCadenceInStepsPerMinute": 186.0, - "steps": 7290, - "userRoles": [ - "SCOPE_GOLF_API_READ", - "SCOPE_ATP_READ", - "SCOPE_DIVE_API_WRITE", - "SCOPE_COMMUNITY_COURSE_ADMIN_READ", - "SCOPE_DIVE_API_READ", - "SCOPE_DI_OAUTH_2_CLIENT_READ", - "SCOPE_CONNECT_WRITE", - "SCOPE_COMMUNITY_COURSE_WRITE", - "SCOPE_MESSAGE_GENERATION_READ", - "SCOPE_DI_OAUTH_2_CLIENT_REVOCATION_ADMIN", - "SCOPE_CONNECT_WEB_TEMPLATE_RENDER", - "SCOPE_CONNECT_NON_SOCIAL_SHARED_READ", - "SCOPE_CONNECT_READ", - "SCOPE_DI_OAUTH_2_TOKEN_ADMIN", - "ROLE_CONNECTUSER", - "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", - "ROLE_OUTDOOR_USER", - ], - "privacy": {"typeId": 2, "typeKey": "private"}, - "userPro": false, - "hasVideo": false, - "timeZoneId": 149, - "beginTimestamp": 1720351149000, - "sportTypeId": 1, - "avgPower": 432.0, - "maxPower": 515.0, - "aerobicTrainingEffect": 3.5, - "anaerobicTrainingEffect": 0.0, - "normPower": 436.0, - "avgVerticalOscillation": 9.040000152587892, - "avgGroundContactTime": 228.0, - "avgStrideLength": 134.25999755859377, - "vO2MaxValue": 60.0, - "avgVerticalRatio": 6.579999923706055, - "avgGroundContactBalance": 54.38999938964844, - "deviceId": 3472661486, - "minTemperature": 28.0, - "maxTemperature": 32.0, - "minElevation": 2.5999999046325684, - "maxElevation": 6.199999809265137, - "maxDoubleCadence": 186.0, - "summarizedDiveInfo": {"summarizedDiveGases": []}, - "maxVerticalSpeed": 0.40000009536743164, - "manufacturer": "GARMIN", - "locationName": "Long Beach", - "lapCount": 7, - "endLatitude": 39.75026350468397, - "endLongitude": -74.12007171660662, - "waterEstimated": 698.0, - "minRespirationRate": 18.989999771118164, - "maxRespirationRate": 41.900001525878906, - "avgRespirationRate": 33.88999938964844, - "trainingEffectLabel": "LACTATE_THRESHOLD", - "activityTrainingLoad": 143.64161682128906, - "minActivityLapDuration": 152.44200134277344, - "aerobicTrainingEffectMessage": "IMPROVING_LACTATE_THRESHOLD_12", - "anaerobicTrainingEffectMessage": "NO_ANAEROBIC_BENEFIT_0", - "splitSummaries": [ - { - "noOfSplits": 1, - "totalAscent": 0.0, - "duration": 3.000999927520752, - "splitType": "RWD_STAND", - "numClimbSends": 0, - "maxElevationGain": 0.0, - "averageElevationGain": 0.0, - "maxDistance": 3, - "distance": 3.7899999618530273, - "averageSpeed": 1.2630000114440918, - "maxSpeed": 0.7179999947547913, - "numFalls": 0, - "elevationLoss": 0.0, - }, - { - "noOfSplits": 1, - "totalAscent": 6.0, - "duration": 2516.8779296875, - "splitType": "INTERVAL_ACTIVE", - "numClimbSends": 0, - "maxElevationGain": 6.0, - "averageElevationGain": 2.0, - "maxDistance": 9866, - "distance": 9866.7802734375, - "averageSpeed": 3.9200000762939453, - "maxSpeed": 4.48799991607666, - "numFalls": 0, - "elevationLoss": 3.0, - }, - { - "noOfSplits": 2, - "totalAscent": 6.0, - "duration": 2516.760986328125, - "splitType": "RWD_RUN", - "numClimbSends": 0, - "maxElevationGain": 4.0, - "averageElevationGain": 3.0, - "maxDistance": 6614, - "distance": 9862.990234375, - "averageSpeed": 3.9189999103546143, - "maxSpeed": 4.48799991607666, - "numFalls": 0, - "elevationLoss": 3.0, - }, - ], - "hasSplits": true, - "moderateIntensityMinutes": 26, - "vigorousIntensityMinutes": 14, - "avgGradeAdjustedSpeed": 3.9110000133514404, - "differenceBodyBattery": -12, - "purposeful": false, - "manualActivity": false, - "pr": false, - "autoCalcCalories": false, - "elevationCorrected": false, - "atpActivity": false, - "favorite": false, - "decoDive": false, - "parent": false, - }, - ], - "filter": { - "userProfileId": "user_id: int", - "includedPrivacyList": [], - "excludeUntitled": false, - }, - "requestorRelationship": "SELF", - } - } - }, - }, - { - "query": { - "query": 'query{healthSnapshotScalar(startDate:"2024-07-02", endDate:"2024-07-08")}' - }, - "response": {"data": {"healthSnapshotScalar": []}}, - }, - { - "query": { - "query": 'query{golfScorecardScalar(startTimestampLocal:"2024-07-02T00:00:00.00", endTimestampLocal:"2024-07-08T23:59:59.999")}' - }, - "response": {"data": {"golfScorecardScalar": []}}, - }, - { - "query": { - "query": 'query{weightScalar(startDate:"2024-07-02", endDate:"2024-07-08")}' - }, - "response": { - "data": { - "weightScalar": { - "dailyWeightSummaries": [ - { - "summaryDate": "2024-07-08", - "numOfWeightEntries": 1, - "minWeight": 82372.0, - "maxWeight": 82372.0, - "latestWeight": { - "samplePk": 1720435190064, - "date": 1720396800000, - "calendarDate": "2024-07-08", - "weight": 82372.0, - "bmi": null, - "bodyFat": null, - "bodyWater": null, - "boneMass": null, - "muscleMass": null, - "physiqueRating": null, - "visceralFat": null, - "metabolicAge": null, - "sourceType": "MFP", - "timestampGMT": 1720435137000, - "weightDelta": 907.18474, - }, - "allWeightMetrics": [], - }, - { - "summaryDate": "2024-07-02", - "numOfWeightEntries": 1, - "minWeight": 81465.0, - "maxWeight": 81465.0, - "latestWeight": { - "samplePk": 1719915378494, - "date": 1719878400000, - "calendarDate": "2024-07-02", - "weight": 81465.0, - "bmi": null, - "bodyFat": null, - "bodyWater": null, - "boneMass": null, - "muscleMass": null, - "physiqueRating": null, - "visceralFat": null, - "metabolicAge": null, - "sourceType": "MFP", - "timestampGMT": 1719915025000, - "weightDelta": 816.4662659999923, - }, - "allWeightMetrics": [], - }, - ], - "totalAverage": { - "from": 1719878400000, - "until": 1720483199999, - "weight": 81918.5, - "bmi": null, - "bodyFat": null, - "bodyWater": null, - "boneMass": null, - "muscleMass": null, - "physiqueRating": null, - "visceralFat": null, - "metabolicAge": null, - }, - "previousDateWeight": { - "samplePk": 1719828202070, - "date": 1719792000000, - "calendarDate": "2024-07-01", - "weight": 80648.0, - "bmi": null, - "bodyFat": null, - "bodyWater": null, - "boneMass": null, - "muscleMass": null, - "physiqueRating": null, - "visceralFat": null, - "metabolicAge": null, - "sourceType": "MFP", - "timestampGMT": 1719828107000, - "weightDelta": null, - }, - "nextDateWeight": { - "samplePk": null, - "date": null, - "calendarDate": null, - "weight": null, - "bmi": null, - "bodyFat": null, - "bodyWater": null, - "boneMass": null, - "muscleMass": null, - "physiqueRating": null, - "visceralFat": null, - "metabolicAge": null, - "sourceType": null, - "timestampGMT": null, - "weightDelta": null, - }, - } - } - }, - }, - { - "query": { - "query": 'query{bloodPressureScalar(startDate:"2024-07-02", endDate:"2024-07-08")}' - }, - "response": { - "data": { - "bloodPressureScalar": { - "from": "2024-07-02", - "until": "2024-07-08", - "measurementSummaries": [], - "categoryStats": null, - } - } - }, - }, - { - "query": { - "query": 'query{sleepSummariesScalar(startDate:"2024-06-11", endDate:"2024-07-08")}' - }, - "response": { - "data": { - "sleepSummariesScalar": [ - { - "id": 1718072795000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-11", - "sleepTimeSeconds": 28800, - "napTimeSeconds": 1200, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1718072795000, - "sleepEndTimestampGMT": 1718101835000, - "sleepStartTimestampLocal": 1718058395000, - "sleepEndTimestampLocal": 1718087435000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 6060, - "lightSleepSeconds": 16380, - "remSleepSeconds": 6360, - "awakeSleepSeconds": 240, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 95.0, - "lowestSpO2Value": 85, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 43.0, - "averageRespirationValue": 15.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 23.0, - "awakeCount": 0, - "avgSleepStress": 13.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_OPTIMAL_STRUCTURE", - "sleepScoreInsight": "POSITIVE_EXERCISE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": { - "value": 96, - "qualifierKey": "EXCELLENT", - }, - "remPercentage": { - "value": 22, - "qualifierKey": "GOOD", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 6048.0, - "idealEndInSeconds": 8928.0, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 57, - "qualifierKey": "EXCELLENT", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8640.0, - "idealEndInSeconds": 18432.0, - }, - "deepPercentage": { - "value": 21, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4608.0, - "idealEndInSeconds": 9504.0, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-11", - "deviceId": 3472661486, - "timestampGmt": "2024-06-10T22:10:37", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-12", - "deviceId": 3472661486, - "timestampGmt": "2024-06-11T21:40:17", - "baseline": 480, - "actual": 460, - "feedback": "DECREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "dailyNapDTOS": [ - { - "userProfilePK": "user_id: int", - "deviceId": 3472661486, - "calendarDate": "2024-06-11", - "napTimeSec": 1200, - "napStartTimestampGMT": "2024-06-11T20:00:58", - "napEndTimestampGMT": "2024-06-11T20:20:58", - "napFeedback": "IDEAL_DURATION_LOW_NEED", - "napSource": 1, - "napStartTimeOffset": -240, - "napEndTimeOffset": -240, - } - ], - }, - { - "id": 1718160434000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-12", - "sleepTimeSeconds": 28320, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1718160434000, - "sleepEndTimestampGMT": 1718188874000, - "sleepStartTimestampLocal": 1718146034000, - "sleepEndTimestampLocal": 1718174474000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 6540, - "lightSleepSeconds": 18060, - "remSleepSeconds": 3720, - "awakeSleepSeconds": 120, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 95.0, - "lowestSpO2Value": 86, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 45.0, - "averageRespirationValue": 14.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 22.0, - "awakeCount": 0, - "avgSleepStress": 13.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_DEEP", - "sleepScoreInsight": "POSITIVE_EXERCISE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 89, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 13, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5947.2, - "idealEndInSeconds": 8779.2, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 64, - "qualifierKey": "GOOD", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8496.0, - "idealEndInSeconds": 18124.8, - }, - "deepPercentage": { - "value": 23, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4531.2, - "idealEndInSeconds": 9345.6, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-12", - "deviceId": 3472661486, - "timestampGmt": "2024-06-11T21:40:17", - "baseline": 480, - "actual": 460, - "feedback": "DECREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-13", - "deviceId": 3472661486, - "timestampGmt": "2024-06-12T20:13:31", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - }, - { - "id": 1718245530000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-13", - "sleepTimeSeconds": 26820, - "napTimeSeconds": 2400, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1718245530000, - "sleepEndTimestampGMT": 1718273790000, - "sleepStartTimestampLocal": 1718231130000, - "sleepEndTimestampLocal": 1718259390000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 3960, - "lightSleepSeconds": 18120, - "remSleepSeconds": 4740, - "awakeSleepSeconds": 1440, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 94.0, - "lowestSpO2Value": 84, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 46.0, - "averageRespirationValue": 14.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 21.0, - "awakeCount": 2, - "avgSleepStress": 16.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_CALM", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 82, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 18, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5632.2, - "idealEndInSeconds": 8314.2, - }, - "restlessness": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 68, - "qualifierKey": "FAIR", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8046.0, - "idealEndInSeconds": 17164.8, - }, - "deepPercentage": { - "value": 15, - "qualifierKey": "FAIR", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4291.2, - "idealEndInSeconds": 8850.6, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-13", - "deviceId": 3472661486, - "timestampGmt": "2024-06-12T20:13:31", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-14", - "deviceId": 3472661486, - "timestampGmt": "2024-06-14T01:47:53", - "baseline": 480, - "actual": 460, - "feedback": "DECREASED", - "trainingFeedback": "DAILY_ACTIVITY_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "dailyNapDTOS": [ - { - "userProfilePK": "user_id: int", - "deviceId": 3472661486, - "calendarDate": "2024-06-13", - "napTimeSec": 2400, - "napStartTimestampGMT": "2024-06-13T18:06:33", - "napEndTimestampGMT": "2024-06-13T18:46:33", - "napFeedback": "LONG_DURATION_LOW_NEED", - "napSource": 1, - "napStartTimeOffset": -240, - "napEndTimeOffset": -240, - } - ], - }, - { - "id": 1718332508000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-14", - "sleepTimeSeconds": 27633, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1718332508000, - "sleepEndTimestampGMT": 1718361041000, - "sleepStartTimestampLocal": 1718318108000, - "sleepEndTimestampLocal": 1718346641000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 4500, - "lightSleepSeconds": 19620, - "remSleepSeconds": 3540, - "awakeSleepSeconds": 900, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 94.0, - "lowestSpO2Value": 87, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 47.0, - "averageRespirationValue": 14.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 22.0, - "awakeCount": 1, - "avgSleepStress": 19.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_CONTINUOUS", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 81, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 13, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5802.93, - "idealEndInSeconds": 8566.23, - }, - "restlessness": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 71, - "qualifierKey": "FAIR", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8289.9, - "idealEndInSeconds": 17685.12, - }, - "deepPercentage": { - "value": 16, - "qualifierKey": "GOOD", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4421.28, - "idealEndInSeconds": 9118.89, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-14", - "deviceId": 3472661486, - "timestampGmt": "2024-06-14T01:47:53", - "baseline": 480, - "actual": 460, - "feedback": "DECREASED", - "trainingFeedback": "DAILY_ACTIVITY_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-15", - "deviceId": 3472661486, - "timestampGmt": "2024-06-14T10:30:42", - "baseline": 480, - "actual": 500, - "feedback": "INCREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - }, - { - "id": 1718417681000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-15", - "sleepTimeSeconds": 30344, - "napTimeSeconds": 2699, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1718417681000, - "sleepEndTimestampGMT": 1718448085000, - "sleepStartTimestampLocal": 1718403281000, - "sleepEndTimestampLocal": 1718433685000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 4680, - "lightSleepSeconds": 17520, - "remSleepSeconds": 8160, - "awakeSleepSeconds": 60, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 94.0, - "lowestSpO2Value": 83, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 48.0, - "averageRespirationValue": 16.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 23.0, - "awakeCount": 0, - "avgSleepStress": 21.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_REFRESHING", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 86, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 27, - "qualifierKey": "EXCELLENT", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 6372.24, - "idealEndInSeconds": 9406.64, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 58, - "qualifierKey": "EXCELLENT", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 9103.2, - "idealEndInSeconds": 19420.16, - }, - "deepPercentage": { - "value": 15, - "qualifierKey": "FAIR", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4855.04, - "idealEndInSeconds": 10013.52, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-15", - "deviceId": 3472661486, - "timestampGmt": "2024-06-14T10:30:42", - "baseline": 480, - "actual": 500, - "feedback": "INCREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-16", - "deviceId": 3472661486, - "timestampGmt": "2024-06-15T20:30:37", - "baseline": 480, - "actual": 440, - "feedback": "DECREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "dailyNapDTOS": [ - { - "userProfilePK": "user_id: int", - "deviceId": 3472661486, - "calendarDate": "2024-06-15", - "napTimeSec": 2699, - "napStartTimestampGMT": "2024-06-15T19:45:37", - "napEndTimestampGMT": "2024-06-15T20:30:36", - "napFeedback": "LATE_TIMING_LONG_DURATION_LOW_NEED", - "napSource": 1, - "napStartTimeOffset": -240, - "napEndTimeOffset": -240, - } - ], - }, - { - "id": 1718503447000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-16", - "sleepTimeSeconds": 30400, - "napTimeSeconds": 2700, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1718503447000, - "sleepEndTimestampGMT": 1718533847000, - "sleepStartTimestampLocal": 1718489047000, - "sleepEndTimestampLocal": 1718519447000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 7020, - "lightSleepSeconds": 18240, - "remSleepSeconds": 5160, - "awakeSleepSeconds": 0, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 94.0, - "lowestSpO2Value": 83, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 48.0, - "averageRespirationValue": 17.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 25.0, - "awakeCount": 0, - "avgSleepStress": 16.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_DEEP", - "sleepScoreInsight": "POSITIVE_EXERCISE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 89, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 17, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 6384.0, - "idealEndInSeconds": 9424.0, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 60, - "qualifierKey": "GOOD", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 9120.0, - "idealEndInSeconds": 19456.0, - }, - "deepPercentage": { - "value": 23, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4864.0, - "idealEndInSeconds": 10032.0, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-16", - "deviceId": 3472661486, - "timestampGmt": "2024-06-15T20:30:37", - "baseline": 480, - "actual": 440, - "feedback": "DECREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-17", - "deviceId": 3472661486, - "timestampGmt": "2024-06-16T23:55:04", - "baseline": 480, - "actual": 430, - "feedback": "DECREASED", - "trainingFeedback": "DAILY_ACTIVITY_AND_CHRONIC", - "sleepHistoryAdjustment": "DECREASING", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "dailyNapDTOS": [ - { - "userProfilePK": "user_id: int", - "deviceId": 3472661486, - "calendarDate": "2024-06-16", - "napTimeSec": 2700, - "napStartTimestampGMT": "2024-06-16T18:05:20", - "napEndTimestampGMT": "2024-06-16T18:50:20", - "napFeedback": "IDEAL_TIMING_LONG_DURATION_LOW_NEED", - "napSource": 1, - "napStartTimeOffset": -240, - "napEndTimeOffset": -240, - } - ], - }, - { - "id": 1718593410000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-17", - "sleepTimeSeconds": 29700, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1718593410000, - "sleepEndTimestampGMT": 1718623230000, - "sleepStartTimestampLocal": 1718579010000, - "sleepEndTimestampLocal": 1718608830000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 4200, - "lightSleepSeconds": 20400, - "remSleepSeconds": 5100, - "awakeSleepSeconds": 120, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 93.0, - "lowestSpO2Value": 82, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 44.0, - "averageRespirationValue": 15.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 24.0, - "awakeCount": 0, - "avgSleepStress": 9.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_HIGHLY_RECOVERING", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": { - "value": 91, - "qualifierKey": "EXCELLENT", - }, - "remPercentage": { - "value": 17, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 6237.0, - "idealEndInSeconds": 9207.0, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 69, - "qualifierKey": "FAIR", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8910.0, - "idealEndInSeconds": 19008.0, - }, - "deepPercentage": { - "value": 14, - "qualifierKey": "FAIR", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4752.0, - "idealEndInSeconds": 9801.0, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-17", - "deviceId": 3472661486, - "timestampGmt": "2024-06-16T23:55:04", - "baseline": 480, - "actual": 430, - "feedback": "DECREASED", - "trainingFeedback": "DAILY_ACTIVITY_AND_CHRONIC", - "sleepHistoryAdjustment": "DECREASING", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-18", - "deviceId": 3472661486, - "timestampGmt": "2024-06-17T11:20:35", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - }, - { - "id": 1718680773000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-18", - "sleepTimeSeconds": 26760, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1718680773000, - "sleepEndTimestampGMT": 1718708853000, - "sleepStartTimestampLocal": 1718666373000, - "sleepEndTimestampLocal": 1718694453000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 2640, - "lightSleepSeconds": 19860, - "remSleepSeconds": 4260, - "awakeSleepSeconds": 1320, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 93.0, - "lowestSpO2Value": 85, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 47.0, - "averageRespirationValue": 15.0, - "lowestRespirationValue": 9.0, - "highestRespirationValue": 24.0, - "awakeCount": 2, - "avgSleepStress": 15.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_CALM", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 82, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 16, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5619.6, - "idealEndInSeconds": 8295.6, - }, - "restlessness": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 74, - "qualifierKey": "FAIR", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8028.0, - "idealEndInSeconds": 17126.4, - }, - "deepPercentage": { - "value": 10, - "qualifierKey": "FAIR", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4281.6, - "idealEndInSeconds": 8830.8, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-18", - "deviceId": 3472661486, - "timestampGmt": "2024-06-17T11:20:35", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-19", - "deviceId": 3472661486, - "timestampGmt": "2024-06-18T12:47:48", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_NO_ADJUSTMENTS", - "trainingFeedback": "NO_CHANGE", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - }, - { - "id": 1718764726000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-19", - "sleepTimeSeconds": 28740, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1718764726000, - "sleepEndTimestampGMT": 1718793946000, - "sleepStartTimestampLocal": 1718750326000, - "sleepEndTimestampLocal": 1718779546000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 780, - "lightSleepSeconds": 23760, - "remSleepSeconds": 4200, - "awakeSleepSeconds": 480, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 93.0, - "lowestSpO2Value": 87, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 44.0, - "averageRespirationValue": 15.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 23.0, - "awakeCount": 0, - "avgSleepStress": 13.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "NEGATIVE_LONG_BUT_LIGHT", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 70, "qualifierKey": "FAIR"}, - "remPercentage": { - "value": 15, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 6035.4, - "idealEndInSeconds": 8909.4, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 83, - "qualifierKey": "POOR", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8622.0, - "idealEndInSeconds": 18393.6, - }, - "deepPercentage": { - "value": 3, - "qualifierKey": "POOR", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4598.4, - "idealEndInSeconds": 9484.2, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-19", - "deviceId": 3472661486, - "timestampGmt": "2024-06-18T12:47:48", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_NO_ADJUSTMENTS", - "trainingFeedback": "NO_CHANGE", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-20", - "deviceId": 3472661486, - "timestampGmt": "2024-06-19T12:01:35", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_NO_ADJUSTMENTS", - "trainingFeedback": "NO_CHANGE", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - }, - { - "id": 1718849432000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-20", - "sleepTimeSeconds": 28740, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1718849432000, - "sleepEndTimestampGMT": 1718878292000, - "sleepStartTimestampLocal": 1718835032000, - "sleepEndTimestampLocal": 1718863892000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 6240, - "lightSleepSeconds": 18960, - "remSleepSeconds": 3540, - "awakeSleepSeconds": 120, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 94.0, - "lowestSpO2Value": 86, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 46.0, - "averageRespirationValue": 15.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 23.0, - "awakeCount": 0, - "avgSleepStress": 23.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_DEEP", - "sleepScoreInsight": "POSITIVE_EXERCISE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 81, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 12, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 6035.4, - "idealEndInSeconds": 8909.4, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 66, - "qualifierKey": "FAIR", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8622.0, - "idealEndInSeconds": 18393.6, - }, - "deepPercentage": { - "value": 22, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4598.4, - "idealEndInSeconds": 9484.2, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-20", - "deviceId": 3472661486, - "timestampGmt": "2024-06-19T12:01:35", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_NO_ADJUSTMENTS", - "trainingFeedback": "NO_CHANGE", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-21", - "deviceId": 3472661486, - "timestampGmt": "2024-06-20T22:19:56", - "baseline": 480, - "actual": 500, - "feedback": "INCREASED", - "trainingFeedback": "TODAYS_LOAD_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - }, - { - "id": 1718936034000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-21", - "sleepTimeSeconds": 27352, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1718936034000, - "sleepEndTimestampGMT": 1718964346000, - "sleepStartTimestampLocal": 1718921634000, - "sleepEndTimestampLocal": 1718949946000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 3240, - "lightSleepSeconds": 20580, - "remSleepSeconds": 3540, - "awakeSleepSeconds": 960, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 94.0, - "lowestSpO2Value": 85, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 45.0, - "averageRespirationValue": 17.0, - "lowestRespirationValue": 10.0, - "highestRespirationValue": 24.0, - "awakeCount": 1, - "avgSleepStress": 14.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_RECOVERING", - "sleepScoreInsight": "POSITIVE_RESTFUL_EVENING", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 82, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 13, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5743.92, - "idealEndInSeconds": 8479.12, - }, - "restlessness": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 75, - "qualifierKey": "FAIR", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8205.6, - "idealEndInSeconds": 17505.28, - }, - "deepPercentage": { - "value": 12, - "qualifierKey": "FAIR", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4376.32, - "idealEndInSeconds": 9026.16, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-21", - "deviceId": 3472661486, - "timestampGmt": "2024-06-20T22:19:56", - "baseline": 480, - "actual": 500, - "feedback": "INCREASED", - "trainingFeedback": "TODAYS_LOAD_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-22", - "deviceId": 3472661486, - "timestampGmt": "2024-06-21T11:50:20", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_NO_ADJUSTMENTS", - "trainingFeedback": "NO_CHANGE", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - }, - { - "id": 1719023238000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-22", - "sleepTimeSeconds": 29520, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1719023238000, - "sleepEndTimestampGMT": 1719054198000, - "sleepStartTimestampLocal": 1719008838000, - "sleepEndTimestampLocal": 1719039798000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 7260, - "lightSleepSeconds": 16620, - "remSleepSeconds": 5640, - "awakeSleepSeconds": 1440, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 96.0, - "lowestSpO2Value": 88, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 44.0, - "averageRespirationValue": 16.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 23.0, - "awakeCount": 1, - "avgSleepStress": 16.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_DEEP", - "sleepScoreInsight": "POSITIVE_EXERCISE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 88, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 19, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 6199.2, - "idealEndInSeconds": 9151.2, - }, - "restlessness": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 56, - "qualifierKey": "EXCELLENT", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8856.0, - "idealEndInSeconds": 18892.8, - }, - "deepPercentage": { - "value": 25, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4723.2, - "idealEndInSeconds": 9741.6, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-22", - "deviceId": 3472661486, - "timestampGmt": "2024-06-21T11:50:20", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_NO_ADJUSTMENTS", - "trainingFeedback": "NO_CHANGE", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-23", - "deviceId": 3472661486, - "timestampGmt": "2024-06-23T02:32:45", - "baseline": 480, - "actual": 520, - "feedback": "INCREASED", - "trainingFeedback": "DAILY_ACTIVITY_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - }, - { - "id": 1719116021000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-23", - "sleepTimeSeconds": 27600, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1719116021000, - "sleepEndTimestampGMT": 1719143801000, - "sleepStartTimestampLocal": 1719101621000, - "sleepEndTimestampLocal": 1719129401000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 5400, - "lightSleepSeconds": 20220, - "remSleepSeconds": 1980, - "awakeSleepSeconds": 180, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 93.0, - "lowestSpO2Value": 81, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 49.0, - "averageRespirationValue": 13.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 23.0, - "awakeCount": 0, - "avgSleepStress": 14.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "NEGATIVE_LONG_BUT_NOT_ENOUGH_REM", - "sleepScoreInsight": "NEGATIVE_STRENUOUS_EXERCISE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 76, "qualifierKey": "FAIR"}, - "remPercentage": { - "value": 7, - "qualifierKey": "POOR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5796.0, - "idealEndInSeconds": 8556.0, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 73, - "qualifierKey": "FAIR", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8280.0, - "idealEndInSeconds": 17664.0, - }, - "deepPercentage": { - "value": 20, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4416.0, - "idealEndInSeconds": 9108.0, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-23", - "deviceId": 3472661486, - "timestampGmt": "2024-06-23T02:32:45", - "baseline": 480, - "actual": 520, - "feedback": "INCREASED", - "trainingFeedback": "DAILY_ACTIVITY_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-24", - "deviceId": 3472661486, - "timestampGmt": "2024-06-24T01:27:51", - "baseline": 480, - "actual": 500, - "feedback": "INCREASED", - "trainingFeedback": "DAILY_ACTIVITY_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - }, - { - "id": 1719197080000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-24", - "sleepTimeSeconds": 30120, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1719197080000, - "sleepEndTimestampGMT": 1719227680000, - "sleepStartTimestampLocal": 1719182680000, - "sleepEndTimestampLocal": 1719213280000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 7680, - "lightSleepSeconds": 15900, - "remSleepSeconds": 6540, - "awakeSleepSeconds": 480, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 93.0, - "lowestSpO2Value": 81, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 42.0, - "averageRespirationValue": 15.0, - "lowestRespirationValue": 9.0, - "highestRespirationValue": 21.0, - "awakeCount": 0, - "avgSleepStress": 12.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_OPTIMAL_STRUCTURE", - "sleepScoreInsight": "POSITIVE_EXERCISE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": { - "value": 96, - "qualifierKey": "EXCELLENT", - }, - "remPercentage": { - "value": 22, - "qualifierKey": "GOOD", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 6325.2, - "idealEndInSeconds": 9337.2, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 53, - "qualifierKey": "EXCELLENT", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 9036.0, - "idealEndInSeconds": 19276.8, - }, - "deepPercentage": { - "value": 25, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4819.2, - "idealEndInSeconds": 9939.6, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-24", - "deviceId": 3472661486, - "timestampGmt": "2024-06-24T01:27:51", - "baseline": 480, - "actual": 500, - "feedback": "INCREASED", - "trainingFeedback": "DAILY_ACTIVITY_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-25", - "deviceId": 3472661486, - "timestampGmt": "2024-06-24T11:25:44", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - }, - { - "id": 1719287383000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-25", - "sleepTimeSeconds": 24660, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1719287383000, - "sleepEndTimestampGMT": 1719313063000, - "sleepStartTimestampLocal": 1719272983000, - "sleepEndTimestampLocal": 1719298663000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 5760, - "lightSleepSeconds": 13620, - "remSleepSeconds": 5280, - "awakeSleepSeconds": 1020, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 93.0, - "lowestSpO2Value": 85, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 43.0, - "averageRespirationValue": 12.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 21.0, - "awakeCount": 2, - "avgSleepStress": 13.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_DEEP", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "FAIR", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 81, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 21, - "qualifierKey": "GOOD", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5178.6, - "idealEndInSeconds": 7644.6, - }, - "restlessness": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 55, - "qualifierKey": "EXCELLENT", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 7398.0, - "idealEndInSeconds": 15782.4, - }, - "deepPercentage": { - "value": 23, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 3945.6, - "idealEndInSeconds": 8137.8, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-25", - "deviceId": 3472661486, - "timestampGmt": "2024-06-24T11:25:44", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-26", - "deviceId": 3472661486, - "timestampGmt": "2024-06-25T23:16:07", - "baseline": 480, - "actual": 500, - "feedback": "INCREASED", - "trainingFeedback": "TODAYS_LOAD_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - }, - { - "id": 1719367204000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-26", - "sleepTimeSeconds": 30044, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1719367204000, - "sleepEndTimestampGMT": 1719397548000, - "sleepStartTimestampLocal": 1719352804000, - "sleepEndTimestampLocal": 1719383148000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 4680, - "lightSleepSeconds": 21900, - "remSleepSeconds": 3480, - "awakeSleepSeconds": 300, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 94.0, - "lowestSpO2Value": 81, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 43.0, - "averageRespirationValue": 15.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 24.0, - "awakeCount": 0, - "avgSleepStress": 10.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_RECOVERING", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 88, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 12, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 6309.24, - "idealEndInSeconds": 9313.64, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 73, - "qualifierKey": "FAIR", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 9013.2, - "idealEndInSeconds": 19228.16, - }, - "deepPercentage": { - "value": 16, - "qualifierKey": "FAIR", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4807.04, - "idealEndInSeconds": 9914.52, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-26", - "deviceId": 3472661486, - "timestampGmt": "2024-06-25T23:16:07", - "baseline": 480, - "actual": 500, - "feedback": "INCREASED", - "trainingFeedback": "TODAYS_LOAD_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-27", - "deviceId": 3472661486, - "timestampGmt": "2024-06-26T16:04:42", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - }, - { - "id": 1719455799000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-27", - "sleepTimeSeconds": 29520, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1719455799000, - "sleepEndTimestampGMT": 1719485739000, - "sleepStartTimestampLocal": 1719441399000, - "sleepEndTimestampLocal": 1719471339000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 6540, - "lightSleepSeconds": 17820, - "remSleepSeconds": 5160, - "awakeSleepSeconds": 420, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 93.0, - "lowestSpO2Value": 82, - "highestSpO2Value": 99, - "averageSpO2HRSleep": 44.0, - "averageRespirationValue": 15.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 24.0, - "awakeCount": 0, - "avgSleepStress": 17.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_DEEP", - "sleepScoreInsight": "POSITIVE_RESTFUL_DAY", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 89, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 17, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 6199.2, - "idealEndInSeconds": 9151.2, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 60, - "qualifierKey": "GOOD", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8856.0, - "idealEndInSeconds": 18892.8, - }, - "deepPercentage": { - "value": 22, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4723.2, - "idealEndInSeconds": 9741.6, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-27", - "deviceId": 3472661486, - "timestampGmt": "2024-06-26T16:04:42", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-28", - "deviceId": 3472661486, - "timestampGmt": "2024-06-27T19:47:12", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - }, - { - "id": 1719541869000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-28", - "sleepTimeSeconds": 26700, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1719541869000, - "sleepEndTimestampGMT": 1719569769000, - "sleepStartTimestampLocal": 1719527469000, - "sleepEndTimestampLocal": 1719555369000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 5700, - "lightSleepSeconds": 15720, - "remSleepSeconds": 5280, - "awakeSleepSeconds": 1200, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 94.0, - "lowestSpO2Value": 87, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 43.0, - "averageRespirationValue": 15.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 20.0, - "awakeCount": 1, - "avgSleepStress": 12.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_DEEP", - "sleepScoreInsight": "POSITIVE_EXERCISE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "GOOD", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 87, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 20, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5607.0, - "idealEndInSeconds": 8277.0, - }, - "restlessness": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 59, - "qualifierKey": "GOOD", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8010.0, - "idealEndInSeconds": 17088.0, - }, - "deepPercentage": { - "value": 21, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4272.0, - "idealEndInSeconds": 8811.0, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-28", - "deviceId": 3472661486, - "timestampGmt": "2024-06-27T19:47:12", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-29", - "deviceId": 3472661486, - "timestampGmt": "2024-06-28T17:34:41", - "baseline": 480, - "actual": 500, - "feedback": "INCREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - }, - { - "id": 1719629318000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-29", - "sleepTimeSeconds": 27213, - "napTimeSeconds": 3600, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1719629318000, - "sleepEndTimestampGMT": 1719656591000, - "sleepStartTimestampLocal": 1719614918000, - "sleepEndTimestampLocal": 1719642191000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 4560, - "lightSleepSeconds": 14700, - "remSleepSeconds": 7980, - "awakeSleepSeconds": 60, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 93.0, - "lowestSpO2Value": 84, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 42.0, - "averageRespirationValue": 13.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 20.0, - "awakeCount": 0, - "avgSleepStress": 9.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_HIGHLY_RECOVERING", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "GOOD", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": { - "value": 92, - "qualifierKey": "EXCELLENT", - }, - "remPercentage": { - "value": 29, - "qualifierKey": "EXCELLENT", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5714.73, - "idealEndInSeconds": 8436.03, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 54, - "qualifierKey": "EXCELLENT", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8163.9, - "idealEndInSeconds": 17416.32, - }, - "deepPercentage": { - "value": 17, - "qualifierKey": "GOOD", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4354.08, - "idealEndInSeconds": 8980.29, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-29", - "deviceId": 3472661486, - "timestampGmt": "2024-06-28T17:34:41", - "baseline": 480, - "actual": 500, - "feedback": "INCREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-30", - "deviceId": 3472661486, - "timestampGmt": "2024-06-30T02:02:28", - "baseline": 480, - "actual": 440, - "feedback": "DECREASED", - "trainingFeedback": "TODAYS_LOAD_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "dailyNapDTOS": [ - { - "userProfilePK": "user_id: int", - "deviceId": 3472661486, - "calendarDate": "2024-06-29", - "napTimeSec": 3600, - "napStartTimestampGMT": "2024-06-29T18:53:28", - "napEndTimestampGMT": "2024-06-29T19:53:28", - "napFeedback": "LATE_TIMING_LONG_DURATION_LOW_NEED", - "napSource": 1, - "napStartTimeOffset": -240, - "napEndTimeOffset": -240, - } - ], - }, - { - "id": 1719714951000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-30", - "sleepTimeSeconds": 27180, - "napTimeSeconds": 3417, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1719714951000, - "sleepEndTimestampGMT": 1719743511000, - "sleepStartTimestampLocal": 1719700551000, - "sleepEndTimestampLocal": 1719729111000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 5640, - "lightSleepSeconds": 18900, - "remSleepSeconds": 2640, - "awakeSleepSeconds": 1380, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 92.0, - "lowestSpO2Value": 82, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 45.0, - "averageRespirationValue": 13.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 23.0, - "awakeCount": 1, - "avgSleepStress": 16.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "NEGATIVE_LONG_BUT_NOT_ENOUGH_REM", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "GOOD", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 79, "qualifierKey": "FAIR"}, - "remPercentage": { - "value": 10, - "qualifierKey": "POOR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5707.8, - "idealEndInSeconds": 8425.8, - }, - "restlessness": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 70, - "qualifierKey": "FAIR", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8154.0, - "idealEndInSeconds": 17395.2, - }, - "deepPercentage": { - "value": 21, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4348.8, - "idealEndInSeconds": 8969.4, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-30", - "deviceId": 3472661486, - "timestampGmt": "2024-06-30T02:02:28", - "baseline": 480, - "actual": 440, - "feedback": "DECREASED", - "trainingFeedback": "TODAYS_LOAD_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-01", - "deviceId": 3472661486, - "timestampGmt": "2024-06-30T18:38:49", - "baseline": 480, - "actual": 450, - "feedback": "DECREASED", - "trainingFeedback": "TODAYS_LOAD_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "dailyNapDTOS": [ - { - "userProfilePK": "user_id: int", - "deviceId": 3472661486, - "calendarDate": "2024-06-30", - "napTimeSec": 3417, - "napStartTimestampGMT": "2024-06-30T17:41:52", - "napEndTimestampGMT": "2024-06-30T18:38:49", - "napFeedback": "IDEAL_TIMING_LONG_DURATION_LOW_NEED", - "napSource": 1, - "napStartTimeOffset": -240, - "napEndTimeOffset": -240, - } - ], - }, - { - "id": 1719800738000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-01", - "sleepTimeSeconds": 26280, - "napTimeSeconds": 3300, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1719800738000, - "sleepEndTimestampGMT": 1719827798000, - "sleepStartTimestampLocal": 1719786338000, - "sleepEndTimestampLocal": 1719813398000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 6360, - "lightSleepSeconds": 16320, - "remSleepSeconds": 3600, - "awakeSleepSeconds": 780, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 96.0, - "lowestSpO2Value": 86, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 41.0, - "averageRespirationValue": 14.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 22.0, - "awakeCount": 1, - "avgSleepStress": 12.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_DEEP", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 89, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 14, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5518.8, - "idealEndInSeconds": 8146.8, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 62, - "qualifierKey": "GOOD", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 7884.0, - "idealEndInSeconds": 16819.2, - }, - "deepPercentage": { - "value": 24, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4204.8, - "idealEndInSeconds": 8672.4, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-01", - "deviceId": 3472661486, - "timestampGmt": "2024-06-30T18:38:49", - "baseline": 480, - "actual": 450, - "feedback": "DECREASED", - "trainingFeedback": "TODAYS_LOAD_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-02", - "deviceId": 3472661486, - "timestampGmt": "2024-07-01T18:54:21", - "baseline": 480, - "actual": 450, - "feedback": "DECREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "dailyNapDTOS": [ - { - "userProfilePK": "user_id: int", - "deviceId": 3472661486, - "calendarDate": "2024-07-01", - "napTimeSec": 3300, - "napStartTimestampGMT": "2024-07-01T17:59:21", - "napEndTimestampGMT": "2024-07-01T18:54:21", - "napFeedback": "IDEAL_TIMING_LONG_DURATION_LOW_NEED", - "napSource": 1, - "napStartTimeOffset": -240, - "napEndTimeOffset": -240, - } - ], - }, - { - "id": 1719885617000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-02", - "sleepTimeSeconds": 28440, - "napTimeSeconds": 3600, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1719885617000, - "sleepEndTimestampGMT": 1719914117000, - "sleepStartTimestampLocal": 1719871217000, - "sleepEndTimestampLocal": 1719899717000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 6300, - "lightSleepSeconds": 15960, - "remSleepSeconds": 6180, - "awakeSleepSeconds": 60, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 96.0, - "lowestSpO2Value": 86, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 41.0, - "averageRespirationValue": 13.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 23.0, - "awakeCount": 0, - "avgSleepStress": 11.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_OPTIMAL_STRUCTURE", - "sleepScoreInsight": "POSITIVE_EXERCISE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": { - "value": 97, - "qualifierKey": "EXCELLENT", - }, - "remPercentage": { - "value": 22, - "qualifierKey": "GOOD", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5972.4, - "idealEndInSeconds": 8816.4, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 56, - "qualifierKey": "EXCELLENT", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8532.0, - "idealEndInSeconds": 18201.6, - }, - "deepPercentage": { - "value": 22, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4550.4, - "idealEndInSeconds": 9385.2, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-02", - "deviceId": 3472661486, - "timestampGmt": "2024-07-01T18:54:21", - "baseline": 480, - "actual": 450, - "feedback": "DECREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-03", - "deviceId": 3472661486, - "timestampGmt": "2024-07-02T17:17:49", - "baseline": 480, - "actual": 420, - "feedback": "DECREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "dailyNapDTOS": [ - { - "userProfilePK": "user_id: int", - "deviceId": 3472661486, - "calendarDate": "2024-07-02", - "napTimeSec": 3600, - "napStartTimestampGMT": "2024-07-02T16:17:48", - "napEndTimestampGMT": "2024-07-02T17:17:48", - "napFeedback": "IDEAL_TIMING_LONG_DURATION_LOW_NEED", - "napSource": 1, - "napStartTimeOffset": -240, - "napEndTimeOffset": -240, - } - ], - }, - { - "id": 1719980934000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-03", - "sleepTimeSeconds": 23940, - "napTimeSeconds": 2700, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1719980934000, - "sleepEndTimestampGMT": 1720005294000, - "sleepStartTimestampLocal": 1719966534000, - "sleepEndTimestampLocal": 1719990894000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 4260, - "lightSleepSeconds": 16140, - "remSleepSeconds": 3540, - "awakeSleepSeconds": 420, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 94.0, - "lowestSpO2Value": 84, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 42.0, - "averageRespirationValue": 14.0, - "lowestRespirationValue": 9.0, - "highestRespirationValue": 23.0, - "awakeCount": 0, - "avgSleepStress": 12.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_CONTINUOUS", - "sleepScoreInsight": "POSITIVE_EXERCISE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "FAIR", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 83, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 15, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5027.4, - "idealEndInSeconds": 7421.4, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 67, - "qualifierKey": "FAIR", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 7182.0, - "idealEndInSeconds": 15321.6, - }, - "deepPercentage": { - "value": 18, - "qualifierKey": "GOOD", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 3830.4, - "idealEndInSeconds": 7900.2, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-03", - "deviceId": 3472661486, - "timestampGmt": "2024-07-02T17:17:49", - "baseline": 480, - "actual": 420, - "feedback": "DECREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-04", - "deviceId": 3472661486, - "timestampGmt": "2024-07-03T20:30:09", - "baseline": 480, - "actual": 460, - "feedback": "DECREASED", - "trainingFeedback": "TODAYS_LOAD_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "dailyNapDTOS": [ - { - "userProfilePK": "user_id: int", - "deviceId": 3472661486, - "calendarDate": "2024-07-03", - "napTimeSec": 2700, - "napStartTimestampGMT": "2024-07-03T19:45:08", - "napEndTimestampGMT": "2024-07-03T20:30:08", - "napFeedback": "LATE_TIMING_LONG_DURATION_LOW_NEED", - "napSource": 1, - "napStartTimeOffset": -240, - "napEndTimeOffset": -240, - } - ], - }, - { - "id": 1720066612000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-04", - "sleepTimeSeconds": 25860, - "napTimeSeconds": 1199, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1720066612000, - "sleepEndTimestampGMT": 1720092712000, - "sleepStartTimestampLocal": 1720052212000, - "sleepEndTimestampLocal": 1720078312000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 4860, - "lightSleepSeconds": 16440, - "remSleepSeconds": 4560, - "awakeSleepSeconds": 240, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 95.0, - "lowestSpO2Value": 88, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 45.0, - "averageRespirationValue": 16.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 25.0, - "awakeCount": 0, - "avgSleepStress": 16.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_CONTINUOUS", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 89, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 18, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5430.6, - "idealEndInSeconds": 8016.6, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 64, - "qualifierKey": "GOOD", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 7758.0, - "idealEndInSeconds": 16550.4, - }, - "deepPercentage": { - "value": 19, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4137.6, - "idealEndInSeconds": 8533.8, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-04", - "deviceId": 3472661486, - "timestampGmt": "2024-07-03T20:30:09", - "baseline": 480, - "actual": 460, - "feedback": "DECREASED", - "trainingFeedback": "TODAYS_LOAD_AND_CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-05", - "deviceId": 3472661486, - "timestampGmt": "2024-07-04T18:52:50", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "dailyNapDTOS": [ - { - "userProfilePK": "user_id: int", - "deviceId": 3472661486, - "calendarDate": "2024-07-04", - "napTimeSec": 1199, - "napStartTimestampGMT": "2024-07-04T18:32:50", - "napEndTimestampGMT": "2024-07-04T18:52:49", - "napFeedback": "IDEAL_TIMING_IDEAL_DURATION_LOW_NEED", - "napSource": 1, - "napStartTimeOffset": -240, - "napEndTimeOffset": -240, - } - ], - }, - { - "id": 1720146625000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-05", - "sleepTimeSeconds": 32981, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1720146625000, - "sleepEndTimestampGMT": 1720180146000, - "sleepStartTimestampLocal": 1720132225000, - "sleepEndTimestampLocal": 1720165746000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 5880, - "lightSleepSeconds": 22740, - "remSleepSeconds": 4380, - "awakeSleepSeconds": 540, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 95.0, - "lowestSpO2Value": 84, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 45.0, - "averageRespirationValue": 14.0, - "lowestRespirationValue": 9.0, - "highestRespirationValue": 23.0, - "awakeCount": 0, - "avgSleepStress": 13.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_CONTINUOUS", - "sleepScoreInsight": "POSITIVE_EXERCISE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 89, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 13, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 6926.01, - "idealEndInSeconds": 10224.11, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 69, - "qualifierKey": "FAIR", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 9894.3, - "idealEndInSeconds": 21107.84, - }, - "deepPercentage": { - "value": 18, - "qualifierKey": "GOOD", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 5276.96, - "idealEndInSeconds": 10883.73, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-05", - "deviceId": 3472661486, - "timestampGmt": "2024-07-04T18:52:50", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "DECREASING", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-06", - "deviceId": 3472661486, - "timestampGmt": "2024-07-05T15:45:39", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "TODAYS_LOAD_AND_CHRONIC", - "sleepHistoryAdjustment": "DECREASING", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - }, - { - "id": 1720235015000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-06", - "sleepTimeSeconds": 29760, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1720235015000, - "sleepEndTimestampGMT": 1720265435000, - "sleepStartTimestampLocal": 1720220615000, - "sleepEndTimestampLocal": 1720251035000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 4020, - "lightSleepSeconds": 22200, - "remSleepSeconds": 3540, - "awakeSleepSeconds": 660, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 94.0, - "lowestSpO2Value": 86, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 47.0, - "averageRespirationValue": 14.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 23.0, - "awakeCount": 1, - "avgSleepStress": 16.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_CONTINUOUS", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 83, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 12, - "qualifierKey": "FAIR", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 6249.6, - "idealEndInSeconds": 9225.6, - }, - "restlessness": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 75, - "qualifierKey": "FAIR", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8928.0, - "idealEndInSeconds": 19046.4, - }, - "deepPercentage": { - "value": 14, - "qualifierKey": "FAIR", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4761.6, - "idealEndInSeconds": 9820.8, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-06", - "deviceId": 3472661486, - "timestampGmt": "2024-07-05T15:45:39", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "TODAYS_LOAD_AND_CHRONIC", - "sleepHistoryAdjustment": "DECREASING", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-07", - "deviceId": 3472661486, - "timestampGmt": "2024-07-07T00:44:08", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - }, - { - "id": 1720323004000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-07", - "sleepTimeSeconds": 25114, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1720323004000, - "sleepEndTimestampGMT": 1720349138000, - "sleepStartTimestampLocal": 1720308604000, - "sleepEndTimestampLocal": 1720334738000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 4260, - "lightSleepSeconds": 15420, - "remSleepSeconds": 5460, - "awakeSleepSeconds": 1020, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 95.0, - "lowestSpO2Value": 87, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 44.0, - "averageRespirationValue": 13.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 22.0, - "awakeCount": 1, - "avgSleepStress": 12.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_CALM", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "FAIR", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 83, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 22, - "qualifierKey": "GOOD", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 5273.94, - "idealEndInSeconds": 7785.34, - }, - "restlessness": { - "qualifierKey": "GOOD", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 61, - "qualifierKey": "GOOD", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 7534.2, - "idealEndInSeconds": 16072.96, - }, - "deepPercentage": { - "value": 17, - "qualifierKey": "GOOD", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4018.24, - "idealEndInSeconds": 8287.62, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-07", - "deviceId": 3472661486, - "timestampGmt": "2024-07-07T00:44:08", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-08", - "deviceId": 3472661486, - "timestampGmt": "2024-07-07T12:03:49", - "baseline": 480, - "actual": 500, - "feedback": "INCREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - }, - { - "id": 1720403925000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-08", - "sleepTimeSeconds": 29580, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1720403925000, - "sleepEndTimestampGMT": 1720434105000, - "sleepStartTimestampLocal": 1720389525000, - "sleepEndTimestampLocal": 1720419705000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 6360, - "lightSleepSeconds": 16260, - "remSleepSeconds": 6960, - "awakeSleepSeconds": 600, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 95.0, - "lowestSpO2Value": 89, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 42.0, - "averageRespirationValue": 14.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 21.0, - "awakeCount": 1, - "avgSleepStress": 20.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_DEEP", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 89, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 24, - "qualifierKey": "EXCELLENT", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 6211.8, - "idealEndInSeconds": 9169.8, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 55, - "qualifierKey": "EXCELLENT", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8874.0, - "idealEndInSeconds": 18931.2, - }, - "deepPercentage": { - "value": 22, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4732.8, - "idealEndInSeconds": 9761.4, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-08", - "deviceId": 3472661486, - "timestampGmt": "2024-07-07T12:03:49", - "baseline": 480, - "actual": 500, - "feedback": "INCREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-09", - "deviceId": 3472661486, - "timestampGmt": "2024-07-08T13:33:50", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - }, - ] - } - }, - }, - { - "query": { - "query": 'query{heartRateVariabilityScalar(startDate:"2024-06-11", endDate:"2024-07-08")}' - }, - "response": { - "data": { - "heartRateVariabilityScalar": { - "hrvSummaries": [ - { - "calendarDate": "2024-06-11", - "weeklyAvg": 58, - "lastNightAvg": 64, - "lastNight5MinHigh": 98, - "baseline": { - "lowUpper": 47, - "balancedLow": 51, - "balancedUpper": 72, - "markerValue": 0.4166565, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_6", - "createTimeStamp": "2024-06-11T10:33:35.355", - }, - { - "calendarDate": "2024-06-12", - "weeklyAvg": 57, - "lastNightAvg": 56, - "lastNight5MinHigh": 91, - "baseline": { - "lowUpper": 47, - "balancedLow": 51, - "balancedUpper": 72, - "markerValue": 0.39285278, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_7", - "createTimeStamp": "2024-06-12T10:43:40.422", - }, - { - "calendarDate": "2024-06-13", - "weeklyAvg": 59, - "lastNightAvg": 54, - "lastNight5MinHigh": 117, - "baseline": { - "lowUpper": 46, - "balancedLow": 51, - "balancedUpper": 72, - "markerValue": 0.44047546, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_8", - "createTimeStamp": "2024-06-13T10:24:54.374", - }, - { - "calendarDate": "2024-06-14", - "weeklyAvg": 59, - "lastNightAvg": 48, - "lastNight5MinHigh": 79, - "baseline": { - "lowUpper": 46, - "balancedLow": 50, - "balancedUpper": 72, - "markerValue": 0.45454407, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_3", - "createTimeStamp": "2024-06-14T10:35:53.767", - }, - { - "calendarDate": "2024-06-15", - "weeklyAvg": 57, - "lastNightAvg": 50, - "lastNight5MinHigh": 106, - "baseline": { - "lowUpper": 46, - "balancedLow": 51, - "balancedUpper": 72, - "markerValue": 0.39285278, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_3", - "createTimeStamp": "2024-06-15T10:41:34.861", - }, - { - "calendarDate": "2024-06-16", - "weeklyAvg": 58, - "lastNightAvg": 64, - "lastNight5MinHigh": 110, - "baseline": { - "lowUpper": 47, - "balancedLow": 51, - "balancedUpper": 72, - "markerValue": 0.4166565, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_7", - "createTimeStamp": "2024-06-16T10:31:30.613", - }, - { - "calendarDate": "2024-06-17", - "weeklyAvg": 59, - "lastNightAvg": 78, - "lastNight5MinHigh": 126, - "baseline": { - "lowUpper": 47, - "balancedLow": 51, - "balancedUpper": 73, - "markerValue": 0.43180847, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_8", - "createTimeStamp": "2024-06-17T11:34:58.64", - }, - { - "calendarDate": "2024-06-18", - "weeklyAvg": 59, - "lastNightAvg": 65, - "lastNight5MinHigh": 90, - "baseline": { - "lowUpper": 47, - "balancedLow": 51, - "balancedUpper": 73, - "markerValue": 0.43180847, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_5", - "createTimeStamp": "2024-06-18T11:12:34.991", - }, - { - "calendarDate": "2024-06-19", - "weeklyAvg": 60, - "lastNightAvg": 65, - "lastNight5MinHigh": 114, - "baseline": { - "lowUpper": 47, - "balancedLow": 51, - "balancedUpper": 73, - "markerValue": 0.45454407, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_6", - "createTimeStamp": "2024-06-19T10:48:54.401", - }, - { - "calendarDate": "2024-06-20", - "weeklyAvg": 58, - "lastNightAvg": 43, - "lastNight5MinHigh": 71, - "baseline": { - "lowUpper": 47, - "balancedLow": 51, - "balancedUpper": 73, - "markerValue": 0.40908813, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_3", - "createTimeStamp": "2024-06-20T10:17:59.241", - }, - { - "calendarDate": "2024-06-21", - "weeklyAvg": 60, - "lastNightAvg": 62, - "lastNight5MinHigh": 86, - "baseline": { - "lowUpper": 47, - "balancedLow": 51, - "balancedUpper": 72, - "markerValue": 0.46427917, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_8", - "createTimeStamp": "2024-06-21T10:06:40.223", - }, - { - "calendarDate": "2024-06-22", - "weeklyAvg": 62, - "lastNightAvg": 59, - "lastNight5MinHigh": 92, - "baseline": { - "lowUpper": 47, - "balancedLow": 51, - "balancedUpper": 72, - "markerValue": 0.51190186, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_5", - "createTimeStamp": "2024-06-22T11:08:16.381", - }, - { - "calendarDate": "2024-06-23", - "weeklyAvg": 62, - "lastNightAvg": 69, - "lastNight5MinHigh": 94, - "baseline": { - "lowUpper": 47, - "balancedLow": 51, - "balancedUpper": 72, - "markerValue": 0.51190186, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_6", - "createTimeStamp": "2024-06-23T11:57:54.770", - }, - { - "calendarDate": "2024-06-24", - "weeklyAvg": 61, - "lastNightAvg": 67, - "lastNight5MinHigh": 108, - "baseline": { - "lowUpper": 47, - "balancedLow": 52, - "balancedUpper": 73, - "markerValue": 0.46427917, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_2", - "createTimeStamp": "2024-06-24T11:53:55.689", - }, - { - "calendarDate": "2024-06-25", - "weeklyAvg": 60, - "lastNightAvg": 59, - "lastNight5MinHigh": 84, - "baseline": { - "lowUpper": 47, - "balancedLow": 52, - "balancedUpper": 74, - "markerValue": 0.43180847, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_8", - "createTimeStamp": "2024-06-25T11:23:04.158", - }, - { - "calendarDate": "2024-06-26", - "weeklyAvg": 61, - "lastNightAvg": 74, - "lastNight5MinHigh": 114, - "baseline": { - "lowUpper": 48, - "balancedLow": 52, - "balancedUpper": 74, - "markerValue": 0.45454407, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_5", - "createTimeStamp": "2024-06-26T10:25:59.977", - }, - { - "calendarDate": "2024-06-27", - "weeklyAvg": 64, - "lastNightAvg": 58, - "lastNight5MinHigh": 118, - "baseline": { - "lowUpper": 47, - "balancedLow": 52, - "balancedUpper": 74, - "markerValue": 0.52272034, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_6", - "createTimeStamp": "2024-06-27T11:00:34.905", - }, - { - "calendarDate": "2024-06-28", - "weeklyAvg": 65, - "lastNightAvg": 70, - "lastNight5MinHigh": 106, - "baseline": { - "lowUpper": 47, - "balancedLow": 52, - "balancedUpper": 74, - "markerValue": 0.5454407, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_7", - "createTimeStamp": "2024-06-28T10:21:44.856", - }, - { - "calendarDate": "2024-06-29", - "weeklyAvg": 67, - "lastNightAvg": 71, - "lastNight5MinHigh": 166, - "baseline": { - "lowUpper": 48, - "balancedLow": 52, - "balancedUpper": 73, - "markerValue": 0.60713196, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_8", - "createTimeStamp": "2024-06-29T10:24:15.636", - }, - { - "calendarDate": "2024-06-30", - "weeklyAvg": 65, - "lastNightAvg": 57, - "lastNight5MinHigh": 99, - "baseline": { - "lowUpper": 48, - "balancedLow": 52, - "balancedUpper": 74, - "markerValue": 0.5454407, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_2", - "createTimeStamp": "2024-06-30T11:08:14.932", - }, - { - "calendarDate": "2024-07-01", - "weeklyAvg": 65, - "lastNightAvg": 68, - "lastNight5MinHigh": 108, - "baseline": { - "lowUpper": 48, - "balancedLow": 52, - "balancedUpper": 74, - "markerValue": 0.5454407, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_2", - "createTimeStamp": "2024-07-01T09:58:02.551", - }, - { - "calendarDate": "2024-07-02", - "weeklyAvg": 66, - "lastNightAvg": 70, - "lastNight5MinHigh": 122, - "baseline": { - "lowUpper": 48, - "balancedLow": 52, - "balancedUpper": 74, - "markerValue": 0.56817627, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_2", - "createTimeStamp": "2024-07-02T09:58:09.417", - }, - { - "calendarDate": "2024-07-03", - "weeklyAvg": 65, - "lastNightAvg": 66, - "lastNight5MinHigh": 105, - "baseline": { - "lowUpper": 48, - "balancedLow": 53, - "balancedUpper": 75, - "markerValue": 0.52272034, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_2", - "createTimeStamp": "2024-07-03T11:17:55.863", - }, - { - "calendarDate": "2024-07-04", - "weeklyAvg": 66, - "lastNightAvg": 62, - "lastNight5MinHigh": 94, - "baseline": { - "lowUpper": 48, - "balancedLow": 53, - "balancedUpper": 74, - "markerValue": 0.5595093, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_2", - "createTimeStamp": "2024-07-04T11:33:18.634", - }, - { - "calendarDate": "2024-07-05", - "weeklyAvg": 66, - "lastNightAvg": 69, - "lastNight5MinHigh": 114, - "baseline": { - "lowUpper": 49, - "balancedLow": 53, - "balancedUpper": 75, - "markerValue": 0.5454407, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_6", - "createTimeStamp": "2024-07-05T11:49:13.497", - }, - { - "calendarDate": "2024-07-06", - "weeklyAvg": 68, - "lastNightAvg": 83, - "lastNight5MinHigh": 143, - "baseline": { - "lowUpper": 49, - "balancedLow": 53, - "balancedUpper": 75, - "markerValue": 0.5908966, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_2", - "createTimeStamp": "2024-07-06T11:32:05.710", - }, - { - "calendarDate": "2024-07-07", - "weeklyAvg": 70, - "lastNightAvg": 73, - "lastNight5MinHigh": 117, - "baseline": { - "lowUpper": 49, - "balancedLow": 53, - "balancedUpper": 75, - "markerValue": 0.63635254, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_8", - "createTimeStamp": "2024-07-07T10:46:31.459", - }, - { - "calendarDate": "2024-07-08", - "weeklyAvg": 68, - "lastNightAvg": 53, - "lastNight5MinHigh": 105, - "baseline": { - "lowUpper": 49, - "balancedLow": 53, - "balancedUpper": 75, - "markerValue": 0.5908966, - }, - "status": "BALANCED", - "feedbackPhrase": "HRV_BALANCED_5", - "createTimeStamp": "2024-07-08T10:25:55.940", - }, - ], - "userProfilePk": "user_id: int", - } - } - }, - }, - { - "query": { - "query": 'query{userDailySummaryV2Scalar(startDate:"2024-06-11", endDate:"2024-07-08")}' - }, - "response": { - "data": { - "userDailySummaryV2Scalar": { - "data": [ - { - "uuid": "367dd1c0-87d9-4203-9e16-9243f8918f0f", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-11", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-11T04:00:00.0", - "startTimestampLocal": "2024-06-11T00:00:00.0", - "endTimestampGmt": "2024-06-12T04:00:00.0", - "endTimestampLocal": "2024-06-12T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 23540, - "value": 27303, - "distanceInMeters": 28657.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 54, - "distanceInMeters": 163.5, - }, - "floorsDescended": { - "value": 55, - "distanceInMeters": 167.74, - }, - }, - "calories": { - "burnedResting": 2214, - "burnedActive": 1385, - "burnedTotal": 3599, - "consumedGoal": 1780, - "consumedValue": 3585, - "consumedRemaining": 14, - }, - "heartRate": { - "minValue": 38, - "maxValue": 171, - "restingValue": 39, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 1, - "vigorous": 63, - }, - "stress": { - "avgLevel": 18, - "maxLevel": 92, - "restProportion": 0.5, - "activityProportion": 0.26, - "uncategorizedProportion": 0.12, - "lowStressProportion": 0.09, - "mediumStressProportion": 0.02, - "highStressProportion": 0.01, - "qualifier": "balanced", - "totalDurationInMillis": 84660000, - "restDurationInMillis": 42720000, - "activityDurationInMillis": 21660000, - "uncategorizedDurationInMillis": 10380000, - "lowStressDurationInMillis": 7680000, - "mediumStressDurationInMillis": 1680000, - "highStressDurationInMillis": 540000, - }, - "bodyBattery": { - "minValue": 29, - "maxValue": 100, - "chargedValue": 71, - "drainedValue": 71, - "latestValue": 42, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-12T01:55:42.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-12T03:30:15.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-11T02:26:35.0", - "eventStartTimeLocal": "2024-06-10T22:26:35.0", - "bodyBatteryImpact": 69, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 29040000, - }, - { - "eventType": "NAP", - "eventStartTimeGmt": "2024-06-11T20:00:58.0", - "eventStartTimeLocal": "2024-06-11T16:00:58.0", - "bodyBatteryImpact": -1, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 1200000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-11T20:36:02.0", - "eventStartTimeLocal": "2024-06-11T16:36:02.0", - "bodyBatteryImpact": -13, - "feedbackType": "EXERCISE_TRAINING_EFFECT_4", - "shortFeedback": "HIGHLY_IMPROVING_VO2MAX", - "deviceId": 3472661486, - "durationInMillis": 3660000, - }, - ], - }, - "hydration": { - "goalInMl": 3030, - "goalInFractionalMl": 3030.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 16, - "maxValue": 43, - "minValue": 8, - "latestValue": 12, - "latestTimestampGmt": "2024-06-12T04:00:00.0", - }, - "pulseOx": { - "avgValue": 95, - "minValue": 84, - "latestValue": 93, - "latestTimestampGmt": "2024-06-12T04:00:00.0", - "latestTimestampLocal": "2024-06-12T00:00:00.0", - "avgAltitudeInMeters": 19.0, - }, - "jetLag": {}, - }, - { - "uuid": "9bc35cc0-28f1-45cb-b746-21fba172215d", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-12", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-12T04:00:00.0", - "startTimestampLocal": "2024-06-12T00:00:00.0", - "endTimestampGmt": "2024-06-13T04:00:00.0", - "endTimestampLocal": "2024-06-13T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 23920, - "value": 24992, - "distanceInMeters": 26997.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 85, - "distanceInMeters": 260.42, - }, - "floorsDescended": { - "value": 86, - "distanceInMeters": 262.23, - }, - }, - "calories": { - "burnedResting": 2211, - "burnedActive": 1612, - "burnedTotal": 3823, - "consumedGoal": 1780, - "consumedValue": 3133, - "consumedRemaining": 690, - }, - "heartRate": { - "minValue": 41, - "maxValue": 156, - "restingValue": 42, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 0, - "vigorous": 88, - }, - "stress": { - "avgLevel": 21, - "maxLevel": 96, - "restProportion": 0.52, - "activityProportion": 0.2, - "uncategorizedProportion": 0.16, - "lowStressProportion": 0.09, - "mediumStressProportion": 0.02, - "highStressProportion": 0.01, - "qualifier": "balanced", - "totalDurationInMillis": 86100000, - "restDurationInMillis": 44760000, - "activityDurationInMillis": 16980000, - "uncategorizedDurationInMillis": 14100000, - "lowStressDurationInMillis": 7800000, - "mediumStressDurationInMillis": 1620000, - "highStressDurationInMillis": 840000, - }, - "bodyBattery": { - "minValue": 25, - "maxValue": 96, - "chargedValue": 66, - "drainedValue": 71, - "latestValue": 37, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-13T01:16:26.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-13T03:30:10.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-12T02:47:14.0", - "eventStartTimeLocal": "2024-06-11T22:47:14.0", - "bodyBatteryImpact": 65, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 28440000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-12T18:46:03.0", - "eventStartTimeLocal": "2024-06-12T14:46:03.0", - "bodyBatteryImpact": -16, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_AEROBIC_ENDURANCE", - "deviceId": 3472661486, - "durationInMillis": 5100000, - }, - ], - }, - "hydration": { - "goalInMl": 3368, - "goalInFractionalMl": 3368.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 17, - "maxValue": 37, - "minValue": 8, - "latestValue": 12, - "latestTimestampGmt": "2024-06-13T04:00:00.0", - }, - "pulseOx": { - "avgValue": 95, - "minValue": 87, - "latestValue": 88, - "latestTimestampGmt": "2024-06-13T04:00:00.0", - "latestTimestampLocal": "2024-06-13T00:00:00.0", - "avgAltitudeInMeters": 42.0, - }, - "jetLag": {}, - }, - { - "uuid": "d89a181e-d7fb-4d2d-8583-3d6c7efbd2c4", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-13", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-13T04:00:00.0", - "startTimestampLocal": "2024-06-13T00:00:00.0", - "endTimestampGmt": "2024-06-14T04:00:00.0", - "endTimestampLocal": "2024-06-14T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 24140, - "value": 25546, - "distanceInMeters": 26717.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 62, - "distanceInMeters": 190.45, - }, - "floorsDescended": { - "value": 71, - "distanceInMeters": 215.13, - }, - }, - "calories": { - "burnedResting": 2203, - "burnedActive": 1594, - "burnedTotal": 3797, - "consumedGoal": 1780, - "consumedValue": 2244, - "consumedRemaining": 1553, - }, - "heartRate": { - "minValue": 39, - "maxValue": 152, - "restingValue": 43, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 0, - "vigorous": 76, - }, - "stress": { - "avgLevel": 24, - "maxLevel": 96, - "restProportion": 0.43, - "activityProportion": 0.23, - "uncategorizedProportion": 0.15, - "lowStressProportion": 0.14, - "mediumStressProportion": 0.05, - "highStressProportion": 0.01, - "qualifier": "stressful", - "totalDurationInMillis": 86160000, - "restDurationInMillis": 36900000, - "activityDurationInMillis": 19440000, - "uncategorizedDurationInMillis": 12660000, - "lowStressDurationInMillis": 12000000, - "mediumStressDurationInMillis": 4260000, - "highStressDurationInMillis": 900000, - }, - "bodyBattery": { - "minValue": 20, - "maxValue": 88, - "chargedValue": 61, - "drainedValue": 69, - "latestValue": 29, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-14T00:52:20.0", - "bodyBatteryLevel": "MODERATE", - "feedbackShortType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-14T03:16:57.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_BALANCED_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_BALANCED_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-13T02:25:30.0", - "eventStartTimeLocal": "2024-06-12T22:25:30.0", - "bodyBatteryImpact": 63, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 28260000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-13T15:21:45.0", - "eventStartTimeLocal": "2024-06-13T11:21:45.0", - "bodyBatteryImpact": -14, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_AEROBIC_BASE", - "deviceId": 3472661486, - "durationInMillis": 4200000, - }, - { - "eventType": "NAP", - "eventStartTimeGmt": "2024-06-13T18:06:33.0", - "eventStartTimeLocal": "2024-06-13T14:06:33.0", - "bodyBatteryImpact": -1, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 2400000, - }, - ], - }, - "hydration": { - "goalInMl": 3165, - "goalInFractionalMl": 3165.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 15, - "maxValue": 37, - "minValue": 8, - "latestValue": 8, - "latestTimestampGmt": "2024-06-14T04:00:00.0", - }, - "pulseOx": { - "avgValue": 95, - "minValue": 84, - "latestValue": 94, - "latestTimestampGmt": "2024-06-14T04:00:00.0", - "latestTimestampLocal": "2024-06-14T00:00:00.0", - "avgAltitudeInMeters": 49.0, - }, - "jetLag": {}, - }, - { - "uuid": "e44d344b-1f7e-428f-ad39-891862b77c6f", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-14", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": false, - "wellnessChronology": { - "startTimestampGmt": "2024-06-14T04:00:00.0", - "startTimestampLocal": "2024-06-14T00:00:00.0", - "endTimestampGmt": "2024-06-15T04:00:00.0", - "endTimestampLocal": "2024-06-15T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 24430, - "value": 15718, - "distanceInMeters": 13230.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 45, - "distanceInMeters": 137.59, - }, - "floorsDescended": { - "value": 47, - "distanceInMeters": 143.09, - }, - }, - "calories": { - "burnedResting": 2206, - "burnedActive": 531, - "burnedTotal": 2737, - "consumedGoal": 1780, - "consumedValue": 0, - "consumedRemaining": 2737, - }, - "heartRate": { - "minValue": 43, - "maxValue": 110, - "restingValue": 44, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 0, - "vigorous": 2, - }, - "stress": { - "avgLevel": 26, - "maxLevel": 93, - "restProportion": 0.48, - "activityProportion": 0.18, - "uncategorizedProportion": 0.04, - "lowStressProportion": 0.26, - "mediumStressProportion": 0.04, - "highStressProportion": 0.01, - "qualifier": "balanced", - "totalDurationInMillis": 84660000, - "restDurationInMillis": 40680000, - "activityDurationInMillis": 15060000, - "uncategorizedDurationInMillis": 3540000, - "lowStressDurationInMillis": 21900000, - "mediumStressDurationInMillis": 3000000, - "highStressDurationInMillis": 480000, - }, - "bodyBattery": { - "minValue": 29, - "maxValue": 81, - "chargedValue": 62, - "drainedValue": 52, - "latestValue": 39, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-15T00:05:00.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_RECOVERING_AND_INACTIVE", - "feedbackLongType": "SLEEP_PREPARATION_RECOVERING_AND_INACTIVE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-15T03:30:04.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_RECOVERING_AND_INACTIVE", - "feedbackLongType": "SLEEP_TIME_PASSED_RECOVERING_AND_INACTIVE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-14T02:35:08.0", - "eventStartTimeLocal": "2024-06-13T22:35:08.0", - "bodyBatteryImpact": 61, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 28500000, - } - ], - }, - "hydration": {}, - "respiration": { - "avgValue": 14, - "maxValue": 21, - "minValue": 8, - "latestValue": 12, - "latestTimestampGmt": "2024-06-15T04:00:00.0", - }, - "pulseOx": { - "avgValue": 92, - "minValue": 84, - "latestValue": 95, - "latestTimestampGmt": "2024-06-15T04:00:00.0", - "latestTimestampLocal": "2024-06-15T00:00:00.0", - "avgAltitudeInMeters": 85.0, - }, - "jetLag": {}, - }, - { - "uuid": "72069c99-5246-4d78-9ebe-8daf237372e0", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-15", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-15T04:00:00.0", - "startTimestampLocal": "2024-06-15T00:00:00.0", - "endTimestampGmt": "2024-06-16T04:00:00.0", - "endTimestampLocal": "2024-06-16T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 23560, - "value": 19729, - "distanceInMeters": 20342.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 85, - "distanceInMeters": 259.85, - }, - "floorsDescended": { - "value": 80, - "distanceInMeters": 245.04, - }, - }, - "calories": { - "burnedResting": 2206, - "burnedActive": 1114, - "burnedTotal": 3320, - "consumedGoal": 1780, - "consumedValue": 0, - "consumedRemaining": 3320, - }, - "heartRate": { - "minValue": 41, - "maxValue": 154, - "restingValue": 45, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 0, - "vigorous": 59, - }, - "stress": { - "avgLevel": 24, - "maxLevel": 98, - "restProportion": 0.55, - "activityProportion": 0.13, - "uncategorizedProportion": 0.15, - "lowStressProportion": 0.12, - "mediumStressProportion": 0.04, - "highStressProportion": 0.02, - "qualifier": "balanced", - "totalDurationInMillis": 85020000, - "restDurationInMillis": 46620000, - "activityDurationInMillis": 10680000, - "uncategorizedDurationInMillis": 12660000, - "lowStressDurationInMillis": 10440000, - "mediumStressDurationInMillis": 3120000, - "highStressDurationInMillis": 1500000, - }, - "bodyBattery": { - "minValue": 37, - "maxValue": 85, - "chargedValue": 63, - "drainedValue": 54, - "latestValue": 48, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-16T00:27:21.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_RECOVERING_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_RECOVERING_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-16T03:30:09.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_RECOVERING_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_RECOVERING_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-15T02:14:41.0", - "eventStartTimeLocal": "2024-06-14T22:14:41.0", - "bodyBatteryImpact": 55, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 30360000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-15T11:27:59.0", - "eventStartTimeLocal": "2024-06-15T07:27:59.0", - "bodyBatteryImpact": -12, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_AEROBIC_BASE", - "deviceId": 3472661486, - "durationInMillis": 2940000, - }, - { - "eventType": "RECOVERY", - "eventStartTimeGmt": "2024-06-15T15:38:02.0", - "eventStartTimeLocal": "2024-06-15T11:38:02.0", - "bodyBatteryImpact": 2, - "feedbackType": "RECOVERY_BODY_BATTERY_INCREASE", - "shortFeedback": "BODY_BATTERY_RECHARGE", - "deviceId": 3472661486, - "durationInMillis": 2400000, - }, - { - "eventType": "NAP", - "eventStartTimeGmt": "2024-06-15T19:45:37.0", - "eventStartTimeLocal": "2024-06-15T15:45:37.0", - "bodyBatteryImpact": 4, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 2640000, - }, - ], - }, - "hydration": { - "goalInMl": 2806, - "goalInFractionalMl": 2806.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 17, - "maxValue": 40, - "minValue": 9, - "latestValue": 12, - "latestTimestampGmt": "2024-06-16T04:00:00.0", - }, - "pulseOx": { - "avgValue": 94, - "minValue": 83, - "latestValue": 88, - "latestTimestampGmt": "2024-06-16T04:00:00.0", - "latestTimestampLocal": "2024-06-16T00:00:00.0", - "avgAltitudeInMeters": 52.0, - }, - "jetLag": {}, - }, - { - "uuid": "6da2bf6c-95c2-49e1-a3a6-649c61bc1bb3", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-16", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-16T04:00:00.0", - "startTimestampLocal": "2024-06-16T00:00:00.0", - "endTimestampGmt": "2024-06-17T04:00:00.0", - "endTimestampLocal": "2024-06-17T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 22800, - "value": 30464, - "distanceInMeters": 30330.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 77, - "distanceInMeters": 233.52, - }, - "floorsDescended": { - "value": 70, - "distanceInMeters": 212.2, - }, - }, - "calories": { - "burnedResting": 2206, - "burnedActive": 1584, - "burnedTotal": 3790, - "consumedGoal": 1780, - "consumedValue": 0, - "consumedRemaining": 3790, - }, - "heartRate": { - "minValue": 39, - "maxValue": 145, - "restingValue": 41, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 0, - "vigorous": 66, - }, - "stress": { - "avgLevel": 21, - "maxLevel": 98, - "restProportion": 0.53, - "activityProportion": 0.18, - "uncategorizedProportion": 0.15, - "lowStressProportion": 0.09, - "mediumStressProportion": 0.03, - "highStressProportion": 0.02, - "qualifier": "balanced", - "totalDurationInMillis": 84780000, - "restDurationInMillis": 45120000, - "activityDurationInMillis": 15600000, - "uncategorizedDurationInMillis": 12480000, - "lowStressDurationInMillis": 7320000, - "mediumStressDurationInMillis": 2940000, - "highStressDurationInMillis": 1320000, - }, - "bodyBattery": { - "minValue": 39, - "maxValue": 98, - "chargedValue": 58, - "drainedValue": 59, - "latestValue": 48, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-17T00:05:00.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-17T03:57:54.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_RECOVERING_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_RECOVERING_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-16T02:04:07.0", - "eventStartTimeLocal": "2024-06-15T22:04:07.0", - "bodyBatteryImpact": 61, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 30360000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-16T11:17:58.0", - "eventStartTimeLocal": "2024-06-16T07:17:58.0", - "bodyBatteryImpact": -17, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_AEROBIC_BASE", - "deviceId": 3472661486, - "durationInMillis": 3780000, - }, - { - "eventType": "RECOVERY", - "eventStartTimeGmt": "2024-06-16T16:51:20.0", - "eventStartTimeLocal": "2024-06-16T12:51:20.0", - "bodyBatteryImpact": 0, - "feedbackType": "RECOVERY_BODY_BATTERY_NOT_INCREASE", - "shortFeedback": "RESTFUL_PERIOD", - "deviceId": 3472661486, - "durationInMillis": 1920000, - }, - { - "eventType": "NAP", - "eventStartTimeGmt": "2024-06-16T18:05:20.0", - "eventStartTimeLocal": "2024-06-16T14:05:20.0", - "bodyBatteryImpact": -1, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 2700000, - }, - ], - }, - "hydration": { - "goalInMl": 3033, - "goalInFractionalMl": 3033.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 16, - "maxValue": 40, - "minValue": 8, - "latestValue": 11, - "latestTimestampGmt": "2024-06-17T04:00:00.0", - }, - "pulseOx": { - "avgValue": 94, - "minValue": 83, - "latestValue": 92, - "latestTimestampGmt": "2024-06-17T04:00:00.0", - "latestTimestampLocal": "2024-06-17T00:00:00.0", - "avgAltitudeInMeters": 57.0, - }, - "jetLag": {}, - }, - { - "uuid": "f2396b62-8384-4548-9bd1-260c5e3b29d2", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-17", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": false, - "wellnessChronology": { - "startTimestampGmt": "2024-06-17T04:00:00.0", - "startTimestampLocal": "2024-06-17T00:00:00.0", - "endTimestampGmt": "2024-06-18T04:00:00.0", - "endTimestampLocal": "2024-06-18T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 23570, - "value": 16161, - "distanceInMeters": 13603.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 56, - "distanceInMeters": 169.86, - }, - "floorsDescended": { - "value": 63, - "distanceInMeters": 193.24, - }, - }, - "calories": { - "burnedResting": 2206, - "burnedActive": 477, - "burnedTotal": 2683, - "consumedGoal": 1780, - "consumedValue": 0, - "consumedRemaining": 2683, - }, - "heartRate": { - "minValue": 38, - "maxValue": 109, - "restingValue": 40, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 0, - "vigorous": 2, - }, - "stress": { - "avgLevel": 21, - "maxLevel": 96, - "restProportion": 0.52, - "activityProportion": 0.16, - "uncategorizedProportion": 0.12, - "lowStressProportion": 0.15, - "mediumStressProportion": 0.04, - "highStressProportion": 0.01, - "qualifier": "balanced", - "totalDurationInMillis": 85020000, - "restDurationInMillis": 44520000, - "activityDurationInMillis": 13380000, - "uncategorizedDurationInMillis": 9900000, - "lowStressDurationInMillis": 13080000, - "mediumStressDurationInMillis": 3480000, - "highStressDurationInMillis": 660000, - }, - "bodyBattery": { - "minValue": 36, - "maxValue": 100, - "chargedValue": 54, - "drainedValue": 64, - "latestValue": 38, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-18T00:13:50.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_RECOVERING_AND_INACTIVE", - "feedbackLongType": "SLEEP_PREPARATION_RECOVERING_AND_INACTIVE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-18T03:30:09.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_RECOVERING_AND_INACTIVE", - "feedbackLongType": "SLEEP_TIME_PASSED_RECOVERING_AND_INACTIVE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-17T03:03:30.0", - "eventStartTimeLocal": "2024-06-16T23:03:30.0", - "bodyBatteryImpact": 58, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 29820000, - } - ], - }, - "hydration": {}, - "respiration": { - "avgValue": 15, - "maxValue": 25, - "minValue": 8, - "latestValue": 9, - "latestTimestampGmt": "2024-06-18T04:00:00.0", - }, - "pulseOx": { - "avgValue": 94, - "minValue": 82, - "latestValue": 96, - "latestTimestampGmt": "2024-06-18T04:00:00.0", - "latestTimestampLocal": "2024-06-18T00:00:00.0", - "avgAltitudeInMeters": 39.0, - }, - "jetLag": {}, - }, - { - "uuid": "718af8d5-8c88-4f91-9690-d3fa4e4a6f37", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-18", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-18T04:00:00.0", - "startTimestampLocal": "2024-06-18T00:00:00.0", - "endTimestampGmt": "2024-06-19T04:00:00.0", - "endTimestampLocal": "2024-06-19T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 22830, - "value": 17088, - "distanceInMeters": 18769.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 53, - "distanceInMeters": 160.13, - }, - "floorsDescended": { - "value": 47, - "distanceInMeters": 142.2, - }, - }, - "calories": { - "burnedResting": 2206, - "burnedActive": 1177, - "burnedTotal": 3383, - "consumedGoal": 1780, - "consumedValue": 0, - "consumedRemaining": 3383, - }, - "heartRate": { - "minValue": 41, - "maxValue": 168, - "restingValue": 42, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 4, - "vigorous": 59, - }, - "stress": { - "avgLevel": 23, - "maxLevel": 99, - "restProportion": 0.42, - "activityProportion": 0.07, - "uncategorizedProportion": 0.37, - "lowStressProportion": 0.1, - "mediumStressProportion": 0.02, - "highStressProportion": 0.02, - "qualifier": "stressful", - "totalDurationInMillis": 85200000, - "restDurationInMillis": 35460000, - "activityDurationInMillis": 6300000, - "uncategorizedDurationInMillis": 31920000, - "lowStressDurationInMillis": 8220000, - "mediumStressDurationInMillis": 1920000, - "highStressDurationInMillis": 1380000, - }, - "bodyBattery": { - "minValue": 24, - "maxValue": 92, - "chargedValue": 62, - "drainedValue": 46, - "latestValue": 32, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-19T02:59:57.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-19T03:30:05.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-18T03:19:33.0", - "eventStartTimeLocal": "2024-06-17T23:19:33.0", - "bodyBatteryImpact": 56, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 28080000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-18T11:50:39.0", - "eventStartTimeLocal": "2024-06-18T07:50:39.0", - "bodyBatteryImpact": -14, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_VO2MAX", - "deviceId": 3472661486, - "durationInMillis": 3180000, - }, - ], - }, - "hydration": { - "goalInMl": 2888, - "goalInFractionalMl": 2888.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 16, - "maxValue": 41, - "minValue": 8, - "latestValue": 16, - "latestTimestampGmt": "2024-06-19T04:00:00.0", - }, - "pulseOx": { - "avgValue": 92, - "minValue": 85, - "latestValue": 94, - "latestTimestampGmt": "2024-06-19T04:00:00.0", - "latestTimestampLocal": "2024-06-19T00:00:00.0", - "avgAltitudeInMeters": 37.0, - }, - "jetLag": {}, - }, - { - "uuid": "4b8046ce-2e66-494a-be96-6df4e5d5181c", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-19", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-19T04:00:00.0", - "startTimestampLocal": "2024-06-19T00:00:00.0", - "endTimestampGmt": "2024-06-20T04:00:00.0", - "endTimestampLocal": "2024-06-20T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 21690, - "value": 15688, - "distanceInMeters": 16548.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 41, - "distanceInMeters": 125.38, - }, - "floorsDescended": { - "value": 47, - "distanceInMeters": 144.18, - }, - }, - "calories": { - "burnedResting": 2206, - "burnedActive": 884, - "burnedTotal": 3090, - "consumedGoal": 1780, - "consumedValue": 0, - "consumedRemaining": 3090, - }, - "heartRate": { - "minValue": 38, - "maxValue": 162, - "restingValue": 38, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 6, - "vigorous": 48, - }, - "stress": { - "avgLevel": 29, - "maxLevel": 97, - "restProportion": 0.42, - "activityProportion": 0.15, - "uncategorizedProportion": 0.13, - "lowStressProportion": 0.17, - "mediumStressProportion": 0.12, - "highStressProportion": 0.02, - "qualifier": "stressful", - "totalDurationInMillis": 84240000, - "restDurationInMillis": 35040000, - "activityDurationInMillis": 12660000, - "uncategorizedDurationInMillis": 10800000, - "lowStressDurationInMillis": 14340000, - "mediumStressDurationInMillis": 9840000, - "highStressDurationInMillis": 1560000, - }, - "bodyBattery": { - "minValue": 23, - "maxValue": 97, - "chargedValue": 74, - "drainedValue": 74, - "latestValue": 32, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-20T02:35:03.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_STRESSFUL_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_STRESSFUL_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-20T03:30:04.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_STRESSFUL_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_STRESSFUL_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-19T02:38:46.0", - "eventStartTimeLocal": "2024-06-18T22:38:46.0", - "bodyBatteryImpact": 72, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 29220000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-19T11:12:12.0", - "eventStartTimeLocal": "2024-06-19T07:12:12.0", - "bodyBatteryImpact": -14, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_AEROBIC_BASE", - "deviceId": 3472661486, - "durationInMillis": 2820000, - }, - ], - }, - "hydration": { - "goalInMl": 2779, - "goalInFractionalMl": 2779.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 15, - "maxValue": 38, - "minValue": 9, - "latestValue": 16, - "latestTimestampGmt": "2024-06-20T04:00:00.0", - }, - "pulseOx": { - "avgValue": 93, - "minValue": 87, - "latestValue": 97, - "latestTimestampGmt": "2024-06-20T04:00:00.0", - "latestTimestampLocal": "2024-06-20T00:00:00.0", - "avgAltitudeInMeters": 83.0, - }, - "jetLag": {}, - }, - { - "uuid": "38dc2bbc-1b04-46ca-9f57-a90d0a768cac", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-20", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-20T04:00:00.0", - "startTimestampLocal": "2024-06-20T00:00:00.0", - "endTimestampGmt": "2024-06-21T04:00:00.0", - "endTimestampLocal": "2024-06-21T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 20490, - "value": 20714, - "distanceInMeters": 21420.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 48, - "distanceInMeters": 147.37, - }, - "floorsDescended": { - "value": 52, - "distanceInMeters": 157.31, - }, - }, - "calories": { - "burnedResting": 2226, - "burnedActive": 1769, - "burnedTotal": 3995, - "consumedGoal": 1780, - "consumedValue": 3667, - "consumedRemaining": 328, - }, - "heartRate": { - "minValue": 41, - "maxValue": 162, - "restingValue": 41, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 34, - "vigorous": 93, - }, - "stress": { - "avgLevel": 24, - "maxLevel": 99, - "restProportion": 0.49, - "activityProportion": 0.16, - "uncategorizedProportion": 0.2, - "lowStressProportion": 0.1, - "mediumStressProportion": 0.04, - "highStressProportion": 0.01, - "qualifier": "balanced", - "totalDurationInMillis": 84300000, - "restDurationInMillis": 41400000, - "activityDurationInMillis": 13440000, - "uncategorizedDurationInMillis": 16440000, - "lowStressDurationInMillis": 8520000, - "mediumStressDurationInMillis": 3720000, - "highStressDurationInMillis": 780000, - }, - "bodyBattery": { - "minValue": 26, - "maxValue": 77, - "chargedValue": 54, - "drainedValue": 51, - "latestValue": 35, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-21T00:05:00.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-21T03:11:38.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-20T02:10:32.0", - "eventStartTimeLocal": "2024-06-19T22:10:32.0", - "bodyBatteryImpact": 52, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 28860000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-20T11:10:18.0", - "eventStartTimeLocal": "2024-06-20T07:10:18.0", - "bodyBatteryImpact": -14, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_TEMPO", - "deviceId": 3472661486, - "durationInMillis": 3540000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-20T21:03:34.0", - "eventStartTimeLocal": "2024-06-20T17:03:34.0", - "bodyBatteryImpact": -6, - "feedbackType": "EXERCISE_TRAINING_EFFECT_2", - "shortFeedback": "MINOR_ANAEROBIC_EFFECT", - "deviceId": 3472661486, - "durationInMillis": 4560000, - }, - ], - }, - "hydration": { - "goalInMl": 3952, - "goalInFractionalMl": 3952.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 17, - "maxValue": 40, - "minValue": 8, - "latestValue": 21, - "latestTimestampGmt": "2024-06-21T04:00:00.0", - }, - "pulseOx": { - "avgValue": 95, - "minValue": 86, - "latestValue": 94, - "latestTimestampGmt": "2024-06-21T04:00:00.0", - "latestTimestampLocal": "2024-06-21T00:00:00.0", - "avgAltitudeInMeters": 54.0, - }, - "jetLag": {}, - }, - { - "uuid": "aeb4f77d-e02f-4539-8089-a4744a79cbf3", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-21", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-21T04:00:00.0", - "startTimestampLocal": "2024-06-21T00:00:00.0", - "endTimestampGmt": "2024-06-22T04:00:00.0", - "endTimestampLocal": "2024-06-22T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 20520, - "value": 20690, - "distanceInMeters": 20542.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 40, - "distanceInMeters": 121.92, - }, - "floorsDescended": { - "value": 48, - "distanceInMeters": 146.59, - }, - }, - "calories": { - "burnedResting": 2228, - "burnedActive": 1114, - "burnedTotal": 3342, - "consumedGoal": 1780, - "consumedValue": 3087, - "consumedRemaining": 255, - }, - "heartRate": { - "minValue": 40, - "maxValue": 148, - "restingValue": 41, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 0, - "vigorous": 54, - }, - "stress": { - "avgLevel": 21, - "maxLevel": 99, - "restProportion": 0.52, - "activityProportion": 0.21, - "uncategorizedProportion": 0.11, - "lowStressProportion": 0.11, - "mediumStressProportion": 0.03, - "highStressProportion": 0.01, - "qualifier": "balanced", - "totalDurationInMillis": 84600000, - "restDurationInMillis": 44340000, - "activityDurationInMillis": 17580000, - "uncategorizedDurationInMillis": 9660000, - "lowStressDurationInMillis": 9360000, - "mediumStressDurationInMillis": 2640000, - "highStressDurationInMillis": 1020000, - }, - "bodyBattery": { - "minValue": 29, - "maxValue": 95, - "chargedValue": 73, - "drainedValue": 67, - "latestValue": 41, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-22T02:35:26.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_RECOVERING_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_RECOVERING_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-22T03:05:55.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_RECOVERING_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_RECOVERING_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-21T02:13:54.0", - "eventStartTimeLocal": "2024-06-20T22:13:54.0", - "bodyBatteryImpact": 68, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 28260000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-21T11:00:14.0", - "eventStartTimeLocal": "2024-06-21T07:00:14.0", - "bodyBatteryImpact": -13, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_AEROBIC_BASE", - "deviceId": 3472661486, - "durationInMillis": 2820000, - }, - ], - }, - "hydration": { - "goalInMl": 2787, - "goalInFractionalMl": 2787.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 16, - "maxValue": 32, - "minValue": 10, - "latestValue": 21, - "latestTimestampGmt": "2024-06-22T04:00:00.0", - }, - "pulseOx": { - "avgValue": 94, - "minValue": 85, - "latestValue": 96, - "latestTimestampGmt": "2024-06-22T03:58:00.0", - "latestTimestampLocal": "2024-06-21T23:58:00.0", - "avgAltitudeInMeters": 58.0, - }, - "jetLag": {}, - }, - { - "uuid": "93917ebe-72af-42b9-bb9e-2873f6805b9b", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-22", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-22T04:00:00.0", - "startTimestampLocal": "2024-06-22T00:00:00.0", - "endTimestampGmt": "2024-06-23T04:00:00.0", - "endTimestampLocal": "2024-06-23T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 20560, - "value": 40346, - "distanceInMeters": 45842.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 68, - "distanceInMeters": 206.24, - }, - "floorsDescended": { - "value": 68, - "distanceInMeters": 206.31, - }, - }, - "calories": { - "burnedResting": 2222, - "burnedActive": 2844, - "burnedTotal": 5066, - "consumedGoal": 1780, - "consumedValue": 2392, - "consumedRemaining": 2674, - }, - "heartRate": { - "minValue": 38, - "maxValue": 157, - "restingValue": 39, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 6, - "vigorous": 171, - }, - "stress": { - "avgLevel": 24, - "maxLevel": 95, - "restProportion": 0.37, - "activityProportion": 0.25, - "uncategorizedProportion": 0.24, - "lowStressProportion": 0.07, - "mediumStressProportion": 0.05, - "highStressProportion": 0.02, - "qualifier": "stressful", - "totalDurationInMillis": 84780000, - "restDurationInMillis": 31200000, - "activityDurationInMillis": 21540000, - "uncategorizedDurationInMillis": 20760000, - "lowStressDurationInMillis": 5580000, - "mediumStressDurationInMillis": 4320000, - "highStressDurationInMillis": 1380000, - }, - "bodyBattery": { - "minValue": 15, - "maxValue": 100, - "chargedValue": 58, - "drainedValue": 85, - "latestValue": 15, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-23T00:05:00.0", - "bodyBatteryLevel": "MODERATE", - "feedbackShortType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-23T03:30:47.0", - "bodyBatteryLevel": "MODERATE", - "feedbackShortType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-22T02:27:18.0", - "eventStartTimeLocal": "2024-06-21T22:27:18.0", - "bodyBatteryImpact": 69, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 30960000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-22T16:32:00.0", - "eventStartTimeLocal": "2024-06-22T12:32:00.0", - "bodyBatteryImpact": -30, - "feedbackType": "EXERCISE_TRAINING_EFFECT_4", - "shortFeedback": "HIGHLY_IMPROVING_LACTATE_THRESHOLD", - "deviceId": 3472661486, - "durationInMillis": 9000000, - }, - ], - }, - "hydration": { - "goalInMl": 4412, - "goalInFractionalMl": 4412.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 18, - "maxValue": 37, - "minValue": 8, - "latestValue": 13, - "latestTimestampGmt": "2024-06-23T03:56:00.0", - }, - "pulseOx": { - "avgValue": 96, - "minValue": 87, - "latestValue": 99, - "latestTimestampGmt": "2024-06-23T04:00:00.0", - "latestTimestampLocal": "2024-06-23T00:00:00.0", - "avgAltitudeInMeters": 35.0, - }, - "jetLag": {}, - }, - { - "uuid": "2120430b-f380-4370-9b1c-dbfb75c15ab3", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-23", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-23T04:00:00.0", - "startTimestampLocal": "2024-06-23T00:00:00.0", - "endTimestampGmt": "2024-06-24T04:00:00.0", - "endTimestampLocal": "2024-06-24T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 22560, - "value": 21668, - "distanceInMeters": 21550.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 27, - "distanceInMeters": 83.75, - }, - "floorsDescended": { - "value": 27, - "distanceInMeters": 82.64, - }, - }, - "calories": { - "burnedResting": 2213, - "burnedActive": 1639, - "burnedTotal": 3852, - "consumedGoal": 1780, - "consumedRemaining": 3852, - }, - "heartRate": { - "minValue": 42, - "maxValue": 148, - "restingValue": 44, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 30, - "vigorous": 85, - }, - "stress": { - "avgLevel": 20, - "maxLevel": 96, - "restProportion": 0.43, - "activityProportion": 0.26, - "uncategorizedProportion": 0.21, - "lowStressProportion": 0.07, - "mediumStressProportion": 0.03, - "highStressProportion": 0.01, - "qualifier": "stressful", - "totalDurationInMillis": 85920000, - "restDurationInMillis": 37080000, - "activityDurationInMillis": 22680000, - "uncategorizedDurationInMillis": 17700000, - "lowStressDurationInMillis": 5640000, - "mediumStressDurationInMillis": 2280000, - "highStressDurationInMillis": 540000, - }, - "bodyBattery": { - "minValue": 15, - "maxValue": 82, - "chargedValue": 78, - "drainedValue": 62, - "latestValue": 31, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-24T03:00:59.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-24T03:30:14.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_ACTIVE_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-23T04:13:41.0", - "eventStartTimeLocal": "2024-06-23T00:13:41.0", - "bodyBatteryImpact": 67, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 27780000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-23T18:00:27.0", - "eventStartTimeLocal": "2024-06-23T14:00:27.0", - "bodyBatteryImpact": -8, - "feedbackType": "EXERCISE_TRAINING_EFFECT_2", - "shortFeedback": "MAINTAINING_ANAEROBIC_FITNESS", - "deviceId": 3472661486, - "durationInMillis": 6000000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-23T20:25:19.0", - "eventStartTimeLocal": "2024-06-23T16:25:19.0", - "bodyBatteryImpact": -8, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_AEROBIC_BASE", - "deviceId": 3472661486, - "durationInMillis": 3060000, - }, - ], - }, - "hydration": { - "goalInMl": 4184, - "goalInFractionalMl": 4184.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 17, - "maxValue": 35, - "minValue": 8, - "latestValue": 12, - "latestTimestampGmt": "2024-06-24T04:00:00.0", - }, - "pulseOx": { - "avgValue": 93, - "minValue": 81, - "latestValue": 94, - "latestTimestampGmt": "2024-06-24T04:00:00.0", - "latestTimestampLocal": "2024-06-24T00:00:00.0", - "avgAltitudeInMeters": 41.0, - }, - "jetLag": {}, - }, - { - "uuid": "2a188f96-f0fa-43e7-b62c-4f142476f791", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-24", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": false, - "wellnessChronology": { - "startTimestampGmt": "2024-06-24T04:00:00.0", - "startTimestampLocal": "2024-06-24T00:00:00.0", - "endTimestampGmt": "2024-06-25T04:00:00.0", - "endTimestampLocal": "2024-06-25T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 22470, - "value": 16159, - "distanceInMeters": 13706.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 23, - "distanceInMeters": 69.31, - }, - "floorsDescended": { - "value": 18, - "distanceInMeters": 53.38, - }, - }, - "calories": { - "burnedResting": 2224, - "burnedActive": 411, - "burnedTotal": 2635, - "consumedGoal": 1780, - "consumedValue": 1628, - "consumedRemaining": 1007, - }, - "heartRate": { - "minValue": 37, - "maxValue": 113, - "restingValue": 39, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 0, - "vigorous": 2, - }, - "stress": { - "avgLevel": 18, - "maxLevel": 86, - "restProportion": 0.52, - "activityProportion": 0.3, - "uncategorizedProportion": 0.07, - "lowStressProportion": 0.1, - "mediumStressProportion": 0.02, - "highStressProportion": 0.0, - "qualifier": "balanced", - "totalDurationInMillis": 85140000, - "restDurationInMillis": 44280000, - "activityDurationInMillis": 25260000, - "uncategorizedDurationInMillis": 5760000, - "lowStressDurationInMillis": 8280000, - "mediumStressDurationInMillis": 1380000, - "highStressDurationInMillis": 180000, - }, - "bodyBattery": { - "minValue": 31, - "maxValue": 100, - "chargedValue": 72, - "drainedValue": 63, - "latestValue": 40, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-25T02:30:14.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_RECOVERING_AND_INACTIVE", - "feedbackLongType": "SLEEP_PREPARATION_RECOVERING_AND_INACTIVE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-25T03:30:02.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_RECOVERING_AND_INACTIVE", - "feedbackLongType": "SLEEP_TIME_PASSED_RECOVERING_AND_INACTIVE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-24T02:44:40.0", - "eventStartTimeLocal": "2024-06-23T22:44:40.0", - "bodyBatteryImpact": 77, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 30600000, - } - ], - }, - "hydration": {}, - "respiration": { - "avgValue": 14, - "maxValue": 21, - "minValue": 8, - "latestValue": 10, - "latestTimestampGmt": "2024-06-25T04:00:00.0", - }, - "pulseOx": { - "avgValue": 95, - "minValue": 81, - "latestValue": 93, - "latestTimestampGmt": "2024-06-25T04:00:00.0", - "latestTimestampLocal": "2024-06-25T00:00:00.0", - "avgAltitudeInMeters": 31.0, - }, - "jetLag": {}, - }, - { - "uuid": "85f6ead2-7521-41d4-80ff-535281057eac", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-25", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-25T04:00:00.0", - "startTimestampLocal": "2024-06-25T00:00:00.0", - "endTimestampGmt": "2024-06-26T04:00:00.0", - "endTimestampLocal": "2024-06-26T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 21210, - "value": 26793, - "distanceInMeters": 28291.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 80, - "distanceInMeters": 242.38, - }, - "floorsDescended": { - "value": 84, - "distanceInMeters": 255.96, - }, - }, - "calories": { - "burnedResting": 2228, - "burnedActive": 2013, - "burnedTotal": 4241, - "consumedGoal": 1780, - "consumedValue": 3738, - "consumedRemaining": 503, - }, - "heartRate": { - "minValue": 39, - "maxValue": 153, - "restingValue": 39, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 21, - "vigorous": 122, - }, - "stress": { - "avgLevel": 19, - "maxLevel": 99, - "restProportion": 0.46, - "activityProportion": 0.23, - "uncategorizedProportion": 0.2, - "lowStressProportion": 0.08, - "mediumStressProportion": 0.02, - "highStressProportion": 0.01, - "qualifier": "balanced", - "totalDurationInMillis": 82020000, - "restDurationInMillis": 37440000, - "activityDurationInMillis": 19080000, - "uncategorizedDurationInMillis": 16800000, - "lowStressDurationInMillis": 6300000, - "mediumStressDurationInMillis": 1860000, - "highStressDurationInMillis": 540000, - }, - "bodyBattery": { - "minValue": 24, - "maxValue": 99, - "chargedValue": 79, - "drainedValue": 75, - "latestValue": 44, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-26T02:05:16.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-26T03:30:14.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-25T03:49:43.0", - "eventStartTimeLocal": "2024-06-24T23:49:43.0", - "bodyBatteryImpact": 62, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 25680000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-25T14:59:35.0", - "eventStartTimeLocal": "2024-06-25T10:59:35.0", - "bodyBatteryImpact": -20, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_AEROBIC_ENDURANCE", - "deviceId": 3472661486, - "durationInMillis": 5160000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-25T22:18:58.0", - "eventStartTimeLocal": "2024-06-25T18:18:58.0", - "bodyBatteryImpact": -7, - "feedbackType": "EXERCISE_TRAINING_EFFECT_2", - "shortFeedback": "MAINTAINING_ANAEROBIC_FITNESS", - "deviceId": 3472661486, - "durationInMillis": 3420000, - }, - ], - }, - "hydration": { - "goalInMl": 4178, - "goalInFractionalMl": 4178.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 17, - "maxValue": 41, - "minValue": 8, - "latestValue": 20, - "latestTimestampGmt": "2024-06-26T03:59:00.0", - }, - "pulseOx": { - "avgValue": 94, - "minValue": 81, - "latestValue": 98, - "latestTimestampGmt": "2024-06-26T04:00:00.0", - "latestTimestampLocal": "2024-06-26T00:00:00.0", - "avgAltitudeInMeters": 42.0, - }, - "jetLag": {}, - }, - { - "uuid": "d09bc8df-01a5-417d-a21d-0c46f7469cef", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-26", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-26T04:00:00.0", - "startTimestampLocal": "2024-06-26T00:00:00.0", - "endTimestampGmt": "2024-06-27T04:00:00.0", - "endTimestampLocal": "2024-06-27T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 5000, - "value": 18760, - "distanceInMeters": 18589.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 42, - "distanceInMeters": 128.02, - }, - "floorsDescended": { - "value": 42, - "distanceInMeters": 128.89, - }, - }, - "calories": { - "burnedResting": 2217, - "burnedActive": 1113, - "burnedTotal": 3330, - "consumedGoal": 1780, - "consumedValue": 951, - "consumedRemaining": 2379, - }, - "heartRate": { - "minValue": 37, - "maxValue": 157, - "restingValue": 39, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 38, - "vigorous": 0, - }, - "stress": { - "avgLevel": 21, - "maxLevel": 90, - "restProportion": 0.5, - "activityProportion": 0.15, - "uncategorizedProportion": 0.13, - "lowStressProportion": 0.17, - "mediumStressProportion": 0.04, - "highStressProportion": 0.0, - "qualifier": "balanced", - "totalDurationInMillis": 84840000, - "restDurationInMillis": 42420000, - "activityDurationInMillis": 12960000, - "uncategorizedDurationInMillis": 10740000, - "lowStressDurationInMillis": 14640000, - "mediumStressDurationInMillis": 3720000, - "highStressDurationInMillis": 360000, - }, - "bodyBattery": { - "minValue": 34, - "maxValue": 100, - "chargedValue": 68, - "drainedValue": 66, - "latestValue": 46, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-27T00:05:00.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_RECOVERING_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_RECOVERING_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-27T03:25:59.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_RECOVERING_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_RECOVERING_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-26T02:00:04.0", - "eventStartTimeLocal": "2024-06-25T22:00:04.0", - "bodyBatteryImpact": 76, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 30300000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-26T15:01:35.0", - "eventStartTimeLocal": "2024-06-26T11:01:35.0", - "bodyBatteryImpact": -12, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_AEROBIC_BASE", - "deviceId": 3472661486, - "durationInMillis": 2460000, - }, - ], - }, - "hydration": { - "goalInMl": 2663, - "goalInFractionalMl": 2663.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 14, - "maxValue": 31, - "minValue": 8, - "latestValue": 9, - "latestTimestampGmt": "2024-06-27T04:00:00.0", - }, - "pulseOx": { - "avgValue": 94, - "minValue": 86, - "latestValue": 96, - "latestTimestampGmt": "2024-06-27T04:00:00.0", - "latestTimestampLocal": "2024-06-27T00:00:00.0", - "avgAltitudeInMeters": 50.0, - }, - "jetLag": {}, - }, - { - "uuid": "b22e425d-709d-44c0-9fea-66a67eb5d9d7", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-27", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-27T04:00:00.0", - "startTimestampLocal": "2024-06-27T00:00:00.0", - "endTimestampGmt": "2024-06-28T04:00:00.0", - "endTimestampLocal": "2024-06-28T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 5000, - "value": 28104, - "distanceInMeters": 31093.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 69, - "distanceInMeters": 211.56, - }, - "floorsDescended": { - "value": 70, - "distanceInMeters": 214.7, - }, - }, - "calories": { - "burnedResting": 2213, - "burnedActive": 1845, - "burnedTotal": 4058, - "consumedGoal": 1780, - "consumedValue": 3401, - "consumedRemaining": 657, - }, - "heartRate": { - "minValue": 40, - "maxValue": 156, - "restingValue": 41, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 101, - "vigorous": 1, - }, - "stress": { - "avgLevel": 21, - "maxLevel": 97, - "restProportion": 0.51, - "activityProportion": 0.19, - "uncategorizedProportion": 0.16, - "lowStressProportion": 0.1, - "mediumStressProportion": 0.03, - "highStressProportion": 0.01, - "qualifier": "balanced", - "totalDurationInMillis": 84600000, - "restDurationInMillis": 43440000, - "activityDurationInMillis": 15780000, - "uncategorizedDurationInMillis": 13680000, - "lowStressDurationInMillis": 8460000, - "mediumStressDurationInMillis": 2460000, - "highStressDurationInMillis": 780000, - }, - "bodyBattery": { - "minValue": 26, - "maxValue": 98, - "chargedValue": 64, - "drainedValue": 72, - "latestValue": 39, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-28T01:14:49.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-28T03:30:16.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-27T02:36:39.0", - "eventStartTimeLocal": "2024-06-26T22:36:39.0", - "bodyBatteryImpact": 64, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 29940000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-27T18:04:19.0", - "eventStartTimeLocal": "2024-06-27T14:04:19.0", - "bodyBatteryImpact": -21, - "feedbackType": "EXERCISE_TRAINING_EFFECT_4", - "shortFeedback": "HIGHLY_IMPROVING_TEMPO", - "deviceId": 3472661486, - "durationInMillis": 6000000, - }, - ], - }, - "hydration": { - "goalInMl": 3675, - "goalInFractionalMl": 3675.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 17, - "maxValue": 41, - "minValue": 8, - "latestValue": 15, - "latestTimestampGmt": "2024-06-28T04:00:00.0", - }, - "pulseOx": { - "avgValue": 97, - "minValue": 82, - "latestValue": 92, - "latestTimestampGmt": "2024-06-28T04:00:00.0", - "latestTimestampLocal": "2024-06-28T00:00:00.0", - "avgAltitudeInMeters": 36.0, - }, - "jetLag": {}, - }, - { - "uuid": "6b846775-8ed4-4b79-b426-494345d18f8c", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-28", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-28T04:00:00.0", - "startTimestampLocal": "2024-06-28T00:00:00.0", - "endTimestampGmt": "2024-06-29T04:00:00.0", - "endTimestampLocal": "2024-06-29T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 5000, - "value": 20494, - "distanceInMeters": 20618.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 54, - "distanceInMeters": 164.59, - }, - "floorsDescended": { - "value": 56, - "distanceInMeters": 171.31, - }, - }, - "calories": { - "burnedResting": 2211, - "burnedActive": 978, - "burnedTotal": 3189, - "consumedGoal": 1780, - "consumedValue": 3361, - "consumedRemaining": -172, - }, - "heartRate": { - "minValue": 37, - "maxValue": 157, - "restingValue": 38, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 44, - "vigorous": 1, - }, - "stress": { - "avgLevel": 19, - "maxLevel": 98, - "restProportion": 0.51, - "activityProportion": 0.21, - "uncategorizedProportion": 0.15, - "lowStressProportion": 0.1, - "mediumStressProportion": 0.03, - "highStressProportion": 0.0, - "qualifier": "balanced", - "totalDurationInMillis": 84960000, - "restDurationInMillis": 43560000, - "activityDurationInMillis": 17460000, - "uncategorizedDurationInMillis": 12420000, - "lowStressDurationInMillis": 8400000, - "mediumStressDurationInMillis": 2760000, - "highStressDurationInMillis": 360000, - }, - "bodyBattery": { - "minValue": 34, - "maxValue": 100, - "chargedValue": 72, - "drainedValue": 66, - "latestValue": 45, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-29T02:47:33.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_RECOVERING_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_RECOVERING_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-29T03:16:23.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_RECOVERING_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_RECOVERING_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-28T02:31:09.0", - "eventStartTimeLocal": "2024-06-27T22:31:09.0", - "bodyBatteryImpact": 74, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 27900000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-28T16:47:11.0", - "eventStartTimeLocal": "2024-06-28T12:47:11.0", - "bodyBatteryImpact": -10, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_AEROBIC_BASE", - "deviceId": 3472661486, - "durationInMillis": 2700000, - }, - ], - }, - "hydration": { - "goalInMl": 2749, - "goalInFractionalMl": 2749.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 15, - "maxValue": 38, - "minValue": 8, - "latestValue": 13, - "latestTimestampGmt": "2024-06-29T04:00:00.0", - }, - "pulseOx": { - "avgValue": 95, - "minValue": 87, - "latestValue": 94, - "latestTimestampGmt": "2024-06-29T04:00:00.0", - "latestTimestampLocal": "2024-06-29T00:00:00.0", - "avgAltitudeInMeters": 36.0, - }, - "jetLag": {}, - }, - { - "uuid": "cb9c43cd-5a2c-4241-b7d7-054e3d67db25", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-29", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-29T04:00:00.0", - "startTimestampLocal": "2024-06-29T00:00:00.0", - "endTimestampGmt": "2024-06-30T04:00:00.0", - "endTimestampLocal": "2024-06-30T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 5000, - "value": 21108, - "distanceInMeters": 21092.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 47, - "distanceInMeters": 142.43, - }, - "floorsDescended": { - "value": 48, - "distanceInMeters": 145.31, - }, - }, - "calories": { - "burnedResting": 2213, - "burnedActive": 1428, - "burnedTotal": 3641, - "consumedGoal": 1780, - "consumedValue": 413, - "consumedRemaining": 3228, - }, - "heartRate": { - "minValue": 37, - "maxValue": 176, - "restingValue": 37, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 13, - "vigorous": 17, - }, - "stress": { - "avgLevel": 19, - "maxLevel": 97, - "restProportion": 0.52, - "activityProportion": 0.24, - "uncategorizedProportion": 0.12, - "lowStressProportion": 0.08, - "mediumStressProportion": 0.02, - "highStressProportion": 0.02, - "qualifier": "balanced", - "totalDurationInMillis": 83760000, - "restDurationInMillis": 43140000, - "activityDurationInMillis": 20400000, - "uncategorizedDurationInMillis": 10440000, - "lowStressDurationInMillis": 6420000, - "mediumStressDurationInMillis": 2040000, - "highStressDurationInMillis": 1320000, - }, - "bodyBattery": { - "minValue": 30, - "maxValue": 100, - "chargedValue": 68, - "drainedValue": 71, - "latestValue": 42, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-30T00:05:00.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_RACE_COMPLETED", - "feedbackLongType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_RACE_COMPLETED", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-06-30T03:23:29.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_RACE_COMPLETED", - "feedbackLongType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_RACE_COMPLETED", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-29T02:48:38.0", - "eventStartTimeLocal": "2024-06-28T22:48:38.0", - "bodyBatteryImpact": 63, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 27240000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-29T13:29:12.0", - "eventStartTimeLocal": "2024-06-29T09:29:12.0", - "bodyBatteryImpact": -3, - "feedbackType": "EXERCISE_TRAINING_EFFECT_BELOW_2", - "shortFeedback": "EASY_RECOVERY", - "deviceId": 3472661486, - "durationInMillis": 480000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-29T14:01:13.0", - "eventStartTimeLocal": "2024-06-29T10:01:13.0", - "bodyBatteryImpact": -8, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_VO2MAX", - "deviceId": 3472661486, - "durationInMillis": 1020000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-29T14:33:50.0", - "eventStartTimeLocal": "2024-06-29T10:33:50.0", - "bodyBatteryImpact": -2, - "feedbackType": "EXERCISE_TRAINING_EFFECT_BELOW_2", - "shortFeedback": "EASY_RECOVERY", - "deviceId": 3472661486, - "durationInMillis": 360000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-29T17:17:09.0", - "eventStartTimeLocal": "2024-06-29T13:17:09.0", - "bodyBatteryImpact": -4, - "feedbackType": "EXERCISE_TRAINING_EFFECT_BELOW_2", - "shortFeedback": "EASY_AEROBIC_BASE", - "deviceId": 3472661486, - "durationInMillis": 3300000, - }, - { - "eventType": "RECOVERY", - "eventStartTimeGmt": "2024-06-29T18:21:01.0", - "eventStartTimeLocal": "2024-06-29T14:21:01.0", - "bodyBatteryImpact": 1, - "feedbackType": "RECOVERY_SHORT", - "shortFeedback": "BODY_BATTERY_RECHARGE", - "deviceId": 3472661486, - "durationInMillis": 540000, - }, - { - "eventType": "NAP", - "eventStartTimeGmt": "2024-06-29T18:53:28.0", - "eventStartTimeLocal": "2024-06-29T14:53:28.0", - "bodyBatteryImpact": 0, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 3600000, - }, - ], - }, - "hydration": { - "goalInMl": 3181, - "goalInFractionalMl": 3181.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 14, - "maxValue": 43, - "minValue": 8, - "latestValue": 9, - "latestTimestampGmt": "2024-06-30T04:00:00.0", - }, - "pulseOx": { - "avgValue": 94, - "minValue": 84, - "latestValue": 98, - "latestTimestampGmt": "2024-06-30T04:00:00.0", - "latestTimestampLocal": "2024-06-30T00:00:00.0", - "avgAltitudeInMeters": 60.0, - }, - "jetLag": {}, - }, - { - "uuid": "634479ef-635a-4e89-a003-d49130f3e1db", - "userProfilePk": "user_id: int", - "calendarDate": "2024-06-30", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-06-30T04:00:00.0", - "startTimestampLocal": "2024-06-30T00:00:00.0", - "endTimestampGmt": "2024-07-01T04:00:00.0", - "endTimestampLocal": "2024-07-01T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 5000, - "value": 34199, - "distanceInMeters": 38485.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 43, - "distanceInMeters": 131.38, - }, - "floorsDescended": { - "value": 41, - "distanceInMeters": 125.38, - }, - }, - "calories": { - "burnedResting": 2226, - "burnedActive": 2352, - "burnedTotal": 4578, - "consumedGoal": 1780, - "consumedValue": 4432, - "consumedRemaining": 146, - }, - "heartRate": { - "minValue": 40, - "maxValue": 157, - "restingValue": 42, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 139, - "vigorous": 4, - }, - "stress": { - "avgLevel": 20, - "maxLevel": 98, - "restProportion": 0.54, - "activityProportion": 0.17, - "uncategorizedProportion": 0.19, - "lowStressProportion": 0.07, - "mediumStressProportion": 0.02, - "highStressProportion": 0.01, - "qualifier": "balanced", - "totalDurationInMillis": 84660000, - "restDurationInMillis": 45780000, - "activityDurationInMillis": 14220000, - "uncategorizedDurationInMillis": 16260000, - "lowStressDurationInMillis": 6000000, - "mediumStressDurationInMillis": 1920000, - "highStressDurationInMillis": 480000, - }, - "bodyBattery": { - "minValue": 29, - "maxValue": 89, - "chargedValue": 63, - "drainedValue": 63, - "latestValue": 42, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-01T00:05:00.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-01T03:30:16.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-06-30T02:35:51.0", - "eventStartTimeLocal": "2024-06-29T22:35:51.0", - "bodyBatteryImpact": 59, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 28560000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-06-30T13:57:31.0", - "eventStartTimeLocal": "2024-06-30T09:57:31.0", - "bodyBatteryImpact": -28, - "feedbackType": "EXERCISE_TRAINING_EFFECT_4_GOOD_TIMING", - "shortFeedback": "HIGHLY_IMPROVING_TEMPO", - "deviceId": 3472661486, - "durationInMillis": 8700000, - }, - { - "eventType": "NAP", - "eventStartTimeGmt": "2024-06-30T17:41:52.0", - "eventStartTimeLocal": "2024-06-30T13:41:52.0", - "bodyBatteryImpact": 1, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 3360000, - }, - ], - }, - "hydration": { - "goalInMl": 4301, - "goalInFractionalMl": 4301.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 17, - "maxValue": 38, - "minValue": 8, - "latestValue": 15, - "latestTimestampGmt": "2024-07-01T04:00:00.0", - }, - "pulseOx": { - "avgValue": 95, - "minValue": 82, - "latestValue": 95, - "latestTimestampGmt": "2024-07-01T04:00:00.0", - "latestTimestampLocal": "2024-07-01T00:00:00.0", - "avgAltitudeInMeters": 77.0, - }, - "jetLag": {}, - }, - { - "uuid": "0b8f694c-dac8-439a-be98-7c85e1945d18", - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-01", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-07-01T04:00:00.0", - "startTimestampLocal": "2024-07-01T00:00:00.0", - "endTimestampGmt": "2024-07-02T04:00:00.0", - "endTimestampLocal": "2024-07-02T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 5000, - "value": 19694, - "distanceInMeters": 20126.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 46, - "distanceInMeters": 139.19, - }, - "floorsDescended": { - "value": 52, - "distanceInMeters": 159.88, - }, - }, - "calories": { - "burnedResting": 2210, - "burnedActive": 961, - "burnedTotal": 3171, - "consumedGoal": 1780, - "consumedValue": 1678, - "consumedRemaining": 1493, - }, - "heartRate": { - "minValue": 36, - "maxValue": 146, - "restingValue": 37, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 42, - "vigorous": 0, - }, - "stress": { - "avgLevel": 16, - "maxLevel": 93, - "restProportion": 0.6, - "activityProportion": 0.2, - "uncategorizedProportion": 0.12, - "lowStressProportion": 0.06, - "mediumStressProportion": 0.02, - "highStressProportion": 0.01, - "qualifier": "balanced", - "totalDurationInMillis": 85620000, - "restDurationInMillis": 51060000, - "activityDurationInMillis": 17340000, - "uncategorizedDurationInMillis": 10140000, - "lowStressDurationInMillis": 5280000, - "mediumStressDurationInMillis": 1320000, - "highStressDurationInMillis": 480000, - }, - "bodyBattery": { - "minValue": 37, - "maxValue": 100, - "chargedValue": 77, - "drainedValue": 65, - "latestValue": 55, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-02T02:29:59.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_RECOVERING_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_RECOVERING_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-02T02:57:00.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_RECOVERING_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_RECOVERING_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-07-01T02:25:38.0", - "eventStartTimeLocal": "2024-06-30T22:25:38.0", - "bodyBatteryImpact": 69, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 27060000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-07-01T15:06:15.0", - "eventStartTimeLocal": "2024-07-01T11:06:15.0", - "bodyBatteryImpact": -11, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_AEROBIC_BASE", - "deviceId": 3472661486, - "durationInMillis": 2640000, - }, - { - "eventType": "RECOVERY", - "eventStartTimeGmt": "2024-07-01T16:47:52.0", - "eventStartTimeLocal": "2024-07-01T12:47:52.0", - "bodyBatteryImpact": 0, - "feedbackType": "RECOVERY_BODY_BATTERY_NOT_INCREASE", - "shortFeedback": "RESTFUL_PERIOD", - "deviceId": 3472661486, - "durationInMillis": 2280000, - }, - { - "eventType": "NAP", - "eventStartTimeGmt": "2024-07-01T17:59:21.0", - "eventStartTimeLocal": "2024-07-01T13:59:21.0", - "bodyBatteryImpact": 2, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 3300000, - }, - ], - }, - "hydration": { - "goalInMl": 2748, - "goalInFractionalMl": 2748.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 14, - "maxValue": 34, - "minValue": 8, - "latestValue": 9, - "latestTimestampGmt": "2024-07-02T04:00:00.0", - }, - "pulseOx": { - "avgValue": 95, - "minValue": 86, - "latestValue": 96, - "latestTimestampGmt": "2024-07-02T04:00:00.0", - "latestTimestampLocal": "2024-07-02T00:00:00.0", - "avgAltitudeInMeters": 42.0, - }, - "jetLag": {}, - }, - { - "uuid": "c5214e31-5d29-41dd-8a69-543282b04294", - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-02", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-07-02T04:00:00.0", - "startTimestampLocal": "2024-07-02T00:00:00.0", - "endTimestampGmt": "2024-07-03T04:00:00.0", - "endTimestampLocal": "2024-07-03T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 5000, - "value": 20198, - "distanceInMeters": 21328.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 56, - "distanceInMeters": 169.93, - }, - "floorsDescended": { - "value": 60, - "distanceInMeters": 182.05, - }, - }, - "calories": { - "burnedResting": 2221, - "burnedActive": 1094, - "burnedTotal": 3315, - "consumedGoal": 1780, - "consumedValue": 1303, - "consumedRemaining": 2012, - }, - "heartRate": { - "minValue": 34, - "maxValue": 156, - "restingValue": 37, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 58, - "vigorous": 1, - }, - "stress": { - "avgLevel": 20, - "maxLevel": 99, - "restProportion": 0.54, - "activityProportion": 0.2, - "uncategorizedProportion": 0.15, - "lowStressProportion": 0.08, - "mediumStressProportion": 0.03, - "highStressProportion": 0.01, - "qualifier": "balanced", - "totalDurationInMillis": 85920000, - "restDurationInMillis": 46080000, - "activityDurationInMillis": 16800000, - "uncategorizedDurationInMillis": 12540000, - "lowStressDurationInMillis": 6840000, - "mediumStressDurationInMillis": 2520000, - "highStressDurationInMillis": 1140000, - }, - "bodyBattery": { - "minValue": 31, - "maxValue": 100, - "chargedValue": 50, - "drainedValue": 74, - "latestValue": 31, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-03T00:05:00.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-03T02:55:33.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-07-02T02:00:17.0", - "eventStartTimeLocal": "2024-07-01T22:00:17.0", - "bodyBatteryImpact": 63, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 28500000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-07-02T10:56:49.0", - "eventStartTimeLocal": "2024-07-02T06:56:49.0", - "bodyBatteryImpact": -18, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_AEROBIC_BASE", - "deviceId": 3472661486, - "durationInMillis": 3780000, - }, - { - "eventType": "NAP", - "eventStartTimeGmt": "2024-07-02T16:17:48.0", - "eventStartTimeLocal": "2024-07-02T12:17:48.0", - "bodyBatteryImpact": 3, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 3600000, - }, - { - "eventType": "RECOVERY", - "eventStartTimeGmt": "2024-07-02T20:38:24.0", - "eventStartTimeLocal": "2024-07-02T16:38:24.0", - "bodyBatteryImpact": 2, - "feedbackType": "RECOVERY_BODY_BATTERY_INCREASE", - "shortFeedback": "BODY_BATTERY_RECHARGE", - "deviceId": 3472661486, - "durationInMillis": 1320000, - }, - ], - }, - "hydration": { - "goalInMl": 3048, - "goalInFractionalMl": 3048.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 15, - "maxValue": 38, - "minValue": 8, - "latestValue": 14, - "latestTimestampGmt": "2024-07-03T03:48:00.0", - }, - "pulseOx": { - "avgValue": 95, - "minValue": 84, - "latestValue": 88, - "latestTimestampGmt": "2024-07-03T04:00:00.0", - "latestTimestampLocal": "2024-07-03T00:00:00.0", - "avgAltitudeInMeters": 51.0, - }, - "jetLag": {}, - }, - { - "uuid": "d589d57b-6550-4f8d-8d3e-433d67758a4c", - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-03", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-07-03T04:00:00.0", - "startTimestampLocal": "2024-07-03T00:00:00.0", - "endTimestampGmt": "2024-07-04T04:00:00.0", - "endTimestampLocal": "2024-07-04T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 5000, - "value": 19844, - "distanceInMeters": 23937.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 16, - "distanceInMeters": 49.33, - }, - "floorsDescended": { - "value": 20, - "distanceInMeters": 62.12, - }, - }, - "calories": { - "burnedResting": 2221, - "burnedActive": 1396, - "burnedTotal": 3617, - "consumedGoal": 1780, - "consumedValue": 0, - "consumedRemaining": 3617, - }, - "heartRate": { - "minValue": 38, - "maxValue": 161, - "restingValue": 39, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 64, - "vigorous": 19, - }, - "stress": { - "avgLevel": 20, - "maxLevel": 90, - "restProportion": 0.56, - "activityProportion": 0.11, - "uncategorizedProportion": 0.17, - "lowStressProportion": 0.13, - "mediumStressProportion": 0.03, - "highStressProportion": 0.01, - "qualifier": "balanced", - "totalDurationInMillis": 86400000, - "restDurationInMillis": 48360000, - "activityDurationInMillis": 9660000, - "uncategorizedDurationInMillis": 14640000, - "lowStressDurationInMillis": 10860000, - "mediumStressDurationInMillis": 2160000, - "highStressDurationInMillis": 720000, - }, - "bodyBattery": { - "minValue": 28, - "maxValue": 94, - "chargedValue": 66, - "drainedValue": 69, - "latestValue": 28, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-04T02:51:24.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_RECOVERING_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_RECOVERING_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-04T03:30:18.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_RECOVERING_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_RECOVERING_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-07-03T04:28:54.0", - "eventStartTimeLocal": "2024-07-03T00:28:54.0", - "bodyBatteryImpact": 62, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 24360000, - }, - { - "eventType": "RECOVERY", - "eventStartTimeGmt": "2024-07-03T13:44:22.0", - "eventStartTimeLocal": "2024-07-03T09:44:22.0", - "bodyBatteryImpact": -1, - "feedbackType": "RECOVERY_BODY_BATTERY_NOT_INCREASE", - "shortFeedback": "RESTFUL_PERIOD", - "deviceId": 3472661486, - "durationInMillis": 1860000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-07-03T16:01:28.0", - "eventStartTimeLocal": "2024-07-03T12:01:28.0", - "bodyBatteryImpact": -20, - "feedbackType": "EXERCISE_TRAINING_EFFECT_4_GOOD_TIMING", - "shortFeedback": "HIGHLY_IMPROVING_TEMPO", - "deviceId": 3472661486, - "durationInMillis": 4980000, - }, - { - "eventType": "NAP", - "eventStartTimeGmt": "2024-07-03T19:45:08.0", - "eventStartTimeLocal": "2024-07-03T15:45:08.0", - "bodyBatteryImpact": 2, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 2700000, - }, - ], - }, - "hydration": { - "goalInMl": 3385, - "goalInFractionalMl": 3385.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 16, - "maxValue": 40, - "minValue": 9, - "latestValue": 15, - "latestTimestampGmt": "2024-07-04T03:58:00.0", - }, - "pulseOx": { - "avgValue": 95, - "minValue": 84, - "latestValue": 87, - "latestTimestampGmt": "2024-07-04T04:00:00.0", - "latestTimestampLocal": "2024-07-04T00:00:00.0", - "avgAltitudeInMeters": 22.0, - }, - "jetLag": {}, - }, - { - "uuid": "dac513f1-797b-470d-affd-5c13363b62ae", - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-04", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-07-04T04:00:00.0", - "startTimestampLocal": "2024-07-04T00:00:00.0", - "endTimestampGmt": "2024-07-05T04:00:00.0", - "endTimestampLocal": "2024-07-05T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 5000, - "value": 12624, - "distanceInMeters": 13490.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 23, - "distanceInMeters": 70.26, - }, - "floorsDescended": { - "value": 24, - "distanceInMeters": 72.7, - }, - }, - "calories": { - "burnedResting": 2221, - "burnedActive": 748, - "burnedTotal": 2969, - "consumedGoal": 1780, - "consumedValue": 0, - "consumedRemaining": 2969, - }, - "heartRate": { - "minValue": 41, - "maxValue": 147, - "restingValue": 42, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 39, - "vigorous": 0, - }, - "stress": { - "avgLevel": 26, - "maxLevel": 98, - "restProportion": 0.49, - "activityProportion": 0.13, - "uncategorizedProportion": 0.14, - "lowStressProportion": 0.16, - "mediumStressProportion": 0.07, - "highStressProportion": 0.02, - "qualifier": "balanced", - "totalDurationInMillis": 84480000, - "restDurationInMillis": 41580000, - "activityDurationInMillis": 10920000, - "uncategorizedDurationInMillis": 11880000, - "lowStressDurationInMillis": 13260000, - "mediumStressDurationInMillis": 5520000, - "highStressDurationInMillis": 1320000, - }, - "bodyBattery": { - "minValue": 27, - "maxValue": 88, - "chargedValue": 72, - "drainedValue": 62, - "latestValue": 38, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-05T01:51:08.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_BALANCED_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_BALANCED_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-05T03:30:09.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_BALANCED_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_BALANCED_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-07-04T04:16:52.0", - "eventStartTimeLocal": "2024-07-04T00:16:52.0", - "bodyBatteryImpact": 59, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 26100000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-07-04T11:45:46.0", - "eventStartTimeLocal": "2024-07-04T07:45:46.0", - "bodyBatteryImpact": -10, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_AEROBIC_BASE", - "deviceId": 3472661486, - "durationInMillis": 2340000, - }, - { - "eventType": "NAP", - "eventStartTimeGmt": "2024-07-04T18:32:50.0", - "eventStartTimeLocal": "2024-07-04T14:32:50.0", - "bodyBatteryImpact": 0, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 1140000, - }, - ], - }, - "hydration": { - "goalInMl": 2652, - "goalInFractionalMl": 2652.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 16, - "maxValue": 36, - "minValue": 8, - "latestValue": 19, - "latestTimestampGmt": "2024-07-05T04:00:00.0", - }, - "pulseOx": { - "avgValue": 96, - "minValue": 88, - "latestValue": 95, - "latestTimestampGmt": "2024-07-05T04:00:00.0", - "latestTimestampLocal": "2024-07-05T00:00:00.0", - "avgAltitudeInMeters": 24.0, - }, - "jetLag": {}, - }, - { - "uuid": "8b7fb813-a275-455a-b797-ae757519afcc", - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-05", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-07-05T04:00:00.0", - "startTimestampLocal": "2024-07-05T00:00:00.0", - "endTimestampGmt": "2024-07-06T04:00:00.0", - "endTimestampLocal": "2024-07-06T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 5000, - "value": 30555, - "distanceInMeters": 35490.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 14, - "distanceInMeters": 43.3, - }, - "floorsDescended": { - "value": 19, - "distanceInMeters": 57.59, - }, - }, - "calories": { - "burnedResting": 2221, - "burnedActive": 2168, - "burnedTotal": 4389, - "consumedGoal": 1780, - "consumedValue": 0, - "consumedRemaining": 4389, - }, - "heartRate": { - "minValue": 38, - "maxValue": 154, - "restingValue": 40, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 135, - "vigorous": 0, - }, - "stress": { - "avgLevel": 24, - "maxLevel": 93, - "restProportion": 0.49, - "activityProportion": 0.14, - "uncategorizedProportion": 0.18, - "lowStressProportion": 0.1, - "mediumStressProportion": 0.07, - "highStressProportion": 0.02, - "qualifier": "balanced", - "totalDurationInMillis": 84720000, - "restDurationInMillis": 41400000, - "activityDurationInMillis": 11880000, - "uncategorizedDurationInMillis": 15420000, - "lowStressDurationInMillis": 8640000, - "mediumStressDurationInMillis": 5760000, - "highStressDurationInMillis": 1620000, - }, - "bodyBattery": { - "minValue": 32, - "maxValue": 100, - "chargedValue": 66, - "drainedValue": 68, - "latestValue": 36, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-06T00:05:00.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-06T03:30:04.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_NOT_STRESS_DATA_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-07-05T02:30:25.0", - "eventStartTimeLocal": "2024-07-04T22:30:25.0", - "bodyBatteryImpact": 71, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 33480000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-07-05T13:28:26.0", - "eventStartTimeLocal": "2024-07-05T09:28:26.0", - "bodyBatteryImpact": -31, - "feedbackType": "EXERCISE_TRAINING_EFFECT_4_GOOD_TIMING", - "shortFeedback": "HIGHLY_IMPROVING_AEROBIC_ENDURANCE", - "deviceId": 3472661486, - "durationInMillis": 8100000, - }, - { - "eventType": "RECOVERY", - "eventStartTimeGmt": "2024-07-05T21:20:20.0", - "eventStartTimeLocal": "2024-07-05T17:20:20.0", - "bodyBatteryImpact": 0, - "feedbackType": "RECOVERY_BODY_BATTERY_NOT_INCREASE", - "shortFeedback": "RESTFUL_PERIOD", - "deviceId": 3472661486, - "durationInMillis": 1860000, - }, - ], - }, - "hydration": { - "goalInMl": 4230, - "goalInFractionalMl": 4230.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 15, - "maxValue": 38, - "minValue": 9, - "latestValue": 11, - "latestTimestampGmt": "2024-07-06T04:00:00.0", - }, - "pulseOx": { - "avgValue": 95, - "minValue": 84, - "latestValue": 95, - "latestTimestampGmt": "2024-07-06T04:00:00.0", - "latestTimestampLocal": "2024-07-06T00:00:00.0", - "avgAltitudeInMeters": 16.0, - }, - "jetLag": {}, - }, - { - "uuid": "6e054903-7c33-491c-9eac-0ea62ddbcb21", - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-06", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-07-06T04:00:00.0", - "startTimestampLocal": "2024-07-06T00:00:00.0", - "endTimestampGmt": "2024-07-07T04:00:00.0", - "endTimestampLocal": "2024-07-07T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 5000, - "value": 11886, - "distanceInMeters": 12449.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 15, - "distanceInMeters": 45.72, - }, - "floorsDescended": { - "value": 12, - "distanceInMeters": 36.25, - }, - }, - "calories": { - "burnedResting": 2221, - "burnedActive": 1052, - "burnedTotal": 3273, - "consumedGoal": 1780, - "consumedRemaining": 3273, - }, - "heartRate": { - "minValue": 39, - "maxValue": 145, - "restingValue": 40, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 57, - "vigorous": 0, - }, - "stress": { - "avgLevel": 22, - "maxLevel": 98, - "restProportion": 0.48, - "activityProportion": 0.16, - "uncategorizedProportion": 0.18, - "lowStressProportion": 0.13, - "mediumStressProportion": 0.04, - "highStressProportion": 0.01, - "qualifier": "balanced", - "totalDurationInMillis": 84060000, - "restDurationInMillis": 40200000, - "activityDurationInMillis": 13140000, - "uncategorizedDurationInMillis": 15120000, - "lowStressDurationInMillis": 11220000, - "mediumStressDurationInMillis": 3420000, - "highStressDurationInMillis": 960000, - }, - "bodyBattery": { - "minValue": 32, - "maxValue": 100, - "chargedValue": 69, - "drainedValue": 68, - "latestValue": 37, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-07T03:16:23.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_RECOVERING_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_RECOVERING_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-07T03:30:12.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_RECOVERING_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_RECOVERING_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-07-06T03:03:35.0", - "eventStartTimeLocal": "2024-07-05T23:03:35.0", - "bodyBatteryImpact": 68, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 30420000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-07-06T12:28:19.0", - "eventStartTimeLocal": "2024-07-06T08:28:19.0", - "bodyBatteryImpact": -10, - "feedbackType": "EXERCISE_TRAINING_EFFECT_2", - "shortFeedback": "MAINTAINING_AEROBIC", - "deviceId": 3472661486, - "durationInMillis": 2100000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-07-06T19:12:08.0", - "eventStartTimeLocal": "2024-07-06T15:12:08.0", - "bodyBatteryImpact": -3, - "feedbackType": "EXERCISE_TRAINING_EFFECT_BELOW_2", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 2160000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-07-06T23:55:27.0", - "eventStartTimeLocal": "2024-07-06T19:55:27.0", - "bodyBatteryImpact": -3, - "feedbackType": "EXERCISE_TRAINING_EFFECT_BELOW_2", - "shortFeedback": "EASY_RECOVERY", - "deviceId": 3472661486, - "durationInMillis": 2820000, - }, - ], - }, - "hydration": { - "goalInMl": 3376, - "goalInFractionalMl": 3376.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 15, - "maxValue": 39, - "minValue": 8, - "latestValue": 10, - "latestTimestampGmt": "2024-07-07T04:00:00.0", - }, - "pulseOx": { - "avgValue": 94, - "minValue": 86, - "latestValue": 94, - "latestTimestampGmt": "2024-07-07T04:00:00.0", - "latestTimestampLocal": "2024-07-07T00:00:00.0", - "avgAltitudeInMeters": 13.0, - }, - "jetLag": {}, - }, - { - "uuid": "f0d9541c-9130-4f5d-aacd-e9c3de3276d4", - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-07", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": true, - "wellnessChronology": { - "startTimestampGmt": "2024-07-07T04:00:00.0", - "startTimestampLocal": "2024-07-07T00:00:00.0", - "endTimestampGmt": "2024-07-08T04:00:00.0", - "endTimestampLocal": "2024-07-08T00:00:00.0", - "totalDurationInMillis": 86400000, - }, - "movement": { - "steps": { - "goal": 5000, - "value": 13815, - "distanceInMeters": 15369.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 13, - "distanceInMeters": 39.62, - }, - "floorsDescended": { - "value": 13, - "distanceInMeters": 39.23, - }, - }, - "calories": { - "burnedResting": 2221, - "burnedActive": 861, - "burnedTotal": 3082, - "consumedGoal": 1780, - "consumedRemaining": 3082, - }, - "heartRate": { - "minValue": 38, - "maxValue": 163, - "restingValue": 39, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 27, - "vigorous": 14, - }, - "stress": { - "avgLevel": 27, - "maxLevel": 90, - "restProportion": 0.47, - "activityProportion": 0.13, - "uncategorizedProportion": 0.12, - "lowStressProportion": 0.18, - "mediumStressProportion": 0.09, - "highStressProportion": 0.01, - "qualifier": "balanced", - "totalDurationInMillis": 84840000, - "restDurationInMillis": 39840000, - "activityDurationInMillis": 10740000, - "uncategorizedDurationInMillis": 10200000, - "lowStressDurationInMillis": 15600000, - "mediumStressDurationInMillis": 7380000, - "highStressDurationInMillis": 1080000, - }, - "bodyBattery": { - "minValue": 29, - "maxValue": 98, - "chargedValue": 74, - "drainedValue": 69, - "latestValue": 42, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-08T00:05:01.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_PREPARATION_BALANCED_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_PREPARATION_BALANCED_AND_INTENSIVE_EXERCISE", - }, - "endOfDayDynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-08T03:30:05.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "SLEEP_TIME_PASSED_BALANCED_AND_INTENSIVE_EXERCISE", - "feedbackLongType": "SLEEP_TIME_PASSED_BALANCED_AND_INTENSIVE_EXERCISE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-07-07T03:30:04.0", - "eventStartTimeLocal": "2024-07-06T23:30:04.0", - "bodyBatteryImpact": 66, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 26100000, - }, - { - "eventType": "ACTIVITY", - "eventStartTimeGmt": "2024-07-07T11:19:09.0", - "eventStartTimeLocal": "2024-07-07T07:19:09.0", - "bodyBatteryImpact": -12, - "feedbackType": "EXERCISE_TRAINING_EFFECT_3", - "shortFeedback": "IMPROVING_LACTATE_THRESHOLD", - "deviceId": 3472661486, - "durationInMillis": 2520000, - }, - ], - }, - "hydration": { - "goalInMl": 2698, - "goalInFractionalMl": 2698.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 16, - "maxValue": 39, - "minValue": 8, - "latestValue": 9, - "latestTimestampGmt": "2024-07-08T04:00:00.0", - }, - "pulseOx": { - "avgValue": 94, - "minValue": 87, - "latestValue": 91, - "latestTimestampGmt": "2024-07-08T04:00:00.0", - "latestTimestampLocal": "2024-07-08T00:00:00.0", - "avgAltitudeInMeters": 52.0, - }, - "jetLag": {}, - }, - { - "uuid": "4afb7589-4a40-42b7-b9d1-7950aa133f81", - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-08", - "source": "garmin", - "includesWellnessData": true, - "includesActivityData": false, - "wellnessChronology": { - "startTimestampGmt": "2024-07-08T04:00:00.0", - "startTimestampLocal": "2024-07-08T00:00:00.0", - "endTimestampGmt": "2024-07-08T15:47:00.0", - "endTimestampLocal": "2024-07-08T11:47:00.0", - "totalDurationInMillis": 42420000, - }, - "movement": { - "steps": { - "goal": 5000, - "value": 5721, - "distanceInMeters": 4818.0, - }, - "pushes": {}, - "floorsAscended": { - "goal": 10, - "value": 6, - "distanceInMeters": 18.29, - }, - "floorsDescended": { - "value": 7, - "distanceInMeters": 20.87, - }, - }, - "calories": { - "burnedResting": 1095, - "burnedActive": 137, - "burnedTotal": 1232, - "consumedGoal": 1780, - "consumedValue": 1980, - "consumedRemaining": -748, - }, - "heartRate": { - "minValue": 38, - "maxValue": 87, - "restingValue": 38, - }, - "intensityMinutes": { - "goal": 150, - "moderate": 0, - "vigorous": 0, - }, - "stress": { - "avgLevel": 19, - "maxLevel": 75, - "restProportion": 0.66, - "activityProportion": 0.15, - "uncategorizedProportion": 0.04, - "lowStressProportion": 0.13, - "mediumStressProportion": 0.02, - "highStressProportion": 0.0, - "qualifier": "unknown", - "totalDurationInMillis": 41460000, - "restDurationInMillis": 27480000, - "activityDurationInMillis": 6180000, - "uncategorizedDurationInMillis": 1560000, - "lowStressDurationInMillis": 5580000, - "mediumStressDurationInMillis": 660000, - }, - "bodyBattery": { - "minValue": 43, - "maxValue": 92, - "chargedValue": 49, - "drainedValue": 26, - "latestValue": 66, - "featureVersion": "3.0", - "dynamicFeedbackEvent": { - "eventTimestampGmt": "2024-07-08T14:22:04.0", - "bodyBatteryLevel": "HIGH", - "feedbackShortType": "DAY_RECOVERING_AND_INACTIVE", - "feedbackLongType": "DAY_RECOVERING_AND_INACTIVE", - }, - "activityEvents": [ - { - "eventType": "SLEEP", - "eventStartTimeGmt": "2024-07-08T01:58:45.0", - "eventStartTimeLocal": "2024-07-07T21:58:45.0", - "bodyBatteryImpact": 63, - "feedbackType": "NONE", - "shortFeedback": "NONE", - "deviceId": 3472661486, - "durationInMillis": 30180000, - } - ], - }, - "hydration": { - "goalInMl": 2000, - "goalInFractionalMl": 2000.0, - "consumedInMl": 0, - "consumedInFractionalMl": 0.0, - }, - "respiration": { - "avgValue": 13, - "maxValue": 20, - "minValue": 8, - "latestValue": 14, - "latestTimestampGmt": "2024-07-08T15:43:00.0", - }, - "pulseOx": { - "avgValue": 96, - "minValue": 89, - "latestValue": 96, - "latestTimestampGmt": "2024-07-08T15:45:00.0", - "latestTimestampLocal": "2024-07-08T11:45:00.0", - "avgAltitudeInMeters": 47.0, - }, - "jetLag": {}, - }, - ] - } - } - }, - }, - { - "query": { - "query": 'query{workoutScheduleSummariesScalar(startDate:"2024-07-08", endDate:"2024-07-09")}' - }, - "response": {"data": {"workoutScheduleSummariesScalar": []}}, - }, - { - "query": { - "query": 'query{trainingPlanScalar(calendarDate:"2024-07-08", lang:"en-US", firstDayOfWeek:"monday")}' - }, - "response": { - "data": { - "trainingPlanScalar": {"trainingPlanWorkoutScheduleDTOS": []} - } - }, - }, - { - "query": { - "query": 'query{\n menstrualCycleDetail(date:"2024-07-08", todayDate:"2024-07-08"){\n daySummary { pregnancyCycle } \n dayLog { calendarDate, symptoms, moods, discharge, hasBabyMovement }\n }\n }' - }, - "response": {"data": {"menstrualCycleDetail": null}}, - }, - { - "query": { - "query": 'query{activityStatsScalar(\n aggregation:"daily",\n startDate:"2024-06-10",\n endDate:"2024-07-08",\n metrics:["duration","distance"],\n activityType:["running","cycling","swimming","walking","multi_sport","fitness_equipment","para_sports"],\n groupByParentActivityType:true,\n standardizedUnits: true)}' - }, - "response": { - "data": { - "activityStatsScalar": [ - { - "date": "2024-06-10", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 2845.68505859375, - "max": 2845.68505859375, - "avg": 2845.68505859375, - "sum": 2845.68505859375, - }, - "distance": { - "count": 1, - "min": 9771.4697265625, - "max": 9771.4697265625, - "avg": 9771.4697265625, - "sum": 9771.4697265625, - }, - }, - "walking": { - "duration": { - "count": 1, - "min": 3926.763916015625, - "max": 3926.763916015625, - "avg": 3926.763916015625, - "sum": 3926.763916015625, - }, - "distance": { - "count": 1, - "min": 3562.929931640625, - "max": 3562.929931640625, - "avg": 3562.929931640625, - "sum": 3562.929931640625, - }, - }, - "fitness_equipment": { - "duration": { - "count": 1, - "min": 2593.52197265625, - "max": 2593.52197265625, - "avg": 2593.52197265625, - "sum": 2593.52197265625, - }, - "distance": { - "count": 1, - "min": 0.0, - "max": 0.0, - "avg": 0.0, - "sum": 0.0, - }, - }, - }, - }, - { - "date": "2024-06-11", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 3711.85693359375, - "max": 3711.85693359375, - "avg": 3711.85693359375, - "sum": 3711.85693359375, - }, - "distance": { - "count": 1, - "min": 14531.3095703125, - "max": 14531.3095703125, - "avg": 14531.3095703125, - "sum": 14531.3095703125, - }, - } - }, - }, - { - "date": "2024-06-12", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 4927.0830078125, - "max": 4927.0830078125, - "avg": 4927.0830078125, - "sum": 4927.0830078125, - }, - "distance": { - "count": 1, - "min": 17479.609375, - "max": 17479.609375, - "avg": 17479.609375, - "sum": 17479.609375, - }, - } - }, - }, - { - "date": "2024-06-13", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 4195.57421875, - "max": 4195.57421875, - "avg": 4195.57421875, - "sum": 4195.57421875, - }, - "distance": { - "count": 1, - "min": 14953.9501953125, - "max": 14953.9501953125, - "avg": 14953.9501953125, - "sum": 14953.9501953125, - }, - } - }, - }, - { - "date": "2024-06-15", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 2906.675048828125, - "max": 2906.675048828125, - "avg": 2906.675048828125, - "sum": 2906.675048828125, - }, - "distance": { - "count": 1, - "min": 10443.400390625, - "max": 10443.400390625, - "avg": 10443.400390625, - "sum": 10443.400390625, - }, - } - }, - }, - { - "date": "2024-06-16", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 3721.305908203125, - "max": 3721.305908203125, - "avg": 3721.305908203125, - "sum": 3721.305908203125, - }, - "distance": { - "count": 1, - "min": 13450.8701171875, - "max": 13450.8701171875, - "avg": 13450.8701171875, - "sum": 13450.8701171875, - }, - } - }, - }, - { - "date": "2024-06-18", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 3197.089111328125, - "max": 3197.089111328125, - "avg": 3197.089111328125, - "sum": 3197.089111328125, - }, - "distance": { - "count": 1, - "min": 11837.3095703125, - "max": 11837.3095703125, - "avg": 11837.3095703125, - "sum": 11837.3095703125, - }, - } - }, - }, - { - "date": "2024-06-19", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 2806.593017578125, - "max": 2806.593017578125, - "avg": 2806.593017578125, - "sum": 2806.593017578125, - }, - "distance": { - "count": 1, - "min": 9942.1103515625, - "max": 9942.1103515625, - "avg": 9942.1103515625, - "sum": 9942.1103515625, - }, - } - }, - }, - { - "date": "2024-06-20", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 3574.9140625, - "max": 3574.9140625, - "avg": 3574.9140625, - "sum": 3574.9140625, - }, - "distance": { - "count": 1, - "min": 12095.3896484375, - "max": 12095.3896484375, - "avg": 12095.3896484375, - "sum": 12095.3896484375, - }, - }, - "fitness_equipment": { - "duration": { - "count": 1, - "min": 4576.27001953125, - "max": 4576.27001953125, - "avg": 4576.27001953125, - "sum": 4576.27001953125, - }, - "distance": { - "count": 1, - "min": 0.0, - "max": 0.0, - "avg": 0.0, - "sum": 0.0, - }, - }, - }, - }, - { - "date": "2024-06-21", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 2835.626953125, - "max": 2835.626953125, - "avg": 2835.626953125, - "sum": 2835.626953125, - }, - "distance": { - "count": 1, - "min": 9723.2001953125, - "max": 9723.2001953125, - "avg": 9723.2001953125, - "sum": 9723.2001953125, - }, - } - }, - }, - { - "date": "2024-06-22", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 8684.939453125, - "max": 8684.939453125, - "avg": 8684.939453125, - "sum": 8684.939453125, - }, - "distance": { - "count": 1, - "min": 32826.390625, - "max": 32826.390625, - "avg": 32826.390625, - "sum": 32826.390625, - }, - } - }, - }, - { - "date": "2024-06-23", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 3077.04296875, - "max": 3077.04296875, - "avg": 3077.04296875, - "sum": 3077.04296875, - }, - "distance": { - "count": 1, - "min": 10503.599609375, - "max": 10503.599609375, - "avg": 10503.599609375, - "sum": 10503.599609375, - }, - } - }, - }, - { - "date": "2024-06-25", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 5137.69384765625, - "max": 5137.69384765625, - "avg": 5137.69384765625, - "sum": 5137.69384765625, - }, - "distance": { - "count": 1, - "min": 17729.759765625, - "max": 17729.759765625, - "avg": 17729.759765625, - "sum": 17729.759765625, - }, - }, - "fitness_equipment": { - "duration": { - "count": 1, - "min": 3424.47705078125, - "max": 3424.47705078125, - "avg": 3424.47705078125, - "sum": 3424.47705078125, - }, - "distance": { - "count": 1, - "min": 0.0, - "max": 0.0, - "avg": 0.0, - "sum": 0.0, - }, - }, - }, - }, - { - "date": "2024-06-26", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 2388.825927734375, - "max": 2388.825927734375, - "avg": 2388.825927734375, - "sum": 2388.825927734375, - }, - "distance": { - "count": 1, - "min": 8279.1103515625, - "max": 8279.1103515625, - "avg": 8279.1103515625, - "sum": 8279.1103515625, - }, - } - }, - }, - { - "date": "2024-06-27", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 6033.0078125, - "max": 6033.0078125, - "avg": 6033.0078125, - "sum": 6033.0078125, - }, - "distance": { - "count": 1, - "min": 21711.5390625, - "max": 21711.5390625, - "avg": 21711.5390625, - "sum": 21711.5390625, - }, - } - }, - }, - { - "date": "2024-06-28", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 2700.639892578125, - "max": 2700.639892578125, - "avg": 2700.639892578125, - "sum": 2700.639892578125, - }, - "distance": { - "count": 1, - "min": 9678.0703125, - "max": 9678.0703125, - "avg": 9678.0703125, - "sum": 9678.0703125, - }, - } - }, - }, - { - "date": "2024-06-29", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 3, - "min": 379.8340148925781, - "max": 1066.72802734375, - "avg": 655.4540100097656, - "sum": 1966.3620300292969, - }, - "distance": { - "count": 3, - "min": 1338.8199462890625, - "max": 4998.83984375, - "avg": 2704.4499104817705, - "sum": 8113.3497314453125, - }, - }, - "fitness_equipment": { - "duration": { - "count": 1, - "min": 3340.532958984375, - "max": 3340.532958984375, - "avg": 3340.532958984375, - "sum": 3340.532958984375, - }, - "distance": { - "count": 1, - "min": 0.0, - "max": 0.0, - "avg": 0.0, - "sum": 0.0, - }, - }, - }, - }, - { - "date": "2024-06-30", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 8286.94140625, - "max": 8286.94140625, - "avg": 8286.94140625, - "sum": 8286.94140625, - }, - "distance": { - "count": 1, - "min": 29314.099609375, - "max": 29314.099609375, - "avg": 29314.099609375, - "sum": 29314.099609375, - }, - } - }, - }, - { - "date": "2024-07-01", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 2693.840087890625, - "max": 2693.840087890625, - "avg": 2693.840087890625, - "sum": 2693.840087890625, - }, - "distance": { - "count": 1, - "min": 9801.0595703125, - "max": 9801.0595703125, - "avg": 9801.0595703125, - "sum": 9801.0595703125, - }, - } - }, - }, - { - "date": "2024-07-02", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 3777.14892578125, - "max": 3777.14892578125, - "avg": 3777.14892578125, - "sum": 3777.14892578125, - }, - "distance": { - "count": 1, - "min": 12951.5302734375, - "max": 12951.5302734375, - "avg": 12951.5302734375, - "sum": 12951.5302734375, - }, - } - }, - }, - { - "date": "2024-07-03", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 4990.2158203125, - "max": 4990.2158203125, - "avg": 4990.2158203125, - "sum": 4990.2158203125, - }, - "distance": { - "count": 1, - "min": 19324.55078125, - "max": 19324.55078125, - "avg": 19324.55078125, - "sum": 19324.55078125, - }, - } - }, - }, - { - "date": "2024-07-04", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 2351.343017578125, - "max": 2351.343017578125, - "avg": 2351.343017578125, - "sum": 2351.343017578125, - }, - "distance": { - "count": 1, - "min": 8373.5498046875, - "max": 8373.5498046875, - "avg": 8373.5498046875, - "sum": 8373.5498046875, - }, - } - }, - }, - { - "date": "2024-07-05", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 8030.9619140625, - "max": 8030.9619140625, - "avg": 8030.9619140625, - "sum": 8030.9619140625, - }, - "distance": { - "count": 1, - "min": 28973.609375, - "max": 28973.609375, - "avg": 28973.609375, - "sum": 28973.609375, - }, - } - }, - }, - { - "date": "2024-07-06", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 2123.346923828125, - "max": 2123.346923828125, - "avg": 2123.346923828125, - "sum": 2123.346923828125, - }, - "distance": { - "count": 1, - "min": 7408.22998046875, - "max": 7408.22998046875, - "avg": 7408.22998046875, - "sum": 7408.22998046875, - }, - }, - "cycling": { - "duration": { - "count": 1, - "min": 2853.280029296875, - "max": 2853.280029296875, - "avg": 2853.280029296875, - "sum": 2853.280029296875, - }, - "distance": { - "count": 1, - "min": 15816.48046875, - "max": 15816.48046875, - "avg": 15816.48046875, - "sum": 15816.48046875, - }, - }, - }, - }, - { - "date": "2024-07-07", - "countOfActivities": 1, - "stats": { - "running": { - "duration": { - "count": 1, - "min": 2516.8779296875, - "max": 2516.8779296875, - "avg": 2516.8779296875, - "sum": 2516.8779296875, - }, - "distance": { - "count": 1, - "min": 9866.7802734375, - "max": 9866.7802734375, - "avg": 9866.7802734375, - "sum": 9866.7802734375, - }, - } - }, - }, - ] - } - }, - }, - { - "query": { - "query": 'query{activityStatsScalar(\n aggregation:"daily",\n startDate:"2024-06-10",\n endDate:"2024-07-08",\n metrics:["duration","distance"],\n groupByParentActivityType:false,\n standardizedUnits: true)}' - }, - "response": { - "data": { - "activityStatsScalar": [ - { - "date": "2024-06-10", - "countOfActivities": 3, - "stats": { - "all": { - "duration": { - "count": 3, - "min": 2593.52197265625, - "max": 3926.763916015625, - "avg": 3121.9903157552085, - "sum": 9365.970947265625, - }, - "distance": { - "count": 3, - "min": 0.0, - "max": 9771.4697265625, - "avg": 4444.799886067708, - "sum": 13334.399658203125, - }, - } - }, - }, - { - "date": "2024-06-11", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 3711.85693359375, - "max": 3711.85693359375, - "avg": 3711.85693359375, - "sum": 3711.85693359375, - }, - "distance": { - "count": 1, - "min": 14531.3095703125, - "max": 14531.3095703125, - "avg": 14531.3095703125, - "sum": 14531.3095703125, - }, - } - }, - }, - { - "date": "2024-06-12", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 4927.0830078125, - "max": 4927.0830078125, - "avg": 4927.0830078125, - "sum": 4927.0830078125, - }, - "distance": { - "count": 1, - "min": 17479.609375, - "max": 17479.609375, - "avg": 17479.609375, - "sum": 17479.609375, - }, - } - }, - }, - { - "date": "2024-06-13", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 4195.57421875, - "max": 4195.57421875, - "avg": 4195.57421875, - "sum": 4195.57421875, - }, - "distance": { - "count": 1, - "min": 14953.9501953125, - "max": 14953.9501953125, - "avg": 14953.9501953125, - "sum": 14953.9501953125, - }, - } - }, - }, - { - "date": "2024-06-15", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 2906.675048828125, - "max": 2906.675048828125, - "avg": 2906.675048828125, - "sum": 2906.675048828125, - }, - "distance": { - "count": 1, - "min": 10443.400390625, - "max": 10443.400390625, - "avg": 10443.400390625, - "sum": 10443.400390625, - }, - } - }, - }, - { - "date": "2024-06-16", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 3721.305908203125, - "max": 3721.305908203125, - "avg": 3721.305908203125, - "sum": 3721.305908203125, - }, - "distance": { - "count": 1, - "min": 13450.8701171875, - "max": 13450.8701171875, - "avg": 13450.8701171875, - "sum": 13450.8701171875, - }, - } - }, - }, - { - "date": "2024-06-18", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 3197.089111328125, - "max": 3197.089111328125, - "avg": 3197.089111328125, - "sum": 3197.089111328125, - }, - "distance": { - "count": 1, - "min": 11837.3095703125, - "max": 11837.3095703125, - "avg": 11837.3095703125, - "sum": 11837.3095703125, - }, - } - }, - }, - { - "date": "2024-06-19", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 2806.593017578125, - "max": 2806.593017578125, - "avg": 2806.593017578125, - "sum": 2806.593017578125, - }, - "distance": { - "count": 1, - "min": 9942.1103515625, - "max": 9942.1103515625, - "avg": 9942.1103515625, - "sum": 9942.1103515625, - }, - } - }, - }, - { - "date": "2024-06-20", - "countOfActivities": 2, - "stats": { - "all": { - "duration": { - "count": 2, - "min": 3574.9140625, - "max": 4576.27001953125, - "avg": 4075.592041015625, - "sum": 8151.18408203125, - }, - "distance": { - "count": 2, - "min": 0.0, - "max": 12095.3896484375, - "avg": 6047.69482421875, - "sum": 12095.3896484375, - }, - } - }, - }, - { - "date": "2024-06-21", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 2835.626953125, - "max": 2835.626953125, - "avg": 2835.626953125, - "sum": 2835.626953125, - }, - "distance": { - "count": 1, - "min": 9723.2001953125, - "max": 9723.2001953125, - "avg": 9723.2001953125, - "sum": 9723.2001953125, - }, - } - }, - }, - { - "date": "2024-06-22", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 8684.939453125, - "max": 8684.939453125, - "avg": 8684.939453125, - "sum": 8684.939453125, - }, - "distance": { - "count": 1, - "min": 32826.390625, - "max": 32826.390625, - "avg": 32826.390625, - "sum": 32826.390625, - }, - } - }, - }, - { - "date": "2024-06-23", - "countOfActivities": 2, - "stats": { - "all": { - "duration": { - "count": 2, - "min": 3077.04296875, - "max": 6026.98193359375, - "avg": 4552.012451171875, - "sum": 9104.02490234375, - }, - "distance": { - "count": 2, - "min": 10503.599609375, - "max": 12635.1796875, - "avg": 11569.3896484375, - "sum": 23138.779296875, - }, - } - }, - }, - { - "date": "2024-06-25", - "countOfActivities": 2, - "stats": { - "all": { - "duration": { - "count": 2, - "min": 3424.47705078125, - "max": 5137.69384765625, - "avg": 4281.08544921875, - "sum": 8562.1708984375, - }, - "distance": { - "count": 2, - "min": 0.0, - "max": 17729.759765625, - "avg": 8864.8798828125, - "sum": 17729.759765625, - }, - } - }, - }, - { - "date": "2024-06-26", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 2388.825927734375, - "max": 2388.825927734375, - "avg": 2388.825927734375, - "sum": 2388.825927734375, - }, - "distance": { - "count": 1, - "min": 8279.1103515625, - "max": 8279.1103515625, - "avg": 8279.1103515625, - "sum": 8279.1103515625, - }, - } - }, - }, - { - "date": "2024-06-27", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 6033.0078125, - "max": 6033.0078125, - "avg": 6033.0078125, - "sum": 6033.0078125, - }, - "distance": { - "count": 1, - "min": 21711.5390625, - "max": 21711.5390625, - "avg": 21711.5390625, - "sum": 21711.5390625, - }, - } - }, - }, - { - "date": "2024-06-28", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 2700.639892578125, - "max": 2700.639892578125, - "avg": 2700.639892578125, - "sum": 2700.639892578125, - }, - "distance": { - "count": 1, - "min": 9678.0703125, - "max": 9678.0703125, - "avg": 9678.0703125, - "sum": 9678.0703125, - }, - } - }, - }, - { - "date": "2024-06-29", - "countOfActivities": 4, - "stats": { - "all": { - "duration": { - "count": 4, - "min": 379.8340148925781, - "max": 3340.532958984375, - "avg": 1326.723747253418, - "sum": 5306.894989013672, - }, - "distance": { - "count": 4, - "min": 0.0, - "max": 4998.83984375, - "avg": 2028.3374328613281, - "sum": 8113.3497314453125, - }, - } - }, - }, - { - "date": "2024-06-30", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 8286.94140625, - "max": 8286.94140625, - "avg": 8286.94140625, - "sum": 8286.94140625, - }, - "distance": { - "count": 1, - "min": 29314.099609375, - "max": 29314.099609375, - "avg": 29314.099609375, - "sum": 29314.099609375, - }, - } - }, - }, - { - "date": "2024-07-01", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 2693.840087890625, - "max": 2693.840087890625, - "avg": 2693.840087890625, - "sum": 2693.840087890625, - }, - "distance": { - "count": 1, - "min": 9801.0595703125, - "max": 9801.0595703125, - "avg": 9801.0595703125, - "sum": 9801.0595703125, - }, - } - }, - }, - { - "date": "2024-07-02", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 3777.14892578125, - "max": 3777.14892578125, - "avg": 3777.14892578125, - "sum": 3777.14892578125, - }, - "distance": { - "count": 1, - "min": 12951.5302734375, - "max": 12951.5302734375, - "avg": 12951.5302734375, - "sum": 12951.5302734375, - }, - } - }, - }, - { - "date": "2024-07-03", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 4990.2158203125, - "max": 4990.2158203125, - "avg": 4990.2158203125, - "sum": 4990.2158203125, - }, - "distance": { - "count": 1, - "min": 19324.55078125, - "max": 19324.55078125, - "avg": 19324.55078125, - "sum": 19324.55078125, - }, - } - }, - }, - { - "date": "2024-07-04", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 2351.343017578125, - "max": 2351.343017578125, - "avg": 2351.343017578125, - "sum": 2351.343017578125, - }, - "distance": { - "count": 1, - "min": 8373.5498046875, - "max": 8373.5498046875, - "avg": 8373.5498046875, - "sum": 8373.5498046875, - }, - } - }, - }, - { - "date": "2024-07-05", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 8030.9619140625, - "max": 8030.9619140625, - "avg": 8030.9619140625, - "sum": 8030.9619140625, - }, - "distance": { - "count": 1, - "min": 28973.609375, - "max": 28973.609375, - "avg": 28973.609375, - "sum": 28973.609375, - }, - } - }, - }, - { - "date": "2024-07-06", - "countOfActivities": 3, - "stats": { - "all": { - "duration": { - "count": 3, - "min": 2123.346923828125, - "max": 2853.280029296875, - "avg": 2391.8193359375, - "sum": 7175.4580078125, - }, - "distance": { - "count": 3, - "min": 2285.330078125, - "max": 15816.48046875, - "avg": 8503.346842447916, - "sum": 25510.04052734375, - }, - } - }, - }, - { - "date": "2024-07-07", - "countOfActivities": 1, - "stats": { - "all": { - "duration": { - "count": 1, - "min": 2516.8779296875, - "max": 2516.8779296875, - "avg": 2516.8779296875, - "sum": 2516.8779296875, - }, - "distance": { - "count": 1, - "min": 9866.7802734375, - "max": 9866.7802734375, - "avg": 9866.7802734375, - "sum": 9866.7802734375, - }, - } - }, - }, - ] - } - }, - }, - { - "query": { - "query": 'query{sleepScalar(date:"2024-07-08", sleepOnly: false)}' - }, - "response": { - "data": { - "sleepScalar": { - "dailySleepDTO": { - "id": 1720403925000, - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-08", - "sleepTimeSeconds": 29580, - "napTimeSeconds": 0, - "sleepWindowConfirmed": true, - "sleepWindowConfirmationType": "enhanced_confirmed_final", - "sleepStartTimestampGMT": 1720403925000, - "sleepEndTimestampGMT": 1720434105000, - "sleepStartTimestampLocal": 1720389525000, - "sleepEndTimestampLocal": 1720419705000, - "autoSleepStartTimestampGMT": null, - "autoSleepEndTimestampGMT": null, - "sleepQualityTypePK": null, - "sleepResultTypePK": null, - "unmeasurableSleepSeconds": 0, - "deepSleepSeconds": 6360, - "lightSleepSeconds": 16260, - "remSleepSeconds": 6960, - "awakeSleepSeconds": 600, - "deviceRemCapable": true, - "retro": false, - "sleepFromDevice": true, - "averageSpO2Value": 95.0, - "lowestSpO2Value": 89, - "highestSpO2Value": 100, - "averageSpO2HRSleep": 42.0, - "averageRespirationValue": 14.0, - "lowestRespirationValue": 8.0, - "highestRespirationValue": 21.0, - "awakeCount": 1, - "avgSleepStress": 20.0, - "ageGroup": "ADULT", - "sleepScoreFeedback": "POSITIVE_LONG_AND_DEEP", - "sleepScoreInsight": "NONE", - "sleepScorePersonalizedInsight": "NOT_AVAILABLE", - "sleepScores": { - "totalDuration": { - "qualifierKey": "EXCELLENT", - "optimalStart": 28800.0, - "optimalEnd": 28800.0, - }, - "stress": { - "qualifierKey": "FAIR", - "optimalStart": 0.0, - "optimalEnd": 15.0, - }, - "awakeCount": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 1.0, - }, - "overall": {"value": 89, "qualifierKey": "GOOD"}, - "remPercentage": { - "value": 24, - "qualifierKey": "EXCELLENT", - "optimalStart": 21.0, - "optimalEnd": 31.0, - "idealStartInSeconds": 6211.8, - "idealEndInSeconds": 9169.8, - }, - "restlessness": { - "qualifierKey": "EXCELLENT", - "optimalStart": 0.0, - "optimalEnd": 5.0, - }, - "lightPercentage": { - "value": 55, - "qualifierKey": "EXCELLENT", - "optimalStart": 30.0, - "optimalEnd": 64.0, - "idealStartInSeconds": 8874.0, - "idealEndInSeconds": 18931.2, - }, - "deepPercentage": { - "value": 22, - "qualifierKey": "EXCELLENT", - "optimalStart": 16.0, - "optimalEnd": 33.0, - "idealStartInSeconds": 4732.8, - "idealEndInSeconds": 9761.4, - }, - }, - "sleepVersion": 2, - "sleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-08", - "deviceId": 3472661486, - "timestampGmt": "2024-07-07T12:03:49", - "baseline": 480, - "actual": 500, - "feedback": "INCREASED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "NO_CHANGE", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": true, - "preferredActivityTracker": true, - }, - "nextSleepNeed": { - "userProfilePk": "user_id: int", - "calendarDate": "2024-07-09", - "deviceId": 3472661486, - "timestampGmt": "2024-07-08T13:33:50", - "baseline": 480, - "actual": 480, - "feedback": "NO_CHANGE_BALANCED", - "trainingFeedback": "CHRONIC", - "sleepHistoryAdjustment": "DECREASING_HIGH_QUALITY", - "hrvAdjustment": "NO_CHANGE", - "napAdjustment": "NO_CHANGE", - "displayedForTheDay": false, - "preferredActivityTracker": true, - }, - }, - "sleepMovement": [ - { - "startGMT": "2024-07-08T00:58:00.0", - "endGMT": "2024-07-08T00:59:00.0", - "activityLevel": 5.950187900954773, - }, - { - "startGMT": "2024-07-08T00:59:00.0", - "endGMT": "2024-07-08T01:00:00.0", - "activityLevel": 5.6630425762949645, - }, - { - "startGMT": "2024-07-08T01:00:00.0", - "endGMT": "2024-07-08T01:01:00.0", - "activityLevel": 5.422739096659621, - }, - { - "startGMT": "2024-07-08T01:01:00.0", - "endGMT": "2024-07-08T01:02:00.0", - "activityLevel": 5.251316003495859, - }, - { - "startGMT": "2024-07-08T01:02:00.0", - "endGMT": "2024-07-08T01:03:00.0", - "activityLevel": 5.166378219824125, - }, - { - "startGMT": "2024-07-08T01:03:00.0", - "endGMT": "2024-07-08T01:04:00.0", - "activityLevel": 5.176831912428479, - }, - { - "startGMT": "2024-07-08T01:04:00.0", - "endGMT": "2024-07-08T01:05:00.0", - "activityLevel": 5.280364670798585, - }, - { - "startGMT": "2024-07-08T01:05:00.0", - "endGMT": "2024-07-08T01:06:00.0", - "activityLevel": 5.467423966676771, - }, - { - "startGMT": "2024-07-08T01:06:00.0", - "endGMT": "2024-07-08T01:07:00.0", - "activityLevel": 5.707501653783791, - }, - { - "startGMT": "2024-07-08T01:07:00.0", - "endGMT": "2024-07-08T01:08:00.0", - "activityLevel": 5.98610568657474, - }, - { - "startGMT": "2024-07-08T01:08:00.0", - "endGMT": "2024-07-08T01:09:00.0", - "activityLevel": 6.271329168295636, - }, - { - "startGMT": "2024-07-08T01:09:00.0", - "endGMT": "2024-07-08T01:10:00.0", - "activityLevel": 6.542904534717018, - }, - { - "startGMT": "2024-07-08T01:10:00.0", - "endGMT": "2024-07-08T01:11:00.0", - "activityLevel": 6.783019710668306, - }, - { - "startGMT": "2024-07-08T01:11:00.0", - "endGMT": "2024-07-08T01:12:00.0", - "activityLevel": 6.977938839949864, - }, - { - "startGMT": "2024-07-08T01:12:00.0", - "endGMT": "2024-07-08T01:13:00.0", - "activityLevel": 7.117872615089607, - }, - { - "startGMT": "2024-07-08T01:13:00.0", - "endGMT": "2024-07-08T01:14:00.0", - "activityLevel": 7.192558858020865, - }, - { - "startGMT": "2024-07-08T01:14:00.0", - "endGMT": "2024-07-08T01:15:00.0", - "activityLevel": 7.2017123514939305, - }, - { - "startGMT": "2024-07-08T01:15:00.0", - "endGMT": "2024-07-08T01:16:00.0", - "activityLevel": 7.154542063772914, - }, - { - "startGMT": "2024-07-08T01:16:00.0", - "endGMT": "2024-07-08T01:17:00.0", - "activityLevel": 7.049364449097269, - }, - { - "startGMT": "2024-07-08T01:17:00.0", - "endGMT": "2024-07-08T01:18:00.0", - "activityLevel": 6.898245332898234, - }, - { - "startGMT": "2024-07-08T01:18:00.0", - "endGMT": "2024-07-08T01:19:00.0", - "activityLevel": 6.713207432023164, - }, - { - "startGMT": "2024-07-08T01:19:00.0", - "endGMT": "2024-07-08T01:20:00.0", - "activityLevel": 6.512140450991122, - }, - { - "startGMT": "2024-07-08T01:20:00.0", - "endGMT": "2024-07-08T01:21:00.0", - "activityLevel": 6.307503482446506, - }, - { - "startGMT": "2024-07-08T01:21:00.0", - "endGMT": "2024-07-08T01:22:00.0", - "activityLevel": 6.117088515503814, - }, - { - "startGMT": "2024-07-08T01:22:00.0", - "endGMT": "2024-07-08T01:23:00.0", - "activityLevel": 5.947438672664253, - }, - { - "startGMT": "2024-07-08T01:23:00.0", - "endGMT": "2024-07-08T01:24:00.0", - "activityLevel": 5.801580596048765, - }, - { - "startGMT": "2024-07-08T01:24:00.0", - "endGMT": "2024-07-08T01:25:00.0", - "activityLevel": 5.687383310059647, - }, - { - "startGMT": "2024-07-08T01:25:00.0", - "endGMT": "2024-07-08T01:26:00.0", - "activityLevel": 5.607473140911092, - }, - { - "startGMT": "2024-07-08T01:26:00.0", - "endGMT": "2024-07-08T01:27:00.0", - "activityLevel": 5.550376997982641, - }, - { - "startGMT": "2024-07-08T01:27:00.0", - "endGMT": "2024-07-08T01:28:00.0", - "activityLevel": 5.504002553323602, - }, - { - "startGMT": "2024-07-08T01:28:00.0", - "endGMT": "2024-07-08T01:29:00.0", - "activityLevel": 5.454741498776686, - }, - { - "startGMT": "2024-07-08T01:29:00.0", - "endGMT": "2024-07-08T01:30:00.0", - "activityLevel": 5.389279086311523, - }, - { - "startGMT": "2024-07-08T01:30:00.0", - "endGMT": "2024-07-08T01:31:00.0", - "activityLevel": 5.296350273791964, - }, - { - "startGMT": "2024-07-08T01:31:00.0", - "endGMT": "2024-07-08T01:32:00.0", - "activityLevel": 5.166266682100087, - }, - { - "startGMT": "2024-07-08T01:32:00.0", - "endGMT": "2024-07-08T01:33:00.0", - "activityLevel": 4.994160322824111, - }, - { - "startGMT": "2024-07-08T01:33:00.0", - "endGMT": "2024-07-08T01:34:00.0", - "activityLevel": 4.777398813781819, - }, - { - "startGMT": "2024-07-08T01:34:00.0", - "endGMT": "2024-07-08T01:35:00.0", - "activityLevel": 4.5118027801978915, - }, - { - "startGMT": "2024-07-08T01:35:00.0", - "endGMT": "2024-07-08T01:36:00.0", - "activityLevel": 4.212847971803436, - }, - { - "startGMT": "2024-07-08T01:36:00.0", - "endGMT": "2024-07-08T01:37:00.0", - "activityLevel": 3.8745757238098144, - }, - { - "startGMT": "2024-07-08T01:37:00.0", - "endGMT": "2024-07-08T01:38:00.0", - "activityLevel": 3.5150258390645144, - }, - { - "startGMT": "2024-07-08T01:38:00.0", - "endGMT": "2024-07-08T01:39:00.0", - "activityLevel": 3.1470510566095293, - }, - { - "startGMT": "2024-07-08T01:39:00.0", - "endGMT": "2024-07-08T01:40:00.0", - "activityLevel": 2.782578793979288, - }, - { - "startGMT": "2024-07-08T01:40:00.0", - "endGMT": "2024-07-08T01:41:00.0", - "activityLevel": 2.4350545122931098, - }, - { - "startGMT": "2024-07-08T01:41:00.0", - "endGMT": "2024-07-08T01:42:00.0", - "activityLevel": 2.118513195009655, - }, - { - "startGMT": "2024-07-08T01:42:00.0", - "endGMT": "2024-07-08T01:43:00.0", - "activityLevel": 1.8463148494411195, - }, - { - "startGMT": "2024-07-08T01:43:00.0", - "endGMT": "2024-07-08T01:44:00.0", - "activityLevel": 1.643217983028883, - }, - { - "startGMT": "2024-07-08T01:44:00.0", - "endGMT": "2024-07-08T01:45:00.0", - "activityLevel": 1.483284286142881, - }, - { - "startGMT": "2024-07-08T01:45:00.0", - "endGMT": "2024-07-08T01:46:00.0", - "activityLevel": 1.3917872757152812, - }, - { - "startGMT": "2024-07-08T01:46:00.0", - "endGMT": "2024-07-08T01:47:00.0", - "activityLevel": 1.3402119301851376, - }, - { - "startGMT": "2024-07-08T01:47:00.0", - "endGMT": "2024-07-08T01:48:00.0", - "activityLevel": 1.3092613064762222, - }, - { - "startGMT": "2024-07-08T01:48:00.0", - "endGMT": "2024-07-08T01:49:00.0", - "activityLevel": 1.2643594394586326, - }, - { - "startGMT": "2024-07-08T01:49:00.0", - "endGMT": "2024-07-08T01:50:00.0", - "activityLevel": 1.209814570608861, - }, - { - "startGMT": "2024-07-08T01:50:00.0", - "endGMT": "2024-07-08T01:51:00.0", - "activityLevel": 1.1516711989205035, - }, - { - "startGMT": "2024-07-08T01:51:00.0", - "endGMT": "2024-07-08T01:52:00.0", - "activityLevel": 1.0911192963662364, - }, - { - "startGMT": "2024-07-08T01:52:00.0", - "endGMT": "2024-07-08T01:53:00.0", - "activityLevel": 1.0265521481940802, - }, - { - "startGMT": "2024-07-08T01:53:00.0", - "endGMT": "2024-07-08T01:54:00.0", - "activityLevel": 0.9669786424963646, - }, - { - "startGMT": "2024-07-08T01:54:00.0", - "endGMT": "2024-07-08T01:55:00.0", - "activityLevel": 0.9133403337020598, - }, - { - "startGMT": "2024-07-08T01:55:00.0", - "endGMT": "2024-07-08T01:56:00.0", - "activityLevel": 0.865400793239344, - }, - { - "startGMT": "2024-07-08T01:56:00.0", - "endGMT": "2024-07-08T01:57:00.0", - "activityLevel": 0.8246717999431822, - }, - { - "startGMT": "2024-07-08T01:57:00.0", - "endGMT": "2024-07-08T01:58:00.0", - "activityLevel": 0.7927471733036636, - }, - { - "startGMT": "2024-07-08T01:58:00.0", - "endGMT": "2024-07-08T01:59:00.0", - "activityLevel": 0.7709117217028698, - }, - { - "startGMT": "2024-07-08T01:59:00.0", - "endGMT": "2024-07-08T02:00:00.0", - "activityLevel": 0.7570478862055404, - }, - { - "startGMT": "2024-07-08T02:00:00.0", - "endGMT": "2024-07-08T02:01:00.0", - "activityLevel": 0.7562462857454977, - }, - { - "startGMT": "2024-07-08T02:01:00.0", - "endGMT": "2024-07-08T02:02:00.0", - "activityLevel": 0.7614366200309307, - }, - { - "startGMT": "2024-07-08T02:02:00.0", - "endGMT": "2024-07-08T02:03:00.0", - "activityLevel": 0.7724004080777223, - }, - { - "startGMT": "2024-07-08T02:03:00.0", - "endGMT": "2024-07-08T02:04:00.0", - "activityLevel": 0.7859070301665612, - }, - { - "startGMT": "2024-07-08T02:04:00.0", - "endGMT": "2024-07-08T02:05:00.0", - "activityLevel": 0.7983281462311097, - }, - { - "startGMT": "2024-07-08T02:05:00.0", - "endGMT": "2024-07-08T02:06:00.0", - "activityLevel": 0.8062062764723182, - }, - { - "startGMT": "2024-07-08T02:06:00.0", - "endGMT": "2024-07-08T02:07:00.0", - "activityLevel": 0.8115529073538644, - }, - { - "startGMT": "2024-07-08T02:07:00.0", - "endGMT": "2024-07-08T02:08:00.0", - "activityLevel": 0.8015122478351525, - }, - { - "startGMT": "2024-07-08T02:08:00.0", - "endGMT": "2024-07-08T02:09:00.0", - "activityLevel": 0.7795774714080115, - }, - { - "startGMT": "2024-07-08T02:09:00.0", - "endGMT": "2024-07-08T02:10:00.0", - "activityLevel": 0.7467119467385426, - }, - { - "startGMT": "2024-07-08T02:10:00.0", - "endGMT": "2024-07-08T02:11:00.0", - "activityLevel": 0.702936539109698, - }, - { - "startGMT": "2024-07-08T02:11:00.0", - "endGMT": "2024-07-08T02:12:00.0", - "activityLevel": 0.6484888180908535, - }, - { - "startGMT": "2024-07-08T02:12:00.0", - "endGMT": "2024-07-08T02:13:00.0", - "activityLevel": 0.5855640746547759, - }, - { - "startGMT": "2024-07-08T02:13:00.0", - "endGMT": "2024-07-08T02:14:00.0", - "activityLevel": 0.516075710571075, - }, - { - "startGMT": "2024-07-08T02:14:00.0", - "endGMT": "2024-07-08T02:15:00.0", - "activityLevel": 0.4420512517154544, - }, - { - "startGMT": "2024-07-08T02:15:00.0", - "endGMT": "2024-07-08T02:16:00.0", - "activityLevel": 0.3655068810407815, - }, - { - "startGMT": "2024-07-08T02:16:00.0", - "endGMT": "2024-07-08T02:17:00.0", - "activityLevel": 0.2882629894112111, - }, - { - "startGMT": "2024-07-08T02:17:00.0", - "endGMT": "2024-07-08T02:18:00.0", - "activityLevel": 0.2115766559902864, - }, - { - "startGMT": "2024-07-08T02:18:00.0", - "endGMT": "2024-07-08T02:19:00.0", - "activityLevel": 0.1349333939486886, - }, - { - "startGMT": "2024-07-08T02:19:00.0", - "endGMT": "2024-07-08T02:20:00.0", - "activityLevel": 0.0448732441707528, - }, - { - "startGMT": "2024-07-08T02:20:00.0", - "endGMT": "2024-07-08T02:21:00.0", - "activityLevel": 0.07686529550989835, - }, - { - "startGMT": "2024-07-08T02:21:00.0", - "endGMT": "2024-07-08T02:22:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T02:22:00.0", - "endGMT": "2024-07-08T02:23:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T02:23:00.0", - "endGMT": "2024-07-08T02:24:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T02:24:00.0", - "endGMT": "2024-07-08T02:25:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T02:25:00.0", - "endGMT": "2024-07-08T02:26:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T02:26:00.0", - "endGMT": "2024-07-08T02:27:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T02:27:00.0", - "endGMT": "2024-07-08T02:28:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T02:28:00.0", - "endGMT": "2024-07-08T02:29:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T02:29:00.0", - "endGMT": "2024-07-08T02:30:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T02:30:00.0", - "endGMT": "2024-07-08T02:31:00.0", - "activityLevel": 0.07686529550989835, - }, - { - "startGMT": "2024-07-08T02:31:00.0", - "endGMT": "2024-07-08T02:32:00.0", - "activityLevel": 0.0448732441707528, - }, - { - "startGMT": "2024-07-08T02:32:00.0", - "endGMT": "2024-07-08T02:33:00.0", - "activityLevel": 0.1349333939486886, - }, - { - "startGMT": "2024-07-08T02:33:00.0", - "endGMT": "2024-07-08T02:34:00.0", - "activityLevel": 0.2115766559902864, - }, - { - "startGMT": "2024-07-08T02:34:00.0", - "endGMT": "2024-07-08T02:35:00.0", - "activityLevel": 0.2882629894112111, - }, - { - "startGMT": "2024-07-08T02:35:00.0", - "endGMT": "2024-07-08T02:36:00.0", - "activityLevel": 0.3655068810407815, - }, - { - "startGMT": "2024-07-08T02:36:00.0", - "endGMT": "2024-07-08T02:37:00.0", - "activityLevel": 0.4420512517154544, - }, - { - "startGMT": "2024-07-08T02:37:00.0", - "endGMT": "2024-07-08T02:38:00.0", - "activityLevel": 0.516075710571075, - }, - { - "startGMT": "2024-07-08T02:38:00.0", - "endGMT": "2024-07-08T02:39:00.0", - "activityLevel": 0.5855640746547759, - }, - { - "startGMT": "2024-07-08T02:39:00.0", - "endGMT": "2024-07-08T02:40:00.0", - "activityLevel": 0.6484888180908535, - }, - { - "startGMT": "2024-07-08T02:40:00.0", - "endGMT": "2024-07-08T02:41:00.0", - "activityLevel": 0.702936539109698, - }, - { - "startGMT": "2024-07-08T02:41:00.0", - "endGMT": "2024-07-08T02:42:00.0", - "activityLevel": 0.7472063072597769, - }, - { - "startGMT": "2024-07-08T02:42:00.0", - "endGMT": "2024-07-08T02:43:00.0", - "activityLevel": 0.7798896506098385, - }, - { - "startGMT": "2024-07-08T02:43:00.0", - "endGMT": "2024-07-08T02:44:00.0", - "activityLevel": 0.799933937787455, - }, - { - "startGMT": "2024-07-08T02:44:00.0", - "endGMT": "2024-07-08T02:45:00.0", - "activityLevel": 0.8066886999730392, - }, - { - "startGMT": "2024-07-08T02:45:00.0", - "endGMT": "2024-07-08T02:46:00.0", - "activityLevel": 0.799933937787455, - }, - { - "startGMT": "2024-07-08T02:46:00.0", - "endGMT": "2024-07-08T02:47:00.0", - "activityLevel": 0.7798896506098385, - }, - { - "startGMT": "2024-07-08T02:47:00.0", - "endGMT": "2024-07-08T02:48:00.0", - "activityLevel": 0.7472063072597769, - }, - { - "startGMT": "2024-07-08T02:48:00.0", - "endGMT": "2024-07-08T02:49:00.0", - "activityLevel": 0.702936539109698, - }, - { - "startGMT": "2024-07-08T02:49:00.0", - "endGMT": "2024-07-08T02:50:00.0", - "activityLevel": 0.6484888180908535, - }, - { - "startGMT": "2024-07-08T02:50:00.0", - "endGMT": "2024-07-08T02:51:00.0", - "activityLevel": 0.5830361469920986, - }, - { - "startGMT": "2024-07-08T02:51:00.0", - "endGMT": "2024-07-08T02:52:00.0", - "activityLevel": 0.5141855756784043, - }, - { - "startGMT": "2024-07-08T02:52:00.0", - "endGMT": "2024-07-08T02:53:00.0", - "activityLevel": 0.45007275716127054, - }, - { - "startGMT": "2024-07-08T02:53:00.0", - "endGMT": "2024-07-08T02:54:00.0", - "activityLevel": 0.40753887568014413, - }, - { - "startGMT": "2024-07-08T02:54:00.0", - "endGMT": "2024-07-08T02:55:00.0", - "activityLevel": 0.39513184847301797, - }, - { - "startGMT": "2024-07-08T02:55:00.0", - "endGMT": "2024-07-08T02:56:00.0", - "activityLevel": 0.4189181753233822, - }, - { - "startGMT": "2024-07-08T02:56:00.0", - "endGMT": "2024-07-08T02:57:00.0", - "activityLevel": 0.47355790664958386, - }, - { - "startGMT": "2024-07-08T02:57:00.0", - "endGMT": "2024-07-08T02:58:00.0", - "activityLevel": 0.5447282215489629, - }, - { - "startGMT": "2024-07-08T02:58:00.0", - "endGMT": "2024-07-08T02:59:00.0", - "activityLevel": 0.6304069298658225, - }, - { - "startGMT": "2024-07-08T02:59:00.0", - "endGMT": "2024-07-08T03:00:00.0", - "activityLevel": 0.7238660762044068, - }, - { - "startGMT": "2024-07-08T03:00:00.0", - "endGMT": "2024-07-08T03:01:00.0", - "activityLevel": 0.8069409805217257, - }, - { - "startGMT": "2024-07-08T03:01:00.0", - "endGMT": "2024-07-08T03:02:00.0", - "activityLevel": 0.8820630198226972, - }, - { - "startGMT": "2024-07-08T03:02:00.0", - "endGMT": "2024-07-08T03:03:00.0", - "activityLevel": 0.9471695177846488, - }, - { - "startGMT": "2024-07-08T03:03:00.0", - "endGMT": "2024-07-08T03:04:00.0", - "activityLevel": 1.000462079917193, - }, - { - "startGMT": "2024-07-08T03:04:00.0", - "endGMT": "2024-07-08T03:05:00.0", - "activityLevel": 1.0404813716876704, - }, - { - "startGMT": "2024-07-08T03:05:00.0", - "endGMT": "2024-07-08T03:06:00.0", - "activityLevel": 1.0661661582133397, - }, - { - "startGMT": "2024-07-08T03:06:00.0", - "endGMT": "2024-07-08T03:07:00.0", - "activityLevel": 1.0768952079486527, - }, - { - "startGMT": "2024-07-08T03:07:00.0", - "endGMT": "2024-07-08T03:08:00.0", - "activityLevel": 1.0725108893565585, - }, - { - "startGMT": "2024-07-08T03:08:00.0", - "endGMT": "2024-07-08T03:09:00.0", - "activityLevel": 1.0533238287348863, - }, - { - "startGMT": "2024-07-08T03:09:00.0", - "endGMT": "2024-07-08T03:10:00.0", - "activityLevel": 1.0200986858979675, - }, - { - "startGMT": "2024-07-08T03:10:00.0", - "endGMT": "2024-07-08T03:11:00.0", - "activityLevel": 0.9740218466633179, - }, - { - "startGMT": "2024-07-08T03:11:00.0", - "endGMT": "2024-07-08T03:12:00.0", - "activityLevel": 0.9166525597031866, - }, - { - "startGMT": "2024-07-08T03:12:00.0", - "endGMT": "2024-07-08T03:13:00.0", - "activityLevel": 0.8498597056382565, - }, - { - "startGMT": "2024-07-08T03:13:00.0", - "endGMT": "2024-07-08T03:14:00.0", - "activityLevel": 0.7757469289017959, - }, - { - "startGMT": "2024-07-08T03:14:00.0", - "endGMT": "2024-07-08T03:15:00.0", - "activityLevel": 0.6965692377303351, - }, - { - "startGMT": "2024-07-08T03:15:00.0", - "endGMT": "2024-07-08T03:16:00.0", - "activityLevel": 0.6146443241940822, - }, - { - "startGMT": "2024-07-08T03:16:00.0", - "endGMT": "2024-07-08T03:17:00.0", - "activityLevel": 0.5322616839561646, - }, - { - "startGMT": "2024-07-08T03:17:00.0", - "endGMT": "2024-07-08T03:18:00.0", - "activityLevel": 0.45159195947849645, - }, - { - "startGMT": "2024-07-08T03:18:00.0", - "endGMT": "2024-07-08T03:19:00.0", - "activityLevel": 0.3745974467562052, - }, - { - "startGMT": "2024-07-08T03:19:00.0", - "endGMT": "2024-07-08T03:20:00.0", - "activityLevel": 0.3094467995728701, - }, - { - "startGMT": "2024-07-08T03:20:00.0", - "endGMT": "2024-07-08T03:21:00.0", - "activityLevel": 0.2526727195744883, - }, - { - "startGMT": "2024-07-08T03:21:00.0", - "endGMT": "2024-07-08T03:22:00.0", - "activityLevel": 0.2038327145777733, - }, - { - "startGMT": "2024-07-08T03:22:00.0", - "endGMT": "2024-07-08T03:23:00.0", - "activityLevel": 0.1496072881915049, - }, - { - "startGMT": "2024-07-08T03:23:00.0", - "endGMT": "2024-07-08T03:24:00.0", - "activityLevel": 0.09541231786963358, - }, - { - "startGMT": "2024-07-08T03:24:00.0", - "endGMT": "2024-07-08T03:25:00.0", - "activityLevel": 0.03173017524697902, - }, - { - "startGMT": "2024-07-08T03:25:00.0", - "endGMT": "2024-07-08T03:26:00.0", - "activityLevel": 0.05435197169295701, - }, - { - "startGMT": "2024-07-08T03:26:00.0", - "endGMT": "2024-07-08T03:27:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T03:27:00.0", - "endGMT": "2024-07-08T03:28:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T03:28:00.0", - "endGMT": "2024-07-08T03:29:00.0", - "activityLevel": 0.07686529550989835, - }, - { - "startGMT": "2024-07-08T03:29:00.0", - "endGMT": "2024-07-08T03:30:00.0", - "activityLevel": 0.0448732441707528, - }, - { - "startGMT": "2024-07-08T03:30:00.0", - "endGMT": "2024-07-08T03:31:00.0", - "activityLevel": 0.1349333939486886, - }, - { - "startGMT": "2024-07-08T03:31:00.0", - "endGMT": "2024-07-08T03:32:00.0", - "activityLevel": 0.2115766559902864, - }, - { - "startGMT": "2024-07-08T03:32:00.0", - "endGMT": "2024-07-08T03:33:00.0", - "activityLevel": 0.2882629894112111, - }, - { - "startGMT": "2024-07-08T03:33:00.0", - "endGMT": "2024-07-08T03:34:00.0", - "activityLevel": 0.3655068810407815, - }, - { - "startGMT": "2024-07-08T03:34:00.0", - "endGMT": "2024-07-08T03:35:00.0", - "activityLevel": 0.4420512517154544, - }, - { - "startGMT": "2024-07-08T03:35:00.0", - "endGMT": "2024-07-08T03:36:00.0", - "activityLevel": 0.516075710571075, - }, - { - "startGMT": "2024-07-08T03:36:00.0", - "endGMT": "2024-07-08T03:37:00.0", - "activityLevel": 0.5855640746547759, - }, - { - "startGMT": "2024-07-08T03:37:00.0", - "endGMT": "2024-07-08T03:38:00.0", - "activityLevel": 0.6484888180908535, - }, - { - "startGMT": "2024-07-08T03:38:00.0", - "endGMT": "2024-07-08T03:39:00.0", - "activityLevel": 0.702936539109698, - }, - { - "startGMT": "2024-07-08T03:39:00.0", - "endGMT": "2024-07-08T03:40:00.0", - "activityLevel": 0.7472063072597769, - }, - { - "startGMT": "2024-07-08T03:40:00.0", - "endGMT": "2024-07-08T03:41:00.0", - "activityLevel": 0.7798896506098385, - }, - { - "startGMT": "2024-07-08T03:41:00.0", - "endGMT": "2024-07-08T03:42:00.0", - "activityLevel": 0.799933937787455, - }, - { - "startGMT": "2024-07-08T03:42:00.0", - "endGMT": "2024-07-08T03:43:00.0", - "activityLevel": 0.8066886999730392, - }, - { - "startGMT": "2024-07-08T03:43:00.0", - "endGMT": "2024-07-08T03:44:00.0", - "activityLevel": 0.799933937787455, - }, - { - "startGMT": "2024-07-08T03:44:00.0", - "endGMT": "2024-07-08T03:45:00.0", - "activityLevel": 0.7798896506098385, - }, - { - "startGMT": "2024-07-08T03:45:00.0", - "endGMT": "2024-07-08T03:46:00.0", - "activityLevel": 0.7472063072597769, - }, - { - "startGMT": "2024-07-08T03:46:00.0", - "endGMT": "2024-07-08T03:47:00.0", - "activityLevel": 0.702936539109698, - }, - { - "startGMT": "2024-07-08T03:47:00.0", - "endGMT": "2024-07-08T03:48:00.0", - "activityLevel": 0.6484888180908535, - }, - { - "startGMT": "2024-07-08T03:48:00.0", - "endGMT": "2024-07-08T03:49:00.0", - "activityLevel": 0.5855640746547759, - }, - { - "startGMT": "2024-07-08T03:49:00.0", - "endGMT": "2024-07-08T03:50:00.0", - "activityLevel": 0.5132056139740951, - }, - { - "startGMT": "2024-07-08T03:50:00.0", - "endGMT": "2024-07-08T03:51:00.0", - "activityLevel": 0.43984312696402567, - }, - { - "startGMT": "2024-07-08T03:51:00.0", - "endGMT": "2024-07-08T03:52:00.0", - "activityLevel": 0.37908520745423446, - }, - { - "startGMT": "2024-07-08T03:52:00.0", - "endGMT": "2024-07-08T03:53:00.0", - "activityLevel": 0.3384987476277571, - }, - { - "startGMT": "2024-07-08T03:53:00.0", - "endGMT": "2024-07-08T03:54:00.0", - "activityLevel": 0.32968894062766496, - }, - { - "startGMT": "2024-07-08T03:54:00.0", - "endGMT": "2024-07-08T03:55:00.0", - "activityLevel": 0.35574209250345395, - }, - { - "startGMT": "2024-07-08T03:55:00.0", - "endGMT": "2024-07-08T03:56:00.0", - "activityLevel": 0.4080636012413849, - }, - { - "startGMT": "2024-07-08T03:56:00.0", - "endGMT": "2024-07-08T03:57:00.0", - "activityLevel": 0.4743031208399287, - }, - { - "startGMT": "2024-07-08T03:57:00.0", - "endGMT": "2024-07-08T03:58:00.0", - "activityLevel": 0.5519145878520263, - }, - { - "startGMT": "2024-07-08T03:58:00.0", - "endGMT": "2024-07-08T03:59:00.0", - "activityLevel": 0.6178280637504159, - }, - { - "startGMT": "2024-07-08T03:59:00.0", - "endGMT": "2024-07-08T04:00:00.0", - "activityLevel": 0.6762608687497718, - }, - { - "startGMT": "2024-07-08T04:00:00.0", - "endGMT": "2024-07-08T04:01:00.0", - "activityLevel": 0.7254092099030423, - }, - { - "startGMT": "2024-07-08T04:01:00.0", - "endGMT": "2024-07-08T04:02:00.0", - "activityLevel": 0.7637228334733511, - }, - { - "startGMT": "2024-07-08T04:02:00.0", - "endGMT": "2024-07-08T04:03:00.0", - "activityLevel": 0.7899753704871058, - }, - { - "startGMT": "2024-07-08T04:03:00.0", - "endGMT": "2024-07-08T04:04:00.0", - "activityLevel": 0.8033184186511398, - }, - { - "startGMT": "2024-07-08T04:04:00.0", - "endGMT": "2024-07-08T04:05:00.0", - "activityLevel": 0.8033184186511398, - }, - { - "startGMT": "2024-07-08T04:05:00.0", - "endGMT": "2024-07-08T04:06:00.0", - "activityLevel": 0.7899753704871058, - }, - { - "startGMT": "2024-07-08T04:06:00.0", - "endGMT": "2024-07-08T04:07:00.0", - "activityLevel": 0.7637228334733511, - }, - { - "startGMT": "2024-07-08T04:07:00.0", - "endGMT": "2024-07-08T04:08:00.0", - "activityLevel": 0.7254092099030423, - }, - { - "startGMT": "2024-07-08T04:08:00.0", - "endGMT": "2024-07-08T04:09:00.0", - "activityLevel": 0.6762608687497718, - }, - { - "startGMT": "2024-07-08T04:09:00.0", - "endGMT": "2024-07-08T04:10:00.0", - "activityLevel": 0.6178280637504159, - }, - { - "startGMT": "2024-07-08T04:10:00.0", - "endGMT": "2024-07-08T04:11:00.0", - "activityLevel": 0.5519145878520263, - }, - { - "startGMT": "2024-07-08T04:11:00.0", - "endGMT": "2024-07-08T04:12:00.0", - "activityLevel": 0.48049112800583527, - }, - { - "startGMT": "2024-07-08T04:12:00.0", - "endGMT": "2024-07-08T04:13:00.0", - "activityLevel": 0.405588824569514, - }, - { - "startGMT": "2024-07-08T04:13:00.0", - "endGMT": "2024-07-08T04:14:00.0", - "activityLevel": 0.3291586480349924, - }, - { - "startGMT": "2024-07-08T04:14:00.0", - "endGMT": "2024-07-08T04:15:00.0", - "activityLevel": 0.251379358749743, - }, - { - "startGMT": "2024-07-08T04:15:00.0", - "endGMT": "2024-07-08T04:16:00.0", - "activityLevel": 0.17815036370036688, - }, - { - "startGMT": "2024-07-08T04:16:00.0", - "endGMT": "2024-07-08T04:17:00.0", - "activityLevel": 0.111293270339109, - }, - { - "startGMT": "2024-07-08T04:17:00.0", - "endGMT": "2024-07-08T04:18:00.0", - "activityLevel": 0.06040076460025982, - }, - { - "startGMT": "2024-07-08T04:18:00.0", - "endGMT": "2024-07-08T04:19:00.0", - "activityLevel": 0.08621372893062913, - }, - { - "startGMT": "2024-07-08T04:19:00.0", - "endGMT": "2024-07-08T04:20:00.0", - "activityLevel": 0.12922619707714067, - }, - { - "startGMT": "2024-07-08T04:20:00.0", - "endGMT": "2024-07-08T04:21:00.0", - "activityLevel": 0.15628871885999962, - }, - { - "startGMT": "2024-07-08T04:21:00.0", - "endGMT": "2024-07-08T04:22:00.0", - "activityLevel": 0.1824603172752366, - }, - { - "startGMT": "2024-07-08T04:22:00.0", - "endGMT": "2024-07-08T04:23:00.0", - "activityLevel": 0.2070281640038089, - }, - { - "startGMT": "2024-07-08T04:23:00.0", - "endGMT": "2024-07-08T04:24:00.0", - "activityLevel": 0.22927542039784596, - }, - { - "startGMT": "2024-07-08T04:24:00.0", - "endGMT": "2024-07-08T04:25:00.0", - "activityLevel": 0.2485255967741351, - }, - { - "startGMT": "2024-07-08T04:25:00.0", - "endGMT": "2024-07-08T04:26:00.0", - "activityLevel": 0.2641773234043736, - }, - { - "startGMT": "2024-07-08T04:26:00.0", - "endGMT": "2024-07-08T04:27:00.0", - "activityLevel": 0.275732630261712, - }, - { - "startGMT": "2024-07-08T04:27:00.0", - "endGMT": "2024-07-08T04:28:00.0", - "activityLevel": 0.28281935595538366, - }, - { - "startGMT": "2024-07-08T04:28:00.0", - "endGMT": "2024-07-08T04:29:00.0", - "activityLevel": 0.28520752502874813, - }, - { - "startGMT": "2024-07-08T04:29:00.0", - "endGMT": "2024-07-08T04:30:00.0", - "activityLevel": 0.28281935595538366, - }, - { - "startGMT": "2024-07-08T04:30:00.0", - "endGMT": "2024-07-08T04:31:00.0", - "activityLevel": 0.275732630261712, - }, - { - "startGMT": "2024-07-08T04:31:00.0", - "endGMT": "2024-07-08T04:32:00.0", - "activityLevel": 0.2641773234043736, - }, - { - "startGMT": "2024-07-08T04:32:00.0", - "endGMT": "2024-07-08T04:33:00.0", - "activityLevel": 0.2485255967741351, - }, - { - "startGMT": "2024-07-08T04:33:00.0", - "endGMT": "2024-07-08T04:34:00.0", - "activityLevel": 0.22927542039784596, - }, - { - "startGMT": "2024-07-08T04:34:00.0", - "endGMT": "2024-07-08T04:35:00.0", - "activityLevel": 0.2070281640038089, - }, - { - "startGMT": "2024-07-08T04:35:00.0", - "endGMT": "2024-07-08T04:36:00.0", - "activityLevel": 0.1824603172752366, - }, - { - "startGMT": "2024-07-08T04:36:00.0", - "endGMT": "2024-07-08T04:37:00.0", - "activityLevel": 0.15628871885999962, - }, - { - "startGMT": "2024-07-08T04:37:00.0", - "endGMT": "2024-07-08T04:38:00.0", - "activityLevel": 0.12922619707714067, - }, - { - "startGMT": "2024-07-08T04:38:00.0", - "endGMT": "2024-07-08T04:39:00.0", - "activityLevel": 0.10191635728888665, - }, - { - "startGMT": "2024-07-08T04:39:00.0", - "endGMT": "2024-07-08T04:40:00.0", - "activityLevel": 0.07480364409575245, - }, - { - "startGMT": "2024-07-08T04:40:00.0", - "endGMT": "2024-07-08T04:41:00.0", - "activityLevel": 0.039208970830487244, - }, - { - "startGMT": "2024-07-08T04:41:00.0", - "endGMT": "2024-07-08T04:42:00.0", - "activityLevel": 0.0224366220853764, - }, - { - "startGMT": "2024-07-08T04:42:00.0", - "endGMT": "2024-07-08T04:43:00.0", - "activityLevel": 0.039208970830487244, - }, - { - "startGMT": "2024-07-08T04:43:00.0", - "endGMT": "2024-07-08T04:44:00.0", - "activityLevel": 0.07480364409575245, - }, - { - "startGMT": "2024-07-08T04:44:00.0", - "endGMT": "2024-07-08T04:45:00.0", - "activityLevel": 0.10191635728888665, - }, - { - "startGMT": "2024-07-08T04:45:00.0", - "endGMT": "2024-07-08T04:46:00.0", - "activityLevel": 0.12922619707714067, - }, - { - "startGMT": "2024-07-08T04:46:00.0", - "endGMT": "2024-07-08T04:47:00.0", - "activityLevel": 0.14653336417344687, - }, - { - "startGMT": "2024-07-08T04:47:00.0", - "endGMT": "2024-07-08T04:48:00.0", - "activityLevel": 0.1851987348806249, - }, - { - "startGMT": "2024-07-08T04:48:00.0", - "endGMT": "2024-07-08T04:49:00.0", - "activityLevel": 0.22795651140523274, - }, - { - "startGMT": "2024-07-08T04:49:00.0", - "endGMT": "2024-07-08T04:50:00.0", - "activityLevel": 0.27376917116181104, - }, - { - "startGMT": "2024-07-08T04:50:00.0", - "endGMT": "2024-07-08T04:51:00.0", - "activityLevel": 0.3214230044413187, - }, - { - "startGMT": "2024-07-08T04:51:00.0", - "endGMT": "2024-07-08T04:52:00.0", - "activityLevel": 0.3695771884805379, - }, - { - "startGMT": "2024-07-08T04:52:00.0", - "endGMT": "2024-07-08T04:53:00.0", - "activityLevel": 0.4168130731666678, - }, - { - "startGMT": "2024-07-08T04:53:00.0", - "endGMT": "2024-07-08T04:54:00.0", - "activityLevel": 0.46168588631637636, - }, - { - "startGMT": "2024-07-08T04:54:00.0", - "endGMT": "2024-07-08T04:55:00.0", - "activityLevel": 0.5027782563876206, - }, - { - "startGMT": "2024-07-08T04:55:00.0", - "endGMT": "2024-07-08T04:56:00.0", - "activityLevel": 0.5387538043461539, - }, - { - "startGMT": "2024-07-08T04:56:00.0", - "endGMT": "2024-07-08T04:57:00.0", - "activityLevel": 0.5677586090867086, - }, - { - "startGMT": "2024-07-08T04:57:00.0", - "endGMT": "2024-07-08T04:58:00.0", - "activityLevel": 0.5909314613479265, - }, - { - "startGMT": "2024-07-08T04:58:00.0", - "endGMT": "2024-07-08T04:59:00.0", - "activityLevel": 0.6067575985650464, - }, - { - "startGMT": "2024-07-08T04:59:00.0", - "endGMT": "2024-07-08T05:00:00.0", - "activityLevel": 0.6149064611635537, - }, - { - "startGMT": "2024-07-08T05:00:00.0", - "endGMT": "2024-07-08T05:01:00.0", - "activityLevel": 0.6129166314263368, - }, - { - "startGMT": "2024-07-08T05:01:00.0", - "endGMT": "2024-07-08T05:02:00.0", - "activityLevel": 0.609052652752187, - }, - { - "startGMT": "2024-07-08T05:02:00.0", - "endGMT": "2024-07-08T05:03:00.0", - "activityLevel": 0.6017223373377658, - }, - { - "startGMT": "2024-07-08T05:03:00.0", - "endGMT": "2024-07-08T05:04:00.0", - "activityLevel": 0.592901468100402, - }, - { - "startGMT": "2024-07-08T05:04:00.0", - "endGMT": "2024-07-08T05:05:00.0", - "activityLevel": 0.5846839052973222, - }, - { - "startGMT": "2024-07-08T05:05:00.0", - "endGMT": "2024-07-08T05:06:00.0", - "activityLevel": 0.5764331534360398, - }, - { - "startGMT": "2024-07-08T05:06:00.0", - "endGMT": "2024-07-08T05:07:00.0", - "activityLevel": 0.5780959705863811, - }, - { - "startGMT": "2024-07-08T05:07:00.0", - "endGMT": "2024-07-08T05:08:00.0", - "activityLevel": 0.5877746240261619, - }, - { - "startGMT": "2024-07-08T05:08:00.0", - "endGMT": "2024-07-08T05:09:00.0", - "activityLevel": 0.6056563276306803, - }, - { - "startGMT": "2024-07-08T05:09:00.0", - "endGMT": "2024-07-08T05:10:00.0", - "activityLevel": 0.631348617859957, - }, - { - "startGMT": "2024-07-08T05:10:00.0", - "endGMT": "2024-07-08T05:11:00.0", - "activityLevel": 0.660869606591957, - }, - { - "startGMT": "2024-07-08T05:11:00.0", - "endGMT": "2024-07-08T05:12:00.0", - "activityLevel": 0.6922661454664889, - }, - { - "startGMT": "2024-07-08T05:12:00.0", - "endGMT": "2024-07-08T05:13:00.0", - "activityLevel": 0.7227814309161422, - }, - { - "startGMT": "2024-07-08T05:13:00.0", - "endGMT": "2024-07-08T05:14:00.0", - "activityLevel": 0.7492981537350796, - }, - { - "startGMT": "2024-07-08T05:14:00.0", - "endGMT": "2024-07-08T05:15:00.0", - "activityLevel": 0.7711710182293295, - }, - { - "startGMT": "2024-07-08T05:15:00.0", - "endGMT": "2024-07-08T05:16:00.0", - "activityLevel": 0.7885747506855358, - }, - { - "startGMT": "2024-07-08T05:16:00.0", - "endGMT": "2024-07-08T05:17:00.0", - "activityLevel": 0.7948136965536994, - }, - { - "startGMT": "2024-07-08T05:17:00.0", - "endGMT": "2024-07-08T05:18:00.0", - "activityLevel": 0.7918025496497091, - }, - { - "startGMT": "2024-07-08T05:18:00.0", - "endGMT": "2024-07-08T05:19:00.0", - "activityLevel": 0.7798285805699557, - }, - { - "startGMT": "2024-07-08T05:19:00.0", - "endGMT": "2024-07-08T05:20:00.0", - "activityLevel": 0.7594522872310361, - }, - { - "startGMT": "2024-07-08T05:20:00.0", - "endGMT": "2024-07-08T05:21:00.0", - "activityLevel": 0.731483770454574, - }, - { - "startGMT": "2024-07-08T05:21:00.0", - "endGMT": "2024-07-08T05:22:00.0", - "activityLevel": 0.6969485267547956, - }, - { - "startGMT": "2024-07-08T05:22:00.0", - "endGMT": "2024-07-08T05:23:00.0", - "activityLevel": 0.6570436693058681, - }, - { - "startGMT": "2024-07-08T05:23:00.0", - "endGMT": "2024-07-08T05:24:00.0", - "activityLevel": 0.6106718148745437, - }, - { - "startGMT": "2024-07-08T05:24:00.0", - "endGMT": "2024-07-08T05:25:00.0", - "activityLevel": 0.5647304138394204, - }, - { - "startGMT": "2024-07-08T05:25:00.0", - "endGMT": "2024-07-08T05:26:00.0", - "activityLevel": 0.529116037610532, - }, - { - "startGMT": "2024-07-08T05:26:00.0", - "endGMT": "2024-07-08T05:27:00.0", - "activityLevel": 0.5037293113431717, - }, - { - "startGMT": "2024-07-08T05:27:00.0", - "endGMT": "2024-07-08T05:28:00.0", - "activityLevel": 0.4939482838698683, - }, - { - "startGMT": "2024-07-08T05:28:00.0", - "endGMT": "2024-07-08T05:29:00.0", - "activityLevel": 0.5021709936828391, - }, - { - "startGMT": "2024-07-08T05:29:00.0", - "endGMT": "2024-07-08T05:30:00.0", - "activityLevel": 0.5311106791798353, - }, - { - "startGMT": "2024-07-08T05:30:00.0", - "endGMT": "2024-07-08T05:31:00.0", - "activityLevel": 0.5683693543580925, - }, - { - "startGMT": "2024-07-08T05:31:00.0", - "endGMT": "2024-07-08T05:32:00.0", - "activityLevel": 0.6127627558338284, - }, - { - "startGMT": "2024-07-08T05:32:00.0", - "endGMT": "2024-07-08T05:33:00.0", - "activityLevel": 0.6597617287910849, - }, - { - "startGMT": "2024-07-08T05:33:00.0", - "endGMT": "2024-07-08T05:34:00.0", - "activityLevel": 0.7051491235661235, - }, - { - "startGMT": "2024-07-08T05:34:00.0", - "endGMT": "2024-07-08T05:35:00.0", - "activityLevel": 0.7480042039937583, - }, - { - "startGMT": "2024-07-08T05:35:00.0", - "endGMT": "2024-07-08T05:36:00.0", - "activityLevel": 0.7795503383434992, - }, - { - "startGMT": "2024-07-08T05:36:00.0", - "endGMT": "2024-07-08T05:37:00.0", - "activityLevel": 0.8004751688761245, - }, - { - "startGMT": "2024-07-08T05:37:00.0", - "endGMT": "2024-07-08T05:38:00.0", - "activityLevel": 0.8097576338801654, - }, - { - "startGMT": "2024-07-08T05:38:00.0", - "endGMT": "2024-07-08T05:39:00.0", - "activityLevel": 0.8067936953857362, - }, - { - "startGMT": "2024-07-08T05:39:00.0", - "endGMT": "2024-07-08T05:40:00.0", - "activityLevel": 0.7914145333367046, - }, - { - "startGMT": "2024-07-08T05:40:00.0", - "endGMT": "2024-07-08T05:41:00.0", - "activityLevel": 0.7638876012698891, - }, - { - "startGMT": "2024-07-08T05:41:00.0", - "endGMT": "2024-07-08T05:42:00.0", - "activityLevel": 0.7248999845533368, - }, - { - "startGMT": "2024-07-08T05:42:00.0", - "endGMT": "2024-07-08T05:43:00.0", - "activityLevel": 0.6762608687497718, - }, - { - "startGMT": "2024-07-08T05:43:00.0", - "endGMT": "2024-07-08T05:44:00.0", - "activityLevel": 0.6178280637504159, - }, - { - "startGMT": "2024-07-08T05:44:00.0", - "endGMT": "2024-07-08T05:45:00.0", - "activityLevel": 0.5519145878520263, - }, - { - "startGMT": "2024-07-08T05:45:00.0", - "endGMT": "2024-07-08T05:46:00.0", - "activityLevel": 0.48049112800583527, - }, - { - "startGMT": "2024-07-08T05:46:00.0", - "endGMT": "2024-07-08T05:47:00.0", - "activityLevel": 0.405588824569514, - }, - { - "startGMT": "2024-07-08T05:47:00.0", - "endGMT": "2024-07-08T05:48:00.0", - "activityLevel": 0.3291586480349924, - }, - { - "startGMT": "2024-07-08T05:48:00.0", - "endGMT": "2024-07-08T05:49:00.0", - "activityLevel": 0.2528440551252095, - }, - { - "startGMT": "2024-07-08T05:49:00.0", - "endGMT": "2024-07-08T05:50:00.0", - "activityLevel": 0.17744252895310075, - }, - { - "startGMT": "2024-07-08T05:50:00.0", - "endGMT": "2024-07-08T05:51:00.0", - "activityLevel": 0.10055005928620828, - }, - { - "startGMT": "2024-07-08T05:51:00.0", - "endGMT": "2024-07-08T05:52:00.0", - "activityLevel": 0.044128593969307475, - }, - { - "startGMT": "2024-07-08T05:52:00.0", - "endGMT": "2024-07-08T05:53:00.0", - "activityLevel": 0.05435197169295701, - }, - { - "startGMT": "2024-07-08T05:53:00.0", - "endGMT": "2024-07-08T05:54:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T05:54:00.0", - "endGMT": "2024-07-08T05:55:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T05:55:00.0", - "endGMT": "2024-07-08T05:56:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T05:56:00.0", - "endGMT": "2024-07-08T05:57:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T05:57:00.0", - "endGMT": "2024-07-08T05:58:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T05:58:00.0", - "endGMT": "2024-07-08T05:59:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T05:59:00.0", - "endGMT": "2024-07-08T06:00:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:00:00.0", - "endGMT": "2024-07-08T06:01:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:01:00.0", - "endGMT": "2024-07-08T06:02:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:02:00.0", - "endGMT": "2024-07-08T06:03:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:03:00.0", - "endGMT": "2024-07-08T06:04:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:04:00.0", - "endGMT": "2024-07-08T06:05:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:05:00.0", - "endGMT": "2024-07-08T06:06:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:06:00.0", - "endGMT": "2024-07-08T06:07:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:07:00.0", - "endGMT": "2024-07-08T06:08:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:08:00.0", - "endGMT": "2024-07-08T06:09:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:09:00.0", - "endGMT": "2024-07-08T06:10:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:10:00.0", - "endGMT": "2024-07-08T06:11:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:11:00.0", - "endGMT": "2024-07-08T06:12:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:12:00.0", - "endGMT": "2024-07-08T06:13:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:13:00.0", - "endGMT": "2024-07-08T06:14:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:14:00.0", - "endGMT": "2024-07-08T06:15:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:15:00.0", - "endGMT": "2024-07-08T06:16:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:16:00.0", - "endGMT": "2024-07-08T06:17:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:17:00.0", - "endGMT": "2024-07-08T06:18:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:18:00.0", - "endGMT": "2024-07-08T06:19:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:19:00.0", - "endGMT": "2024-07-08T06:20:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:20:00.0", - "endGMT": "2024-07-08T06:21:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:21:00.0", - "endGMT": "2024-07-08T06:22:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:22:00.0", - "endGMT": "2024-07-08T06:23:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:23:00.0", - "endGMT": "2024-07-08T06:24:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:24:00.0", - "endGMT": "2024-07-08T06:25:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:25:00.0", - "endGMT": "2024-07-08T06:26:00.0", - "activityLevel": 0.05435197169295701, - }, - { - "startGMT": "2024-07-08T06:26:00.0", - "endGMT": "2024-07-08T06:27:00.0", - "activityLevel": 0.044128593969307475, - }, - { - "startGMT": "2024-07-08T06:27:00.0", - "endGMT": "2024-07-08T06:28:00.0", - "activityLevel": 0.10055005928620828, - }, - { - "startGMT": "2024-07-08T06:28:00.0", - "endGMT": "2024-07-08T06:29:00.0", - "activityLevel": 0.17744252895310075, - }, - { - "startGMT": "2024-07-08T06:29:00.0", - "endGMT": "2024-07-08T06:30:00.0", - "activityLevel": 0.2528440551252095, - }, - { - "startGMT": "2024-07-08T06:30:00.0", - "endGMT": "2024-07-08T06:31:00.0", - "activityLevel": 0.3291586480349924, - }, - { - "startGMT": "2024-07-08T06:31:00.0", - "endGMT": "2024-07-08T06:32:00.0", - "activityLevel": 0.405588824569514, - }, - { - "startGMT": "2024-07-08T06:32:00.0", - "endGMT": "2024-07-08T06:33:00.0", - "activityLevel": 0.48049112800583527, - }, - { - "startGMT": "2024-07-08T06:33:00.0", - "endGMT": "2024-07-08T06:34:00.0", - "activityLevel": 0.5519145878520263, - }, - { - "startGMT": "2024-07-08T06:34:00.0", - "endGMT": "2024-07-08T06:35:00.0", - "activityLevel": 0.6130279297909387, - }, - { - "startGMT": "2024-07-08T06:35:00.0", - "endGMT": "2024-07-08T06:36:00.0", - "activityLevel": 0.6777480141207379, - }, - { - "startGMT": "2024-07-08T06:36:00.0", - "endGMT": "2024-07-08T06:37:00.0", - "activityLevel": 0.7378519787970133, - }, - { - "startGMT": "2024-07-08T06:37:00.0", - "endGMT": "2024-07-08T06:38:00.0", - "activityLevel": 0.7924880110945502, - }, - { - "startGMT": "2024-07-08T06:38:00.0", - "endGMT": "2024-07-08T06:39:00.0", - "activityLevel": 0.8409260591993377, - }, - { - "startGMT": "2024-07-08T06:39:00.0", - "endGMT": "2024-07-08T06:40:00.0", - "activityLevel": 0.8825620441829163, - }, - { - "startGMT": "2024-07-08T06:40:00.0", - "endGMT": "2024-07-08T06:41:00.0", - "activityLevel": 0.9169131861236199, - }, - { - "startGMT": "2024-07-08T06:41:00.0", - "endGMT": "2024-07-08T06:42:00.0", - "activityLevel": 0.9436075587963887, - }, - { - "startGMT": "2024-07-08T06:42:00.0", - "endGMT": "2024-07-08T06:43:00.0", - "activityLevel": 0.9623709533723823, - }, - { - "startGMT": "2024-07-08T06:43:00.0", - "endGMT": "2024-07-08T06:44:00.0", - "activityLevel": 0.9714947926644363, - }, - { - "startGMT": "2024-07-08T06:44:00.0", - "endGMT": "2024-07-08T06:45:00.0", - "activityLevel": 0.975938186894498, - }, - { - "startGMT": "2024-07-08T06:45:00.0", - "endGMT": "2024-07-08T06:46:00.0", - "activityLevel": 0.9742342081694915, - }, - { - "startGMT": "2024-07-08T06:46:00.0", - "endGMT": "2024-07-08T06:47:00.0", - "activityLevel": 0.9670676915770808, - }, - { - "startGMT": "2024-07-08T06:47:00.0", - "endGMT": "2024-07-08T06:48:00.0", - "activityLevel": 0.9551511945491185, - }, - { - "startGMT": "2024-07-08T06:48:00.0", - "endGMT": "2024-07-08T06:49:00.0", - "activityLevel": 0.939173356374611, - }, - { - "startGMT": "2024-07-08T06:49:00.0", - "endGMT": "2024-07-08T06:50:00.0", - "activityLevel": 0.9197523443688349, - }, - { - "startGMT": "2024-07-08T06:50:00.0", - "endGMT": "2024-07-08T06:51:00.0", - "activityLevel": 0.8973990488412699, - }, - { - "startGMT": "2024-07-08T06:51:00.0", - "endGMT": "2024-07-08T06:52:00.0", - "activityLevel": 0.8724939882046271, - }, - { - "startGMT": "2024-07-08T06:52:00.0", - "endGMT": "2024-07-08T06:53:00.0", - "activityLevel": 0.845280406748208, - }, - { - "startGMT": "2024-07-08T06:53:00.0", - "endGMT": "2024-07-08T06:54:00.0", - "activityLevel": 0.8158739506755465, - }, - { - "startGMT": "2024-07-08T06:54:00.0", - "endGMT": "2024-07-08T06:55:00.0", - "activityLevel": 0.7868225857865215, - }, - { - "startGMT": "2024-07-08T06:55:00.0", - "endGMT": "2024-07-08T06:56:00.0", - "activityLevel": 0.7552801285652947, - }, - { - "startGMT": "2024-07-08T06:56:00.0", - "endGMT": "2024-07-08T06:57:00.0", - "activityLevel": 0.7178833202932577, - }, - { - "startGMT": "2024-07-08T06:57:00.0", - "endGMT": "2024-07-08T06:58:00.0", - "activityLevel": 0.677472220404834, - }, - { - "startGMT": "2024-07-08T06:58:00.0", - "endGMT": "2024-07-08T06:59:00.0", - "activityLevel": 0.6348564432029968, - }, - { - "startGMT": "2024-07-08T06:59:00.0", - "endGMT": "2024-07-08T07:00:00.0", - "activityLevel": 0.5906594745910709, - }, - { - "startGMT": "2024-07-08T07:00:00.0", - "endGMT": "2024-07-08T07:01:00.0", - "activityLevel": 0.5453124366882788, - }, - { - "startGMT": "2024-07-08T07:01:00.0", - "endGMT": "2024-07-08T07:02:00.0", - "activityLevel": 0.4990726370481235, - }, - { - "startGMT": "2024-07-08T07:02:00.0", - "endGMT": "2024-07-08T07:03:00.0", - "activityLevel": 0.45206260621800165, - }, - { - "startGMT": "2024-07-08T07:03:00.0", - "endGMT": "2024-07-08T07:04:00.0", - "activityLevel": 0.4140563280076178, - }, - { - "startGMT": "2024-07-08T07:04:00.0", - "endGMT": "2024-07-08T07:05:00.0", - "activityLevel": 0.36085029124805756, - }, - { - "startGMT": "2024-07-08T07:05:00.0", - "endGMT": "2024-07-08T07:06:00.0", - "activityLevel": 0.3141837974702133, - }, - { - "startGMT": "2024-07-08T07:06:00.0", - "endGMT": "2024-07-08T07:07:00.0", - "activityLevel": 0.27550163419721485, - }, - { - "startGMT": "2024-07-08T07:07:00.0", - "endGMT": "2024-07-08T07:08:00.0", - "activityLevel": 0.2528440551252095, - }, - { - "startGMT": "2024-07-08T07:08:00.0", - "endGMT": "2024-07-08T07:09:00.0", - "activityLevel": 0.2528440551252095, - }, - { - "startGMT": "2024-07-08T07:09:00.0", - "endGMT": "2024-07-08T07:10:00.0", - "activityLevel": 0.27550163419721485, - }, - { - "startGMT": "2024-07-08T07:10:00.0", - "endGMT": "2024-07-08T07:11:00.0", - "activityLevel": 0.3141837974702133, - }, - { - "startGMT": "2024-07-08T07:11:00.0", - "endGMT": "2024-07-08T07:12:00.0", - "activityLevel": 0.36085029124805756, - }, - { - "startGMT": "2024-07-08T07:12:00.0", - "endGMT": "2024-07-08T07:13:00.0", - "activityLevel": 0.4140563280076178, - }, - { - "startGMT": "2024-07-08T07:13:00.0", - "endGMT": "2024-07-08T07:14:00.0", - "activityLevel": 0.4585508407956919, - }, - { - "startGMT": "2024-07-08T07:14:00.0", - "endGMT": "2024-07-08T07:15:00.0", - "activityLevel": 0.4970511935482702, - }, - { - "startGMT": "2024-07-08T07:15:00.0", - "endGMT": "2024-07-08T07:16:00.0", - "activityLevel": 0.5255516111453603, - }, - { - "startGMT": "2024-07-08T07:16:00.0", - "endGMT": "2024-07-08T07:17:00.0", - "activityLevel": 0.5523773507172176, - }, - { - "startGMT": "2024-07-08T07:17:00.0", - "endGMT": "2024-07-08T07:18:00.0", - "activityLevel": 0.5736293775717279, - }, - { - "startGMT": "2024-07-08T07:18:00.0", - "endGMT": "2024-07-08T07:19:00.0", - "activityLevel": 0.589708122728619, - }, - { - "startGMT": "2024-07-08T07:19:00.0", - "endGMT": "2024-07-08T07:20:00.0", - "activityLevel": 0.601244482672578, - }, - { - "startGMT": "2024-07-08T07:20:00.0", - "endGMT": "2024-07-08T07:21:00.0", - "activityLevel": 0.6090251009673148, - }, - { - "startGMT": "2024-07-08T07:21:00.0", - "endGMT": "2024-07-08T07:22:00.0", - "activityLevel": 0.6138919183178714, - }, - { - "startGMT": "2024-07-08T07:22:00.0", - "endGMT": "2024-07-08T07:23:00.0", - "activityLevel": 0.6142253834721974, - }, - { - "startGMT": "2024-07-08T07:23:00.0", - "endGMT": "2024-07-08T07:24:00.0", - "activityLevel": 0.618642320229381, - }, - { - "startGMT": "2024-07-08T07:24:00.0", - "endGMT": "2024-07-08T07:25:00.0", - "activityLevel": 0.6251520029231643, - }, - { - "startGMT": "2024-07-08T07:25:00.0", - "endGMT": "2024-07-08T07:26:00.0", - "activityLevel": 0.6345150110190427, - }, - { - "startGMT": "2024-07-08T07:26:00.0", - "endGMT": "2024-07-08T07:27:00.0", - "activityLevel": 0.6468470166184119, - }, - { - "startGMT": "2024-07-08T07:27:00.0", - "endGMT": "2024-07-08T07:28:00.0", - "activityLevel": 0.6615959595193489, - }, - { - "startGMT": "2024-07-08T07:28:00.0", - "endGMT": "2024-07-08T07:29:00.0", - "activityLevel": 0.6776426658024243, - }, - { - "startGMT": "2024-07-08T07:29:00.0", - "endGMT": "2024-07-08T07:30:00.0", - "activityLevel": 0.6934859331903077, - }, - { - "startGMT": "2024-07-08T07:30:00.0", - "endGMT": "2024-07-08T07:31:00.0", - "activityLevel": 0.7074555149099341, - }, - { - "startGMT": "2024-07-08T07:31:00.0", - "endGMT": "2024-07-08T07:32:00.0", - "activityLevel": 0.7179064083707625, - }, - { - "startGMT": "2024-07-08T07:32:00.0", - "endGMT": "2024-07-08T07:33:00.0", - "activityLevel": 0.7233701576546021, - }, - { - "startGMT": "2024-07-08T07:33:00.0", - "endGMT": "2024-07-08T07:34:00.0", - "activityLevel": 0.7254092099030423, - }, - { - "startGMT": "2024-07-08T07:34:00.0", - "endGMT": "2024-07-08T07:35:00.0", - "activityLevel": 0.7172048571772252, - }, - { - "startGMT": "2024-07-08T07:35:00.0", - "endGMT": "2024-07-08T07:36:00.0", - "activityLevel": 0.7009920079253571, - }, - { - "startGMT": "2024-07-08T07:36:00.0", - "endGMT": "2024-07-08T07:37:00.0", - "activityLevel": 0.6771561111389426, - }, - { - "startGMT": "2024-07-08T07:37:00.0", - "endGMT": "2024-07-08T07:38:00.0", - "activityLevel": 0.6462598602603074, - }, - { - "startGMT": "2024-07-08T07:38:00.0", - "endGMT": "2024-07-08T07:39:00.0", - "activityLevel": 0.6090251009673148, - }, - { - "startGMT": "2024-07-08T07:39:00.0", - "endGMT": "2024-07-08T07:40:00.0", - "activityLevel": 0.5663094634001272, - }, - { - "startGMT": "2024-07-08T07:40:00.0", - "endGMT": "2024-07-08T07:41:00.0", - "activityLevel": 0.519078250062335, - }, - { - "startGMT": "2024-07-08T07:41:00.0", - "endGMT": "2024-07-08T07:42:00.0", - "activityLevel": 0.46837205723195313, - }, - { - "startGMT": "2024-07-08T07:42:00.0", - "endGMT": "2024-07-08T07:43:00.0", - "activityLevel": 0.41527032976647393, - }, - { - "startGMT": "2024-07-08T07:43:00.0", - "endGMT": "2024-07-08T07:44:00.0", - "activityLevel": 0.36085029124805756, - }, - { - "startGMT": "2024-07-08T07:44:00.0", - "endGMT": "2024-07-08T07:45:00.0", - "activityLevel": 0.31257743771999924, - }, - { - "startGMT": "2024-07-08T07:45:00.0", - "endGMT": "2024-07-08T07:46:00.0", - "activityLevel": 0.25845239415428134, - }, - { - "startGMT": "2024-07-08T07:46:00.0", - "endGMT": "2024-07-08T07:47:00.0", - "activityLevel": 0.19645263730790685, - }, - { - "startGMT": "2024-07-08T07:47:00.0", - "endGMT": "2024-07-08T07:48:00.0", - "activityLevel": 0.15293509963778754, - }, - { - "startGMT": "2024-07-08T07:48:00.0", - "endGMT": "2024-07-08T07:49:00.0", - "activityLevel": 0.1349333939486886, - }, - { - "startGMT": "2024-07-08T07:49:00.0", - "endGMT": "2024-07-08T07:50:00.0", - "activityLevel": 0.15293509963778754, - }, - { - "startGMT": "2024-07-08T07:50:00.0", - "endGMT": "2024-07-08T07:51:00.0", - "activityLevel": 0.19645263730790685, - }, - { - "startGMT": "2024-07-08T07:51:00.0", - "endGMT": "2024-07-08T07:52:00.0", - "activityLevel": 0.25845239415428134, - }, - { - "startGMT": "2024-07-08T07:52:00.0", - "endGMT": "2024-07-08T07:53:00.0", - "activityLevel": 0.31257743771999924, - }, - { - "startGMT": "2024-07-08T07:53:00.0", - "endGMT": "2024-07-08T07:54:00.0", - "activityLevel": 0.35673350819189387, - }, - { - "startGMT": "2024-07-08T07:54:00.0", - "endGMT": "2024-07-08T07:55:00.0", - "activityLevel": 0.4164807928411105, - }, - { - "startGMT": "2024-07-08T07:55:00.0", - "endGMT": "2024-07-08T07:56:00.0", - "activityLevel": 0.4779915212605219, - }, - { - "startGMT": "2024-07-08T07:56:00.0", - "endGMT": "2024-07-08T07:57:00.0", - "activityLevel": 0.5402078955067132, - }, - { - "startGMT": "2024-07-08T07:57:00.0", - "endGMT": "2024-07-08T07:58:00.0", - "activityLevel": 0.6018755551346839, - }, - { - "startGMT": "2024-07-08T07:58:00.0", - "endGMT": "2024-07-08T07:59:00.0", - "activityLevel": 0.6615959595193489, - }, - { - "startGMT": "2024-07-08T07:59:00.0", - "endGMT": "2024-07-08T08:00:00.0", - "activityLevel": 0.7178833202932577, - }, - { - "startGMT": "2024-07-08T08:00:00.0", - "endGMT": "2024-07-08T08:01:00.0", - "activityLevel": 0.769225239038304, - }, - { - "startGMT": "2024-07-08T08:01:00.0", - "endGMT": "2024-07-08T08:02:00.0", - "activityLevel": 0.8141452191951851, - }, - { - "startGMT": "2024-07-08T08:02:00.0", - "endGMT": "2024-07-08T08:03:00.0", - "activityLevel": 0.8512647536184262, - }, - { - "startGMT": "2024-07-08T08:03:00.0", - "endGMT": "2024-07-08T08:04:00.0", - "activityLevel": 0.8793625025095828, - }, - { - "startGMT": "2024-07-08T08:04:00.0", - "endGMT": "2024-07-08T08:05:00.0", - "activityLevel": 0.8974280776845307, - }, - { - "startGMT": "2024-07-08T08:05:00.0", - "endGMT": "2024-07-08T08:06:00.0", - "activityLevel": 0.903073974763895, - }, - { - "startGMT": "2024-07-08T08:06:00.0", - "endGMT": "2024-07-08T08:07:00.0", - "activityLevel": 0.901301143685339, - }, - { - "startGMT": "2024-07-08T08:07:00.0", - "endGMT": "2024-07-08T08:08:00.0", - "activityLevel": 0.8905151534848624, - }, - { - "startGMT": "2024-07-08T08:08:00.0", - "endGMT": "2024-07-08T08:09:00.0", - "activityLevel": 0.8717690635000533, - }, - { - "startGMT": "2024-07-08T08:09:00.0", - "endGMT": "2024-07-08T08:10:00.0", - "activityLevel": 0.846506516634432, - }, - { - "startGMT": "2024-07-08T08:10:00.0", - "endGMT": "2024-07-08T08:11:00.0", - "activityLevel": 0.8164941403249725, - }, - { - "startGMT": "2024-07-08T08:11:00.0", - "endGMT": "2024-07-08T08:12:00.0", - "activityLevel": 0.7837134509928587, - }, - { - "startGMT": "2024-07-08T08:12:00.0", - "endGMT": "2024-07-08T08:13:00.0", - "activityLevel": 0.7502055232473618, - }, - { - "startGMT": "2024-07-08T08:13:00.0", - "endGMT": "2024-07-08T08:14:00.0", - "activityLevel": 0.7178681858883704, - }, - { - "startGMT": "2024-07-08T08:14:00.0", - "endGMT": "2024-07-08T08:15:00.0", - "activityLevel": 0.6882215310559268, - }, - { - "startGMT": "2024-07-08T08:15:00.0", - "endGMT": "2024-07-08T08:16:00.0", - "activityLevel": 0.6651835822921067, - }, - { - "startGMT": "2024-07-08T08:16:00.0", - "endGMT": "2024-07-08T08:17:00.0", - "activityLevel": 0.6424592694424729, - }, - { - "startGMT": "2024-07-08T08:17:00.0", - "endGMT": "2024-07-08T08:18:00.0", - "activityLevel": 0.622261588585103, - }, - { - "startGMT": "2024-07-08T08:18:00.0", - "endGMT": "2024-07-08T08:19:00.0", - "activityLevel": 0.6039137635226606, - }, - { - "startGMT": "2024-07-08T08:19:00.0", - "endGMT": "2024-07-08T08:20:00.0", - "activityLevel": 0.5861572742315906, - }, - { - "startGMT": "2024-07-08T08:20:00.0", - "endGMT": "2024-07-08T08:21:00.0", - "activityLevel": 0.56741586200465, - }, - { - "startGMT": "2024-07-08T08:21:00.0", - "endGMT": "2024-07-08T08:22:00.0", - "activityLevel": 0.5460820999724711, - }, - { - "startGMT": "2024-07-08T08:22:00.0", - "endGMT": "2024-07-08T08:23:00.0", - "activityLevel": 0.5283546468087472, - }, - { - "startGMT": "2024-07-08T08:23:00.0", - "endGMT": "2024-07-08T08:24:00.0", - "activityLevel": 0.4970511935482702, - }, - { - "startGMT": "2024-07-08T08:24:00.0", - "endGMT": "2024-07-08T08:25:00.0", - "activityLevel": 0.4585508407956919, - }, - { - "startGMT": "2024-07-08T08:25:00.0", - "endGMT": "2024-07-08T08:26:00.0", - "activityLevel": 0.4140563280076178, - }, - { - "startGMT": "2024-07-08T08:26:00.0", - "endGMT": "2024-07-08T08:27:00.0", - "activityLevel": 0.3649206345504732, - }, - { - "startGMT": "2024-07-08T08:27:00.0", - "endGMT": "2024-07-08T08:28:00.0", - "activityLevel": 0.31257743771999924, - }, - { - "startGMT": "2024-07-08T08:28:00.0", - "endGMT": "2024-07-08T08:29:00.0", - "activityLevel": 0.25845239415428134, - }, - { - "startGMT": "2024-07-08T08:29:00.0", - "endGMT": "2024-07-08T08:30:00.0", - "activityLevel": 0.2038327145777733, - }, - { - "startGMT": "2024-07-08T08:30:00.0", - "endGMT": "2024-07-08T08:31:00.0", - "activityLevel": 0.1496072881915049, - }, - { - "startGMT": "2024-07-08T08:31:00.0", - "endGMT": "2024-07-08T08:32:00.0", - "activityLevel": 0.09541231786963358, - }, - { - "startGMT": "2024-07-08T08:32:00.0", - "endGMT": "2024-07-08T08:33:00.0", - "activityLevel": 0.03173017524697902, - }, - { - "startGMT": "2024-07-08T08:33:00.0", - "endGMT": "2024-07-08T08:34:00.0", - "activityLevel": 0.0607673517082981, - }, - { - "startGMT": "2024-07-08T08:34:00.0", - "endGMT": "2024-07-08T08:35:00.0", - "activityLevel": 0.01586508762348951, - }, - { - "startGMT": "2024-07-08T08:35:00.0", - "endGMT": "2024-07-08T08:36:00.0", - "activityLevel": 0.04770615893481679, - }, - { - "startGMT": "2024-07-08T08:36:00.0", - "endGMT": "2024-07-08T08:37:00.0", - "activityLevel": 0.07480364409575245, - }, - { - "startGMT": "2024-07-08T08:37:00.0", - "endGMT": "2024-07-08T08:38:00.0", - "activityLevel": 0.10191635728888665, - }, - { - "startGMT": "2024-07-08T08:38:00.0", - "endGMT": "2024-07-08T08:39:00.0", - "activityLevel": 0.12922619707714067, - }, - { - "startGMT": "2024-07-08T08:39:00.0", - "endGMT": "2024-07-08T08:40:00.0", - "activityLevel": 0.15628871885999962, - }, - { - "startGMT": "2024-07-08T08:40:00.0", - "endGMT": "2024-07-08T08:41:00.0", - "activityLevel": 0.1824603172752366, - }, - { - "startGMT": "2024-07-08T08:41:00.0", - "endGMT": "2024-07-08T08:42:00.0", - "activityLevel": 0.2070281640038089, - }, - { - "startGMT": "2024-07-08T08:42:00.0", - "endGMT": "2024-07-08T08:43:00.0", - "activityLevel": 0.22927542039784596, - }, - { - "startGMT": "2024-07-08T08:43:00.0", - "endGMT": "2024-07-08T08:44:00.0", - "activityLevel": 0.2485255967741351, - }, - { - "startGMT": "2024-07-08T08:44:00.0", - "endGMT": "2024-07-08T08:45:00.0", - "activityLevel": 0.2641773234043736, - }, - { - "startGMT": "2024-07-08T08:45:00.0", - "endGMT": "2024-07-08T08:46:00.0", - "activityLevel": 0.275732630261712, - }, - { - "startGMT": "2024-07-08T08:46:00.0", - "endGMT": "2024-07-08T08:47:00.0", - "activityLevel": 0.28281935595538366, - }, - { - "startGMT": "2024-07-08T08:47:00.0", - "endGMT": "2024-07-08T08:48:00.0", - "activityLevel": 0.28520752502874813, - }, - { - "startGMT": "2024-07-08T08:48:00.0", - "endGMT": "2024-07-08T08:49:00.0", - "activityLevel": 0.28281935595538366, - }, - { - "startGMT": "2024-07-08T08:49:00.0", - "endGMT": "2024-07-08T08:50:00.0", - "activityLevel": 0.275732630261712, - }, - { - "startGMT": "2024-07-08T08:50:00.0", - "endGMT": "2024-07-08T08:51:00.0", - "activityLevel": 0.2641773234043736, - }, - { - "startGMT": "2024-07-08T08:51:00.0", - "endGMT": "2024-07-08T08:52:00.0", - "activityLevel": 0.2485255967741351, - }, - { - "startGMT": "2024-07-08T08:52:00.0", - "endGMT": "2024-07-08T08:53:00.0", - "activityLevel": 0.22927542039784596, - }, - { - "startGMT": "2024-07-08T08:53:00.0", - "endGMT": "2024-07-08T08:54:00.0", - "activityLevel": 0.2070281640038089, - }, - { - "startGMT": "2024-07-08T08:54:00.0", - "endGMT": "2024-07-08T08:55:00.0", - "activityLevel": 0.1824603172752366, - }, - { - "startGMT": "2024-07-08T08:55:00.0", - "endGMT": "2024-07-08T08:56:00.0", - "activityLevel": 0.15628871885999962, - }, - { - "startGMT": "2024-07-08T08:56:00.0", - "endGMT": "2024-07-08T08:57:00.0", - "activityLevel": 0.12922619707714067, - }, - { - "startGMT": "2024-07-08T08:57:00.0", - "endGMT": "2024-07-08T08:58:00.0", - "activityLevel": 0.10191635728888665, - }, - { - "startGMT": "2024-07-08T08:58:00.0", - "endGMT": "2024-07-08T08:59:00.0", - "activityLevel": 0.07480364409575245, - }, - { - "startGMT": "2024-07-08T08:59:00.0", - "endGMT": "2024-07-08T09:00:00.0", - "activityLevel": 0.04770615893481679, - }, - { - "startGMT": "2024-07-08T09:00:00.0", - "endGMT": "2024-07-08T09:01:00.0", - "activityLevel": 0.01586508762348951, - }, - { - "startGMT": "2024-07-08T09:01:00.0", - "endGMT": "2024-07-08T09:02:00.0", - "activityLevel": 0.027175985846478505, - }, - { - "startGMT": "2024-07-08T09:02:00.0", - "endGMT": "2024-07-08T09:03:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:03:00.0", - "endGMT": "2024-07-08T09:04:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:04:00.0", - "endGMT": "2024-07-08T09:05:00.0", - "activityLevel": 0.027175985846478505, - }, - { - "startGMT": "2024-07-08T09:05:00.0", - "endGMT": "2024-07-08T09:06:00.0", - "activityLevel": 0.01586508762348951, - }, - { - "startGMT": "2024-07-08T09:06:00.0", - "endGMT": "2024-07-08T09:07:00.0", - "activityLevel": 0.04770615893481679, - }, - { - "startGMT": "2024-07-08T09:07:00.0", - "endGMT": "2024-07-08T09:08:00.0", - "activityLevel": 0.07480364409575245, - }, - { - "startGMT": "2024-07-08T09:08:00.0", - "endGMT": "2024-07-08T09:09:00.0", - "activityLevel": 0.10191635728888665, - }, - { - "startGMT": "2024-07-08T09:09:00.0", - "endGMT": "2024-07-08T09:10:00.0", - "activityLevel": 0.12922619707714067, - }, - { - "startGMT": "2024-07-08T09:10:00.0", - "endGMT": "2024-07-08T09:11:00.0", - "activityLevel": 0.15628871885999962, - }, - { - "startGMT": "2024-07-08T09:11:00.0", - "endGMT": "2024-07-08T09:12:00.0", - "activityLevel": 0.1824603172752366, - }, - { - "startGMT": "2024-07-08T09:12:00.0", - "endGMT": "2024-07-08T09:13:00.0", - "activityLevel": 0.2070281640038089, - }, - { - "startGMT": "2024-07-08T09:13:00.0", - "endGMT": "2024-07-08T09:14:00.0", - "activityLevel": 0.22927542039784596, - }, - { - "startGMT": "2024-07-08T09:14:00.0", - "endGMT": "2024-07-08T09:15:00.0", - "activityLevel": 0.2485255967741351, - }, - { - "startGMT": "2024-07-08T09:15:00.0", - "endGMT": "2024-07-08T09:16:00.0", - "activityLevel": 0.2641773234043736, - }, - { - "startGMT": "2024-07-08T09:16:00.0", - "endGMT": "2024-07-08T09:17:00.0", - "activityLevel": 0.275732630261712, - }, - { - "startGMT": "2024-07-08T09:17:00.0", - "endGMT": "2024-07-08T09:18:00.0", - "activityLevel": 0.28281935595538366, - }, - { - "startGMT": "2024-07-08T09:18:00.0", - "endGMT": "2024-07-08T09:19:00.0", - "activityLevel": 0.28520752502874813, - }, - { - "startGMT": "2024-07-08T09:19:00.0", - "endGMT": "2024-07-08T09:20:00.0", - "activityLevel": 0.28281935595538366, - }, - { - "startGMT": "2024-07-08T09:20:00.0", - "endGMT": "2024-07-08T09:21:00.0", - "activityLevel": 0.275732630261712, - }, - { - "startGMT": "2024-07-08T09:21:00.0", - "endGMT": "2024-07-08T09:22:00.0", - "activityLevel": 0.2641773234043736, - }, - { - "startGMT": "2024-07-08T09:22:00.0", - "endGMT": "2024-07-08T09:23:00.0", - "activityLevel": 0.2485255967741351, - }, - { - "startGMT": "2024-07-08T09:23:00.0", - "endGMT": "2024-07-08T09:24:00.0", - "activityLevel": 0.22927542039784596, - }, - { - "startGMT": "2024-07-08T09:24:00.0", - "endGMT": "2024-07-08T09:25:00.0", - "activityLevel": 0.2070281640038089, - }, - { - "startGMT": "2024-07-08T09:25:00.0", - "endGMT": "2024-07-08T09:26:00.0", - "activityLevel": 0.1824603172752366, - }, - { - "startGMT": "2024-07-08T09:26:00.0", - "endGMT": "2024-07-08T09:27:00.0", - "activityLevel": 0.15628871885999962, - }, - { - "startGMT": "2024-07-08T09:27:00.0", - "endGMT": "2024-07-08T09:28:00.0", - "activityLevel": 0.12922619707714067, - }, - { - "startGMT": "2024-07-08T09:28:00.0", - "endGMT": "2024-07-08T09:29:00.0", - "activityLevel": 0.10191635728888665, - }, - { - "startGMT": "2024-07-08T09:29:00.0", - "endGMT": "2024-07-08T09:30:00.0", - "activityLevel": 0.07480364409575245, - }, - { - "startGMT": "2024-07-08T09:30:00.0", - "endGMT": "2024-07-08T09:31:00.0", - "activityLevel": 0.04770615893481679, - }, - { - "startGMT": "2024-07-08T09:31:00.0", - "endGMT": "2024-07-08T09:32:00.0", - "activityLevel": 0.01586508762348951, - }, - { - "startGMT": "2024-07-08T09:32:00.0", - "endGMT": "2024-07-08T09:33:00.0", - "activityLevel": 0.027175985846478505, - }, - { - "startGMT": "2024-07-08T09:33:00.0", - "endGMT": "2024-07-08T09:34:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:34:00.0", - "endGMT": "2024-07-08T09:35:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:35:00.0", - "endGMT": "2024-07-08T09:36:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:36:00.0", - "endGMT": "2024-07-08T09:37:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:37:00.0", - "endGMT": "2024-07-08T09:38:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:38:00.0", - "endGMT": "2024-07-08T09:39:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:39:00.0", - "endGMT": "2024-07-08T09:40:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:40:00.0", - "endGMT": "2024-07-08T09:41:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:41:00.0", - "endGMT": "2024-07-08T09:42:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:42:00.0", - "endGMT": "2024-07-08T09:43:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:43:00.0", - "endGMT": "2024-07-08T09:44:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:44:00.0", - "endGMT": "2024-07-08T09:45:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:45:00.0", - "endGMT": "2024-07-08T09:46:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:46:00.0", - "endGMT": "2024-07-08T09:47:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:47:00.0", - "endGMT": "2024-07-08T09:48:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:48:00.0", - "endGMT": "2024-07-08T09:49:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:49:00.0", - "endGMT": "2024-07-08T09:50:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:50:00.0", - "endGMT": "2024-07-08T09:51:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:51:00.0", - "endGMT": "2024-07-08T09:52:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:52:00.0", - "endGMT": "2024-07-08T09:53:00.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T09:53:00.0", - "endGMT": "2024-07-08T09:54:00.0", - "activityLevel": 0.07686529550989835, - }, - { - "startGMT": "2024-07-08T09:54:00.0", - "endGMT": "2024-07-08T09:55:00.0", - "activityLevel": 0.0448732441707528, - }, - { - "startGMT": "2024-07-08T09:55:00.0", - "endGMT": "2024-07-08T09:56:00.0", - "activityLevel": 0.1349333939486886, - }, - { - "startGMT": "2024-07-08T09:56:00.0", - "endGMT": "2024-07-08T09:57:00.0", - "activityLevel": 0.2115766559902864, - }, - { - "startGMT": "2024-07-08T09:57:00.0", - "endGMT": "2024-07-08T09:58:00.0", - "activityLevel": 0.2882629894112111, - }, - { - "startGMT": "2024-07-08T09:58:00.0", - "endGMT": "2024-07-08T09:59:00.0", - "activityLevel": 0.3655068810407815, - }, - { - "startGMT": "2024-07-08T09:59:00.0", - "endGMT": "2024-07-08T10:00:00.0", - "activityLevel": 0.4420512517154544, - }, - { - "startGMT": "2024-07-08T10:00:00.0", - "endGMT": "2024-07-08T10:01:00.0", - "activityLevel": 0.516075710571075, - }, - { - "startGMT": "2024-07-08T10:01:00.0", - "endGMT": "2024-07-08T10:02:00.0", - "activityLevel": 0.5855640746547759, - }, - { - "startGMT": "2024-07-08T10:02:00.0", - "endGMT": "2024-07-08T10:03:00.0", - "activityLevel": 0.6484888180908535, - }, - { - "startGMT": "2024-07-08T10:03:00.0", - "endGMT": "2024-07-08T10:04:00.0", - "activityLevel": 0.702936539109698, - }, - { - "startGMT": "2024-07-08T10:04:00.0", - "endGMT": "2024-07-08T10:05:00.0", - "activityLevel": 0.7472063072597769, - }, - { - "startGMT": "2024-07-08T10:05:00.0", - "endGMT": "2024-07-08T10:06:00.0", - "activityLevel": 0.7798896506098385, - }, - { - "startGMT": "2024-07-08T10:06:00.0", - "endGMT": "2024-07-08T10:07:00.0", - "activityLevel": 0.7962323977145869, - }, - { - "startGMT": "2024-07-08T10:07:00.0", - "endGMT": "2024-07-08T10:08:00.0", - "activityLevel": 0.8042710942541551, - }, - { - "startGMT": "2024-07-08T10:08:00.0", - "endGMT": "2024-07-08T10:09:00.0", - "activityLevel": 0.8124745741677484, - }, - { - "startGMT": "2024-07-08T10:09:00.0", - "endGMT": "2024-07-08T10:10:00.0", - "activityLevel": 0.8192677030683438, - }, - { - "startGMT": "2024-07-08T10:10:00.0", - "endGMT": "2024-07-08T10:11:00.0", - "activityLevel": 0.8283583150020962, - }, - { - "startGMT": "2024-07-08T10:11:00.0", - "endGMT": "2024-07-08T10:12:00.0", - "activityLevel": 0.8360586473808641, - }, - { - "startGMT": "2024-07-08T10:12:00.0", - "endGMT": "2024-07-08T10:13:00.0", - "activityLevel": 0.8612508375597668, - }, - { - "startGMT": "2024-07-08T10:13:00.0", - "endGMT": "2024-07-08T10:14:00.0", - "activityLevel": 0.8931986353382947, - }, - { - "startGMT": "2024-07-08T10:14:00.0", - "endGMT": "2024-07-08T10:15:00.0", - "activityLevel": 1.0028904650887294, - }, - { - "startGMT": "2024-07-08T10:15:00.0", - "endGMT": "2024-07-08T10:16:00.0", - "activityLevel": 1.1475931334673173, - }, - { - "startGMT": "2024-07-08T10:16:00.0", - "endGMT": "2024-07-08T10:17:00.0", - "activityLevel": 1.358310949374774, - }, - { - "startGMT": "2024-07-08T10:17:00.0", - "endGMT": "2024-07-08T10:18:00.0", - "activityLevel": 1.6316661380057063, - }, - { - "startGMT": "2024-07-08T10:18:00.0", - "endGMT": "2024-07-08T10:19:00.0", - "activityLevel": 1.9692171001776986, - }, - { - "startGMT": "2024-07-08T10:19:00.0", - "endGMT": "2024-07-08T10:20:00.0", - "activityLevel": 2.340081573322653, - }, - { - "startGMT": "2024-07-08T10:20:00.0", - "endGMT": "2024-07-08T10:21:00.0", - "activityLevel": 2.725034226599384, - }, - { - "startGMT": "2024-07-08T10:21:00.0", - "endGMT": "2024-07-08T10:22:00.0", - "activityLevel": 3.1275206640940922, - }, - { - "startGMT": "2024-07-08T10:22:00.0", - "endGMT": "2024-07-08T10:23:00.0", - "activityLevel": 3.5406211235211957, - }, - { - "startGMT": "2024-07-08T10:23:00.0", - "endGMT": "2024-07-08T10:24:00.0", - "activityLevel": 3.9588062068049887, - }, - { - "startGMT": "2024-07-08T10:24:00.0", - "endGMT": "2024-07-08T10:25:00.0", - "activityLevel": 4.361745599369039, - }, - { - "startGMT": "2024-07-08T10:25:00.0", - "endGMT": "2024-07-08T10:26:00.0", - "activityLevel": 4.753375301969818, - }, - { - "startGMT": "2024-07-08T10:26:00.0", - "endGMT": "2024-07-08T10:27:00.0", - "activityLevel": 5.119252838888224, - }, - { - "startGMT": "2024-07-08T10:27:00.0", - "endGMT": "2024-07-08T10:28:00.0", - "activityLevel": 5.448264351748779, - }, - { - "startGMT": "2024-07-08T10:28:00.0", - "endGMT": "2024-07-08T10:29:00.0", - "activityLevel": 5.744688055401102, - }, - { - "startGMT": "2024-07-08T10:29:00.0", - "endGMT": "2024-07-08T10:30:00.0", - "activityLevel": 5.99753575679536, - }, - { - "startGMT": "2024-07-08T10:30:00.0", - "endGMT": "2024-07-08T10:31:00.0", - "activityLevel": 6.202295450727306, - }, - { - "startGMT": "2024-07-08T10:31:00.0", - "endGMT": "2024-07-08T10:32:00.0", - "activityLevel": 6.3555949112142525, - }, - { - "startGMT": "2024-07-08T10:32:00.0", - "endGMT": "2024-07-08T10:33:00.0", - "activityLevel": 6.455280652427611, - }, - { - "startGMT": "2024-07-08T10:33:00.0", - "endGMT": "2024-07-08T10:34:00.0", - "activityLevel": 6.500461886729058, - }, - { - "startGMT": "2024-07-08T10:34:00.0", - "endGMT": "2024-07-08T10:35:00.0", - "activityLevel": 6.491975731253427, - }, - { - "startGMT": "2024-07-08T10:35:00.0", - "endGMT": "2024-07-08T10:36:00.0", - "activityLevel": 6.4307833174597135, - }, - { - "startGMT": "2024-07-08T10:36:00.0", - "endGMT": "2024-07-08T10:37:00.0", - "activityLevel": 6.318869199067785, - }, - { - "startGMT": "2024-07-08T10:37:00.0", - "endGMT": "2024-07-08T10:38:00.0", - "activityLevel": 6.158852858184711, - }, - { - "startGMT": "2024-07-08T10:38:00.0", - "endGMT": "2024-07-08T10:39:00.0", - "activityLevel": 5.955719049228967, - }, - { - "startGMT": "2024-07-08T10:39:00.0", - "endGMT": "2024-07-08T10:40:00.0", - "activityLevel": 5.714703785071322, - }, - { - "startGMT": "2024-07-08T10:40:00.0", - "endGMT": "2024-07-08T10:41:00.0", - "activityLevel": 5.439031865941106, - }, - { - "startGMT": "2024-07-08T10:41:00.0", - "endGMT": "2024-07-08T10:42:00.0", - "activityLevel": 5.147138408507956, - }, - { - "startGMT": "2024-07-08T10:42:00.0", - "endGMT": "2024-07-08T10:43:00.0", - "activityLevel": 4.847876630473029, - }, - { - "startGMT": "2024-07-08T10:43:00.0", - "endGMT": "2024-07-08T10:44:00.0", - "activityLevel": 4.536134945409765, - }, - { - "startGMT": "2024-07-08T10:44:00.0", - "endGMT": "2024-07-08T10:45:00.0", - "activityLevel": 4.24416929713549, - }, - { - "startGMT": "2024-07-08T10:45:00.0", - "endGMT": "2024-07-08T10:46:00.0", - "activityLevel": 3.9924448274697677, - }, - { - "startGMT": "2024-07-08T10:46:00.0", - "endGMT": "2024-07-08T10:47:00.0", - "activityLevel": 3.7918004538380656, - }, - { - "startGMT": "2024-07-08T10:47:00.0", - "endGMT": "2024-07-08T10:48:00.0", - "activityLevel": 3.6512674437920847, - }, - { - "startGMT": "2024-07-08T10:48:00.0", - "endGMT": "2024-07-08T10:49:00.0", - "activityLevel": 3.584620461930404, - }, - { - "startGMT": "2024-07-08T10:49:00.0", - "endGMT": "2024-07-08T10:50:00.0", - "activityLevel": 3.5990230099206846, - }, - { - "startGMT": "2024-07-08T10:50:00.0", - "endGMT": "2024-07-08T10:51:00.0", - "activityLevel": 3.674984075963328, - }, - { - "startGMT": "2024-07-08T10:51:00.0", - "endGMT": "2024-07-08T10:52:00.0", - "activityLevel": 3.7917730103054015, - }, - { - "startGMT": "2024-07-08T10:52:00.0", - "endGMT": "2024-07-08T10:53:00.0", - "activityLevel": 3.9213390099934085, - }, - { - "startGMT": "2024-07-08T10:53:00.0", - "endGMT": "2024-07-08T10:54:00.0", - "activityLevel": 4.055291331031145, - }, - { - "startGMT": "2024-07-08T10:54:00.0", - "endGMT": "2024-07-08T10:55:00.0", - "activityLevel": 4.164815193371208, - }, - { - "startGMT": "2024-07-08T10:55:00.0", - "endGMT": "2024-07-08T10:56:00.0", - "activityLevel": 4.242608873995664, - }, - { - "startGMT": "2024-07-08T10:56:00.0", - "endGMT": "2024-07-08T10:57:00.0", - "activityLevel": 4.285332348673107, - }, - { - "startGMT": "2024-07-08T10:57:00.0", - "endGMT": "2024-07-08T10:58:00.0", - "activityLevel": 4.274079702441345, - }, - { - "startGMT": "2024-07-08T10:58:00.0", - "endGMT": "2024-07-08T10:59:00.0", - "activityLevel": 4.212809157336095, - }, - { - "startGMT": "2024-07-08T10:59:00.0", - "endGMT": "2024-07-08T11:00:00.0", - "activityLevel": 4.103002510680104, - }, - { - "startGMT": "2024-07-08T11:00:00.0", - "endGMT": "2024-07-08T11:01:00.0", - "activityLevel": 3.9484775387293265, - }, - { - "startGMT": "2024-07-08T11:01:00.0", - "endGMT": "2024-07-08T11:02:00.0", - "activityLevel": 3.7552774472343597, - }, - { - "startGMT": "2024-07-08T11:02:00.0", - "endGMT": "2024-07-08T11:03:00.0", - "activityLevel": 3.5315135300455616, - }, - { - "startGMT": "2024-07-08T11:03:00.0", - "endGMT": "2024-07-08T11:04:00.0", - "activityLevel": 3.2791977894871196, - }, - { - "startGMT": "2024-07-08T11:04:00.0", - "endGMT": "2024-07-08T11:05:00.0", - "activityLevel": 3.027222392705982, - }, - { - "startGMT": "2024-07-08T11:05:00.0", - "endGMT": "2024-07-08T11:06:00.0", - "activityLevel": 2.801379125353849, - }, - { - "startGMT": "2024-07-08T11:06:00.0", - "endGMT": "2024-07-08T11:07:00.0", - "activityLevel": 2.643352285387023, - }, - { - "startGMT": "2024-07-08T11:07:00.0", - "endGMT": "2024-07-08T11:08:00.0", - "activityLevel": 2.5608249575455866, - }, - { - "startGMT": "2024-07-08T11:08:00.0", - "endGMT": "2024-07-08T11:09:00.0", - "activityLevel": 2.5885196981247356, - }, - { - "startGMT": "2024-07-08T11:09:00.0", - "endGMT": "2024-07-08T11:10:00.0", - "activityLevel": 2.74385322203688, - }, - { - "startGMT": "2024-07-08T11:10:00.0", - "endGMT": "2024-07-08T11:11:00.0", - "activityLevel": 2.9894334635828512, - }, - { - "startGMT": "2024-07-08T11:11:00.0", - "endGMT": "2024-07-08T11:12:00.0", - "activityLevel": 3.313357211851606, - }, - { - "startGMT": "2024-07-08T11:12:00.0", - "endGMT": "2024-07-08T11:13:00.0", - "activityLevel": 3.7000375630578843, - }, - { - "startGMT": "2024-07-08T11:13:00.0", - "endGMT": "2024-07-08T11:14:00.0", - "activityLevel": 4.11680080737648, - }, - { - "startGMT": "2024-07-08T11:14:00.0", - "endGMT": "2024-07-08T11:15:00.0", - "activityLevel": 4.539146075899416, - }, - { - "startGMT": "2024-07-08T11:15:00.0", - "endGMT": "2024-07-08T11:16:00.0", - "activityLevel": 4.961953721222002, - }, - { - "startGMT": "2024-07-08T11:16:00.0", - "endGMT": "2024-07-08T11:17:00.0", - "activityLevel": 5.374999768764193, - }, - { - "startGMT": "2024-07-08T11:17:00.0", - "endGMT": "2024-07-08T11:18:00.0", - "activityLevel": 5.7713868984932155, - }, - { - "startGMT": "2024-07-08T11:18:00.0", - "endGMT": "2024-07-08T11:19:00.0", - "activityLevel": 6.143863876841869, - }, - { - "startGMT": "2024-07-08T11:19:00.0", - "endGMT": "2024-07-08T11:20:00.0", - "activityLevel": 6.48686139548907, - }, - { - "startGMT": "2024-07-08T11:20:00.0", - "endGMT": "2024-07-08T11:21:00.0", - "activityLevel": 6.796272400617864, - }, - ], - "remSleepData": true, - "sleepLevels": [ - { - "startGMT": "2024-07-08T01:58:45.0", - "endGMT": "2024-07-08T02:15:45.0", - "activityLevel": 1.0, - }, - { - "startGMT": "2024-07-08T02:15:45.0", - "endGMT": "2024-07-08T02:21:45.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T02:21:45.0", - "endGMT": "2024-07-08T02:28:45.0", - "activityLevel": 1.0, - }, - { - "startGMT": "2024-07-08T02:28:45.0", - "endGMT": "2024-07-08T02:44:45.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T02:44:45.0", - "endGMT": "2024-07-08T02:45:45.0", - "activityLevel": 3.0, - }, - { - "startGMT": "2024-07-08T02:45:45.0", - "endGMT": "2024-07-08T03:06:45.0", - "activityLevel": 1.0, - }, - { - "startGMT": "2024-07-08T03:06:45.0", - "endGMT": "2024-07-08T03:12:45.0", - "activityLevel": 3.0, - }, - { - "startGMT": "2024-07-08T03:12:45.0", - "endGMT": "2024-07-08T03:20:45.0", - "activityLevel": 1.0, - }, - { - "startGMT": "2024-07-08T03:20:45.0", - "endGMT": "2024-07-08T03:42:45.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T03:42:45.0", - "endGMT": "2024-07-08T03:53:45.0", - "activityLevel": 1.0, - }, - { - "startGMT": "2024-07-08T03:53:45.0", - "endGMT": "2024-07-08T04:04:45.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T04:04:45.0", - "endGMT": "2024-07-08T05:12:45.0", - "activityLevel": 1.0, - }, - { - "startGMT": "2024-07-08T05:12:45.0", - "endGMT": "2024-07-08T05:27:45.0", - "activityLevel": 2.0, - }, - { - "startGMT": "2024-07-08T05:27:45.0", - "endGMT": "2024-07-08T05:51:45.0", - "activityLevel": 1.0, - }, - { - "startGMT": "2024-07-08T05:51:45.0", - "endGMT": "2024-07-08T06:11:45.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T06:11:45.0", - "endGMT": "2024-07-08T07:07:45.0", - "activityLevel": 1.0, - }, - { - "startGMT": "2024-07-08T07:07:45.0", - "endGMT": "2024-07-08T07:18:45.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T07:18:45.0", - "endGMT": "2024-07-08T07:21:45.0", - "activityLevel": 3.0, - }, - { - "startGMT": "2024-07-08T07:21:45.0", - "endGMT": "2024-07-08T07:32:45.0", - "activityLevel": 1.0, - }, - { - "startGMT": "2024-07-08T07:32:45.0", - "endGMT": "2024-07-08T08:15:45.0", - "activityLevel": 2.0, - }, - { - "startGMT": "2024-07-08T08:15:45.0", - "endGMT": "2024-07-08T08:27:45.0", - "activityLevel": 1.0, - }, - { - "startGMT": "2024-07-08T08:27:45.0", - "endGMT": "2024-07-08T08:47:45.0", - "activityLevel": 0.0, - }, - { - "startGMT": "2024-07-08T08:47:45.0", - "endGMT": "2024-07-08T09:12:45.0", - "activityLevel": 1.0, - }, - { - "startGMT": "2024-07-08T09:12:45.0", - "endGMT": "2024-07-08T09:33:45.0", - "activityLevel": 2.0, - }, - { - "startGMT": "2024-07-08T09:33:45.0", - "endGMT": "2024-07-08T09:44:45.0", - "activityLevel": 1.0, - }, - { - "startGMT": "2024-07-08T09:44:45.0", - "endGMT": "2024-07-08T10:21:45.0", - "activityLevel": 2.0, - }, - ], - "sleepRestlessMoments": [ - {"value": 1, "startGMT": 1720404285000}, - {"value": 1, "startGMT": 1720406445000}, - {"value": 2, "startGMT": 1720407705000}, - {"value": 1, "startGMT": 1720407885000}, - {"value": 1, "startGMT": 1720410045000}, - {"value": 1, "startGMT": 1720411305000}, - {"value": 1, "startGMT": 1720412745000}, - {"value": 1, "startGMT": 1720414365000}, - {"value": 1, "startGMT": 1720414725000}, - {"value": 1, "startGMT": 1720415265000}, - {"value": 1, "startGMT": 1720415445000}, - {"value": 1, "startGMT": 1720415805000}, - {"value": 1, "startGMT": 1720416345000}, - {"value": 1, "startGMT": 1720417065000}, - {"value": 1, "startGMT": 1720420665000}, - {"value": 1, "startGMT": 1720421205000}, - {"value": 1, "startGMT": 1720421745000}, - {"value": 1, "startGMT": 1720423005000}, - {"value": 1, "startGMT": 1720423545000}, - {"value": 1, "startGMT": 1720424085000}, - {"value": 1, "startGMT": 1720425525000}, - {"value": 1, "startGMT": 1720425885000}, - {"value": 1, "startGMT": 1720426605000}, - {"value": 1, "startGMT": 1720428225000}, - {"value": 1, "startGMT": 1720428945000}, - {"value": 1, "startGMT": 1720432005000}, - {"value": 1, "startGMT": 1720433085000}, - {"value": 1, "startGMT": 1720433985000}, - ], - "restlessMomentsCount": 29, - "wellnessSpO2SleepSummaryDTO": { - "userProfilePk": "user_id: int", - "deviceId": 3472661486, - "sleepMeasurementStartGMT": "2024-07-08T02:00:00.0", - "sleepMeasurementEndGMT": "2024-07-08T10:21:00.0", - "alertThresholdValue": null, - "numberOfEventsBelowThreshold": null, - "durationOfEventsBelowThreshold": null, - "averageSPO2": 95.0, - "averageSpO2HR": 42.0, - "lowestSPO2": 89, - }, - "wellnessEpochSPO2DataDTOList": [ - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:00:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:01:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 9, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:02:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:03:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:04:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:05:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:06:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:07:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 15, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:08:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:09:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 10, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:10:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:11:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:12:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:13:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:14:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:15:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:16:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:17:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:18:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:19:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:20:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:21:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:22:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:23:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:24:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:25:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:26:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:27:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:28:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:29:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:30:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:31:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:32:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:33:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:34:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:35:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:36:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:37:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:38:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:39:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:40:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:41:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:42:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:43:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:44:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:45:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:46:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:47:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:48:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 91, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:49:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:50:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:51:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:52:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:53:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:54:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:55:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:56:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:57:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:58:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T02:59:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:00:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:01:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:02:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:03:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 91, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:04:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:05:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:06:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:07:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:08:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:09:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:10:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:11:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:12:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:13:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:14:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:15:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:16:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:17:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:18:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 9, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:19:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:20:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:21:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:22:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:23:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:24:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:25:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:26:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 9, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:27:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:28:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:29:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:30:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:31:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:32:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:33:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:34:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:35:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:36:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:37:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:38:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:39:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:40:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:41:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:42:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:43:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:44:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 17, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:45:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:46:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 11, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:47:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:48:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 17, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:49:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:50:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 11, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:51:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:52:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:53:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:54:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:55:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:56:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:57:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:58:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T03:59:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:00:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-07T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 91, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:01:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:02:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:03:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 13, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:04:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:05:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:06:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:07:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:08:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:09:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:10:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:11:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:12:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:13:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:14:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:15:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:16:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:17:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:18:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:19:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:20:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:21:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:22:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:23:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:24:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:25:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:26:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:27:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:28:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:29:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 13, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:30:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 25, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:31:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:32:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 12, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:33:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:34:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 14, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:35:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 9, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:36:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:37:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 10, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:38:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:39:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:40:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:41:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:42:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:43:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:44:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 10, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:45:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:46:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:47:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:48:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:49:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:50:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:51:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:52:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:53:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 15, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:54:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:55:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:56:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:57:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:58:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T04:59:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:00:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 11, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:01:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:02:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 16, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:03:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 17, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:04:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 17, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:05:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:06:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 10, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:07:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:08:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 9, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:09:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:10:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:11:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:12:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:13:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 15, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:14:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:15:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:16:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:17:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:18:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:19:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:20:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:21:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:22:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:23:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:24:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:25:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:26:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:27:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:28:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:29:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:30:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:31:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:32:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:33:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:34:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 9, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:35:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:36:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:37:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:38:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:39:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:40:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:41:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:42:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:43:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:44:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:45:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:46:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:47:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:48:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:49:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 91, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:50:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 90, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:51:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 90, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:52:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:53:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:54:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:55:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 90, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:56:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 90, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:57:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:58:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T05:59:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:00:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 11, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:01:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 91, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:02:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:03:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:04:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:05:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:06:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:07:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:08:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:09:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:10:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:11:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:12:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:13:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:14:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 91, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:15:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:16:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 91, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:17:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 91, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:18:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:19:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:20:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:21:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:22:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:23:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:24:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:25:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:26:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:27:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:28:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:29:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:30:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:31:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:32:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:33:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:34:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:35:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:36:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:37:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:38:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:39:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:40:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:41:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:42:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:43:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:44:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:45:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 91, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:46:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 89, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:47:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 89, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:48:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 89, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:49:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:50:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:51:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:52:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:53:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:54:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:55:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:56:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:57:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:58:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T06:59:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:00:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:01:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:02:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:03:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:04:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 22, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:05:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 11, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:06:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 9, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:07:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:08:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:09:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:10:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:11:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:12:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 23, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:13:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:14:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:15:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:16:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:17:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:18:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:19:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:20:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:21:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:22:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:23:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:24:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 9, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:25:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:26:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 9, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:27:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:28:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:29:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 11, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:30:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:31:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:32:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:33:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:34:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:35:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:36:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:37:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:38:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:39:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 11, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:40:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:41:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:42:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:43:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:44:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:45:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:46:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:47:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:48:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 9, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:49:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:50:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:51:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:52:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:53:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:54:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:55:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:56:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 92, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:57:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:58:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T07:59:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:00:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:01:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:02:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:03:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:04:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:05:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:06:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:07:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:08:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:09:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:10:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:11:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:12:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:13:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:14:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:15:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:16:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 13, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:17:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:18:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:19:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:20:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:21:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:22:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:23:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:24:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:25:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:26:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:27:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 7, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:28:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:29:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:30:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:31:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:32:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:33:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:34:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 9, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:35:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:36:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:37:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 20, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:38:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:39:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:40:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:41:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:42:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:43:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:44:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:45:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:46:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:47:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:48:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:49:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:50:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:51:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:52:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:53:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:54:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:55:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:56:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:57:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:58:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T08:59:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:00:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:01:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:02:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:03:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:04:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:05:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:06:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:07:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:08:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:09:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:10:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:11:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:12:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 11, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:13:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:14:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:15:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:16:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:17:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:18:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:19:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:20:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:21:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:22:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:23:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:24:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:25:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:26:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:27:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:28:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:29:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:30:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:31:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:32:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:33:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:34:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:35:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:36:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:37:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:38:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:39:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:40:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:41:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:42:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:43:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:44:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:45:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:46:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:47:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:48:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:49:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 95, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:50:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 96, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:51:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:52:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:53:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:54:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:55:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:56:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 2, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:57:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 24, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:58:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 8, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T09:59:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:00:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:01:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:02:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:03:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:04:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:05:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:06:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:07:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 99, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:08:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 100, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:09:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 97, - "readingConfidence": 6, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:10:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 90, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:11:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 5, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:12:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:13:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:14:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 94, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:15:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:16:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 3, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:17:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:18:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 91, - "readingConfidence": 4, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:19:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 11, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:20:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 93, - "readingConfidence": 9, - }, - { - "userProfilePK": "user_id: int", - "epochTimestamp": "2024-07-08T10:21:00.0", - "deviceId": 3472661486, - "calendarDate": "2024-07-08T00:00:00.0", - "epochDuration": 60, - "spo2Reading": 98, - "readingConfidence": 5, - }, - ], - "wellnessEpochRespirationDataDTOList": [ - { - "startTimeGMT": 1720403925000, - "respirationValue": 11.0, - }, - { - "startTimeGMT": 1720404000000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720404120000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720404240000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720404360000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720404480000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720404600000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720404720000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720404840000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720404960000, - "respirationValue": 20.0, - }, - { - "startTimeGMT": 1720405080000, - "respirationValue": 20.0, - }, - { - "startTimeGMT": 1720405200000, - "respirationValue": 20.0, - }, - { - "startTimeGMT": 1720405320000, - "respirationValue": 20.0, - }, - { - "startTimeGMT": 1720405440000, - "respirationValue": 21.0, - }, - { - "startTimeGMT": 1720405560000, - "respirationValue": 21.0, - }, - { - "startTimeGMT": 1720405680000, - "respirationValue": 20.0, - }, - { - "startTimeGMT": 1720405800000, - "respirationValue": 20.0, - }, - { - "startTimeGMT": 1720405920000, - "respirationValue": 20.0, - }, - { - "startTimeGMT": 1720406040000, - "respirationValue": 21.0, - }, - { - "startTimeGMT": 1720406160000, - "respirationValue": 20.0, - }, - { - "startTimeGMT": 1720406280000, - "respirationValue": 20.0, - }, - { - "startTimeGMT": 1720406400000, - "respirationValue": 20.0, - }, - { - "startTimeGMT": 1720406520000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720406640000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720406760000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720406880000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720407000000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720407120000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720407240000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720407360000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720407480000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720407600000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720407720000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720407840000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720407960000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720408080000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720408200000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720408320000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720408440000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720408560000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720408680000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720408800000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720408920000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720409040000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720409160000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720409280000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720409400000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720409520000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720409640000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720409760000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720409880000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720410000000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720410120000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720410240000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720410360000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720410480000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720410600000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720410720000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720410840000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720410960000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720411080000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720411200000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720411320000, - "respirationValue": 11.0, - }, - { - "startTimeGMT": 1720411440000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720411560000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720411680000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720411800000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720411920000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720412040000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720412160000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720412280000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720412400000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720412520000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720412640000, - "respirationValue": 11.0, - }, - { - "startTimeGMT": 1720412760000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720412880000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720413000000, - "respirationValue": 11.0, - }, - { - "startTimeGMT": 1720413120000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720413240000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720413360000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720413480000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720413600000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720413720000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720413840000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720413960000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720414080000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720414200000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720414320000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720414440000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720414560000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720414680000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720414800000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720414920000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720415040000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720415160000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720415280000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720415400000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720415520000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720415640000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720415760000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720415880000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720416000000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720416120000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720416240000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720416360000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720416480000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720416600000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720416720000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720416840000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720416960000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720417080000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720417200000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720417320000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720417440000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720417560000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720417680000, - "respirationValue": 19.0, - }, - { - "startTimeGMT": 1720417800000, - "respirationValue": 19.0, - }, - { - "startTimeGMT": 1720417920000, - "respirationValue": 19.0, - }, - { - "startTimeGMT": 1720418040000, - "respirationValue": 19.0, - }, - { - "startTimeGMT": 1720418160000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720418280000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720418400000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720418520000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720418640000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720418760000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720418880000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720419000000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720419120000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720419240000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720419360000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720419480000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720419600000, - "respirationValue": 19.0, - }, - { - "startTimeGMT": 1720419720000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720419840000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720419960000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720420080000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720420200000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720420320000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720420440000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720420560000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720420680000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720420800000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720420920000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720421040000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720421160000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720421280000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720421400000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720421520000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720421640000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720421760000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720421880000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720422000000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720422120000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720422240000, - "respirationValue": 19.0, - }, - { - "startTimeGMT": 1720422360000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720422480000, - "respirationValue": 19.0, - }, - { - "startTimeGMT": 1720422600000, - "respirationValue": 19.0, - }, - { - "startTimeGMT": 1720422720000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720422840000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720422960000, - "respirationValue": 19.0, - }, - { - "startTimeGMT": 1720423080000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720423200000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720423320000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720423440000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720423560000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720423680000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720423800000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720423920000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720424040000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720424160000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720424280000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720424400000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720424520000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720424640000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720424760000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720424880000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720425000000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720425120000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720425240000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720425360000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720425480000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720425600000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720425720000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720425840000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720425960000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720426080000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720426200000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720426320000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720426440000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720426560000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720426680000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720426800000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720426920000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720427040000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720427160000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720427280000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720427400000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720427520000, - "respirationValue": 18.0, - }, - { - "startTimeGMT": 1720427640000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720427760000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720427880000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720428000000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720428120000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720428240000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720428360000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720428480000, - "respirationValue": 15.0, - }, - { - "startTimeGMT": 1720428600000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720428720000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720428840000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720428960000, - "respirationValue": 11.0, - }, - { - "startTimeGMT": 1720429080000, - "respirationValue": 8.0, - }, - { - "startTimeGMT": 1720429200000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720429320000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720429440000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720429560000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720429680000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720429800000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720429920000, - "respirationValue": 8.0, - }, - { - "startTimeGMT": 1720430040000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720430160000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720430280000, - "respirationValue": 11.0, - }, - { - "startTimeGMT": 1720430400000, - "respirationValue": 11.0, - }, - { - "startTimeGMT": 1720430520000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720430640000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720430760000, - "respirationValue": 11.0, - }, - { - "startTimeGMT": 1720430880000, - "respirationValue": 11.0, - }, - { - "startTimeGMT": 1720431000000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720431120000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720431240000, - "respirationValue": 12.0, - }, - { - "startTimeGMT": 1720431360000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720431480000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720431600000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720431720000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720431840000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720431960000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720432080000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720432200000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720432320000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720432440000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720432560000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720432680000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720432800000, - "respirationValue": 9.0, - }, - { - "startTimeGMT": 1720432920000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720433040000, - "respirationValue": 10.0, - }, - { - "startTimeGMT": 1720433160000, - "respirationValue": 13.0, - }, - { - "startTimeGMT": 1720433280000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720433400000, - "respirationValue": 14.0, - }, - { - "startTimeGMT": 1720433520000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720433640000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720433760000, - "respirationValue": 16.0, - }, - { - "startTimeGMT": 1720433880000, - "respirationValue": 17.0, - }, - { - "startTimeGMT": 1720434000000, - "respirationValue": 17.0, - }, - ], - "sleepHeartRate": [ - {"value": 44, "startGMT": 1720403880000}, - {"value": 45, "startGMT": 1720404000000}, - {"value": 46, "startGMT": 1720404120000}, - {"value": 46, "startGMT": 1720404240000}, - {"value": 46, "startGMT": 1720404360000}, - {"value": 49, "startGMT": 1720404480000}, - {"value": 47, "startGMT": 1720404600000}, - {"value": 47, "startGMT": 1720404720000}, - {"value": 47, "startGMT": 1720404840000}, - {"value": 47, "startGMT": 1720404960000}, - {"value": 47, "startGMT": 1720405080000}, - {"value": 47, "startGMT": 1720405200000}, - {"value": 47, "startGMT": 1720405320000}, - {"value": 47, "startGMT": 1720405440000}, - {"value": 47, "startGMT": 1720405560000}, - {"value": 47, "startGMT": 1720405680000}, - {"value": 47, "startGMT": 1720405800000}, - {"value": 47, "startGMT": 1720405920000}, - {"value": 47, "startGMT": 1720406040000}, - {"value": 47, "startGMT": 1720406160000}, - {"value": 47, "startGMT": 1720406280000}, - {"value": 48, "startGMT": 1720406400000}, - {"value": 48, "startGMT": 1720406520000}, - {"value": 54, "startGMT": 1720406640000}, - {"value": 46, "startGMT": 1720406760000}, - {"value": 47, "startGMT": 1720406880000}, - {"value": 46, "startGMT": 1720407000000}, - {"value": 47, "startGMT": 1720407120000}, - {"value": 47, "startGMT": 1720407240000}, - {"value": 47, "startGMT": 1720407360000}, - {"value": 47, "startGMT": 1720407480000}, - {"value": 47, "startGMT": 1720407600000}, - {"value": 48, "startGMT": 1720407720000}, - {"value": 49, "startGMT": 1720407840000}, - {"value": 47, "startGMT": 1720407960000}, - {"value": 46, "startGMT": 1720408080000}, - {"value": 47, "startGMT": 1720408200000}, - {"value": 50, "startGMT": 1720408320000}, - {"value": 46, "startGMT": 1720408440000}, - {"value": 46, "startGMT": 1720408560000}, - {"value": 46, "startGMT": 1720408680000}, - {"value": 46, "startGMT": 1720408800000}, - {"value": 46, "startGMT": 1720408920000}, - {"value": 47, "startGMT": 1720409040000}, - {"value": 46, "startGMT": 1720409160000}, - {"value": 46, "startGMT": 1720409280000}, - {"value": 46, "startGMT": 1720409400000}, - {"value": 46, "startGMT": 1720409520000}, - {"value": 46, "startGMT": 1720409640000}, - {"value": 45, "startGMT": 1720409760000}, - {"value": 46, "startGMT": 1720409880000}, - {"value": 45, "startGMT": 1720410000000}, - {"value": 51, "startGMT": 1720410120000}, - {"value": 45, "startGMT": 1720410240000}, - {"value": 44, "startGMT": 1720410360000}, - {"value": 45, "startGMT": 1720410480000}, - {"value": 44, "startGMT": 1720410600000}, - {"value": 45, "startGMT": 1720410720000}, - {"value": 44, "startGMT": 1720410840000}, - {"value": 44, "startGMT": 1720410960000}, - {"value": 47, "startGMT": 1720411080000}, - {"value": 47, "startGMT": 1720411200000}, - {"value": 47, "startGMT": 1720411320000}, - {"value": 50, "startGMT": 1720411440000}, - {"value": 43, "startGMT": 1720411560000}, - {"value": 44, "startGMT": 1720411680000}, - {"value": 43, "startGMT": 1720411800000}, - {"value": 43, "startGMT": 1720411920000}, - {"value": 44, "startGMT": 1720412040000}, - {"value": 43, "startGMT": 1720412160000}, - {"value": 43, "startGMT": 1720412280000}, - {"value": 44, "startGMT": 1720412400000}, - {"value": 43, "startGMT": 1720412520000}, - {"value": 44, "startGMT": 1720412640000}, - {"value": 43, "startGMT": 1720412760000}, - {"value": 44, "startGMT": 1720412880000}, - {"value": 48, "startGMT": 1720413000000}, - {"value": 42, "startGMT": 1720413120000}, - {"value": 42, "startGMT": 1720413240000}, - {"value": 42, "startGMT": 1720413360000}, - {"value": 42, "startGMT": 1720413480000}, - {"value": 42, "startGMT": 1720413600000}, - {"value": 42, "startGMT": 1720413720000}, - {"value": 42, "startGMT": 1720413840000}, - {"value": 42, "startGMT": 1720413960000}, - {"value": 41, "startGMT": 1720414080000}, - {"value": 41, "startGMT": 1720414200000}, - {"value": 43, "startGMT": 1720414320000}, - {"value": 42, "startGMT": 1720414440000}, - {"value": 44, "startGMT": 1720414560000}, - {"value": 41, "startGMT": 1720414680000}, - {"value": 42, "startGMT": 1720414800000}, - {"value": 42, "startGMT": 1720414920000}, - {"value": 42, "startGMT": 1720415040000}, - {"value": 43, "startGMT": 1720415160000}, - {"value": 44, "startGMT": 1720415280000}, - {"value": 42, "startGMT": 1720415400000}, - {"value": 44, "startGMT": 1720415520000}, - {"value": 45, "startGMT": 1720415640000}, - {"value": 43, "startGMT": 1720415760000}, - {"value": 42, "startGMT": 1720415880000}, - {"value": 48, "startGMT": 1720416000000}, - {"value": 41, "startGMT": 1720416120000}, - {"value": 42, "startGMT": 1720416240000}, - {"value": 41, "startGMT": 1720416360000}, - {"value": 44, "startGMT": 1720416480000}, - {"value": 39, "startGMT": 1720416600000}, - {"value": 40, "startGMT": 1720416720000}, - {"value": 41, "startGMT": 1720416840000}, - {"value": 41, "startGMT": 1720416960000}, - {"value": 41, "startGMT": 1720417080000}, - {"value": 46, "startGMT": 1720417200000}, - {"value": 41, "startGMT": 1720417320000}, - {"value": 40, "startGMT": 1720417440000}, - {"value": 40, "startGMT": 1720417560000}, - {"value": 40, "startGMT": 1720417680000}, - {"value": 39, "startGMT": 1720417800000}, - {"value": 39, "startGMT": 1720417920000}, - {"value": 39, "startGMT": 1720418040000}, - {"value": 40, "startGMT": 1720418160000}, - {"value": 39, "startGMT": 1720418280000}, - {"value": 39, "startGMT": 1720418400000}, - {"value": 39, "startGMT": 1720418520000}, - {"value": 39, "startGMT": 1720418640000}, - {"value": 39, "startGMT": 1720418760000}, - {"value": 39, "startGMT": 1720418880000}, - {"value": 40, "startGMT": 1720419000000}, - {"value": 40, "startGMT": 1720419120000}, - {"value": 40, "startGMT": 1720419240000}, - {"value": 40, "startGMT": 1720419360000}, - {"value": 40, "startGMT": 1720419480000}, - {"value": 40, "startGMT": 1720419600000}, - {"value": 41, "startGMT": 1720419720000}, - {"value": 41, "startGMT": 1720419840000}, - {"value": 40, "startGMT": 1720419960000}, - {"value": 39, "startGMT": 1720420080000}, - {"value": 40, "startGMT": 1720420200000}, - {"value": 40, "startGMT": 1720420320000}, - {"value": 40, "startGMT": 1720420440000}, - {"value": 40, "startGMT": 1720420560000}, - {"value": 40, "startGMT": 1720420680000}, - {"value": 51, "startGMT": 1720420800000}, - {"value": 42, "startGMT": 1720420920000}, - {"value": 41, "startGMT": 1720421040000}, - {"value": 40, "startGMT": 1720421160000}, - {"value": 45, "startGMT": 1720421280000}, - {"value": 41, "startGMT": 1720421400000}, - {"value": 38, "startGMT": 1720421520000}, - {"value": 38, "startGMT": 1720421640000}, - {"value": 38, "startGMT": 1720421760000}, - {"value": 40, "startGMT": 1720421880000}, - {"value": 38, "startGMT": 1720422000000}, - {"value": 38, "startGMT": 1720422120000}, - {"value": 38, "startGMT": 1720422240000}, - {"value": 38, "startGMT": 1720422360000}, - {"value": 38, "startGMT": 1720422480000}, - {"value": 38, "startGMT": 1720422600000}, - {"value": 38, "startGMT": 1720422720000}, - {"value": 38, "startGMT": 1720422840000}, - {"value": 38, "startGMT": 1720422960000}, - {"value": 45, "startGMT": 1720423080000}, - {"value": 43, "startGMT": 1720423200000}, - {"value": 41, "startGMT": 1720423320000}, - {"value": 41, "startGMT": 1720423440000}, - {"value": 41, "startGMT": 1720423560000}, - {"value": 40, "startGMT": 1720423680000}, - {"value": 40, "startGMT": 1720423800000}, - {"value": 41, "startGMT": 1720423920000}, - {"value": 45, "startGMT": 1720424040000}, - {"value": 44, "startGMT": 1720424160000}, - {"value": 44, "startGMT": 1720424280000}, - {"value": 40, "startGMT": 1720424400000}, - {"value": 40, "startGMT": 1720424520000}, - {"value": 40, "startGMT": 1720424640000}, - {"value": 41, "startGMT": 1720424760000}, - {"value": 40, "startGMT": 1720424880000}, - {"value": 40, "startGMT": 1720425000000}, - {"value": 41, "startGMT": 1720425120000}, - {"value": 40, "startGMT": 1720425240000}, - {"value": 43, "startGMT": 1720425360000}, - {"value": 43, "startGMT": 1720425480000}, - {"value": 46, "startGMT": 1720425600000}, - {"value": 42, "startGMT": 1720425720000}, - {"value": 40, "startGMT": 1720425840000}, - {"value": 40, "startGMT": 1720425960000}, - {"value": 40, "startGMT": 1720426080000}, - {"value": 39, "startGMT": 1720426200000}, - {"value": 38, "startGMT": 1720426320000}, - {"value": 39, "startGMT": 1720426440000}, - {"value": 38, "startGMT": 1720426560000}, - {"value": 38, "startGMT": 1720426680000}, - {"value": 44, "startGMT": 1720426800000}, - {"value": 38, "startGMT": 1720426920000}, - {"value": 38, "startGMT": 1720427040000}, - {"value": 38, "startGMT": 1720427160000}, - {"value": 38, "startGMT": 1720427280000}, - {"value": 38, "startGMT": 1720427400000}, - {"value": 39, "startGMT": 1720427520000}, - {"value": 39, "startGMT": 1720427640000}, - {"value": 39, "startGMT": 1720427760000}, - {"value": 38, "startGMT": 1720427880000}, - {"value": 38, "startGMT": 1720428000000}, - {"value": 38, "startGMT": 1720428120000}, - {"value": 39, "startGMT": 1720428240000}, - {"value": 38, "startGMT": 1720428360000}, - {"value": 48, "startGMT": 1720428480000}, - {"value": 38, "startGMT": 1720428600000}, - {"value": 39, "startGMT": 1720428720000}, - {"value": 38, "startGMT": 1720428840000}, - {"value": 38, "startGMT": 1720428960000}, - {"value": 38, "startGMT": 1720429080000}, - {"value": 46, "startGMT": 1720429200000}, - {"value": 38, "startGMT": 1720429320000}, - {"value": 38, "startGMT": 1720429440000}, - {"value": 38, "startGMT": 1720429560000}, - {"value": 39, "startGMT": 1720429680000}, - {"value": 38, "startGMT": 1720429800000}, - {"value": 39, "startGMT": 1720429920000}, - {"value": 40, "startGMT": 1720430040000}, - {"value": 40, "startGMT": 1720430160000}, - {"value": 41, "startGMT": 1720430280000}, - {"value": 41, "startGMT": 1720430400000}, - {"value": 40, "startGMT": 1720430520000}, - {"value": 40, "startGMT": 1720430640000}, - {"value": 41, "startGMT": 1720430760000}, - {"value": 41, "startGMT": 1720430880000}, - {"value": 40, "startGMT": 1720431000000}, - {"value": 41, "startGMT": 1720431120000}, - {"value": 41, "startGMT": 1720431240000}, - {"value": 40, "startGMT": 1720431360000}, - {"value": 41, "startGMT": 1720431480000}, - {"value": 42, "startGMT": 1720431600000}, - {"value": 42, "startGMT": 1720431720000}, - {"value": 44, "startGMT": 1720431840000}, - {"value": 45, "startGMT": 1720431960000}, - {"value": 46, "startGMT": 1720432080000}, - {"value": 42, "startGMT": 1720432200000}, - {"value": 40, "startGMT": 1720432320000}, - {"value": 41, "startGMT": 1720432440000}, - {"value": 42, "startGMT": 1720432560000}, - {"value": 42, "startGMT": 1720432680000}, - {"value": 42, "startGMT": 1720432800000}, - {"value": 41, "startGMT": 1720432920000}, - {"value": 42, "startGMT": 1720433040000}, - {"value": 44, "startGMT": 1720433160000}, - {"value": 46, "startGMT": 1720433280000}, - {"value": 42, "startGMT": 1720433400000}, - {"value": 43, "startGMT": 1720433520000}, - {"value": 43, "startGMT": 1720433640000}, - {"value": 42, "startGMT": 1720433760000}, - {"value": 41, "startGMT": 1720433880000}, - {"value": 43, "startGMT": 1720434000000}, - ], - "sleepStress": [ - {"value": 20, "startGMT": 1720403820000}, - {"value": 17, "startGMT": 1720404000000}, - {"value": 19, "startGMT": 1720404180000}, - {"value": 15, "startGMT": 1720404360000}, - {"value": 18, "startGMT": 1720404540000}, - {"value": 19, "startGMT": 1720404720000}, - {"value": 20, "startGMT": 1720404900000}, - {"value": 18, "startGMT": 1720405080000}, - {"value": 18, "startGMT": 1720405260000}, - {"value": 17, "startGMT": 1720405440000}, - {"value": 17, "startGMT": 1720405620000}, - {"value": 16, "startGMT": 1720405800000}, - {"value": 19, "startGMT": 1720405980000}, - {"value": 19, "startGMT": 1720406160000}, - {"value": 20, "startGMT": 1720406340000}, - {"value": 22, "startGMT": 1720406520000}, - {"value": 19, "startGMT": 1720406700000}, - {"value": 19, "startGMT": 1720406880000}, - {"value": 17, "startGMT": 1720407060000}, - {"value": 20, "startGMT": 1720407240000}, - {"value": 20, "startGMT": 1720407420000}, - {"value": 23, "startGMT": 1720407600000}, - {"value": 22, "startGMT": 1720407780000}, - {"value": 20, "startGMT": 1720407960000}, - {"value": 21, "startGMT": 1720408140000}, - {"value": 20, "startGMT": 1720408320000}, - {"value": 19, "startGMT": 1720408500000}, - {"value": 20, "startGMT": 1720408680000}, - {"value": 19, "startGMT": 1720408860000}, - {"value": 21, "startGMT": 1720409040000}, - {"value": 22, "startGMT": 1720409220000}, - {"value": 21, "startGMT": 1720409400000}, - {"value": 20, "startGMT": 1720409580000}, - {"value": 20, "startGMT": 1720409760000}, - {"value": 20, "startGMT": 1720409940000}, - {"value": 17, "startGMT": 1720410120000}, - {"value": 18, "startGMT": 1720410300000}, - {"value": 17, "startGMT": 1720410480000}, - {"value": 17, "startGMT": 1720410660000}, - {"value": 17, "startGMT": 1720410840000}, - {"value": 23, "startGMT": 1720411020000}, - {"value": 23, "startGMT": 1720411200000}, - {"value": 20, "startGMT": 1720411380000}, - {"value": 20, "startGMT": 1720411560000}, - {"value": 12, "startGMT": 1720411740000}, - {"value": 15, "startGMT": 1720411920000}, - {"value": 15, "startGMT": 1720412100000}, - {"value": 13, "startGMT": 1720412280000}, - {"value": 14, "startGMT": 1720412460000}, - {"value": 16, "startGMT": 1720412640000}, - {"value": 16, "startGMT": 1720412820000}, - {"value": 14, "startGMT": 1720413000000}, - {"value": 15, "startGMT": 1720413180000}, - {"value": 16, "startGMT": 1720413360000}, - {"value": 15, "startGMT": 1720413540000}, - {"value": 17, "startGMT": 1720413720000}, - {"value": 15, "startGMT": 1720413900000}, - {"value": 15, "startGMT": 1720414080000}, - {"value": 15, "startGMT": 1720414260000}, - {"value": 13, "startGMT": 1720414440000}, - {"value": 11, "startGMT": 1720414620000}, - {"value": 7, "startGMT": 1720414800000}, - {"value": 15, "startGMT": 1720414980000}, - {"value": 23, "startGMT": 1720415160000}, - {"value": 21, "startGMT": 1720415340000}, - {"value": 17, "startGMT": 1720415520000}, - {"value": 12, "startGMT": 1720415700000}, - {"value": 17, "startGMT": 1720415880000}, - {"value": 18, "startGMT": 1720416060000}, - {"value": 17, "startGMT": 1720416240000}, - {"value": 13, "startGMT": 1720416420000}, - {"value": 12, "startGMT": 1720416600000}, - {"value": 17, "startGMT": 1720416780000}, - {"value": 15, "startGMT": 1720416960000}, - {"value": 14, "startGMT": 1720417140000}, - {"value": 21, "startGMT": 1720417320000}, - {"value": 20, "startGMT": 1720417500000}, - {"value": 23, "startGMT": 1720417680000}, - {"value": 21, "startGMT": 1720417860000}, - {"value": 19, "startGMT": 1720418040000}, - {"value": 11, "startGMT": 1720418220000}, - {"value": 13, "startGMT": 1720418400000}, - {"value": 9, "startGMT": 1720418580000}, - {"value": 9, "startGMT": 1720418760000}, - {"value": 10, "startGMT": 1720418940000}, - {"value": 10, "startGMT": 1720419120000}, - {"value": 9, "startGMT": 1720419300000}, - {"value": 10, "startGMT": 1720419480000}, - {"value": 10, "startGMT": 1720419660000}, - {"value": 9, "startGMT": 1720419840000}, - {"value": 8, "startGMT": 1720420020000}, - {"value": 10, "startGMT": 1720420200000}, - {"value": 10, "startGMT": 1720420380000}, - {"value": 9, "startGMT": 1720420560000}, - {"value": 15, "startGMT": 1720420740000}, - {"value": 6, "startGMT": 1720420920000}, - {"value": 7, "startGMT": 1720421100000}, - {"value": 8, "startGMT": 1720421280000}, - {"value": 12, "startGMT": 1720421460000}, - {"value": 12, "startGMT": 1720421640000}, - {"value": 10, "startGMT": 1720421820000}, - {"value": 16, "startGMT": 1720422000000}, - {"value": 16, "startGMT": 1720422180000}, - {"value": 18, "startGMT": 1720422360000}, - {"value": 20, "startGMT": 1720422540000}, - {"value": 20, "startGMT": 1720422720000}, - {"value": 17, "startGMT": 1720422900000}, - {"value": 11, "startGMT": 1720423080000}, - {"value": 21, "startGMT": 1720423260000}, - {"value": 18, "startGMT": 1720423440000}, - {"value": 8, "startGMT": 1720423620000}, - {"value": 12, "startGMT": 1720423800000}, - {"value": 18, "startGMT": 1720423980000}, - {"value": 10, "startGMT": 1720424160000}, - {"value": 8, "startGMT": 1720424340000}, - {"value": 8, "startGMT": 1720424520000}, - {"value": 9, "startGMT": 1720424700000}, - {"value": 11, "startGMT": 1720424880000}, - {"value": 9, "startGMT": 1720425060000}, - {"value": 15, "startGMT": 1720425240000}, - {"value": 14, "startGMT": 1720425420000}, - {"value": 12, "startGMT": 1720425600000}, - {"value": 10, "startGMT": 1720425780000}, - {"value": 8, "startGMT": 1720425960000}, - {"value": 12, "startGMT": 1720426140000}, - {"value": 16, "startGMT": 1720426320000}, - {"value": 12, "startGMT": 1720426500000}, - {"value": 17, "startGMT": 1720426680000}, - {"value": 16, "startGMT": 1720426860000}, - {"value": 20, "startGMT": 1720427040000}, - {"value": 17, "startGMT": 1720427220000}, - {"value": 20, "startGMT": 1720427400000}, - {"value": 21, "startGMT": 1720427580000}, - {"value": 19, "startGMT": 1720427760000}, - {"value": 15, "startGMT": 1720427940000}, - {"value": 18, "startGMT": 1720428120000}, - {"value": 16, "startGMT": 1720428300000}, - {"value": 11, "startGMT": 1720428480000}, - {"value": 11, "startGMT": 1720428660000}, - {"value": 14, "startGMT": 1720428840000}, - {"value": 12, "startGMT": 1720429020000}, - {"value": 7, "startGMT": 1720429200000}, - {"value": 12, "startGMT": 1720429380000}, - {"value": 15, "startGMT": 1720429560000}, - {"value": 12, "startGMT": 1720429740000}, - {"value": 17, "startGMT": 1720429920000}, - {"value": 18, "startGMT": 1720430100000}, - {"value": 12, "startGMT": 1720430280000}, - {"value": 15, "startGMT": 1720430460000}, - {"value": 16, "startGMT": 1720430640000}, - {"value": 19, "startGMT": 1720430820000}, - {"value": 20, "startGMT": 1720431000000}, - {"value": 17, "startGMT": 1720431180000}, - {"value": 20, "startGMT": 1720431360000}, - {"value": 20, "startGMT": 1720431540000}, - {"value": 22, "startGMT": 1720431720000}, - {"value": 20, "startGMT": 1720431900000}, - {"value": 9, "startGMT": 1720432080000}, - {"value": 16, "startGMT": 1720432260000}, - {"value": 22, "startGMT": 1720432440000}, - {"value": 20, "startGMT": 1720432620000}, - {"value": 17, "startGMT": 1720432800000}, - {"value": 21, "startGMT": 1720432980000}, - {"value": 13, "startGMT": 1720433160000}, - {"value": 15, "startGMT": 1720433340000}, - {"value": 17, "startGMT": 1720433520000}, - {"value": 17, "startGMT": 1720433700000}, - {"value": 17, "startGMT": 1720433880000}, - ], - "sleepBodyBattery": [ - {"value": 29, "startGMT": 1720403820000}, - {"value": 29, "startGMT": 1720404000000}, - {"value": 29, "startGMT": 1720404180000}, - {"value": 29, "startGMT": 1720404360000}, - {"value": 29, "startGMT": 1720404540000}, - {"value": 29, "startGMT": 1720404720000}, - {"value": 29, "startGMT": 1720404900000}, - {"value": 29, "startGMT": 1720405080000}, - {"value": 30, "startGMT": 1720405260000}, - {"value": 31, "startGMT": 1720405440000}, - {"value": 31, "startGMT": 1720405620000}, - {"value": 31, "startGMT": 1720405800000}, - {"value": 32, "startGMT": 1720405980000}, - {"value": 32, "startGMT": 1720406160000}, - {"value": 32, "startGMT": 1720406340000}, - {"value": 32, "startGMT": 1720406520000}, - {"value": 32, "startGMT": 1720406700000}, - {"value": 33, "startGMT": 1720406880000}, - {"value": 34, "startGMT": 1720407060000}, - {"value": 34, "startGMT": 1720407240000}, - {"value": 35, "startGMT": 1720407420000}, - {"value": 35, "startGMT": 1720407600000}, - {"value": 35, "startGMT": 1720407780000}, - {"value": 35, "startGMT": 1720407960000}, - {"value": 35, "startGMT": 1720408140000}, - {"value": 35, "startGMT": 1720408320000}, - {"value": 37, "startGMT": 1720408500000}, - {"value": 37, "startGMT": 1720408680000}, - {"value": 37, "startGMT": 1720408860000}, - {"value": 37, "startGMT": 1720409040000}, - {"value": 37, "startGMT": 1720409220000}, - {"value": 37, "startGMT": 1720409400000}, - {"value": 38, "startGMT": 1720409580000}, - {"value": 38, "startGMT": 1720409760000}, - {"value": 38, "startGMT": 1720409940000}, - {"value": 39, "startGMT": 1720410120000}, - {"value": 40, "startGMT": 1720410300000}, - {"value": 40, "startGMT": 1720410480000}, - {"value": 41, "startGMT": 1720410660000}, - {"value": 42, "startGMT": 1720410840000}, - {"value": 42, "startGMT": 1720411020000}, - {"value": 43, "startGMT": 1720411200000}, - {"value": 44, "startGMT": 1720411380000}, - {"value": 44, "startGMT": 1720411560000}, - {"value": 45, "startGMT": 1720411740000}, - {"value": 45, "startGMT": 1720411920000}, - {"value": 45, "startGMT": 1720412100000}, - {"value": 46, "startGMT": 1720412280000}, - {"value": 47, "startGMT": 1720412460000}, - {"value": 47, "startGMT": 1720412640000}, - {"value": 48, "startGMT": 1720412820000}, - {"value": 49, "startGMT": 1720413000000}, - {"value": 50, "startGMT": 1720413180000}, - {"value": 51, "startGMT": 1720413360000}, - {"value": 51, "startGMT": 1720413540000}, - {"value": 52, "startGMT": 1720413720000}, - {"value": 52, "startGMT": 1720413900000}, - {"value": 53, "startGMT": 1720414080000}, - {"value": 54, "startGMT": 1720414260000}, - {"value": 55, "startGMT": 1720414440000}, - {"value": 55, "startGMT": 1720414620000}, - {"value": 56, "startGMT": 1720414800000}, - {"value": 56, "startGMT": 1720414980000}, - {"value": 57, "startGMT": 1720415160000}, - {"value": 57, "startGMT": 1720415340000}, - {"value": 57, "startGMT": 1720415520000}, - {"value": 58, "startGMT": 1720415700000}, - {"value": 59, "startGMT": 1720415880000}, - {"value": 59, "startGMT": 1720416060000}, - {"value": 59, "startGMT": 1720416240000}, - {"value": 60, "startGMT": 1720416420000}, - {"value": 60, "startGMT": 1720416600000}, - {"value": 60, "startGMT": 1720416780000}, - {"value": 61, "startGMT": 1720416960000}, - {"value": 62, "startGMT": 1720417140000}, - {"value": 62, "startGMT": 1720417320000}, - {"value": 62, "startGMT": 1720417500000}, - {"value": 62, "startGMT": 1720417680000}, - {"value": 62, "startGMT": 1720417860000}, - {"value": 62, "startGMT": 1720418040000}, - {"value": 63, "startGMT": 1720418220000}, - {"value": 64, "startGMT": 1720418400000}, - {"value": 65, "startGMT": 1720418580000}, - {"value": 65, "startGMT": 1720418760000}, - {"value": 66, "startGMT": 1720418940000}, - {"value": 66, "startGMT": 1720419120000}, - {"value": 67, "startGMT": 1720419300000}, - {"value": 67, "startGMT": 1720419480000}, - {"value": 68, "startGMT": 1720419660000}, - {"value": 68, "startGMT": 1720419840000}, - {"value": 68, "startGMT": 1720420020000}, - {"value": 69, "startGMT": 1720420200000}, - {"value": 69, "startGMT": 1720420380000}, - {"value": 71, "startGMT": 1720420560000}, - {"value": 71, "startGMT": 1720420740000}, - {"value": 72, "startGMT": 1720420920000}, - {"value": 72, "startGMT": 1720421100000}, - {"value": 73, "startGMT": 1720421280000}, - {"value": 73, "startGMT": 1720421460000}, - {"value": 73, "startGMT": 1720421640000}, - {"value": 73, "startGMT": 1720421820000}, - {"value": 74, "startGMT": 1720422000000}, - {"value": 74, "startGMT": 1720422180000}, - {"value": 75, "startGMT": 1720422360000}, - {"value": 75, "startGMT": 1720422540000}, - {"value": 75, "startGMT": 1720422720000}, - {"value": 76, "startGMT": 1720422900000}, - {"value": 76, "startGMT": 1720423080000}, - {"value": 77, "startGMT": 1720423260000}, - {"value": 77, "startGMT": 1720423440000}, - {"value": 77, "startGMT": 1720423620000}, - {"value": 77, "startGMT": 1720423800000}, - {"value": 78, "startGMT": 1720423980000}, - {"value": 78, "startGMT": 1720424160000}, - {"value": 78, "startGMT": 1720424340000}, - {"value": 79, "startGMT": 1720424520000}, - {"value": 80, "startGMT": 1720424700000}, - {"value": 80, "startGMT": 1720424880000}, - {"value": 80, "startGMT": 1720425060000}, - {"value": 81, "startGMT": 1720425240000}, - {"value": 81, "startGMT": 1720425420000}, - {"value": 82, "startGMT": 1720425600000}, - {"value": 82, "startGMT": 1720425780000}, - {"value": 82, "startGMT": 1720425960000}, - {"value": 83, "startGMT": 1720426140000}, - {"value": 83, "startGMT": 1720426320000}, - {"value": 83, "startGMT": 1720426500000}, - {"value": 83, "startGMT": 1720426680000}, - {"value": 84, "startGMT": 1720426860000}, - {"value": 84, "startGMT": 1720427040000}, - {"value": 84, "startGMT": 1720427220000}, - {"value": 85, "startGMT": 1720427400000}, - {"value": 85, "startGMT": 1720427580000}, - {"value": 85, "startGMT": 1720427760000}, - {"value": 85, "startGMT": 1720427940000}, - {"value": 85, "startGMT": 1720428120000}, - {"value": 85, "startGMT": 1720428300000}, - {"value": 86, "startGMT": 1720428480000}, - {"value": 86, "startGMT": 1720428660000}, - {"value": 87, "startGMT": 1720428840000}, - {"value": 87, "startGMT": 1720429020000}, - {"value": 87, "startGMT": 1720429200000}, - {"value": 87, "startGMT": 1720429380000}, - {"value": 88, "startGMT": 1720429560000}, - {"value": 88, "startGMT": 1720429740000}, - {"value": 88, "startGMT": 1720429920000}, - {"value": 88, "startGMT": 1720430100000}, - {"value": 88, "startGMT": 1720430280000}, - {"value": 88, "startGMT": 1720430460000}, - {"value": 89, "startGMT": 1720430640000}, - {"value": 89, "startGMT": 1720430820000}, - {"value": 90, "startGMT": 1720431000000}, - {"value": 90, "startGMT": 1720431180000}, - {"value": 90, "startGMT": 1720431360000}, - {"value": 90, "startGMT": 1720431540000}, - {"value": 90, "startGMT": 1720431720000}, - {"value": 90, "startGMT": 1720431900000}, - {"value": 90, "startGMT": 1720432080000}, - {"value": 90, "startGMT": 1720432260000}, - {"value": 90, "startGMT": 1720432440000}, - {"value": 90, "startGMT": 1720432620000}, - {"value": 91, "startGMT": 1720432800000}, - {"value": 91, "startGMT": 1720432980000}, - {"value": 92, "startGMT": 1720433160000}, - {"value": 92, "startGMT": 1720433340000}, - {"value": 92, "startGMT": 1720433520000}, - {"value": 92, "startGMT": 1720433700000}, - {"value": 92, "startGMT": 1720433880000}, - ], - "skinTempDataExists": false, - "hrvData": [ - {"value": 54.0, "startGMT": 1720404080000}, - {"value": 54.0, "startGMT": 1720404380000}, - {"value": 74.0, "startGMT": 1720404680000}, - {"value": 54.0, "startGMT": 1720404980000}, - {"value": 59.0, "startGMT": 1720405280000}, - {"value": 65.0, "startGMT": 1720405580000}, - {"value": 60.0, "startGMT": 1720405880000}, - {"value": 62.0, "startGMT": 1720406180000}, - {"value": 52.0, "startGMT": 1720406480000}, - {"value": 62.0, "startGMT": 1720406780000}, - {"value": 62.0, "startGMT": 1720407080000}, - {"value": 48.0, "startGMT": 1720407380000}, - {"value": 46.0, "startGMT": 1720407680000}, - {"value": 45.0, "startGMT": 1720407980000}, - {"value": 43.0, "startGMT": 1720408280000}, - {"value": 53.0, "startGMT": 1720408580000}, - {"value": 47.0, "startGMT": 1720408880000}, - {"value": 43.0, "startGMT": 1720409180000}, - {"value": 37.0, "startGMT": 1720409480000}, - {"value": 40.0, "startGMT": 1720409780000}, - {"value": 39.0, "startGMT": 1720410080000}, - {"value": 51.0, "startGMT": 1720410380000}, - {"value": 46.0, "startGMT": 1720410680000}, - {"value": 54.0, "startGMT": 1720410980000}, - {"value": 30.0, "startGMT": 1720411280000}, - {"value": 47.0, "startGMT": 1720411580000}, - {"value": 61.0, "startGMT": 1720411880000}, - {"value": 56.0, "startGMT": 1720412180000}, - {"value": 59.0, "startGMT": 1720412480000}, - {"value": 49.0, "startGMT": 1720412780000}, - {"value": 58.0, "startGMT": 1720413077000}, - {"value": 45.0, "startGMT": 1720413377000}, - {"value": 45.0, "startGMT": 1720413677000}, - {"value": 41.0, "startGMT": 1720413977000}, - {"value": 45.0, "startGMT": 1720414277000}, - {"value": 55.0, "startGMT": 1720414577000}, - {"value": 58.0, "startGMT": 1720414877000}, - {"value": 49.0, "startGMT": 1720415177000}, - {"value": 28.0, "startGMT": 1720415477000}, - {"value": 62.0, "startGMT": 1720415777000}, - {"value": 49.0, "startGMT": 1720416077000}, - {"value": 49.0, "startGMT": 1720416377000}, - {"value": 67.0, "startGMT": 1720416677000}, - {"value": 51.0, "startGMT": 1720416977000}, - {"value": 69.0, "startGMT": 1720417277000}, - {"value": 34.0, "startGMT": 1720417577000}, - {"value": 29.0, "startGMT": 1720417877000}, - {"value": 35.0, "startGMT": 1720418177000}, - {"value": 52.0, "startGMT": 1720418477000}, - {"value": 71.0, "startGMT": 1720418777000}, - {"value": 61.0, "startGMT": 1720419077000}, - {"value": 61.0, "startGMT": 1720419377000}, - {"value": 62.0, "startGMT": 1720419677000}, - {"value": 64.0, "startGMT": 1720419977000}, - {"value": 67.0, "startGMT": 1720420277000}, - {"value": 57.0, "startGMT": 1720420577000}, - {"value": 60.0, "startGMT": 1720420877000}, - {"value": 70.0, "startGMT": 1720421177000}, - {"value": 105.0, "startGMT": 1720421477000}, - {"value": 52.0, "startGMT": 1720421777000}, - {"value": 36.0, "startGMT": 1720422077000}, - {"value": 42.0, "startGMT": 1720422377000}, - {"value": 32.0, "startGMT": 1720422674000}, - {"value": 32.0, "startGMT": 1720422974000}, - {"value": 58.0, "startGMT": 1720423274000}, - {"value": 32.0, "startGMT": 1720423574000}, - {"value": 64.0, "startGMT": 1720423874000}, - {"value": 50.0, "startGMT": 1720424174000}, - {"value": 66.0, "startGMT": 1720424474000}, - {"value": 77.0, "startGMT": 1720424774000}, - {"value": 57.0, "startGMT": 1720425074000}, - {"value": 57.0, "startGMT": 1720425374000}, - {"value": 58.0, "startGMT": 1720425674000}, - {"value": 71.0, "startGMT": 1720425974000}, - {"value": 59.0, "startGMT": 1720426274000}, - {"value": 42.0, "startGMT": 1720426574000}, - {"value": 43.0, "startGMT": 1720426874000}, - {"value": 35.0, "startGMT": 1720427174000}, - {"value": 32.0, "startGMT": 1720427474000}, - {"value": 29.0, "startGMT": 1720427774000}, - {"value": 42.0, "startGMT": 1720428074000}, - {"value": 36.0, "startGMT": 1720428374000}, - {"value": 41.0, "startGMT": 1720428674000}, - {"value": 45.0, "startGMT": 1720428974000}, - {"value": 60.0, "startGMT": 1720429274000}, - {"value": 55.0, "startGMT": 1720429574000}, - {"value": 45.0, "startGMT": 1720429874000}, - {"value": 48.0, "startGMT": 1720430174000}, - {"value": 50.0, "startGMT": 1720430471000}, - {"value": 49.0, "startGMT": 1720430771000}, - {"value": 48.0, "startGMT": 1720431071000}, - {"value": 39.0, "startGMT": 1720431371000}, - {"value": 32.0, "startGMT": 1720431671000}, - {"value": 39.0, "startGMT": 1720431971000}, - {"value": 71.0, "startGMT": 1720432271000}, - {"value": 33.0, "startGMT": 1720432571000}, - {"value": 50.0, "startGMT": 1720432871000}, - {"value": 32.0, "startGMT": 1720433171000}, - {"value": 52.0, "startGMT": 1720433471000}, - {"value": 49.0, "startGMT": 1720433771000}, - {"value": 52.0, "startGMT": 1720434071000}, - ], - "avgOvernightHrv": 53.0, - "hrvStatus": "BALANCED", - "bodyBatteryChange": 63, - "restingHeartRate": 38, - } - } - }, - }, - { - "query": {"query": 'query{jetLagScalar(date:"2024-07-08")}'}, - "response": {"data": {"jetLagScalar": null}}, - }, - { - "query": { - "query": 'query{myDayCardEventsScalar(timeZone:"GMT", date:"2024-07-08")}' - }, - "response": { - "data": { - "myDayCardEventsScalar": { - "eventMyDay": [ - { - "id": 15567882, - "eventName": "Harvard Pilgrim Seafood Fest 5k (5K)", - "date": "2024-09-08", - "completionTarget": { - "value": 5000.0, - "unit": "meter", - "unitType": "distance", - }, - "eventTimeLocal": null, - "eventImageUUID": null, - "locationStartPoint": { - "lat": 42.937593, - "lon": -70.838922, - }, - "eventType": "running", - "shareableEventUuid": "37f8f1e9-8ec1-4c09-ae68-41a8bf62a900", - "eventCustomization": null, - "eventOrganizer": false, - }, - { - "id": 14784831, - "eventName": "Bank of America Chicago Marathon", - "date": "2024-10-13", - "completionTarget": { - "value": 42195.0, - "unit": "meter", - "unitType": "distance", - }, - "eventTimeLocal": { - "startTimeHhMm": "07:30", - "timeZoneId": "America/Chicago", - }, - "eventImageUUID": null, - "locationStartPoint": { - "lat": 41.8756, - "lon": -87.6276, - }, - "eventType": "running", - "shareableEventUuid": "4c1dba6c-9150-4980-b206-49efa5405ac9", - "eventCustomization": { - "customGoal": { - "value": 10080.0, - "unit": "second", - "unitType": "time", - }, - "isPrimaryEvent": true, - "associatedWithActivityId": null, - "isTrainingEvent": true, - "isGoalMet": false, - "trainingPlanId": null, - "trainingPlanType": null, - }, - "eventOrganizer": false, - }, - { - "id": 15480554, - "eventName": "Xfinity Newburyport Half Marathon", - "date": "2024-10-27", - "completionTarget": { - "value": 21097.0, - "unit": "meter", - "unitType": "distance", - }, - "eventTimeLocal": null, - "eventImageUUID": null, - "locationStartPoint": { - "lat": 42.812591, - "lon": -70.877275, - }, - "eventType": "running", - "shareableEventUuid": "42ea57d1-495a-4d36-8ad2-cf1af1a2fb9b", - "eventCustomization": { - "customGoal": { - "value": 4680.0, - "unit": "second", - "unitType": "time", - }, - "isPrimaryEvent": false, - "associatedWithActivityId": null, - "isTrainingEvent": true, - "isGoalMet": false, - "trainingPlanId": null, - "trainingPlanType": null, - }, - "eventOrganizer": false, - }, - ], - "hasMoreTrainingEvents": true, - } - } - }, - }, - { - "query": { - "query": "\n query {\n adhocChallengesScalar\n }\n " - }, - "response": {"data": {"adhocChallengesScalar": []}}, - }, - { - "query": { - "query": "\n query {\n adhocChallengePendingInviteScalar\n }\n " - }, - "response": {"data": {"adhocChallengePendingInviteScalar": []}}, - }, - { - "query": { - "query": "\n query {\n badgeChallengesScalar\n }\n " - }, - "response": { - "data": { - "badgeChallengesScalar": [ - { - "uuid": "0B5DC7B9881649988ADF51A93481BAC9", - "badgeChallengeName": "July Weekend 10K", - "startDate": "2024-07-12T00:00:00.0", - "endDate": "2024-07-14T23:59:59.0", - "progressValue": 0.0, - "targetValue": 0.0, - "unitId": 0, - "badgeKey": "challenge_run_10k_2024_07", - "challengeCategoryId": 1, - }, - { - "uuid": "64978DFD369B402C9DF627DF4072892F", - "badgeChallengeName": "Active July", - "startDate": "2024-07-01T00:00:00.0", - "endDate": "2024-07-31T23:59:59.0", - "progressValue": 9.0, - "targetValue": 20.0, - "unitId": 3, - "badgeKey": "challenge_total_activity_20_2024_07", - "challengeCategoryId": 9, - }, - { - "uuid": "9ABEF1B3C2EE412E8129AD5448A07D6B", - "badgeChallengeName": "July Step Month", - "startDate": "2024-07-01T00:00:00.0", - "endDate": "2024-07-31T23:59:59.0", - "progressValue": 134337.0, - "targetValue": 300000.0, - "unitId": 5, - "badgeKey": "challenge_total_step_300k_2024_07", - "challengeCategoryId": 4, - }, - ] - } - }, - }, - { - "query": { - "query": "\n query {\n expeditionsChallengesScalar\n }\n " - }, - "response": { - "data": { - "expeditionsChallengesScalar": [ - { - "uuid": "82E978F2D19542EFBC6A51EB7207792A", - "badgeChallengeName": "Aconcagua", - "startDate": null, - "endDate": null, - "progressValue": 1595.996, - "targetValue": 6961.0, - "unitId": 2, - "badgeKey": "virtual_climb_aconcagua", - "challengeCategoryId": 13, - }, - { - "uuid": "52F145179EC040AA9120A69E7265CDE1", - "badgeChallengeName": "Appalachian Trail", - "startDate": null, - "endDate": null, - "progressValue": 594771.0, - "targetValue": 3500000.0, - "unitId": 1, - "badgeKey": "virtual_hike_appalachian_trail", - "challengeCategoryId": 12, - }, - ] - } - }, - }, - { - "query": { - "query": 'query{trainingReadinessRangeScalar(startDate:"2024-06-11", endDate:"2024-07-08")}' - }, - "response": { - "data": { - "trainingReadinessRangeScalar": [ - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-08", - "timestamp": "2024-07-08T10:25:38.0", - "timestampLocal": "2024-07-08T06:25:38.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_HIGHEST_SS_AVAILABLE", - "feedbackShort": "WELL_RECOVERED", - "score": 83, - "sleepScore": 89, - "sleepScoreFactorPercent": 88, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 242, - "recoveryTimeFactorPercent": 93, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 96, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 886, - "stressHistoryFactorPercent": 83, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 88, - "hrvFactorFeedback": "GOOD", - "hrvWeeklyAverage": 68, - "sleepHistoryFactorPercent": 76, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-07", - "timestamp": "2024-07-07T10:45:39.0", - "timestampLocal": "2024-07-07T06:45:39.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_HIGHEST_SS_AVAILABLE", - "feedbackShort": "WELL_RECOVERED", - "score": 78, - "sleepScore": 83, - "sleepScoreFactorPercent": 76, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 169, - "recoveryTimeFactorPercent": 95, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 95, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 913, - "stressHistoryFactorPercent": 85, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 81, - "hrvFactorFeedback": "GOOD", - "hrvWeeklyAverage": 70, - "sleepHistoryFactorPercent": 80, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-06", - "timestamp": "2024-07-06T11:30:59.0", - "timestampLocal": "2024-07-06T07:30:59.0", - "deviceId": 3472661486, - "level": "MODERATE", - "feedbackLong": "MOD_RT_MOD_SS_GOOD", - "feedbackShort": "BOOSTED_BY_GOOD_SLEEP", - "score": 69, - "sleepScore": 83, - "sleepScoreFactorPercent": 76, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 1412, - "recoveryTimeFactorPercent": 62, - "recoveryTimeFactorFeedback": "MODERATE", - "acwrFactorPercent": 91, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 998, - "stressHistoryFactorPercent": 87, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 88, - "hrvFactorFeedback": "GOOD", - "hrvWeeklyAverage": 68, - "sleepHistoryFactorPercent": 88, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-05", - "timestamp": "2024-07-05T11:49:07.0", - "timestampLocal": "2024-07-05T07:49:07.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_HIGHEST_SS_AVAILABLE", - "feedbackShort": "WELL_RECOVERED", - "score": 88, - "sleepScore": 89, - "sleepScoreFactorPercent": 88, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 1, - "recoveryTimeFactorPercent": 99, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 93, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 912, - "stressHistoryFactorPercent": 92, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 91, - "hrvFactorFeedback": "GOOD", - "hrvWeeklyAverage": 66, - "sleepHistoryFactorPercent": 84, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-04", - "timestamp": "2024-07-04T11:32:14.0", - "timestampLocal": "2024-07-04T07:32:14.0", - "deviceId": 3472661486, - "level": "MODERATE", - "feedbackLong": "MOD_RT_MOD_SS_GOOD", - "feedbackShort": "BOOSTED_BY_GOOD_SLEEP", - "score": 72, - "sleepScore": 89, - "sleepScoreFactorPercent": 88, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 1190, - "recoveryTimeFactorPercent": 68, - "recoveryTimeFactorFeedback": "MODERATE", - "acwrFactorPercent": 89, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 1007, - "stressHistoryFactorPercent": 100, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 90, - "hrvFactorFeedback": "GOOD", - "hrvWeeklyAverage": 66, - "sleepHistoryFactorPercent": 85, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-03", - "timestamp": "2024-07-03T11:16:48.0", - "timestampLocal": "2024-07-03T07:16:48.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_HIGHEST_SS_AVAILABLE_SLEEP_HISTORY_POS", - "feedbackShort": "WELL_RESTED_AND_RECOVERED", - "score": 86, - "sleepScore": 83, - "sleepScoreFactorPercent": 76, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 425, - "recoveryTimeFactorPercent": 88, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 92, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 938, - "stressHistoryFactorPercent": 100, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 92, - "hrvFactorFeedback": "GOOD", - "hrvWeeklyAverage": 65, - "sleepHistoryFactorPercent": 94, - "sleepHistoryFactorFeedback": "VERY_GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-02", - "timestamp": "2024-07-02T09:55:58.0", - "timestampLocal": "2024-07-02T05:55:58.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_AVAILABLE_SS_HIGHEST", - "feedbackShort": "RESTED_AND_READY", - "score": 93, - "sleepScore": 97, - "sleepScoreFactorPercent": 97, - "sleepScoreFactorFeedback": "VERY_GOOD", - "recoveryTime": 0, - "recoveryTimeFactorPercent": 100, - "recoveryTimeFactorFeedback": "VERY_GOOD", - "acwrFactorPercent": 92, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 928, - "stressHistoryFactorPercent": 100, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 88, - "hrvFactorFeedback": "GOOD", - "hrvWeeklyAverage": 66, - "sleepHistoryFactorPercent": 81, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "REACHED_ZERO", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-07-01", - "timestamp": "2024-07-01T09:56:56.0", - "timestampLocal": "2024-07-01T05:56:56.0", - "deviceId": 3472661486, - "level": "MODERATE", - "feedbackLong": "MOD_RT_MOD_SS_GOOD", - "feedbackShort": "BOOSTED_BY_GOOD_SLEEP", - "score": 69, - "sleepScore": 89, - "sleepScoreFactorPercent": 88, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 1473, - "recoveryTimeFactorPercent": 60, - "recoveryTimeFactorFeedback": "MODERATE", - "acwrFactorPercent": 88, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 1013, - "stressHistoryFactorPercent": 98, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 92, - "hrvFactorFeedback": "GOOD", - "hrvWeeklyAverage": 65, - "sleepHistoryFactorPercent": 76, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-30", - "timestamp": "2024-06-30T10:46:24.0", - "timestampLocal": "2024-06-30T06:46:24.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_HIGHEST_SS_AVAILABLE_SLEEP_HISTORY_POS", - "feedbackShort": "WELL_RESTED_AND_RECOVERED", - "score": 84, - "sleepScore": 79, - "sleepScoreFactorPercent": 68, - "sleepScoreFactorFeedback": "MODERATE", - "recoveryTime": 323, - "recoveryTimeFactorPercent": 91, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 91, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 928, - "stressHistoryFactorPercent": 94, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 92, - "hrvFactorFeedback": "GOOD", - "hrvWeeklyAverage": 65, - "sleepHistoryFactorPercent": 90, - "sleepHistoryFactorFeedback": "VERY_GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-29", - "timestamp": "2024-06-29T10:23:11.0", - "timestampLocal": "2024-06-29T06:23:11.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_EVENT_DATE", - "feedbackShort": "GO_GET_IT", - "score": 83, - "sleepScore": 92, - "sleepScoreFactorPercent": 92, - "sleepScoreFactorFeedback": "VERY_GOOD", - "recoveryTime": 644, - "recoveryTimeFactorPercent": 83, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 94, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 827, - "stressHistoryFactorPercent": 95, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 87, - "hrvFactorFeedback": "GOOD", - "hrvWeeklyAverage": 67, - "sleepHistoryFactorPercent": 85, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "GOOD_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-28", - "timestamp": "2024-06-28T10:21:35.0", - "timestampLocal": "2024-06-28T06:21:35.0", - "deviceId": 3472661486, - "level": "MODERATE", - "feedbackLong": "MOD_RT_MOD_SS_GOOD", - "feedbackShort": "BOOSTED_BY_GOOD_SLEEP", - "score": 74, - "sleepScore": 87, - "sleepScoreFactorPercent": 84, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 1312, - "recoveryTimeFactorPercent": 65, - "recoveryTimeFactorFeedback": "MODERATE", - "acwrFactorPercent": 93, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 841, - "stressHistoryFactorPercent": 91, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 91, - "hrvFactorFeedback": "GOOD", - "hrvWeeklyAverage": 65, - "sleepHistoryFactorPercent": 87, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-27", - "timestamp": "2024-06-27T10:55:40.0", - "timestampLocal": "2024-06-27T06:55:40.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_HIGHEST_SS_AVAILABLE", - "feedbackShort": "WELL_RECOVERED", - "score": 87, - "sleepScore": 89, - "sleepScoreFactorPercent": 88, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 187, - "recoveryTimeFactorPercent": 95, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 95, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 792, - "stressHistoryFactorPercent": 93, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 94, - "hrvFactorFeedback": "GOOD", - "hrvWeeklyAverage": 64, - "sleepHistoryFactorPercent": 81, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-26", - "timestamp": "2024-06-26T10:25:48.0", - "timestampLocal": "2024-06-26T06:25:48.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_AVAILABLE_SS_HIGHEST", - "feedbackShort": "RESTED_AND_READY", - "score": 77, - "sleepScore": 88, - "sleepScoreFactorPercent": 86, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 1059, - "recoveryTimeFactorPercent": 72, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 92, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 855, - "stressHistoryFactorPercent": 89, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 100, - "hrvFactorFeedback": "VERY_GOOD", - "hrvWeeklyAverage": 61, - "sleepHistoryFactorPercent": 82, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-25", - "timestamp": "2024-06-25T10:59:43.0", - "timestampLocal": "2024-06-25T06:59:43.0", - "deviceId": 3472661486, - "level": "MODERATE", - "feedbackLong": "MOD_RT_MOD_SS_GOOD", - "feedbackShort": "BOOSTED_BY_GOOD_SLEEP", - "score": 74, - "sleepScore": 81, - "sleepScoreFactorPercent": 72, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 1174, - "recoveryTimeFactorPercent": 69, - "recoveryTimeFactorFeedback": "MODERATE", - "acwrFactorPercent": 96, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 761, - "stressHistoryFactorPercent": 87, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 100, - "hrvFactorFeedback": "VERY_GOOD", - "hrvWeeklyAverage": 60, - "sleepHistoryFactorPercent": 88, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-24", - "timestamp": "2024-06-24T11:25:43.0", - "timestampLocal": "2024-06-24T07:25:43.0", - "deviceId": 3472661486, - "level": "MODERATE", - "feedbackLong": "MOD_RT_HIGH_SS_GOOD", - "feedbackShort": "BOOSTED_BY_GOOD_SLEEP", - "score": 52, - "sleepScore": 96, - "sleepScoreFactorPercent": 96, - "sleepScoreFactorFeedback": "VERY_GOOD", - "recoveryTime": 2607, - "recoveryTimeFactorPercent": 34, - "recoveryTimeFactorFeedback": "POOR", - "acwrFactorPercent": 89, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 920, - "stressHistoryFactorPercent": 80, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 100, - "hrvFactorFeedback": "VERY_GOOD", - "hrvWeeklyAverage": 61, - "sleepHistoryFactorPercent": 70, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "EXCELLENT_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-23", - "timestamp": "2024-06-23T11:57:03.0", - "timestampLocal": "2024-06-23T07:57:03.0", - "deviceId": 3472661486, - "level": "LOW", - "feedbackLong": "LOW_RT_HIGH_SS_GOOD_OR_MOD", - "feedbackShort": "HIGH_RECOVERY_NEEDS", - "score": 38, - "sleepScore": 76, - "sleepScoreFactorPercent": 64, - "sleepScoreFactorFeedback": "MODERATE", - "recoveryTime": 2684, - "recoveryTimeFactorPercent": 33, - "recoveryTimeFactorFeedback": "POOR", - "acwrFactorPercent": 91, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 878, - "stressHistoryFactorPercent": 86, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 95, - "hrvFactorFeedback": "GOOD", - "hrvWeeklyAverage": 62, - "sleepHistoryFactorPercent": 82, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-22", - "timestamp": "2024-06-22T11:05:15.0", - "timestampLocal": "2024-06-22T07:05:15.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_HIGHEST_SS_AVAILABLE", - "feedbackShort": "WELL_RECOVERED", - "score": 90, - "sleepScore": 88, - "sleepScoreFactorPercent": 86, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 1, - "recoveryTimeFactorPercent": 99, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 99, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 710, - "stressHistoryFactorPercent": 88, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 97, - "hrvFactorFeedback": "GOOD", - "hrvWeeklyAverage": 62, - "sleepHistoryFactorPercent": 73, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-21", - "timestamp": "2024-06-21T10:05:47.0", - "timestampLocal": "2024-06-21T06:05:47.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_HIGHEST_SS_AVAILABLE", - "feedbackShort": "WELL_RECOVERED", - "score": 76, - "sleepScore": 82, - "sleepScoreFactorPercent": 74, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 633, - "recoveryTimeFactorPercent": 83, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 98, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 738, - "stressHistoryFactorPercent": 81, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 100, - "hrvFactorFeedback": "VERY_GOOD", - "hrvWeeklyAverage": 60, - "sleepHistoryFactorPercent": 66, - "sleepHistoryFactorFeedback": "MODERATE", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-20", - "timestamp": "2024-06-20T10:17:04.0", - "timestampLocal": "2024-06-20T06:17:04.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_HIGHEST_SS_AVAILABLE", - "feedbackShort": "WELL_RECOVERED", - "score": 79, - "sleepScore": 81, - "sleepScoreFactorPercent": 72, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 61, - "recoveryTimeFactorPercent": 98, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 100, - "acwrFactorFeedback": "VERY_GOOD", - "acuteLoad": 569, - "stressHistoryFactorPercent": 77, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 100, - "hrvFactorFeedback": "VERY_GOOD", - "hrvWeeklyAverage": 58, - "sleepHistoryFactorPercent": 61, - "sleepHistoryFactorFeedback": "MODERATE", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-19", - "timestamp": "2024-06-19T10:46:11.0", - "timestampLocal": "2024-06-19T06:46:11.0", - "deviceId": 3472661486, - "level": "MODERATE", - "feedbackLong": "MOD_RT_LOW_SS_MOD", - "feedbackShort": "GOOD_SLEEP_HISTORY", - "score": 72, - "sleepScore": 70, - "sleepScoreFactorPercent": 55, - "sleepScoreFactorFeedback": "MODERATE", - "recoveryTime": 410, - "recoveryTimeFactorPercent": 89, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 100, - "acwrFactorFeedback": "VERY_GOOD", - "acuteLoad": 562, - "stressHistoryFactorPercent": 94, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 100, - "hrvFactorFeedback": "VERY_GOOD", - "hrvWeeklyAverage": 60, - "sleepHistoryFactorPercent": 80, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-18", - "timestamp": "2024-06-18T11:08:29.0", - "timestampLocal": "2024-06-18T07:08:29.0", - "deviceId": 3472661486, - "level": "PRIME", - "feedbackLong": "PRIME_RT_HIGHEST_SS_AVAILABLE_SLEEP_HISTORY_POS", - "feedbackShort": "READY_TO_GO", - "score": 95, - "sleepScore": 82, - "sleepScoreFactorPercent": 74, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 1, - "recoveryTimeFactorPercent": 99, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 100, - "acwrFactorFeedback": "VERY_GOOD", - "acuteLoad": 495, - "stressHistoryFactorPercent": 100, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 100, - "hrvFactorFeedback": "VERY_GOOD", - "hrvWeeklyAverage": 59, - "sleepHistoryFactorPercent": 90, - "sleepHistoryFactorFeedback": "VERY_GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-17", - "timestamp": "2024-06-17T11:20:34.0", - "timestampLocal": "2024-06-17T07:20:34.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_HIGHEST_SS_AVAILABLE", - "feedbackShort": "WELL_RECOVERED", - "score": 92, - "sleepScore": 91, - "sleepScoreFactorPercent": 91, - "sleepScoreFactorFeedback": "VERY_GOOD", - "recoveryTime": 0, - "recoveryTimeFactorPercent": 100, - "recoveryTimeFactorFeedback": "VERY_GOOD", - "acwrFactorPercent": 100, - "acwrFactorFeedback": "VERY_GOOD", - "acuteLoad": 643, - "stressHistoryFactorPercent": 100, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 100, - "hrvFactorFeedback": "VERY_GOOD", - "hrvWeeklyAverage": 59, - "sleepHistoryFactorPercent": 86, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "REACHED_ZERO", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-16", - "timestamp": "2024-06-16T10:30:48.0", - "timestampLocal": "2024-06-16T06:30:48.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_HIGHEST_SS_AVAILABLE", - "feedbackShort": "WELL_RECOVERED", - "score": 89, - "sleepScore": 89, - "sleepScoreFactorPercent": 88, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 1, - "recoveryTimeFactorPercent": 99, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 100, - "acwrFactorFeedback": "VERY_GOOD", - "acuteLoad": 680, - "stressHistoryFactorPercent": 94, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 100, - "hrvFactorFeedback": "VERY_GOOD", - "hrvWeeklyAverage": 58, - "sleepHistoryFactorPercent": 78, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-15", - "timestamp": "2024-06-15T10:41:26.0", - "timestampLocal": "2024-06-15T06:41:26.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_HIGHEST_SS_AVAILABLE", - "feedbackShort": "WELL_RECOVERED", - "score": 85, - "sleepScore": 86, - "sleepScoreFactorPercent": 82, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 1, - "recoveryTimeFactorPercent": 99, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 100, - "acwrFactorFeedback": "VERY_GOOD", - "acuteLoad": 724, - "stressHistoryFactorPercent": 86, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 100, - "hrvFactorFeedback": "VERY_GOOD", - "hrvWeeklyAverage": 57, - "sleepHistoryFactorPercent": 72, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-14", - "timestamp": "2024-06-14T10:30:42.0", - "timestampLocal": "2024-06-14T06:30:42.0", - "deviceId": 3472661486, - "level": "MODERATE", - "feedbackLong": "MOD_RT_LOW_SS_GOOD", - "feedbackShort": "RECOVERED_AND_READY", - "score": 71, - "sleepScore": 81, - "sleepScoreFactorPercent": 72, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 1041, - "recoveryTimeFactorPercent": 72, - "recoveryTimeFactorFeedback": "GOOD", - "acwrFactorPercent": 94, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 884, - "stressHistoryFactorPercent": 86, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 100, - "hrvFactorFeedback": "VERY_GOOD", - "hrvWeeklyAverage": 59, - "sleepHistoryFactorPercent": 78, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-13", - "timestamp": "2024-06-13T10:24:07.0", - "timestampLocal": "2024-06-13T06:24:07.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_AVAILABLE_SS_HIGHEST_SLEEP_HISTORY_POS", - "feedbackShort": "ENERGIZED_BY_GOOD_SLEEP", - "score": 75, - "sleepScore": 82, - "sleepScoreFactorPercent": 74, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 1602, - "recoveryTimeFactorPercent": 57, - "recoveryTimeFactorFeedback": "MODERATE", - "acwrFactorPercent": 93, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 894, - "stressHistoryFactorPercent": 93, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 100, - "hrvFactorFeedback": "VERY_GOOD", - "hrvWeeklyAverage": 59, - "sleepHistoryFactorPercent": 91, - "sleepHistoryFactorFeedback": "VERY_GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-12", - "timestamp": "2024-06-12T10:42:16.0", - "timestampLocal": "2024-06-12T06:42:16.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_AVAILABLE_SS_HIGHEST_SLEEP_HISTORY_POS", - "feedbackShort": "ENERGIZED_BY_GOOD_SLEEP", - "score": 79, - "sleepScore": 89, - "sleepScoreFactorPercent": 88, - "sleepScoreFactorFeedback": "GOOD", - "recoveryTime": 1922, - "recoveryTimeFactorPercent": 48, - "recoveryTimeFactorFeedback": "MODERATE", - "acwrFactorPercent": 94, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 882, - "stressHistoryFactorPercent": 97, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 100, - "hrvFactorFeedback": "VERY_GOOD", - "hrvWeeklyAverage": 57, - "sleepHistoryFactorPercent": 94, - "sleepHistoryFactorFeedback": "VERY_GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "NO_CHANGE_SLEEP", - }, - { - "userProfilePK": "user_id: int", - "calendarDate": "2024-06-11", - "timestamp": "2024-06-11T10:32:30.0", - "timestampLocal": "2024-06-11T06:32:30.0", - "deviceId": 3472661486, - "level": "HIGH", - "feedbackLong": "HIGH_RT_AVAILABLE_SS_HIGHEST_SLEEP_HISTORY_POS", - "feedbackShort": "ENERGIZED_BY_GOOD_SLEEP", - "score": 82, - "sleepScore": 96, - "sleepScoreFactorPercent": 96, - "sleepScoreFactorFeedback": "VERY_GOOD", - "recoveryTime": 1415, - "recoveryTimeFactorPercent": 62, - "recoveryTimeFactorFeedback": "MODERATE", - "acwrFactorPercent": 97, - "acwrFactorFeedback": "GOOD", - "acuteLoad": 802, - "stressHistoryFactorPercent": 95, - "stressHistoryFactorFeedback": "GOOD", - "hrvFactorPercent": 100, - "hrvFactorFeedback": "VERY_GOOD", - "hrvWeeklyAverage": 58, - "sleepHistoryFactorPercent": 89, - "sleepHistoryFactorFeedback": "GOOD", - "validSleep": true, - "inputContext": null, - "recoveryTimeChangePhrase": "EXCELLENT_SLEEP", - }, - ] - } - }, - }, - { - "query": { - "query": 'query{trainingStatusDailyScalar(calendarDate:"2024-07-08")}' - }, - "response": { - "data": { - "trainingStatusDailyScalar": { - "userId": "user_id: int", - "latestTrainingStatusData": { - "3472661486": { - "calendarDate": "2024-07-08", - "sinceDate": "2024-06-28", - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1720445627000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 33, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 886, - "maxTrainingLoadChronic": 1506.0, - "minTrainingLoadChronic": 803.2, - "dailyTrainingLoadChronic": 1004, - "dailyAcuteChronicWorkloadRatio": 0.8, - }, - "primaryTrainingDevice": true, - } - }, - "recordedDevices": [ - { - "deviceId": 3472661486, - "imageURL": "https://res.garmin.com/en/products/010-02809-02/v/c1_01_md.png", - "deviceName": "Forerunner 965", - "category": 0, - } - ], - "showSelector": false, - "lastPrimarySyncDate": "2024-07-08", - } - } - }, - }, - { - "query": { - "query": 'query{trainingStatusWeeklyScalar(startDate:"2024-06-11", endDate:"2024-07-08", displayName:"ca8406dd-d7dd-4adb-825e-16967b1e82fb")}' - }, - "response": { - "data": { - "trainingStatusWeeklyScalar": { - "userId": "user_id: int", - "fromCalendarDate": "2024-06-11", - "toCalendarDate": "2024-07-08", - "showSelector": false, - "recordedDevices": [ - { - "deviceId": 3472661486, - "imageURL": "https://res.garmin.com/en/products/010-02809-02/v/c1_01_md.png", - "deviceName": "Forerunner 965", - "category": 0, - } - ], - "reportData": { - "3472661486": [ - { - "calendarDate": "2024-06-11", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1718142014000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 42, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1049, - "maxTrainingLoadChronic": 1483.5, - "minTrainingLoadChronic": 791.2, - "dailyTrainingLoadChronic": 989, - "dailyAcuteChronicWorkloadRatio": 1.0, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-12", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1718223210000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 42, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1080, - "maxTrainingLoadChronic": 1477.5, - "minTrainingLoadChronic": 788.0, - "dailyTrainingLoadChronic": 985, - "dailyAcuteChronicWorkloadRatio": 1.0, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-13", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1718296688000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 42, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1068, - "maxTrainingLoadChronic": 1473.0, - "minTrainingLoadChronic": 785.6, - "dailyTrainingLoadChronic": 982, - "dailyAcuteChronicWorkloadRatio": 1.0, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-14", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1718361041000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 38, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 884, - "maxTrainingLoadChronic": 1423.5, - "minTrainingLoadChronic": 759.2, - "dailyTrainingLoadChronic": 949, - "dailyAcuteChronicWorkloadRatio": 0.9, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-15", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1718453887000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 38, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 852, - "maxTrainingLoadChronic": 1404.0, - "minTrainingLoadChronic": 748.8000000000001, - "dailyTrainingLoadChronic": 936, - "dailyAcuteChronicWorkloadRatio": 0.9, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-16", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1718540790000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 33, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 812, - "maxTrainingLoadChronic": 1387.5, - "minTrainingLoadChronic": 740.0, - "dailyTrainingLoadChronic": 925, - "dailyAcuteChronicWorkloadRatio": 0.8, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-17", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1718623233000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 29, - "acwrStatus": "LOW", - "acwrStatusFeedback": "FEEDBACK_1", - "dailyTrainingLoadAcute": 643, - "maxTrainingLoadChronic": 1336.5, - "minTrainingLoadChronic": 712.8000000000001, - "dailyTrainingLoadChronic": 891, - "dailyAcuteChronicWorkloadRatio": 0.7, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-18", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 6, - "timestamp": 1718714866000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PEAKING_1", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 29, - "acwrStatus": "LOW", - "acwrStatusFeedback": "FEEDBACK_1", - "dailyTrainingLoadAcute": 715, - "maxTrainingLoadChronic": 1344.0, - "minTrainingLoadChronic": 716.8000000000001, - "dailyTrainingLoadChronic": 896, - "dailyAcuteChronicWorkloadRatio": 0.7, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-19", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 6, - "timestamp": 1718798492000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PEAKING_1", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 29, - "acwrStatus": "LOW", - "acwrStatusFeedback": "FEEDBACK_1", - "dailyTrainingLoadAcute": 710, - "maxTrainingLoadChronic": 1333.5, - "minTrainingLoadChronic": 711.2, - "dailyTrainingLoadChronic": 889, - "dailyAcuteChronicWorkloadRatio": 0.7, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-20", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1718921994000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 38, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 895, - "maxTrainingLoadChronic": 1369.5, - "minTrainingLoadChronic": 730.4000000000001, - "dailyTrainingLoadChronic": 913, - "dailyAcuteChronicWorkloadRatio": 0.9, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-21", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1718970618000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 38, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 854, - "maxTrainingLoadChronic": 1347.0, - "minTrainingLoadChronic": 718.4000000000001, - "dailyTrainingLoadChronic": 898, - "dailyAcuteChronicWorkloadRatio": 0.9, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-22", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1719083081000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 47, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1035, - "maxTrainingLoadChronic": 1381.5, - "minTrainingLoadChronic": 736.8000000000001, - "dailyTrainingLoadChronic": 921, - "dailyAcuteChronicWorkloadRatio": 1.1, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-23", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1719177700000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 47, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1080, - "maxTrainingLoadChronic": 1383.0, - "minTrainingLoadChronic": 737.6, - "dailyTrainingLoadChronic": 922, - "dailyAcuteChronicWorkloadRatio": 1.1, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-24", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1719228343000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 42, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 920, - "maxTrainingLoadChronic": 1330.5, - "minTrainingLoadChronic": 709.6, - "dailyTrainingLoadChronic": 887, - "dailyAcuteChronicWorkloadRatio": 1.0, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-25", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1719357364000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 47, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1029, - "maxTrainingLoadChronic": 1356.0, - "minTrainingLoadChronic": 723.2, - "dailyTrainingLoadChronic": 904, - "dailyAcuteChronicWorkloadRatio": 1.1, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-26", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1719431699000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 42, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 963, - "maxTrainingLoadChronic": 1339.5, - "minTrainingLoadChronic": 714.4000000000001, - "dailyTrainingLoadChronic": 893, - "dailyAcuteChronicWorkloadRatio": 1.0, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-27", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 7, - "timestamp": 1719517629000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 3, - "trainingStatusFeedbackPhrase": "PRODUCTIVE_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 47, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1037, - "maxTrainingLoadChronic": 1362.0, - "minTrainingLoadChronic": 726.4000000000001, - "dailyTrainingLoadChronic": 908, - "dailyAcuteChronicWorkloadRatio": 1.1, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-28", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1719596078000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 47, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1018, - "maxTrainingLoadChronic": 1371.0, - "minTrainingLoadChronic": 731.2, - "dailyTrainingLoadChronic": 914, - "dailyAcuteChronicWorkloadRatio": 1.1, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-29", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1719684771000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 52, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1136, - "maxTrainingLoadChronic": 1416.0, - "minTrainingLoadChronic": 755.2, - "dailyTrainingLoadChronic": 944, - "dailyAcuteChronicWorkloadRatio": 1.2, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-06-30", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1719764678000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 52, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1217, - "maxTrainingLoadChronic": 1458.0, - "minTrainingLoadChronic": 777.6, - "dailyTrainingLoadChronic": 972, - "dailyAcuteChronicWorkloadRatio": 1.2, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-07-01", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1719849197000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 47, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1133, - "maxTrainingLoadChronic": 1453.5, - "minTrainingLoadChronic": 775.2, - "dailyTrainingLoadChronic": 969, - "dailyAcuteChronicWorkloadRatio": 1.1, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-07-02", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1719921774000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 47, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1130, - "maxTrainingLoadChronic": 1468.5, - "minTrainingLoadChronic": 783.2, - "dailyTrainingLoadChronic": 979, - "dailyAcuteChronicWorkloadRatio": 1.1, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-07-03", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1720027612000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 52, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1206, - "maxTrainingLoadChronic": 1500.0, - "minTrainingLoadChronic": 800.0, - "dailyTrainingLoadChronic": 1000, - "dailyAcuteChronicWorkloadRatio": 1.2, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-07-04", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1720096045000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 47, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1122, - "maxTrainingLoadChronic": 1489.5, - "minTrainingLoadChronic": 794.4000000000001, - "dailyTrainingLoadChronic": 993, - "dailyAcuteChronicWorkloadRatio": 1.1, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-07-05", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1720194335000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 47, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1211, - "maxTrainingLoadChronic": 1534.5, - "minTrainingLoadChronic": 818.4000000000001, - "dailyTrainingLoadChronic": 1023, - "dailyAcuteChronicWorkloadRatio": 1.1, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-07-06", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1720313044000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 47, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1128, - "maxTrainingLoadChronic": 1534.5, - "minTrainingLoadChronic": 818.4000000000001, - "dailyTrainingLoadChronic": 1023, - "dailyAcuteChronicWorkloadRatio": 1.1, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-07-07", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1720353825000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 42, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1096, - "maxTrainingLoadChronic": 1546.5, - "minTrainingLoadChronic": 824.8000000000001, - "dailyTrainingLoadChronic": 1031, - "dailyAcuteChronicWorkloadRatio": 1.0, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-07-08", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1720445627000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 33, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 886, - "maxTrainingLoadChronic": 1506.0, - "minTrainingLoadChronic": 803.2, - "dailyTrainingLoadChronic": 1004, - "dailyAcuteChronicWorkloadRatio": 0.8, - }, - "primaryTrainingDevice": true, - }, - ] - }, - } - } - }, - }, - { - "query": { - "query": 'query{trainingLoadBalanceScalar(calendarDate:"2024-07-08", fullHistoryScan:true)}' - }, - "response": { - "data": { - "trainingLoadBalanceScalar": { - "userId": "user_id: int", - "metricsTrainingLoadBalanceDTOMap": { - "3472661486": { - "calendarDate": "2024-07-08", - "deviceId": 3472661486, - "monthlyLoadAerobicLow": 1926.3918, - "monthlyLoadAerobicHigh": 1651.8569, - "monthlyLoadAnaerobic": 260.00317, - "monthlyLoadAerobicLowTargetMin": 1404, - "monthlyLoadAerobicLowTargetMax": 2282, - "monthlyLoadAerobicHighTargetMin": 1229, - "monthlyLoadAerobicHighTargetMax": 2107, - "monthlyLoadAnaerobicTargetMin": 175, - "monthlyLoadAnaerobicTargetMax": 702, - "trainingBalanceFeedbackPhrase": "ON_TARGET", - "primaryTrainingDevice": true, - } - }, - "recordedDevices": [ - { - "deviceId": 3472661486, - "imageURL": "https://res.garmin.com/en/products/010-02809-02/v/c1_01_md.png", - "deviceName": "Forerunner 965", - "category": 0, - } - ], - } - } - }, - }, - { - "query": { - "query": 'query{heatAltitudeAcclimationScalar(date:"2024-07-08")}' - }, - "response": { - "data": { - "heatAltitudeAcclimationScalar": { - "calendarDate": "2024-07-08", - "altitudeAcclimationDate": "2024-07-08", - "previousAltitudeAcclimationDate": "2024-07-08", - "heatAcclimationDate": "2024-07-08", - "previousHeatAcclimationDate": "2024-06-30", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 100, - "previousHeatAcclimationPercentage": 100, - "heatTrend": "ACCLIMATIZED", - "altitudeTrend": null, - "currentAltitude": 0, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-07-08T09:33:47.0", - } - } - }, - }, - { - "query": { - "query": 'query{vo2MaxScalar(startDate:"2024-06-11", endDate:"2024-07-08")}' - }, - "response": { - "data": { - "vo2MaxScalar": [ - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-11", - "vo2MaxPreciseValue": 60.5, - "vo2MaxValue": 61.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-11", - "altitudeAcclimationDate": "2024-06-12", - "previousAltitudeAcclimationDate": "2024-06-12", - "heatAcclimationDate": "2024-06-11", - "previousHeatAcclimationDate": "2024-06-10", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 45, - "previousHeatAcclimationPercentage": 45, - "heatTrend": "ACCLIMATIZED", - "altitudeTrend": null, - "currentAltitude": 48, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-11T23:56:55.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-12", - "vo2MaxPreciseValue": 60.5, - "vo2MaxValue": 61.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-12", - "altitudeAcclimationDate": "2024-06-13", - "previousAltitudeAcclimationDate": "2024-06-13", - "heatAcclimationDate": "2024-06-12", - "previousHeatAcclimationDate": "2024-06-11", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 48, - "previousHeatAcclimationPercentage": 45, - "heatTrend": "ACCLIMATIZING", - "altitudeTrend": null, - "currentAltitude": 54, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-12T23:54:41.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-13", - "vo2MaxPreciseValue": 60.5, - "vo2MaxValue": 60.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-13", - "altitudeAcclimationDate": "2024-06-14", - "previousAltitudeAcclimationDate": "2024-06-14", - "heatAcclimationDate": "2024-06-13", - "previousHeatAcclimationDate": "2024-06-12", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 52, - "previousHeatAcclimationPercentage": 48, - "heatTrend": "ACCLIMATIZING", - "altitudeTrend": null, - "currentAltitude": 67, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-13T23:54:57.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-15", - "vo2MaxPreciseValue": 60.5, - "vo2MaxValue": 61.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-15", - "altitudeAcclimationDate": "2024-06-16", - "previousAltitudeAcclimationDate": "2024-06-16", - "heatAcclimationDate": "2024-06-15", - "previousHeatAcclimationDate": "2024-06-14", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 47, - "previousHeatAcclimationPercentage": 52, - "heatTrend": "DEACCLIMATIZING", - "altitudeTrend": null, - "currentAltitude": 65, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-15T23:57:48.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-16", - "vo2MaxPreciseValue": 60.7, - "vo2MaxValue": 61.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-16", - "altitudeAcclimationDate": "2024-06-17", - "previousAltitudeAcclimationDate": "2024-06-17", - "heatAcclimationDate": "2024-06-16", - "previousHeatAcclimationDate": "2024-06-15", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 45, - "previousHeatAcclimationPercentage": 47, - "heatTrend": "DEACCLIMATIZING", - "altitudeTrend": null, - "currentAltitude": 73, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-16T23:54:44.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-18", - "vo2MaxPreciseValue": 60.7, - "vo2MaxValue": 61.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-18", - "altitudeAcclimationDate": "2024-06-19", - "previousAltitudeAcclimationDate": "2024-06-19", - "heatAcclimationDate": "2024-06-18", - "previousHeatAcclimationDate": "2024-06-17", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 34, - "previousHeatAcclimationPercentage": 39, - "heatTrend": "DEACCLIMATIZING", - "altitudeTrend": null, - "currentAltitude": 68, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-18T23:55:05.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-19", - "vo2MaxPreciseValue": 60.8, - "vo2MaxValue": 61.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-19", - "altitudeAcclimationDate": "2024-06-20", - "previousAltitudeAcclimationDate": "2024-06-20", - "heatAcclimationDate": "2024-06-19", - "previousHeatAcclimationDate": "2024-06-18", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 39, - "previousHeatAcclimationPercentage": 34, - "heatTrend": "ACCLIMATIZING", - "altitudeTrend": null, - "currentAltitude": 52, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-19T23:57:54.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-20", - "vo2MaxPreciseValue": 60.5, - "vo2MaxValue": 61.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-20", - "altitudeAcclimationDate": "2024-06-21", - "previousAltitudeAcclimationDate": "2024-06-21", - "heatAcclimationDate": "2024-06-20", - "previousHeatAcclimationDate": "2024-06-19", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 45, - "previousHeatAcclimationPercentage": 39, - "heatTrend": "ACCLIMATIZING", - "altitudeTrend": null, - "currentAltitude": 69, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-20T23:58:53.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-21", - "vo2MaxPreciseValue": 60.4, - "vo2MaxValue": 60.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-21", - "altitudeAcclimationDate": "2024-06-22", - "previousAltitudeAcclimationDate": "2024-06-22", - "heatAcclimationDate": "2024-06-21", - "previousHeatAcclimationDate": "2024-06-20", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 48, - "previousHeatAcclimationPercentage": 45, - "heatTrend": "ACCLIMATIZING", - "altitudeTrend": null, - "currentAltitude": 64, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-21T23:58:46.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-22", - "vo2MaxPreciseValue": 60.5, - "vo2MaxValue": 60.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-22", - "altitudeAcclimationDate": "2024-06-23", - "previousAltitudeAcclimationDate": "2024-06-23", - "heatAcclimationDate": "2024-06-22", - "previousHeatAcclimationDate": "2024-06-21", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 48, - "previousHeatAcclimationPercentage": 48, - "heatTrend": "ACCLIMATIZED", - "altitudeTrend": null, - "currentAltitude": 60, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-22T23:57:49.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-23", - "vo2MaxPreciseValue": 60.5, - "vo2MaxValue": 60.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-23", - "altitudeAcclimationDate": "2024-06-24", - "previousAltitudeAcclimationDate": "2024-06-24", - "heatAcclimationDate": "2024-06-23", - "previousHeatAcclimationDate": "2024-06-22", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 67, - "previousHeatAcclimationPercentage": 48, - "heatTrend": "ACCLIMATIZING", - "altitudeTrend": null, - "currentAltitude": 61, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-23T23:55:07.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-25", - "vo2MaxPreciseValue": 60.4, - "vo2MaxValue": 60.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-25", - "altitudeAcclimationDate": "2024-06-26", - "previousAltitudeAcclimationDate": "2024-06-26", - "heatAcclimationDate": "2024-06-25", - "previousHeatAcclimationDate": "2024-06-24", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 73, - "previousHeatAcclimationPercentage": 67, - "heatTrend": "ACCLIMATIZING", - "altitudeTrend": null, - "currentAltitude": 65, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-25T23:55:56.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-26", - "vo2MaxPreciseValue": 60.3, - "vo2MaxValue": 60.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-26", - "altitudeAcclimationDate": "2024-06-27", - "previousAltitudeAcclimationDate": "2024-06-27", - "heatAcclimationDate": "2024-06-26", - "previousHeatAcclimationDate": "2024-06-25", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 82, - "previousHeatAcclimationPercentage": 73, - "heatTrend": "ACCLIMATIZING", - "altitudeTrend": null, - "currentAltitude": 54, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-26T23:55:51.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-27", - "vo2MaxPreciseValue": 60.3, - "vo2MaxValue": 60.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-27", - "altitudeAcclimationDate": "2024-06-28", - "previousAltitudeAcclimationDate": "2024-06-28", - "heatAcclimationDate": "2024-06-27", - "previousHeatAcclimationDate": "2024-06-26", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 96, - "previousHeatAcclimationPercentage": 82, - "heatTrend": "ACCLIMATIZING", - "altitudeTrend": null, - "currentAltitude": 42, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-27T23:57:42.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-28", - "vo2MaxPreciseValue": 60.4, - "vo2MaxValue": 60.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-28", - "altitudeAcclimationDate": "2024-06-29", - "previousAltitudeAcclimationDate": "2024-06-29", - "heatAcclimationDate": "2024-06-28", - "previousHeatAcclimationDate": "2024-06-27", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 96, - "previousHeatAcclimationPercentage": 96, - "heatTrend": "ACCLIMATIZED", - "altitudeTrend": null, - "currentAltitude": 47, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-28T23:57:37.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-29", - "vo2MaxPreciseValue": 60.4, - "vo2MaxValue": 60.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-29", - "altitudeAcclimationDate": "2024-06-30", - "previousAltitudeAcclimationDate": "2024-06-30", - "heatAcclimationDate": "2024-06-29", - "previousHeatAcclimationDate": "2024-06-28", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 91, - "previousHeatAcclimationPercentage": 96, - "heatTrend": "DEACCLIMATIZING", - "altitudeTrend": null, - "currentAltitude": 120, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-29T23:56:02.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-06-30", - "vo2MaxPreciseValue": 60.4, - "vo2MaxValue": 60.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-06-30", - "altitudeAcclimationDate": "2024-07-01", - "previousAltitudeAcclimationDate": "2024-07-01", - "heatAcclimationDate": "2024-06-30", - "previousHeatAcclimationDate": "2024-06-30", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 100, - "previousHeatAcclimationPercentage": 91, - "heatTrend": "ACCLIMATIZING", - "altitudeTrend": null, - "currentAltitude": 41, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-06-30T23:55:24.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-07-01", - "vo2MaxPreciseValue": 60.5, - "vo2MaxValue": 60.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-07-01", - "altitudeAcclimationDate": "2024-07-02", - "previousAltitudeAcclimationDate": "2024-07-02", - "heatAcclimationDate": "2024-07-01", - "previousHeatAcclimationDate": "2024-06-30", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 100, - "previousHeatAcclimationPercentage": 100, - "heatTrend": "ACCLIMATIZED", - "altitudeTrend": null, - "currentAltitude": 43, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-07-01T23:56:31.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-07-02", - "vo2MaxPreciseValue": 60.5, - "vo2MaxValue": 61.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-07-02", - "altitudeAcclimationDate": "2024-07-03", - "previousAltitudeAcclimationDate": "2024-07-03", - "heatAcclimationDate": "2024-07-02", - "previousHeatAcclimationDate": "2024-06-30", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 100, - "previousHeatAcclimationPercentage": 100, - "heatTrend": "ACCLIMATIZED", - "altitudeTrend": null, - "currentAltitude": 0, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-07-02T23:58:21.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-07-03", - "vo2MaxPreciseValue": 60.6, - "vo2MaxValue": 61.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-07-03", - "altitudeAcclimationDate": "2024-07-04", - "previousAltitudeAcclimationDate": "2024-07-04", - "heatAcclimationDate": "2024-07-03", - "previousHeatAcclimationDate": "2024-06-30", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 100, - "previousHeatAcclimationPercentage": 100, - "heatTrend": "ACCLIMATIZED", - "altitudeTrend": null, - "currentAltitude": 19, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-07-03T23:57:17.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-07-04", - "vo2MaxPreciseValue": 60.6, - "vo2MaxValue": 61.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-07-04", - "altitudeAcclimationDate": "2024-07-05", - "previousAltitudeAcclimationDate": "2024-07-05", - "heatAcclimationDate": "2024-07-04", - "previousHeatAcclimationDate": "2024-06-30", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 100, - "previousHeatAcclimationPercentage": 100, - "heatTrend": "ACCLIMATIZED", - "altitudeTrend": null, - "currentAltitude": 24, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-07-04T23:56:04.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-07-05", - "vo2MaxPreciseValue": 60.6, - "vo2MaxValue": 61.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-07-05", - "altitudeAcclimationDate": "2024-07-06", - "previousAltitudeAcclimationDate": "2024-07-06", - "heatAcclimationDate": "2024-07-05", - "previousHeatAcclimationDate": "2024-06-30", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 100, - "previousHeatAcclimationPercentage": 100, - "heatTrend": "ACCLIMATIZED", - "altitudeTrend": null, - "currentAltitude": 0, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-07-05T23:55:41.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-07-06", - "vo2MaxPreciseValue": 60.6, - "vo2MaxValue": 61.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-07-06", - "altitudeAcclimationDate": "2024-07-07", - "previousAltitudeAcclimationDate": "2024-07-07", - "heatAcclimationDate": "2024-07-07", - "previousHeatAcclimationDate": "2024-06-30", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 100, - "previousHeatAcclimationPercentage": 100, - "heatTrend": "ACCLIMATIZED", - "altitudeTrend": null, - "currentAltitude": 3, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-07-06T23:55:12.0", - }, - }, - { - "userId": "user_id: int", - "generic": { - "calendarDate": "2024-07-07", - "vo2MaxPreciseValue": 60.6, - "vo2MaxValue": 61.0, - "fitnessAge": null, - "fitnessAgeDescription": null, - "maxMetCategory": 0, - }, - "cycling": null, - "heatAltitudeAcclimation": { - "calendarDate": "2024-07-07", - "altitudeAcclimationDate": "2024-07-08", - "previousAltitudeAcclimationDate": "2024-07-08", - "heatAcclimationDate": "2024-07-07", - "previousHeatAcclimationDate": "2024-06-30", - "altitudeAcclimation": 0, - "previousAltitudeAcclimation": 0, - "heatAcclimationPercentage": 100, - "previousHeatAcclimationPercentage": 100, - "heatTrend": "ACCLIMATIZED", - "altitudeTrend": null, - "currentAltitude": 62, - "previousAltitude": 0, - "acclimationPercentage": 0, - "previousAcclimationPercentage": 0, - "altitudeAcclimationLocalTimestamp": "2024-07-07T23:54:28.0", - }, - }, - ] - } - }, - }, - { - "query": { - "query": 'query{activityTrendsScalar(activityType:"running",date:"2024-07-08")}' - }, - "response": { - "data": {"activityTrendsScalar": {"RUNNING": "2024-06-25"}} - }, - }, - { - "query": { - "query": 'query{activityTrendsScalar(activityType:"all",date:"2024-07-08")}' - }, - "response": {"data": {"activityTrendsScalar": {"ALL": "2024-06-25"}}}, - }, - { - "query": { - "query": 'query{activityTrendsScalar(activityType:"fitness_equipment",date:"2024-07-08")}' - }, - "response": { - "data": {"activityTrendsScalar": {"FITNESS_EQUIPMENT": null}} - }, - }, - { - "query": { - "query": "\n query {\n userGoalsScalar\n }\n " - }, - "response": { - "data": { - "userGoalsScalar": [ - { - "userGoalPk": 3354140802, - "userProfilePk": "user_id: int", - "userGoalCategory": "MANUAL", - "userGoalType": "HYDRATION", - "startDate": "2024-05-15", - "endDate": null, - "goalName": null, - "goalValue": 2000.0, - "updateDate": "2024-05-15T11:17:41.0", - "createDate": "2024-05-15T11:17:41.0", - "rulePk": null, - "activityTypePk": 9, - "trackingPeriodType": "DAILY", - }, - { - "userGoalPk": 3353706978, - "userProfilePk": "user_id: int", - "userGoalCategory": "MYFITNESSPAL", - "userGoalType": "NET_CALORIES", - "startDate": "2024-05-06", - "endDate": null, - "goalName": null, - "goalValue": 1780.0, - "updateDate": "2024-05-06T10:53:34.0", - "createDate": "2024-05-06T10:53:34.0", - "rulePk": null, - "activityTypePk": null, - "trackingPeriodType": "DAILY", - }, - { - "userGoalPk": 3352551190, - "userProfilePk": "user_id: int", - "userGoalCategory": "MANUAL", - "userGoalType": "WEIGHT_GRAMS", - "startDate": "2024-04-10", - "endDate": null, - "goalName": null, - "goalValue": 77110.0, - "updateDate": "2024-04-10T22:15:30.0", - "createDate": "2024-04-10T22:15:30.0", - "rulePk": null, - "activityTypePk": 9, - "trackingPeriodType": "DAILY", - }, - { - "userGoalPk": 413558487, - "userProfilePk": "user_id: int", - "userGoalCategory": "MANUAL", - "userGoalType": "STEPS", - "startDate": "2024-06-26", - "endDate": null, - "goalName": null, - "goalValue": 5000.0, - "updateDate": "2024-06-26T13:30:05.0", - "createDate": "2018-09-11T22:32:18.0", - "rulePk": null, - "activityTypePk": null, - "trackingPeriodType": "DAILY", - }, - ] - } - }, - }, - { - "query": { - "query": 'query{trainingStatusWeeklyScalar(startDate:"2024-07-02", endDate:"2024-07-08", displayName:"ca8406dd-d7dd-4adb-825e-16967b1e82fb")}' - }, - "response": { - "data": { - "trainingStatusWeeklyScalar": { - "userId": "user_id: int", - "fromCalendarDate": "2024-07-02", - "toCalendarDate": "2024-07-08", - "showSelector": false, - "recordedDevices": [ - { - "deviceId": 3472661486, - "imageURL": "https://res.garmin.com/en/products/010-02809-02/v/c1_01_md.png", - "deviceName": "Forerunner 965", - "category": 0, - } - ], - "reportData": { - "3472661486": [ - { - "calendarDate": "2024-07-02", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1719921774000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 47, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1130, - "maxTrainingLoadChronic": 1468.5, - "minTrainingLoadChronic": 783.2, - "dailyTrainingLoadChronic": 979, - "dailyAcuteChronicWorkloadRatio": 1.1, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-07-03", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1720027612000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 52, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1206, - "maxTrainingLoadChronic": 1500.0, - "minTrainingLoadChronic": 800.0, - "dailyTrainingLoadChronic": 1000, - "dailyAcuteChronicWorkloadRatio": 1.2, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-07-04", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1720096045000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 47, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1122, - "maxTrainingLoadChronic": 1489.5, - "minTrainingLoadChronic": 794.4000000000001, - "dailyTrainingLoadChronic": 993, - "dailyAcuteChronicWorkloadRatio": 1.1, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-07-05", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1720194335000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 47, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1211, - "maxTrainingLoadChronic": 1534.5, - "minTrainingLoadChronic": 818.4000000000001, - "dailyTrainingLoadChronic": 1023, - "dailyAcuteChronicWorkloadRatio": 1.1, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-07-06", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1720313044000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 47, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1128, - "maxTrainingLoadChronic": 1534.5, - "minTrainingLoadChronic": 818.4000000000001, - "dailyTrainingLoadChronic": 1023, - "dailyAcuteChronicWorkloadRatio": 1.1, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-07-07", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1720353825000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 42, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 1096, - "maxTrainingLoadChronic": 1546.5, - "minTrainingLoadChronic": 824.8000000000001, - "dailyTrainingLoadChronic": 1031, - "dailyAcuteChronicWorkloadRatio": 1.0, - }, - "primaryTrainingDevice": true, - }, - { - "calendarDate": "2024-07-08", - "sinceDate": null, - "weeklyTrainingLoad": null, - "trainingStatus": 4, - "timestamp": 1720445627000, - "deviceId": 3472661486, - "loadTunnelMin": null, - "loadTunnelMax": null, - "loadLevelTrend": null, - "sport": "RUNNING", - "subSport": "GENERIC", - "fitnessTrendSport": "RUNNING", - "fitnessTrend": 2, - "trainingStatusFeedbackPhrase": "MAINTAINING_3", - "trainingPaused": false, - "acuteTrainingLoadDTO": { - "acwrPercent": 33, - "acwrStatus": "OPTIMAL", - "acwrStatusFeedback": "FEEDBACK_2", - "dailyTrainingLoadAcute": 886, - "maxTrainingLoadChronic": 1506.0, - "minTrainingLoadChronic": 803.2, - "dailyTrainingLoadChronic": 1004, - "dailyAcuteChronicWorkloadRatio": 0.8, - }, - "primaryTrainingDevice": true, - }, - ] - }, - } - } - }, - }, - { - "query": { - "query": 'query{enduranceScoreScalar(startDate:"2024-04-16", endDate:"2024-07-08", aggregation:"weekly")}' - }, - "response": { - "data": { - "enduranceScoreScalar": { - "userProfilePK": "user_id: int", - "startDate": "2024-04-16", - "endDate": "2024-07-08", - "avg": 8383, - "max": 8649, - "groupMap": { - "2024-04-16": { - "groupAverage": 8614, - "groupMax": 8649, - "enduranceContributorDTOList": [ - { - "activityTypeId": null, - "group": 3, - "contribution": 5.8842854, - }, - { - "activityTypeId": null, - "group": 0, - "contribution": 83.06714, - }, - { - "activityTypeId": null, - "group": 1, - "contribution": 9.064286, - }, - { - "activityTypeId": null, - "group": 8, - "contribution": 1.9842857, - }, - ], - }, - "2024-04-23": { - "groupAverage": 8499, - "groupMax": 8578, - "enduranceContributorDTOList": [ - { - "activityTypeId": null, - "group": 3, - "contribution": 5.3585715, - }, - { - "activityTypeId": null, - "group": 0, - "contribution": 81.944275, - }, - { - "activityTypeId": null, - "group": 1, - "contribution": 8.255714, - }, - { - "activityTypeId": null, - "group": 8, - "contribution": 4.4414287, - }, - ], - }, - "2024-04-30": { - "groupAverage": 8295, - "groupMax": 8406, - "enduranceContributorDTOList": [ - { - "activityTypeId": null, - "group": 3, - "contribution": 0.7228571, - }, - { - "activityTypeId": null, - "group": 0, - "contribution": 80.9, - }, - { - "activityTypeId": null, - "group": 1, - "contribution": 7.531429, - }, - { - "activityTypeId": 13, - "group": null, - "contribution": 4.9157143, - }, - { - "activityTypeId": null, - "group": 8, - "contribution": 5.9300003, - }, - ], - }, - "2024-05-07": { - "groupAverage": 8172, - "groupMax": 8216, - "enduranceContributorDTOList": [ - { - "activityTypeId": null, - "group": 0, - "contribution": 81.51143, - }, - { - "activityTypeId": null, - "group": 1, - "contribution": 6.6957145, - }, - { - "activityTypeId": 13, - "group": null, - "contribution": 7.5371428, - }, - { - "activityTypeId": null, - "group": 8, - "contribution": 4.2557144, - }, - ], - }, - "2024-05-14": { - "groupAverage": 8314, - "groupMax": 8382, - "enduranceContributorDTOList": [ - { - "activityTypeId": null, - "group": 0, - "contribution": 82.93285, - }, - { - "activityTypeId": null, - "group": 1, - "contribution": 6.4171433, - }, - { - "activityTypeId": 13, - "group": null, - "contribution": 8.967142, - }, - { - "activityTypeId": null, - "group": 8, - "contribution": 1.6828573, - }, - ], - }, - "2024-05-21": { - "groupAverage": 8263, - "groupMax": 8294, - "enduranceContributorDTOList": [ - { - "activityTypeId": null, - "group": 0, - "contribution": 82.55286, - }, - { - "activityTypeId": null, - "group": 1, - "contribution": 4.245714, - }, - { - "activityTypeId": 13, - "group": null, - "contribution": 11.4657135, - }, - { - "activityTypeId": null, - "group": 8, - "contribution": 1.7357142, - }, - ], - }, - "2024-05-28": { - "groupAverage": 8282, - "groupMax": 8307, - "enduranceContributorDTOList": [ - { - "activityTypeId": null, - "group": 0, - "contribution": 84.18428, - }, - { - "activityTypeId": 13, - "group": null, - "contribution": 12.667143, - }, - { - "activityTypeId": null, - "group": 8, - "contribution": 3.148571, - }, - ], - }, - "2024-06-04": { - "groupAverage": 8334, - "groupMax": 8360, - "enduranceContributorDTOList": [ - { - "activityTypeId": null, - "group": 0, - "contribution": 84.24714, - }, - { - "activityTypeId": 13, - "group": null, - "contribution": 13.321428, - }, - { - "activityTypeId": null, - "group": 8, - "contribution": 2.4314287, - }, - ], - }, - "2024-06-11": { - "groupAverage": 8376, - "groupMax": 8400, - "enduranceContributorDTOList": [ - { - "activityTypeId": null, - "group": 0, - "contribution": 84.138565, - }, - { - "activityTypeId": 13, - "group": null, - "contribution": 13.001429, - }, - { - "activityTypeId": null, - "group": 8, - "contribution": 2.8600001, - }, - ], - }, - "2024-06-18": { - "groupAverage": 8413, - "groupMax": 8503, - "enduranceContributorDTOList": [ - { - "activityTypeId": null, - "group": 0, - "contribution": 84.28715, - }, - { - "activityTypeId": 13, - "group": null, - "contribution": 13.105714, - }, - { - "activityTypeId": null, - "group": 8, - "contribution": 2.607143, - }, - ], - }, - "2024-06-25": { - "groupAverage": 8445, - "groupMax": 8555, - "enduranceContributorDTOList": [ - { - "activityTypeId": null, - "group": 0, - "contribution": 84.56285, - }, - { - "activityTypeId": 13, - "group": null, - "contribution": 12.332857, - }, - { - "activityTypeId": null, - "group": 8, - "contribution": 3.104286, - }, - ], - }, - "2024-07-02": { - "groupAverage": 8593, - "groupMax": 8643, - "enduranceContributorDTOList": [ - { - "activityTypeId": null, - "group": 0, - "contribution": 86.76143, - }, - { - "activityTypeId": 13, - "group": null, - "contribution": 10.441428, - }, - { - "activityTypeId": null, - "group": 8, - "contribution": 2.7971427, - }, - ], - }, - }, - "enduranceScoreDTO": { - "userProfilePK": "user_id: int", - "deviceId": 3472661486, - "calendarDate": "2024-07-08", - "overallScore": 8587, - "classification": 6, - "feedbackPhrase": 78, - "primaryTrainingDevice": true, - "gaugeLowerLimit": 3570, - "classificationLowerLimitIntermediate": 5100, - "classificationLowerLimitTrained": 5800, - "classificationLowerLimitWellTrained": 6600, - "classificationLowerLimitExpert": 7300, - "classificationLowerLimitSuperior": 8100, - "classificationLowerLimitElite": 8800, - "gaugeUpperLimit": 10560, - "contributors": [ - { - "activityTypeId": null, - "group": 0, - "contribution": 87.65, - }, - { - "activityTypeId": 13, - "group": null, - "contribution": 9.49, - }, - { - "activityTypeId": null, - "group": 8, - "contribution": 2.86, - }, - ], - }, - } - } - }, - }, - { - "query": {"query": 'query{latestWeightScalar(asOfDate:"2024-07-08")}'}, - "response": { - "data": { - "latestWeightScalar": { - "date": 1720396800000, - "version": 1720435190064, - "weight": 82372.0, - "bmi": null, - "bodyFat": null, - "bodyWater": null, - "boneMass": null, - "muscleMass": null, - "physiqueRating": null, - "visceralFat": null, - "metabolicAge": null, - "caloricIntake": null, - "sourceType": "MFP", - "timestampGMT": 1720435137000, - "weightDelta": 907, - } - } - }, - }, - { - "query": {"query": 'query{pregnancyScalar(date:"2024-07-08")}'}, - "response": {"data": {"pregnancyScalar": null}}, - }, - { - "query": { - "query": 'query{epochChartScalar(date:"2024-07-08", include:["stress"])}' - }, - "response": { - "data": { - "epochChartScalar": { - "stress": { - "labels": ["timestampGmt", "value"], - "data": [ - ["2024-07-08T04:03:00.0", 23], - ["2024-07-08T04:06:00.0", 20], - ["2024-07-08T04:09:00.0", 20], - ["2024-07-08T04:12:00.0", 12], - ["2024-07-08T04:15:00.0", 15], - ["2024-07-08T04:18:00.0", 15], - ["2024-07-08T04:21:00.0", 13], - ["2024-07-08T04:24:00.0", 14], - ["2024-07-08T04:27:00.0", 16], - ["2024-07-08T04:30:00.0", 16], - ["2024-07-08T04:33:00.0", 14], - ["2024-07-08T04:36:00.0", 15], - ["2024-07-08T04:39:00.0", 16], - ["2024-07-08T04:42:00.0", 15], - ["2024-07-08T04:45:00.0", 17], - ["2024-07-08T04:48:00.0", 15], - ["2024-07-08T04:51:00.0", 15], - ["2024-07-08T04:54:00.0", 15], - ["2024-07-08T04:57:00.0", 13], - ["2024-07-08T05:00:00.0", 11], - ["2024-07-08T05:03:00.0", 7], - ["2024-07-08T05:06:00.0", 15], - ["2024-07-08T05:09:00.0", 23], - ["2024-07-08T05:12:00.0", 21], - ["2024-07-08T05:15:00.0", 17], - ["2024-07-08T05:18:00.0", 12], - ["2024-07-08T05:21:00.0", 17], - ["2024-07-08T05:24:00.0", 18], - ["2024-07-08T05:27:00.0", 17], - ["2024-07-08T05:30:00.0", 13], - ["2024-07-08T05:33:00.0", 12], - ["2024-07-08T05:36:00.0", 17], - ["2024-07-08T05:39:00.0", 15], - ["2024-07-08T05:42:00.0", 14], - ["2024-07-08T05:45:00.0", 21], - ["2024-07-08T05:48:00.0", 20], - ["2024-07-08T05:51:00.0", 23], - ["2024-07-08T05:54:00.0", 21], - ["2024-07-08T05:57:00.0", 19], - ["2024-07-08T06:00:00.0", 11], - ["2024-07-08T06:03:00.0", 13], - ["2024-07-08T06:06:00.0", 9], - ["2024-07-08T06:09:00.0", 9], - ["2024-07-08T06:12:00.0", 10], - ["2024-07-08T06:15:00.0", 10], - ["2024-07-08T06:18:00.0", 9], - ["2024-07-08T06:21:00.0", 10], - ["2024-07-08T06:24:00.0", 10], - ["2024-07-08T06:27:00.0", 9], - ["2024-07-08T06:30:00.0", 8], - ["2024-07-08T06:33:00.0", 10], - ["2024-07-08T06:36:00.0", 10], - ["2024-07-08T06:39:00.0", 9], - ["2024-07-08T06:42:00.0", 15], - ["2024-07-08T06:45:00.0", 6], - ["2024-07-08T06:48:00.0", 7], - ["2024-07-08T06:51:00.0", 8], - ["2024-07-08T06:54:00.0", 12], - ["2024-07-08T06:57:00.0", 12], - ["2024-07-08T07:00:00.0", 10], - ["2024-07-08T07:03:00.0", 16], - ["2024-07-08T07:06:00.0", 16], - ["2024-07-08T07:09:00.0", 18], - ["2024-07-08T07:12:00.0", 20], - ["2024-07-08T07:15:00.0", 20], - ["2024-07-08T07:18:00.0", 17], - ["2024-07-08T07:21:00.0", 11], - ["2024-07-08T07:24:00.0", 21], - ["2024-07-08T07:27:00.0", 18], - ["2024-07-08T07:30:00.0", 8], - ["2024-07-08T07:33:00.0", 12], - ["2024-07-08T07:36:00.0", 18], - ["2024-07-08T07:39:00.0", 10], - ["2024-07-08T07:42:00.0", 8], - ["2024-07-08T07:45:00.0", 8], - ["2024-07-08T07:48:00.0", 9], - ["2024-07-08T07:51:00.0", 11], - ["2024-07-08T07:54:00.0", 9], - ["2024-07-08T07:57:00.0", 15], - ["2024-07-08T08:00:00.0", 14], - ["2024-07-08T08:03:00.0", 12], - ["2024-07-08T08:06:00.0", 10], - ["2024-07-08T08:09:00.0", 8], - ["2024-07-08T08:12:00.0", 12], - ["2024-07-08T08:15:00.0", 16], - ["2024-07-08T08:18:00.0", 12], - ["2024-07-08T08:21:00.0", 17], - ["2024-07-08T08:24:00.0", 16], - ["2024-07-08T08:27:00.0", 20], - ["2024-07-08T08:30:00.0", 17], - ["2024-07-08T08:33:00.0", 20], - ["2024-07-08T08:36:00.0", 21], - ["2024-07-08T08:39:00.0", 19], - ["2024-07-08T08:42:00.0", 15], - ["2024-07-08T08:45:00.0", 18], - ["2024-07-08T08:48:00.0", 16], - ["2024-07-08T08:51:00.0", 11], - ["2024-07-08T08:54:00.0", 11], - ["2024-07-08T08:57:00.0", 14], - ["2024-07-08T09:00:00.0", 12], - ["2024-07-08T09:03:00.0", 7], - ["2024-07-08T09:06:00.0", 12], - ["2024-07-08T09:09:00.0", 15], - ["2024-07-08T09:12:00.0", 12], - ["2024-07-08T09:15:00.0", 17], - ["2024-07-08T09:18:00.0", 18], - ["2024-07-08T09:21:00.0", 12], - ["2024-07-08T09:24:00.0", 15], - ["2024-07-08T09:27:00.0", 16], - ["2024-07-08T09:30:00.0", 19], - ["2024-07-08T09:33:00.0", 20], - ["2024-07-08T09:36:00.0", 17], - ["2024-07-08T09:39:00.0", 20], - ["2024-07-08T09:42:00.0", 20], - ["2024-07-08T09:45:00.0", 22], - ["2024-07-08T09:48:00.0", 20], - ["2024-07-08T09:51:00.0", 9], - ["2024-07-08T09:54:00.0", 16], - ["2024-07-08T09:57:00.0", 22], - ["2024-07-08T10:00:00.0", 20], - ["2024-07-08T10:03:00.0", 17], - ["2024-07-08T10:06:00.0", 21], - ["2024-07-08T10:09:00.0", 13], - ["2024-07-08T10:12:00.0", 15], - ["2024-07-08T10:15:00.0", 17], - ["2024-07-08T10:18:00.0", 17], - ["2024-07-08T10:21:00.0", 17], - ["2024-07-08T10:24:00.0", 15], - ["2024-07-08T10:27:00.0", 21], - ["2024-07-08T10:30:00.0", -2], - ["2024-07-08T10:33:00.0", -2], - ["2024-07-08T10:36:00.0", -2], - ["2024-07-08T10:39:00.0", -1], - ["2024-07-08T10:42:00.0", 32], - ["2024-07-08T10:45:00.0", 38], - ["2024-07-08T10:48:00.0", 14], - ["2024-07-08T10:51:00.0", 23], - ["2024-07-08T10:54:00.0", 15], - ["2024-07-08T10:57:00.0", 19], - ["2024-07-08T11:00:00.0", 28], - ["2024-07-08T11:03:00.0", 17], - ["2024-07-08T11:06:00.0", 23], - ["2024-07-08T11:09:00.0", 28], - ["2024-07-08T11:12:00.0", 25], - ["2024-07-08T11:15:00.0", 22], - ["2024-07-08T11:18:00.0", 25], - ["2024-07-08T11:21:00.0", -1], - ["2024-07-08T11:24:00.0", 21], - ["2024-07-08T11:27:00.0", -1], - ["2024-07-08T11:30:00.0", 21], - ["2024-07-08T11:33:00.0", 21], - ["2024-07-08T11:36:00.0", 18], - ["2024-07-08T11:39:00.0", 33], - ["2024-07-08T11:42:00.0", -1], - ["2024-07-08T11:45:00.0", 40], - ["2024-07-08T11:48:00.0", -1], - ["2024-07-08T11:51:00.0", 25], - ["2024-07-08T11:54:00.0", -1], - ["2024-07-08T11:57:00.0", -1], - ["2024-07-08T12:00:00.0", 23], - ["2024-07-08T12:03:00.0", -2], - ["2024-07-08T12:06:00.0", -1], - ["2024-07-08T12:09:00.0", -1], - ["2024-07-08T12:12:00.0", -2], - ["2024-07-08T12:15:00.0", -2], - ["2024-07-08T12:18:00.0", -2], - ["2024-07-08T12:21:00.0", -2], - ["2024-07-08T12:24:00.0", -2], - ["2024-07-08T12:27:00.0", -2], - ["2024-07-08T12:30:00.0", -2], - ["2024-07-08T12:33:00.0", -2], - ["2024-07-08T12:36:00.0", -2], - ["2024-07-08T12:39:00.0", -2], - ["2024-07-08T12:42:00.0", -2], - ["2024-07-08T12:45:00.0", 25], - ["2024-07-08T12:48:00.0", 24], - ["2024-07-08T12:51:00.0", 23], - ["2024-07-08T12:54:00.0", 24], - ["2024-07-08T12:57:00.0", -1], - ["2024-07-08T13:00:00.0", -2], - ["2024-07-08T13:03:00.0", 21], - ["2024-07-08T13:06:00.0", -1], - ["2024-07-08T13:09:00.0", 18], - ["2024-07-08T13:12:00.0", 25], - ["2024-07-08T13:15:00.0", 24], - ["2024-07-08T13:18:00.0", 25], - ["2024-07-08T13:21:00.0", 34], - ["2024-07-08T13:24:00.0", 24], - ["2024-07-08T13:27:00.0", 28], - ["2024-07-08T13:30:00.0", 28], - ["2024-07-08T13:33:00.0", 28], - ["2024-07-08T13:36:00.0", 27], - ["2024-07-08T13:39:00.0", 21], - ["2024-07-08T13:42:00.0", 32], - ["2024-07-08T13:45:00.0", 30], - ["2024-07-08T13:48:00.0", 29], - ["2024-07-08T13:51:00.0", 20], - ["2024-07-08T13:54:00.0", 35], - ["2024-07-08T13:57:00.0", 31], - ["2024-07-08T14:00:00.0", 37], - ["2024-07-08T14:03:00.0", 32], - ["2024-07-08T14:06:00.0", 34], - ["2024-07-08T14:09:00.0", 25], - ["2024-07-08T14:12:00.0", 38], - ["2024-07-08T14:15:00.0", 37], - ["2024-07-08T14:18:00.0", 38], - ["2024-07-08T14:21:00.0", 42], - ["2024-07-08T14:24:00.0", 30], - ["2024-07-08T14:27:00.0", 26], - ["2024-07-08T14:30:00.0", 40], - ["2024-07-08T14:33:00.0", -1], - ["2024-07-08T14:36:00.0", 21], - ["2024-07-08T14:39:00.0", -2], - ["2024-07-08T14:42:00.0", -2], - ["2024-07-08T14:45:00.0", -2], - ["2024-07-08T14:48:00.0", -1], - ["2024-07-08T14:51:00.0", 31], - ["2024-07-08T14:54:00.0", -1], - ["2024-07-08T14:57:00.0", -2], - ["2024-07-08T15:00:00.0", -2], - ["2024-07-08T15:03:00.0", -2], - ["2024-07-08T15:06:00.0", -2], - ["2024-07-08T15:09:00.0", -2], - ["2024-07-08T15:12:00.0", -1], - ["2024-07-08T15:15:00.0", 25], - ["2024-07-08T15:18:00.0", 24], - ["2024-07-08T15:21:00.0", 28], - ["2024-07-08T15:24:00.0", 28], - ["2024-07-08T15:27:00.0", 23], - ["2024-07-08T15:30:00.0", 25], - ["2024-07-08T15:33:00.0", 34], - ["2024-07-08T15:36:00.0", -1], - ["2024-07-08T15:39:00.0", 59], - ["2024-07-08T15:42:00.0", 50], - ["2024-07-08T15:45:00.0", -1], - ["2024-07-08T15:48:00.0", -2], - ], - } - } - } - }, - }, -] diff --git a/python-garminconnect/pyproject.toml b/python-garminconnect/pyproject.toml deleted file mode 100644 index 6e95690..0000000 --- a/python-garminconnect/pyproject.toml +++ /dev/null @@ -1,92 +0,0 @@ -[project] -name = "garminconnect" -version = "0.2.28" -description = "Python 3 API wrapper for Garmin Connect" -authors = [ - {name = "Ron Klinkien", email = "ron@cyberjunky.nl"}, -] -dependencies = [ - "garth>=0.5.13,<0.6.0", -] -readme = "README.md" -license = {text = "MIT"} -classifiers = [ - "Programming Language :: Python :: 3", - "License :: OSI Approved :: MIT License", - "Operating System :: MacOS :: MacOS X", - "Operating System :: Microsoft :: Windows", - "Operating System :: POSIX :: Linux", -] -keywords=["garmin connect", "api", "garmin"] -requires-python=">=3.10" -[project.urls] -"Homepage" = "https://github.com/cyberjunky/python-garminconnect" -"Bug Tracker" = "https://github.com/cyberjunky/python-garminconnect/issues" - -[build-system] -requires = ["pdm-backend"] -build-backend = "pdm.backend" - -[tool.pytest.ini_options] -addopts = "--ignore=__pypackages__ --ignore-glob=*.yaml" - -[tool.mypy] -ignore_missing_imports = true - -[tool.isort] -multi_line_output = 3 -include_trailing_comma = true -force_grid_wrap = 0 -use_parentheses = true -line_length = 79 -known_first_party = "garminconnect" - -[project.optional-dependencies] -dev = [ - "ipython", - "ipdb", - "ipykernel", - "pandas", - "matplotlib", -] -linting = [ - "black", - "ruff", - "mypy", - "isort", - "types-requests", -] -testing = [ - "coverage", - "pytest", - "pytest-vcr", -] -example = [ - "readchar", -] - -[tool.pdm] -distribution = true -[tool.pdm.dev-dependencies] -dev = [ - "ipython", - "ipdb", - "ipykernel", - "pandas", - "matplotlib", -] -linting = [ - "black", - "ruff", - "mypy", - "isort", - "types-requests", -] -testing = [ - "coverage", - "pytest", - "pytest-vcr", -] -example = [ - "readchar", -] diff --git a/python-garminconnect/reference.ipynb b/python-garminconnect/reference.ipynb deleted file mode 100644 index f6a75cb..0000000 --- a/python-garminconnect/reference.ipynb +++ /dev/null @@ -1,529 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Garth Migration" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import garminconnect" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Login" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Request email and password. If MFA is enabled, Garth will request it." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'mtamizi'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from getpass import getpass\n", - "\n", - "email = input(\"Enter email address: \")\n", - "password = getpass(\"Enter password: \")\n", - "\n", - "garmin = garminconnect.Garmin(email, password)\n", - "garmin.login()\n", - "\n", - "garmin.display_name" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Save session" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "\n", - "GARTH_HOME = os.getenv(\"GARTH_HOME\", \"~/.garth\")\n", - "garmin.garth.dump(GARTH_HOME)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Get Connect stats" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'2023-09-19'" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from datetime import date, timedelta\n", - "\n", - "yesterday = date.today() - timedelta(days=1)\n", - "yesterday = yesterday.isoformat()\n", - "yesterday" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['userProfileId', 'totalKilocalories', 'activeKilocalories', 'bmrKilocalories', 'wellnessKilocalories', 'burnedKilocalories', 'consumedKilocalories', 'remainingKilocalories', 'totalSteps', 'netCalorieGoal', 'totalDistanceMeters', 'wellnessDistanceMeters', 'wellnessActiveKilocalories', 'netRemainingKilocalories', 'userDailySummaryId', 'calendarDate', 'rule', 'uuid', 'dailyStepGoal', 'totalPushDistance', 'totalPushes', 'wellnessStartTimeGmt', 'wellnessStartTimeLocal', 'wellnessEndTimeGmt', 'wellnessEndTimeLocal', 'durationInMilliseconds', 'wellnessDescription', 'highlyActiveSeconds', 'activeSeconds', 'sedentarySeconds', 'sleepingSeconds', 'includesWellnessData', 'includesActivityData', 'includesCalorieConsumedData', 'privacyProtected', 'moderateIntensityMinutes', 'vigorousIntensityMinutes', 'floorsAscendedInMeters', 'floorsDescendedInMeters', 'floorsAscended', 'floorsDescended', 'intensityMinutesGoal', 'userFloorsAscendedGoal', 'minHeartRate', 'maxHeartRate', 'restingHeartRate', 'lastSevenDaysAvgRestingHeartRate', 'source', 'averageStressLevel', 'maxStressLevel', 'stressDuration', 'restStressDuration', 'activityStressDuration', 'uncategorizedStressDuration', 'totalStressDuration', 'lowStressDuration', 'mediumStressDuration', 'highStressDuration', 'stressPercentage', 'restStressPercentage', 'activityStressPercentage', 'uncategorizedStressPercentage', 'lowStressPercentage', 'mediumStressPercentage', 'highStressPercentage', 'stressQualifier', 'measurableAwakeDuration', 'measurableAsleepDuration', 'lastSyncTimestampGMT', 'minAvgHeartRate', 'maxAvgHeartRate', 'bodyBatteryChargedValue', 'bodyBatteryDrainedValue', 'bodyBatteryHighestValue', 'bodyBatteryLowestValue', 'bodyBatteryMostRecentValue', 'bodyBatteryVersion', 'abnormalHeartRateAlertsCount', 'averageSpo2', 'lowestSpo2', 'latestSpo2', 'latestSpo2ReadingTimeGmt', 'latestSpo2ReadingTimeLocal', 'averageMonitoringEnvironmentAltitude', 'restingCaloriesFromActivity', 'avgWakingRespirationValue', 'highestRespirationValue', 'lowestRespirationValue', 'latestRespirationValue', 'latestRespirationTimeGMT'])" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_stats(yesterday).keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['userProfileId', 'totalKilocalories', 'activeKilocalories', 'bmrKilocalories', 'wellnessKilocalories', 'burnedKilocalories', 'consumedKilocalories', 'remainingKilocalories', 'totalSteps', 'netCalorieGoal', 'totalDistanceMeters', 'wellnessDistanceMeters', 'wellnessActiveKilocalories', 'netRemainingKilocalories', 'userDailySummaryId', 'calendarDate', 'rule', 'uuid', 'dailyStepGoal', 'totalPushDistance', 'totalPushes', 'wellnessStartTimeGmt', 'wellnessStartTimeLocal', 'wellnessEndTimeGmt', 'wellnessEndTimeLocal', 'durationInMilliseconds', 'wellnessDescription', 'highlyActiveSeconds', 'activeSeconds', 'sedentarySeconds', 'sleepingSeconds', 'includesWellnessData', 'includesActivityData', 'includesCalorieConsumedData', 'privacyProtected', 'moderateIntensityMinutes', 'vigorousIntensityMinutes', 'floorsAscendedInMeters', 'floorsDescendedInMeters', 'floorsAscended', 'floorsDescended', 'intensityMinutesGoal', 'userFloorsAscendedGoal', 'minHeartRate', 'maxHeartRate', 'restingHeartRate', 'lastSevenDaysAvgRestingHeartRate', 'source', 'averageStressLevel', 'maxStressLevel', 'stressDuration', 'restStressDuration', 'activityStressDuration', 'uncategorizedStressDuration', 'totalStressDuration', 'lowStressDuration', 'mediumStressDuration', 'highStressDuration', 'stressPercentage', 'restStressPercentage', 'activityStressPercentage', 'uncategorizedStressPercentage', 'lowStressPercentage', 'mediumStressPercentage', 'highStressPercentage', 'stressQualifier', 'measurableAwakeDuration', 'measurableAsleepDuration', 'lastSyncTimestampGMT', 'minAvgHeartRate', 'maxAvgHeartRate', 'bodyBatteryChargedValue', 'bodyBatteryDrainedValue', 'bodyBatteryHighestValue', 'bodyBatteryLowestValue', 'bodyBatteryMostRecentValue', 'bodyBatteryVersion', 'abnormalHeartRateAlertsCount', 'averageSpo2', 'lowestSpo2', 'latestSpo2', 'latestSpo2ReadingTimeGmt', 'latestSpo2ReadingTimeLocal', 'averageMonitoringEnvironmentAltitude', 'restingCaloriesFromActivity', 'avgWakingRespirationValue', 'highestRespirationValue', 'lowestRespirationValue', 'latestRespirationValue', 'latestRespirationTimeGMT'])" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_user_summary(yesterday).keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'startGMT': '2023-08-05T06:00:00.0',\n", - " 'endGMT': '2023-08-05T06:15:00.0',\n", - " 'steps': 0,\n", - " 'pushes': 0,\n", - " 'primaryActivityLevel': 'sedentary',\n", - " 'activityLevelConstant': True},\n", - " {'startGMT': '2023-08-05T06:15:00.0',\n", - " 'endGMT': '2023-08-05T06:30:00.0',\n", - " 'steps': 0,\n", - " 'pushes': 0,\n", - " 'primaryActivityLevel': 'sleeping',\n", - " 'activityLevelConstant': False}]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_steps_data(yesterday)[:2]" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['startTimestampGMT', 'endTimestampGMT', 'startTimestampLocal', 'endTimestampLocal', 'floorsValueDescriptorDTOList', 'floorValuesArray'])" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_floors(yesterday).keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'calendarDate': '2023-08-05',\n", - " 'totalSteps': 17945,\n", - " 'totalDistance': 14352,\n", - " 'stepGoal': 8560}]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_daily_steps(yesterday, yesterday)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['userProfilePK', 'calendarDate', 'startTimestampGMT', 'endTimestampGMT', 'startTimestampLocal', 'endTimestampLocal', 'maxHeartRate', 'minHeartRate', 'restingHeartRate', 'lastSevenDaysAvgRestingHeartRate', 'heartRateValueDescriptors', 'heartRateValues'])" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_heart_rates(yesterday).keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['userProfileId', 'totalKilocalories', 'activeKilocalories', 'bmrKilocalories', 'wellnessKilocalories', 'burnedKilocalories', 'consumedKilocalories', 'remainingKilocalories', 'totalSteps', 'netCalorieGoal', 'totalDistanceMeters', 'wellnessDistanceMeters', 'wellnessActiveKilocalories', 'netRemainingKilocalories', 'userDailySummaryId', 'calendarDate', 'rule', 'uuid', 'dailyStepGoal', 'totalPushDistance', 'totalPushes', 'wellnessStartTimeGmt', 'wellnessStartTimeLocal', 'wellnessEndTimeGmt', 'wellnessEndTimeLocal', 'durationInMilliseconds', 'wellnessDescription', 'highlyActiveSeconds', 'activeSeconds', 'sedentarySeconds', 'sleepingSeconds', 'includesWellnessData', 'includesActivityData', 'includesCalorieConsumedData', 'privacyProtected', 'moderateIntensityMinutes', 'vigorousIntensityMinutes', 'floorsAscendedInMeters', 'floorsDescendedInMeters', 'floorsAscended', 'floorsDescended', 'intensityMinutesGoal', 'userFloorsAscendedGoal', 'minHeartRate', 'maxHeartRate', 'restingHeartRate', 'lastSevenDaysAvgRestingHeartRate', 'source', 'averageStressLevel', 'maxStressLevel', 'stressDuration', 'restStressDuration', 'activityStressDuration', 'uncategorizedStressDuration', 'totalStressDuration', 'lowStressDuration', 'mediumStressDuration', 'highStressDuration', 'stressPercentage', 'restStressPercentage', 'activityStressPercentage', 'uncategorizedStressPercentage', 'lowStressPercentage', 'mediumStressPercentage', 'highStressPercentage', 'stressQualifier', 'measurableAwakeDuration', 'measurableAsleepDuration', 'lastSyncTimestampGMT', 'minAvgHeartRate', 'maxAvgHeartRate', 'bodyBatteryChargedValue', 'bodyBatteryDrainedValue', 'bodyBatteryHighestValue', 'bodyBatteryLowestValue', 'bodyBatteryMostRecentValue', 'bodyBatteryVersion', 'abnormalHeartRateAlertsCount', 'averageSpo2', 'lowestSpo2', 'latestSpo2', 'latestSpo2ReadingTimeGmt', 'latestSpo2ReadingTimeLocal', 'averageMonitoringEnvironmentAltitude', 'restingCaloriesFromActivity', 'avgWakingRespirationValue', 'highestRespirationValue', 'lowestRespirationValue', 'latestRespirationValue', 'latestRespirationTimeGMT', 'from', 'until', 'weight', 'bmi', 'bodyFat', 'bodyWater', 'boneMass', 'muscleMass', 'physiqueRating', 'visceralFat', 'metabolicAge'])" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_stats_and_body(yesterday).keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'startDate': '2023-08-05',\n", - " 'endDate': '2023-08-05',\n", - " 'dateWeightList': [],\n", - " 'totalAverage': {'from': 1691193600000,\n", - " 'until': 1691279999999,\n", - " 'weight': None,\n", - " 'bmi': None,\n", - " 'bodyFat': None,\n", - " 'bodyWater': None,\n", - " 'boneMass': None,\n", - " 'muscleMass': None,\n", - " 'physiqueRating': None,\n", - " 'visceralFat': None,\n", - " 'metabolicAge': None}}" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_body_composition(yesterday)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['date', 'charged', 'drained', 'startTimestampGMT', 'endTimestampGMT', 'startTimestampLocal', 'endTimestampLocal', 'bodyBatteryValuesArray', 'bodyBatteryValueDescriptorDTOList'])" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_body_battery(yesterday)[0].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'from': '2023-08-05',\n", - " 'until': '2023-08-05',\n", - " 'measurementSummaries': [],\n", - " 'categoryStats': None}" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_blood_pressure(yesterday)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_max_metrics(yesterday)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'userId': 2591602,\n", - " 'calendarDate': '2023-08-05',\n", - " 'valueInML': 0.0,\n", - " 'goalInML': 3437.0,\n", - " 'dailyAverageinML': None,\n", - " 'lastEntryTimestampLocal': '2023-08-05T12:25:27.0',\n", - " 'sweatLossInML': 637.0,\n", - " 'activityIntakeInML': 0.0}" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_hydration_data(yesterday)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['userProfilePK', 'calendarDate', 'startTimestampGMT', 'endTimestampGMT', 'startTimestampLocal', 'endTimestampLocal', 'sleepStartTimestampGMT', 'sleepEndTimestampGMT', 'sleepStartTimestampLocal', 'sleepEndTimestampLocal', 'tomorrowSleepStartTimestampGMT', 'tomorrowSleepEndTimestampGMT', 'tomorrowSleepStartTimestampLocal', 'tomorrowSleepEndTimestampLocal', 'lowestRespirationValue', 'highestRespirationValue', 'avgWakingRespirationValue', 'avgSleepRespirationValue', 'avgTomorrowSleepRespirationValue', 'respirationValueDescriptorsDTOList', 'respirationValuesArray'])" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_respiration_data(yesterday).keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['userProfilePK', 'calendarDate', 'startTimestampGMT', 'endTimestampGMT', 'startTimestampLocal', 'endTimestampLocal', 'sleepStartTimestampGMT', 'sleepEndTimestampGMT', 'sleepStartTimestampLocal', 'sleepEndTimestampLocal', 'tomorrowSleepStartTimestampGMT', 'tomorrowSleepEndTimestampGMT', 'tomorrowSleepStartTimestampLocal', 'tomorrowSleepEndTimestampLocal', 'averageSpO2', 'lowestSpO2', 'lastSevenDaysAvgSpO2', 'latestSpO2', 'latestSpO2TimestampGMT', 'latestSpO2TimestampLocal', 'avgSleepSpO2', 'avgTomorrowSleepSpO2', 'spO2ValueDescriptorsDTOList', 'spO2SingleValues', 'continuousReadingDTOList', 'spO2HourlyAverages'])" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_spo2_data(yesterday).keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'id': 1944943000,\n", - " 'typeId': 16,\n", - " 'activityId': 0,\n", - " 'activityName': None,\n", - " 'activityStartDateTimeInGMT': None,\n", - " 'actStartDateTimeInGMTFormatted': None,\n", - " 'activityStartDateTimeLocal': None,\n", - " 'activityStartDateTimeLocalFormatted': None,\n", - " 'value': 2.0,\n", - " 'prStartTimeGmt': 1691215200000,\n", - " 'prStartTimeGmtFormatted': '2023-08-05T06:00:00.0',\n", - " 'prStartTimeLocal': 1691193600000,\n", - " 'prStartTimeLocalFormatted': '2023-08-05T00:00:00.0',\n", - " 'prTypeLabelKey': None,\n", - " 'poolLengthUnit': None},\n", - " {'id': 2184086093,\n", - " 'typeId': 3,\n", - " 'activityId': 10161959373,\n", - " 'activityName': 'Cuauhtémoc - Threshold',\n", - " 'activityStartDateTimeInGMT': 1671549377000,\n", - " 'actStartDateTimeInGMTFormatted': '2022-12-20T15:16:17.0',\n", - " 'activityStartDateTimeLocal': 1671527777000,\n", - " 'activityStartDateTimeLocalFormatted': '2022-12-20T09:16:17.0',\n", - " 'value': 1413.6650390625,\n", - " 'prStartTimeGmt': 1671549990000,\n", - " 'prStartTimeGmtFormatted': '2022-12-20T15:26:30.0',\n", - " 'prStartTimeLocal': None,\n", - " 'prStartTimeLocalFormatted': None,\n", - " 'prTypeLabelKey': None,\n", - " 'poolLengthUnit': None}]" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_personal_record()[:2]" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[1695103200000, 'MEASURED', 42, 2.0],\n", - " [1695103380000, 'MEASURED', 42, 2.0],\n", - " [1695103560000, 'MEASURED', 42, 2.0],\n", - " [1695103740000, 'MEASURED', 43, 2.0],\n", - " [1695103920000, 'MEASURED', 43, 2.0],\n", - " [1695104100000, 'MEASURED', 43, 2.0],\n", - " [1695104280000, 'MEASURED', 43, 2.0],\n", - " [1695104460000, 'MEASURED', 44, 2.0],\n", - " [1695104640000, 'MEASURED', 44, 2.0],\n", - " [1695104820000, 'MEASURED', 44, 2.0]]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "garmin.get_all_day_stress(yesterday)['bodyBatteryValuesArray'][:10]" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/python-garminconnect/requirements-dev.txt b/python-garminconnect/requirements-dev.txt deleted file mode 100644 index 4fa08ac..0000000 --- a/python-garminconnect/requirements-dev.txt +++ /dev/null @@ -1,10 +0,0 @@ -garth==0.5.17 -readchar -requests -mypy -pdm -twine -pre-commit -isort -ruff -black \ No newline at end of file diff --git a/python-garminconnect/requirements-test.txt b/python-garminconnect/requirements-test.txt deleted file mode 100644 index fde00eb..0000000 --- a/python-garminconnect/requirements-test.txt +++ /dev/null @@ -1,4 +0,0 @@ -pytest -pytest-vcr -pytest-cov -coverage \ No newline at end of file diff --git a/python-garminconnect/tests/12129115726_ACTIVITY.fit b/python-garminconnect/tests/12129115726_ACTIVITY.fit deleted file mode 100644 index 9fba182c1e56bb43fe4a33b835a0da735e345196..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5289 zcmcIoYj9Q775>&b``(+}+&l;&2?>NtBoLlLR9;#VP(XYDr96Zdr*=fKzEGoL1!J3i zPC>Bms-2-N){as;)A5DVnN|v|)1vJUXWAc3A2aQYosQ#=`lCPkqviBl`*O%dAnHhW zCik4P&)#eAz1FwBwbp59dT8BuT7Wq#R;_>I?*m{fL~g%xNx>zeUe)K+Lx4s1JpAkC zH+S}@Y=S?P($p;l<{_so1*jL%NZ`bVp51zjoV5%ni~FxjC=_B%#{_{xLstSTrG~E} zmvHTzOCZYkDw-EWHmpRc2g`utwN~`pomT-XB%&N}_Y`Fl=W#;B|K-3q6e??Qmtwos zv7#-aIUC0z*3xtZ(1r!S!a-rSrpA`1*f?kU1>(!6beU;tjMY*#& z(Plx56k7#tqT>Y<^V%g^=2>hVQ=}=ex>c4Q{ny5u;)5>Juv7MMzqw3O5N|@Vj_f+R z;L2MYTPj>Hi$Ng77PJ4H;U}{YT$9?IE!G_fPNygCZO?w2m2p=;n98@C99|}++G>8 z#U;-T6l&DZQ@>dK<>pJLTrVe5D<}%;1SLUzwrBt%2*eJ-1VNWzlAv2~kzk5os$jZc zhG3>(mSDDEj^JX!T)}06`GN(4g@XQi3<#DAmIq@zNLs1+w%60LL z$Th}$Qzp1%qD!W`WCrGEkiLi% z4FJ*EQY1PqHFW5F(M5vAf-4GGLg*dc3N-QYKfTMB*eR9=l&9%#x~05odf;(}6$f0h)Fmria#B6nw$9krk5}K39ivaP*7R$0 zSmp-#99~y#%WkV>63S<_Y=pCSA8Bhr*uVa;=g;r_Q(LR#UI(nfG*Y2OS{FCFc&v-Z zxwzHE<6Y7bP~7E`i(E3r#ZVuqCkfUDOq4<#Zc*Q+!-O_5(WAqa^uY-N0<<7f%*;Z`Kih|IwFw8W!c50p?Jl?z2@eoJ?&;4$P0Bx$V|Gz!K> z=4kbs@4odW)BgEdx&djCUPzOYbEx>$Ks~Mv8B?5hF>{m2=Iil%mt5uIRZa0VO)&!o zorgIW)zuo@X5f_Ho5wR-IqmV>NK^3mHgkG(hG;P{1dQ%1TJ%`J&}pK*7Bec8a7N6a zlUx>J28n?lLRO%AEDd3UPI7e?Ggb@MRK<)9<~+Jtu+_o_w#%td!SJwC&~PvbARHoI zhMpbNfT7N%83@zRZ|_F=r#G!^x|6w5Uk8nnN70l_QBRCgrxge`2C`wMO3PBA)e*RnlQ`>m*zb`;ft4`;w1hl#kP-|4!bJPaqI(z* z42TEXH+H8lY~<rQQeHH}K5{={ne0hp{6=rG~7Fme8?@BQ`P9{u>%j zhBP?Ov_d_ZzmWGed2^Twk5+s}qhgL}w$0r}a>%k1+xJMz^lS=arhWqTbW@#>K=D*eco3P~-v&){?m61X8XxZN1ZAY@uDwq@^WqUXf7qDLTSjYDhr2P?i}uj5nabHLM<>0v0OLc)4eYoSyEgG@uQR!A6NY7C54nwB42{ZwNXHDdugVt2heMohF?aXHAs%A zA-k(^q_GcCYeScW*k5g)k^5}YhrOO)%6bNBbCbD(Ip^Gn{K+bOKQ1?paB<|~oU_kJ6+Fipp}Lupx3Hr) zlcs4wGsYh0df&NOG=AZlGwv?M6*vN&&=t0;__Jr%avC3lqz zJ6tm8^nRxgIDOFRPUjzTewRyjyW}aC9CGntx94YW4?`Cd>56KZG%=%QUeK21)s+N_ zN%fRaB+O7hOZ{y17pq^Rey#e=>bI!>wEEAhzg_(u>hDqS)yL`+^-rq*uKMq(|B?FV z)xW6zCG{_>e?|Rk>W`>@-Ap%<358UgUrg*%OqQ2fDLO~6NMx}H>&nlFZWU!YxlQyI z(OX5gi{2)Br|7*R_lbN#^$Nqns#@ONE{lnX+&Fh5X6G5KaET`(|Nx0HJkEL8u^MVRz+-n p^5{k_@y$\n\n \n - \ \n 2023-09-11T13:44:29.000Z\n - \ \n 4338.02\n - \ 0.0\n 151\n - \ \n 72\n \n - \ \n 96\n \n - \ Active\n Manual\n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 48\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 48\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 48\n \n - \ \n \n \n - \ \n \n \n - \ \n 48\n \n - \ \n \n \n - \ \n \n \n - \ \n 48\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 48\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 45\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 45\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 48\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 47\n \n - \ \n \n \n - \ \n \n \n - \ \n 46\n \n - \ \n \n \n - \ \n \n \n - \ \n 48\n \n - \ \n \n \n - \ \n \n \n - \ \n 48\n \n - \ \n \n \n - \ \n \n \n - \ \n 48\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 92\n \n - \ \n \n \n - \ \n \n \n - \ \n 92\n \n - \ \n \n \n - \ \n \n \n - \ \n 93\n \n - \ \n \n \n - \ \n \n \n - \ \n 93\n \n - \ \n \n \n - \ \n \n \n - \ \n 93\n \n - \ \n \n \n - \ \n \n \n - \ \n 94\n \n - \ \n \n \n - \ \n \n \n - \ \n 94\n \n - \ \n \n \n - \ \n \n \n - \ \n 94\n \n - \ \n \n \n - \ \n \n \n - \ \n 95\n \n - \ \n \n \n - \ \n \n \n - \ \n 94\n \n - \ \n \n \n - \ \n \n \n - \ \n 94\n \n - \ \n \n \n - \ \n \n \n - \ \n 95\n \n - \ \n \n \n - \ \n \n \n - \ \n 95\n \n - \ \n \n \n - \ \n \n \n - \ \n 95\n \n - \ \n \n \n - \ \n \n \n - \ \n 95\n \n - \ \n \n \n - \ \n \n \n - \ \n 96\n \n - \ \n \n \n - \ \n \n \n - \ \n 95\n \n - \ \n \n \n - \ \n \n \n - \ \n 96\n \n - \ \n \n \n - \ \n \n \n - \ \n 95\n \n - \ \n \n \n - \ \n \n \n - \ \n 95\n \n - \ \n \n \n - \ \n \n \n - \ \n 96\n \n - \ \n \n \n - \ \n \n \n - \ \n 94\n \n - \ \n \n \n - \ \n \n \n - \ \n 93\n \n - \ \n \n \n - \ \n \n \n - \ \n 93\n \n - \ \n \n \n - \ \n \n \n - \ \n 93\n \n - \ \n \n \n - \ \n \n \n - \ \n 92\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 90\n \n - \ \n \n \n - \ \n \n \n - \ \n 91\n \n - \ \n \n \n - \ \n \n \n - \ \n 92\n \n - \ \n \n \n - \ \n \n \n - \ \n 92\n \n - \ \n \n \n - \ \n \n \n - \ \n 92\n \n - \ \n \n \n - \ \n \n \n - \ \n 93\n \n - \ \n \n \n - \ \n \n \n - \ \n 93\n \n - \ \n \n \n - \ \n \n \n - \ \n 94\n \n - \ \n \n \n - \ \n \n \n - \ \n 95\n \n - \ \n \n \n - \ \n \n \n - \ \n 95\n \n - \ \n \n \n - \ \n \n \n - \ \n 96\n \n - \ \n \n \n - \ \n \n \n - \ \n 96\n \n - \ \n \n \n - \ \n \n \n - \ \n 96\n \n - \ \n \n \n - \ \n \n \n - \ \n 96\n \n - \ \n \n \n - \ \n \n \n - \ \n 96\n \n - \ \n \n \n - \ \n \n \n - \ \n 96\n \n - \ \n \n \n - \ \n \n \n - \ \n 96\n \n - \ \n \n \n - \ \n \n \n - \ \n 96\n \n - \ \n \n \n - \ \n \n \n - \ \n 96\n \n - \ \n \n \n - \ \n \n \n - \ \n 95\n \n - \ \n \n \n - \ \n \n \n - \ \n 95\n \n - \ \n \n \n - \ \n \n \n - \ \n 94\n \n - \ \n \n \n - \ \n \n \n - \ \n 93\n \n - \ \n \n \n - \ \n \n \n - \ \n 92\n \n - \ \n \n \n - \ \n \n \n - \ \n 92\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 89\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 66\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 68\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 71\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 88\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 87\n \n - \ \n \n \n - \ \n \n \n - \ \n 86\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 85\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 84\n \n - \ \n \n \n - \ \n \n \n - \ \n 83\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 82\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 81\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 80\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 79\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 78\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 77\n \n - \ \n \n \n - \ \n \n \n - \ \n 76\n \n - \ \n \n \n - \ \n \n \n - \ \n 75\n \n - \ \n \n \n - \ \n \n \n - \ \n 74\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 73\n \n - \ \n \n \n - \ \n \n \n - \ \n 72\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 70\n \n - \ \n \n \n - \ \n \n \n - \ \n 69\n \n - \ \n \n \n - \ \n \n \n - \ \n 67\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 49\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 50\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 51\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 52\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 53\n \n - \ \n \n \n - \ \n \n \n - \ \n 54\n \n - \ \n \n \n - \ \n \n \n - \ \n 55\n \n - \ \n \n \n - \ \n \n \n - \ \n 56\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 57\n \n - \ \n \n \n - \ \n \n \n - \ \n 58\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 59\n \n - \ \n \n \n - \ \n \n \n - \ \n 60\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 65\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 64\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 61\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 62\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n - \ \n 63\n \n - \ \n \n \n - \ \n \n \n \n - \ \n \n \n - \ fenix 6X Sapphire\n 3329978681\n - \ 3291\n \n 26\n - \ 0\n 0\n - \ 0\n \n \n - \ \n \n \n - \ Connect Api\n \n \n 0\n - \ 0\n 0\n - \ 0\n \n \n en\n - \ 006-D2449-00\n \n\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 80520992b990ea98-DFW - Connection: - - keep-alive - Content-Type: - - application/vnd.garmin.tcx+xml - Date: - - Mon, 11 Sep 2023 18:40:08 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=rvnC%2FcYg065EoSEomRiV7Oq%2FuwPFFhuPAmrhDEX%2B6i%2Fo5pabl%2B0mYJ7DUHhSH8Dp1qhHdKSWlf9YwtGDPpy1YT55JAAEesRGDtPXsdNl8KKLX0dxHSvJXof%2BgbxxI1zq45dBk2kWXg%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - content-disposition: - - attachment; filename=activity_11998957007.tcx - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTs=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -version: 1 diff --git a/python-garminconnect/tests/cassettes/test_floors.yaml b/python-garminconnect/tests/cassettes/test_floors.yaml deleted file mode 100644 index 52049db..0000000 --- a/python-garminconnect/tests/cassettes/test_floors.yaml +++ /dev/null @@ -1,208 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/userprofile/user-settings - response: - body: - string: '{"id": 2591602, "userData": {"gender": "MALE", "weight": 79800.0, "height": - 182.0, "timeFormat": "time_twenty_four_hr", "birthDate": "1984-10-17", "measurementSystem": - "metric", "activityLevel": null, "handedness": "RIGHT", "powerFormat": {"formatId": - 30, "formatKey": "watt", "minFraction": 0, "maxFraction": 0, "groupingUsed": - true, "displayFormat": null}, "heartRateFormat": {"formatId": 21, "formatKey": - "bpm", "minFraction": 0, "maxFraction": 0, "groupingUsed": false, "displayFormat": - null}, "firstDayOfWeek": {"dayId": 2, "dayName": "sunday", "sortOrder": 2, - "isPossibleFirstDay": true}, "vo2MaxRunning": 46.0, "vo2MaxCycling": null, - "lactateThresholdSpeed": 0.34722125000000004, "lactateThresholdHeartRate": - null, "diveNumber": null, "intensityMinutesCalcMethod": "AUTO", "moderateIntensityMinutesHrZone": - 3, "vigorousIntensityMinutesHrZone": 4, "hydrationMeasurementUnit": "milliliter", - "hydrationContainers": [], "hydrationAutoGoalEnabled": true, "firstbeatMaxStressScore": - null, "firstbeatCyclingLtTimestamp": null, "firstbeatRunningLtTimestamp": - 1044719868, "thresholdHeartRateAutoDetected": true, "ftpAutoDetected": null, - "trainingStatusPausedDate": null, "weatherLocation": {"useFixedLocation": - false, "latitude": null, "longitude": null, "locationName": null, "isoCountryCode": - null, "postalCode": null}, "golfDistanceUnit": "statute_us", "golfElevationUnit": - null, "golfSpeedUnit": null, "externalBottomTime": null}, "userSleep": {"sleepTime": - 80400, "defaultSleepTime": false, "wakeTime": 24000, "defaultWakeTime": false}, - "connectDate": null, "sourceType": null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f8740a48af1155e-QRO - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Fri, 18 Aug 2023 04:00:54 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=iYV7gIdYcQH86D%2B1SrhLDbvBU1beua9HcesS6kbu9jiIorHzXEtQVjoq49jR5udXvF3rCsKxWcURNblr%2FWyqhsirWC%2FiOfbWaxzB7ZAoozVD0QfB1DK5E1iU8bVsUO%2FQd%2F4sWjEDvQ%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - _cfuvid=SANITIZED; path=SANITIZED; domain=SANITIZED; HttpOnly; Secure; SameSite=SANITIZED - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/wellness-service/wellness/floorsChartData/daily/2023-07-01 - response: - body: - string: '{"startTimestampGMT": "2023-07-01T06:00:00.0", "endTimestampGMT": "2023-07-02T06:00:00.0", - "startTimestampLocal": "2023-07-01T00:00:00.0", "endTimestampLocal": "2023-07-02T00:00:00.0", - "floorsValueDescriptorDTOList": [{"key": "startTimeGMT", "index": 0}, {"key": - "endTimeGMT", "index": 1}, {"key": "floorsAscended", "index": 2}, {"key": - "floorsDescended", "index": 3}], "floorValuesArray": [["2023-07-01T06:00:00.0", - "2023-07-01T06:15:00.0", 0, 0], ["2023-07-01T06:15:00.0", "2023-07-01T06:30:00.0", - 0, 0], ["2023-07-01T06:30:00.0", "2023-07-01T06:45:00.0", 0, 0], ["2023-07-01T06:45:00.0", - "2023-07-01T07:00:00.0", 0, 0], ["2023-07-01T07:00:00.0", "2023-07-01T07:15:00.0", - 0, 0], ["2023-07-01T07:15:00.0", "2023-07-01T07:30:00.0", 0, 0], ["2023-07-01T07:30:00.0", - "2023-07-01T07:45:00.0", 0, 0], ["2023-07-01T07:45:00.0", "2023-07-01T08:00:00.0", - 0, 0], ["2023-07-01T08:00:00.0", "2023-07-01T08:15:00.0", 0, 0], ["2023-07-01T08:15:00.0", - "2023-07-01T08:30:00.0", 0, 0], ["2023-07-01T08:30:00.0", "2023-07-01T08:45:00.0", - 0, 0], ["2023-07-01T08:45:00.0", "2023-07-01T09:00:00.0", 0, 0], ["2023-07-01T09:00:00.0", - "2023-07-01T09:15:00.0", 0, 0], ["2023-07-01T09:15:00.0", "2023-07-01T09:30:00.0", - 0, 0], ["2023-07-01T09:30:00.0", "2023-07-01T09:45:00.0", 0, 0], ["2023-07-01T09:45:00.0", - "2023-07-01T10:00:00.0", 0, 0], ["2023-07-01T10:00:00.0", "2023-07-01T10:15:00.0", - 0, 0], ["2023-07-01T10:15:00.0", "2023-07-01T10:30:00.0", 0, 0], ["2023-07-01T10:30:00.0", - "2023-07-01T10:45:00.0", 0, 0], ["2023-07-01T10:45:00.0", "2023-07-01T11:00:00.0", - 0, 0], ["2023-07-01T11:00:00.0", "2023-07-01T11:15:00.0", 0, 0], ["2023-07-01T11:15:00.0", - "2023-07-01T11:30:00.0", 0, 1], ["2023-07-01T11:30:00.0", "2023-07-01T11:45:00.0", - 0, 0], ["2023-07-01T11:45:00.0", "2023-07-01T12:00:00.0", 1, 0], ["2023-07-01T12:00:00.0", - "2023-07-01T12:15:00.0", 0, 0], ["2023-07-01T12:15:00.0", "2023-07-01T12:30:00.0", - 0, 0], ["2023-07-01T12:30:00.0", "2023-07-01T12:45:00.0", 0, 0], ["2023-07-01T12:45:00.0", - "2023-07-01T13:00:00.0", 1, 1], ["2023-07-01T13:00:00.0", "2023-07-01T13:15:00.0", - 0, 0], ["2023-07-01T13:15:00.0", "2023-07-01T13:30:00.0", 0, 0], ["2023-07-01T13:30:00.0", - "2023-07-01T13:45:00.0", 0, 1], ["2023-07-01T13:45:00.0", "2023-07-01T14:00:00.0", - 0, 0], ["2023-07-01T14:00:00.0", "2023-07-01T14:15:00.0", 1, 2], ["2023-07-01T14:15:00.0", - "2023-07-01T14:30:00.0", 0, 0], ["2023-07-01T14:30:00.0", "2023-07-01T14:45:00.0", - 0, 0], ["2023-07-01T14:45:00.0", "2023-07-01T15:00:00.0", 0, 0], ["2023-07-01T15:00:00.0", - "2023-07-01T15:15:00.0", 0, 0], ["2023-07-01T15:15:00.0", "2023-07-01T15:30:00.0", - 0, 0], ["2023-07-01T15:30:00.0", "2023-07-01T15:45:00.0", 1, 0], ["2023-07-01T15:45:00.0", - "2023-07-01T16:00:00.0", 0, 0], ["2023-07-01T16:00:00.0", "2023-07-01T16:15:00.0", - 0, 0], ["2023-07-01T16:15:00.0", "2023-07-01T16:30:00.0", 0, 0], ["2023-07-01T16:30:00.0", - "2023-07-01T16:45:00.0", 0, 0], ["2023-07-01T16:45:00.0", "2023-07-01T17:00:00.0", - 0, 0], ["2023-07-01T17:00:00.0", "2023-07-01T17:15:00.0", 3, 1], ["2023-07-01T17:15:00.0", - "2023-07-01T17:30:00.0", 0, 0], ["2023-07-01T17:30:00.0", "2023-07-01T17:45:00.0", - 0, 0], ["2023-07-01T17:45:00.0", "2023-07-01T18:00:00.0", 0, 0], ["2023-07-01T18:00:00.0", - "2023-07-01T18:15:00.0", 0, 0], ["2023-07-01T18:15:00.0", "2023-07-01T18:30:00.0", - 0, 0], ["2023-07-01T18:30:00.0", "2023-07-01T18:45:00.0", 0, 0], ["2023-07-01T18:45:00.0", - "2023-07-01T19:00:00.0", 1, 0], ["2023-07-01T19:00:00.0", "2023-07-01T19:15:00.0", - 0, 0], ["2023-07-01T19:15:00.0", "2023-07-01T19:30:00.0", 0, 1], ["2023-07-01T19:30:00.0", - "2023-07-01T19:45:00.0", 0, 4], ["2023-07-01T19:45:00.0", "2023-07-01T20:00:00.0", - 0, 0], ["2023-07-01T20:00:00.0", "2023-07-01T20:15:00.0", 0, 0], ["2023-07-01T20:15:00.0", - "2023-07-01T20:30:00.0", 0, 0], ["2023-07-01T20:30:00.0", "2023-07-01T20:45:00.0", - 0, 0], ["2023-07-01T20:45:00.0", "2023-07-01T21:00:00.0", 0, 0], ["2023-07-01T21:00:00.0", - "2023-07-01T21:15:00.0", 1, 2], ["2023-07-01T21:15:00.0", "2023-07-01T21:30:00.0", - 0, 0], ["2023-07-01T21:30:00.0", "2023-07-01T21:45:00.0", 0, 0], ["2023-07-01T21:45:00.0", - "2023-07-01T22:00:00.0", 0, 0], ["2023-07-01T22:00:00.0", "2023-07-01T22:15:00.0", - 0, 0], ["2023-07-01T22:15:00.0", "2023-07-01T22:30:00.0", 0, 0], ["2023-07-01T22:30:00.0", - "2023-07-01T22:45:00.0", 0, 0], ["2023-07-01T22:45:00.0", "2023-07-01T23:00:00.0", - 0, 0], ["2023-07-01T23:00:00.0", "2023-07-01T23:15:00.0", 0, 0], ["2023-07-01T23:15:00.0", - "2023-07-01T23:30:00.0", 0, 0], ["2023-07-01T23:30:00.0", "2023-07-01T23:45:00.0", - 0, 0], ["2023-07-01T23:45:00.0", "2023-07-02T00:00:00.0", 2, 0], ["2023-07-02T00:00:00.0", - "2023-07-02T00:15:00.0", 0, 0], ["2023-07-02T00:15:00.0", "2023-07-02T00:30:00.0", - 2, 0], ["2023-07-02T00:30:00.0", "2023-07-02T00:45:00.0", 0, 0], ["2023-07-02T00:45:00.0", - "2023-07-02T01:00:00.0", 2, 2], ["2023-07-02T01:00:00.0", "2023-07-02T01:15:00.0", - 1, 1], ["2023-07-02T01:15:00.0", "2023-07-02T01:30:00.0", 0, 0], ["2023-07-02T01:30:00.0", - "2023-07-02T01:45:00.0", 0, 2], ["2023-07-02T01:45:00.0", "2023-07-02T02:00:00.0", - 4, 2], ["2023-07-02T02:00:00.0", "2023-07-02T02:15:00.0", 0, 0], ["2023-07-02T02:15:00.0", - "2023-07-02T02:30:00.0", 0, 0], ["2023-07-02T02:30:00.0", "2023-07-02T02:45:00.0", - 0, 0], ["2023-07-02T02:45:00.0", "2023-07-02T03:00:00.0", 0, 0], ["2023-07-02T03:00:00.0", - "2023-07-02T03:15:00.0", 0, 0], ["2023-07-02T03:15:00.0", "2023-07-02T03:30:00.0", - 0, 0], ["2023-07-02T03:30:00.0", "2023-07-02T03:45:00.0", 0, 1], ["2023-07-02T03:45:00.0", - "2023-07-02T04:00:00.0", 4, 1], ["2023-07-02T04:00:00.0", "2023-07-02T04:15:00.0", - 0, 0], ["2023-07-02T04:15:00.0", "2023-07-02T04:30:00.0", 0, 0], ["2023-07-02T04:30:00.0", - "2023-07-02T04:45:00.0", 0, 0], ["2023-07-02T04:45:00.0", "2023-07-02T05:00:00.0", - 0, 0], ["2023-07-02T05:00:00.0", "2023-07-02T05:15:00.0", 0, 2], ["2023-07-02T05:15:00.0", - "2023-07-02T05:30:00.0", 0, 0], ["2023-07-02T05:30:00.0", "2023-07-02T05:45:00.0", - 5, 5], ["2023-07-02T05:45:00.0", "2023-07-02T06:00:00.0", 0, 0]]}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f8740a6ef41463e-DFW - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Fri, 18 Aug 2023 04:00:54 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=lxY7Q%2BGKPaXN2DpJu8%2BCjHI6CMPtwvhQDlFrjA09aAG4aIAy2bUBICGsi4T688SrIsoayL3lZGWnqNIjzdm0ybZ9Tlry3M30rNTNppkI1wNRZIkQj3NfukAtdH0SDXkaTpB%2F5hpM7g%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -version: 1 diff --git a/python-garminconnect/tests/cassettes/test_heart_rates.yaml b/python-garminconnect/tests/cassettes/test_heart_rates.yaml deleted file mode 100644 index 3a4bbe0..0000000 --- a/python-garminconnect/tests/cassettes/test_heart_rates.yaml +++ /dev/null @@ -1,417 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/socialProfile - response: - body: - string: '{"id": 3154645, "profileId": 2591602, "garminGUID": "0690cc1d-d23d-4412-b027-80fd4ed1c0f6", - "displayName": "mtamizi", "fullName": "Matin Tamizi", "userName": "mtamizi", - "profileImageUuid": "73240e81-6e4d-43fc-8af8-c8f6c51b3b8f", "profileImageUrlLarge": - "https://s3.amazonaws.com/garmin-connect-prod/profile_images/73240e81-6e4d-43fc-8af8-c8f6c51b3b8f-2591602.png", - "profileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/685a19e9-a7be-4a11-9bf9-faca0c5d1f1a-2591602.png", - "profileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/6302f021-0ec7-4dc9-b0c3-d5a19bc5a08c-2591602.png", - "location": "Ciudad de M\u00e9xico, CDMX", "facebookUrl": null, "twitterUrl": - null, "personalWebsite": null, "motivation": null, "bio": null, "primaryActivity": - null, "favoriteActivityTypes": [], "runningTrainingSpeed": 0.0, "cyclingTrainingSpeed": - 0.0, "favoriteCyclingActivityTypes": [], "cyclingClassification": null, "cyclingMaxAvgPower": - 0.0, "swimmingTrainingSpeed": 0.0, "profileVisibility": "private", "activityStartVisibility": - "private", "activityMapVisibility": "public", "courseVisibility": "public", - "activityHeartRateVisibility": "public", "activityPowerVisibility": "public", - "badgeVisibility": "private", "showAge": false, "showWeight": false, "showHeight": - false, "showWeightClass": false, "showAgeRange": false, "showGender": false, - "showActivityClass": false, "showVO2Max": false, "showPersonalRecords": false, - "showLast12Months": false, "showLifetimeTotals": false, "showUpcomingEvents": - false, "showRecentFavorites": false, "showRecentDevice": false, "showRecentGear": - false, "showBadges": true, "otherActivity": null, "otherPrimaryActivity": - null, "otherMotivation": null, "userRoles": ["SCOPE_ATP_READ", "SCOPE_ATP_WRITE", - "SCOPE_COMMUNITY_COURSE_READ", "SCOPE_COMMUNITY_COURSE_WRITE", "SCOPE_CONNECT_READ", - "SCOPE_CONNECT_WRITE", "SCOPE_DT_CLIENT_ANALYTICS_WRITE", "SCOPE_GARMINPAY_READ", - "SCOPE_GARMINPAY_WRITE", "SCOPE_GCOFFER_READ", "SCOPE_GCOFFER_WRITE", "SCOPE_GHS_SAMD", - "SCOPE_GHS_UPLOAD", "SCOPE_GOLF_API_READ", "SCOPE_GOLF_API_WRITE", "SCOPE_INSIGHTS_READ", - "SCOPE_INSIGHTS_WRITE", "SCOPE_PRODUCT_SEARCH_READ", "ROLE_CONNECTUSER", "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", "ROLE_OUTDOOR_USER", "ROLE_CONNECT_2_USER", "ROLE_TACX_APP_USER"], - "nameApproved": true, "userProfileFullName": "Matin Tamizi", "makeGolfScorecardsPrivate": - true, "allowGolfLiveScoring": false, "allowGolfScoringByConnections": true, - "userLevel": 3, "userPoint": 117, "levelUpdateDate": "2020-12-12T15:20:38.0", - "levelIsViewed": false, "levelPointThreshold": 140, "userPointOffset": 0, - "userPro": false}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f8a4dfd38ceb6ee-QRO - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Fri, 18 Aug 2023 12:54:18 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=La2NeCtpgizXPwqTA6hQIqHxHZp3Q7NKoQpteVkisyVSSERbgN4lDUZ5tc2dxWena37ZPgY12J0dvwsfCGcoI9A1Y2s%2F%2FLMzXlGcsUBNyuYhaYlcBiD%2BBRQKODoqJCYIrgUi5GoFmA%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - _cfuvid=SANITIZED; path=SANITIZED; domain=SANITIZED; HttpOnly; Secure; SameSite=SANITIZED - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/userprofile/user-settings - response: - body: - string: '{"id": 2591602, "userData": {"gender": "MALE", "weight": 79800.0, "height": - 182.0, "timeFormat": "time_twenty_four_hr", "birthDate": "1984-10-17", "measurementSystem": - "metric", "activityLevel": null, "handedness": "RIGHT", "powerFormat": {"formatId": - 30, "formatKey": "watt", "minFraction": 0, "maxFraction": 0, "groupingUsed": - true, "displayFormat": null}, "heartRateFormat": {"formatId": 21, "formatKey": - "bpm", "minFraction": 0, "maxFraction": 0, "groupingUsed": false, "displayFormat": - null}, "firstDayOfWeek": {"dayId": 2, "dayName": "sunday", "sortOrder": 2, - "isPossibleFirstDay": true}, "vo2MaxRunning": 46.0, "vo2MaxCycling": null, - "lactateThresholdSpeed": 0.34722125000000004, "lactateThresholdHeartRate": - null, "diveNumber": null, "intensityMinutesCalcMethod": "AUTO", "moderateIntensityMinutesHrZone": - 3, "vigorousIntensityMinutesHrZone": 4, "hydrationMeasurementUnit": "milliliter", - "hydrationContainers": [], "hydrationAutoGoalEnabled": true, "firstbeatMaxStressScore": - null, "firstbeatCyclingLtTimestamp": null, "firstbeatRunningLtTimestamp": - 1044719868, "thresholdHeartRateAutoDetected": true, "ftpAutoDetected": null, - "trainingStatusPausedDate": null, "weatherLocation": {"useFixedLocation": - false, "latitude": null, "longitude": null, "locationName": null, "isoCountryCode": - null, "postalCode": null}, "golfDistanceUnit": "statute_us", "golfElevationUnit": - null, "golfSpeedUnit": null, "externalBottomTime": null}, "userSleep": {"sleepTime": - 80400, "defaultSleepTime": false, "wakeTime": 24000, "defaultWakeTime": false}, - "connectDate": null, "sourceType": null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f8a4dfdf980b6e5-QRO - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Fri, 18 Aug 2023 12:54:18 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=I5KMiCopdLs1oRVeXXMDAPzqBe%2BvuJTYtO%2BiQ3BjpTVhWpMicJVwZ%2BQ6MKe2rMgrLFD%2FcnikpBSUW7ePlKyy2IKZJSMzxgCzIIOemxy8o70roRlr9CH2xD7rMqhMEpRsErmGVmDyaQ%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/wellness-service/wellness/dailyHeartRate/mtamizi?date=2023-07-01 - response: - body: - string: '{"userProfilePK": 2591602, "calendarDate": "2023-07-01", "startTimestampGMT": - "2023-07-01T06:00:00.0", "endTimestampGMT": "2023-07-02T06:00:00.0", "startTimestampLocal": - "2023-07-01T00:00:00.0", "endTimestampLocal": "2023-07-02T00:00:00.0", "maxHeartRate": - 106, "minHeartRate": 49, "restingHeartRate": 51, "lastSevenDaysAvgRestingHeartRate": - 49, "heartRateValueDescriptors": [{"key": "timestamp", "index": 0}, {"key": - "heartrate", "index": 1}], "heartRateValues": [[1688191200000, 56], [1688191320000, - 57], [1688191440000, 56], [1688191560000, 56], [1688191680000, 57], [1688191800000, - 59], [1688191920000, 58], [1688192040000, 59], [1688192160000, 60], [1688192280000, - 57], [1688192400000, 57], [1688192520000, 60], [1688192640000, 59], [1688192760000, - 58], [1688192880000, 58], [1688193000000, 59], [1688193120000, 59], [1688193240000, - 61], [1688193360000, 58], [1688193480000, 58], [1688193600000, 58], [1688193720000, - 58], [1688193840000, 59], [1688193960000, 58], [1688194080000, 57], [1688194200000, - 58], [1688194320000, 58], [1688194440000, 57], [1688194560000, 60], [1688194680000, - 62], [1688194800000, 57], [1688194920000, 57], [1688195040000, 56], [1688195160000, - 55], [1688195280000, 55], [1688195400000, 55], [1688195520000, 54], [1688195640000, - 54], [1688195760000, 54], [1688195880000, 55], [1688196000000, 55], [1688196120000, - 54], [1688196240000, 55], [1688196360000, 54], [1688196480000, 55], [1688196600000, - 54], [1688196720000, 54], [1688196840000, 54], [1688196960000, 54], [1688197080000, - 54], [1688197200000, 55], [1688197320000, 55], [1688197440000, 55], [1688197560000, - 55], [1688197680000, 53], [1688197800000, 55], [1688197920000, 54], [1688198040000, - 54], [1688198160000, 56], [1688198280000, 54], [1688198400000, 54], [1688198520000, - 54], [1688198640000, 55], [1688198760000, 54], [1688198880000, 54], [1688199000000, - 54], [1688199120000, 55], [1688199240000, 55], [1688199360000, 55], [1688199480000, - 55], [1688199600000, 55], [1688199720000, 54], [1688199840000, 54], [1688199960000, - 54], [1688200080000, 52], [1688200200000, 53], [1688200320000, 53], [1688200440000, - 53], [1688200560000, 53], [1688200680000, 53], [1688200800000, 53], [1688200920000, - 53], [1688201040000, 53], [1688201160000, 53], [1688201280000, 53], [1688201400000, - 53], [1688201520000, 53], [1688201640000, 52], [1688201760000, 53], [1688201880000, - 53], [1688202000000, 52], [1688202120000, 53], [1688202240000, 54], [1688202360000, - 52], [1688202480000, 53], [1688202600000, 51], [1688202720000, 52], [1688202840000, - 52], [1688202960000, 53], [1688203080000, 52], [1688203200000, 52], [1688203320000, - 52], [1688203440000, 52], [1688203560000, 51], [1688203680000, 51], [1688203800000, - 50], [1688203920000, 51], [1688204040000, 52], [1688204160000, 52], [1688204280000, - 52], [1688204400000, 53], [1688204520000, 53], [1688204640000, 51], [1688204760000, - 53], [1688204880000, 51], [1688205000000, 51], [1688205120000, 51], [1688205240000, - 51], [1688205360000, 51], [1688205480000, 51], [1688205600000, 51], [1688205720000, - 51], [1688205840000, 53], [1688205960000, 51], [1688206080000, 52], [1688206200000, - 53], [1688206320000, 52], [1688206440000, 52], [1688206560000, 52], [1688206680000, - 52], [1688206800000, 52], [1688206920000, 53], [1688207040000, 52], [1688207160000, - 53], [1688207280000, 52], [1688207400000, 52], [1688207520000, 54], [1688207640000, - 53], [1688207760000, 52], [1688207880000, 53], [1688208000000, 52], [1688208120000, - 53], [1688208240000, 53], [1688208360000, 55], [1688208480000, 53], [1688208600000, - 52], [1688208720000, 50], [1688208840000, 52], [1688208960000, 52], [1688209080000, - 54], [1688209200000, 49], [1688209320000, null], [1688209440000, 67], [1688209560000, - 53], [1688209680000, 51], [1688209800000, 52], [1688209920000, 51], [1688210040000, - 51], [1688210160000, 51], [1688210280000, 52], [1688210400000, 52], [1688210520000, - 52], [1688210640000, 54], [1688210760000, 56], [1688210880000, 59], [1688211000000, - 75], [1688211120000, 79], [1688211240000, 84], [1688211360000, 90], [1688211480000, - 84], [1688211600000, 77], [1688211720000, 88], [1688211840000, 78], [1688211960000, - 83], [1688212080000, 62], [1688212200000, 56], [1688212320000, 53], [1688212440000, - 53], [1688212560000, 53], [1688212680000, 55], [1688212800000, 56], [1688212920000, - 59], [1688213040000, 55], [1688213160000, 60], [1688213280000, 57], [1688213400000, - 58], [1688213520000, 56], [1688213640000, 56], [1688213760000, 57], [1688213880000, - 55], [1688214000000, 55], [1688214120000, 57], [1688214240000, 58], [1688214360000, - 69], [1688214480000, 72], [1688214600000, 78], [1688214720000, 79], [1688214840000, - 77], [1688214960000, 72], [1688215080000, 75], [1688215200000, 77], [1688215320000, - 72], [1688215440000, 75], [1688215560000, 74], [1688215680000, 77], [1688215800000, - 75], [1688215920000, 73], [1688216040000, 77], [1688216160000, 73], [1688216280000, - 72], [1688216400000, 78], [1688216520000, 78], [1688216640000, 72], [1688216760000, - 73], [1688216880000, 75], [1688217000000, 77], [1688217120000, 71], [1688217240000, - 74], [1688217360000, 74], [1688217480000, 72], [1688217600000, 73], [1688217720000, - 71], [1688217840000, 74], [1688217960000, 72], [1688218080000, 75], [1688218200000, - 78], [1688218320000, 73], [1688218440000, 89], [1688218560000, 96], [1688218680000, - 102], [1688218800000, 91], [1688218920000, 91], [1688219040000, 87], [1688219160000, - 81], [1688219280000, 71], [1688219400000, 73], [1688219520000, 84], [1688219640000, - 85], [1688219760000, 96], [1688219880000, 72], [1688220000000, 89], [1688220120000, - 75], [1688220240000, 74], [1688220360000, 70], [1688220480000, 75], [1688220600000, - 75], [1688220720000, 90], [1688220840000, 94], [1688220960000, 78], [1688221080000, - 85], [1688221200000, 93], [1688221320000, 90], [1688221440000, 96], [1688221560000, - 103], [1688221680000, 97], [1688221800000, 92], [1688221920000, 92], [1688222040000, - 86], [1688222160000, 84], [1688222280000, 83], [1688222400000, 86], [1688222520000, - 72], [1688222640000, 65], [1688222760000, 63], [1688222880000, 61], [1688223000000, - 70], [1688223120000, 75], [1688223240000, 77], [1688223360000, 75], [1688223480000, - 70], [1688223600000, 73], [1688223720000, 77], [1688223840000, 80], [1688223960000, - 78], [1688224080000, 70], [1688224200000, 77], [1688224320000, 76], [1688224440000, - 79], [1688224560000, 77], [1688224680000, 74], [1688224800000, 75], [1688224920000, - 72], [1688225040000, 71], [1688225160000, 70], [1688225280000, 76], [1688225400000, - 70], [1688225520000, 75], [1688225640000, 80], [1688225760000, 78], [1688225880000, - 80], [1688226000000, 80], [1688226120000, 76], [1688226240000, 81], [1688226360000, - 81], [1688226480000, 84], [1688226600000, 93], [1688226720000, 90], [1688226840000, - 93], [1688226960000, 77], [1688227080000, 68], [1688227200000, 67], [1688227320000, - 90], [1688227440000, 85], [1688227560000, 83], [1688227680000, 83], [1688227800000, - 77], [1688227920000, 74], [1688228040000, 69], [1688228160000, 76], [1688228280000, - 62], [1688228400000, 74], [1688228520000, 61], [1688228640000, 61], [1688228760000, - 65], [1688228880000, 68], [1688229000000, 64], [1688229120000, 63], [1688229240000, - 74], [1688229360000, 76], [1688229480000, 73], [1688229600000, 77], [1688229720000, - 77], [1688229840000, 77], [1688229960000, 73], [1688230080000, 78], [1688230200000, - 77], [1688230320000, 79], [1688230440000, 86], [1688230560000, 84], [1688230680000, - 77], [1688230800000, 80], [1688230920000, 73], [1688231040000, 59], [1688231160000, - 54], [1688231280000, 55], [1688231400000, 68], [1688231520000, 76], [1688231640000, - 62], [1688231760000, 67], [1688231880000, 64], [1688232000000, 61], [1688232120000, - 62], [1688232240000, 66], [1688232360000, 66], [1688232480000, 64], [1688232600000, - 66], [1688232720000, 63], [1688232840000, 73], [1688232960000, 68], [1688233080000, - 65], [1688233200000, 67], [1688233320000, 67], [1688233440000, 68], [1688233560000, - 67], [1688233680000, 71], [1688233800000, 68], [1688233920000, 70], [1688234040000, - 69], [1688234160000, 69], [1688234280000, 65], [1688234400000, 70], [1688234520000, - 66], [1688234640000, 69], [1688234760000, 71], [1688234880000, 66], [1688235000000, - 69], [1688235120000, 67], [1688235240000, 67], [1688235360000, 67], [1688235480000, - 72], [1688235600000, 71], [1688235720000, 76], [1688235840000, 74], [1688235960000, - 69], [1688236080000, 71], [1688236200000, 70], [1688236320000, 69], [1688236440000, - 73], [1688236560000, 73], [1688236680000, 73], [1688236800000, 71], [1688236920000, - 72], [1688237040000, 74], [1688237160000, 74], [1688237280000, 73], [1688237400000, - 71], [1688237520000, 72], [1688237640000, 75], [1688237760000, 73], [1688237880000, - 79], [1688238000000, null], [1688238960000, 84], [1688239080000, null], [1688239440000, - 86], [1688239560000, 91], [1688239680000, 74], [1688239800000, 62], [1688239920000, - 77], [1688240040000, 84], [1688240160000, 83], [1688240280000, 73], [1688240400000, - 89], [1688240520000, 88], [1688240640000, 81], [1688240760000, 87], [1688240880000, - 85], [1688241000000, 94], [1688241120000, 93], [1688241240000, 95], [1688241360000, - 90], [1688241480000, 70], [1688241600000, 60], [1688241720000, 57], [1688241840000, - 60], [1688241960000, 61], [1688242080000, 67], [1688242200000, 64], [1688242320000, - 62], [1688242440000, 62], [1688242560000, 63], [1688242680000, 66], [1688242800000, - 74], [1688242920000, 75], [1688243040000, 86], [1688243160000, 78], [1688243280000, - 74], [1688243400000, 65], [1688243520000, 59], [1688243640000, 61], [1688243760000, - 67], [1688243880000, 64], [1688244000000, 66], [1688244120000, 63], [1688244240000, - 63], [1688244360000, 65], [1688244480000, 70], [1688244600000, 66], [1688244720000, - 65], [1688244840000, 85], [1688244960000, 67], [1688245080000, 60], [1688245200000, - 68], [1688245320000, 75], [1688245440000, 77], [1688245560000, 76], [1688245680000, - 76], [1688245800000, 75], [1688245920000, 70], [1688246040000, 70], [1688246160000, - 71], [1688246280000, 70], [1688246400000, 72], [1688246520000, 67], [1688246640000, - 69], [1688246760000, 70], [1688246880000, 71], [1688247000000, 69], [1688247120000, - 67], [1688247240000, 69], [1688247360000, 67], [1688247480000, 71], [1688247600000, - 66], [1688247720000, 85], [1688247840000, 91], [1688247960000, 84], [1688248080000, - 89], [1688248200000, 77], [1688248320000, 85], [1688248440000, 94], [1688248560000, - 106], [1688248680000, 106], [1688248800000, 87], [1688248920000, 71], [1688249040000, - 69], [1688249160000, 78], [1688249280000, 84], [1688249400000, 87], [1688249520000, - 86], [1688249640000, 84], [1688249760000, 84], [1688249880000, 78], [1688250000000, - 85], [1688250120000, 89], [1688250240000, 92], [1688250360000, 91], [1688250480000, - 87], [1688250600000, 85], [1688250720000, 85], [1688250840000, 85], [1688250960000, - 83], [1688251080000, 81], [1688251200000, 88], [1688251320000, 91], [1688251440000, - 87], [1688251560000, 91], [1688251680000, 86], [1688251800000, 85], [1688251920000, - 77], [1688252040000, 78], [1688252160000, 86], [1688252280000, 79], [1688252400000, - 79], [1688252520000, 89], [1688252640000, 82], [1688252760000, 79], [1688252880000, - 77], [1688253000000, 82], [1688253120000, 76], [1688253240000, 79], [1688253360000, - 83], [1688253480000, 80], [1688253600000, 82], [1688253720000, 73], [1688253840000, - 72], [1688253960000, 73], [1688254080000, 76], [1688254200000, 76], [1688254320000, - 94], [1688254440000, 94], [1688254560000, 84], [1688254680000, 85], [1688254800000, - 90], [1688254920000, 94], [1688255040000, 87], [1688255160000, 80], [1688255280000, - 85], [1688255400000, 86], [1688255520000, 97], [1688255640000, 96], [1688255760000, - 85], [1688255880000, 76], [1688256000000, 71], [1688256120000, 75], [1688256240000, - 74], [1688256360000, 74], [1688256480000, 70], [1688256600000, 69], [1688256720000, - 69], [1688256840000, 69], [1688256960000, 70], [1688257080000, 73], [1688257200000, - 73], [1688257320000, 74], [1688257440000, 80], [1688257560000, 94], [1688257680000, - 102], [1688257800000, 85], [1688257920000, 74], [1688258040000, 71], [1688258160000, - 71], [1688258280000, 70], [1688258400000, 72], [1688258520000, 69], [1688258640000, - 70], [1688258760000, 69], [1688258880000, 69], [1688259000000, 71], [1688259120000, - 88], [1688259240000, 93], [1688259360000, 82], [1688259480000, 80], [1688259600000, - 76], [1688259720000, 73], [1688259840000, 93], [1688259960000, 84], [1688260080000, - 70], [1688260200000, 67], [1688260320000, 72], [1688260440000, 76], [1688260560000, - 71], [1688260680000, 70], [1688260800000, 73], [1688260920000, 71], [1688261040000, - 71], [1688261160000, 70], [1688261280000, 74], [1688261400000, 78], [1688261520000, - 74], [1688261640000, 70], [1688261760000, 72], [1688261880000, 78], [1688262000000, - 97], [1688262120000, 96], [1688262240000, 101], [1688262360000, 85], [1688262480000, - 88], [1688262600000, 93], [1688262720000, 72], [1688262840000, 84], [1688262960000, - 92], [1688263080000, 96], [1688263200000, 88], [1688263320000, 81], [1688263440000, - 79], [1688263560000, 76], [1688263680000, 78], [1688263800000, 79], [1688263920000, - 80], [1688264040000, 78], [1688264160000, 77], [1688264280000, 84], [1688264400000, - 77], [1688264520000, 80], [1688264640000, 77], [1688264760000, 78], [1688264880000, - 77], [1688265000000, 89], [1688265120000, 88], [1688265240000, 85], [1688265360000, - 80], [1688265480000, 73], [1688265600000, 76], [1688265720000, 74], [1688265840000, - 76], [1688265960000, 77], [1688266080000, 77], [1688266200000, 79], [1688266320000, - 75], [1688266440000, 74], [1688266560000, 77], [1688266680000, 78], [1688266800000, - 78], [1688266920000, 80], [1688267040000, 76], [1688267160000, 77], [1688267280000, - 75], [1688267400000, 74], [1688267520000, 75], [1688267640000, 70], [1688267760000, - 76], [1688267880000, 76], [1688268000000, 75], [1688268120000, 75], [1688268240000, - 72], [1688268360000, 75], [1688268480000, 74], [1688268600000, 81], [1688268720000, - 82], [1688268840000, 81], [1688268960000, 77], [1688269080000, 73], [1688269200000, - 89], [1688269320000, 95], [1688269440000, 94], [1688269560000, 94], [1688269680000, - 82], [1688269800000, 81], [1688269920000, 82], [1688270040000, 85], [1688270160000, - 81], [1688270280000, 77], [1688270400000, 71], [1688270520000, 72], [1688270640000, - 70], [1688270760000, 70], [1688270880000, 72], [1688271000000, 73], [1688271120000, - 70], [1688271240000, 74], [1688271360000, 68], [1688271480000, 71], [1688271600000, - 71], [1688271720000, 72], [1688271840000, 76], [1688271960000, 78], [1688272080000, - 62], [1688272200000, 60], [1688272320000, 62], [1688272440000, 62], [1688272560000, - 65], [1688272680000, 64], [1688272800000, 66], [1688272920000, 67], [1688273040000, - 65], [1688273160000, 66], [1688273280000, 63], [1688273400000, 64], [1688273520000, - 64], [1688273640000, 66], [1688273760000, 63], [1688273880000, 63], [1688274000000, - 62], [1688274120000, 64], [1688274240000, 86], [1688274360000, 83], [1688274480000, - 81], [1688274600000, 78], [1688274720000, 85], [1688274840000, 83], [1688274960000, - 80], [1688275080000, 79], [1688275200000, 85], [1688275320000, 86], [1688275440000, - 82], [1688275560000, 84], [1688275680000, 70], [1688275800000, 86], [1688275920000, - 80], [1688276040000, 70], [1688276160000, 81], [1688276280000, 77], [1688276400000, - 86], [1688276520000, 90], [1688276640000, 64], [1688276760000, 62], [1688276880000, - 65], [1688277000000, 74], [1688277120000, 65], [1688277240000, 72], [1688277360000, - 56], [1688277480000, 56]]}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f8a4dfee830b6e8-QRO - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Fri, 18 Aug 2023 12:54:18 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=RtawwZ3pSW1TMssDM4vc6f7eVeb9oADwxK%2BINk45Vx4e1AyguWYrznt%2FoDCl6UEkpB1NwQ%2FFbPxambaMTGURI7ZV6N4U6yGHHCKvskFW3RdDdQ1aSXBdM1vpM%2BApri80AajDX17GxQ%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -version: 1 diff --git a/python-garminconnect/tests/cassettes/test_hrv_data.yaml b/python-garminconnect/tests/cassettes/test_hrv_data.yaml deleted file mode 100644 index a70ece0..0000000 --- a/python-garminconnect/tests/cassettes/test_hrv_data.yaml +++ /dev/null @@ -1,312 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/socialProfile - response: - body: - string: '{"id": 3154645, "profileId": 2591602, "garminGUID": "0690cc1d-d23d-4412-b027-80fd4ed1c0f6", - "displayName": "mtamizi", "fullName": "Matin Tamizi", "userName": "mtamizi", - "profileImageUuid": "73240e81-6e4d-43fc-8af8-c8f6c51b3b8f", "profileImageUrlLarge": - "https://s3.amazonaws.com/garmin-connect-prod/profile_images/73240e81-6e4d-43fc-8af8-c8f6c51b3b8f-2591602.png", - "profileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/685a19e9-a7be-4a11-9bf9-faca0c5d1f1a-2591602.png", - "profileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/6302f021-0ec7-4dc9-b0c3-d5a19bc5a08c-2591602.png", - "location": "Ciudad de M\u00e9xico, CDMX", "facebookUrl": null, "twitterUrl": - null, "personalWebsite": null, "motivation": null, "bio": null, "primaryActivity": - null, "favoriteActivityTypes": [], "runningTrainingSpeed": 0.0, "cyclingTrainingSpeed": - 0.0, "favoriteCyclingActivityTypes": [], "cyclingClassification": null, "cyclingMaxAvgPower": - 0.0, "swimmingTrainingSpeed": 0.0, "profileVisibility": "private", "activityStartVisibility": - "private", "activityMapVisibility": "public", "courseVisibility": "public", - "activityHeartRateVisibility": "public", "activityPowerVisibility": "public", - "badgeVisibility": "private", "showAge": false, "showWeight": false, "showHeight": - false, "showWeightClass": false, "showAgeRange": false, "showGender": false, - "showActivityClass": false, "showVO2Max": false, "showPersonalRecords": false, - "showLast12Months": false, "showLifetimeTotals": false, "showUpcomingEvents": - false, "showRecentFavorites": false, "showRecentDevice": false, "showRecentGear": - false, "showBadges": true, "otherActivity": null, "otherPrimaryActivity": - null, "otherMotivation": null, "userRoles": ["SCOPE_ATP_READ", "SCOPE_ATP_WRITE", - "SCOPE_COMMUNITY_COURSE_READ", "SCOPE_COMMUNITY_COURSE_WRITE", "SCOPE_CONNECT_READ", - "SCOPE_CONNECT_WRITE", "SCOPE_DT_CLIENT_ANALYTICS_WRITE", "SCOPE_GARMINPAY_READ", - "SCOPE_GARMINPAY_WRITE", "SCOPE_GCOFFER_READ", "SCOPE_GCOFFER_WRITE", "SCOPE_GHS_SAMD", - "SCOPE_GHS_UPLOAD", "SCOPE_GOLF_API_READ", "SCOPE_GOLF_API_WRITE", "SCOPE_INSIGHTS_READ", - "SCOPE_INSIGHTS_WRITE", "SCOPE_PRODUCT_SEARCH_READ", "ROLE_CONNECTUSER", "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", "ROLE_OUTDOOR_USER", "ROLE_CONNECT_2_USER", "ROLE_TACX_APP_USER"], - "nameApproved": true, "userProfileFullName": "Matin Tamizi", "makeGolfScorecardsPrivate": - true, "allowGolfLiveScoring": false, "allowGolfScoringByConnections": true, - "userLevel": 3, "userPoint": 117, "levelUpdateDate": "2020-12-12T15:20:38.0", - "levelIsViewed": false, "levelPointThreshold": 140, "userPointOffset": 0, - "userPro": false}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f8c22b8fd5db6ed-QRO - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Fri, 18 Aug 2023 18:14:17 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=0E77t2nW5dGJbcmzeOjPJoIjH2646y1L2BeBzRVSPirgt6bd2fNJbl8cpsSu%2Bvb0XSQ0E4kbICTNiK%2FJnEhNsgwkeHWFbjC7APT867Vf%2FdAInYViBoc7S1CMJyZtmBB2Fybh1dz32g%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - _cfuvid=SANITIZED; path=SANITIZED; domain=SANITIZED; HttpOnly; Secure; SameSite=SANITIZED - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/userprofile/user-settings - response: - body: - string: '{"id": 2591602, "userData": {"gender": "MALE", "weight": 79800.0, "height": - 182.0, "timeFormat": "time_twenty_four_hr", "birthDate": "1984-10-17", "measurementSystem": - "metric", "activityLevel": null, "handedness": "RIGHT", "powerFormat": {"formatId": - 30, "formatKey": "watt", "minFraction": 0, "maxFraction": 0, "groupingUsed": - true, "displayFormat": null}, "heartRateFormat": {"formatId": 21, "formatKey": - "bpm", "minFraction": 0, "maxFraction": 0, "groupingUsed": false, "displayFormat": - null}, "firstDayOfWeek": {"dayId": 2, "dayName": "sunday", "sortOrder": 2, - "isPossibleFirstDay": true}, "vo2MaxRunning": 46.0, "vo2MaxCycling": null, - "lactateThresholdSpeed": 0.34722125000000004, "lactateThresholdHeartRate": - null, "diveNumber": null, "intensityMinutesCalcMethod": "AUTO", "moderateIntensityMinutesHrZone": - 3, "vigorousIntensityMinutesHrZone": 4, "hydrationMeasurementUnit": "milliliter", - "hydrationContainers": [], "hydrationAutoGoalEnabled": true, "firstbeatMaxStressScore": - null, "firstbeatCyclingLtTimestamp": null, "firstbeatRunningLtTimestamp": - 1044719868, "thresholdHeartRateAutoDetected": true, "ftpAutoDetected": null, - "trainingStatusPausedDate": null, "weatherLocation": {"useFixedLocation": - false, "latitude": null, "longitude": null, "locationName": null, "isoCountryCode": - null, "postalCode": null}, "golfDistanceUnit": "statute_us", "golfElevationUnit": - null, "golfSpeedUnit": null, "externalBottomTime": null}, "userSleep": {"sleepTime": - 80400, "defaultSleepTime": false, "wakeTime": 24000, "defaultWakeTime": false}, - "connectDate": null, "sourceType": null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f8c22baef2146e9-DFW - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Fri, 18 Aug 2023 18:14:18 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=%2BZjeDtpfTSyeEJtm6VjqgfKiqPie8kaSR1fdapEWVOUg1%2BjoTebr%2FmIk7mri7ypjXTL2A8ZX%2Bi3OLErVyTv6HDuUNpJw9i7LLALaMQoidzMGEwUDfKsQQG5MCrY06CT0SYZxun%2BdSw%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/hrv-service/hrv/2023-07-01 - response: - body: - string: '{"userProfilePk": 2591602, "hrvSummary": {"calendarDate": "2023-07-01", - "weeklyAvg": 43, "lastNightAvg": 43, "lastNight5MinHigh": 60, "baseline": - {"lowUpper": 35, "balancedLow": 38, "balancedUpper": 52, "markerValue": 0.42855835}, - "status": "BALANCED", "feedbackPhrase": "HRV_BALANCED_8", "createTimeStamp": - "2023-07-01T12:27:14.85"}, "hrvReadings": [{"hrvValue": 44, "readingTimeGMT": - "2023-07-01T06:44:41.0", "readingTimeLocal": "2023-07-01T00:44:41.0"}, {"hrvValue": - 39, "readingTimeGMT": "2023-07-01T06:49:41.0", "readingTimeLocal": "2023-07-01T00:49:41.0"}, - {"hrvValue": 49, "readingTimeGMT": "2023-07-01T06:54:41.0", "readingTimeLocal": - "2023-07-01T00:54:41.0"}, {"hrvValue": 55, "readingTimeGMT": "2023-07-01T06:59:41.0", - "readingTimeLocal": "2023-07-01T00:59:41.0"}, {"hrvValue": 46, "readingTimeGMT": - "2023-07-01T07:04:41.0", "readingTimeLocal": "2023-07-01T01:04:41.0"}, {"hrvValue": - 42, "readingTimeGMT": "2023-07-01T07:09:41.0", "readingTimeLocal": "2023-07-01T01:09:41.0"}, - {"hrvValue": 56, "readingTimeGMT": "2023-07-01T07:14:41.0", "readingTimeLocal": - "2023-07-01T01:14:41.0"}, {"hrvValue": 51, "readingTimeGMT": "2023-07-01T07:19:41.0", - "readingTimeLocal": "2023-07-01T01:19:41.0"}, {"hrvValue": 42, "readingTimeGMT": - "2023-07-01T07:24:41.0", "readingTimeLocal": "2023-07-01T01:24:41.0"}, {"hrvValue": - 49, "readingTimeGMT": "2023-07-01T07:29:41.0", "readingTimeLocal": "2023-07-01T01:29:41.0"}, - {"hrvValue": 43, "readingTimeGMT": "2023-07-01T07:34:41.0", "readingTimeLocal": - "2023-07-01T01:34:41.0"}, {"hrvValue": 40, "readingTimeGMT": "2023-07-01T07:39:41.0", - "readingTimeLocal": "2023-07-01T01:39:41.0"}, {"hrvValue": 45, "readingTimeGMT": - "2023-07-01T07:44:41.0", "readingTimeLocal": "2023-07-01T01:44:41.0"}, {"hrvValue": - 42, "readingTimeGMT": "2023-07-01T07:49:41.0", "readingTimeLocal": "2023-07-01T01:49:41.0"}, - {"hrvValue": 45, "readingTimeGMT": "2023-07-01T07:54:41.0", "readingTimeLocal": - "2023-07-01T01:54:41.0"}, {"hrvValue": 42, "readingTimeGMT": "2023-07-01T07:59:41.0", - "readingTimeLocal": "2023-07-01T01:59:41.0"}, {"hrvValue": 38, "readingTimeGMT": - "2023-07-01T08:04:41.0", "readingTimeLocal": "2023-07-01T02:04:41.0"}, {"hrvValue": - 39, "readingTimeGMT": "2023-07-01T08:09:41.0", "readingTimeLocal": "2023-07-01T02:09:41.0"}, - {"hrvValue": 45, "readingTimeGMT": "2023-07-01T08:14:41.0", "readingTimeLocal": - "2023-07-01T02:14:41.0"}, {"hrvValue": 40, "readingTimeGMT": "2023-07-01T08:19:41.0", - "readingTimeLocal": "2023-07-01T02:19:41.0"}, {"hrvValue": 30, "readingTimeGMT": - "2023-07-01T08:24:41.0", "readingTimeLocal": "2023-07-01T02:24:41.0"}, {"hrvValue": - 36, "readingTimeGMT": "2023-07-01T08:29:41.0", "readingTimeLocal": "2023-07-01T02:29:41.0"}, - {"hrvValue": 27, "readingTimeGMT": "2023-07-01T08:34:41.0", "readingTimeLocal": - "2023-07-01T02:34:41.0"}, {"hrvValue": 33, "readingTimeGMT": "2023-07-01T08:39:41.0", - "readingTimeLocal": "2023-07-01T02:39:41.0"}, {"hrvValue": 29, "readingTimeGMT": - "2023-07-01T08:44:41.0", "readingTimeLocal": "2023-07-01T02:44:41.0"}, {"hrvValue": - 30, "readingTimeGMT": "2023-07-01T08:49:41.0", "readingTimeLocal": "2023-07-01T02:49:41.0"}, - {"hrvValue": 29, "readingTimeGMT": "2023-07-01T08:54:41.0", "readingTimeLocal": - "2023-07-01T02:54:41.0"}, {"hrvValue": 37, "readingTimeGMT": "2023-07-01T08:59:41.0", - "readingTimeLocal": "2023-07-01T02:59:41.0"}, {"hrvValue": 47, "readingTimeGMT": - "2023-07-01T09:04:41.0", "readingTimeLocal": "2023-07-01T03:04:41.0"}, {"hrvValue": - 39, "readingTimeGMT": "2023-07-01T09:09:41.0", "readingTimeLocal": "2023-07-01T03:09:41.0"}, - {"hrvValue": 38, "readingTimeGMT": "2023-07-01T09:14:41.0", "readingTimeLocal": - "2023-07-01T03:14:41.0"}, {"hrvValue": 42, "readingTimeGMT": "2023-07-01T09:19:41.0", - "readingTimeLocal": "2023-07-01T03:19:41.0"}, {"hrvValue": 35, "readingTimeGMT": - "2023-07-01T09:24:41.0", "readingTimeLocal": "2023-07-01T03:24:41.0"}, {"hrvValue": - 55, "readingTimeGMT": "2023-07-01T09:29:41.0", "readingTimeLocal": "2023-07-01T03:29:41.0"}, - {"hrvValue": 50, "readingTimeGMT": "2023-07-01T09:34:41.0", "readingTimeLocal": - "2023-07-01T03:34:41.0"}, {"hrvValue": 41, "readingTimeGMT": "2023-07-01T09:39:41.0", - "readingTimeLocal": "2023-07-01T03:39:41.0"}, {"hrvValue": 57, "readingTimeGMT": - "2023-07-01T09:44:41.0", "readingTimeLocal": "2023-07-01T03:44:41.0"}, {"hrvValue": - 44, "readingTimeGMT": "2023-07-01T09:49:41.0", "readingTimeLocal": "2023-07-01T03:49:41.0"}, - {"hrvValue": 36, "readingTimeGMT": "2023-07-01T09:54:41.0", "readingTimeLocal": - "2023-07-01T03:54:41.0"}, {"hrvValue": 41, "readingTimeGMT": "2023-07-01T09:59:41.0", - "readingTimeLocal": "2023-07-01T03:59:41.0"}, {"hrvValue": 47, "readingTimeGMT": - "2023-07-01T10:04:41.0", "readingTimeLocal": "2023-07-01T04:04:41.0"}, {"hrvValue": - 47, "readingTimeGMT": "2023-07-01T10:09:41.0", "readingTimeLocal": "2023-07-01T04:09:41.0"}, - {"hrvValue": 40, "readingTimeGMT": "2023-07-01T10:14:41.0", "readingTimeLocal": - "2023-07-01T04:14:41.0"}, {"hrvValue": 28, "readingTimeGMT": "2023-07-01T10:19:41.0", - "readingTimeLocal": "2023-07-01T04:19:41.0"}, {"hrvValue": 33, "readingTimeGMT": - "2023-07-01T10:24:41.0", "readingTimeLocal": "2023-07-01T04:24:41.0"}, {"hrvValue": - 37, "readingTimeGMT": "2023-07-01T10:29:41.0", "readingTimeLocal": "2023-07-01T04:29:41.0"}, - {"hrvValue": 50, "readingTimeGMT": "2023-07-01T10:34:41.0", "readingTimeLocal": - "2023-07-01T04:34:41.0"}, {"hrvValue": 37, "readingTimeGMT": "2023-07-01T10:39:41.0", - "readingTimeLocal": "2023-07-01T04:39:41.0"}, {"hrvValue": 41, "readingTimeGMT": - "2023-07-01T10:44:41.0", "readingTimeLocal": "2023-07-01T04:44:41.0"}, {"hrvValue": - 36, "readingTimeGMT": "2023-07-01T10:49:41.0", "readingTimeLocal": "2023-07-01T04:49:41.0"}, - {"hrvValue": 60, "readingTimeGMT": "2023-07-01T10:54:41.0", "readingTimeLocal": - "2023-07-01T04:54:41.0"}, {"hrvValue": 51, "readingTimeGMT": "2023-07-01T10:59:41.0", - "readingTimeLocal": "2023-07-01T04:59:41.0"}, {"hrvValue": 46, "readingTimeGMT": - "2023-07-01T11:04:41.0", "readingTimeLocal": "2023-07-01T05:04:41.0"}, {"hrvValue": - 37, "readingTimeGMT": "2023-07-01T11:09:41.0", "readingTimeLocal": "2023-07-01T05:09:41.0"}, - {"hrvValue": 36, "readingTimeGMT": "2023-07-01T11:14:41.0", "readingTimeLocal": - "2023-07-01T05:14:41.0"}, {"hrvValue": 33, "readingTimeGMT": "2023-07-01T11:19:41.0", - "readingTimeLocal": "2023-07-01T05:19:41.0"}, {"hrvValue": 50, "readingTimeGMT": - "2023-07-01T11:24:41.0", "readingTimeLocal": "2023-07-01T05:24:41.0"}], "startTimestampGMT": - "2023-07-01T06:40:00.0", "endTimestampGMT": "2023-07-01T11:24:41.0", "startTimestampLocal": - "2023-07-01T00:40:00.0", "endTimestampLocal": "2023-07-01T05:24:41.0", "sleepStartTimestampGMT": - "2023-07-01T06:40:00.0", "sleepEndTimestampGMT": "2023-07-01T11:26:00.0", - "sleepStartTimestampLocal": "2023-07-01T00:40:00.0", "sleepEndTimestampLocal": - "2023-07-01T05:26:00.0"}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f8c22bc4fbeb6df-QRO - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Fri, 18 Aug 2023 18:14:18 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=K26isoQlhIUy1i4ANfOL1efqqIjmSH6tUk0Hf7JP59UL6VBoYZUZHyEHOzZ8pQcjWsDoUlbaFPGxcqQv5DsngZN6Ji8WsQY%2BhHNjn5t2KGN0gY%2FnV2O0gHI95EvJoadReFAtn4Zbuw%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED - status: - code: 200 - message: OK -version: 1 diff --git a/python-garminconnect/tests/cassettes/test_hydration_data.yaml b/python-garminconnect/tests/cassettes/test_hydration_data.yaml deleted file mode 100644 index 6b0c1fa..0000000 --- a/python-garminconnect/tests/cassettes/test_hydration_data.yaml +++ /dev/null @@ -1,240 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/socialProfile - response: - body: - string: '{"id": 3154645, "profileId": 2591602, "garminGUID": "0690cc1d-d23d-4412-b027-80fd4ed1c0f6", - "displayName": "mtamizi", "fullName": "Matin Tamizi", "userName": "mtamizi", - "profileImageUuid": "73240e81-6e4d-43fc-8af8-c8f6c51b3b8f", "profileImageUrlLarge": - "https://s3.amazonaws.com/garmin-connect-prod/profile_images/73240e81-6e4d-43fc-8af8-c8f6c51b3b8f-2591602.png", - "profileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/685a19e9-a7be-4a11-9bf9-faca0c5d1f1a-2591602.png", - "profileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/6302f021-0ec7-4dc9-b0c3-d5a19bc5a08c-2591602.png", - "location": "Ciudad de M\u00e9xico, CDMX", "facebookUrl": null, "twitterUrl": - null, "personalWebsite": null, "motivation": null, "bio": null, "primaryActivity": - null, "favoriteActivityTypes": [], "runningTrainingSpeed": 0.0, "cyclingTrainingSpeed": - 0.0, "favoriteCyclingActivityTypes": [], "cyclingClassification": null, "cyclingMaxAvgPower": - 0.0, "swimmingTrainingSpeed": 0.0, "profileVisibility": "private", "activityStartVisibility": - "private", "activityMapVisibility": "public", "courseVisibility": "public", - "activityHeartRateVisibility": "public", "activityPowerVisibility": "public", - "badgeVisibility": "private", "showAge": false, "showWeight": false, "showHeight": - false, "showWeightClass": false, "showAgeRange": false, "showGender": false, - "showActivityClass": false, "showVO2Max": false, "showPersonalRecords": false, - "showLast12Months": false, "showLifetimeTotals": false, "showUpcomingEvents": - false, "showRecentFavorites": false, "showRecentDevice": false, "showRecentGear": - false, "showBadges": true, "otherActivity": null, "otherPrimaryActivity": - null, "otherMotivation": null, "userRoles": ["SCOPE_ATP_READ", "SCOPE_ATP_WRITE", - "SCOPE_COMMUNITY_COURSE_READ", "SCOPE_COMMUNITY_COURSE_WRITE", "SCOPE_CONNECT_READ", - "SCOPE_CONNECT_WRITE", "SCOPE_DT_CLIENT_ANALYTICS_WRITE", "SCOPE_GARMINPAY_READ", - "SCOPE_GARMINPAY_WRITE", "SCOPE_GCOFFER_READ", "SCOPE_GCOFFER_WRITE", "SCOPE_GHS_SAMD", - "SCOPE_GHS_UPLOAD", "SCOPE_GOLF_API_READ", "SCOPE_GOLF_API_WRITE", "SCOPE_INSIGHTS_READ", - "SCOPE_INSIGHTS_WRITE", "SCOPE_PRODUCT_SEARCH_READ", "ROLE_CONNECTUSER", "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", "ROLE_OUTDOOR_USER", "ROLE_CONNECT_2_USER", "ROLE_TACX_APP_USER"], - "nameApproved": true, "userProfileFullName": "Matin Tamizi", "makeGolfScorecardsPrivate": - true, "allowGolfLiveScoring": false, "allowGolfScoringByConnections": true, - "userLevel": 3, "userPoint": 117, "levelUpdateDate": "2020-12-12T15:20:38.0", - "levelIsViewed": false, "levelPointThreshold": 140, "userPointOffset": 0, - "userPro": false}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f967101d861154b-QRO - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sun, 20 Aug 2023 00:15:22 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=463w%2FuByRoJKGUmocUIzMvqYeScq0aei%2FT%2Bd3Ggsl8BMIlsKs%2BrGflSDcKjqo8BYotrFMwj6emCZ2IQ1MjkbQJMEy0l%2FRVf%2By7eQougtqIicbH9d%2Fds9HGH35hYJTPLg7cTEndSWFA%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - _cfuvid=SANITIZED; path=SANITIZED; domain=SANITIZED; HttpOnly; Secure; SameSite=SANITIZED - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/userprofile/user-settings - response: - body: - string: '{"id": 2591602, "userData": {"gender": "MALE", "weight": 79800.0, "height": - 182.0, "timeFormat": "time_twenty_four_hr", "birthDate": "1984-10-17", "measurementSystem": - "metric", "activityLevel": null, "handedness": "RIGHT", "powerFormat": {"formatId": - 30, "formatKey": "watt", "minFraction": 0, "maxFraction": 0, "groupingUsed": - true, "displayFormat": null}, "heartRateFormat": {"formatId": 21, "formatKey": - "bpm", "minFraction": 0, "maxFraction": 0, "groupingUsed": false, "displayFormat": - null}, "firstDayOfWeek": {"dayId": 2, "dayName": "sunday", "sortOrder": 2, - "isPossibleFirstDay": true}, "vo2MaxRunning": 46.0, "vo2MaxCycling": null, - "lactateThresholdSpeed": 0.34722125000000004, "lactateThresholdHeartRate": - null, "diveNumber": null, "intensityMinutesCalcMethod": "AUTO", "moderateIntensityMinutesHrZone": - 3, "vigorousIntensityMinutesHrZone": 4, "hydrationMeasurementUnit": "milliliter", - "hydrationContainers": [], "hydrationAutoGoalEnabled": true, "firstbeatMaxStressScore": - null, "firstbeatCyclingLtTimestamp": null, "firstbeatRunningLtTimestamp": - 1044719868, "thresholdHeartRateAutoDetected": true, "ftpAutoDetected": null, - "trainingStatusPausedDate": null, "weatherLocation": {"useFixedLocation": - false, "latitude": null, "longitude": null, "locationName": null, "isoCountryCode": - null, "postalCode": null}, "golfDistanceUnit": "statute_us", "golfElevationUnit": - null, "golfSpeedUnit": null, "externalBottomTime": null}, "userSleep": {"sleepTime": - 80400, "defaultSleepTime": false, "wakeTime": 24000, "defaultWakeTime": false}, - "connectDate": null, "sourceType": null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f9671031c331547-QRO - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sun, 20 Aug 2023 00:15:22 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=zqBSaLvwHc8CP3rS73t37hqtQPhwoJiQ0NDoQe7uMlDezK8fIqj%2BcDNd1ZkQqcC4SlQoImjwIkDRFK4oMCblXf4iKPgV%2FOQAV%2B8VNUSKzSyYQpQKsYKaAj6bjAt2Z1QYlwA%2Fhx6Rmw%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/usersummary-service/usersummary/hydration/daily/2023-07-01 - response: - body: - string: '{"userId": 2591602, "calendarDate": "2023-07-01", "valueInML": null, - "goalInML": 2800.0, "dailyAverageinML": null, "lastEntryTimestampLocal": null, - "sweatLossInML": null, "activityIntakeInML": null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f967106dca5155f-QRO - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Sun, 20 Aug 2023 00:15:22 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=W0QFlPjJmMM%2FvZq47%2BpTK9Yu5mIQ0I88klxliwZmKHkGuibvBDOrovy8V8nfsoDWZroCHXBDJDD1lxuHapbfEtJetCyAPC1LzvaG3ETD3qjhCrvZjF7x%2F88teqWDnR%2F24les6bZuJA%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -version: 1 diff --git a/python-garminconnect/tests/cassettes/test_request_reload.yaml b/python-garminconnect/tests/cassettes/test_request_reload.yaml deleted file mode 100644 index a683446..0000000 --- a/python-garminconnect/tests/cassettes/test_request_reload.yaml +++ /dev/null @@ -1,737 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/socialProfile - response: - body: - string: '{"id": 3154645, "profileId": 2591602, "garminGUID": "0690cc1d-d23d-4412-b027-80fd4ed1c0f6", - "displayName": "mtamizi", "fullName": "Matin Tamizi", "userName": "mtamizi", - "profileImageUuid": "73240e81-6e4d-43fc-8af8-c8f6c51b3b8f", "profileImageUrlLarge": - "https://s3.amazonaws.com/garmin-connect-prod/profile_images/73240e81-6e4d-43fc-8af8-c8f6c51b3b8f-2591602.png", - "profileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/685a19e9-a7be-4a11-9bf9-faca0c5d1f1a-2591602.png", - "profileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/6302f021-0ec7-4dc9-b0c3-d5a19bc5a08c-2591602.png", - "location": "Ciudad de M\u00e9xico, CDMX", "facebookUrl": null, "twitterUrl": - null, "personalWebsite": null, "motivation": null, "bio": null, "primaryActivity": - null, "favoriteActivityTypes": [], "runningTrainingSpeed": 0.0, "cyclingTrainingSpeed": - 0.0, "favoriteCyclingActivityTypes": [], "cyclingClassification": null, "cyclingMaxAvgPower": - 0.0, "swimmingTrainingSpeed": 0.0, "profileVisibility": "private", "activityStartVisibility": - "private", "activityMapVisibility": "public", "courseVisibility": "public", - "activityHeartRateVisibility": "public", "activityPowerVisibility": "public", - "badgeVisibility": "private", "showAge": false, "showWeight": false, "showHeight": - false, "showWeightClass": false, "showAgeRange": false, "showGender": false, - "showActivityClass": false, "showVO2Max": false, "showPersonalRecords": false, - "showLast12Months": false, "showLifetimeTotals": false, "showUpcomingEvents": - false, "showRecentFavorites": false, "showRecentDevice": false, "showRecentGear": - false, "showBadges": true, "otherActivity": null, "otherPrimaryActivity": - null, "otherMotivation": null, "userRoles": ["SCOPE_ATP_READ", "SCOPE_ATP_WRITE", - "SCOPE_COMMUNITY_COURSE_READ", "SCOPE_COMMUNITY_COURSE_WRITE", "SCOPE_CONNECT_READ", - "SCOPE_CONNECT_WRITE", "SCOPE_DT_CLIENT_ANALYTICS_WRITE", "SCOPE_GARMINPAY_READ", - "SCOPE_GARMINPAY_WRITE", "SCOPE_GCOFFER_READ", "SCOPE_GCOFFER_WRITE", "SCOPE_GHS_SAMD", - "SCOPE_GHS_UPLOAD", "SCOPE_GOLF_API_READ", "SCOPE_GOLF_API_WRITE", "SCOPE_INSIGHTS_READ", - "SCOPE_INSIGHTS_WRITE", "SCOPE_PRODUCT_SEARCH_READ", "ROLE_CONNECTUSER", "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", "ROLE_OUTDOOR_USER", "ROLE_CONNECT_2_USER", "ROLE_TACX_APP_USER"], - "nameApproved": true, "userProfileFullName": "Matin Tamizi", "makeGolfScorecardsPrivate": - true, "allowGolfLiveScoring": false, "allowGolfScoringByConnections": true, - "userLevel": 3, "userPoint": 122, "levelUpdateDate": "2020-12-12T15:20:38.0", - "levelIsViewed": false, "levelPointThreshold": 140, "userPointOffset": 0, - "userPro": false}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 81d8f1818b3f16c9-IAH - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sun, 29 Oct 2023 05:15:54 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=ukjKsqMj99lu%2FaIMAyTldQII9KhemdQ%2FN%2B6XQHOk4TJS2maNOco%2F2%2BiB68M9M%2FPjjcRV2hGfJDxpG%2Fb2zWGyMk50vf2gMf9lU%2Bz95lFo4BM0rlzTmsMCExDjZqup9ynKwPMi9GHKHBHxx7DxujbuohGlqA%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - _cfuvid=SANITIZED; path=SANITIZED; domain=SANITIZED; HttpOnly; Secure; SameSite=SANITIZED - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/userprofile/user-settings - response: - body: - string: '{"id": 2591602, "userData": {"gender": "MALE", "weight": 83000.0, "height": - 182.0, "timeFormat": "time_twenty_four_hr", "birthDate": "2020-01-01", "measurementSystem": - "metric", "activityLevel": null, "handedness": "RIGHT", "powerFormat": {"formatId": - 30, "formatKey": "watt", "minFraction": 0, "maxFraction": 0, "groupingUsed": - true, "displayFormat": null}, "heartRateFormat": {"formatId": 21, "formatKey": - "bpm", "minFraction": 0, "maxFraction": 0, "groupingUsed": false, "displayFormat": - null}, "firstDayOfWeek": {"dayId": 2, "dayName": "sunday", "sortOrder": 2, - "isPossibleFirstDay": true}, "vo2MaxRunning": 50.0, "vo2MaxCycling": null, - "lactateThresholdSpeed": 0.34722125000000004, "lactateThresholdHeartRate": - null, "diveNumber": null, "intensityMinutesCalcMethod": "AUTO", "moderateIntensityMinutesHrZone": - 3, "vigorousIntensityMinutesHrZone": 4, "hydrationMeasurementUnit": "milliliter", - "hydrationContainers": [], "hydrationAutoGoalEnabled": true, "firstbeatMaxStressScore": - null, "firstbeatCyclingLtTimestamp": null, "firstbeatRunningLtTimestamp": - 1044719868, "thresholdHeartRateAutoDetected": true, "ftpAutoDetected": null, - "trainingStatusPausedDate": null, "weatherLocation": null, "golfDistanceUnit": - "statute_us", "golfElevationUnit": null, "golfSpeedUnit": null, "externalBottomTime": - null, "availableTrainingDays": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", - "FRIDAY", "SATURDAY", "SUNDAY"], "preferredLongTrainingDays": []}, "userSleep": - {"sleepTime": 80400, "defaultSleepTime": false, "wakeTime": 24000, "defaultWakeTime": - false}, "connectDate": null, "sourceType": null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 81d8f1830d3616b1-IAH - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sun, 29 Oct 2023 05:15:54 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=n3icrHHYYtVZLVOe2msYZObAWs9TWFaK9R%2BRecXcCBFtDFHUBWos3WN2Fl1qs5TWWLgzuxH42tmCVKP0pDJXraRLATej6%2F3ZFdnRE2PCWoHQxoS4pQL3U7bCiDJ8RaTDGObe7FQ%2BZWYtcB5wdlPDJtQDwA%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/wellness-service/wellness/dailySummaryChart/mtamizi?date=2021-01-01 - response: - body: - string: '[{"startGMT": "2021-01-01T06:00:00.0", "endGMT": "2021-01-01T06:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T06:15:00.0", "endGMT": "2021-01-01T06:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T06:30:00.0", "endGMT": "2021-01-01T06:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T06:45:00.0", "endGMT": "2021-01-01T07:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T07:00:00.0", "endGMT": "2021-01-01T07:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T07:15:00.0", "endGMT": "2021-01-01T07:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T07:30:00.0", "endGMT": "2021-01-01T07:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T07:45:00.0", "endGMT": "2021-01-01T08:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T08:00:00.0", "endGMT": "2021-01-01T08:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T08:15:00.0", "endGMT": "2021-01-01T08:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T08:30:00.0", "endGMT": "2021-01-01T08:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T08:45:00.0", "endGMT": "2021-01-01T09:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T09:00:00.0", "endGMT": "2021-01-01T09:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T09:15:00.0", "endGMT": "2021-01-01T09:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T09:30:00.0", "endGMT": "2021-01-01T09:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T09:45:00.0", "endGMT": "2021-01-01T10:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T10:00:00.0", "endGMT": "2021-01-01T10:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T10:15:00.0", "endGMT": "2021-01-01T10:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T10:30:00.0", "endGMT": "2021-01-01T10:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T10:45:00.0", "endGMT": "2021-01-01T11:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T11:00:00.0", "endGMT": "2021-01-01T11:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T11:15:00.0", "endGMT": "2021-01-01T11:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T11:30:00.0", "endGMT": "2021-01-01T11:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T11:45:00.0", "endGMT": "2021-01-01T12:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T12:00:00.0", "endGMT": "2021-01-01T12:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T12:15:00.0", "endGMT": "2021-01-01T12:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T12:30:00.0", "endGMT": "2021-01-01T12:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T12:45:00.0", "endGMT": "2021-01-01T13:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T13:00:00.0", "endGMT": "2021-01-01T13:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T13:15:00.0", "endGMT": "2021-01-01T13:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T13:30:00.0", "endGMT": "2021-01-01T13:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T13:45:00.0", "endGMT": "2021-01-01T14:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T14:00:00.0", "endGMT": "2021-01-01T14:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T14:15:00.0", "endGMT": "2021-01-01T14:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T14:30:00.0", "endGMT": "2021-01-01T14:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T14:45:00.0", "endGMT": "2021-01-01T15:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T15:00:00.0", "endGMT": "2021-01-01T15:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T15:15:00.0", "endGMT": "2021-01-01T15:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T15:30:00.0", "endGMT": "2021-01-01T15:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T15:45:00.0", "endGMT": "2021-01-01T16:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T16:00:00.0", "endGMT": "2021-01-01T16:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T16:15:00.0", "endGMT": "2021-01-01T16:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T16:30:00.0", "endGMT": "2021-01-01T16:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T16:45:00.0", "endGMT": "2021-01-01T17:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T17:00:00.0", "endGMT": "2021-01-01T17:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T17:15:00.0", "endGMT": "2021-01-01T17:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T17:30:00.0", "endGMT": "2021-01-01T17:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T17:45:00.0", "endGMT": "2021-01-01T18:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T18:00:00.0", "endGMT": "2021-01-01T18:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T18:15:00.0", "endGMT": "2021-01-01T18:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T18:30:00.0", "endGMT": "2021-01-01T18:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T18:45:00.0", "endGMT": "2021-01-01T19:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T19:00:00.0", "endGMT": "2021-01-01T19:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T19:15:00.0", "endGMT": "2021-01-01T19:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T19:30:00.0", "endGMT": "2021-01-01T19:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T19:45:00.0", "endGMT": "2021-01-01T20:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T20:00:00.0", "endGMT": "2021-01-01T20:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T20:15:00.0", "endGMT": "2021-01-01T20:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T20:30:00.0", "endGMT": "2021-01-01T20:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T20:45:00.0", "endGMT": "2021-01-01T21:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T21:00:00.0", "endGMT": "2021-01-01T21:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T21:15:00.0", "endGMT": "2021-01-01T21:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T21:30:00.0", "endGMT": "2021-01-01T21:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T21:45:00.0", "endGMT": "2021-01-01T22:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T22:00:00.0", "endGMT": "2021-01-01T22:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T22:15:00.0", "endGMT": "2021-01-01T22:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T22:30:00.0", "endGMT": "2021-01-01T22:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T22:45:00.0", "endGMT": "2021-01-01T23:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T23:00:00.0", "endGMT": "2021-01-01T23:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T23:15:00.0", "endGMT": "2021-01-01T23:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T23:30:00.0", "endGMT": "2021-01-01T23:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T23:45:00.0", "endGMT": "2021-01-02T00:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T00:00:00.0", "endGMT": "2021-01-02T00:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T00:15:00.0", "endGMT": "2021-01-02T00:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T00:30:00.0", "endGMT": "2021-01-02T00:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T00:45:00.0", "endGMT": "2021-01-02T01:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T01:00:00.0", "endGMT": "2021-01-02T01:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T01:15:00.0", "endGMT": "2021-01-02T01:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T01:30:00.0", "endGMT": "2021-01-02T01:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T01:45:00.0", "endGMT": "2021-01-02T02:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T02:00:00.0", "endGMT": "2021-01-02T02:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T02:15:00.0", "endGMT": "2021-01-02T02:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T02:30:00.0", "endGMT": "2021-01-02T02:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T02:45:00.0", "endGMT": "2021-01-02T03:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T03:00:00.0", "endGMT": "2021-01-02T03:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T03:15:00.0", "endGMT": "2021-01-02T03:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T03:30:00.0", "endGMT": "2021-01-02T03:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T03:45:00.0", "endGMT": "2021-01-02T04:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T04:00:00.0", "endGMT": "2021-01-02T04:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T04:15:00.0", "endGMT": "2021-01-02T04:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T04:30:00.0", "endGMT": "2021-01-02T04:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T04:45:00.0", "endGMT": "2021-01-02T05:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T05:00:00.0", "endGMT": "2021-01-02T05:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T05:15:00.0", "endGMT": "2021-01-02T05:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T05:30:00.0", "endGMT": "2021-01-02T05:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "none", "activityLevelConstant": - true}]' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 81d8f184f83b2750-IAH - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sun, 29 Oct 2023 05:15:55 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=Kia%2Bk7oTZ3VC9GeR1VET0Tsmm4Eip89vSrKiBqWPp4D9s0YiUeggSiIUOUG08sQ72woOdhSkMRo4Dp%2FEEGfE%2FAUhT15e9GlbPcjjZSRws2EB1ReaxTE%2FU5QFCk%2Bub3hlWPz5YAp9O7JpBsLPtZkxKU7ETw%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Content-Length: - - '0' - Cookie: - - _cfuvid=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: POST - uri: https://connectapi.garmin.com/wellness-service/wellness/epoch/request/2021-01-01 - response: - body: - string: '{"userProfilePk": 2591602, "calendarDate": "2021-01-01", "status": - "SUBMITTED", "source": "USER", "ghReloadMetaData": "", "createDate": "2023-10-29T05:15:57.34", - "deviceList": [{"deviceId": 3329978681, "deviceName": "f\u0113nix\u00ae 6X - - Pro and Sapphire Editions", "preferredActivityTracker": true}]}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 81d8f18e2f8afeb2-IAH - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sun, 29 Oct 2023 05:15:57 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=7yE3UyVzkccApSaJ2SqF2kEqwrU0rTDrEN5WjlS6jXtFi%2BYlYHADPIWKkr49k53YX4EL0oiq0uLq%2Bmq893wd1er98br6h3bHk2wQt68%2BQQEr3ohaGwQTceIB8kAEh%2Fn9HF80wm2zAUcyJvCCEzDVIpqCvQ%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/wellness-service/wellness/dailySummaryChart/mtamizi?date=2021-01-01 - response: - body: - string: '[{"startGMT": "2021-01-01T06:00:00.0", "endGMT": "2021-01-01T06:15:00.0", - "steps": 204, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T06:15:00.0", "endGMT": "2021-01-01T06:30:00.0", - "steps": 81, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T06:30:00.0", "endGMT": "2021-01-01T06:45:00.0", - "steps": 504, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T06:45:00.0", "endGMT": "2021-01-01T07:00:00.0", - "steps": 367, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T07:00:00.0", "endGMT": "2021-01-01T07:15:00.0", - "steps": 320, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T07:15:00.0", "endGMT": "2021-01-01T07:30:00.0", - "steps": 43, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T07:30:00.0", "endGMT": "2021-01-01T07:45:00.0", - "steps": 83, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T07:45:00.0", "endGMT": "2021-01-01T08:00:00.0", - "steps": 170, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T08:00:00.0", "endGMT": "2021-01-01T08:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T08:15:00.0", "endGMT": "2021-01-01T08:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T08:30:00.0", "endGMT": "2021-01-01T08:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T08:45:00.0", "endGMT": "2021-01-01T09:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T09:00:00.0", "endGMT": "2021-01-01T09:15:00.0", - "steps": 59, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T09:15:00.0", "endGMT": "2021-01-01T09:30:00.0", - "steps": 40, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T09:30:00.0", "endGMT": "2021-01-01T09:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T09:45:00.0", "endGMT": "2021-01-01T10:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T10:00:00.0", "endGMT": "2021-01-01T10:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T10:15:00.0", "endGMT": "2021-01-01T10:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T10:30:00.0", "endGMT": "2021-01-01T10:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T10:45:00.0", "endGMT": "2021-01-01T11:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T11:00:00.0", "endGMT": "2021-01-01T11:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T11:15:00.0", "endGMT": "2021-01-01T11:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T11:30:00.0", "endGMT": "2021-01-01T11:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T11:45:00.0", "endGMT": "2021-01-01T12:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T12:00:00.0", "endGMT": "2021-01-01T12:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T12:15:00.0", "endGMT": "2021-01-01T12:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T12:30:00.0", "endGMT": "2021-01-01T12:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T12:45:00.0", "endGMT": "2021-01-01T13:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T13:00:00.0", "endGMT": "2021-01-01T13:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T13:15:00.0", "endGMT": "2021-01-01T13:30:00.0", - "steps": 30, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T13:30:00.0", "endGMT": "2021-01-01T13:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T13:45:00.0", "endGMT": "2021-01-01T14:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T14:00:00.0", "endGMT": "2021-01-01T14:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T14:15:00.0", "endGMT": "2021-01-01T14:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T14:30:00.0", "endGMT": "2021-01-01T14:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T14:45:00.0", "endGMT": "2021-01-01T15:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T15:00:00.0", "endGMT": "2021-01-01T15:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T15:15:00.0", "endGMT": "2021-01-01T15:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T15:30:00.0", "endGMT": "2021-01-01T15:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T15:45:00.0", "endGMT": "2021-01-01T16:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T16:00:00.0", "endGMT": "2021-01-01T16:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T16:15:00.0", "endGMT": "2021-01-01T16:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T16:30:00.0", "endGMT": "2021-01-01T16:45:00.0", - "steps": 75, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T16:45:00.0", "endGMT": "2021-01-01T17:00:00.0", - "steps": 146, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T17:00:00.0", "endGMT": "2021-01-01T17:15:00.0", - "steps": 40, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T17:15:00.0", "endGMT": "2021-01-01T17:30:00.0", - "steps": 50, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T17:30:00.0", "endGMT": "2021-01-01T17:45:00.0", - "steps": 96, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T17:45:00.0", "endGMT": "2021-01-01T18:00:00.0", - "steps": 214, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T18:00:00.0", "endGMT": "2021-01-01T18:15:00.0", - "steps": 284, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T18:15:00.0", "endGMT": "2021-01-01T18:30:00.0", - "steps": 63, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T18:30:00.0", "endGMT": "2021-01-01T18:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T18:45:00.0", "endGMT": "2021-01-01T19:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T19:00:00.0", "endGMT": "2021-01-01T19:15:00.0", - "steps": 18, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T19:15:00.0", "endGMT": "2021-01-01T19:30:00.0", - "steps": 435, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T19:30:00.0", "endGMT": "2021-01-01T19:45:00.0", - "steps": 896, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T19:45:00.0", "endGMT": "2021-01-01T20:00:00.0", - "steps": 213, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T20:00:00.0", "endGMT": "2021-01-01T20:15:00.0", - "steps": 189, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T20:15:00.0", "endGMT": "2021-01-01T20:30:00.0", - "steps": 7, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T20:30:00.0", "endGMT": "2021-01-01T20:45:00.0", - "steps": 75, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T20:45:00.0", "endGMT": "2021-01-01T21:00:00.0", - "steps": 124, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T21:00:00.0", "endGMT": "2021-01-01T21:15:00.0", - "steps": 243, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T21:15:00.0", "endGMT": "2021-01-01T21:30:00.0", - "steps": 292, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T21:30:00.0", "endGMT": "2021-01-01T21:45:00.0", - "steps": 1001, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T21:45:00.0", "endGMT": "2021-01-01T22:00:00.0", - "steps": 142, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T22:00:00.0", "endGMT": "2021-01-01T22:15:00.0", - "steps": 168, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T22:15:00.0", "endGMT": "2021-01-01T22:30:00.0", - "steps": 612, "pushes": 0, "primaryActivityLevel": "highlyActive", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T22:30:00.0", "endGMT": "2021-01-01T22:45:00.0", - "steps": 108, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T22:45:00.0", "endGMT": "2021-01-01T23:00:00.0", - "steps": 24, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T23:00:00.0", "endGMT": "2021-01-01T23:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T23:15:00.0", "endGMT": "2021-01-01T23:30:00.0", - "steps": 19, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-01T23:30:00.0", "endGMT": "2021-01-01T23:45:00.0", - "steps": 169, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-01T23:45:00.0", "endGMT": "2021-01-02T00:00:00.0", - "steps": 195, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-02T00:00:00.0", "endGMT": "2021-01-02T00:15:00.0", - "steps": 123, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2021-01-02T00:15:00.0", "endGMT": "2021-01-02T00:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T00:30:00.0", "endGMT": "2021-01-02T00:45:00.0", - "steps": 596, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2021-01-02T00:45:00.0", "endGMT": "2021-01-02T01:00:00.0", - "steps": 9, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T01:00:00.0", "endGMT": "2021-01-02T01:15:00.0", - "steps": 277, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-02T01:15:00.0", "endGMT": "2021-01-02T01:30:00.0", - "steps": 300, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-02T01:30:00.0", "endGMT": "2021-01-02T01:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T01:45:00.0", "endGMT": "2021-01-02T02:00:00.0", - "steps": 87, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-02T02:00:00.0", "endGMT": "2021-01-02T02:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T02:15:00.0", "endGMT": "2021-01-02T02:30:00.0", - "steps": 88, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T02:30:00.0", "endGMT": "2021-01-02T02:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T02:45:00.0", "endGMT": "2021-01-02T03:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T03:00:00.0", "endGMT": "2021-01-02T03:15:00.0", - "steps": 300, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-02T03:15:00.0", "endGMT": "2021-01-02T03:30:00.0", - "steps": 143, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-02T03:30:00.0", "endGMT": "2021-01-02T03:45:00.0", - "steps": 154, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-02T03:45:00.0", "endGMT": "2021-01-02T04:00:00.0", - "steps": 87, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-02T04:00:00.0", "endGMT": "2021-01-02T04:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T04:15:00.0", "endGMT": "2021-01-02T04:30:00.0", - "steps": 43, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2021-01-02T04:30:00.0", "endGMT": "2021-01-02T04:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - false}, {"startGMT": "2021-01-02T04:45:00.0", "endGMT": "2021-01-02T05:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T05:00:00.0", "endGMT": "2021-01-02T05:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T05:15:00.0", "endGMT": "2021-01-02T05:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T05:30:00.0", "endGMT": "2021-01-02T05:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2021-01-02T05:45:00.0", "endGMT": "2021-01-02T06:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}]' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 81d8f41daa7916b5-IAH - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sun, 29 Oct 2023 05:17:41 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=mRVqDYLHoBs%2F59ZnJllDD4hBoTfXI3uEIktsiFVesHN54M7jtZND%2FpCJJxL77rPqS8lXVYUZqWUeGJ99dRC9UGeu37gbExMDNnA%2FiLSkrdTMj8WAeEsIX6%2FODioZgxvSNGyeAIQdJNsZDFVlQCIs4zGLoQ%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -version: 1 diff --git a/python-garminconnect/tests/cassettes/test_respiration_data.yaml b/python-garminconnect/tests/cassettes/test_respiration_data.yaml deleted file mode 100644 index ccf5744..0000000 --- a/python-garminconnect/tests/cassettes/test_respiration_data.yaml +++ /dev/null @@ -1,455 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/socialProfile - response: - body: - string: '{"id": 3154645, "profileId": 2591602, "garminGUID": "0690cc1d-d23d-4412-b027-80fd4ed1c0f6", - "displayName": "mtamizi", "fullName": "Matin Tamizi", "userName": "mtamizi", - "profileImageUuid": "73240e81-6e4d-43fc-8af8-c8f6c51b3b8f", "profileImageUrlLarge": - "https://s3.amazonaws.com/garmin-connect-prod/profile_images/73240e81-6e4d-43fc-8af8-c8f6c51b3b8f-2591602.png", - "profileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/685a19e9-a7be-4a11-9bf9-faca0c5d1f1a-2591602.png", - "profileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/6302f021-0ec7-4dc9-b0c3-d5a19bc5a08c-2591602.png", - "location": "Ciudad de M\u00e9xico, CDMX", "facebookUrl": null, "twitterUrl": - null, "personalWebsite": null, "motivation": null, "bio": null, "primaryActivity": - null, "favoriteActivityTypes": [], "runningTrainingSpeed": 0.0, "cyclingTrainingSpeed": - 0.0, "favoriteCyclingActivityTypes": [], "cyclingClassification": null, "cyclingMaxAvgPower": - 0.0, "swimmingTrainingSpeed": 0.0, "profileVisibility": "private", "activityStartVisibility": - "private", "activityMapVisibility": "public", "courseVisibility": "public", - "activityHeartRateVisibility": "public", "activityPowerVisibility": "public", - "badgeVisibility": "private", "showAge": false, "showWeight": false, "showHeight": - false, "showWeightClass": false, "showAgeRange": false, "showGender": false, - "showActivityClass": false, "showVO2Max": false, "showPersonalRecords": false, - "showLast12Months": false, "showLifetimeTotals": false, "showUpcomingEvents": - false, "showRecentFavorites": false, "showRecentDevice": false, "showRecentGear": - false, "showBadges": true, "otherActivity": null, "otherPrimaryActivity": - null, "otherMotivation": null, "userRoles": ["SCOPE_ATP_READ", "SCOPE_ATP_WRITE", - "SCOPE_COMMUNITY_COURSE_READ", "SCOPE_COMMUNITY_COURSE_WRITE", "SCOPE_CONNECT_READ", - "SCOPE_CONNECT_WRITE", "SCOPE_DT_CLIENT_ANALYTICS_WRITE", "SCOPE_GARMINPAY_READ", - "SCOPE_GARMINPAY_WRITE", "SCOPE_GCOFFER_READ", "SCOPE_GCOFFER_WRITE", "SCOPE_GHS_SAMD", - "SCOPE_GHS_UPLOAD", "SCOPE_GOLF_API_READ", "SCOPE_GOLF_API_WRITE", "SCOPE_INSIGHTS_READ", - "SCOPE_INSIGHTS_WRITE", "SCOPE_PRODUCT_SEARCH_READ", "ROLE_CONNECTUSER", "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", "ROLE_OUTDOOR_USER", "ROLE_CONNECT_2_USER", "ROLE_TACX_APP_USER"], - "nameApproved": true, "userProfileFullName": "Matin Tamizi", "makeGolfScorecardsPrivate": - true, "allowGolfLiveScoring": false, "allowGolfScoringByConnections": true, - "userLevel": 3, "userPoint": 117, "levelUpdateDate": "2020-12-12T15:20:38.0", - "levelIsViewed": false, "levelPointThreshold": 140, "userPointOffset": 0, - "userPro": false}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f967264a894469e-DFW - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sun, 20 Aug 2023 00:16:18 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=Pplw7XeFrFBQGsxhQbxmv6CyYuk9Au5dsqX0wTdZOTBdwFHJIHPyHFODx%2BpAZvXGIlDawmircK1HaY6PEPvrrtS8dhI71CtDP%2BL6wnE7Zg3wfBaaMSALs4H%2BryDn4GMgQEA6q%2FxJmg%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - _cfuvid=SANITIZED; path=SANITIZED; domain=SANITIZED; HttpOnly; Secure; SameSite=SANITIZED - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/userprofile/user-settings - response: - body: - string: '{"id": 2591602, "userData": {"gender": "MALE", "weight": 79800.0, "height": - 182.0, "timeFormat": "time_twenty_four_hr", "birthDate": "1984-10-17", "measurementSystem": - "metric", "activityLevel": null, "handedness": "RIGHT", "powerFormat": {"formatId": - 30, "formatKey": "watt", "minFraction": 0, "maxFraction": 0, "groupingUsed": - true, "displayFormat": null}, "heartRateFormat": {"formatId": 21, "formatKey": - "bpm", "minFraction": 0, "maxFraction": 0, "groupingUsed": false, "displayFormat": - null}, "firstDayOfWeek": {"dayId": 2, "dayName": "sunday", "sortOrder": 2, - "isPossibleFirstDay": true}, "vo2MaxRunning": 46.0, "vo2MaxCycling": null, - "lactateThresholdSpeed": 0.34722125000000004, "lactateThresholdHeartRate": - null, "diveNumber": null, "intensityMinutesCalcMethod": "AUTO", "moderateIntensityMinutesHrZone": - 3, "vigorousIntensityMinutesHrZone": 4, "hydrationMeasurementUnit": "milliliter", - "hydrationContainers": [], "hydrationAutoGoalEnabled": true, "firstbeatMaxStressScore": - null, "firstbeatCyclingLtTimestamp": null, "firstbeatRunningLtTimestamp": - 1044719868, "thresholdHeartRateAutoDetected": true, "ftpAutoDetected": null, - "trainingStatusPausedDate": null, "weatherLocation": {"useFixedLocation": - false, "latitude": null, "longitude": null, "locationName": null, "isoCountryCode": - null, "postalCode": null}, "golfDistanceUnit": "statute_us", "golfElevationUnit": - null, "golfSpeedUnit": null, "externalBottomTime": null}, "userSleep": {"sleepTime": - 80400, "defaultSleepTime": false, "wakeTime": 24000, "defaultWakeTime": false}, - "connectDate": null, "sourceType": null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f9672657a45b6eb-QRO - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sun, 20 Aug 2023 00:16:18 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=5vujgX3CuoVNNop66LDmTlEIKzAwMQEOYVPexU9pSvaK9TDGrmKheF16geBIkb%2FMB0%2FrnXiSx%2F3%2BAeC1NTZi3v5AMfO727UmaRyrNxryz6nCDfIYsI4RdlD2cAO%2Fwnis%2FvgBT3%2FtEg%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/wellness-service/wellness/daily/respiration/2023-07-01 - response: - body: - string: '{"userProfilePK": 2591602, "calendarDate": "2023-07-01", "startTimestampGMT": - "2023-07-01T06:00:00.0", "endTimestampGMT": "2023-07-02T06:00:00.0", "startTimestampLocal": - "2023-07-01T00:00:00.0", "endTimestampLocal": "2023-07-02T00:00:00.0", "sleepStartTimestampGMT": - "2023-07-01T06:40:00.0", "sleepEndTimestampGMT": "2023-07-01T11:26:00.0", - "sleepStartTimestampLocal": "2023-07-01T00:40:00.0", "sleepEndTimestampLocal": - "2023-07-01T05:26:00.0", "tomorrowSleepStartTimestampGMT": "2023-07-02T06:04:00.0", - "tomorrowSleepEndTimestampGMT": "2023-07-02T11:49:00.0", "tomorrowSleepStartTimestampLocal": - "2023-07-02T00:04:00.0", "tomorrowSleepEndTimestampLocal": "2023-07-02T05:49:00.0", - "lowestRespirationValue": 9.0, "highestRespirationValue": 21.0, "avgWakingRespirationValue": - 13.0, "avgSleepRespirationValue": 15.0, "avgTomorrowSleepRespirationValue": - 15.0, "respirationValueDescriptorsDTOList": [{"key": "timestamp", "index": - 0}, {"key": "respiration", "index": 1}], "respirationValuesArray": [[1688191320000, - 13.0], [1688191440000, 14.0], [1688191560000, 14.0], [1688191680000, 16.0], - [1688191800000, 17.0], [1688191920000, 15.0], [1688192040000, 15.0], [1688192160000, - 14.0], [1688192280000, 14.0], [1688192400000, 14.0], [1688192520000, 14.0], - [1688192640000, 13.0], [1688192760000, 13.0], [1688192880000, 13.0], [1688193000000, - 13.0], [1688193120000, 14.0], [1688193240000, 15.0], [1688193360000, 14.0], - [1688193480000, 17.0], [1688193600000, 17.0], [1688193720000, 15.0], [1688193840000, - 14.0], [1688193960000, 14.0], [1688194080000, 14.0], [1688194200000, 15.0], - [1688194320000, 14.0], [1688194440000, 13.0], [1688194560000, 16.0], [1688194680000, - 15.0], [1688194800000, 14.0], [1688194920000, 15.0], [1688195040000, 15.0], - [1688195160000, 15.0], [1688195280000, 15.0], [1688195400000, 15.0], [1688195520000, - 15.0], [1688195640000, 15.0], [1688195760000, 15.0], [1688195880000, 15.0], - [1688196000000, 15.0], [1688196120000, 15.0], [1688196240000, 15.0], [1688196360000, - 15.0], [1688196480000, 15.0], [1688196600000, 15.0], [1688196720000, 15.0], - [1688196840000, 15.0], [1688196960000, 15.0], [1688197080000, 15.0], [1688197200000, - 15.0], [1688197320000, 15.0], [1688197440000, 15.0], [1688197560000, 15.0], - [1688197680000, 14.0], [1688197800000, 14.0], [1688197920000, 13.0], [1688198040000, - 14.0], [1688198160000, 14.0], [1688198280000, 14.0], [1688198400000, 13.0], - [1688198520000, 15.0], [1688198640000, 14.0], [1688198760000, 15.0], [1688198880000, - 15.0], [1688199000000, 15.0], [1688199120000, 15.0], [1688199240000, 15.0], - [1688199360000, 15.0], [1688199480000, 15.0], [1688199600000, 16.0], [1688199720000, - 15.0], [1688199840000, 15.0], [1688199960000, 14.0], [1688200080000, 15.0], - [1688200200000, 14.0], [1688200320000, 15.0], [1688200440000, 15.0], [1688200560000, - 15.0], [1688200680000, 15.0], [1688200800000, 15.0], [1688200920000, 15.0], - [1688201040000, 15.0], [1688201160000, 15.0], [1688201280000, 15.0], [1688201400000, - 14.0], [1688201520000, 15.0], [1688201640000, 15.0], [1688201760000, 15.0], - [1688201880000, 15.0], [1688202000000, 14.0], [1688202120000, 14.0], [1688202240000, - 15.0], [1688202360000, 15.0], [1688202480000, 13.0], [1688202600000, 13.0], - [1688202720000, 14.0], [1688202840000, 14.0], [1688202960000, 14.0], [1688203080000, - 14.0], [1688203200000, 14.0], [1688203320000, 13.0], [1688203440000, 13.0], - [1688203560000, 13.0], [1688203680000, 13.0], [1688203800000, 15.0], [1688203920000, - 15.0], [1688204040000, 15.0], [1688204160000, 15.0], [1688204280000, 15.0], - [1688204400000, 14.0], [1688204520000, 14.0], [1688204640000, 14.0], [1688204760000, - 13.0], [1688204880000, 15.0], [1688205000000, 15.0], [1688205120000, 15.0], - [1688205240000, 15.0], [1688205360000, 15.0], [1688205480000, 15.0], [1688205600000, - 14.0], [1688205720000, 15.0], [1688205840000, 15.0], [1688205960000, 14.0], - [1688206080000, 14.0], [1688206200000, 15.0], [1688206320000, 15.0], [1688206440000, - 14.0], [1688206560000, 15.0], [1688206680000, 15.0], [1688206800000, 15.0], - [1688206920000, 15.0], [1688207040000, 14.0], [1688207160000, 14.0], [1688207280000, - 15.0], [1688207400000, 15.0], [1688207520000, 15.0], [1688207640000, 14.0], - [1688207760000, 14.0], [1688207880000, 15.0], [1688208000000, 15.0], [1688208120000, - 15.0], [1688208240000, 15.0], [1688208360000, 16.0], [1688208480000, 15.0], - [1688208600000, 14.0], [1688208720000, 14.0], [1688208840000, 15.0], [1688208960000, - 14.0], [1688209080000, 15.0], [1688209200000, 15.0], [1688209320000, 14.0], - [1688209440000, 12.0], [1688209560000, 12.0], [1688209680000, 14.0], [1688209800000, - 14.0], [1688209920000, 15.0], [1688210040000, 15.0], [1688210160000, 15.0], - [1688210280000, 15.0], [1688210400000, 14.0], [1688210520000, 14.0], [1688210640000, - 14.0], [1688210760000, 15.0], [1688210880000, 14.0], [1688211000000, -1.0], - [1688211120000, -1.0], [1688211240000, -1.0], [1688211360000, -1.0], [1688211480000, - 13.0], [1688211600000, 13.0], [1688211720000, 14.0], [1688211840000, 13.0], - [1688211960000, -1.0], [1688212080000, 14.0], [1688212200000, 14.0], [1688212320000, - 13.0], [1688212440000, 14.0], [1688212560000, 15.0], [1688212680000, 14.0], - [1688212800000, 16.0], [1688212920000, 14.0], [1688213040000, 14.0], [1688213160000, - 14.0], [1688213280000, 15.0], [1688213400000, 14.0], [1688213520000, 14.0], - [1688213640000, 16.0], [1688213760000, 16.0], [1688213880000, 15.0], [1688214000000, - 16.0], [1688214120000, 16.0], [1688214240000, 15.0], [1688214360000, 15.0], - [1688214480000, 15.0], [1688214600000, 13.0], [1688214720000, 12.0], [1688214840000, - 12.0], [1688214960000, 13.0], [1688215080000, 13.0], [1688215200000, 14.0], - [1688215320000, 14.0], [1688215440000, 13.0], [1688215560000, 13.0], [1688215680000, - 13.0], [1688215800000, 13.0], [1688215920000, 14.0], [1688216040000, 14.0], - [1688216160000, 14.0], [1688216280000, 13.0], [1688216400000, 13.0], [1688216520000, - 14.0], [1688216640000, 14.0], [1688216760000, 13.0], [1688216880000, 13.0], - [1688217000000, 12.0], [1688217120000, 12.0], [1688217240000, 13.0], [1688217360000, - 13.0], [1688217480000, 14.0], [1688217600000, 13.0], [1688217720000, 13.0], - [1688217840000, 13.0], [1688217960000, 10.0], [1688218080000, 11.0], [1688218200000, - 11.0], [1688218320000, 10.0], [1688218440000, -1.0], [1688218560000, 14.0], - [1688218680000, -1.0], [1688218800000, 14.0], [1688218920000, 14.0], [1688219040000, - 13.0], [1688219160000, -1.0], [1688219280000, 13.0], [1688219400000, 13.0], - [1688219520000, -1.0], [1688219640000, -1.0], [1688219760000, -1.0], [1688219880000, - 14.0], [1688220000000, 14.0], [1688220120000, 14.0], [1688220240000, 13.0], - [1688220360000, 13.0], [1688220480000, 13.0], [1688220600000, 12.0], [1688220720000, - -1.0], [1688220840000, -1.0], [1688220960000, -1.0], [1688221080000, -1.0], - [1688221200000, 13.0], [1688221320000, -1.0], [1688221440000, -1.0], [1688221560000, - -1.0], [1688221680000, 14.0], [1688221800000, -1.0], [1688221920000, -1.0], - [1688222040000, -1.0], [1688222160000, -1.0], [1688222280000, -1.0], [1688222400000, - -1.0], [1688222520000, 13.0], [1688222640000, 14.0], [1688222760000, 14.0], - [1688222880000, 14.0], [1688223000000, 14.0], [1688223120000, 15.0], [1688223240000, - -1.0], [1688223360000, -1.0], [1688223480000, -1.0], [1688223600000, 14.0], - [1688223720000, 14.0], [1688223840000, -1.0], [1688223960000, -1.0], [1688224080000, - 14.0], [1688224200000, -1.0], [1688224320000, 14.0], [1688224440000, 13.0], - [1688224560000, 13.0], [1688224680000, 14.0], [1688224800000, 14.0], [1688224920000, - 14.0], [1688225040000, 13.0], [1688225160000, 14.0], [1688225280000, 15.0], - [1688225400000, 14.0], [1688225520000, 13.0], [1688225640000, 14.0], [1688225760000, - 14.0], [1688225880000, -1.0], [1688226000000, -1.0], [1688226120000, 15.0], - [1688226240000, 14.0], [1688226360000, 13.0], [1688226480000, 14.0], [1688226600000, - -1.0], [1688226720000, -1.0], [1688226840000, -1.0], [1688226960000, 15.0], - [1688227080000, 15.0], [1688227200000, 13.0], [1688227320000, -1.0], [1688227440000, - -1.0], [1688227560000, -1.0], [1688227680000, -1.0], [1688227800000, -1.0], - [1688227920000, -1.0], [1688228040000, -1.0], [1688228160000, -1.0], [1688228280000, - 13.0], [1688228400000, 12.0], [1688228520000, 12.0], [1688228640000, 13.0], - [1688228760000, 13.0], [1688228880000, 14.0], [1688229000000, 13.0], [1688229120000, - 12.0], [1688229240000, -1.0], [1688229360000, 13.0], [1688229480000, 13.0], - [1688229600000, 13.0], [1688229720000, 13.0], [1688229840000, -1.0], [1688229960000, - 14.0], [1688230080000, -1.0], [1688230200000, 12.0], [1688230320000, -1.0], - [1688230440000, -1.0], [1688230560000, -1.0], [1688230680000, -1.0], [1688230800000, - -1.0], [1688230920000, 14.0], [1688231040000, 14.0], [1688231160000, 12.0], - [1688231280000, 13.0], [1688231400000, 14.0], [1688231520000, -1.0], [1688231640000, - 14.0], [1688231760000, 13.0], [1688231880000, 13.0], [1688232000000, 14.0], - [1688232120000, 14.0], [1688232240000, 14.0], [1688232360000, 14.0], [1688232480000, - 14.0], [1688232600000, 14.0], [1688232720000, 14.0], [1688232840000, 14.0], - [1688232960000, 13.0], [1688233080000, 14.0], [1688233200000, 13.0], [1688233320000, - 13.0], [1688233440000, 14.0], [1688233560000, 14.0], [1688233680000, 14.0], - [1688233800000, 14.0], [1688233920000, 14.0], [1688234040000, 13.0], [1688234160000, - 13.0], [1688234280000, 14.0], [1688234400000, 14.0], [1688234520000, 14.0], - [1688234640000, 13.0], [1688234760000, 14.0], [1688234880000, 14.0], [1688235000000, - 15.0], [1688235120000, 14.0], [1688235240000, 13.0], [1688235360000, 12.0], - [1688235480000, 12.0], [1688235600000, 15.0], [1688235720000, 15.0], [1688235840000, - 13.0], [1688235960000, 13.0], [1688236080000, 13.0], [1688236200000, 13.0], - [1688236320000, 13.0], [1688236440000, 13.0], [1688236560000, 14.0], [1688236680000, - 14.0], [1688236800000, 14.0], [1688236920000, 15.0], [1688237040000, 13.0], - [1688237160000, 13.0], [1688237280000, 14.0], [1688237400000, 13.0], [1688237520000, - 13.0], [1688237640000, 14.0], [1688237760000, 14.0], [1688237880000, 13.0], - [1688238000000, -1.0], [1688238120000, -1.0], [1688238240000, -1.0], [1688238360000, - -1.0], [1688238480000, -1.0], [1688238600000, -1.0], [1688238720000, -1.0], - [1688238840000, -1.0], [1688238960000, 16.0], [1688239080000, 16.0], [1688239200000, - -2.0], [1688239320000, -2.0], [1688239440000, -1.0], [1688239560000, -1.0], - [1688239680000, -1.0], [1688239800000, 14.0], [1688239920000, 14.0], [1688240040000, - -1.0], [1688240160000, -1.0], [1688240280000, -1.0], [1688240400000, -1.0], - [1688240520000, 13.0], [1688240640000, 13.0], [1688240760000, 13.0], [1688240880000, - -1.0], [1688241000000, -1.0], [1688241120000, -1.0], [1688241240000, -1.0], - [1688241360000, -1.0], [1688241480000, 14.0], [1688241600000, 15.0], [1688241720000, - 14.0], [1688241840000, 14.0], [1688241960000, 13.0], [1688242080000, 12.0], - [1688242200000, 13.0], [1688242320000, 13.0], [1688242440000, 13.0], [1688242560000, - 14.0], [1688242680000, 14.0], [1688242800000, 13.0], [1688242920000, 13.0], - [1688243040000, -1.0], [1688243160000, -1.0], [1688243280000, 13.0], [1688243400000, - 13.0], [1688243520000, 14.0], [1688243640000, 13.0], [1688243760000, 14.0], - [1688243880000, 12.0], [1688244000000, 12.0], [1688244120000, 13.0], [1688244240000, - 14.0], [1688244360000, 13.0], [1688244480000, -1.0], [1688244600000, 13.0], - [1688244720000, 15.0], [1688244840000, -1.0], [1688244960000, 14.0], [1688245080000, - 14.0], [1688245200000, 13.0], [1688245320000, 13.0], [1688245440000, -1.0], - [1688245560000, -1.0], [1688245680000, -1.0], [1688245800000, 13.0], [1688245920000, - 14.0], [1688246040000, 14.0], [1688246160000, 14.0], [1688246280000, 13.0], - [1688246400000, 13.0], [1688246520000, 13.0], [1688246640000, 13.0], [1688246760000, - 13.0], [1688246880000, 13.0], [1688247000000, 13.0], [1688247120000, 13.0], - [1688247240000, 14.0], [1688247360000, 13.0], [1688247480000, 12.0], [1688247600000, - 11.0], [1688247720000, 12.0], [1688247840000, -1.0], [1688247960000, -1.0], - [1688248080000, -1.0], [1688248200000, 14.0], [1688248320000, 13.0], [1688248440000, - 13.0], [1688248560000, -1.0], [1688248680000, -1.0], [1688248800000, 14.0], - [1688248920000, 13.0], [1688249040000, 12.0], [1688249160000, 12.0], [1688249280000, - -1.0], [1688249400000, -1.0], [1688249520000, 14.0], [1688249640000, 14.0], - [1688249760000, 13.0], [1688249880000, 13.0], [1688250000000, -1.0], [1688250120000, - -1.0], [1688250240000, -1.0], [1688250360000, -1.0], [1688250480000, 13.0], - [1688250600000, 13.0], [1688250720000, -1.0], [1688250840000, -1.0], [1688250960000, - -1.0], [1688251080000, 12.0], [1688251200000, 13.0], [1688251320000, -1.0], - [1688251440000, -1.0], [1688251560000, 14.0], [1688251680000, 13.0], [1688251800000, - 14.0], [1688251920000, 13.0], [1688252040000, 14.0], [1688252160000, -1.0], - [1688252280000, 14.0], [1688252400000, 13.0], [1688252520000, -1.0], [1688252640000, - 13.0], [1688252760000, 13.0], [1688252880000, 13.0], [1688253000000, -1.0], - [1688253120000, 13.0], [1688253240000, -1.0], [1688253360000, -1.0], [1688253480000, - -1.0], [1688253600000, -1.0], [1688253720000, 13.0], [1688253840000, 13.0], - [1688253960000, 13.0], [1688254080000, 13.0], [1688254200000, 14.0], [1688254320000, - -1.0], [1688254440000, -1.0], [1688254560000, 14.0], [1688254680000, -1.0], - [1688254800000, -1.0], [1688254920000, -1.0], [1688255040000, -1.0], [1688255160000, - 13.0], [1688255280000, -1.0], [1688255400000, 14.0], [1688255520000, -1.0], - [1688255640000, -1.0], [1688255760000, -1.0], [1688255880000, -1.0], [1688256000000, - 12.0], [1688256120000, 14.0], [1688256240000, 14.0], [1688256360000, 13.0], - [1688256480000, 12.0], [1688256600000, 15.0], [1688256720000, 20.0], [1688256840000, - 21.0], [1688256960000, 21.0], [1688257080000, 21.0], [1688257200000, 20.0], - [1688257320000, 18.0], [1688257440000, 16.0], [1688257560000, 14.0], [1688257680000, - 13.0], [1688257800000, 13.0], [1688257920000, 13.0], [1688258040000, 13.0], - [1688258160000, 13.0], [1688258280000, 12.0], [1688258400000, 12.0], [1688258520000, - 13.0], [1688258640000, 12.0], [1688258760000, 11.0], [1688258880000, 11.0], - [1688259000000, 13.0], [1688259120000, -1.0], [1688259240000, 14.0], [1688259360000, - 13.0], [1688259480000, 13.0], [1688259600000, 12.0], [1688259720000, 13.0], - [1688259840000, -1.0], [1688259960000, 13.0], [1688260080000, 14.0], [1688260200000, - 13.0], [1688260320000, 13.0], [1688260440000, 13.0], [1688260560000, 12.0], - [1688260680000, 13.0], [1688260800000, 13.0], [1688260920000, 13.0], [1688261040000, - 12.0], [1688261160000, 13.0], [1688261280000, 11.0], [1688261400000, 10.0], - [1688261520000, 11.0], [1688261640000, 13.0], [1688261760000, 14.0], [1688261880000, - 13.0], [1688262000000, 14.0], [1688262120000, -1.0], [1688262240000, -1.0], - [1688262360000, 13.0], [1688262480000, 14.0], [1688262600000, -1.0], [1688262720000, - 13.0], [1688262840000, 13.0], [1688262960000, -1.0], [1688263080000, -1.0], - [1688263200000, 12.0], [1688263320000, 14.0], [1688263440000, 14.0], [1688263560000, - 13.0], [1688263680000, 12.0], [1688263800000, 12.0], [1688263920000, 13.0], - [1688264040000, 13.0], [1688264160000, 13.0], [1688264280000, 13.0], [1688264400000, - 13.0], [1688264520000, 13.0], [1688264640000, 13.0], [1688264760000, 12.0], - [1688264880000, 12.0], [1688265000000, -1.0], [1688265120000, 14.0], [1688265240000, - 14.0], [1688265360000, 15.0], [1688265480000, 14.0], [1688265600000, 13.0], - [1688265720000, 13.0], [1688265840000, 13.0], [1688265960000, 13.0], [1688266080000, - 13.0], [1688266200000, 13.0], [1688266320000, 13.0], [1688266440000, 13.0], - [1688266560000, 13.0], [1688266680000, 13.0], [1688266800000, 13.0], [1688266920000, - 13.0], [1688267040000, 12.0], [1688267160000, 13.0], [1688267280000, 12.0], - [1688267400000, 11.0], [1688267520000, 10.0], [1688267640000, 10.0], [1688267760000, - 10.0], [1688267880000, 13.0], [1688268000000, 13.0], [1688268120000, 12.0], - [1688268240000, 12.0], [1688268360000, 14.0], [1688268480000, 14.0], [1688268600000, - 13.0], [1688268720000, 13.0], [1688268840000, 13.0], [1688268960000, 12.0], - [1688269080000, 12.0], [1688269200000, -1.0], [1688269320000, -1.0], [1688269440000, - -1.0], [1688269560000, -1.0], [1688269680000, -1.0], [1688269800000, 12.0], - [1688269920000, 13.0], [1688270040000, -1.0], [1688270160000, -1.0], [1688270280000, - 13.0], [1688270400000, 12.0], [1688270520000, 13.0], [1688270640000, 13.0], - [1688270760000, 13.0], [1688270880000, 14.0], [1688271000000, 13.0], [1688271120000, - 14.0], [1688271240000, 13.0], [1688271360000, 13.0], [1688271480000, 13.0], - [1688271600000, 12.0], [1688271720000, 13.0], [1688271840000, 14.0], [1688271960000, - 15.0], [1688272080000, 15.0], [1688272200000, 13.0], [1688272320000, 13.0], - [1688272440000, 13.0], [1688272560000, 13.0], [1688272680000, 14.0], [1688272800000, - 14.0], [1688272920000, 14.0], [1688273040000, 13.0], [1688273160000, 14.0], - [1688273280000, 13.0], [1688273400000, 12.0], [1688273520000, 13.0], [1688273640000, - 13.0], [1688273760000, 14.0], [1688273880000, 13.0], [1688274000000, 13.0], - [1688274120000, 14.0], [1688274240000, -1.0], [1688274360000, -1.0], [1688274480000, - 14.0], [1688274600000, -1.0], [1688274720000, -1.0], [1688274840000, -1.0], - [1688274960000, -1.0], [1688275080000, -1.0], [1688275200000, -1.0], [1688275320000, - -1.0], [1688275440000, -1.0], [1688275560000, 14.0], [1688275680000, 14.0], - [1688275800000, 14.0], [1688275920000, 15.0], [1688276040000, 14.0], [1688276160000, - 14.0], [1688276280000, -1.0], [1688276400000, 12.0], [1688276520000, -1.0], - [1688276640000, 11.0], [1688276760000, 10.0], [1688276880000, 11.0], [1688277000000, - -1.0], [1688277120000, 14.0], [1688277240000, -1.0], [1688277360000, 14.0], - [1688277480000, 16.0], [1688277600000, 18.0]]}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f9672679aa046e0-DFW - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sun, 20 Aug 2023 00:16:19 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=tIdu9j1vxLwcmOid2VTk%2FceMF0Fz09w5lrJ1ksDogFxdYKEka2JL6V3hM6y7gq0B2MnIbz9Y3X95pO4FYoFx49MKQZflS7VvXmKMtGQr1hUAZJ6rsxDehQfEtNONIQWKA8jSCYbhIg%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -version: 1 diff --git a/python-garminconnect/tests/cassettes/test_spo2_data.yaml b/python-garminconnect/tests/cassettes/test_spo2_data.yaml deleted file mode 100644 index 623444e..0000000 --- a/python-garminconnect/tests/cassettes/test_spo2_data.yaml +++ /dev/null @@ -1,255 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/socialProfile - response: - body: - string: '{"id": 3154645, "profileId": 2591602, "garminGUID": "0690cc1d-d23d-4412-b027-80fd4ed1c0f6", - "displayName": "mtamizi", "fullName": "Matin Tamizi", "userName": "mtamizi", - "profileImageUuid": "73240e81-6e4d-43fc-8af8-c8f6c51b3b8f", "profileImageUrlLarge": - "https://s3.amazonaws.com/garmin-connect-prod/profile_images/73240e81-6e4d-43fc-8af8-c8f6c51b3b8f-2591602.png", - "profileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/685a19e9-a7be-4a11-9bf9-faca0c5d1f1a-2591602.png", - "profileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/6302f021-0ec7-4dc9-b0c3-d5a19bc5a08c-2591602.png", - "location": "Ciudad de M\u00e9xico, CDMX", "facebookUrl": null, "twitterUrl": - null, "personalWebsite": null, "motivation": null, "bio": null, "primaryActivity": - null, "favoriteActivityTypes": [], "runningTrainingSpeed": 0.0, "cyclingTrainingSpeed": - 0.0, "favoriteCyclingActivityTypes": [], "cyclingClassification": null, "cyclingMaxAvgPower": - 0.0, "swimmingTrainingSpeed": 0.0, "profileVisibility": "private", "activityStartVisibility": - "private", "activityMapVisibility": "public", "courseVisibility": "public", - "activityHeartRateVisibility": "public", "activityPowerVisibility": "public", - "badgeVisibility": "private", "showAge": false, "showWeight": false, "showHeight": - false, "showWeightClass": false, "showAgeRange": false, "showGender": false, - "showActivityClass": false, "showVO2Max": false, "showPersonalRecords": false, - "showLast12Months": false, "showLifetimeTotals": false, "showUpcomingEvents": - false, "showRecentFavorites": false, "showRecentDevice": false, "showRecentGear": - false, "showBadges": true, "otherActivity": null, "otherPrimaryActivity": - null, "otherMotivation": null, "userRoles": ["SCOPE_ATP_READ", "SCOPE_ATP_WRITE", - "SCOPE_COMMUNITY_COURSE_READ", "SCOPE_COMMUNITY_COURSE_WRITE", "SCOPE_CONNECT_READ", - "SCOPE_CONNECT_WRITE", "SCOPE_DT_CLIENT_ANALYTICS_WRITE", "SCOPE_GARMINPAY_READ", - "SCOPE_GARMINPAY_WRITE", "SCOPE_GCOFFER_READ", "SCOPE_GCOFFER_WRITE", "SCOPE_GHS_SAMD", - "SCOPE_GHS_UPLOAD", "SCOPE_GOLF_API_READ", "SCOPE_GOLF_API_WRITE", "SCOPE_INSIGHTS_READ", - "SCOPE_INSIGHTS_WRITE", "SCOPE_PRODUCT_SEARCH_READ", "ROLE_CONNECTUSER", "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", "ROLE_OUTDOOR_USER", "ROLE_CONNECT_2_USER", "ROLE_TACX_APP_USER"], - "nameApproved": true, "userProfileFullName": "Matin Tamizi", "makeGolfScorecardsPrivate": - true, "allowGolfLiveScoring": false, "allowGolfScoringByConnections": true, - "userLevel": 3, "userPoint": 117, "levelUpdateDate": "2020-12-12T15:20:38.0", - "levelIsViewed": false, "levelPointThreshold": 140, "userPointOffset": 0, - "userPro": false}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f96736daf684654-DFW - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sun, 20 Aug 2023 00:17:01 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=8hCnedDFmiM8JESa95GBirj4lArL2UXpU0KwC2gVYU3RYcM%2B0nwXKnMDNu9pVkGr%2FeJxTSYq6P7DvEMgBMim08CRZWnwrRmrr5X3gk90UQ4KtsWoLpGum83XHfS4%2B9Umi%2B6ecrhYFA%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - _cfuvid=SANITIZED; path=SANITIZED; domain=SANITIZED; HttpOnly; Secure; SameSite=SANITIZED - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/userprofile/user-settings - response: - body: - string: '{"id": 2591602, "userData": {"gender": "MALE", "weight": 79800.0, "height": - 182.0, "timeFormat": "time_twenty_four_hr", "birthDate": "1984-10-17", "measurementSystem": - "metric", "activityLevel": null, "handedness": "RIGHT", "powerFormat": {"formatId": - 30, "formatKey": "watt", "minFraction": 0, "maxFraction": 0, "groupingUsed": - true, "displayFormat": null}, "heartRateFormat": {"formatId": 21, "formatKey": - "bpm", "minFraction": 0, "maxFraction": 0, "groupingUsed": false, "displayFormat": - null}, "firstDayOfWeek": {"dayId": 2, "dayName": "sunday", "sortOrder": 2, - "isPossibleFirstDay": true}, "vo2MaxRunning": 46.0, "vo2MaxCycling": null, - "lactateThresholdSpeed": 0.34722125000000004, "lactateThresholdHeartRate": - null, "diveNumber": null, "intensityMinutesCalcMethod": "AUTO", "moderateIntensityMinutesHrZone": - 3, "vigorousIntensityMinutesHrZone": 4, "hydrationMeasurementUnit": "milliliter", - "hydrationContainers": [], "hydrationAutoGoalEnabled": true, "firstbeatMaxStressScore": - null, "firstbeatCyclingLtTimestamp": null, "firstbeatRunningLtTimestamp": - 1044719868, "thresholdHeartRateAutoDetected": true, "ftpAutoDetected": null, - "trainingStatusPausedDate": null, "weatherLocation": {"useFixedLocation": - false, "latitude": null, "longitude": null, "locationName": null, "isoCountryCode": - null, "postalCode": null}, "golfDistanceUnit": "statute_us", "golfElevationUnit": - null, "golfSpeedUnit": null, "externalBottomTime": null}, "userSleep": {"sleepTime": - 80400, "defaultSleepTime": false, "wakeTime": 24000, "defaultWakeTime": false}, - "connectDate": null, "sourceType": null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f96736f6f5c46cb-DFW - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sun, 20 Aug 2023 00:17:01 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=yMear%2F3f3GXlzgu943Sz3ohKAGgRVM3hJhJSUve6tbFeDHwUZEc4rdCK1BpAgtN%2BOj%2BlVeGJ8kqjxxewjevaDx75HCQwa9kJlzP8NX%2FU1R5o6Zgg65ZA0iTN2Mr7SSKnKrTpLTUHxA%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/wellness-service/wellness/daily/spo2/2023-07-01 - response: - body: - string: '{"userProfilePK": 2591602, "calendarDate": "2023-07-01", "startTimestampGMT": - "2023-07-01T06:00:00.0", "endTimestampGMT": "2023-07-02T06:00:00.0", "startTimestampLocal": - "2023-07-01T00:00:00.0", "endTimestampLocal": "2023-07-02T00:00:00.0", "sleepStartTimestampGMT": - "2023-07-01T06:40:00.0", "sleepEndTimestampGMT": "2023-07-01T11:26:00.0", - "sleepStartTimestampLocal": "2023-07-01T00:40:00.0", "sleepEndTimestampLocal": - "2023-07-01T05:26:00.0", "tomorrowSleepStartTimestampGMT": "2023-07-02T06:04:00.0", - "tomorrowSleepEndTimestampGMT": "2023-07-02T11:49:00.0", "tomorrowSleepStartTimestampLocal": - "2023-07-02T00:04:00.0", "tomorrowSleepEndTimestampLocal": "2023-07-02T05:49:00.0", - "averageSpO2": 92.0, "lowestSpO2": 85, "lastSevenDaysAvgSpO2": 92.14285714285714, - "latestSpO2": 86, "latestSpO2TimestampGMT": "2023-07-02T06:00:00.0", "latestSpO2TimestampLocal": - "2023-07-02T00:00:00.0", "avgSleepSpO2": 91.0, "avgTomorrowSleepSpO2": 91.0, - "spO2ValueDescriptorsDTOList": [{"spo2ValueDescriptorIndex": 0, "spo2ValueDescriptorKey": - "timestamp"}, {"spo2ValueDescriptorIndex": 1, "spo2ValueDescriptorKey": "spo2Reading"}, - {"spo2ValueDescriptorIndex": 2, "spo2ValueDescriptorKey": "singleReadingPlottable"}], - "spO2SingleValues": null, "continuousReadingDTOList": null, "spO2HourlyAverages": - [[1688191200000, 93], [1688194800000, 92], [1688198400000, 92], [1688202000000, - 91], [1688205600000, 92], [1688209200000, 92], [1688212800000, 95], [1688270400000, - 92], [1688274000000, 91]]}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f9673718c4e4612-DFW - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sun, 20 Aug 2023 00:17:01 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=4V3RixJ95rW1%2FJhQSQVcbd9qjYC6BEbSquD1EWxS7UYGNW9u2BCAOZjGQzknvJvD29LUUQ6wLLO6yz3WS2tgCV8QpDbuJtqY%2Fww%2BLJHPZ5QJOTYprKzzieFQMixW%2FyTKOdp9hwJL4A%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -version: 1 diff --git a/python-garminconnect/tests/cassettes/test_stats.yaml b/python-garminconnect/tests/cassettes/test_stats.yaml deleted file mode 100644 index a2fb855..0000000 --- a/python-garminconnect/tests/cassettes/test_stats.yaml +++ /dev/null @@ -1,372 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - python-requests/2.31.0 - method: GET - uri: https://thegarth.s3.amazonaws.com/oauth_consumer.json - response: - body: - string: '{"consumer_key": "SANITIZED", "consumer_secret": "SANITIZED"}' - headers: - Accept-Ranges: - - bytes - Content-Length: - - '124' - Content-Type: - - application/json - Date: - - Fri, 18 Aug 2023 03:34:01 GMT - ETag: - - '"20240b1013cb35419bb5b2cff1407a4e"' - Last-Modified: - - Thu, 03 Aug 2023 00:16:11 GMT - Server: - - AmazonS3 - x-amz-id-2: - - R7zVwQSGGFYnP/OaY5q6xyh3Gcgk3e9AhBYN1UyITG30CzhxyN27iyRBAY3DYZT+X57gwzt/duk= - x-amz-request-id: - - 36Y608PXR8QXGSCH - x-amz-server-side-encryption: - - AES256 - status: - code: 200 - message: OK -- request: - body: mfa_token=MFA-2032-l6G3RaeR91x4hBZoFvG6onbHvYrSMYAerVc0duF7pywYWLiub1-cas - headers: - Accept: - - !!binary | - Ki8q - Accept-Encoding: - - !!binary | - Z3ppcCwgZGVmbGF0ZQ== - Authorization: - - Bearer SANITIZED - Connection: - - !!binary | - a2VlcC1hbGl2ZQ== - Content-Length: - - '73' - Content-Type: - - !!binary | - YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk - User-Agent: - - !!binary | - Y29tLmdhcm1pbi5hbmRyb2lkLmFwcHMuY29ubmVjdG1vYmlsZQ== - method: POST - uri: https://connectapi.garmin.com/oauth-service/oauth/exchange/user/2.0 - response: - body: - string: '{"scope": "COMMUNITY_COURSE_READ GARMINPAY_WRITE GOLF_API_READ ATP_READ - GHS_SAMD GHS_UPLOAD INSIGHTS_READ COMMUNITY_COURSE_WRITE CONNECT_WRITE GCOFFER_WRITE - GARMINPAY_READ DT_CLIENT_ANALYTICS_WRITE GOLF_API_WRITE INSIGHTS_WRITE PRODUCT_SEARCH_READ - GCOFFER_READ CONNECT_READ ATP_WRITE", "jti": "SANITIZED", "access_token": - "SANITIZED", "token_type": "Bearer", "refresh_token": "SANITIZED", "expires_in": - 102053, "refresh_token_expires_in": 2591999}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f87193f28d7467d-DFW - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Fri, 18 Aug 2023 03:34:01 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=nco%2B%2FkuMyKpMVxzT%2FJAxyVOW%2Fe8ZAHQ1AHfWNJrofA4xi4D1BSDjkBc9%2FPwlsJIMqgDvh7V6U%2FXvVQg7KfEn53ybKccuRCsgWjrBlXlYJonF5XEVndVSsRGi7zFYiG9kZWLFDj2Yng%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Set-Cookie: - - _cfuvid=SANITIZED; path=SANITIZED; domain=SANITIZED; HttpOnly; Secure; SameSite=SANITIZED - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/socialProfile - response: - body: - string: '{"id": 3154645, "profileId": 2591602, "garminGUID": "0690cc1d-d23d-4412-b027-80fd4ed1c0f6", - "displayName": "mtamizi", "fullName": "Matin Tamizi", "userName": "mtamizi", - "profileImageUuid": "73240e81-6e4d-43fc-8af8-c8f6c51b3b8f", "profileImageUrlLarge": - "https://s3.amazonaws.com/garmin-connect-prod/profile_images/73240e81-6e4d-43fc-8af8-c8f6c51b3b8f-2591602.png", - "profileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/685a19e9-a7be-4a11-9bf9-faca0c5d1f1a-2591602.png", - "profileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/6302f021-0ec7-4dc9-b0c3-d5a19bc5a08c-2591602.png", - "location": "Ciudad de M\u00e9xico, CDMX", "facebookUrl": null, "twitterUrl": - null, "personalWebsite": null, "motivation": null, "bio": null, "primaryActivity": - null, "favoriteActivityTypes": [], "runningTrainingSpeed": 0.0, "cyclingTrainingSpeed": - 0.0, "favoriteCyclingActivityTypes": [], "cyclingClassification": null, "cyclingMaxAvgPower": - 0.0, "swimmingTrainingSpeed": 0.0, "profileVisibility": "private", "activityStartVisibility": - "private", "activityMapVisibility": "public", "courseVisibility": "public", - "activityHeartRateVisibility": "public", "activityPowerVisibility": "public", - "badgeVisibility": "private", "showAge": false, "showWeight": false, "showHeight": - false, "showWeightClass": false, "showAgeRange": false, "showGender": false, - "showActivityClass": false, "showVO2Max": false, "showPersonalRecords": false, - "showLast12Months": false, "showLifetimeTotals": false, "showUpcomingEvents": - false, "showRecentFavorites": false, "showRecentDevice": false, "showRecentGear": - false, "showBadges": true, "otherActivity": null, "otherPrimaryActivity": - null, "otherMotivation": null, "userRoles": ["SCOPE_ATP_READ", "SCOPE_ATP_WRITE", - "SCOPE_COMMUNITY_COURSE_READ", "SCOPE_COMMUNITY_COURSE_WRITE", "SCOPE_CONNECT_READ", - "SCOPE_CONNECT_WRITE", "SCOPE_DT_CLIENT_ANALYTICS_WRITE", "SCOPE_GARMINPAY_READ", - "SCOPE_GARMINPAY_WRITE", "SCOPE_GCOFFER_READ", "SCOPE_GCOFFER_WRITE", "SCOPE_GHS_SAMD", - "SCOPE_GHS_UPLOAD", "SCOPE_GOLF_API_READ", "SCOPE_GOLF_API_WRITE", "SCOPE_INSIGHTS_READ", - "SCOPE_INSIGHTS_WRITE", "SCOPE_PRODUCT_SEARCH_READ", "ROLE_CONNECTUSER", "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", "ROLE_OUTDOOR_USER", "ROLE_CONNECT_2_USER", "ROLE_TACX_APP_USER"], - "nameApproved": true, "userProfileFullName": "Matin Tamizi", "makeGolfScorecardsPrivate": - true, "allowGolfLiveScoring": false, "allowGolfScoringByConnections": true, - "userLevel": 3, "userPoint": 117, "levelUpdateDate": "2020-12-12T15:20:38.0", - "levelIsViewed": false, "levelPointThreshold": 140, "userPointOffset": 0, - "userPro": false}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f8719444b88b6ee-QRO - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Fri, 18 Aug 2023 03:34:01 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=FHLUJ6gclJGE2hmU8io0iG5H7mnXiBH%2F0Kxif0JKQQ99ved77vTp3Uu6GnZi1VK5IJBsD7mvDmjuLGLGOtiiVp7ApzQsRlFSLOBPYA5dHnzWKutMrPFA72ot2TqnW6D%2F8alV6614Cg%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - _cfuvid=SANITIZED; path=SANITIZED; domain=SANITIZED; HttpOnly; Secure; SameSite=SANITIZED - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/userprofile/user-settings - response: - body: - string: '{"id": 2591602, "userData": {"gender": "MALE", "weight": 79800.0, "height": - 182.0, "timeFormat": "time_twenty_four_hr", "birthDate": "1984-10-17", "measurementSystem": - "metric", "activityLevel": null, "handedness": "RIGHT", "powerFormat": {"formatId": - 30, "formatKey": "watt", "minFraction": 0, "maxFraction": 0, "groupingUsed": - true, "displayFormat": null}, "heartRateFormat": {"formatId": 21, "formatKey": - "bpm", "minFraction": 0, "maxFraction": 0, "groupingUsed": false, "displayFormat": - null}, "firstDayOfWeek": {"dayId": 2, "dayName": "sunday", "sortOrder": 2, - "isPossibleFirstDay": true}, "vo2MaxRunning": 46.0, "vo2MaxCycling": null, - "lactateThresholdSpeed": 0.34722125000000004, "lactateThresholdHeartRate": - null, "diveNumber": null, "intensityMinutesCalcMethod": "AUTO", "moderateIntensityMinutesHrZone": - 3, "vigorousIntensityMinutesHrZone": 4, "hydrationMeasurementUnit": "milliliter", - "hydrationContainers": [], "hydrationAutoGoalEnabled": true, "firstbeatMaxStressScore": - null, "firstbeatCyclingLtTimestamp": null, "firstbeatRunningLtTimestamp": - 1044719868, "thresholdHeartRateAutoDetected": true, "ftpAutoDetected": null, - "trainingStatusPausedDate": null, "weatherLocation": {"useFixedLocation": - false, "latitude": null, "longitude": null, "locationName": null, "isoCountryCode": - null, "postalCode": null}, "golfDistanceUnit": "statute_us", "golfElevationUnit": - null, "golfSpeedUnit": null, "externalBottomTime": null}, "userSleep": {"sleepTime": - 80400, "defaultSleepTime": false, "wakeTime": 24000, "defaultWakeTime": false}, - "connectDate": null, "sourceType": null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f871946bb28464e-DFW - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Fri, 18 Aug 2023 03:34:02 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=XuM%2FJWbKUjA%2FxEp%2BjovlwckL59G0zsCqCzBoXSbRZuDGgTSkCADoAs%2FrM6Ah7k8VkHXkbYt%2B5YWdZBfqgOFk2FjST9SJUXnkpF8bya7yZnwW10iaKxfpNmy0GXAeVt1wJeF4yfYYqA%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/usersummary-service/usersummary/daily/mtamizi?calendarDate=2023-07-01 - response: - body: - string: '{"userProfileId": 2591602, "totalKilocalories": 2498.0, "activeKilocalories": - 370.0, "bmrKilocalories": 2128.0, "wellnessKilocalories": 2498.0, "burnedKilocalories": - null, "consumedKilocalories": null, "remainingKilocalories": 2498.0, "totalSteps": - 12413, "netCalorieGoal": null, "totalDistanceMeters": 10368, "wellnessDistanceMeters": - 10368, "wellnessActiveKilocalories": 370.0, "netRemainingKilocalories": 370.0, - "userDailySummaryId": 2591602, "calendarDate": "2023-07-01", "rule": {"typeId": - 2, "typeKey": "private"}, "uuid": "08064eebd5f64e299745fce9e3ae5c19", "dailyStepGoal": - 7950, "totalPushDistance": 0, "totalPushes": 0, "wellnessStartTimeGmt": "2023-07-01T06:00:00.0", - "wellnessStartTimeLocal": "2023-07-01T00:00:00.0", "wellnessEndTimeGmt": "2023-07-02T06:00:00.0", - "wellnessEndTimeLocal": "2023-07-02T00:00:00.0", "durationInMilliseconds": - 86400000, "wellnessDescription": null, "highlyActiveSeconds": 768, "activeSeconds": - 10219, "sedentarySeconds": 58253, "sleepingSeconds": 17160, "includesWellnessData": - true, "includesActivityData": false, "includesCalorieConsumedData": false, - "privacyProtected": false, "moderateIntensityMinutes": 0, "vigorousIntensityMinutes": - 0, "floorsAscendedInMeters": 90.802, "floorsDescendedInMeters": 88.567, "floorsAscended": - 29.79068, "floorsDescended": 29.05741, "intensityMinutesGoal": 150, "userFloorsAscendedGoal": - 35, "minHeartRate": 48, "maxHeartRate": 107, "restingHeartRate": 51, "lastSevenDaysAvgRestingHeartRate": - 49, "source": "GARMIN", "averageStressLevel": 35, "maxStressLevel": 86, "stressDuration": - 36120, "restStressDuration": 27780, "activityStressDuration": 17400, "uncategorizedStressDuration": - 5040, "totalStressDuration": 86340, "lowStressDuration": 21780, "mediumStressDuration": - 12660, "highStressDuration": 1680, "stressPercentage": 41.83, "restStressPercentage": - 32.18, "activityStressPercentage": 20.15, "uncategorizedStressPercentage": - 5.84, "lowStressPercentage": 25.23, "mediumStressPercentage": 14.66, "highStressPercentage": - 1.95, "stressQualifier": "STRESSFUL", "measurableAwakeDuration": 64260, "measurableAsleepDuration": - 17040, "lastSyncTimestampGMT": null, "minAvgHeartRate": 49, "maxAvgHeartRate": - 106, "bodyBatteryChargedValue": 43, "bodyBatteryDrainedValue": 43, "bodyBatteryHighestValue": - 48, "bodyBatteryLowestValue": 5, "bodyBatteryMostRecentValue": 5, "bodyBatteryVersion": - 2.0, "abnormalHeartRateAlertsCount": null, "averageSpo2": 92.0, "lowestSpo2": - 85, "latestSpo2": 86, "latestSpo2ReadingTimeGmt": "2023-07-02T06:00:00.0", - "latestSpo2ReadingTimeLocal": "2023-07-02T00:00:00.0", "averageMonitoringEnvironmentAltitude": - 2254.0, "restingCaloriesFromActivity": null, "avgWakingRespirationValue": - 13.0, "highestRespirationValue": 21.0, "lowestRespirationValue": 9.0, "latestRespirationValue": - 18.0, "latestRespirationTimeGMT": "2023-07-02T06:00:00.0"}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f87194bfc474630-DFW - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Fri, 18 Aug 2023 03:34:02 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=tuYDE5sNjkqgtYm%2Fxb9mKn7QlL0LOZE0mFIH09bXZa9UMyHN3G62ptc5H4P8asYIyOpeeA0veLeCpMXfY%2Bc96FrojM6fTw16LnIf%2BrW%2BWCrnbVHkD1%2BMePyd%2FhsJWeXjCMScUqkntg%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -version: 1 diff --git a/python-garminconnect/tests/cassettes/test_stats_and_body.yaml b/python-garminconnect/tests/cassettes/test_stats_and_body.yaml deleted file mode 100644 index a89f515..0000000 --- a/python-garminconnect/tests/cassettes/test_stats_and_body.yaml +++ /dev/null @@ -1,333 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/socialProfile - response: - body: - string: '{"id": 3154645, "profileId": 2591602, "garminGUID": "0690cc1d-d23d-4412-b027-80fd4ed1c0f6", - "displayName": "mtamizi", "fullName": "Matin Tamizi", "userName": "mtamizi", - "profileImageUuid": "73240e81-6e4d-43fc-8af8-c8f6c51b3b8f", "profileImageUrlLarge": - "https://s3.amazonaws.com/garmin-connect-prod/profile_images/73240e81-6e4d-43fc-8af8-c8f6c51b3b8f-2591602.png", - "profileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/685a19e9-a7be-4a11-9bf9-faca0c5d1f1a-2591602.png", - "profileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/6302f021-0ec7-4dc9-b0c3-d5a19bc5a08c-2591602.png", - "location": "Ciudad de M\u00e9xico, CDMX", "facebookUrl": null, "twitterUrl": - null, "personalWebsite": null, "motivation": null, "bio": null, "primaryActivity": - null, "favoriteActivityTypes": [], "runningTrainingSpeed": 0.0, "cyclingTrainingSpeed": - 0.0, "favoriteCyclingActivityTypes": [], "cyclingClassification": null, "cyclingMaxAvgPower": - 0.0, "swimmingTrainingSpeed": 0.0, "profileVisibility": "private", "activityStartVisibility": - "private", "activityMapVisibility": "public", "courseVisibility": "public", - "activityHeartRateVisibility": "public", "activityPowerVisibility": "public", - "badgeVisibility": "private", "showAge": false, "showWeight": false, "showHeight": - false, "showWeightClass": false, "showAgeRange": false, "showGender": false, - "showActivityClass": false, "showVO2Max": false, "showPersonalRecords": false, - "showLast12Months": false, "showLifetimeTotals": false, "showUpcomingEvents": - false, "showRecentFavorites": false, "showRecentDevice": false, "showRecentGear": - false, "showBadges": true, "otherActivity": null, "otherPrimaryActivity": - null, "otherMotivation": null, "userRoles": ["SCOPE_ATP_READ", "SCOPE_ATP_WRITE", - "SCOPE_COMMUNITY_COURSE_READ", "SCOPE_COMMUNITY_COURSE_WRITE", "SCOPE_CONNECT_READ", - "SCOPE_CONNECT_WRITE", "SCOPE_DT_CLIENT_ANALYTICS_WRITE", "SCOPE_GARMINPAY_READ", - "SCOPE_GARMINPAY_WRITE", "SCOPE_GCOFFER_READ", "SCOPE_GCOFFER_WRITE", "SCOPE_GHS_SAMD", - "SCOPE_GHS_UPLOAD", "SCOPE_GOLF_API_READ", "SCOPE_GOLF_API_WRITE", "SCOPE_INSIGHTS_READ", - "SCOPE_INSIGHTS_WRITE", "SCOPE_PRODUCT_SEARCH_READ", "ROLE_CONNECTUSER", "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", "ROLE_OUTDOOR_USER", "ROLE_CONNECT_2_USER", "ROLE_TACX_APP_USER"], - "nameApproved": true, "userProfileFullName": "Matin Tamizi", "makeGolfScorecardsPrivate": - true, "allowGolfLiveScoring": false, "allowGolfScoringByConnections": true, - "userLevel": 3, "userPoint": 117, "levelUpdateDate": "2020-12-12T15:20:38.0", - "levelIsViewed": false, "levelPointThreshold": 140, "userPointOffset": 0, - "userPro": false}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f8a56095b71b6e7-QRO - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Fri, 18 Aug 2023 12:59:48 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=xnumb7924cZnXVSAdsgVPkUyq4aBAZa%2BzoO3Fg%2FyKNqahpZsaKnF2Nj2q4rjgRfCbcjVyIhh1QOGJ4bF54hFZLJ%2FXDvVNkSCixzHaiB0NYlCUosW%2FnpqZ9qzSlK04O11fOMhncqjLA%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - _cfuvid=SANITIZED; path=SANITIZED; domain=SANITIZED; HttpOnly; Secure; SameSite=SANITIZED - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/userprofile/user-settings - response: - body: - string: '{"id": 2591602, "userData": {"gender": "MALE", "weight": 79800.0, "height": - 182.0, "timeFormat": "time_twenty_four_hr", "birthDate": "1984-10-17", "measurementSystem": - "metric", "activityLevel": null, "handedness": "RIGHT", "powerFormat": {"formatId": - 30, "formatKey": "watt", "minFraction": 0, "maxFraction": 0, "groupingUsed": - true, "displayFormat": null}, "heartRateFormat": {"formatId": 21, "formatKey": - "bpm", "minFraction": 0, "maxFraction": 0, "groupingUsed": false, "displayFormat": - null}, "firstDayOfWeek": {"dayId": 2, "dayName": "sunday", "sortOrder": 2, - "isPossibleFirstDay": true}, "vo2MaxRunning": 46.0, "vo2MaxCycling": null, - "lactateThresholdSpeed": 0.34722125000000004, "lactateThresholdHeartRate": - null, "diveNumber": null, "intensityMinutesCalcMethod": "AUTO", "moderateIntensityMinutesHrZone": - 3, "vigorousIntensityMinutesHrZone": 4, "hydrationMeasurementUnit": "milliliter", - "hydrationContainers": [], "hydrationAutoGoalEnabled": true, "firstbeatMaxStressScore": - null, "firstbeatCyclingLtTimestamp": null, "firstbeatRunningLtTimestamp": - 1044719868, "thresholdHeartRateAutoDetected": true, "ftpAutoDetected": null, - "trainingStatusPausedDate": null, "weatherLocation": {"useFixedLocation": - false, "latitude": null, "longitude": null, "locationName": null, "isoCountryCode": - null, "postalCode": null}, "golfDistanceUnit": "statute_us", "golfElevationUnit": - null, "golfSpeedUnit": null, "externalBottomTime": null}, "userSleep": {"sleepTime": - 80400, "defaultSleepTime": false, "wakeTime": 24000, "defaultWakeTime": false}, - "connectDate": null, "sourceType": null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f8a560a29521556-QRO - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Fri, 18 Aug 2023 12:59:48 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=9rAywogINvfA%2FLcuCArFPR%2Fb03HHA%2BgJetJMJ13SBPSBezpQ7Ix%2Bv1hHyY4vIzAOszB0BxbPnhqPZwTBOamu6uYEc6ktsgDx6%2FZw21w6a6Iw64vSxI106onMPYR19Hdu2XjTQdwdBQ%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/usersummary-service/usersummary/daily/mtamizi?calendarDate=2023-07-01 - response: - body: - string: '{"userProfileId": 2591602, "totalKilocalories": 2498.0, "activeKilocalories": - 370.0, "bmrKilocalories": 2128.0, "wellnessKilocalories": 2498.0, "burnedKilocalories": - null, "consumedKilocalories": null, "remainingKilocalories": 2498.0, "totalSteps": - 12413, "netCalorieGoal": null, "totalDistanceMeters": 10368, "wellnessDistanceMeters": - 10368, "wellnessActiveKilocalories": 370.0, "netRemainingKilocalories": 370.0, - "userDailySummaryId": 2591602, "calendarDate": "2023-07-01", "rule": {"typeId": - 2, "typeKey": "private"}, "uuid": "08064eebd5f64e299745fce9e3ae5c19", "dailyStepGoal": - 7950, "totalPushDistance": 0, "totalPushes": 0, "wellnessStartTimeGmt": "2023-07-01T06:00:00.0", - "wellnessStartTimeLocal": "2023-07-01T00:00:00.0", "wellnessEndTimeGmt": "2023-07-02T06:00:00.0", - "wellnessEndTimeLocal": "2023-07-02T00:00:00.0", "durationInMilliseconds": - 86400000, "wellnessDescription": null, "highlyActiveSeconds": 768, "activeSeconds": - 10219, "sedentarySeconds": 58253, "sleepingSeconds": 17160, "includesWellnessData": - true, "includesActivityData": false, "includesCalorieConsumedData": false, - "privacyProtected": false, "moderateIntensityMinutes": 0, "vigorousIntensityMinutes": - 0, "floorsAscendedInMeters": 90.802, "floorsDescendedInMeters": 88.567, "floorsAscended": - 29.79068, "floorsDescended": 29.05741, "intensityMinutesGoal": 150, "userFloorsAscendedGoal": - 35, "minHeartRate": 48, "maxHeartRate": 107, "restingHeartRate": 51, "lastSevenDaysAvgRestingHeartRate": - 49, "source": "GARMIN", "averageStressLevel": 35, "maxStressLevel": 86, "stressDuration": - 36120, "restStressDuration": 27780, "activityStressDuration": 17400, "uncategorizedStressDuration": - 5040, "totalStressDuration": 86340, "lowStressDuration": 21780, "mediumStressDuration": - 12660, "highStressDuration": 1680, "stressPercentage": 41.83, "restStressPercentage": - 32.18, "activityStressPercentage": 20.15, "uncategorizedStressPercentage": - 5.84, "lowStressPercentage": 25.23, "mediumStressPercentage": 14.66, "highStressPercentage": - 1.95, "stressQualifier": "STRESSFUL", "measurableAwakeDuration": 64260, "measurableAsleepDuration": - 17040, "lastSyncTimestampGMT": null, "minAvgHeartRate": 49, "maxAvgHeartRate": - 106, "bodyBatteryChargedValue": 43, "bodyBatteryDrainedValue": 43, "bodyBatteryHighestValue": - 48, "bodyBatteryLowestValue": 5, "bodyBatteryMostRecentValue": 5, "bodyBatteryVersion": - 2.0, "abnormalHeartRateAlertsCount": null, "averageSpo2": 92.0, "lowestSpo2": - 85, "latestSpo2": 86, "latestSpo2ReadingTimeGmt": "2023-07-02T06:00:00.0", - "latestSpo2ReadingTimeLocal": "2023-07-02T00:00:00.0", "averageMonitoringEnvironmentAltitude": - 2254.0, "restingCaloriesFromActivity": null, "avgWakingRespirationValue": - 13.0, "highestRespirationValue": 21.0, "lowestRespirationValue": 9.0, "latestRespirationValue": - 18.0, "latestRespirationTimeGMT": "2023-07-02T06:00:00.0"}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f8a560b1e471557-QRO - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Fri, 18 Aug 2023 12:59:48 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=Pop5dpRgSkel9wBP3m0EVt%2Br9RHJcHUMoAkg9SteHwaj%2BVVCsDzaCRLCtaroyZ3%2F4Ckqr7sWT91zwPzbg64rN9M%2FYPag%2Bb630vreTUeGLer7TjX38HjbOfHVFstRah9k1QoEIJ7vbg%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/weight-service/weight/dateRange?startDate=2023-07-01&endDate=2023-07-01 - response: - body: - string: '{"startDate": "2023-07-01", "endDate": "2023-07-01", "dateWeightList": - [], "totalAverage": {"from": 1688169600000, "until": 1688255999999, "weight": - null, "bmi": null, "bodyFat": null, "bodyWater": null, "boneMass": null, "muscleMass": - null, "physiqueRating": null, "visceralFat": null, "metabolicAge": null}}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f8a560c6b6fb6e5-QRO - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Fri, 18 Aug 2023 12:59:48 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=ic7LyCpt86r5D2o6Dcd5K4S3vghREmCTp40Kmrbtjj7bQCyf2PBh%2BOuSc9xQILHTQ2edEFtVHqfX7U7V4NVbCti0BxAUCIc9JI6MhFpzRWn9y%2FUvnuPREox17qs7HQ%2BAIoIiz1nVDA%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -version: 1 diff --git a/python-garminconnect/tests/cassettes/test_steps_data.yaml b/python-garminconnect/tests/cassettes/test_steps_data.yaml deleted file mode 100644 index 018e7d3..0000000 --- a/python-garminconnect/tests/cassettes/test_steps_data.yaml +++ /dev/null @@ -1,332 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/userprofile/user-settings - response: - body: - string: '{"id": 2591602, "userData": {"gender": "MALE", "weight": 79800.0, "height": - 182.0, "timeFormat": "time_twenty_four_hr", "birthDate": "1984-10-17", "measurementSystem": - "metric", "activityLevel": null, "handedness": "RIGHT", "powerFormat": {"formatId": - 30, "formatKey": "watt", "minFraction": 0, "maxFraction": 0, "groupingUsed": - true, "displayFormat": null}, "heartRateFormat": {"formatId": 21, "formatKey": - "bpm", "minFraction": 0, "maxFraction": 0, "groupingUsed": false, "displayFormat": - null}, "firstDayOfWeek": {"dayId": 2, "dayName": "sunday", "sortOrder": 2, - "isPossibleFirstDay": true}, "vo2MaxRunning": 46.0, "vo2MaxCycling": null, - "lactateThresholdSpeed": 0.34722125000000004, "lactateThresholdHeartRate": - null, "diveNumber": null, "intensityMinutesCalcMethod": "AUTO", "moderateIntensityMinutesHrZone": - 3, "vigorousIntensityMinutesHrZone": 4, "hydrationMeasurementUnit": "milliliter", - "hydrationContainers": [], "hydrationAutoGoalEnabled": true, "firstbeatMaxStressScore": - null, "firstbeatCyclingLtTimestamp": null, "firstbeatRunningLtTimestamp": - 1044719868, "thresholdHeartRateAutoDetected": true, "ftpAutoDetected": null, - "trainingStatusPausedDate": null, "weatherLocation": {"useFixedLocation": - false, "latitude": null, "longitude": null, "locationName": null, "isoCountryCode": - null, "postalCode": null}, "golfDistanceUnit": "statute_us", "golfElevationUnit": - null, "golfSpeedUnit": null, "externalBottomTime": null}, "userSleep": {"sleepTime": - 80400, "defaultSleepTime": false, "wakeTime": 24000, "defaultWakeTime": false}, - "connectDate": null, "sourceType": null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f873ddaf815b6ed-QRO - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Fri, 18 Aug 2023 03:59:00 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=3dTHCTMSRwi%2F0Ahvm1maSWvDJOjAMveznEpyN%2F5DWLcjzHP0hXHS8tVKpiaAIW42ziwHj7E52yQC4Jt7KwGiUFCdbb2gqizHjlMVST8OzUSSwWhmJf3ljzr7FkpgoOMoboppJ7mBYQ%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - _cfuvid=SANITIZED; path=SANITIZED; domain=SANITIZED; HttpOnly; Secure; SameSite=SANITIZED - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/wellness-service/wellness/dailySummaryChart/mtamizi?date=2023-07-01 - response: - body: - string: '[{"startGMT": "2023-07-01T06:00:00.0", "endGMT": "2023-07-01T06:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T06:15:00.0", "endGMT": "2023-07-01T06:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T06:30:00.0", "endGMT": "2023-07-01T06:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T06:45:00.0", "endGMT": "2023-07-01T07:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T07:00:00.0", "endGMT": "2023-07-01T07:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T07:15:00.0", "endGMT": "2023-07-01T07:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T07:30:00.0", "endGMT": "2023-07-01T07:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T07:45:00.0", "endGMT": "2023-07-01T08:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T08:00:00.0", "endGMT": "2023-07-01T08:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T08:15:00.0", "endGMT": "2023-07-01T08:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T08:30:00.0", "endGMT": "2023-07-01T08:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T08:45:00.0", "endGMT": "2023-07-01T09:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T09:00:00.0", "endGMT": "2023-07-01T09:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T09:15:00.0", "endGMT": "2023-07-01T09:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T09:30:00.0", "endGMT": "2023-07-01T09:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T09:45:00.0", "endGMT": "2023-07-01T10:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T10:00:00.0", "endGMT": "2023-07-01T10:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T10:15:00.0", "endGMT": "2023-07-01T10:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T10:30:00.0", "endGMT": "2023-07-01T10:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T10:45:00.0", "endGMT": "2023-07-01T11:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T11:00:00.0", "endGMT": "2023-07-01T11:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T11:15:00.0", "endGMT": "2023-07-01T11:30:00.0", - "steps": 56, "pushes": 0, "primaryActivityLevel": "sleeping", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T11:30:00.0", "endGMT": "2023-07-01T11:45:00.0", - "steps": 406, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T11:45:00.0", "endGMT": "2023-07-01T12:00:00.0", - "steps": 27, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T12:00:00.0", "endGMT": "2023-07-01T12:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T12:15:00.0", "endGMT": "2023-07-01T12:30:00.0", - "steps": 39, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T12:30:00.0", "endGMT": "2023-07-01T12:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "highlyActive", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T12:45:00.0", "endGMT": "2023-07-01T13:00:00.0", - "steps": 35, "pushes": 0, "primaryActivityLevel": "highlyActive", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T13:00:00.0", "endGMT": "2023-07-01T13:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T13:15:00.0", "endGMT": "2023-07-01T13:30:00.0", - "steps": 13, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T13:30:00.0", "endGMT": "2023-07-01T13:45:00.0", - "steps": 457, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T13:45:00.0", "endGMT": "2023-07-01T14:00:00.0", - "steps": 370, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T14:00:00.0", "endGMT": "2023-07-01T14:15:00.0", - "steps": 135, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T14:15:00.0", "endGMT": "2023-07-01T14:30:00.0", - "steps": 1006, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T14:30:00.0", "endGMT": "2023-07-01T14:45:00.0", - "steps": 901, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T14:45:00.0", "endGMT": "2023-07-01T15:00:00.0", - "steps": 79, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T15:00:00.0", "endGMT": "2023-07-01T15:15:00.0", - "steps": 83, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T15:15:00.0", "endGMT": "2023-07-01T15:30:00.0", - "steps": 21, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T15:30:00.0", "endGMT": "2023-07-01T15:45:00.0", - "steps": 189, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T15:45:00.0", "endGMT": "2023-07-01T16:00:00.0", - "steps": 941, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T16:00:00.0", "endGMT": "2023-07-01T16:15:00.0", - "steps": 842, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T16:15:00.0", "endGMT": "2023-07-01T16:30:00.0", - "steps": 38, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T16:30:00.0", "endGMT": "2023-07-01T16:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T16:45:00.0", "endGMT": "2023-07-01T17:00:00.0", - "steps": 513, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T17:00:00.0", "endGMT": "2023-07-01T17:15:00.0", - "steps": 106, "pushes": 0, "primaryActivityLevel": "highlyActive", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T17:15:00.0", "endGMT": "2023-07-01T17:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T17:30:00.0", "endGMT": "2023-07-01T17:45:00.0", - "steps": 19, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T17:45:00.0", "endGMT": "2023-07-01T18:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T18:00:00.0", "endGMT": "2023-07-01T18:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T18:15:00.0", "endGMT": "2023-07-01T18:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T18:30:00.0", "endGMT": "2023-07-01T18:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T18:45:00.0", "endGMT": "2023-07-01T19:00:00.0", - "steps": 53, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T19:00:00.0", "endGMT": "2023-07-01T19:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T19:15:00.0", "endGMT": "2023-07-01T19:30:00.0", - "steps": 158, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T19:30:00.0", "endGMT": "2023-07-01T19:45:00.0", - "steps": 495, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T19:45:00.0", "endGMT": "2023-07-01T20:00:00.0", - "steps": 348, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T20:00:00.0", "endGMT": "2023-07-01T20:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T20:15:00.0", "endGMT": "2023-07-01T20:30:00.0", - "steps": 214, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T20:30:00.0", "endGMT": "2023-07-01T20:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T20:45:00.0", "endGMT": "2023-07-01T21:00:00.0", - "steps": 173, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T21:00:00.0", "endGMT": "2023-07-01T21:15:00.0", - "steps": 199, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T21:15:00.0", "endGMT": "2023-07-01T21:30:00.0", - "steps": 38, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T21:30:00.0", "endGMT": "2023-07-01T21:45:00.0", - "steps": 348, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T21:45:00.0", "endGMT": "2023-07-01T22:00:00.0", - "steps": 544, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T22:00:00.0", "endGMT": "2023-07-01T22:15:00.0", - "steps": 217, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T22:15:00.0", "endGMT": "2023-07-01T22:30:00.0", - "steps": 133, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T22:30:00.0", "endGMT": "2023-07-01T22:45:00.0", - "steps": 63, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T22:45:00.0", "endGMT": "2023-07-01T23:00:00.0", - "steps": 39, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T23:00:00.0", "endGMT": "2023-07-01T23:15:00.0", - "steps": 144, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-01T23:15:00.0", "endGMT": "2023-07-01T23:30:00.0", - "steps": 42, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T23:30:00.0", "endGMT": "2023-07-01T23:45:00.0", - "steps": 320, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - true}, {"startGMT": "2023-07-01T23:45:00.0", "endGMT": "2023-07-02T00:00:00.0", - "steps": 540, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-02T00:00:00.0", "endGMT": "2023-07-02T00:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T00:15:00.0", "endGMT": "2023-07-02T00:30:00.0", - "steps": 84, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-02T00:30:00.0", "endGMT": "2023-07-02T00:45:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T00:45:00.0", "endGMT": "2023-07-02T01:00:00.0", - "steps": 140, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T01:00:00.0", "endGMT": "2023-07-02T01:15:00.0", - "steps": 63, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T01:15:00.0", "endGMT": "2023-07-02T01:30:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T01:30:00.0", "endGMT": "2023-07-02T01:45:00.0", - "steps": 164, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-02T01:45:00.0", "endGMT": "2023-07-02T02:00:00.0", - "steps": 318, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - false}, {"startGMT": "2023-07-02T02:00:00.0", "endGMT": "2023-07-02T02:15:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T02:15:00.0", "endGMT": "2023-07-02T02:30:00.0", - "steps": 23, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T02:30:00.0", "endGMT": "2023-07-02T02:45:00.0", - "steps": 13, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T02:45:00.0", "endGMT": "2023-07-02T03:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T03:00:00.0", "endGMT": "2023-07-02T03:15:00.0", - "steps": 13, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T03:15:00.0", "endGMT": "2023-07-02T03:30:00.0", - "steps": 9, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T03:30:00.0", "endGMT": "2023-07-02T03:45:00.0", - "steps": 101, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T03:45:00.0", "endGMT": "2023-07-02T04:00:00.0", - "steps": 279, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2023-07-02T04:00:00.0", "endGMT": "2023-07-02T04:15:00.0", - "steps": 10, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T04:15:00.0", "endGMT": "2023-07-02T04:30:00.0", - "steps": 12, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T04:30:00.0", "endGMT": "2023-07-02T04:45:00.0", - "steps": 11, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T04:45:00.0", "endGMT": "2023-07-02T05:00:00.0", - "steps": 0, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}, {"startGMT": "2023-07-02T05:00:00.0", "endGMT": "2023-07-02T05:15:00.0", - "steps": 151, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2023-07-02T05:15:00.0", "endGMT": "2023-07-02T05:30:00.0", - "steps": 294, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2023-07-02T05:30:00.0", "endGMT": "2023-07-02T05:45:00.0", - "steps": 365, "pushes": 0, "primaryActivityLevel": "active", "activityLevelConstant": - false}, {"startGMT": "2023-07-02T05:45:00.0", "endGMT": "2023-07-02T06:00:00.0", - "steps": 19, "pushes": 0, "primaryActivityLevel": "sedentary", "activityLevelConstant": - true}]' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f873ddd1a594791-DFW - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Fri, 18 Aug 2023 03:59:00 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=tJacsT8vopyIAffN684LcOMbK15rMrBOqEpskYmxq4YlGwiZbrizv9WNX6lEBv89nLZ0SdMqmuDY8QGV6NKFFb2PWZkFEjQLcywqorvWGMblFTGOwq0njWceIXlL7xZkc70Bx%2BHpHQ%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -version: 1 diff --git a/python-garminconnect/tests/cassettes/test_upload.yaml b/python-garminconnect/tests/cassettes/test_upload.yaml deleted file mode 100644 index fbadfe8..0000000 --- a/python-garminconnect/tests/cassettes/test_upload.yaml +++ /dev/null @@ -1,348 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/socialProfile - response: - body: - string: '{"id": 3154645, "profileId": 2591602, "garminGUID": "0690cc1d-d23d-4412-b027-80fd4ed1c0f6", - "displayName": "mtamizi", "fullName": "Matin Tamizi", "userName": "mtamizi", - "profileImageUuid": "73240e81-6e4d-43fc-8af8-c8f6c51b3b8f", "profileImageUrlLarge": - "https://s3.amazonaws.com/garmin-connect-prod/profile_images/73240e81-6e4d-43fc-8af8-c8f6c51b3b8f-2591602.png", - "profileImageUrlMedium": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/685a19e9-a7be-4a11-9bf9-faca0c5d1f1a-2591602.png", - "profileImageUrlSmall": "https://s3.amazonaws.com/garmin-connect-prod/profile_images/6302f021-0ec7-4dc9-b0c3-d5a19bc5a08c-2591602.png", - "location": "Ciudad de M\u00e9xico, CDMX", "facebookUrl": null, "twitterUrl": - null, "personalWebsite": null, "motivation": null, "bio": null, "primaryActivity": - null, "favoriteActivityTypes": [], "runningTrainingSpeed": 0.0, "cyclingTrainingSpeed": - 0.0, "favoriteCyclingActivityTypes": [], "cyclingClassification": null, "cyclingMaxAvgPower": - 0.0, "swimmingTrainingSpeed": 0.0, "profileVisibility": "private", "activityStartVisibility": - "private", "activityMapVisibility": "public", "courseVisibility": "public", - "activityHeartRateVisibility": "public", "activityPowerVisibility": "public", - "badgeVisibility": "private", "showAge": false, "showWeight": false, "showHeight": - false, "showWeightClass": false, "showAgeRange": false, "showGender": false, - "showActivityClass": false, "showVO2Max": false, "showPersonalRecords": false, - "showLast12Months": false, "showLifetimeTotals": false, "showUpcomingEvents": - false, "showRecentFavorites": false, "showRecentDevice": false, "showRecentGear": - false, "showBadges": true, "otherActivity": null, "otherPrimaryActivity": - null, "otherMotivation": null, "userRoles": ["SCOPE_ATP_READ", "SCOPE_ATP_WRITE", - "SCOPE_COMMUNITY_COURSE_READ", "SCOPE_COMMUNITY_COURSE_WRITE", "SCOPE_CONNECT_READ", - "SCOPE_CONNECT_WRITE", "SCOPE_DT_CLIENT_ANALYTICS_WRITE", "SCOPE_GARMINPAY_READ", - "SCOPE_GARMINPAY_WRITE", "SCOPE_GCOFFER_READ", "SCOPE_GCOFFER_WRITE", "SCOPE_GHS_SAMD", - "SCOPE_GHS_UPLOAD", "SCOPE_GOLF_API_READ", "SCOPE_GOLF_API_WRITE", "SCOPE_INSIGHTS_READ", - "SCOPE_INSIGHTS_WRITE", "SCOPE_PRODUCT_SEARCH_READ", "ROLE_CONNECTUSER", "ROLE_FITNESS_USER", - "ROLE_WELLNESS_USER", "ROLE_OUTDOOR_USER", "ROLE_CONNECT_2_USER", "ROLE_TACX_APP_USER"], - "nameApproved": true, "userProfileFullName": "Matin Tamizi", "makeGolfScorecardsPrivate": - true, "allowGolfLiveScoring": false, "allowGolfScoringByConnections": true, - "userLevel": 3, "userPoint": 117, "levelUpdateDate": "2020-12-12T15:20:38.0", - "levelIsViewed": false, "levelPointThreshold": 140, "userPointOffset": 0, - "userPro": false}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 80ed55cc0d4ab6df-QRO - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sat, 30 Sep 2023 15:00:23 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=FrvoJmRq%2B0z5fa3BJruy5JSfUKjW0TlIby3T0YM3f2OXD302LNe0fzUTgXGjj%2BD3dgK6wcK0DtYGik1ab%2BASTDmn%2BsR4o0w%2FNEir68XNur5vcxwdXrXyPOMKMbFQ%2FeYWvqupQcKvpQ%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - _cfuvid=SANITIZED; path=SANITIZED; domain=SANITIZED; HttpOnly; Secure; SameSite=SANITIZED - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/userprofile/user-settings - response: - body: - string: '{"id": 2591602, "userData": {"gender": "MALE", "weight": 83699.0, "height": - 182.0, "timeFormat": "time_twenty_four_hr", "birthDate": "SANITIZED", "measurementSystem": - "metric", "activityLevel": null, "handedness": "RIGHT", "powerFormat": {"formatId": - 30, "formatKey": "watt", "minFraction": 0, "maxFraction": 0, "groupingUsed": - true, "displayFormat": null}, "heartRateFormat": {"formatId": 21, "formatKey": - "bpm", "minFraction": 0, "maxFraction": 0, "groupingUsed": false, "displayFormat": - null}, "firstDayOfWeek": {"dayId": 2, "dayName": "sunday", "sortOrder": 2, - "isPossibleFirstDay": true}, "vo2MaxRunning": 45.0, "vo2MaxCycling": null, - "lactateThresholdSpeed": 0.34722125000000004, "lactateThresholdHeartRate": - null, "diveNumber": null, "intensityMinutesCalcMethod": "AUTO", "moderateIntensityMinutesHrZone": - 3, "vigorousIntensityMinutesHrZone": 4, "hydrationMeasurementUnit": "milliliter", - "hydrationContainers": [], "hydrationAutoGoalEnabled": true, "firstbeatMaxStressScore": - null, "firstbeatCyclingLtTimestamp": null, "firstbeatRunningLtTimestamp": - 1044719868, "thresholdHeartRateAutoDetected": true, "ftpAutoDetected": null, - "trainingStatusPausedDate": null, "golfDistanceUnit": - "statute_us", "golfElevationUnit": null, "golfSpeedUnit": null, "externalBottomTime": - null}, "userSleep": {"sleepTime": 80400, "defaultSleepTime": false, "wakeTime": - 24000, "defaultWakeTime": false}, "connectDate": null, "sourceType": null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 80ed55cda9f7b6e2-QRO - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json;charset=UTF-8 - Date: - - Sat, 30 Sep 2023 15:00:23 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=HgPM1UzWGN2zQ2C7v0oyH9NUmmhZ3g7Z5fy2pQOjyXT%2BeHGTpUfTopqpfHmiha0C%2FoV0CgJQ1ZE60zuaFXngS6kHLUiaVmfXUWIL9fqI7w2qkJMNqCcmlT3yUZvuYePLigX2a19aSA%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -- request: - body: !!binary | - LS1iMGQyODE3NWM5Zjc0ZTdjZjA5OTVkNzc5YzZhZTkwYQ0KQ29udGVudC1EaXNwb3NpdGlvbjog - Zm9ybS1kYXRhOyBuYW1lPSJmaWxlIjsgZmlsZW5hbWU9IjEyMTI5MTE1NzI2X0FDVElWSVRZLmZp - dCINCg0KDhB5UpkUAAAuRklUyeVAAAAAAAcDBIwEBIYHBIYBAoQCAoQFAoQAAQAAOXF7xhLKeD// - ////AQDbDP//BEEAADEABQIUBwAChAEBAgMBAAQBAAEAAAAAAAAAAAAAAAAAAAAAAAAAACgK//// - QgAAIAEE/QSGAgKEAAEBAQEBAhHKeD///39/QwAARwEI/QSGAwSGBASGBQSGAAECAQECAgECBgEA - AxHKeD8MAAAAoCAAAAQAAAAJAQIAAxHKeD8MAAAAoCAAAAQAAAAJAQIARAAARgED/QSGAASGAQSG - BBHKeD8xAAAAAwAAAEUAABUAB/0EhgMEhgABAAEBAAQBAhMBAhQBAgURyng/AAAAAAAAAP//RgAA - FwAc/QSGAwSMBwSGCASGDwSGEASGESAHGASMHwSGAgKEBAKEBQKECgKEDQKEFQKLAAECAQECBgEC - CQECCwECEgEAFAEKFgEAFwECGQEAHQYCHgECIAECBhHKeD85cXvG/////////////////////wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BANsMKAr/////AAAA//////8A - //8F//////////8GEcp4PwAAAAD/////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAA/////wEA2wwoCv////8AAAEE/////wD//wX//////////wYRyng/AAAA - AP////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///// - /////////////wAAAgj/////AP//Bf//////////BhHKeD8AAAAA/////////////////////wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////ZAD/////AAADCv////8A - //8F//////////8GEcp4PwAAAAD/////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAA/////wEA4AyhCP////8AAAQM/////wD//wX//////////0cAABYAC/0E - hgABAgEBAgIBAgMBAgQBAgUBAAYBAggBAg4BAg8BAgcRyng//////wMD/////0gAAI0ABf0EhgEE - hgIEhgMEhgABAAgRyng/AHZ3P4CwgD//////AUkAAAIAawEEhgIEhloEhqdABwgChDEChDoChDsC - hAABAgMBAAQBAAUBAQkBAAoBAAsBAAwBAA0BAg4BAg8BAhYBABcBABkBABoBABwBAB4BAB8BACIB - ACMBACQBACYBACkBACoBACsBACwBAC0BAC4BAC8BADABADUBADYBADcBADgBAD8NAEABAEEBAEIB - AEMBAEQBAEUBAEsBAEwBAE0BAFABAFEBAFIBAFMBAFQBAFUBAFcBAF4BAmABAGEBCmIBAGUBAGge - AGsBAGwBAG0BAG4BAG8BAHABAHQBAHUBAHwBAn0BAn4BAH8BAIABAIEBAIIBAIMBAIQBAIUBAIkB - AIoBAIsBAI0BAo4BAo8BApABAJEBAJQBAJUBAJcBAKABAKEBAKMBAKQBAqgBAKoPArEBArIBArMB - ALQBALUBANoBANsBAAkAAAAAoKv//////38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////9AH8AAAAgEA/wADAwQeMgABAf7/ - Af//AQEBAQEA/wEAAQAB//8BAQAAAAAAAAEAAQABAQEAAgEBAwEBCQEBAQIAAQH/AAMAAgAhBBAO - DAYaAwId/////////////////////////wEBAQEBAQACMgQBAQIAAQIAAQAAAQMAZAEBAQAAAQAA - KAAIBwkNCwwFBg4KAQQAAgMFHgEBAAEBSgAAAwAkHASGHQSGKQSGKgSGBAKEHwKEIAKEIQKEJQKE - JgKEAQEAAwECBQEABgEABwEACAECDAEADQEADgEAEQEAEgEAFQEAGAECHgEAJAECKwEALAECLQEK - LwEANAEANQECNgECOQEAOgEAPAcAPgEACsBdAAAQOgEA/ChFPv////9FA////////30A//8BtgAA - AAABAAAyAgBUAAAAEQoBAAMEAAEAAAAAAAICAUsAAJMAQQAEjAIQBw0EhhIEChQMCkAEhkEEhkYE - hv4ChAoChAsChBUChBkChBoChCAChCEChCIChCMChCgCizcChDgChDkChEkCi1UChAEBAgMBAAQB - AAUBAAYBAAcBAAkBAgwBAg4BAg8BAhABAhEBChMBChgBAB8BAiQBACUHACYHACcHACkHAioBACsB - ACwBCi0BAC4BAC8BADABADIGAjMBADQBADUBAjoBADsBAjwBAD0BAD4BAj8BAEcBAFIBAFYBAFcB - AAvkR3ihSFJNLVBybzo2NzM3NjQAAP////8AAAAAAAAAAAAAAAAAAAAA////////////////AAD/ - ////////////5AwBAHAD//8AAP///////wMA//8AAf///////////wAA//////////////////// - ////////////////////////vwEB//9U5BJ+o90AAAH/////AP//////CwAAAABCZWF0cyBGaXQg - UHJvAAAA/////wAAAAAAAAAAAAAAAAAAAAD///////////////8BAP////////////////////// - /wAA////////BAD///8B////////////AAD///////////////////////////////////////// - //8A//////TUiNzp7wIW//////////////9MAABPACf9BIYQBIYRBIUSBIUTBIUVBIUWBIUZBIYa - BIYdBIYeBIYjBIYkBIUAAoQDAoQIAoQJAoQLAoQMAoQNAoQUAoQXAoMhAoQiAoQlAoMBAQICAQIE - AQAFAQAGAQIHAQEKAQIOAQIPAQIYAQIbAQIcAQIfAQIgAQIMEcp4P0MEN+sHwQwAi70OACTADABP - cAEAIdAeAMBdAAAQOgEAfDIpAGj+ZgCSAizrHTEWAAQzPgMBAH8CqADIAH0AAACY/gAAswAAACa2 - AUa+ASoAGf8MAP//TQAADAANAyAHCgQCAAEAAQEABQEABgEACQECCwEADAECDQEADwEAEwMAFQEA - DVlvZ2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/1UA/worAQAAAf8A/wD//wFOAAANAEsE - BIYFBIUGBIUfBIYhBIYpBIU2BIZEBIVJEIVKEIVaBIb+AoQCAoQIAoQWAoQgAoRAAoQBAQADAQAH - AQALAQIMAQANAQAOAQAPAQAQAQAVAQAXAQAYAQAbAQAcAQAdAQAeAQAiAQAjAQAkAQAlAQAmAQIn - AQIoAQAqAQIrAQAsAQAtAQAuAQAvAQAwAQAzAQA1AQA3AQA5AQA8AQA+AQA/AQBBAQBCAQBHAQBI - AQBLAQBMAQBOAQBPAQBRAQBSAQBTAQBVAQBWAQJZAQBdAQBeAQBoAQBrAQBsAQB0AQB4AQAOoIYB - AP///3////9/pnQCAP////8bQQAA/////////3////9/////f////3////9/////f////3////9/ - ////f/////8AAEcQbQX//zIaTQAABgAKAAAAAAH//wAA//8AAQAAAP//AR7///8B/////wD/Af8A - AAD///8AAf///////wD///8AAP//TwAABwANEASG/gKEAwKECAKEDwKEAQECAgECBQEABwEACQEA - CgEACwEADAEAD/////8AAMgA/////76oAQEAAQEAQAAAFAAH/QSGdAKEAwECDQEBhgEChwECiAEC - ABHKeD+cGFYi/7BWQQAA6QABAgQNARsBBAAAEsp4P5wYVSL/sFUBHqAPCwATyng/nBhWIv+wVgEI - AAAQABTKeD+cGFci/7BXQgAA4QAO/gSGAASGBgSGAwKEBAKEBwaECAaECQKECgKECwKEDAKEDQKE - AgMKBQECAhTKeD9lCwAAEcp4P////////////////////////wAA////////AAAAAUMAANgADf0E - hgIchgUghgkQhAAChAEChA8ChAYGAgoBAAsBAgwBAg0BAg4BAAMUyng/ywoAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAP////////////////////////////////////////////////////////// - /////9gAAAD//3yJlqOxvgG+AKj/AQoAABgAFcp4P5wYViL/sFYBCkAJIAAWyng/nBhWIv+wVgEE - XgUoABjKeD+cGFki/7BZAcAf8DcAGcp4P5wYWCL/sFgCGcp4PyUPAAAUyng///////////////// - ////////AQD///////8AAAABAxnKeD8gDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////// - ////////////////////////////////////////////////////////2AABAP//fImWo7G+Ab4A - qP8BrsgCOAAayng/cBdYIv+wWAEoZCBAABvKeD9wF1ci/7BXBRvKeD8AAAAAAAQA//8GG8p4Pzlx - e8b/////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//// - /wEA2wwoCv////8AAAD//////wD//wX//////////wYbyng/AAAAAP////////////////////8A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQDbDCgK/////wAAAQT///// - AP//Bf//////////BhvKeD8AAAAA/////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAP//////////////////AAACCP////8A//8F//////////8GG8p4PwAA - AAD/////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//// - //////9kAP////8AAAMK/////wD//wX//////////wYbyng/AAAAAP////////////////////8A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQDgDKEI/////wAABAz///// - AP//Bf//////////AQwADEgBAAAAUAEbAQQAAR6gDwsBEgAAEAEKAAAYAiDKeD9CCwAAGcp4P/// - /////////////////////wIA////////AAAAAQMgyng/PgsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAP///////////////////////////////////////////////////////////////9gAAgD/ - /3yJlqOxvgG+AKj/BSHKeD/YAAAAMAMB//9EAACMADv9BIYCBIUDBIUFBIUGBIUHBIUVBIUYBIUa - BIUbBIUcBIUdBIUgBIUjBIYkBIYlBIUmBIUnBIUoBIUwBIY2BIUJAoQKAoQOAoQPAoQQAoQrAoMs - AoMtAoM3AoQ5AoQ6AoQAAQIBAQIEAQIIAQELAQAMAQANAQIRAQESAQITAQIUAQIWAQIXAQIZAQIe - AQEfAQEhAQIiAQApAQAqAQIuAQIxAQIyAQIzAQA0AQA1AQI4AQIEIcp4P8QUAADEFAAAn9MEAKJD - AQAAAAAA+KYVALXAGwDEFAAAAAAAAAAAAAAAAAAAAAAgTucmAAD/////xBQAAAAAAADEFAAAAAAA - AMF1eD8AAAAAAQCn8AAAAAAAAAAAAAAAAAAA/////1oAAAAKKwAAARQAEgAZnP8AAAD/Av//AP8A - CkcAABIAdP0EhgIEhgMEhQQEhQcEhggEhgkEhgoEhh0EhR4EhR8EhSAEhSYEhScEhSkEhjAEhk4E - hm4gB3AEhnQEAnUEAnYEAncEAngEhHkEhHwEhn0EhpgEhqgEhbUEiLsEiP4ChAsChA4ChA8ChBQC - hBUChBYChBcChBkChBoChCEChCIChCMChCQChCUChCoChCwChC0ChC8ChE8ChFAChFkChFoChFsC - hGoChGsChGwChHEChIQChIUChIYChJcChJ0ChJ4ChKkChKoChLEChLIChLMChLQChL0ChL4ChMQC - hAABAAEBAAUBAAYBABABAhEBAhIBAhMBAhgBAhsBAhwBACsBAC4BADkBAToBAVEBAFwBAl0BAl4B - AmUBAmYBAmcBAmgBAmkBAm0BAnIBAXMBAXoCAnsCAokBAooCApYBAbgBALwBAMABAsEBAsIBAsMB - AscBAsgBAskBAsoBAgchyng/Ecp4P////3////9/zCUAAMwlAAD/////AAAAAP///3////9///// - f////3////9/////f///////////zCUAAFlvZ2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - ////////////////////////////////////////////////AAAAAMQUAAD//////////wAAAQD/ - //////////////8AAAMA/////////////////////////////////////wAA//////////////// - AwD/////////////AQD/////nBhwFwAACQEKK1dZ//8A/wD//yIiAP///////////39//////wAS - ACIAAP///z7//z//AyHKeD8pJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////// - ////////////////////////////////////////////////EgAAAP//fImWo7G+Ab4AqP9IAAAi - AAn9BIYABIYFBIYBAoQCAQADAQAEAQAGAQIHAQIIIcp4P8wlAADBdXg/AQAAGgH//z81DQotLWIw - ZDI4MTc1YzlmNzRlN2NmMDk5NWQ3NzljNmFlOTBhLS0NCg== - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Content-Length: - - '5449' - Content-Type: - - multipart/form-data; boundary=b0d28175c9f74e7cf0995d779c6ae90a - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: POST - uri: https://connectapi.garmin.com/upload-service/upload - response: - body: - string: '{"detailedImportResult": {"uploadId": 212420491131, "uploadUuid": {"uuid": - "30b9c093-5a34-47cc-bef9-28874ab0cc5e"}, "owner": 2591602, "fileSize": 5289, - "processingTime": 36, "creationDate": "2023-09-30 15:00:23.597 GMT", "ipAddress": - null, "fileName": "12129115726_ACTIVITY.fit", "report": null, "successes": - [], "failures": []}}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 80ed55cee8971549-QRO - Connection: - - keep-alive - Content-Length: - - '306' - Content-Type: - - application/json - Date: - - Sat, 30 Sep 2023 15:00:23 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=Kkv5EXnhvpr%2BTTNr79R%2Bhdj524Vd55P45BTwQafIaYkh1HFpbDqDjqkVYxtIXAzmEyDAw0jxw5SxKHU59Yf5pqUiJGvrN6ItIUhlWvTAjp8QYi%2F2%2Fl2xbJNSOJujGKX1sQsCmAOPhQ%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - location: - - https://connectapi.garmin.com/activity-service/activity/status/1696086023597/30b9c0935a3447ccbef928874ab0cc5e - location-in-milliseconds: - - '1000' - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 202 - message: Accepted -version: 1 diff --git a/python-garminconnect/tests/cassettes/test_user_summary.yaml b/python-garminconnect/tests/cassettes/test_user_summary.yaml deleted file mode 100644 index 80ea79f..0000000 --- a/python-garminconnect/tests/cassettes/test_user_summary.yaml +++ /dev/null @@ -1,178 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/userprofile-service/userprofile/user-settings - response: - body: - string: '{"id": 2591602, "userData": {"gender": "MALE", "weight": 79800.0, "height": - 182.0, "timeFormat": "time_twenty_four_hr", "birthDate": "1984-10-17", "measurementSystem": - "metric", "activityLevel": null, "handedness": "RIGHT", "powerFormat": {"formatId": - 30, "formatKey": "watt", "minFraction": 0, "maxFraction": 0, "groupingUsed": - true, "displayFormat": null}, "heartRateFormat": {"formatId": 21, "formatKey": - "bpm", "minFraction": 0, "maxFraction": 0, "groupingUsed": false, "displayFormat": - null}, "firstDayOfWeek": {"dayId": 2, "dayName": "sunday", "sortOrder": 2, - "isPossibleFirstDay": true}, "vo2MaxRunning": 46.0, "vo2MaxCycling": null, - "lactateThresholdSpeed": 0.34722125000000004, "lactateThresholdHeartRate": - null, "diveNumber": null, "intensityMinutesCalcMethod": "AUTO", "moderateIntensityMinutesHrZone": - 3, "vigorousIntensityMinutesHrZone": 4, "hydrationMeasurementUnit": "milliliter", - "hydrationContainers": [], "hydrationAutoGoalEnabled": true, "firstbeatMaxStressScore": - null, "firstbeatCyclingLtTimestamp": null, "firstbeatRunningLtTimestamp": - 1044719868, "thresholdHeartRateAutoDetected": true, "ftpAutoDetected": null, - "trainingStatusPausedDate": null, "weatherLocation": {"useFixedLocation": - false, "latitude": null, "longitude": null, "locationName": null, "isoCountryCode": - null, "postalCode": null}, "golfDistanceUnit": "statute_us", "golfElevationUnit": - null, "golfSpeedUnit": null, "externalBottomTime": null}, "userSleep": {"sleepTime": - 80400, "defaultSleepTime": false, "wakeTime": 24000, "defaultWakeTime": false}, - "connectDate": null, "sourceType": null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f873cc1594eb6ed-QRO - Connection: - - keep-alive - Content-Type: - - application/json;charset=UTF-8 - Date: - - Fri, 18 Aug 2023 03:58:15 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=aEek6tpphYzvySDDJURR7L7T%2FYzHg1kFiECinHHd49fQL3L9uzMItVct2bhBMrlxghE246LjQ8ktcvbwRsQthnLRkZIyGzVYOlltlOQYYJnF8s7LTNixQeIQYIvXF1E122T5qlNMlQ%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - _cfuvid=SANITIZED; path=SANITIZED; domain=SANITIZED; HttpOnly; Secure; SameSite=SANITIZED - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Authorization: - - Bearer SANITIZED - Connection: - - keep-alive - Cookie: - - _cfuvid=SANITIZED; ADRUM_BT1=SANITIZED; ADRUM_BTa=SANITIZED; SameSite=SANITIZED - User-Agent: - - Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 - (KHTML, like Gecko) Mobile/15E148 - method: GET - uri: https://connectapi.garmin.com/usersummary-service/usersummary/daily/mtamizi?calendarDate=2023-07-01 - response: - body: - string: '{"userProfileId": 2591602, "totalKilocalories": 2498.0, "activeKilocalories": - 370.0, "bmrKilocalories": 2128.0, "wellnessKilocalories": 2498.0, "burnedKilocalories": - null, "consumedKilocalories": null, "remainingKilocalories": 2498.0, "totalSteps": - 12413, "netCalorieGoal": null, "totalDistanceMeters": 10368, "wellnessDistanceMeters": - 10368, "wellnessActiveKilocalories": 370.0, "netRemainingKilocalories": 370.0, - "userDailySummaryId": 2591602, "calendarDate": "2023-07-01", "rule": {"typeId": - 2, "typeKey": "private"}, "uuid": "08064eebd5f64e299745fce9e3ae5c19", "dailyStepGoal": - 7950, "totalPushDistance": 0, "totalPushes": 0, "wellnessStartTimeGmt": "2023-07-01T06:00:00.0", - "wellnessStartTimeLocal": "2023-07-01T00:00:00.0", "wellnessEndTimeGmt": "2023-07-02T06:00:00.0", - "wellnessEndTimeLocal": "2023-07-02T00:00:00.0", "durationInMilliseconds": - 86400000, "wellnessDescription": null, "highlyActiveSeconds": 768, "activeSeconds": - 10219, "sedentarySeconds": 58253, "sleepingSeconds": 17160, "includesWellnessData": - true, "includesActivityData": false, "includesCalorieConsumedData": false, - "privacyProtected": false, "moderateIntensityMinutes": 0, "vigorousIntensityMinutes": - 0, "floorsAscendedInMeters": 90.802, "floorsDescendedInMeters": 88.567, "floorsAscended": - 29.79068, "floorsDescended": 29.05741, "intensityMinutesGoal": 150, "userFloorsAscendedGoal": - 35, "minHeartRate": 48, "maxHeartRate": 107, "restingHeartRate": 51, "lastSevenDaysAvgRestingHeartRate": - 49, "source": "GARMIN", "averageStressLevel": 35, "maxStressLevel": 86, "stressDuration": - 36120, "restStressDuration": 27780, "activityStressDuration": 17400, "uncategorizedStressDuration": - 5040, "totalStressDuration": 86340, "lowStressDuration": 21780, "mediumStressDuration": - 12660, "highStressDuration": 1680, "stressPercentage": 41.83, "restStressPercentage": - 32.18, "activityStressPercentage": 20.15, "uncategorizedStressPercentage": - 5.84, "lowStressPercentage": 25.23, "mediumStressPercentage": 14.66, "highStressPercentage": - 1.95, "stressQualifier": "STRESSFUL", "measurableAwakeDuration": 64260, "measurableAsleepDuration": - 17040, "lastSyncTimestampGMT": null, "minAvgHeartRate": 49, "maxAvgHeartRate": - 106, "bodyBatteryChargedValue": 43, "bodyBatteryDrainedValue": 43, "bodyBatteryHighestValue": - 48, "bodyBatteryLowestValue": 5, "bodyBatteryMostRecentValue": 5, "bodyBatteryVersion": - 2.0, "abnormalHeartRateAlertsCount": null, "averageSpo2": 92.0, "lowestSpo2": - 85, "latestSpo2": 86, "latestSpo2ReadingTimeGmt": "2023-07-02T06:00:00.0", - "latestSpo2ReadingTimeLocal": "2023-07-02T00:00:00.0", "averageMonitoringEnvironmentAltitude": - 2254.0, "restingCaloriesFromActivity": null, "avgWakingRespirationValue": - 13.0, "highestRespirationValue": 21.0, "lowestRespirationValue": 9.0, "latestRespirationValue": - 18.0, "latestRespirationTimeGMT": "2023-07-02T06:00:00.0"}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 7f873cc6a8b54659-DFW - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Fri, 18 Aug 2023 03:58:16 GMT - NEL: - - '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' - Report-To: - - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=l9QNfRD2GFrbmbYPa0jUrwjJxNySHcV%2Fy4Hj2ihXGsjhhe4M6PaV2Oa7HbD2p4ide12TeIY0HlsR52xOurplH8bOicHR8kwOIqH2FsW4Wu7VOMC5DgBtFLnDIEmlDwSByNTflvwIuQ%3D%3D"}],"group":"cf-nel","max_age":604800}' - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - cache-control: - - no-cache, no-store, private - pragma: - - no-cache - set-cookie: - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTa=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - SameSite=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BT1=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - - ADRUM_BTs=SANITIZED; Max-Age=SANITIZED; Expires=SANITIZED; Path=SANITIZED; - Secure - status: - code: 200 - message: OK -version: 1 diff --git a/python-garminconnect/tests/conftest.py b/python-garminconnect/tests/conftest.py deleted file mode 100644 index 3f41cee..0000000 --- a/python-garminconnect/tests/conftest.py +++ /dev/null @@ -1,78 +0,0 @@ -import json -import os -import re - -import pytest - - -@pytest.fixture -def vcr(vcr): - assert "GARMINTOKENS" in os.environ - return vcr - - -def sanitize_cookie(cookie_value) -> str: - return re.sub(r"=[^;]*", "=SANITIZED", cookie_value) - - -def sanitize_request(request): - if request.body: - try: - body = request.body.decode("utf8") - except UnicodeDecodeError: - ... - else: - for key in ["username", "password", "refresh_token"]: - body = re.sub(key + r"=[^&]*", f"{key}=SANITIZED", body) - request.body = body.encode("utf8") - - if "Cookie" in request.headers: - cookies = request.headers["Cookie"].split("; ") - sanitized_cookies = [sanitize_cookie(cookie) for cookie in cookies] - request.headers["Cookie"] = "; ".join(sanitized_cookies) - return request - - -def sanitize_response(response): - for key in ["set-cookie", "Set-Cookie"]: - if key in response["headers"]: - cookies = response["headers"][key] - sanitized_cookies = [sanitize_cookie(cookie) for cookie in cookies] - response["headers"][key] = sanitized_cookies - - body = response["body"]["string"].decode("utf8") - patterns = [ - "oauth_token=[^&]*", - "oauth_token_secret=[^&]*", - "mfa_token=[^&]*", - ] - for pattern in patterns: - body = re.sub(pattern, pattern.split("=")[0] + "=SANITIZED", body) - try: - body_json = json.loads(body) - except json.JSONDecodeError: - pass - else: - for field in [ - "access_token", - "refresh_token", - "jti", - "consumer_key", - "consumer_secret", - ]: - if field in body_json: - body_json[field] = "SANITIZED" - - body = json.dumps(body_json) - response["body"]["string"] = body.encode("utf8") - - return response - - -@pytest.fixture(scope="session") -def vcr_config(): - return { - "filter_headers": [("Authorization", "Bearer SANITIZED")], - "before_record_request": sanitize_request, - "before_record_response": sanitize_response, - } diff --git a/python-garminconnect/tests/test_garmin.py b/python-garminconnect/tests/test_garmin.py deleted file mode 100644 index a1f82fc..0000000 --- a/python-garminconnect/tests/test_garmin.py +++ /dev/null @@ -1,146 +0,0 @@ -import pytest - -import garminconnect - -DATE = "2023-07-01" - - -@pytest.fixture(scope="session") -def garmin(): - return garminconnect.Garmin("email", "password") - - -@pytest.mark.vcr -def test_stats(garmin): - garmin.login() - stats = garmin.get_stats(DATE) - assert "totalKilocalories" in stats - assert "activeKilocalories" in stats - - -@pytest.mark.vcr -def test_user_summary(garmin): - garmin.login() - user_summary = garmin.get_user_summary(DATE) - assert "totalKilocalories" in user_summary - assert "activeKilocalories" in user_summary - - -@pytest.mark.vcr -def test_steps_data(garmin): - garmin.login() - steps_data = garmin.get_steps_data(DATE)[0] - assert "steps" in steps_data - - -@pytest.mark.vcr -def test_floors(garmin): - garmin.login() - floors_data = garmin.get_floors(DATE) - assert "floorValuesArray" in floors_data - - -@pytest.mark.vcr -def test_daily_steps(garmin): - garmin.login() - daily_steps = garmin.get_daily_steps(DATE, DATE)[0] - assert "calendarDate" in daily_steps - assert "totalSteps" in daily_steps - assert "stepGoal" in daily_steps - - -@pytest.mark.vcr -def test_heart_rates(garmin): - garmin.login() - heart_rates = garmin.get_heart_rates(DATE) - assert "calendarDate" in heart_rates - assert "restingHeartRate" in heart_rates - - -@pytest.mark.vcr -def test_stats_and_body(garmin): - garmin.login() - stats_and_body = garmin.get_stats_and_body(DATE) - assert "calendarDate" in stats_and_body - assert "metabolicAge" in stats_and_body - - -@pytest.mark.vcr -def test_body_composition(garmin): - garmin.login() - body_composition = garmin.get_body_composition(DATE) - assert "totalAverage" in body_composition - assert "metabolicAge" in body_composition["totalAverage"] - - -@pytest.mark.vcr -def test_body_battery(garmin): - garmin.login() - body_battery = garmin.get_body_battery(DATE)[0] - assert "date" in body_battery - assert "charged" in body_battery - - -@pytest.mark.vcr -def test_hydration_data(garmin): - garmin.login() - hydration_data = garmin.get_hydration_data(DATE) - assert hydration_data - assert "calendarDate" in hydration_data - - -@pytest.mark.vcr -def test_respiration_data(garmin): - garmin.login() - respiration_data = garmin.get_respiration_data(DATE) - assert "calendarDate" in respiration_data - assert "avgSleepRespirationValue" in respiration_data - - -@pytest.mark.vcr -def test_spo2_data(garmin): - garmin.login() - spo2_data = garmin.get_spo2_data(DATE) - assert "calendarDate" in spo2_data - assert "averageSpO2" in spo2_data - - -@pytest.mark.vcr -def test_hrv_data(garmin): - garmin.login() - hrv_data = garmin.get_hrv_data(DATE) - assert "hrvSummary" in hrv_data - assert "weeklyAvg" in hrv_data["hrvSummary"] - - -@pytest.mark.vcr -def test_download_activity(garmin): - garmin.login() - activity_id = "11998957007" - activity = garmin.download_activity(activity_id) - assert activity - - -@pytest.mark.vcr -def test_all_day_stress(garmin): - garmin.login() - all_day_stress = garmin.get_all_day_stress(DATE) - assert "bodyBatteryValuesArray" in all_day_stress - assert "calendarDate" in all_day_stress - - -@pytest.mark.vcr -def test_upload(garmin): - garmin.login() - fpath = "tests/12129115726_ACTIVITY.fit" - assert garmin.upload_activity(fpath) - - -@pytest.mark.vcr -def test_request_reload(garmin): - garmin.login() - cdate = "2021-01-01" - assert sum(steps["steps"] for steps in garmin.get_steps_data(cdate)) == 0 - assert garmin.request_reload(cdate) - # In practice, the data can take a while to load - assert sum(steps["steps"] for steps in garmin.get_steps_data(cdate)) > 0