Monday, July 13, 2009

Seaside 2.9 and Comet to control replicated Croquet islands.

I want to share some of my experiments in combination of Open Croquet and Seaside/Comet at image level.

The main aim is: to allow multi-user interactions with shared content on the Croquet island just from web browser in real time (from any place, device like smart-phone, low-end machine (sometimes without OpenGL) etc. so, that a connection to the network and http web based browser just needed.
Also, it could help to implement open source "Forum pages" like features , which are existed only in Qwaq forums 2.0 (access recent activity from your web browser etc.).

I have prepared the ready-to-go image for those, who want to explore the infinite possibilities :)
1. CroquetSDK.v1.0.18 with new image.
2. Just one image for using with manual downloaded any Croquet SDK.

Also, I prepared the Script for loading Seaside 2.9 alpha updated (13-07-09) into any fresh OpenCroquet image (1.0.18 users should update from sources to the latest, or use this one Croquet.1.0.25 )

For examples look at SmotriniWorldControl class.


Here on the screen-shot there are two participants and two opened web browsers (Safari, Firefox).
Just only one participant run Seaside/Comet application.
Changing any of the RGB sliders (in one of browser window) causes the change of the active space color, and glad to Comet in all opened Web browsers slider's handles change their visual state automatically (without manual refreshing).

All callbacks from seaside to croquet island are future events, like from proper harness in Croquet, so they dose not destroy the replicated state.
-----
onSlide: (html jQuery ajax
callback: [ :value |
aColor = #red ifTrue:[self class valueRGB red: value asNumber.
aFrame future color: (Color r: self class valueRGB red g: aFrame color green b: aFrame color blue)].
-----

How to run:

1. Start WAListenerAdaptor (support Comet Seaside applications)

WAListenerAdaptor startOn: 8888. (different ports for several participants, if needed)

2. Open Croquet master (KAT Demo harness is used in this example, from default Croquet SDK).

KCroquetParticipant new openInWorld.

When it asks about interactivity server, leave it blank, as (www.croquetcollaborative.org) could not work, so it will start locally.

3. Point your any web browser (Firefox, Safari preferable) to:

http://localhost:8888/seaside/croquet

4. To test Comet functions (RGB Slider), just open another browser window and point it also to:

http://localhost:8888/seaside/croquet


To be continued..

37 Comments:

Blogger brasspen said...

I don't mean to be obtuse, but I'm a little lost. I have two tabs in Firefox running the panel. I have the SDK image running with the rabbit.

I get the idea that what's going on in a World can be pushed to a browser on a cell phone or whatever. I get that non-visual data can be pushed out.

I don't get what "Create 3D Window Text" is for if I can't see it. I get the impresion only data is being pushed to the cell phone browser.

Are they supposed to be running the Croquet image at the same time? But you said they may not have any OpenGL?

I know: Tell me this. Am I supposed to be seeing anything else beside your control panel in the browser window?

I'm curious about this. It's cool, but I'm not quite getting it.

9:13 pm  
Blogger Suslov Nikolay said...

Ok, for example:

Imagine the classroom or exhibition/art gallery hall, where we have several projections of Croquet 3D (OpenGL based) space on the walls. And the audience (several people) could easily interact with shared content by using their own web based devices, come with.
They will observe both the web control panel changings on the web-device and real Croquet OpenGL graphic on the walls.

The second scenario: could be, yes, like "blind blogging, surfing etc.", as I mentioned in the post: "Forum pages". You interact with shared island and get callback just with html information on the same device, but knowing, that your real Croquet world is growing etc. And, to get full experience, you need to see both, or just Croquet full one.

So, these Seaside/Comet applications for Croquet could be seemed like multi-user shared remote controllers for manipulating the Croquet island content.

10:03 pm  
Blogger Suslov Nikolay said...

"Are they supposed to be running the Croquet image at the same time? But you said they may not have any OpenGL?"

Meaning, that it's like:

I allow somebody to control my OpenGL Croquet application from his phone remotely, and for that he needs just a web browser pointed to my Seaside application, running inside Croquet image on my side.

10:25 pm  
Blogger Suslov Nikolay said...

And in addition, to clarify things:

Several opened web browsers connected to one Croquet image/one harness are not equal to several "Avatars" in Croquet (where each should be presented by own harness). So, they are equal more to one controller which is shared between multi-users or like multi-touch interface over http.
In general you could enhance with such "controller" every connected island replica living in Croquet p2p net.

11:34 pm  
Blogger Andy Burnett said...

I think this looks like a fascinating project. Being able to interact with a croquet space simply via the browser is a great idea. Well done, I will definitely follow this project.

cheers
Andy

2:14 pm  
Blogger brasspen said...

I'm finding looking at this code to be very rewarding. This is the first time I've looked at something about Croquet and not felt it was alien technology.

You're getting data from the croquetHarness and croquetText instance variables. OK.
What's gained from there gets pushed by CTPusher.

CTPusher>>javascript: says you used the SUScript class in the comment. That doesn't exist in 2.9, I don't think. The actual code is JSScript.

I dwell on that because I'm not sure how Comet does what it does. Is this a function of a library like JQuery or Prototype. Or is the Smalltalk doing the pushing?

I'm fascinated by how Lukas Renggli's Scriptaculous parses and builds JavaScript strings. Your app seems to be opening up new possibilities for me to explore on how that's done. Not least of which, it's time for me to switch to 2.9.

One thing, where are my variable, hierarchy, etc. buttons? What have you done to my buttons! :o Is this a Pharo image or something?

I hope you don't mind, but I'll likely have more questions tomorrow, as well.

10:14 pm  
Blogger Suslov Nikolay said...

About image and code inside:

This is the CroquetSDK.1.0.25 image (v.3.8 Squeak based) with some cleanup.
Seaside 2.9 packages and its additions like Comet, JavaScript, JQuery are loaded into this image without any manual modifications, except of http server infrastructure and required/missed methods for 3.8 Squeak version (as Seaside is now developed in Pharo, which is 3.9+ derived).
So, DynamicBindings, KomServices, KomHttpServer packages are a bit corrected by me to work in Croquet image and Croquet-Seaside package contains missed methods from 3.9/Pharo. They could be founded here (http://www.krestianstvo.org:9090/Croquet-Seaside/) and are used in automatic loading script also.

CTPusher is the class from Comet-Core package, and is maintained by Seaside dev-team, the same for other Seaside stuff.
And yes, Comet is not a function of a library, here is the quote from Philippe Marschall "Comet is a hack into the HTTP protocol. To make it do something is was not designed to do".
Comet and so CTPusher is used for updating the state of web content in all (not just one) connected web browsers at the same time. Here in SmotriniWorldControl example we set in future/get the value of space color on #onSlide event, and only on #onStop event push it (in a form of position of slider's handle) to other browsers.

About development environment:

Buttons are missed, sorry.
To restore them in SystemBrowser just enable (Preferences enable: #optionalButtons).

1:26 am  
Blogger brasspen said...

Thank you for answering my questions. I need to reflect a bit now. And I love the trick for getting the buttons back.

6:04 pm  
Anonymous Anonymous said...

Curious. Are you alone or are there other people working on this with you. It's refreshing to see someone else working with the Croquet SDK. Are you planning on maintaing the smalltalk roots of the project?

2:57 am  
Blogger jski said...

I downloaded the CroquetSDK-1.0.25-Seaside.2.9-Full image+vm. I ported my Seaside app over to it - mainly working thru issues with the newer Comet. The reason for this is to have more mature Jabber + Comet + Seaside(2.9) code. Currently I'm not certain how I might take advantage of Croquet but if needed it's there.

One question: how out of synch is this image from the latest-and-greatest Croquet/Cobalt image?

---John

10:45 pm  
Blogger Suslov Nikolay said...

Great to hear, it could extend the Jabber usability in Croquet/Cobalt, so that somebody could participate in conversation being held in 3D Croquet world, just from web browser (and vice versa).

This image is the latest public released version of Croquet SDK (2007/08 year), which is synced with Hedgehog sources. Cobalt SDK is based on it also.

10:08 am  
Blogger jski said...

I recently tried to install my code from this modified Croquet image into the latest Pharo, which is still at Seasidse 2.8. I got a walkback with WAAdmin. I posted a question on this and was informed WAAdmin is in Seaside 3.0. Is 2.9 a development platform and 3.0 a release?

Nikolay, do you plan to keep this web site (including "Script for loading Seaside 2.9[?]") updated?

---jski

6:19 pm  
Anonymous Anonymous said...

to buy [URL=http://jacket-dresses.net/]moncler sale[/URL] for gift tURyxPIw [URL=http://jacket-dresses.net/ ] http://jacket-dresses.net/ [/URL]

3:52 pm  
Anonymous Anonymous said...

[url=http://ebiteua.com/forum73-prostitutki-lutska-i-oblasti.html]Prostitutki Lutck[/url]

3:24 am  
Anonymous Anonymous said...

purchase VfjEFtGA [URL=http://www.top--designer-brands.net/]faux coach handbags[/URL] and check coupon code available TrvSbbto [URL=http://www.top--designer-brands.net/ ] http://www.top--designer-brands.net/ [/URL]

8:15 pm  
Anonymous Anonymous said...

sell eYaMjXDz [URL=http://www.hermes-birkinprice.weebly.com/]hermes outlet online[/URL] , just clicks away wUVMwxUU [URL=http://www.hermes-birkinprice.weebly.com/ ] http://www.hermes-birkinprice.weebly.com/ [/URL]

2:10 am  
Anonymous Anonymous said...

botas ugg baratas pbgssffs botas ugg espa?a rfexvkhc botas ugg jumkrdwt comprar ugg online jytcyabh ugg australia vzdkleyg ugg baratas wrndclct ugg espa?a pyjmghke ugg online lkusieiv ugg pbxjzklu

12:46 pm  
Anonymous Anonymous said...

michael kors bags jpzxvscv michael kors handbags iazjfnts michael kors outlet bittjebg michael kors purses ssyvvfwv michael kors sale zwuhzauj Michael Kors vwqhaszh

6:55 pm  
Anonymous Anonymous said...

tory burch shoes sale oxtikqui Cheap Tory Burch shoes kqfehxbb Tory Burch outlet online raqtbmng discount Tory Burch shoes pkczwnld Tory Burch outlet sale cbnysewo Tory Burch Boots gdkiekhw Tory Burch Flats oygnjxvm Tory Burch Flip Flops njprrkch Tory Burch Handbags vgpkdzkv Tory Burch Heels gzdndjuj Tory Burch Reva Flats yrlkwtkp Tory Burch Sandals klkfgooo Tory Burch Wallets wamzlajt Tory Burch Wedges nztmzpvr

1:49 am  
Blogger oakleyses said...

christian louboutin shoes, louis vuitton outlet, kate spade handbags, coach outlet, true religion, nike shoes, michael kors outlet store, tory burch outlet, oakley sunglasses, louis vuitton handbags, coach purses, louis vuitton outlet, michael kors outlet online, coach outlet store online, coach outlet, ray ban sunglasses, michael kors outlet online, burberry outlet online, louis vuitton, red bottom shoes, christian louboutin outlet, burberry outlet online, longchamp outlet, longchamp handbags, michael kors outlet online, true religion outlet, nike free, oakley vault, jordan shoes, longchamp outlet online, kate spade outlet online, ray ban outlet, chanel handbags, cheap oakley sunglasses, michael kors outlet, prada handbags, prada outlet, tiffany and co jewelry, louis vuitton outlet online, nike air max, tiffany jewelry, polo ralph lauren outlet, nike air max, christian louboutin, michael kors outlet online, gucci handbags, polo ralph lauren

7:19 am  
Blogger oakleyses said...

louis vuitton, converse pas cher, louis vuitton pas cher, lululemon, nike free pas cher, true religion jeans, louis vuitton uk, mulberry, air max, ray ban uk, nike air force, true religion outlet, ray ban pas cher, timberland, longchamp pas cher, scarpe hogan, north face, guess pas cher, michael kors uk, north face pas cher, nike air max, barbour, chaussure louboutin, burberry pas cher, hollister, hollister, sac vanessa bruno, nike blazer pas cher, lacoste pas cher, sac michael kors, hermes pas cher, michael kors canada, nike free, vans pas cher, air max pas cher, nike roshe, nike roshe run, oakley pas cher, tn pas cher, new balance pas cher, nike air max, air jordan, longchamp, sac louis vuitton, ralph lauren, abercrombie and fitch, ralph lauren pas cher

7:22 am  
Blogger oakleyses said...

roshe run, lululemon outlet, celine handbags, nfl jerseys, ugg, asics shoes, insanity workout, giuseppe zanotti, hollister, nike huarache, longchamp, ugg outlet, ugg soldes, uggs outlet, canada goose outlet, mont blanc pens, babyliss pro, canada goose outlet, canada goose, p90x workout, ghd, instyler ionic styler, marc jacobs outlet, beats headphones, chi flat iron, vans outlet, jimmy choo shoes, ugg boots, birkin bag, soccer jerseys, ferragamo shoes, abercrombie and fitch, valentino shoes, mcm handbags, new balance outlet, mac cosmetics, reebok shoes, nike trainers, bottega veneta, soccer shoes, canada goose outlet, north face jackets, herve leger, wedding dresses, rolex watches, uggs on sale, north face outlet

7:23 am  
Blogger oakleyses said...

timberland shoes, ugg, ralph lauren, supra shoes, wedding dress, parajumpers outlet, uggs canada, louboutin, converse, moncler, vans, canada goose, lancel, toms outlet, coach outlet, hollister canada, moncler, links of london uk, moncler outlet, swarovski jewelry, pandora uk, juicy couture outlet, karen millen, iphone 6 case, pandora charms, canada goose uk, hollister clothing, nike air max, ray ban, air max, gucci, montre femme, thomas sabo uk, canada goose, baseball bats, hollister, moncler, louis vuitton canada, pandora jewelry, canada goose pas cher, moncler, juicy couture outlet, moncler, replica watches, swarovski uk, oakley, moncler, converse shoes

7:25 am  
Blogger ninest123 Ninest said...

ninest123 09.04
michael kors outlet, nike air max, michael kors outlet, christian louboutin outlet, polo ralph lauren outlet, prada handbags, louboutin shoes, tory burch outlet, ugg boots, replica watches, ugg boots, prada outlet, nike free, ray ban sunglasses, jordan shoes, nike outlet, oakley sunglasses, longchamp outlet, replica watches, longchamp, polo ralph lauren outlet, michael kors, ugg boots, michael kors outlet, louboutin, oakley sunglasses, louis vuitton, louis vuitton, nike air max, uggs on sale, burberry outlet online, ugg boots, burberry, gucci outlet, longchamp outlet, michael kors outlet, tiffany jewelry, oakley sunglasses, louis vuitton outlet, louis vuitton outlet, louboutin outlet, michael kors outlet, louis vuitton, ray ban sunglasses, tiffany and co

2:28 am  
Blogger ninest123 Ninest said...

true religion jeans, vanessa bruno, hermes, coach purses, true religion jeans, converse pas cher, coach outlet, tn pas cher, longchamp pas cher, chanel handbags, nike air max, air jordan pas cher, louboutin pas cher, vans pas cher, ralph lauren pas cher, timberland, oakley pas cher, coach outlet, hogan, hollister, nike roshe run, north face, nike free, mulberry, ray ban pas cher, kate spade handbags, coach factory outlet, north face, true religion outlet, sac guess, lacoste pas cher, kate spade outlet, true religion jeans, michael kors, new balance pas cher, lululemon, nike blazer, air max, burberry, michael kors, sac longchamp, ray ban uk, hollister pas cher, michael kors, air force

2:29 am  
Blogger ninest123 Ninest said...

longchamp, baseball bats, nike huarache, vans shoes, ralph lauren uk, abercrombie and fitch, nike air max, reebok shoes, mont blanc, birkin bag, herve leger, ghd, jimmy choo shoes, mcm handbags, beats by dre, north face outlet, valentino shoes, new balance, nfl jerseys, hollister, lululemon, ferragamo shoes, nike air max, bottega veneta, nike roshe, soccer jerseys, p90x workout, asics running shoes, north face outlet, nike trainers, celine handbags, giuseppe zanotti, nike roshe, insanity workout, babyliss, iphone 6 cases, hollister, nike air max, wedding dresses, soccer shoes, nike free run uk, abercrombie and fitch, chi flat iron, instyler, mac cosmetics

2:31 am  
Blogger ninest123 Ninest said...

louboutin, ugg,uggs,uggs canada, ugg,ugg australia,ugg italia, pandora charms, ugg boots uk, swarovski crystal, pandora charms, timberland boots, louis vuitton, converse outlet, supra shoes, ralph lauren, gucci, michael kors handbags, swarovski, michael kors outlet online, coach outlet, marc jacobs, replica watches, ugg pas cher, bottes ugg, karen millen, juicy couture outlet, lancel, wedding dresses, vans, toms shoes, thomas sabo, pandora jewelry, juicy couture outlet, louis vuitton, nike air max, oakley, louis vuitton, ray ban, links of london, sac louis vuitton pas cher, hollister, michael kors outlet, louis vuitton, hollister, converse, doke gabbana outlet, montre pas cher
ninest123 09.04

2:33 am  
Blogger dong dong said...

201510.13dongdong
coach outlet online
nike trainers
Oakley Polarized Sunglasses Cheap Outlet Store
ugg boots sale
authentic louis vuitton handbags
Outlet Michael Kors Handbags
michael kors outlet online
Coach Outlet Online Discount Sale
tory burch sale
Coach Outlet Discount Clearance Coach Handbags
michael kors outlet
Cheap Ray Ban Wayfarer
Cheap Christian Louboutin Shoes Sale
Abercrombie & Kent Luxury Travel
louis vuitton outlet online
hollister clothing
michael kors outlet
cheap ugg boots
Gucci Outlet Store Locations
Jordan 4 Shoes For Sale
true religion jeans
Louis Vuitton Outlet Free Shipping
michael kors handbags
Abercrombie and Fitch Women's Clothing
Louis Vuitton Purses For Cheap
burberry outlet
Louis Vuitton Clearance Sale
cheap jordans,jordan shoes,cheap jordan shoes

7:52 am  
Blogger dong dong said...

201510.13dongdong
toms outlet
hollister uk sale
hermes outlet
Cheap Michael Kors Handbags Outlet
coach outlet
cheap ugg boots
Louis Vuitton Online Shop Stores
abercrombie store
Jordan 8 Phoenix Suns
Coach Diaper Bag Outlet
ugg outlet
Official Coach Online Factory Sale
louis vuitton outlet stores
Authentic Louis Vuitton Handbags Outlet Sale
uggs sale
100% Authentic New Lerbron James Shoes
true religion outlet
michael kors uk
Louis Vuitton Neverfull Tote Bag
coach outlet online
Designer Louis Vuitton Bags Discount
Coach Factory Handbags Outlet Store
Jordan 3 Retro 2015
michael kors outlet
coach factory outlet
michael kors outlet online
timberland outlet
Louis vuitton Official Website Outlet Online
michael kors handbags
ugg boots
Toms Outlet Store Online
Authentic Air Jordan 13 shoes for sale

7:59 am  
Blogger Minko Chen said...

tiffany outlet
nike air max
longchamp outlet
cheap nba jerseys
nike air huarache
rolex uk
kate spade uk outlet
michael kors outlet online
fitflops clearance
michael kors handbags clearance
omega outlet
bottega veneta outlet
true religion jeans
louis vuitton bags
air jordan 13
ugg boots
rolex watches for sale
michael kors uk
rolex watches,rolex watches,swiss watches,watches for men,watches for women,omega watches,replica watches,rolex watches for sale,rolex replica,rolex watch,cartier watches,rolex submariner,fake rolex,rolex replica watches,replica rolex
mulberry handbags sale

2:42 am  
Blogger oakleyses said...

oakley sunglasses wholesale, chanel handbags, burberry pas cher, tory burch outlet, nike free, nike air max, nike outlet, michael kors pas cher, longchamp outlet, ugg boots, jordan shoes, replica watches, louboutin pas cher, christian louboutin shoes, polo outlet, jordan pas cher, nike air max, ray ban sunglasses, polo ralph lauren outlet online, longchamp pas cher, replica watches, louis vuitton, kate spade outlet, ray ban sunglasses, air max, gucci handbags, louis vuitton outlet, christian louboutin uk, uggs on sale, prada handbags, cheap oakley sunglasses, ray ban sunglasses, oakley sunglasses, sac longchamp pas cher, louis vuitton outlet, louis vuitton, ugg boots, louis vuitton outlet, tiffany jewelry, nike free run, nike roshe, tiffany and co, oakley sunglasses, christian louboutin outlet, prada outlet, polo ralph lauren, longchamp outlet, oakley sunglasses

5:48 am  
Blogger oakleyses said...

ralph lauren uk, nike air max, uggs outlet, michael kors, true religion jeans, coach purses, true religion outlet, north face uk, hogan outlet, ray ban pas cher, coach outlet store online, true religion outlet, michael kors outlet, michael kors outlet online, abercrombie and fitch uk, nike air force, timberland pas cher, true religion outlet, lululemon canada, nike roshe run uk, polo lacoste, michael kors outlet online, michael kors outlet, michael kors outlet online, sac vanessa bruno, nike blazer pas cher, coach outlet, hollister uk, nike free uk, north face, sac hermes, new balance, michael kors outlet online, hollister pas cher, michael kors, oakley pas cher, nike air max uk, burberry outlet, kate spade, nike tn, converse pas cher, uggs outlet, michael kors outlet, replica handbags, guess pas cher, burberry handbags

5:50 am  
Blogger oakleyses said...

iphone 6s plus cases, nike trainers uk, mont blanc pens, herve leger, new balance shoes, chi flat iron, nike huaraches, bottega veneta, soccer jerseys, iphone 6 plus cases, p90x workout, oakley, wedding dresses, lululemon, timberland boots, mcm handbags, louboutin, vans outlet, instyler, ralph lauren, north face outlet, hollister clothing, abercrombie and fitch, asics running shoes, iphone 6s cases, iphone cases, mac cosmetics, babyliss, iphone 5s cases, valentino shoes, nfl jerseys, jimmy choo outlet, soccer shoes, north face outlet, longchamp uk, giuseppe zanotti outlet, hermes belt, iphone 6 cases, baseball bats, insanity workout, reebok outlet, s6 case, ipad cases, celine handbags, hollister, beats by dre, ghd hair, nike roshe run, ferragamo shoes, nike air max

5:55 am  
Blogger oakleyses said...

ugg,ugg australia,ugg italia, moncler outlet, replica watches, thomas sabo, lancel, louis vuitton, juicy couture outlet, wedding dresses, moncler, ugg pas cher, louis vuitton, canada goose uk, ugg,uggs,uggs canada, swarovski crystal, vans, supra shoes, louis vuitton, pandora charms, pandora uk, toms shoes, moncler, canada goose jackets, pandora jewelry, ugg, converse, canada goose, barbour, juicy couture outlet, canada goose outlet, pandora jewelry, moncler, hollister, canada goose outlet, canada goose, canada goose, canada goose outlet, ugg uk, barbour uk, swarovski, marc jacobs, louis vuitton, louis vuitton, ray ban, moncler uk, converse outlet, nike air max, moncler outlet, doudoune moncler, karen millen uk, links of london, montre pas cher, coach outlet

7:36 am  
Blogger 柯云 said...

2016-04-11keyun
kate spade outlet
giuseppe zanotti outlet
kobe 10
michael kors outlet online sale
coach outlet online
louis vuitton outlet
louis vuitton bags
louboutin shoes
air jordan shoes
louis vuitton purses
adidas superstar
cheap rolex watches
ralph lauren sale
kate spade outlet
ray bans
michael kors outlet
michael kors outlet online
fitflop shoes
michael kors outlet
michael kors canada
louis vuitton handbags
louis vuitton
michael kors outlet
tory burch flats
ray ban sunglasses uk
cheap ray ban sunglasses
true religion outlet online
replica watches
fitflop sandals
louis vuitton purses
ray ban eyeglasses
coach factory outlet
jordan 6s
coach outlet store online
juicy couture
gucci handbags
louis vuitton outlet online
louis vuitton outlet
christian louboutin sale

9:37 am  
Blogger Liu Liu said...

Coming Nike Air Max 2015 Shoes off a Super Bowl loss, the Carolina Panthers were about salary-cap discipline. General manager Dave Gettleman preached patience and measure. And when it came to making roster decisions – like letting All-Pro cornerback Josh Norman walk Nike Free Run away – everything was about the overall financial design. “You have to balance the needs of the team now with the needs of the team in cheap nfl jerseys a couple of years,” Gettleman told Yahoo Sports in June. “You have to plan. I’m very wholesale nfl jerseys methodical Nike Roshe Run and intentional about what I do [and] nfl jerseys store about the decisions we make. You have to be that NFL Jerseys way with the salary cap, because Nike Air Max 90 it’s going to cost you.”

3:39 pm  
Blogger alice asd said...

cheap oakley sunglasses
adidas yeezy
coach outlet
jerseys wholesale
rolex replica
houston texans jerseys
nike tn
nike blazer pas cher
christian louboutin shoes
ecco shoes outlet

11:01 am  

Post a Comment

<< Home