From ef37d2ae0bf60befbe7a0369c26eadf479847428 Mon Sep 17 00:00:00 2001
From: vsavkin
Date: Tue, 21 Jun 2016 23:06:35 -0700
Subject: [PATCH] example(router): add an example app for the new router
---
.../e2e_test/routing/routing_spec.ts | 69 -
.../routing_deprecated_spec.dart | 3 +
.../routing_deprecated_spec.ts | 91 +
modules/playground/src/bootstrap.ts | 1 +
.../playground/src/routing/app/drafts.html | 2 +-
.../playground/src/routing/app/inbox-app.html | 4 +-
.../playground/src/routing/app/inbox-app.ts | 99 +-
.../src/routing/app/inbox-detail.html | 4 +-
modules/playground/src/routing/app/inbox.html | 2 +-
modules/playground/src/routing/index.ts | 7 +-
.../src/routing_deprecated/app/data.ts | 2116 +++++++++++++++++
.../src/routing_deprecated/app/drafts.html | 11 +
.../src/routing_deprecated/app/inbox-app.html | 5 +
.../src/routing_deprecated/app/inbox-app.ts | 161 ++
.../routing_deprecated/app/inbox-detail.html | 24 +
.../src/routing_deprecated/app/inbox.html | 10 +
.../src/routing_deprecated/css/app.css | 57 +
.../src/routing_deprecated/index.html | 14 +
.../src/routing_deprecated/index.ts | 9 +
19 files changed, 2555 insertions(+), 134 deletions(-)
create mode 100644 modules/playground/e2e_test/routing_deprecated/routing_deprecated_spec.dart
create mode 100644 modules/playground/e2e_test/routing_deprecated/routing_deprecated_spec.ts
create mode 100644 modules/playground/src/routing_deprecated/app/data.ts
create mode 100644 modules/playground/src/routing_deprecated/app/drafts.html
create mode 100644 modules/playground/src/routing_deprecated/app/inbox-app.html
create mode 100644 modules/playground/src/routing_deprecated/app/inbox-app.ts
create mode 100644 modules/playground/src/routing_deprecated/app/inbox-detail.html
create mode 100644 modules/playground/src/routing_deprecated/app/inbox.html
create mode 100644 modules/playground/src/routing_deprecated/css/app.css
create mode 100644 modules/playground/src/routing_deprecated/index.html
create mode 100644 modules/playground/src/routing_deprecated/index.ts
diff --git a/modules/playground/e2e_test/routing/routing_spec.ts b/modules/playground/e2e_test/routing/routing_spec.ts
index 2c9d697119..eb6aaaa8ef 100644
--- a/modules/playground/e2e_test/routing/routing_spec.ts
+++ b/modules/playground/e2e_test/routing/routing_spec.ts
@@ -18,74 +18,5 @@ describe('routing inbox-app', () => {
waitForElement('.inbox-item-record');
expect(element.all(by.css('.inbox-item-record')).count()).toEqual(200);
});
-
- it('should build a link which points to the detail page', () => {
- browser.get(URL);
- waitForElement('#item-15');
- expect(element(by.css('#item-15')).getAttribute('href')).toMatch(/#\/detail\/15$/);
- element(by.css('#item-15')).click();
- waitForElement('#record-id');
- expect(browser.getCurrentUrl()).toMatch(/\/detail\/15$/);
- });
});
-
-
- describe('drafts view', () => {
- var URL = 'all/playground/src/routing/#/drafts';
-
- it('should navigate to the drafts view when the drafts link is clicked', () => {
- browser.get(URL);
- waitForElement('.inbox-item-record');
- element(by.linkText('Drafts')).click();
- waitForElement('.page-title');
- expect(element(by.css('.page-title')).getText()).toEqual('Drafts');
- });
-
- it('should navigate to email details', () => {
- browser.get(URL);
- element(by.linkText('Drafts')).click();
- waitForElement('.inbox-item-record');
- expect(element.all(by.css('.inbox-item-record')).count()).toEqual(2);
- expect(element(by.css('#item-201')).getAttribute('href')).toMatch(/#\/detail\/201$/);
- element(by.css('#item-201')).click();
- waitForElement('#record-id');
- expect(browser.getCurrentUrl()).toMatch(/\/detail\/201$/);
- });
- });
-
-
- describe('detail view', () => {
- var URL = 'all/playground/src/routing/';
-
- it('should navigate to the detail view when an email is clicked', () => {
- browser.get(URL);
- waitForElement('#item-10');
- element(by.css('#item-10')).click();
- waitForElement('#record-id');
- var recordId = element(by.css("#record-id"));
- browser.wait(protractor.until.elementTextIs(recordId, "ID: 10"), 5000);
- expect(recordId.getText()).toEqual('ID: 10');
- });
-
- it('should navigate back to the email inbox page when the back button is clicked', () => {
- browser.get(URL);
- waitForElement('#item-10');
- element(by.css('#item-10')).click();
- waitForElement('.back-button');
- element(by.css('.back-button')).click();
- expect(browser.getCurrentUrl()).toMatch(/\/$/);
- });
-
- it('should navigate back to index and sort the page items based on the provided querystring param',
- () => {
- browser.get(URL);
- waitForElement('#item-10');
- element(by.css('#item-10')).click();
- waitForElement('.sort-button');
- element(by.css('.sort-button')).click();
- expect(browser.getCurrentUrl()).toMatch(/\/#\?sort=date$/);
- waitForElement('.inbox-item-record');
- expect(element(by.css(".inbox-item-record > a")).getAttribute("id")).toEqual("item-137");
- });
- })
});
diff --git a/modules/playground/e2e_test/routing_deprecated/routing_deprecated_spec.dart b/modules/playground/e2e_test/routing_deprecated/routing_deprecated_spec.dart
new file mode 100644
index 0000000000..8c1c7fd661
--- /dev/null
+++ b/modules/playground/e2e_test/routing_deprecated/routing_deprecated_spec.dart
@@ -0,0 +1,3 @@
+library playground.e2e_test.routing.routing_spec;
+
+main() {}
diff --git a/modules/playground/e2e_test/routing_deprecated/routing_deprecated_spec.ts b/modules/playground/e2e_test/routing_deprecated/routing_deprecated_spec.ts
new file mode 100644
index 0000000000..272efd0dff
--- /dev/null
+++ b/modules/playground/e2e_test/routing_deprecated/routing_deprecated_spec.ts
@@ -0,0 +1,91 @@
+import {verifyNoBrowserErrors} from '@angular/platform-browser/testing_e2e';
+
+function waitForElement(selector: any /** TODO #9100 */) {
+ var EC = (protractor).ExpectedConditions;
+ // Waits for the element with id 'abc' to be present on the dom.
+ browser.wait(EC.presenceOf($(selector)), 20000);
+}
+
+describe('deprecated routing inbox-app', () => {
+
+ afterEach(verifyNoBrowserErrors);
+
+ describe('index view', () => {
+ var URL = 'all/playground/src/routing_deprecated/';
+
+ it('should list out the current collection of items', () => {
+ browser.get(URL);
+ waitForElement('.inbox-item-record');
+ expect(element.all(by.css('.inbox-item-record')).count()).toEqual(200);
+ });
+
+ it('should build a link which points to the detail page', () => {
+ browser.get(URL);
+ waitForElement('#item-15');
+ expect(element(by.css('#item-15')).getAttribute('href')).toMatch(/#\/detail\/15$/);
+ element(by.css('#item-15')).click();
+ waitForElement('#record-id');
+ expect(browser.getCurrentUrl()).toMatch(/\/detail\/15$/);
+ });
+ });
+
+
+ describe('drafts view', () => {
+ var URL = 'all/playground/src/routing_deprecated/#/drafts';
+
+ it('should navigate to the drafts view when the drafts link is clicked', () => {
+ browser.get(URL);
+ waitForElement('.inbox-item-record');
+ element(by.linkText('Drafts')).click();
+ waitForElement('.page-title');
+ expect(element(by.css('.page-title')).getText()).toEqual('Drafts');
+ });
+
+ it('should navigate to email details', () => {
+ browser.get(URL);
+ element(by.linkText('Drafts')).click();
+ waitForElement('.inbox-item-record');
+ expect(element.all(by.css('.inbox-item-record')).count()).toEqual(2);
+ expect(element(by.css('#item-201')).getAttribute('href')).toMatch(/#\/detail\/201$/);
+ element(by.css('#item-201')).click();
+ waitForElement('#record-id');
+ expect(browser.getCurrentUrl()).toMatch(/\/detail\/201$/);
+ });
+ });
+
+
+ describe('detail view', () => {
+ var URL = 'all/playground/src/routing_deprecated/';
+
+ it('should navigate to the detail view when an email is clicked', () => {
+ browser.get(URL);
+ waitForElement('#item-10');
+ element(by.css('#item-10')).click();
+ waitForElement('#record-id');
+ var recordId = element(by.css("#record-id"));
+ browser.wait(protractor.until.elementTextIs(recordId, "ID: 10"), 5000);
+ expect(recordId.getText()).toEqual('ID: 10');
+ });
+
+ it('should navigate back to the email inbox page when the back button is clicked', () => {
+ browser.get(URL);
+ waitForElement('#item-10');
+ element(by.css('#item-10')).click();
+ waitForElement('.back-button');
+ element(by.css('.back-button')).click();
+ expect(browser.getCurrentUrl()).toMatch(/\/$/);
+ });
+
+ it('should navigate back to index and sort the page items based on the provided querystring param',
+ () => {
+ browser.get(URL);
+ waitForElement('#item-10');
+ element(by.css('#item-10')).click();
+ waitForElement('.sort-button');
+ element(by.css('.sort-button')).click();
+ expect(browser.getCurrentUrl()).toMatch(/\/#\?sort=date$/);
+ waitForElement('.inbox-item-record');
+ expect(element(by.css(".inbox-item-record > a")).getAttribute("id")).toEqual("item-137");
+ });
+ })
+});
diff --git a/modules/playground/src/bootstrap.ts b/modules/playground/src/bootstrap.ts
index b7f2f7babd..f2f987e601 100644
--- a/modules/playground/src/bootstrap.ts
+++ b/modules/playground/src/bootstrap.ts
@@ -26,6 +26,7 @@ declare var System: any;
'@angular/http': '/packages-dist/http/bundles/http.umd.js',
'@angular/upgrade': '/packages-dist/upgrade/bundles/upgrade.umd.js',
'@angular/router-deprecated': '/packages-dist/router-deprecated/bundles/router-deprecated.umd.js',
+ '@angular/router': '/packages-dist/router/bundles/router.umd.js',
'@angular/core/src/facade': '/all/@angular/core/src/facade',
'rxjs': location.pathname.replace(/\w+\.html$/i, '') + 'rxjs'
},
diff --git a/modules/playground/src/routing/app/drafts.html b/modules/playground/src/routing/app/drafts.html
index 6cfee645bd..62d968bc1c 100644
--- a/modules/playground/src/routing/app/drafts.html
+++ b/modules/playground/src/routing/app/drafts.html
@@ -4,7 +4,7 @@
-
+ [routerLink]="['/detail', item.id]">
{{ item.subject }}
diff --git a/modules/playground/src/routing/app/inbox-app.html b/modules/playground/src/routing/app/inbox-app.html
index 4629749c18..5c24c031bb 100644
--- a/modules/playground/src/routing/app/inbox-app.html
+++ b/modules/playground/src/routing/app/inbox-app.html
@@ -1,5 +1,5 @@
- Inbox
- Drafts
+ Inbox
+ Drafts
diff --git a/modules/playground/src/routing/app/inbox-app.ts b/modules/playground/src/routing/app/inbox-app.ts
index 3c941937b8..b9e800a527 100644
--- a/modules/playground/src/routing/app/inbox-app.ts
+++ b/modules/playground/src/routing/app/inbox-app.ts
@@ -1,18 +1,11 @@
import {Component, Injectable} from '@angular/core';
-import {
- RouterLink,
- RouteConfig,
- Router,
- Route,
- RouterOutlet,
- RouteParams
-} from '@angular/router-deprecated';
+import {ROUTER_DIRECTIVES, ActivatedRoute, Router} from '@angular/router';
import * as db from './data';
import {Location} from '@angular/common';
import {PromiseWrapper, PromiseCompleter} from '@angular/core/src/facade/async';
import {isPresent, DateWrapper} from '@angular/core/src/facade/lang';
-class InboxRecord {
+export class InboxRecord {
id: string = '';
subject: string = '';
content: string = '';
@@ -57,7 +50,7 @@ class InboxRecord {
}
@Injectable()
-class DbService {
+export class DbService {
getData(): Promise {
var p = new PromiseCompleter();
p.resolve(db.data);
@@ -89,48 +82,51 @@ class DbService {
}
@Component(
- {selector: 'inbox-detail', directives: [RouterLink], templateUrl: 'app/inbox-detail.html'})
-class InboxDetailCmp {
- record: InboxRecord = new InboxRecord();
- ready: boolean = false;
+ {selector: 'inbox-detail', directives: ROUTER_DIRECTIVES, templateUrl: 'app/inbox-detail.html'})
+export class InboxDetailCmp {
+ private record: InboxRecord = new InboxRecord();
+ private ready: boolean = false;
- constructor(db: DbService, params: RouteParams) {
- var id = params.get('id');
- PromiseWrapper.then(db.email(id), (data) => { this.record.setData(data); });
+ constructor(db: DbService, route: ActivatedRoute) {
+ route.params.forEach(p => {
+ PromiseWrapper.then(db.email(p['id']), (data) => { this.record.setData(data); });
+ });
}
}
-@Component({selector: 'inbox', templateUrl: 'app/inbox.html', directives: [RouterLink]})
-class InboxCmp {
- items: InboxRecord[] = [];
- ready: boolean = false;
+@Component({selector: 'inbox', templateUrl: 'app/inbox.html', directives: ROUTER_DIRECTIVES})
+export class InboxCmp {
+ private items: InboxRecord[] = [];
+ private ready: boolean = false;
- constructor(public router: Router, db: DbService, params: RouteParams) {
- var sortType = params.get('sort');
- var sortEmailsByDate = isPresent(sortType) && sortType == "date";
+ constructor(public router: Router, db: DbService, route: ActivatedRoute) {
+ route.params.forEach(p => {
+ const sortType = p['sort'];
+ const sortEmailsByDate = isPresent(sortType) && sortType == "date";
- PromiseWrapper.then(db.emails(), (emails: any[]) => {
- this.ready = true;
- this.items = emails.map(data => new InboxRecord(data));
+ PromiseWrapper.then(db.emails(), (emails: any[]) => {
+ this.ready = true;
+ this.items = emails.map(data => new InboxRecord(data));
- if (sortEmailsByDate) {
- this.items.sort((a: InboxRecord, b: InboxRecord) =>
- DateWrapper.toMillis(DateWrapper.fromISOString(a.date)) <
- DateWrapper.toMillis(DateWrapper.fromISOString(b.date)) ?
- -1 :
- 1);
- }
+ if (sortEmailsByDate) {
+ this.items.sort((a: InboxRecord, b: InboxRecord) =>
+ DateWrapper.toMillis(DateWrapper.fromISOString(a.date)) <
+ DateWrapper.toMillis(DateWrapper.fromISOString(b.date)) ?
+ -1 :
+ 1);
+ }
+ });
});
}
}
-@Component({selector: 'drafts', templateUrl: 'app/drafts.html', directives: [RouterLink]})
-class DraftsCmp {
- items: InboxRecord[] = [];
- ready: boolean = false;
+@Component({selector: 'drafts', templateUrl: 'app/drafts.html', directives: ROUTER_DIRECTIVES})
+export class DraftsCmp {
+ private items: InboxRecord[] = [];
+ private ready: boolean = false;
- constructor(public router: Router, db: DbService) {
+ constructor(private router: Router, db: DbService) {
PromiseWrapper.then(db.drafts(), (drafts: any[]) => {
this.ready = true;
this.items = drafts.map(data => new InboxRecord(data));
@@ -138,24 +134,17 @@ class DraftsCmp {
}
}
+export const ROUTER_CONFIG = [
+ {path: '', terminal: true, redirectTo: 'inbox'},
+ {path: 'inbox', component: InboxCmp},
+ {path: 'drafts', component: DraftsCmp},
+ {path: 'detail/:id', component: InboxDetailCmp}
+];
+
@Component({
selector: 'inbox-app',
viewProviders: [DbService],
templateUrl: 'app/inbox-app.html',
- directives: [RouterOutlet, RouterLink]
+ directives: ROUTER_DIRECTIVES
})
-@RouteConfig([
- new Route({path: '/', component: InboxCmp, name: 'Inbox'}),
- new Route({path: '/drafts', component: DraftsCmp, name: 'Drafts'}),
- new Route({path: '/detail/:id', component: InboxDetailCmp, name: 'DetailPage'})
-])
-export class InboxApp {
- router: Router;
- location: Location;
- constructor(router: Router, location: Location) {
- this.router = router;
- this.location = location;
- }
- inboxPageActive() { return this.location.path() == ''; }
- draftsPageActive() { return this.location.path() == '/drafts'; }
-}
+export class InboxApp {}
diff --git a/modules/playground/src/routing/app/inbox-detail.html b/modules/playground/src/routing/app/inbox-detail.html
index 0766e502cb..bcd6d13a1b 100644
--- a/modules/playground/src/routing/app/inbox-detail.html
+++ b/modules/playground/src/routing/app/inbox-detail.html
@@ -13,12 +13,12 @@
- Back
+ Back
-
+
View Latest Messages
diff --git a/modules/playground/src/routing/app/inbox.html b/modules/playground/src/routing/app/inbox.html
index 4568060601..976525c39f 100644
--- a/modules/playground/src/routing/app/inbox.html
+++ b/modules/playground/src/routing/app/inbox.html
@@ -4,7 +4,7 @@
-
{{ item.subject }}
+ [routerLink]="['/detail', item.id]">{{ item.subject }}
diff --git a/modules/playground/src/routing/index.ts b/modules/playground/src/routing/index.ts
index e829e12149..86a35ee24b 100644
--- a/modules/playground/src/routing/index.ts
+++ b/modules/playground/src/routing/index.ts
@@ -1,9 +1,8 @@
-import {InboxApp} from './app/inbox-app';
+import {InboxApp, ROUTER_CONFIG} from './app/inbox-app';
import {bootstrap} from '@angular/platform-browser-dynamic';
import {HashLocationStrategy, LocationStrategy} from '@angular/common';
-import {ROUTER_PROVIDERS} from '@angular/router-deprecated';
+import {provideRouter} from '@angular/router';
export function main() {
- bootstrap(InboxApp,
- [ROUTER_PROVIDERS, {provide: LocationStrategy, useClass: HashLocationStrategy}]);
+ bootstrap(InboxApp, [provideRouter(ROUTER_CONFIG), {provide: LocationStrategy, useClass: HashLocationStrategy}]);
}
diff --git a/modules/playground/src/routing_deprecated/app/data.ts b/modules/playground/src/routing_deprecated/app/data.ts
new file mode 100644
index 0000000000..a984dd6ea3
--- /dev/null
+++ b/modules/playground/src/routing_deprecated/app/data.ts
@@ -0,0 +1,2116 @@
+export var data = [
+ {
+ "id": "1",
+ "first-name": "Montana",
+ "last-name": "Prosacco",
+ "email": "jairo.bergnaum@bergnaum.org",
+ "date": "1991-10-12 15:12:46 -0700",
+ "content":
+ "Et quisquam veniam voluptatem enim temporibus itaque. Ipsam voluptatem et. Occaecati rerum animi.",
+ "subject": "Quidem quo ipsam architecto soluta numquam et"
+ },
+
+ {
+ "id": "2",
+ "first-name": "Frances",
+ "last-name": "Schaden",
+ "email": "pierre_tromp@adams.com",
+ "date": "2001-05-06 08:22:33 -0700",
+ "content": "Porro ea tempore numquam deserunt voluptas qui. Est quis suscipit.",
+ "subject": "Voluptatibus dolore porro animi"
+ },
+
+ {
+ "id": "3",
+ "first-name": "Jayne",
+ "last-name": "Kreiger",
+ "email": "breanne@howell.net",
+ "date": "2001-05-22 14:28:41 -0700",
+ "content": "Voluptas et est laborum non ullam.",
+ "subject": "Ratione ut illum fuga non"
+ },
+
+ {
+ "id": "4",
+ "first-name": "Hester",
+ "last-name": "Wyman",
+ "email": "fausto@steuber.com",
+ "date": "1996-07-20 02:13:12 -0700",
+ "content":
+ "Iusto enim laborum. Autem sed quas laborum deserunt quibusdam dolorem. Laboriosam nesciunt debitis possimus ut aut quae.",
+ "subject": "Ea quas et quia beatae dolores"
+ },
+
+ {
+ "id": "5",
+ "first-name": "Alexandre",
+ "last-name": "Dietrich",
+ "email": "carmella_mante@moendibbert.biz",
+ "date": "2006-03-20 23:44:38 -0800",
+ "content": "Voluptates voluptatem dolorem non quod dolores.",
+ "subject": "Nostrum ad modi non consequatur repellendus et harum"
+ },
+
+ {
+ "id": "6",
+ "first-name": "Ena",
+ "last-name": "Green",
+ "email": "jan_koepp@glover.name",
+ "date": "1988-03-21 02:00:36 -0800",
+ "content":
+ "Nam inventore voluptatum eaque ratione nisi nesciunt. Qui ex qui omnis aliquid. Dolorem ipsum expedita.",
+ "subject": "Qui sint vero accusamus quam id vitae quis quia"
+ },
+
+ {
+ "id": "7",
+ "first-name": "Rebecca",
+ "last-name": "Walsh",
+ "email": "marta@mueller.biz",
+ "date": "1974-05-09 02:40:20 -0700",
+ "content":
+ "Voluptas vel ut. Rerum vero repellat accusantium earum. Ea atque exercitationem expedita id dolores dolorem.",
+ "subject": "Suscipit et inventore exercitationem ut voluptatum esse vero"
+ },
+
+ {
+ "id": "8",
+ "first-name": "Jed",
+ "last-name": "Rogahn",
+ "email": "talia_crist@mertzfadel.info",
+ "date": "2006-10-17 01:28:46 -0700",
+ "content": "Cupiditate nam blanditiis.",
+ "subject": "Dolore nulla qui sequi ut enim sed"
+ },
+
+ {
+ "id": "9",
+ "first-name": "Fabiola",
+ "last-name": "Olson",
+ "email": "henderson@casper.org",
+ "date": "2008-02-29 11:46:44 -0800",
+ "content":
+ "Similique nesciunt omnis beatae omnis pariatur quas. Voluptatem eum consequatur id impedit fugit dignissimos ut.",
+ "subject": "Sit quasi accusamus aut et eum"
+ },
+
+ {
+ "id": "10",
+ "first-name": "Alex",
+ "last-name": "Turcotte",
+ "email": "mya@stokes.org",
+ "date": "1974-03-29 12:02:53 -0700",
+ "content":
+ "Ut pariatur porro maiores. Saepe soluta aspernatur est sed suscipit. Excepturi incidunt aut atque nostrum cum non.",
+ "subject": "Rerum dolore sunt veniam provident"
+ },
+
+ {
+ "id": "11",
+ "first-name": "Jerome",
+ "last-name": "Greenholt",
+ "email": "jazmyne.dibbert@abshire.org",
+ "date": "1997-01-12 02:48:08 -0800",
+ "content": "Natus error id.",
+ "subject": "Rerum nemo aperiam veritatis veniam"
+ },
+
+ {
+ "id": "12",
+ "first-name": "Antwan",
+ "last-name": "Kreiger",
+ "email": "delilah@dibbert.name",
+ "date": "1971-05-08 10:45:01 -0700",
+ "content":
+ "Perspiciatis sed quo. Eum dignissimos quia expedita dolorem illum minima enim. Fugiat ducimus nostrum quia reiciendis autem nisi placeat.",
+ "subject": "Esse ipsum pariatur voluptatum rerum labore id odit"
+ },
+
+ {
+ "id": "13",
+ "first-name": "Kyleigh",
+ "last-name": "Rogahn",
+ "email": "ralph_ledner@bartolettifay.info",
+ "date": "2013-11-28 16:10:15 -0800",
+ "content": "Molestias repudiandae dicta vel.",
+ "subject": "Facilis occaecati pariatur qui incidunt reprehenderit sunt"
+ },
+
+ {
+ "id": "14",
+ "first-name": "Henriette",
+ "last-name": "Gottlieb",
+ "email": "adeline.rowe@lubowitz.net",
+ "date": "1983-02-11 06:45:49 -0800",
+ "content": "Eveniet ut voluptas eos ut rerum voluptatum.",
+ "subject": "Natus voluptas voluptatem alias"
+ },
+
+ {
+ "id": "15",
+ "first-name": "Jacklyn",
+ "last-name": "White",
+ "email": "milton_keebler@braun.biz",
+ "date": "1992-01-07 12:27:59 -0800",
+ "content": "Reiciendis et aperiam. Doloremque totam repudiandae velit fuga fugiat.",
+ "subject": "Nulla est magnam ducimus porro commodi"
+ },
+
+ {
+ "id": "16",
+ "first-name": "Charlotte",
+ "last-name": "Ziemann",
+ "email": "brett@purdymills.com",
+ "date": "1972-06-06 02:42:50 -0700",
+ "content":
+ "Voluptatem corporis tempore. Consectetur fugit perspiciatis libero dolore consequatur asperiores. Voluptates ea accusamus.",
+ "subject": "Ea adipisci reiciendis excepturi suscipit necessitatibus ut sed"
+ },
+
+ {
+ "id": "17",
+ "first-name": "Giovanny",
+ "last-name": "Runolfsdottir",
+ "email": "dustin.sanford@rippin.com",
+ "date": "1987-04-14 19:29:11 -0700",
+ "content":
+ "Dolor consequuntur sed aspernatur qui. Sit cumque id animi ut sed id. Asperiores voluptatem similique voluptas.",
+ "subject": "Id ut voluptatum culpa molestiae quo"
+ },
+
+ {
+ "id": "18",
+ "first-name": "Savion",
+ "last-name": "McCullough",
+ "email": "don@gorczanysimonis.name",
+ "date": "1974-01-18 14:40:40 -0700",
+ "content":
+ "Autem voluptatem dignissimos vel debitis ipsum voluptatem consequuntur. Voluptatum et saepe.",
+ "subject": "Ipsa similique quo nostrum"
+ },
+
+ {
+ "id": "19",
+ "first-name": "Robbie",
+ "last-name": "Kohler",
+ "email": "haley@waters.biz",
+ "date": "2002-09-28 08:35:10 -0700",
+ "content":
+ "Quo ut accusantium similique necessitatibus. Sunt impedit commodi ut et odit voluptatibus error.",
+ "subject": "Voluptate eum quo error"
+ },
+
+ {
+ "id": "20",
+ "first-name": "Eulalia",
+ "last-name": "Effertz",
+ "email": "rodrigo_parisian@bergecartwright.net",
+ "date": "2006-07-29 21:47:56 -0700",
+ "content":
+ "Eum repudiandae rem aliquid dolorum suscipit vel. Autem vel voluptas et iure magni.",
+ "subject": "Est dolorum modi et error consequuntur qui"
+ },
+
+ {
+ "id": "21",
+ "first-name": "Gregoria",
+ "last-name": "Boehm",
+ "email": "miles@jerde.org",
+ "date": "1997-04-11 19:49:38 -0700",
+ "content":
+ "Qui necessitatibus veniam. Maiores impedit in natus aspernatur adipisci. Ad sapiente iste.",
+ "subject": "Doloribus ipsum a eius voluptatem nulla"
+ },
+
+ {
+ "id": "22",
+ "first-name": "Berry",
+ "last-name": "Collier",
+ "email": "larry_rath@rathbernier.info",
+ "date": "1981-06-26 05:26:47 -0700",
+ "content":
+ "Numquam rerum quia similique enim sequi eos inventore. Numquam inventore aliquam commodi neque maiores. Hic et vel aut velit corrupti.",
+ "subject": "Optio ab delectus pariatur vel tempore"
+ },
+
+ {
+ "id": "23",
+ "first-name": "Crawford",
+ "last-name": "Ryan",
+ "email": "cindy_ziemann@harvey.org",
+ "date": "1997-06-12 07:56:32 -0700",
+ "content": "Odio ea nostrum molestiae. Doloribus ducimus occaecati facilis pariatur ut est.",
+ "subject": "Quo fugit at totam voluptate est"
+ },
+
+ {
+ "id": "24",
+ "first-name": "Kelsie",
+ "last-name": "Stokes",
+ "email": "jackson_ferry@connelly.name",
+ "date": "1986-07-30 21:39:50 -0700",
+ "content":
+ "Amet voluptatem ea nesciunt sunt. Quidem pariatur sit. Minus aliquam itaque laudantium in quibusdam laboriosam.",
+ "subject": "Labore voluptas dolor repellendus accusantium tempora"
+ },
+
+ {
+ "id": "25",
+ "first-name": "Josefa",
+ "last-name": "Predovic",
+ "email": "moises@sauer.info",
+ "date": "1976-04-09 22:38:31 -0800",
+ "content":
+ "Aliquam consectetur et non soluta. Quia dolore molestiae facilis eos nihil vel. Quidem eos et.",
+ "subject": "Qui architecto inventore alias non aut dolorum porro"
+ },
+
+ {
+ "id": "26",
+ "first-name": "Toby",
+ "last-name": "Wehner",
+ "email": "janet@mohr.org",
+ "date": "2003-05-08 07:44:26 -0700",
+ "content": "Suscipit cumque alias debitis necessitatibus et qui.",
+ "subject": "Possimus laudantium exercitationem ut deleniti similique"
+ },
+
+ {
+ "id": "27",
+ "first-name": "Keira",
+ "last-name": "Stamm",
+ "email": "karlie@witting.info",
+ "date": "2010-11-11 16:17:29 -0800",
+ "content":
+ "Rerum cum at autem repellat quod nihil. Quasi voluptates minus autem accusantium debitis cumque qui.",
+ "subject": "Nostrum repudiandae voluptatum adipisci ut error sunt et sint"
+ },
+
+ {
+ "id": "28",
+ "first-name": "Clark",
+ "last-name": "Predovic",
+ "email": "palma@ankundingbednar.biz",
+ "date": "1978-02-10 16:55:54 -0800",
+ "content":
+ "Non ex aperiam porro. At harum vitae ut exercitationem qui qui. Quae sed sapiente sed debitis officiis quis unde.",
+ "subject": "Eos eligendi voluptatum consequatur reprehenderit"
+ },
+
+ {
+ "id": "29",
+ "first-name": "Colby",
+ "last-name": "Jacobson",
+ "email": "rozella@spencer.com",
+ "date": "1978-01-04 00:18:51 -0800",
+ "content":
+ "Molestiae laudantium voluptas ipsa est laborum vel. Dolorem et est nihil distinctio numquam.",
+ "subject": "Aut et sint deleniti mollitia debitis"
+ },
+
+ {
+ "id": "30",
+ "first-name": "Kayley",
+ "last-name": "Connelly",
+ "email": "rowland.thiel@gutmannorn.info",
+ "date": "2012-12-10 09:59:08 -0800",
+ "content":
+ "Eligendi quia repellat distinctio eum voluptas debitis. Totam a alias qui voluptates dolor.",
+ "subject": "Ipsum consequatur culpa repellat quae mollitia quia unde"
+ },
+
+ {
+ "id": "31",
+ "first-name": "Kay",
+ "last-name": "Reynolds",
+ "email": "lexie.frami@beattyschoen.info",
+ "date": "1991-05-27 22:37:41 -0700",
+ "content":
+ "Laborum quod iusto in voluptas et adipisci dolor. Totam et voluptatibus id tempora. Asperiores magnam dolorem quo iste sapiente.",
+ "subject": "Tempora et eligendi quia dolorem alias ullam maiores doloremque"
+ },
+
+ {
+ "id": "32",
+ "first-name": "Ellsworth",
+ "last-name": "Veum",
+ "email": "estefania_hermann@murray.biz",
+ "date": "1974-12-07 03:43:52 -0800",
+ "content":
+ "Et commodi molestiae hic distinctio et iusto. Quod illo natus unde est aut. Laborum rem rerum totam.",
+ "subject": "Expedita nostrum consectetur sint velit modi maxime quisquam"
+ },
+
+ {
+ "id": "33",
+ "first-name": "Adeline",
+ "last-name": "Altenwerth",
+ "email": "francesco@weberstroman.com",
+ "date": "1988-03-25 22:52:39 -0800",
+ "content":
+ "Quod deserunt eum dignissimos eius et veniam. Non exercitationem omnis molestiae corrupti aliquid commodi repudiandae.",
+ "subject": "Dolor incidunt debitis possimus temporibus rerum quibusdam eaque"
+ },
+
+ {
+ "id": "34",
+ "first-name": "River",
+ "last-name": "Roob",
+ "email": "lester.hodkiewicz@hoppemcglynn.name",
+ "date": "1981-01-03 06:04:53 -0800",
+ "content":
+ "Sed dolorem et laborum voluptate perspiciatis doloremque aliquam. Recusandae et odit. Sit esse consequatur occaecati fuga sed.",
+ "subject": "Dolorem ut quia repudiandae accusamus reprehenderit dignissimos iste cupiditate"
+ },
+
+ {
+ "id": "35",
+ "first-name": "Chaya",
+ "last-name": "Stokes",
+ "email": "rebekah.baumbach@toy.org",
+ "date": "1979-09-03 07:52:52 -0700",
+ "content": "Ea voluptas minus hic omnis.",
+ "subject": "Ab repellendus quia eos eius"
+ },
+
+ {
+ "id": "36",
+ "first-name": "Cara",
+ "last-name": "Brown",
+ "email": "natasha_gibson@bins.name",
+ "date": "1985-12-19 03:29:37 -0800",
+ "content":
+ "Numquam nobis consectetur modi eligendi. Facere adipisci aut velit quis dolor quidem totam. Consequatur qui placeat aut molestiae dignissimos.",
+ "subject": "Est quia reiciendis enim et totam temporibus"
+ },
+
+ {
+ "id": "37",
+ "first-name": "Laron",
+ "last-name": "Wunsch",
+ "email": "erna@heathcote.com",
+ "date": "2004-06-28 16:53:07 -0700",
+ "content":
+ "Quisquam maxime nostrum explicabo corrupti ut. Et accusantium culpa occaecati officiis quo.",
+ "subject": "Et et nulla aspernatur quas distinctio"
+ },
+
+ {
+ "id": "38",
+ "first-name": "Lessie",
+ "last-name": "Roob",
+ "email": "ona_olson@dicki.biz",
+ "date": "1980-02-10 00:18:48 -0800",
+ "content":
+ "Facere veritatis aut quam praesentium ut. Consectetur praesentium explicabo consequuntur quia vel rem.",
+ "subject": "Tenetur ducimus mollitia consequatur dicta"
+ },
+
+ {
+ "id": "39",
+ "first-name": "Felton",
+ "last-name": "Labadie",
+ "email": "stone.kihn@vonruedenbartoletti.biz",
+ "date": "2002-04-04 17:29:31 -0800",
+ "content":
+ "Iure ad nesciunt. Excepturi impedit eum suscipit dignissimos est. Corrupti accusamus sapiente ratione eaque iure aut mollitia.",
+ "subject": "Sunt et eius et iusto accusamus voluptas eum"
+ },
+
+ {
+ "id": "40",
+ "first-name": "Verna",
+ "last-name": "Hoppe",
+ "email": "arthur_schiller@daniel.org",
+ "date": "2013-05-15 16:04:25 -0700",
+ "content":
+ "Veniam quia omnis at sapiente. Est est fugit eum. Impedit suscipit hic similique eum quibusdam.",
+ "subject": "Voluptatum ipsum libero et vitae odio dolore tenetur perspiciatis"
+ },
+
+ {
+ "id": "41",
+ "first-name": "Velda",
+ "last-name": "Veum",
+ "email": "christy@feil.org",
+ "date": "1988-10-24 12:42:25 -0700",
+ "content": "Rem inventore necessitatibus iste et quia vero laudantium.",
+ "subject": "Suscipit similique provident officia est explicabo sed"
+ },
+
+ {
+ "id": "42",
+ "first-name": "Mackenzie",
+ "last-name": "Schroeder",
+ "email": "miles.dietrich@stehrkuhic.org",
+ "date": "1990-01-07 22:38:09 -0800",
+ "content": "Non autem delectus. Architecto recusandae unde quia rerum inventore repudiandae.",
+ "subject": "Molestiae odio et repudiandae ut"
+ },
+
+ {
+ "id": "43",
+ "first-name": "Natalie",
+ "last-name": "Hoeger",
+ "email": "gregorio_mosciski@schneiderframi.net",
+ "date": "1976-04-06 06:23:07 -0800",
+ "content":
+ "Iste id illo cupiditate enim aut quo. Vel ut eos qui. Aut at in eum maiores voluptatem quidem.",
+ "subject": "Quia officiis sit sint aliquid ad quibusdam et"
+ },
+
+ {
+ "id": "44",
+ "first-name": "Joan",
+ "last-name": "Mosciski",
+ "email": "thad@dickivolkman.info",
+ "date": "1990-12-26 15:04:40 -0800",
+ "content": "Culpa est officia veritatis esse.",
+ "subject": "Est eum ullam quo"
+ },
+
+ {
+ "id": "45",
+ "first-name": "Emmitt",
+ "last-name": "Keeling",
+ "email": "cali@ferry.info",
+ "date": "2009-04-10 10:14:57 -0700",
+ "content":
+ "Numquam velit sunt sed et ut. Laudantium qui laboriosam quibusdam qui. Odio non maxime soluta vero qui.",
+ "subject": "Accusantium saepe id totam aut reiciendis at esse magnam"
+ },
+
+ {
+ "id": "46",
+ "first-name": "Guy",
+ "last-name": "Renner",
+ "email": "naomie_klein@streich.name",
+ "date": "1970-12-18 13:09:51 -0800",
+ "content": "Iure quia at excepturi sit consequatur.",
+ "subject": "Commodi aut ipsa accusantium dolor repudiandae in"
+ },
+
+ {
+ "id": "47",
+ "first-name": "Eric",
+ "last-name": "Kihn",
+ "email": "dock.schmeler@langworth.biz",
+ "date": "1993-12-17 11:17:07 -0800",
+ "content": "Facere voluptate omnis qui officia dicta.",
+ "subject": "Incidunt a libero ab asperiores fuga ut quo illum"
+ },
+
+ {
+ "id": "48",
+ "first-name": "Kraig",
+ "last-name": "Keeling",
+ "email": "alejandrin@streichwiegand.org",
+ "date": "1977-12-09 14:54:22 -0800",
+ "content": "Asperiores expedita incidunt in cum ex vel hic.",
+ "subject": "In illum quisquam ut est eligendi aut"
+ },
+
+ {
+ "id": "49",
+ "first-name": "Justice",
+ "last-name": "Leuschke",
+ "email": "florencio@conn.info",
+ "date": "1991-12-14 09:38:08 -0800",
+ "content":
+ "Aspernatur nesciunt voluptas sit. Cum architecto enim et blanditiis soluta dolor. Recusandae numquam occaecati esse animi et aut.",
+ "subject": "Quaerat voluptatibus eum sapiente iure deserunt"
+ },
+
+ {
+ "id": "50",
+ "first-name": "Jodie",
+ "last-name": "O'Hara",
+ "email": "rick@stehrboehm.info",
+ "date": "2000-07-21 05:34:03 -0700",
+ "content":
+ "Labore repudiandae dolor nostrum quo tempora eos. Natus ea fugit voluptas doloremque distinctio quaerat unde. Ut aut nostrum.",
+ "subject": "Tempore in quam id aliquam fuga eos dolor"
+ },
+
+ {
+ "id": "51",
+ "first-name": "Dannie",
+ "last-name": "Vandervort",
+ "email": "mariana@abbottruecker.biz",
+ "date": "2001-09-15 19:00:54 -0700",
+ "content": "Consectetur dolore voluptas.",
+ "subject": "Tenetur possimus et fuga mollitia perferendis omnis corporis"
+ },
+
+ {
+ "id": "52",
+ "first-name": "Delaney",
+ "last-name": "Champlin",
+ "email": "kyler_welch@krisrowe.biz",
+ "date": "2014-07-22 07:09:07 -0700",
+ "content": "Voluptates qui aut.",
+ "subject": "Quam eos laborum nisi delectus"
+ },
+
+ {
+ "id": "53",
+ "first-name": "Barbara",
+ "last-name": "Kihn",
+ "email": "tyrese.casper@keebler.net",
+ "date": "1996-02-29 20:04:40 -0800",
+ "content": "Totam labore voluptatem eos qui temporibus velit.",
+ "subject": "Eum neque sed aut sunt"
+ },
+
+ {
+ "id": "54",
+ "first-name": "Jarred",
+ "last-name": "Shanahan",
+ "email": "coralie@weinat.net",
+ "date": "1977-06-08 01:46:22 -0700",
+ "content": "Sed et voluptatum ut est quo et aut.",
+ "subject": "Aut eligendi voluptas mollitia et accusamus sint nemo"
+ },
+
+ {
+ "id": "55",
+ "first-name": "Llewellyn",
+ "last-name": "Bechtelar",
+ "email": "kaci@jast.com",
+ "date": "1998-12-01 21:14:32 -0800",
+ "content": "Architecto eligendi et ut occaecati temporibus voluptas quia.",
+ "subject": "Sint quis vitae voluptatem dolor aut quo maiores quas"
+ },
+
+ {
+ "id": "56",
+ "first-name": "Albertha",
+ "last-name": "Upton",
+ "email": "august@bradtkemiller.net",
+ "date": "2006-11-16 14:38:45 -0800",
+ "content":
+ "Voluptas perspiciatis recusandae et. Sequi eum eius dicta dolorem. Alias reprehenderit explicabo doloribus exercitationem sint.",
+ "subject": "Quo nihil fuga dolores cumque rerum eos asperiores"
+ },
+
+ {
+ "id": "57",
+ "first-name": "Christy",
+ "last-name": "Considine",
+ "email": "eliseo@veum.com",
+ "date": "1997-05-17 13:54:41 -0700",
+ "content":
+ "Consequatur rerum laudantium distinctio magni. Iusto ullam et suscipit nemo ex velit voluptatem.",
+ "subject": "Ut ea quisquam libero qui repudiandae aut officia"
+ },
+
+ {
+ "id": "58",
+ "first-name": "Jessica",
+ "last-name": "Simonis",
+ "email": "rickey@mertz.info",
+ "date": "2012-10-04 00:32:34 -0700",
+ "content":
+ "Neque tenetur sunt sunt ratione. Rerum dolorem illo ab blanditiis quisquam architecto. Quidem ea exercitationem enim eos.",
+ "subject": "Atque quo nemo explicabo voluptas blanditiis accusantium et"
+ },
+
+ {
+ "id": "59",
+ "first-name": "Justen",
+ "last-name": "Davis",
+ "email": "karen@jaskolskigleason.org",
+ "date": "1994-08-10 02:33:43 -0700",
+ "content": "Eius tenetur mollitia ad alias ab.",
+ "subject": "Ut accusantium sunt qui nostrum eligendi"
+ },
+
+ {
+ "id": "60",
+ "first-name": "Elwin",
+ "last-name": "Daugherty",
+ "email": "milo@ko.net",
+ "date": "1976-06-30 05:16:38 -0700",
+ "content": "Sit necessitatibus minus.",
+ "subject": "A molestiae voluptates ducimus id est recusandae"
+ },
+
+ {
+ "id": "61",
+ "first-name": "Clair",
+ "last-name": "Raynor",
+ "email": "zella.hermiston@batz.org",
+ "date": "1985-12-18 14:30:18 -0800",
+ "content": "Aut aliquid est sit pariatur voluptatem dolorum.",
+ "subject": "Consectetur reprehenderit temporibus vel voluptatem voluptatem et rem fuga"
+ },
+
+ {
+ "id": "62",
+ "first-name": "Hilario",
+ "last-name": "Klein",
+ "email": "adrain@stark.biz",
+ "date": "1980-09-08 18:06:43 -0700",
+ "content": "Eum dolore optio quos animi.",
+ "subject": "Illum nihil vitae molestiae laboriosam beatae modi"
+ },
+
+ {
+ "id": "63",
+ "first-name": "Greta",
+ "last-name": "Murray",
+ "email": "ethelyn@fritsch.org",
+ "date": "1970-05-23 02:27:54 -0700",
+ "content":
+ "Quisquam animi et recusandae rem modi eos ipsa. Eaque et expedita qui animi veritatis temporibus.",
+ "subject": "Repellendus fuga sint nemo"
+ },
+
+ {
+ "id": "64",
+ "first-name": "Anissa",
+ "last-name": "Adams",
+ "email": "edward@armstrong.com",
+ "date": "1997-01-26 22:21:57 -0800",
+ "content": "Laudantium culpa rem voluptas tempore. Sit modi dolor est sunt rem.",
+ "subject": "Autem unde minima quia beatae totam"
+ },
+
+ {
+ "id": "65",
+ "first-name": "Kaylah",
+ "last-name": "Conroy",
+ "email": "brian.cormier@hyatt.org",
+ "date": "2015-02-02 07:44:37 -0800",
+ "content": "Voluptates vitae nulla expedita. Possimus et quo aut eum.",
+ "subject": "Molestiae minus enim adipisci et"
+ },
+
+ {
+ "id": "66",
+ "first-name": "Jamey",
+ "last-name": "Ebert",
+ "email": "seth@pfannerstillrodriguez.name",
+ "date": "1987-09-29 09:40:59 -0700",
+ "content": "Voluptatem est quae.",
+ "subject": "Similique nemo placeat id tempore dolorum"
+ },
+
+ {
+ "id": "67",
+ "first-name": "Johnson",
+ "last-name": "Mosciski",
+ "email": "morton@littel.net",
+ "date": "1989-02-14 11:15:10 -0800",
+ "content":
+ "Molestias expedita exercitationem et praesentium et vel delectus. Qui fuga molestias porro.",
+ "subject": "Aut rerum quidem est iste in blanditiis sit"
+ },
+
+ {
+ "id": "68",
+ "first-name": "Ellis",
+ "last-name": "O'Keefe",
+ "email": "taurean@ullrich.biz",
+ "date": "1987-03-09 11:29:05 -0800",
+ "content":
+ "Facere sint doloribus qui illo autem consequatur culpa. Est quisquam enim accusantium praesentium.",
+ "subject": "Quis beatae quia velit deserunt est sit odit quisquam"
+ },
+
+ {
+ "id": "69",
+ "first-name": "Marlen",
+ "last-name": "Ritchie",
+ "email": "rodger_schamberger@thiel.net",
+ "date": "1989-07-23 03:03:52 -0700",
+ "content": "Doloribus porro hic quis explicabo fuga veritatis vero.",
+ "subject": "Et doloribus est consequatur unde"
+ },
+
+ {
+ "id": "70",
+ "first-name": "Maddison",
+ "last-name": "Kuhic",
+ "email": "rosetta@von.biz",
+ "date": "1975-06-22 10:34:58 -0700",
+ "content":
+ "Sit ut eos libero error sapiente veritatis. Est dolore qui impedit recusandae quas animi rerum.",
+ "subject": "Quos culpa assumenda enim eius aliquid dolorum"
+ },
+
+ {
+ "id": "71",
+ "first-name": "Whitney",
+ "last-name": "Parisian",
+ "email": "everardo@langworth.name",
+ "date": "1970-11-04 01:17:28 -0800",
+ "content":
+ "Quam dolores pariatur ut possimus. Alias tenetur ex accusantium quasi. Nihil dolorem mollitia quidem.",
+ "subject": "Officia totam excepturi sed illum et tempore commodi sit"
+ },
+
+ {
+ "id": "72",
+ "first-name": "Madyson",
+ "last-name": "Streich",
+ "email": "imani@murray.biz",
+ "date": "1983-07-16 11:27:34 -0700",
+ "content":
+ "Veritatis molestiae id placeat dolorem consectetur a est. Est enim aut. Magnam aut distinctio quo sapiente ea est accusantium.",
+ "subject": "Aut sunt esse eligendi et qui ut sed"
+ },
+
+ {
+ "id": "73",
+ "first-name": "Laurie",
+ "last-name": "Purdy",
+ "email": "jarrell@paucek.biz",
+ "date": "1992-10-18 12:48:31 -0700",
+ "content":
+ "Saepe facilis est repellendus praesentium autem. Qui soluta voluptas ullam sequi. Molestias aut quibusdam.",
+ "subject": "Quo ullam totam sit dolores"
+ },
+
+ {
+ "id": "74",
+ "first-name": "Ollie",
+ "last-name": "Lowe",
+ "email": "corene@kris.info",
+ "date": "1976-08-24 16:28:46 -0700",
+ "content": "Nostrum qui eaque aperiam possimus libero non. Quae aut enim non.",
+ "subject": "Optio minus aut officiis voluptates reiciendis sit dicta"
+ },
+
+ {
+ "id": "75",
+ "first-name": "Ian",
+ "last-name": "Murray",
+ "email": "adelia_bernhard@maggio.com",
+ "date": "1982-04-08 00:25:22 -0800",
+ "content": "Quod dolores quibusdam nihil aut vel. Sit ab vitae necessitatibus eum.",
+ "subject": "Quia praesentium nam debitis nulla repellendus quos"
+ },
+
+ {
+ "id": "76",
+ "first-name": "Bernard",
+ "last-name": "Zieme",
+ "email": "kaelyn.johnson@markswalsh.net",
+ "date": "2014-01-17 03:47:35 -0800",
+ "content": "Repellendus qui reiciendis quibusdam voluptatum voluptate omnis.",
+ "subject": "Mollitia ut omnis tempore aut debitis ratione alias illum"
+ },
+
+ {
+ "id": "77",
+ "first-name": "Megane",
+ "last-name": "Kuvalis",
+ "email": "otis@donnellypouros.name",
+ "date": "1987-09-29 22:10:00 -0700",
+ "content":
+ "Explicabo repellat qui placeat inventore velit. Tempora accusamus minima facilis dicta architecto unde. Excepturi enim eos.",
+ "subject": "Quam molestias amet officiis"
+ },
+
+ {
+ "id": "78",
+ "first-name": "Freeman",
+ "last-name": "Nader",
+ "email": "samara_hoppe@dachcorkery.info",
+ "date": "2009-02-02 12:08:30 -0800",
+ "content": "Perferendis aut minus in.",
+ "subject": "Voluptates odio neque laudantium accusamus ipsa accusantium"
+ },
+
+ {
+ "id": "79",
+ "first-name": "Margarita",
+ "last-name": "Heller",
+ "email": "heloise@rogahn.name",
+ "date": "1984-01-04 10:41:32 -0800",
+ "content": "Officiis voluptas omnis. Nihil consectetur id reiciendis qui nemo est.",
+ "subject": "Velit in molestias quo repudiandae accusamus et excepturi et"
+ },
+
+ {
+ "id": "80",
+ "first-name": "Lonny",
+ "last-name": "Goodwin",
+ "email": "darian@kundebernier.info",
+ "date": "1999-02-08 07:00:38 -0800",
+ "content":
+ "Earum provident et minima aliquam iusto sint. Sed numquam ducimus voluptatem quos enim.",
+ "subject": "Commodi beatae vitae aut quos dolor consequatur"
+ },
+
+ {
+ "id": "81",
+ "first-name": "Jazlyn",
+ "last-name": "Bayer",
+ "email": "harvey@rempel.org",
+ "date": "2009-09-28 16:50:32 -0700",
+ "content": "Ipsum voluptas perferendis aperiam dolor.",
+ "subject": "Omnis inventore nobis cupiditate quas quis tenetur"
+ },
+
+ {
+ "id": "82",
+ "first-name": "Jakob",
+ "last-name": "Conn",
+ "email": "rylee@vandervort.net",
+ "date": "2008-11-12 17:22:34 -0800",
+ "content":
+ "Aut temporibus perferendis neque nulla et. Totam ab neque inventore et facere eligendi.",
+ "subject": "A optio ut molestiae iste et nam"
+ },
+
+ {
+ "id": "83",
+ "first-name": "Mikayla",
+ "last-name": "Romaguera",
+ "email": "rebecca_moriette@stracke.net",
+ "date": "1986-08-09 12:39:31 -0700",
+ "content": "Dicta et reiciendis corrupti.",
+ "subject": "Neque odio voluptates aut quam"
+ },
+
+ {
+ "id": "84",
+ "first-name": "Brianne",
+ "last-name": "West",
+ "email": "sheila@terry.com",
+ "date": "1972-04-25 22:32:20 -0800",
+ "content":
+ "Nulla sit mollitia qui odit sit corrupti repudiandae. Voluptas consequuntur voluptatibus molestiae. Illo quidem nostrum odio et.",
+ "subject": "Deserunt voluptas et accusamus"
+ },
+
+ {
+ "id": "85",
+ "first-name": "Destiny",
+ "last-name": "Mohr",
+ "email": "ernestine.waters@connellypfannerstill.com",
+ "date": "2012-10-30 15:02:35 -0700",
+ "content":
+ "Eveniet voluptatem molestias dolores aut voluptates. Quisquam nemo ipsam dicta numquam aut temporibus.",
+ "subject": "Pariatur nisi facilis tempora"
+ },
+
+ {
+ "id": "86",
+ "first-name": "Brooks",
+ "last-name": "Herman",
+ "email": "brendan_smith@treutel.info",
+ "date": "1972-04-01 17:10:07 -0800",
+ "content": "Qui sunt dolore molestiae minima. Suscipit ea quia a aut sunt et.",
+ "subject": "Magni quia perferendis possimus ipsam"
+ },
+
+ {
+ "id": "87",
+ "first-name": "Celestino",
+ "last-name": "Dickens",
+ "email": "cruz.mcdermott@ziemann.org",
+ "date": "2007-08-14 14:55:17 -0700",
+ "content": "Saepe libero tenetur.",
+ "subject": "Molestiae nulla aut laborum placeat perferendis aliquam"
+ },
+
+ {
+ "id": "88",
+ "first-name": "Angel",
+ "last-name": "Tillman",
+ "email": "shayna_baumbach@durgan.biz",
+ "date": "1978-08-31 01:02:14 -0700",
+ "content":
+ "Libero sequi ea dolore. Numquam quia temporibus voluptatum rerum. Deserunt tenetur nesciunt veritatis debitis.",
+ "subject": "Occaecati quo omnis adipisci sit perspiciatis aut modi cum"
+ },
+
+ {
+ "id": "89",
+ "first-name": "Verlie",
+ "last-name": "Tillman",
+ "email": "aurelia@gorczany.name",
+ "date": "1995-07-27 01:25:55 -0700",
+ "content": "Iure est veritatis qui et. Sit tempore ducimus repellat cupiditate.",
+ "subject": "Dolorum similique expedita praesentium quisquam quasi dolorem eligendi"
+ },
+
+ {
+ "id": "90",
+ "first-name": "Cornell",
+ "last-name": "Padberg",
+ "email": "rhianna@thiel.name",
+ "date": "2009-12-14 14:21:13 -0800",
+ "content":
+ "Ea modi consequatur. Necessitatibus sit qui voluptatem et accusantium. Cumque rerum omnis.",
+ "subject": "Molestiae nostrum aut officiis porro tempore"
+ },
+
+ {
+ "id": "91",
+ "first-name": "Carmelo",
+ "last-name": "Kunde",
+ "email": "beulah@rolfsonschaefer.info",
+ "date": "2010-08-14 23:10:58 -0700",
+ "content": "Ut molestiae dolorem fuga in aliquam est provident.",
+ "subject": "Atque occaecati temporibus et autem est"
+ },
+
+ {
+ "id": "92",
+ "first-name": "Jess",
+ "last-name": "Corwin",
+ "email": "korey.barrows@reillyankunding.com",
+ "date": "1976-11-13 05:09:16 -0800",
+ "content":
+ "Commodi eveniet aspernatur earum nisi aut sit dolor. Odio vero facilis reprehenderit dolore. Provident voluptatibus atque qui assumenda quaerat.",
+ "subject": "Commodi laboriosam accusamus quis dolores tempora eos"
+ },
+
+ {
+ "id": "93",
+ "first-name": "Hugh",
+ "last-name": "Hirthe",
+ "email": "verla.dickens@keeling.name",
+ "date": "1971-03-17 23:51:15 -0800",
+ "content":
+ "Voluptatibus saepe dolor voluptas sed cupiditate incidunt. Magni velit ut beatae minus. Consequatur recusandae voluptas ad ex dolores modi quos.",
+ "subject": "Ut pariatur odit mollitia soluta eaque magnam"
+ },
+
+ {
+ "id": "94",
+ "first-name": "Elsa",
+ "last-name": "Morissette",
+ "email": "otto@ohara.org",
+ "date": "2006-11-27 01:10:16 -0800",
+ "content":
+ "Et architecto ipsam asperiores vitae quo. Fugiat error quidem facilis. Eaque officiis est veniam.",
+ "subject": "Autem rerum consequatur suscipit veritatis"
+ },
+
+ {
+ "id": "95",
+ "first-name": "Gianni",
+ "last-name": "Nitzsche",
+ "email": "maxine.carter@schimmelfritsch.com",
+ "date": "2006-02-22 21:52:15 -0800",
+ "content":
+ "Nam aut at esse. Adipisci tenetur in voluptas. Dolore quia nobis voluptatibus iure sit eaque fugit.",
+ "subject": "Et est rerum non aut eum"
+ },
+
+ {
+ "id": "96",
+ "first-name": "Reed",
+ "last-name": "Kirlin",
+ "email": "keaton@gutmann.net",
+ "date": "2001-08-15 19:41:38 -0700",
+ "content": "Mollitia hic numquam dicta.",
+ "subject": "Est accusantium et nam dolores aliquam"
+ },
+
+ {
+ "id": "97",
+ "first-name": "Thelma",
+ "last-name": "Labadie",
+ "email": "leonor@bahringer.biz",
+ "date": "1993-01-04 20:38:12 -0800",
+ "content":
+ "Porro rerum ea similique. Vel qui est. Temporibus a distinctio dolor doloremque eos beatae.",
+ "subject": "Aut et quasi aut"
+ },
+
+ {
+ "id": "98",
+ "first-name": "Neva",
+ "last-name": "Stehr",
+ "email": "clifton.turner@beeroconnell.name",
+ "date": "1983-03-21 03:23:41 -0800",
+ "content": "Voluptatem impedit sed minus. Incidunt ad est consequatur rerum mollitia.",
+ "subject": "Eum sapiente quis placeat"
+ },
+
+ {
+ "id": "99",
+ "first-name": "Jovan",
+ "last-name": "Kunze",
+ "email": "grady_keler@casper.net",
+ "date": "1985-11-17 01:24:57 -0800",
+ "content":
+ "Molestiae laboriosam quia adipisci delectus praesentium nam. Dolorum repudiandae delectus esse quis voluptatem similique. Illum tempore vitae quia minus.",
+ "subject": "Nihil qui repellendus animi nostrum voluptas quisquam aut minima"
+ },
+
+ {
+ "id": "100",
+ "first-name": "Agustin",
+ "last-name": "Rowe",
+ "email": "roderick@cartermckenzie.name",
+ "date": "2013-08-15 06:42:43 -0700",
+ "content": "Quo eaque non laboriosam sunt. Ad aliquid laudantium quia. Aut nisi magnam.",
+ "subject": "Aut hic iste maiores sit"
+ },
+
+ {
+ "id": "101",
+ "first-name": "Lennie",
+ "last-name": "Pacocha",
+ "email": "valentine@goldnerryan.com",
+ "date": "1995-11-23 15:07:48 -0800",
+ "content":
+ "Provident sit voluptate odio qui. Est consequatur nobis. Quibusdam exercitationem ducimus aspernatur.",
+ "subject": "Perferendis adipisci necessitatibus qui similique"
+ },
+
+ {
+ "id": "102",
+ "first-name": "Brionna",
+ "last-name": "Brown",
+ "email": "jesus@gusikowski.info",
+ "date": "2007-12-21 20:22:44 -0800",
+ "content":
+ "Qui deleniti quaerat ratione doloremque ea quod consequatur. Illo consequatur nisi eos molestiae quos ullam. Enim neque rerum perspiciatis inventore consectetur.",
+ "subject": "Perferendis ratione voluptatem quae non magnam"
+ },
+
+ {
+ "id": "103",
+ "first-name": "Ceasar",
+ "last-name": "Becker",
+ "email": "barney@conn.biz",
+ "date": "1991-03-31 18:06:07 -0800",
+ "content": "Cupiditate ipsa minus. Recusandae consequatur aperiam ab ut sint expedita.",
+ "subject": "Dolore voluptatum maiores repudiandae ipsam qui consectetur veniam et"
+ },
+
+ {
+ "id": "104",
+ "first-name": "Jadon",
+ "last-name": "Walker",
+ "email": "alexie@brownspencer.biz",
+ "date": "2014-05-05 03:04:04 -0700",
+ "content":
+ "Ipsam ut molestias necessitatibus consequatur eligendi adipisci nihil. Nemo voluptatem dolores iure enim fuga.",
+ "subject": "Sunt officia voluptas porro et voluptatum exercitationem aut id"
+ },
+
+ {
+ "id": "105",
+ "first-name": "Harvey",
+ "last-name": "Little",
+ "email": "dell_reichel@mayert.name",
+ "date": "1997-05-17 16:09:39 -0700",
+ "content":
+ "Saepe et voluptate enim facere. Nihil est et sint odit aut quae. Deserunt molestiae explicabo impedit iure quod ratione.",
+ "subject": "Veniam ipsum est eum dolorem neque aut"
+ },
+
+ {
+ "id": "106",
+ "first-name": "Kailey",
+ "last-name": "Doyle",
+ "email": "golda@hayesdavis.name",
+ "date": "1992-07-01 10:53:52 -0700",
+ "content":
+ "Necessitatibus aspernatur nesciunt rerum nam. Qui quaerat modi. Et voluptatem ut quod perspiciatis quo eligendi.",
+ "subject": "Exercitationem voluptatem sunt hic debitis"
+ },
+
+ {
+ "id": "107",
+ "first-name": "Emily",
+ "last-name": "Gutmann",
+ "email": "mazie@bashirian.biz",
+ "date": "1999-12-26 09:22:07 -0800",
+ "content":
+ "Rem debitis qui quia. Nihil quis quia omnis et ea aliquid. Quam praesentium commodi itaque.",
+ "subject": "Maiores ea alias fuga"
+ },
+
+ {
+ "id": "108",
+ "first-name": "Jack",
+ "last-name": "O'Keefe",
+ "email": "carlos@wilkinson.biz",
+ "date": "1988-04-28 18:31:09 -0700",
+ "content": "Ab aspernatur vel et. Architecto occaecati qui. Adipisci ut sequi culpa.",
+ "subject": "Qui fuga rerum quo"
+ },
+
+ {
+ "id": "109",
+ "first-name": "Mylene",
+ "last-name": "Barton",
+ "email": "sherman.kunde@block.info",
+ "date": "1996-04-16 20:06:02 -0700",
+ "content": "Nostrum iste laboriosam corporis omnis.",
+ "subject": "Nihil et minima odit iste et beatae"
+ },
+
+ {
+ "id": "110",
+ "first-name": "Cristopher",
+ "last-name": "Krajcik",
+ "email": "levi@oconnell.com",
+ "date": "1989-11-08 03:06:37 -0800",
+ "content": "Assumenda qui et accusamus magnam deserunt ut nobis.",
+ "subject": "Aut numquam saepe placeat facilis at"
+ },
+
+ {
+ "id": "111",
+ "first-name": "Amya",
+ "last-name": "Anderson",
+ "email": "travis@waelchigottlieb.biz",
+ "date": "1986-12-25 15:27:02 -0800",
+ "content": "Iure numquam ea omnis nemo illo.",
+ "subject": "Labore sit aut ea in nemo et deleniti"
+ },
+
+ {
+ "id": "112",
+ "first-name": "Alphonso",
+ "last-name": "Buckridge",
+ "email": "duncan@barton.name",
+ "date": "1991-02-27 01:09:28 -0800",
+ "content": "Sint ducimus sed temporibus quo. Voluptas possimus eaque earum aut.",
+ "subject": "Quidem aliquid blanditiis quasi"
+ },
+
+ {
+ "id": "113",
+ "first-name": "Jovani",
+ "last-name": "Thompson",
+ "email": "lewis.greenfelder@stark.biz",
+ "date": "1970-10-29 18:08:36 -0800",
+ "content": "Modi aut ut amet ut qui.",
+ "subject": "Deserunt est autem sed dicta qui"
+ },
+
+ {
+ "id": "114",
+ "first-name": "Roosevelt",
+ "last-name": "Blick",
+ "email": "sophie_kaulke@kunze.biz",
+ "date": "2001-11-11 17:45:44 -0800",
+ "content": "Debitis non exercitationem vero nostrum dignissimos. Et voluptates ad nulla.",
+ "subject": "Quasi est ipsam accusantium sint"
+ },
+
+ {
+ "id": "115",
+ "first-name": "Darren",
+ "last-name": "Brown",
+ "email": "jammie@hickle.net",
+ "date": "2007-10-05 11:14:49 -0700",
+ "content":
+ "Quas ut odio blanditiis corrupti quia dolor. Id enim in veniam voluptatem. Laborum delectus quidem voluptatem beatae facilis ut.",
+ "subject": "Fugiat totam dolores harum soluta iusto et"
+ },
+
+ {
+ "id": "116",
+ "first-name": "Dexter",
+ "last-name": "Schroeder",
+ "email": "efrain.corwin@hane.name",
+ "date": "1973-09-30 19:52:23 -0700",
+ "content": "Debitis assumenda fugit. Sunt omnis in quod aut quibusdam qui.",
+ "subject": "Aut iure molestias suscipit laboriosam dolores"
+ },
+
+ {
+ "id": "117",
+ "first-name": "Mellie",
+ "last-name": "Hilpert",
+ "email": "amiya_haley@douglasbins.org",
+ "date": "1992-05-14 20:52:23 -0700",
+ "content":
+ "Vero aut perferendis commodi. Quod dolorem distinctio sint. Error nostrum reprehenderit aut quaerat officiis eaque.",
+ "subject": "Omnis aliquid rerum fuga vero molestiae quidem eveniet"
+ },
+
+ {
+ "id": "118",
+ "first-name": "Laura",
+ "last-name": "Koepp",
+ "email": "gus@hagenes.biz",
+ "date": "2007-08-04 22:19:10 -0700",
+ "content":
+ "Quibusdam fugiat quasi consequatur. Ipsam corporis nesciunt quae ipsa aliquid hic eius.",
+ "subject": "Asperiores quisquam voluptatem aut quam dolores"
+ },
+
+ {
+ "id": "119",
+ "first-name": "Amara",
+ "last-name": "Jerde",
+ "email": "estelle@marksdonnelly.info",
+ "date": "1989-08-19 01:24:43 -0700",
+ "content":
+ "Architecto voluptatum quas pariatur expedita exercitationem quo. Sint eum perferendis a. Et similique est amet dolores.",
+ "subject": "Id consequuntur nesciunt tenetur impedit sit voluptas"
+ },
+
+ {
+ "id": "120",
+ "first-name": "Jacquelyn",
+ "last-name": "Barton",
+ "email": "antwon_mayer@kshleringibson.info",
+ "date": "1989-08-19 13:07:02 -0700",
+ "content": "Quos enim repellendus praesentium sit rerum deserunt.",
+ "subject": "Et omnis hic autem ipsa tempora impedit perspiciatis"
+ },
+
+ {
+ "id": "121",
+ "first-name": "Micaela",
+ "last-name": "Runte",
+ "email": "vivianne.graham@vonrueden.org",
+ "date": "1986-09-27 01:16:29 -0700",
+ "content": "Et neque rem.",
+ "subject": "Enim facere corrupti accusamus quam consequatur beatae aspernatur vero"
+ },
+
+ {
+ "id": "122",
+ "first-name": "Millie",
+ "last-name": "Flatley",
+ "email": "gino@kihn.biz",
+ "date": "1980-02-09 01:35:05 -0800",
+ "content": "Rerum sint quis esse minus. Aut at asperiores. Amet magni beatae atque.",
+ "subject": "Illo vitae blanditiis et impedit in dolor"
+ },
+
+ {
+ "id": "123",
+ "first-name": "Sincere",
+ "last-name": "Rohan",
+ "email": "zora@beattyerdman.org",
+ "date": "2002-11-11 22:02:22 -0800",
+ "content": "Ut error voluptatem aut ratione molestiae. Omnis qui rem delectus.",
+ "subject": "Unde sed voluptas assumenda non animi quo"
+ },
+
+ {
+ "id": "124",
+ "first-name": "Vicky",
+ "last-name": "Kautzer",
+ "email": "mustafa.lueilwitz@tremblay.name",
+ "date": "2014-08-15 11:18:05 -0700",
+ "content":
+ "Nostrum quis et et molestiae molestiae. Corporis corrupti deleniti qui fugiat eos. Porro qui quis mollitia.",
+ "subject": "Quisquam ex esse dolore"
+ },
+
+ {
+ "id": "125",
+ "first-name": "Lavon",
+ "last-name": "Padberg",
+ "email": "destin_sanford@reynolds.net",
+ "date": "2005-07-11 21:24:34 -0700",
+ "content": "Officia dolorem autem beatae soluta numquam aperiam et.",
+ "subject": "Ad labore aut corporis"
+ },
+
+ {
+ "id": "126",
+ "first-name": "Shaina",
+ "last-name": "Dare",
+ "email": "carrie_sawayn@buckridge.net",
+ "date": "2001-10-12 08:02:09 -0700",
+ "content": "Ex doloremque dolor deleniti.",
+ "subject": "Asperiores recusandae reprehenderit quia tempore qui ipsam sit"
+ },
+
+ {
+ "id": "127",
+ "first-name": "Sigrid",
+ "last-name": "Farrell",
+ "email": "soledad_abshire@miller.net",
+ "date": "2003-03-24 17:55:50 -0800",
+ "content": "Debitis ea soluta eos ut omnis. Ut et laboriosam. Quaerat sit velit impedit.",
+ "subject": "Eum et nesciunt quidem quo repudiandae rerum doloremque beatae"
+ },
+
+ {
+ "id": "128",
+ "first-name": "Viola",
+ "last-name": "Dooley",
+ "email": "myrtice_grant@zemlakbashirian.com",
+ "date": "2006-06-01 21:17:02 -0700",
+ "content": "Sit doloremque est aut voluptatem.",
+ "subject": "Aut accusamus consectetur nihil iusto"
+ },
+
+ {
+ "id": "129",
+ "first-name": "Davion",
+ "last-name": "Conn",
+ "email": "travis@bins.biz",
+ "date": "1993-11-26 09:03:37 -0800",
+ "content":
+ "Voluptatibus ipsum mollitia fugit aspernatur enim sint. Laudantium exercitationem sed voluptas consequatur quis.",
+ "subject": "Illum aspernatur tempora amet itaque ipsam distinctio aliquid"
+ },
+
+ {
+ "id": "130",
+ "first-name": "Hobart",
+ "last-name": "Oberbrunner",
+ "email": "eric@wisozk.net",
+ "date": "2000-02-11 07:40:02 -0800",
+ "content": "Quis aut sint officia sunt.",
+ "subject": "Ut pariatur explicabo consequatur libero distinctio nulla consequatur placeat"
+ },
+
+ {
+ "id": "131",
+ "first-name": "Raleigh",
+ "last-name": "Hegmann",
+ "email": "jasen.koepp@hickle.name",
+ "date": "1993-03-01 22:48:23 -0800",
+ "content":
+ "Delectus aut quod maxime incidunt et consequatur. Nihil eos et eveniet quo iure. Alias facilis earum dicta nulla quo sed.",
+ "subject": "Aliquam eos aliquid dolor"
+ },
+
+ {
+ "id": "132",
+ "first-name": "Hector",
+ "last-name": "Denesik",
+ "email": "bernice@leuschke.biz",
+ "date": "2013-08-03 14:45:55 -0700",
+ "content": "Et ut dicta. Qui sunt vel et voluptas hic suscipit.",
+ "subject": "Ipsum quo est consequatur"
+ },
+
+ {
+ "id": "133",
+ "first-name": "Nikko",
+ "last-name": "Rolfson",
+ "email": "crystel@upton.net",
+ "date": "1977-02-19 16:22:15 -0800",
+ "content": "Velit quo repellendus consequatur.",
+ "subject": "Exercitationem omnis aut id deserunt nihil et inventore"
+ },
+
+ {
+ "id": "134",
+ "first-name": "Jovany",
+ "last-name": "Nienow",
+ "email": "neil.muller@lakin.info",
+ "date": "2004-09-28 21:55:43 -0700",
+ "content":
+ "Voluptatibus numquam blanditiis quibusdam. Illum suscipit dolorum. Sunt amet est sint.",
+ "subject": "Esse nihil est voluptas rerum ea"
+ },
+
+ {
+ "id": "135",
+ "first-name": "Ellis",
+ "last-name": "Kohler",
+ "email": "cordie_bartoletti@barrows.net",
+ "date": "1989-09-19 13:57:30 -0700",
+ "content":
+ "Eum corporis nobis laborum fugiat amet alias. Voluptatum quasi ducimus fuga corrupti. Mollitia modi laborum.",
+ "subject": "Ipsum modi nulla et"
+ },
+
+ {
+ "id": "136",
+ "first-name": "Marley",
+ "last-name": "Runolfsson",
+ "email": "kian_vonrueden@collier.info",
+ "date": "2003-01-17 06:33:04 -0800",
+ "content": "Et rerum explicabo iusto ipsa ipsum. Quia ipsa ab sed perspiciatis.",
+ "subject": "Voluptas esse iure quia hic dolor eligendi velit maiores"
+ },
+
+ {
+ "id": "137",
+ "first-name": "Grant",
+ "last-name": "Jenkins",
+ "email": "hayden.altenwerth@corkeryankunding.net",
+ "date": "1970-03-24 13:04:46 -0800",
+ "content": "Tenetur odit ratione voluptatum dolore qui.",
+ "subject": "Tempore est molestiae id"
+ },
+
+ {
+ "id": "138",
+ "first-name": "Deangelo",
+ "last-name": "Koss",
+ "email": "reba.skiles@bruen.com",
+ "date": "1999-10-16 20:28:42 -0700",
+ "content": "Sit vero sint ut beatae iure. Minima harum tempora sit rerum aut.",
+ "subject": "Aspernatur cumque non consequatur blanditiis enim quas quam"
+ },
+
+ {
+ "id": "139",
+ "first-name": "Mariana",
+ "last-name": "Jakubowski",
+ "email": "brett@swift.biz",
+ "date": "1970-07-04 08:54:29 -0700",
+ "content": "Beatae expedita praesentium ea corrupti. Aut sint ad et sunt.",
+ "subject": "Dolore distinctio consequatur aut laudantium officiis aliquid soluta"
+ },
+
+ {
+ "id": "140",
+ "first-name": "Leonard",
+ "last-name": "Kovacek",
+ "email": "jermain@dachbruen.biz",
+ "date": "1981-10-15 00:39:10 -0700",
+ "content":
+ "Deserunt cupiditate modi. Eius consequatur aut dolor nostrum porro dignissimos. Labore consequatur quod est et distinctio possimus ducimus.",
+ "subject": "Et rerum id voluptates et iure eligendi rerum"
+ },
+
+ {
+ "id": "141",
+ "first-name": "Etha",
+ "last-name": "Ondricka",
+ "email": "noemy@okuneva.org",
+ "date": "1994-04-29 12:19:51 -0700",
+ "content":
+ "Velit fuga quasi pariatur consectetur est nihil. Dolore nisi dolores quia qui voluptatem inventore provident.",
+ "subject": "Enim est commodi nisi autem asperiores molestiae minima"
+ },
+
+ {
+ "id": "142",
+ "first-name": "Nannie",
+ "last-name": "Fadel",
+ "email": "frida.streich@prosacco.org",
+ "date": "2012-12-15 16:56:24 -0800",
+ "content": "Rerum id quo. Recusandae aut optio voluptate perspiciatis tempore sed nemo.",
+ "subject": "Pariatur soluta praesentium enim quo quam alias consequuntur in"
+ },
+
+ {
+ "id": "143",
+ "first-name": "Shyanne",
+ "last-name": "Kunze",
+ "email": "annabel@littel.net",
+ "date": "1992-12-09 23:41:23 -0800",
+ "content": "Dolores iure iste unde. Illo esse autem harum perspiciatis.",
+ "subject": "Atque illum et qui"
+ },
+
+ {
+ "id": "144",
+ "first-name": "Eloy",
+ "last-name": "Barton",
+ "email": "leonie_gulgowski@skiles.com",
+ "date": "2013-01-12 20:05:57 -0800",
+ "content": "Cumque id sapiente explicabo. Voluptas pariatur quibusdam dolores et.",
+ "subject": "Ut dolore velit qui omnis"
+ },
+
+ {
+ "id": "145",
+ "first-name": "Rosalinda",
+ "last-name": "Pfeffer",
+ "email": "anabelle@langworth.com",
+ "date": "2001-05-17 05:43:52 -0700",
+ "content": "Et voluptatem quasi voluptatum.",
+ "subject": "Voluptatum quia incidunt ut repudiandae blanditiis"
+ },
+
+ {
+ "id": "146",
+ "first-name": "William",
+ "last-name": "Bogisich",
+ "email": "bertha@gibsonrohan.info",
+ "date": "2009-11-01 04:28:13 -0800",
+ "content":
+ "Quaerat dolorem odio et dolor saepe quia odit. Corporis molestiae ab ipsa occaecati autem fuga dicta. Voluptate ratione sunt.",
+ "subject": "Ipsam quidem mollitia blanditiis magnam ut et"
+ },
+
+ {
+ "id": "147",
+ "first-name": "Laurianne",
+ "last-name": "Bergstrom",
+ "email": "brisa_howe@dare.net",
+ "date": "2003-03-23 21:58:11 -0800",
+ "content": "Et porro recusandae aut. Tenetur voluptas aperiam ut vitae.",
+ "subject": "Molestias autem qui nisi mollitia nulla dolorum repudiandae hic"
+ },
+
+ {
+ "id": "148",
+ "first-name": "Carroll",
+ "last-name": "Hickle",
+ "email": "noemi.grady@grimesritchie.com",
+ "date": "1996-07-15 02:55:52 -0700",
+ "content": "Quia voluptas assumenda. Numquam inventore facilis dicta qui ipsa reiciendis.",
+ "subject": "Perferendis rerum vel incidunt molestias recusandae"
+ },
+
+ {
+ "id": "149",
+ "first-name": "Jasen",
+ "last-name": "Romaguera",
+ "email": "jayce@berge.name",
+ "date": "1984-04-12 11:56:39 -0800",
+ "content": "Consectetur molestias perspiciatis ut omnis aliquid.",
+ "subject": "Hic optio accusamus qui adipisci repellendus ipsa in"
+ },
+
+ {
+ "id": "150",
+ "first-name": "Heaven",
+ "last-name": "Fay",
+ "email": "enola@sanfordsteuber.net",
+ "date": "2000-11-23 00:18:07 -0800",
+ "content":
+ "Quia itaque temporibus. Provident ducimus quidem consectetur qui voluptatum. Sunt cum quis dolorum hic.",
+ "subject": "Ad excepturi illum doloremque ducimus corporis ut qui omnis"
+ },
+
+ {
+ "id": "151",
+ "first-name": "Wilburn",
+ "last-name": "Cartwright",
+ "email": "jaida_erdman@nitzsche.com",
+ "date": "2011-09-19 01:58:53 -0700",
+ "content": "Autem iure magni ut odio amet et.",
+ "subject": "Fuga quis quidem sint laborum et delectus iste"
+ },
+
+ {
+ "id": "152",
+ "first-name": "Concepcion",
+ "last-name": "McLaughlin",
+ "email": "bernardo_langworth@jakubowski.org",
+ "date": "1992-08-20 13:35:09 -0700",
+ "content": "Rerum laboriosam omnis nobis eaque odit sequi dicta.",
+ "subject": "Sint accusantium ab quis sed ipsa"
+ },
+
+ {
+ "id": "153",
+ "first-name": "Vita",
+ "last-name": "Fisher",
+ "email": "chanelle_gulgowski@roob.info",
+ "date": "2005-09-21 12:09:45 -0700",
+ "content":
+ "Sunt quibusdam adipisci accusantium laborum distinctio voluptate autem. Quis pariatur culpa ut et. Fuga similique dignissimos culpa dolorum neque reiciendis.",
+ "subject": "Nulla enim et fugiat eveniet ducimus delectus"
+ },
+
+ {
+ "id": "154",
+ "first-name": "Elliott",
+ "last-name": "Champlin",
+ "email": "kamille@kulascain.biz",
+ "date": "2003-05-20 15:42:54 -0700",
+ "content":
+ "Eos quisquam et voluptates rerum vel. Consectetur veniam voluptatem minus totam numquam in.",
+ "subject": "Deleniti ipsum et odio"
+ },
+
+ {
+ "id": "155",
+ "first-name": "Heidi",
+ "last-name": "Macejkovic",
+ "email": "stefanie@barrowshagenes.info",
+ "date": "1983-06-02 17:59:14 -0700",
+ "content": "Ut officiis animi exercitationem delectus suscipit qui voluptatibus.",
+ "subject": "Eveniet ipsam asperiores qui aut consectetur vel provident"
+ },
+
+ {
+ "id": "156",
+ "first-name": "Janae",
+ "last-name": "Pollich",
+ "email": "brianne.sauer@marquardtsteuber.com",
+ "date": "2000-05-14 07:13:30 -0700",
+ "content": "Facilis sit ut odit.",
+ "subject": "Sapiente explicabo sequi molestias illo saepe"
+ },
+
+ {
+ "id": "157",
+ "first-name": "Kaylin",
+ "last-name": "Lindgren",
+ "email": "urban.franecki@wilkinsonwilderman.org",
+ "date": "2014-09-09 00:48:38 -0700",
+ "content": "Eaque ad repellendus est nihil iste vero.",
+ "subject": "Deserunt qui dolor rerum ut beatae aut"
+ },
+
+ {
+ "id": "158",
+ "first-name": "Garland",
+ "last-name": "Nienow",
+ "email": "ellen.schultz@kihn.org",
+ "date": "2013-10-27 00:18:14 -0700",
+ "content": "Quam voluptatem nam est.",
+ "subject": "Et occaecati quisquam impedit dolore quod"
+ },
+
+ {
+ "id": "159",
+ "first-name": "Lilly",
+ "last-name": "Hills",
+ "email": "macey@labadie.biz",
+ "date": "1981-02-23 03:46:55 -0800",
+ "content":
+ "Quia perferendis est consequuntur voluptates cumque commodi. Laboriosam expedita sit excepturi.",
+ "subject": "Eos doloribus repellendus provident"
+ },
+
+ {
+ "id": "160",
+ "first-name": "Lilla",
+ "last-name": "Abshire",
+ "email": "roselyn@rippin.org",
+ "date": "1998-05-16 00:55:49 -0700",
+ "content": "Ratione deserunt ut ut beatae praesentium qui. Nulla ut ipsam tempore.",
+ "subject": "Autem nostrum tempora iure laborum"
+ },
+
+ {
+ "id": "161",
+ "first-name": "Alessandro",
+ "last-name": "Hayes",
+ "email": "gia_bradtke@schimmelwalsh.biz",
+ "date": "2001-11-28 23:52:57 -0800",
+ "content":
+ "Quasi perspiciatis tenetur dolorum. Quae cupiditate fuga molestiae et tempore soluta.",
+ "subject": "Non ipsam quis soluta"
+ },
+
+ {
+ "id": "162",
+ "first-name": "Sharon",
+ "last-name": "Goodwin",
+ "email": "ulices.schimmel@oreillyabshire.name",
+ "date": "2010-03-12 00:46:00 -0800",
+ "content": "Neque omnis in. Qui ad sint. Velit voluptatibus repellat esse at.",
+ "subject": "Magni exercitationem quas consectetur qui quia id"
+ },
+
+ {
+ "id": "163",
+ "first-name": "Claude",
+ "last-name": "Gleason",
+ "email": "ken.gulgowski@labadie.net",
+ "date": "2003-05-30 14:58:54 -0700",
+ "content": "Et sit non harum quo sunt. Odio beatae voluptatem ad. Nemo in hic nulla.",
+ "subject": "Nobis consequatur non sunt sequi ex nihil"
+ },
+
+ {
+ "id": "164",
+ "first-name": "Maximilian",
+ "last-name": "Mann",
+ "email": "samir@stehr.biz",
+ "date": "1993-08-21 15:54:18 -0700",
+ "content":
+ "Minus quae voluptatem sequi. Distinctio voluptatem amet iusto velit et praesentium. Distinctio ipsum voluptas voluptas.",
+ "subject": "Facere voluptatem laudantium laboriosam omnis"
+ },
+
+ {
+ "id": "165",
+ "first-name": "Jennyfer",
+ "last-name": "Satterfield",
+ "email": "janiya_senger@olson.info",
+ "date": "2006-09-21 00:36:50 -0700",
+ "content": "Doloribus praesentium excepturi omnis.",
+ "subject": "Non fuga unde incidunt ad exercitationem maxime laboriosam qui"
+ },
+
+ {
+ "id": "166",
+ "first-name": "Robin",
+ "last-name": "Murray",
+ "email": "alycia@cruickshank.name",
+ "date": "1985-10-04 03:44:39 -0700",
+ "content": "Repudiandae dolorem ut. Possimus earum dignissimos temporibus amet vel eum.",
+ "subject": "Vel culpa debitis quam"
+ },
+
+ {
+ "id": "167",
+ "first-name": "Albina",
+ "last-name": "Reinger",
+ "email": "guie.gleason@gorczany.info",
+ "date": "1985-10-02 08:07:53 -0700",
+ "content": "Natus rerum repellat voluptas. Distinctio dolor est in dolores.",
+ "subject": "Modi perspiciatis iure odio hic et dignissimos rem qui"
+ },
+
+ {
+ "id": "168",
+ "first-name": "Eloisa",
+ "last-name": "Wolf",
+ "email": "leopold@jenkins.info",
+ "date": "2007-02-19 09:25:29 -0800",
+ "content": "Corporis ut dolorem ullam quidem ratione. Nam eveniet dicta autem eum.",
+ "subject": "Facilis voluptas vel repellat et aut amet est"
+ },
+
+ {
+ "id": "169",
+ "first-name": "Caden",
+ "last-name": "Cartwright",
+ "email": "mohammad_lockman@okoncrooks.net",
+ "date": "1974-11-14 03:12:44 -0800",
+ "content":
+ "Sunt nobis voluptate quasi sapiente magni a officia. Laudantium perspiciatis quod quis quidem voluptatum pariatur. Sit ut optio tempora.",
+ "subject": "Nihil maxime officia et repellat"
+ },
+
+ {
+ "id": "170",
+ "first-name": "Raul",
+ "last-name": "Sipes",
+ "email": "danial.miller@kulas.info",
+ "date": "1996-12-11 14:14:16 -0800",
+ "content":
+ "Ea rerum quo id omnis. Hic est voluptate voluptatem ut. Rerum eos ipsa laboriosam et ut expedita.",
+ "subject": "Aliquam reiciendis quam expedita sed ad neque voluptas"
+ },
+
+ {
+ "id": "171",
+ "first-name": "Allie",
+ "last-name": "Runolfsson",
+ "email": "skye@marvin.com",
+ "date": "2011-07-31 19:37:22 -0700",
+ "content": "Perspiciatis mollitia fugit sunt et.",
+ "subject": "Nihil expedita neque reprehenderit"
+ },
+
+ {
+ "id": "172",
+ "first-name": "Belle",
+ "last-name": "Nader",
+ "email": "eugenia@mante.info",
+ "date": "1995-09-06 05:30:08 -0700",
+ "content": "Expedita delectus quis ipsa dolore voluptatum.",
+ "subject": "Recusandae quasi ullam consequatur assumenda aliquid unde"
+ },
+
+ {
+ "id": "173",
+ "first-name": "Clemens",
+ "last-name": "Tromp",
+ "email": "geovanny@kilback.org",
+ "date": "1980-11-28 08:48:35 -0800",
+ "content": "Sint eos ea quidem tempora.",
+ "subject": "Velit aperiam consequatur ut et aliquam at"
+ },
+
+ {
+ "id": "174",
+ "first-name": "Bettie",
+ "last-name": "Mueller",
+ "email": "edgardo@little.net",
+ "date": "1983-06-26 14:10:56 -0700",
+ "content": "Dolore tempore accusamus.",
+ "subject": "Autem tempore et ut"
+ },
+
+ {
+ "id": "175",
+ "first-name": "Guy",
+ "last-name": "King",
+ "email": "macie@schmeler.info",
+ "date": "1999-03-28 22:34:59 -0800",
+ "content": "Recusandae laborum ut et eaque eum.",
+ "subject": "Dolor ullam totam consequatur eos fuga"
+ },
+
+ {
+ "id": "176",
+ "first-name": "Cydney",
+ "last-name": "Cronin",
+ "email": "camren@thompson.org",
+ "date": "1993-10-23 02:50:41 -0700",
+ "content": "Exercitationem modi eos sint vero. Iste possimus quis. Non est voluptas.",
+ "subject": "Tempora ipsum soluta ut corrupti omnis in"
+ },
+
+ {
+ "id": "177",
+ "first-name": "Ludwig",
+ "last-name": "Hoeger",
+ "email": "javon@torpolson.info",
+ "date": "2007-12-20 19:09:13 -0800",
+ "content": "Architecto ut optio tempore pariatur itaque saepe.",
+ "subject": "Earum unde quis officiis doloremque et animi qui"
+ },
+
+ {
+ "id": "178",
+ "first-name": "Travon",
+ "last-name": "Jacobi",
+ "email": "jameson_streich@hansen.org",
+ "date": "2013-02-03 09:53:51 -0800",
+ "content": "Autem dolorem totam atque id sit. Consectetur dolor maiores.",
+ "subject": "Quia autem deleniti ullam neque odio"
+ },
+
+ {
+ "id": "179",
+ "first-name": "Brennan",
+ "last-name": "Jaskolski",
+ "email": "harold_thompson@schaefer.info",
+ "date": "2004-01-13 10:53:47 -0800",
+ "content": "Libero et dolorem nihil. Omnis consequuntur possimus ut.",
+ "subject": "Eum labore omnis ipsa doloremque consequuntur soluta esse fuga"
+ },
+
+ {
+ "id": "180",
+ "first-name": "Clifton",
+ "last-name": "Boyer",
+ "email": "justine@skiles.biz",
+ "date": "2000-01-28 22:33:14 -0800",
+ "content":
+ "Nobis recusandae fugiat quibusdam doloribus. Aut praesentium corrupti tenetur ullam quia.",
+ "subject": "Ea dolorem voluptas aut cumque inventore delectus non molestiae"
+ },
+
+ {
+ "id": "181",
+ "first-name": "Walker",
+ "last-name": "Rogahn",
+ "email": "stanton@rempel.net",
+ "date": "2012-04-02 20:05:38 -0700",
+ "content": "Consectetur et soluta. Minus voluptatem quod aut vitae praesentium.",
+ "subject": "Tenetur architecto reprehenderit corporis fuga et rerum vel"
+ },
+
+ {
+ "id": "182",
+ "first-name": "Jennings",
+ "last-name": "Hills",
+ "email": "kenton@murrayharvey.biz",
+ "date": "2007-09-24 22:09:51 -0700",
+ "content":
+ "Velit porro quidem nostrum. Perspiciatis consequatur consectetur reiciendis sunt cupiditate quae. Vitae et ut autem iure.",
+ "subject": "Cupiditate quis maiores omnis"
+ },
+
+ {
+ "id": "183",
+ "first-name": "Julianne",
+ "last-name": "O'Kon",
+ "email": "helene@abshire.com",
+ "date": "1987-02-09 22:56:12 -0800",
+ "content":
+ "Voluptas voluptatem veniam porro dolorem maxime. Itaque eveniet laborum optio sed aspernatur omnis. Veritatis enim itaque sint illo ipsam eius.",
+ "subject": "Corporis et laboriosam aspernatur aut"
+ },
+
+ {
+ "id": "184",
+ "first-name": "Raymond",
+ "last-name": "Orn",
+ "email": "cloyd@rempel.biz",
+ "date": "2014-02-04 04:33:02 -0800",
+ "content":
+ "Eum voluptatibus accusantium rem. Deleniti harum eum. Illo est facere illum saepe voluptas.",
+ "subject": "Eveniet est architecto id ut rerum nam quidem"
+ },
+
+ {
+ "id": "185",
+ "first-name": "Johan",
+ "last-name": "Legros",
+ "email": "rosie_ernser@wolf.com",
+ "date": "1989-03-02 11:17:10 -0800",
+ "content": "Architecto explicabo praesentium amet eaque quibusdam.",
+ "subject": "Consectetur fugiat iusto omnis aspernatur ut"
+ },
+
+ {
+ "id": "186",
+ "first-name": "Daryl",
+ "last-name": "Labadie",
+ "email": "ashly_thompson@casper.net",
+ "date": "2003-01-28 00:02:56 -0800",
+ "content": "Et est doloribus. Fuga hic sed voluptatibus ullam officia aspernatur.",
+ "subject": "A sunt eum quas accusamus"
+ },
+
+ {
+ "id": "187",
+ "first-name": "Gavin",
+ "last-name": "Moore",
+ "email": "dahlia@leffleroberbrunner.biz",
+ "date": "1970-10-15 07:36:57 -0700",
+ "content": "Sapiente ipsum magni dolore est dolor.",
+ "subject": "Est maxime consequatur esse qui dicta aut quaerat"
+ },
+
+ {
+ "id": "188",
+ "first-name": "Coby",
+ "last-name": "Swaniawski",
+ "email": "millie.labadie@wuckert.name",
+ "date": "2012-09-14 00:25:46 -0700",
+ "content":
+ "Magni qui molestias debitis reprehenderit vel quo est. Blanditiis debitis autem neque non illo.",
+ "subject": "Rerum accusantium magni dolorem in reprehenderit et voluptas"
+ },
+
+ {
+ "id": "189",
+ "first-name": "Luis",
+ "last-name": "Stracke",
+ "email": "merle@mrazswaniawski.biz",
+ "date": "2007-11-11 05:28:46 -0800",
+ "content": "Neque magnam sint porro reprehenderit quo. In et reiciendis non velit et eum quos.",
+ "subject": "Sit voluptates nulla perspiciatis debitis dolor eaque a"
+ },
+
+ {
+ "id": "190",
+ "first-name": "Leone",
+ "last-name": "Huel",
+ "email": "emil@botsford.biz",
+ "date": "2004-03-16 23:46:45 -0800",
+ "content": "Vitae amet et quae ullam.",
+ "subject": "Rerum enim voluptate qui"
+ },
+
+ {
+ "id": "191",
+ "first-name": "Aylin",
+ "last-name": "Kling",
+ "email": "anderson_jast@kozeyparisian.com",
+ "date": "1979-06-17 04:05:50 -0700",
+ "content": "Quam eligendi numquam sint. Non ipsa et qui error dolor velit.",
+ "subject": "Culpa iste rerum facere praesentium deleniti sequi"
+ },
+
+ {
+ "id": "192",
+ "first-name": "Junior",
+ "last-name": "Bartoletti",
+ "email": "te@kuvalis.net",
+ "date": "1994-12-09 11:00:34 -0800",
+ "content": "Velit eos et nemo dolore eum necessitatibus. Ea inventore adipisci.",
+ "subject": "Velit dolorem cumque ipsa"
+ },
+
+ {
+ "id": "193",
+ "first-name": "Nathanael",
+ "last-name": "Hermiston",
+ "email": "macy.cole@wittingcasper.info",
+ "date": "2002-01-06 17:45:52 -0800",
+ "content":
+ "Corporis occaecati quidem quia repudiandae repellendus beatae similique. Inventore quo ullam.",
+ "subject": "Quidem expedita quia inventore dolores ratione totam et dignissimos"
+ },
+
+ {
+ "id": "194",
+ "first-name": "Hal",
+ "last-name": "Bruen",
+ "email": "nathen.ziemann@gerlachko.name",
+ "date": "1996-03-01 01:35:30 -0800",
+ "content":
+ "Qui eius aspernatur et aut et vel in. Adipisci aliquid consequatur dolores et ut. Est aut temporibus.",
+ "subject": "Voluptas placeat eveniet non quas assumenda quam minus"
+ },
+
+ {
+ "id": "195",
+ "first-name": "Freddie",
+ "last-name": "Thompson",
+ "email": "elia@aufderharbrown.org",
+ "date": "2005-03-20 05:07:30 -0800",
+ "content": "Dolor nemo sed molestiae quae quia.",
+ "subject": "Quam sint et voluptatem et fuga sint ut saepe"
+ },
+
+ {
+ "id": "196",
+ "first-name": "Aida",
+ "last-name": "Gorczany",
+ "email": "olga.labadie@abshire.name",
+ "date": "1989-07-26 04:26:19 -0700",
+ "content":
+ "Sit qui voluptatem facere. Similique alias quia sit ipsum. Ut corrupti tempore molestiae.",
+ "subject": "Qui veniam blanditiis nesciunt beatae tempore aut fugiat maiores"
+ },
+
+ {
+ "id": "197",
+ "first-name": "Isabelle",
+ "last-name": "Collier",
+ "email": "christiana_gottlieb@borer.biz",
+ "date": "1978-05-15 13:13:34 -0700",
+ "content": "Aliquam earum velit ut.",
+ "subject": "Neque et voluptate ratione totam voluptas est nulla ipsum"
+ },
+
+ {
+ "id": "198",
+ "first-name": "Ida",
+ "last-name": "Reichert",
+ "email": "mervin@keeling.com",
+ "date": "1991-02-06 05:02:15 -0800",
+ "content":
+ "Velit in at et dicta tenetur. Doloremque cupiditate est. Excepturi non minus aspernatur dolores qui quaerat architecto.",
+ "subject": "Ut voluptas qui ad minus"
+ },
+
+ {
+ "id": "199",
+ "first-name": "Angelina",
+ "last-name": "Mueller",
+ "email": "leonel@purdyschroeder.org",
+ "date": "2008-06-17 01:01:57 -0700",
+ "content":
+ "Recusandae eius non necessitatibus. Quisquam qui quo. Voluptas dolorem dolorem sit repellat laudantium ducimus qui.",
+ "subject": "Dolorem atque impedit qui soluta"
+ },
+
+ {
+ "id": "200",
+ "first-name": "Marcelle",
+ "last-name": "Connelly",
+ "email": "heath@leuschke.net",
+ "date": "1983-10-02 18:32:18 -0700",
+ "content":
+ "Debitis quasi voluptates et voluptatibus rerum. Et explicabo quia qui qui voluptate dolor.",
+ "subject": "Rem molestiae nobis consequatur eligendi ut"
+ },
+ {
+ "id": "201",
+ "first-name": "Bob",
+ "last-name": "Brown",
+ "email": "bob@brown.net",
+ "date": "1983-10-02 18:32:18 -0700",
+ "content":
+ "Debitis quasi voluptates et voluptatibus rerum. Et explicabo quia qui qui voluptate dolor.",
+ "subject": "Urgent question about whipped cream",
+ "draft": true
+ },
+ {
+ "id": "202",
+ "first-name": "Mary",
+ "last-name": "Jones",
+ "email": "mary@jones.net",
+ "date": "1983-10-02 18:32:18 -0700",
+ "content":
+ "Debitis quasi voluptates et voluptatibus rerum. Et explicabo quia qui qui voluptate dolor.",
+ "subject": "Fwd: wedding photos",
+ "draft": true
+ }
+]
diff --git a/modules/playground/src/routing_deprecated/app/drafts.html b/modules/playground/src/routing_deprecated/app/drafts.html
new file mode 100644
index 0000000000..6cfee645bd
--- /dev/null
+++ b/modules/playground/src/routing_deprecated/app/drafts.html
@@ -0,0 +1,11 @@
+
diff --git a/modules/playground/src/routing_deprecated/app/inbox-app.html b/modules/playground/src/routing_deprecated/app/inbox-app.html
new file mode 100644
index 0000000000..4629749c18
--- /dev/null
+++ b/modules/playground/src/routing_deprecated/app/inbox-app.html
@@ -0,0 +1,5 @@
+
+ Inbox
+ Drafts
+
+
diff --git a/modules/playground/src/routing_deprecated/app/inbox-app.ts b/modules/playground/src/routing_deprecated/app/inbox-app.ts
new file mode 100644
index 0000000000..3c941937b8
--- /dev/null
+++ b/modules/playground/src/routing_deprecated/app/inbox-app.ts
@@ -0,0 +1,161 @@
+import {Component, Injectable} from '@angular/core';
+import {
+ RouterLink,
+ RouteConfig,
+ Router,
+ Route,
+ RouterOutlet,
+ RouteParams
+} from '@angular/router-deprecated';
+import * as db from './data';
+import {Location} from '@angular/common';
+import {PromiseWrapper, PromiseCompleter} from '@angular/core/src/facade/async';
+import {isPresent, DateWrapper} from '@angular/core/src/facade/lang';
+
+class InboxRecord {
+ id: string = '';
+ subject: string = '';
+ content: string = '';
+ email: string = '';
+ firstName: string = '';
+ lastName: string = '';
+ date: string;
+ draft: boolean = false;
+
+ constructor(data: {
+ id: string,
+ subject: string,
+ content: string,
+ email: string,
+ firstName: string,
+ lastName: string,
+ date: string, draft?: boolean
+ } = null) {
+ if (isPresent(data)) {
+ this.setData(data);
+ }
+ }
+
+ setData(record: {
+ id: string,
+ subject: string,
+ content: string,
+ email: string,
+ firstName: string,
+ lastName: string,
+ date: string, draft?: boolean
+ }) {
+ this.id = record['id'];
+ this.subject = record['subject'];
+ this.content = record['content'];
+ this.email = record['email'];
+ this.firstName = (record as any /** TODO #9100 */)['first-name'];
+ this.lastName = (record as any /** TODO #9100 */)['last-name'];
+ this.date = record['date'];
+ this.draft = record['draft'] == true;
+ }
+}
+
+@Injectable()
+class DbService {
+ getData(): Promise {
+ var p = new PromiseCompleter();
+ p.resolve(db.data);
+ return p.promise;
+ }
+
+ drafts(): Promise {
+ return this.getData().then(
+ (data: any[]): any[] =>
+ data.filter(record => isPresent(record['draft']) && record['draft'] == true));
+ }
+
+ emails(): Promise {
+ return this.getData().then((data: any[]): any[] =>
+ data.filter(record => !isPresent(record['draft'])));
+ }
+
+ email(id: any /** TODO #9100 */): Promise {
+ return PromiseWrapper.then(this.getData(), (data: any[]) => {
+ for (var i = 0; i < data.length; i++) {
+ var entry = data[i];
+ if (entry['id'] == id) {
+ return entry;
+ }
+ }
+ return null;
+ });
+ }
+}
+
+@Component(
+ {selector: 'inbox-detail', directives: [RouterLink], templateUrl: 'app/inbox-detail.html'})
+class InboxDetailCmp {
+ record: InboxRecord = new InboxRecord();
+ ready: boolean = false;
+
+ constructor(db: DbService, params: RouteParams) {
+ var id = params.get('id');
+ PromiseWrapper.then(db.email(id), (data) => { this.record.setData(data); });
+ }
+}
+
+@Component({selector: 'inbox', templateUrl: 'app/inbox.html', directives: [RouterLink]})
+class InboxCmp {
+ items: InboxRecord[] = [];
+ ready: boolean = false;
+
+ constructor(public router: Router, db: DbService, params: RouteParams) {
+ var sortType = params.get('sort');
+ var sortEmailsByDate = isPresent(sortType) && sortType == "date";
+
+ PromiseWrapper.then(db.emails(), (emails: any[]) => {
+ this.ready = true;
+ this.items = emails.map(data => new InboxRecord(data));
+
+ if (sortEmailsByDate) {
+ this.items.sort((a: InboxRecord, b: InboxRecord) =>
+ DateWrapper.toMillis(DateWrapper.fromISOString(a.date)) <
+ DateWrapper.toMillis(DateWrapper.fromISOString(b.date)) ?
+ -1 :
+ 1);
+ }
+ });
+ }
+}
+
+
+@Component({selector: 'drafts', templateUrl: 'app/drafts.html', directives: [RouterLink]})
+class DraftsCmp {
+ items: InboxRecord[] = [];
+ ready: boolean = false;
+
+ constructor(public router: Router, db: DbService) {
+ PromiseWrapper.then(db.drafts(), (drafts: any[]) => {
+ this.ready = true;
+ this.items = drafts.map(data => new InboxRecord(data));
+ });
+ }
+}
+
+@Component({
+ selector: 'inbox-app',
+ viewProviders: [DbService],
+ templateUrl: 'app/inbox-app.html',
+ directives: [RouterOutlet, RouterLink]
+})
+@RouteConfig([
+ new Route({path: '/', component: InboxCmp, name: 'Inbox'}),
+ new Route({path: '/drafts', component: DraftsCmp, name: 'Drafts'}),
+ new Route({path: '/detail/:id', component: InboxDetailCmp, name: 'DetailPage'})
+])
+export class InboxApp {
+ router: Router;
+ location: Location;
+ constructor(router: Router, location: Location) {
+ this.router = router;
+ this.location = location;
+ }
+ inboxPageActive() { return this.location.path() == ''; }
+ draftsPageActive() { return this.location.path() == '/drafts'; }
+}
diff --git a/modules/playground/src/routing_deprecated/app/inbox-detail.html b/modules/playground/src/routing_deprecated/app/inbox-detail.html
new file mode 100644
index 0000000000..0766e502cb
--- /dev/null
+++ b/modules/playground/src/routing_deprecated/app/inbox-detail.html
@@ -0,0 +1,24 @@
+
+
{{ record.subject }}
+
+
+ - ID: {{ record.id }}
+ - Name: {{ record.firstName }} {{ record.lastName }}
+ - Email: {{ record.email }}
+ - Date: {{ record.date }}
+
+
+
+ {{ record.content }}
+
+
+
+ Back
+
+
+
+
+
+ View Latest Messages
+
+
diff --git a/modules/playground/src/routing_deprecated/app/inbox.html b/modules/playground/src/routing_deprecated/app/inbox.html
new file mode 100644
index 0000000000..4568060601
--- /dev/null
+++ b/modules/playground/src/routing_deprecated/app/inbox.html
@@ -0,0 +1,10 @@
+
diff --git a/modules/playground/src/routing_deprecated/css/app.css b/modules/playground/src/routing_deprecated/css/app.css
new file mode 100644
index 0000000000..42945f32a4
--- /dev/null
+++ b/modules/playground/src/routing_deprecated/css/app.css
@@ -0,0 +1,57 @@
+body {
+ background:#eee;
+ color:black;
+}
+
+.inbox-list,
+.inbox-list li {
+ list-style:none;
+ padding:0;
+ margin:0;
+}
+
+.inbox-list a {
+ padding:5px;
+ display:block;
+}
+
+inbox, drafts, inbox-side-menu {
+ display:block;
+}
+
+inbox-side-menu .link {
+ display:block;
+ text-align:center;
+ padding:1em;
+}
+
+inbox-side-menu .link.active {
+ background:white;
+}
+
+inbox-side-menu .link:hover {
+ background:#eee;
+}
+
+inbox-side-menu {
+ position:fixed;
+ left:0;
+ top:0;
+ bottom:0;
+ width:200px;
+ background:#ddd;
+}
+
+inbox-side-menu a {
+ display: block;
+}
+
+inbox, drafts, inbox-detail {
+ padding:1em;
+ margin-left:200px;
+}
+
+inbox-detail {
+ display:block;
+ margin-left:200px;
+}
diff --git a/modules/playground/src/routing_deprecated/index.html b/modules/playground/src/routing_deprecated/index.html
new file mode 100644
index 0000000000..7d386130be
--- /dev/null
+++ b/modules/playground/src/routing_deprecated/index.html
@@ -0,0 +1,14 @@
+
+
+ Routing Example
+
+
+
+
+
+ Loading...
+
+
+
+
+
diff --git a/modules/playground/src/routing_deprecated/index.ts b/modules/playground/src/routing_deprecated/index.ts
new file mode 100644
index 0000000000..e829e12149
--- /dev/null
+++ b/modules/playground/src/routing_deprecated/index.ts
@@ -0,0 +1,9 @@
+import {InboxApp} from './app/inbox-app';
+import {bootstrap} from '@angular/platform-browser-dynamic';
+import {HashLocationStrategy, LocationStrategy} from '@angular/common';
+import {ROUTER_PROVIDERS} from '@angular/router-deprecated';
+
+export function main() {
+ bootstrap(InboxApp,
+ [ROUTER_PROVIDERS, {provide: LocationStrategy, useClass: HashLocationStrategy}]);
+}