1/**
2 * $Id: mxAws3d.js,v 1.0 2015/10/11 07:05:39 mate Exp $
3 * Copyright (c) 2006-2015, JGraph Ltd
4 */
5
6//**********************************************************************************************************************************************************
7//Arrow NE
8//**********************************************************************************************************************************************************
9/**
10* Extends mxShape.
11*/
12function mxShapeAws3dArrowNE(bounds, fill, stroke, strokewidth)
13{
14	mxShape.call(this);
15	this.bounds = bounds;
16	this.fill = fill;
17	this.stroke = stroke;
18	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
19};
20
21/**
22* Extends mxShape.
23*/
24mxUtils.extend(mxShapeAws3dArrowNE, mxShape);
25
26mxShapeAws3dArrowNE.prototype.cst = {
27		ARROW_NE : 'mxgraph.aws3d.arrowNE'
28};
29
30/**
31* Function: paintVertexShape
32*
33* Paints the vertex shape.
34*/
35mxShapeAws3dArrowNE.prototype.paintVertexShape = function(c, x, y, w, h)
36{
37	c.translate(x, y);
38
39	c.begin();
40	c.moveTo(w - 17, 8);
41	c.lineTo(w - 21, 5.5);
42	c.lineTo(w, 0);
43	c.lineTo(w - 9.7, 12.2);
44	c.lineTo(w - 13.9, 9.8);
45	c.lineTo(9.7, h - 3.5);
46	c.arcTo(6, 3, 0, 0, 1, 9, h - 0.4);
47	c.arcTo(5.2, 3, 0, 0, 1, 1, h - 1.4);
48	c.arcTo(6, 2.8, 0, 0, 1, 3, h - 5.4);
49	c.arcTo(5, 3, 0, 0, 1, 6.7, h - 5.2);
50	c.close();
51	c.fillAndStroke();
52};
53
54mxCellRenderer.registerShape(mxShapeAws3dArrowNE.prototype.cst.ARROW_NE, mxShapeAws3dArrowNE);
55
56//**********************************************************************************************************************************************************
57//Arrow SE
58//**********************************************************************************************************************************************************
59/**
60* Extends mxShape.
61*/
62function mxShapeAws3dArrowSE(bounds, fill, stroke, strokewidth)
63{
64	mxShape.call(this);
65	this.bounds = bounds;
66	this.fill = fill;
67	this.stroke = stroke;
68	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
69};
70
71/**
72* Extends mxShape.
73*/
74mxUtils.extend(mxShapeAws3dArrowSE, mxShape);
75
76mxShapeAws3dArrowSE.prototype.cst = {
77		ARROW_SE : 'mxgraph.aws3d.arrowSE'
78};
79
80
81
82/**
83* Function: paintVertexShape
84*
85* Paints the vertex shape.
86*/
87mxShapeAws3dArrowSE.prototype.paintVertexShape = function(c, x, y, w, h)
88{
89	c.translate(x, y);
90
91	c.begin();
92	c.moveTo(w - 17, h - 8);
93	c.lineTo(w - 21, h - 5.5);
94	c.lineTo(w, h);
95	c.lineTo(w - 9.7, h - 12.2);
96	c.lineTo(w - 13.9, h - 9.8);
97	c.lineTo(9.7, 3.5);
98	c.arcTo(6, 3, 0, 0, 0, 9, 0.4);
99	c.arcTo(5.2, 3, 0, 0, 0, 1, 1.4);
100	c.arcTo(6, 2.8, 0, 0, 0, 3, 5.4);
101	c.arcTo(5, 3, 0, 0, 0, 6.7, 5.2);
102	c.close();
103	c.fillAndStroke();
104};
105
106mxCellRenderer.registerShape(mxShapeAws3dArrowSE.prototype.cst.ARROW_SE, mxShapeAws3dArrowSE);
107
108//**********************************************************************************************************************************************************
109//Arrow SW
110//**********************************************************************************************************************************************************
111/**
112* Extends mxShape.
113*/
114function mxShapeAws3dArrowSW(bounds, fill, stroke, strokewidth)
115{
116	mxShape.call(this);
117	this.bounds = bounds;
118	this.fill = fill;
119	this.stroke = stroke;
120	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
121};
122
123/**
124* Extends mxShape.
125*/
126mxUtils.extend(mxShapeAws3dArrowSW, mxShape);
127
128mxShapeAws3dArrowSW.prototype.cst = {
129		ARROW_SW : 'mxgraph.aws3d.arrowSW'
130};
131
132/**
133* Function: paintVertexShape
134*
135* Paints the vertex shape.
136*/
137mxShapeAws3dArrowSW.prototype.paintVertexShape = function(c, x, y, w, h)
138{
139	c.translate(x, y);
140
141	c.begin();
142	c.moveTo(17, h - 8);
143	c.lineTo(21, h - 5.5);
144	c.lineTo(0, h);
145	c.lineTo(9.7, h - 12.2);
146	c.lineTo(13.9, h - 9.8);
147	c.lineTo(w - 9.7, 3.5);
148	c.arcTo(6, 3, 0, 0, 1, w - 9, 0.4);
149	c.arcTo(5.2, 3, 0, 0, 1, w - 1, 1.4);
150	c.arcTo(6, 2.8, 0, 0, 1, w - 3, 5.4);
151	c.arcTo(5, 3, 0, 0, 1, w - 6.7, 5.2);
152	c.close();
153	c.fillAndStroke();
154};
155
156mxCellRenderer.registerShape(mxShapeAws3dArrowSW.prototype.cst.ARROW_SW, mxShapeAws3dArrowSW);
157
158//**********************************************************************************************************************************************************
159//Arrow NW
160//**********************************************************************************************************************************************************
161/**
162* Extends mxShape.
163*/
164function mxShapeAws3dArrowNW(bounds, fill, stroke, strokewidth)
165{
166	mxShape.call(this);
167	this.bounds = bounds;
168	this.fill = fill;
169	this.stroke = stroke;
170	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
171};
172
173/**
174* Extends mxShape.
175*/
176mxUtils.extend(mxShapeAws3dArrowNW, mxShape);
177
178mxShapeAws3dArrowNW.prototype.cst = {
179		ARROW_NW : 'mxgraph.aws3d.arrowNW'
180};
181
182/**
183* Function: paintVertexShape
184*
185* Paints the vertex shape.
186*/
187mxShapeAws3dArrowNW.prototype.paintVertexShape = function(c, x, y, w, h)
188{
189	c.translate(x, y);
190
191	c.begin();
192	c.moveTo(17, 8);
193	c.lineTo(21, 5.5);
194	c.lineTo(0, 0);
195	c.lineTo(9.7, 12.2);
196	c.lineTo(13.9, 9.8);
197	c.lineTo(w - 9.7, h - 3.5);
198	c.arcTo(6, 3, 0, 0, 0, w - 9, h - 0.4);
199	c.arcTo(5.2, 3, 0, 0, 0, w - 1, h - 1.4);
200	c.arcTo(6, 2.8, 0, 0, 0, w - 3, h - 5.4);
201	c.arcTo(5, 3, 0, 0, 0, w - 6.7, h - 5.2);
202	c.close();
203	c.fillAndStroke();
204};
205
206mxCellRenderer.registerShape(mxShapeAws3dArrowNW.prototype.cst.ARROW_NW, mxShapeAws3dArrowNW);
207
208//**********************************************************************************************************************************************************
209//Arrowless NE
210//**********************************************************************************************************************************************************
211/**
212* Extends mxShape.
213*/
214function mxShapeAws3dArrowlessNE(bounds, fill, stroke, strokewidth)
215{
216	mxShape.call(this);
217	this.bounds = bounds;
218	this.fill = fill;
219	this.stroke = stroke;
220	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
221};
222
223/**
224* Extends mxShape.
225*/
226mxUtils.extend(mxShapeAws3dArrowlessNE, mxShape);
227
228mxShapeAws3dArrowlessNE.prototype.cst = {
229		ARROWLESS_NE : 'mxgraph.aws3d.arrowlessNE'
230};
231
232/**
233* Function: paintVertexShape
234*
235* Paints the vertex shape.
236*/
237mxShapeAws3dArrowlessNE.prototype.paintVertexShape = function(c, x, y, w, h)
238{
239	c.translate(x, y);
240
241	c.begin();
242	c.moveTo(w - 3.1, 0);
243	c.lineTo(w, 1.8);
244	c.lineTo(9.7, h - 3.5);
245	c.arcTo(6, 3, 0, 0, 1, 9, h - 0.4);
246	c.arcTo(5.2, 3, 0, 0, 1, 1, h - 1.4);
247	c.arcTo(6, 2.8, 0, 0, 1, 3, h - 5.4);
248	c.arcTo(5, 3, 0, 0, 1, 6.7, h - 5.2);
249	c.close();
250	c.fillAndStroke();
251};
252
253mxCellRenderer.registerShape(mxShapeAws3dArrowlessNE.prototype.cst.ARROWLESS_NE, mxShapeAws3dArrowlessNE);
254
255//**********************************************************************************************************************************************************
256//Dashed edge with double arrow
257//**********************************************************************************************************************************************************
258/**
259* Extends mxShape.
260*/
261function mxShapeAws3dDashedEdgeDouble(bounds, fill, stroke, strokewidth)
262{
263	mxShape.call(this);
264	this.bounds = bounds;
265	this.fill = fill;
266	this.stroke = stroke;
267	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
268};
269
270/**
271* Extends mxShape.
272*/
273mxUtils.extend(mxShapeAws3dDashedEdgeDouble, mxShape);
274
275mxShapeAws3dDashedEdgeDouble.prototype.cst = {
276		DASHED_EDGE_DOUBLE : 'mxgraph.aws3d.dashedEdgeDouble'
277};
278
279/**
280* Function: paintVertexShape
281*
282* Paints the vertex shape.
283*/
284mxShapeAws3dDashedEdgeDouble.prototype.paintVertexShape = function(c, x, y, w, h)
285{
286	c.translate(x, y);
287
288	c.setFillColor('#2D6195');
289	c.save();
290	c.setStrokeColor('none');
291	c.begin();
292	c.moveTo(21, 5.5);
293	c.lineTo(0, 0);
294	c.lineTo(9.7, 12.2);
295	c.fillAndStroke();
296
297	c.begin();
298	c.moveTo(w - 21, h - 5.5);
299	c.lineTo(w, h);
300	c.lineTo(w - 9.7, h - 12.2);
301	c.fillAndStroke();
302
303	c.restore();
304	c.setStrokeColor('#2D6195');
305	c.setStrokeWidth('4');
306	c.setDashed('true');
307	c.setLineCap('round');
308
309	c.begin();
310	c.moveTo(7.675, 4.425);
311	c.lineTo(w - 7.675, h - 4.425);
312	c.stroke();
313};
314
315mxCellRenderer.registerShape(mxShapeAws3dDashedEdgeDouble.prototype.cst.DASHED_EDGE_DOUBLE, mxShapeAws3dDashedEdgeDouble);
316
317//**********************************************************************************************************************************************************
318//Dashed arrowless edge
319//**********************************************************************************************************************************************************
320/**
321* Extends mxShape.
322*/
323function mxShapeAws3dDashedArrowlessEdge(bounds, fill, stroke, strokewidth)
324{
325	mxShape.call(this);
326	this.bounds = bounds;
327	this.fill = fill;
328	this.stroke = stroke;
329	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
330};
331
332/**
333* Extends mxShape.
334*/
335mxUtils.extend(mxShapeAws3dDashedArrowlessEdge, mxShape);
336
337mxShapeAws3dDashedArrowlessEdge.prototype.cst = {
338		DASHED_ARROWLESS_EDGE : 'mxgraph.aws3d.dashedArrowlessEdge'
339};
340
341/**
342* Function: paintVertexShape
343*
344* Paints the vertex shape.
345*/
346mxShapeAws3dDashedArrowlessEdge.prototype.paintVertexShape = function(c, x, y, w, h)
347{
348	c.translate(x, y);
349
350	c.setStrokeColor('#2D6195');
351	c.setStrokeWidth('4');
352	c.setDashed('true');
353	c.setLineCap('round');
354
355	c.begin();
356	c.moveTo(0, 0);
357	c.lineTo(w, h);
358	c.stroke();
359};
360
361mxCellRenderer.registerShape(mxShapeAws3dDashedArrowlessEdge.prototype.cst.DASHED_ARROWLESS_EDGE, mxShapeAws3dDashedArrowlessEdge);
362
363//**********************************************************************************************************************************************************
364//Dashed edge
365//**********************************************************************************************************************************************************
366/**
367* Extends mxShape.
368*/
369function mxShapeAws3dDashedEdge(bounds, fill, stroke, strokewidth)
370{
371	mxShape.call(this);
372	this.bounds = bounds;
373	this.fill = fill;
374	this.stroke = stroke;
375	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
376};
377
378/**
379* Extends mxShape.
380*/
381mxUtils.extend(mxShapeAws3dDashedEdge, mxShape);
382
383mxShapeAws3dDashedEdge.prototype.cst = {
384		DASHED_EDGE : 'mxgraph.aws3d.dashedEdge'
385};
386
387/**
388* Function: paintVertexShape
389*
390* Paints the vertex shape.
391*/
392mxShapeAws3dDashedEdge.prototype.paintVertexShape = function(c, x, y, w, h)
393{
394	c.translate(x, y);
395
396	c.setFillColor('#2D6195');
397	c.save();
398	c.setStrokeColor('none');
399	c.begin();
400	c.moveTo(w - 21, 5.5);
401	c.lineTo(w, 0);
402	c.lineTo(w - 9.7, 12.2);
403	c.fillAndStroke();
404
405	c.restore();
406	c.setStrokeColor('#2D6195');
407	c.setStrokeWidth('4');
408	c.setDashed('true');
409	c.setLineCap('round');
410
411	c.begin();
412	c.moveTo(w - 7.675, 4.425);
413	c.lineTo(0, h);
414	c.stroke();
415};
416
417mxCellRenderer.registerShape(mxShapeAws3dDashedEdge.prototype.cst.DASHED_EDGE, mxShapeAws3dDashedEdge);
418
419//**********************************************************************************************************************************************************
420//Flat edge
421//**********************************************************************************************************************************************************
422/**
423* Extends mxShape.
424*/
425function mxShapeAws3dFlatEdge(bounds, fill, stroke, strokewidth)
426{
427	mxShape.call(this);
428	this.bounds = bounds;
429	this.fill = fill;
430	this.stroke = stroke;
431	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
432};
433
434/**
435* Extends mxShape.
436*/
437mxUtils.extend(mxShapeAws3dFlatEdge, mxShape);
438
439mxShapeAws3dFlatEdge.prototype.cst = {
440		FLAT_EDGE : 'mxgraph.aws3d.flatEdge'
441};
442
443/**
444* Function: paintVertexShape
445*
446* Paints the vertex shape.
447*/
448mxShapeAws3dFlatEdge.prototype.paintVertexShape = function(c, x, y, w, h)
449{
450	c.translate(x, y);
451
452	c.setFillColor('#F4B934');
453	c.setStrokeColor('none');
454	c.begin();
455	c.moveTo(w - 46, 8.8);
456	c.lineTo(w - 61.2, 0);
457	c.lineTo(w, 0);
458	c.lineTo(w, 35.5);
459	c.lineTo(w - 15.4, 26.5);
460	c.lineTo(30.7, h);
461	c.lineTo(0, h - 17.7);
462	c.fillAndStroke();
463};
464
465mxCellRenderer.registerShape(mxShapeAws3dFlatEdge.prototype.cst.FLAT_EDGE, mxShapeAws3dFlatEdge);
466
467//**********************************************************************************************************************************************************
468//Flat double edge
469//**********************************************************************************************************************************************************
470/**
471* Extends mxShape.
472*/
473function mxShapeAws3dFlatDoubleEdge(bounds, fill, stroke, strokewidth)
474{
475	mxShape.call(this);
476	this.bounds = bounds;
477	this.fill = fill;
478	this.stroke = stroke;
479	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
480};
481
482/**
483* Extends mxShape.
484*/
485mxUtils.extend(mxShapeAws3dFlatDoubleEdge, mxShape);
486
487mxShapeAws3dFlatDoubleEdge.prototype.cst = {
488		FLAT_DOUBLE_EDGE : 'mxgraph.aws3d.flatDoubleEdge'
489};
490
491/**
492* Function: paintVertexShape
493*
494* Paints the vertex shape.
495*/
496mxShapeAws3dFlatDoubleEdge.prototype.paintVertexShape = function(c, x, y, w, h)
497{
498	c.translate(x, y);
499
500	c.setFillColor('#F4B934');
501	c.setStrokeColor('none');
502
503	c.begin();
504	c.moveTo(15.3, 61.9);
505	c.lineTo(30.8, 53.2);
506	c.lineTo(15.4, 44.2);
507	c.lineTo(0, 53.2);
508	c.lineTo(15.4, 8.8);
509	c.lineTo(92.1, 0);
510	c.lineTo(76.5, 8.8);
511	c.lineTo(92.1, 17.7);
512	c.lineTo(107.4, 8.8);
513
514	c.lineTo(w - 15.3, h - 61.9);
515	c.lineTo(w - 30.8, h - 53.2);
516	c.lineTo(w - 15.4, h - 44.2);
517	c.lineTo(w, h - 53.2);
518	c.lineTo(w - 15.4, h - 8.8);
519	c.lineTo(w - 92.1, h);
520	c.lineTo(w - 76.5, h - 8.8);
521	c.lineTo(w - 92.1, h - 17.7);
522	c.lineTo(w - 107.4, h - 8.8);
523	c.fillAndStroke();
524};
525
526mxCellRenderer.registerShape(mxShapeAws3dFlatDoubleEdge.prototype.cst.FLAT_DOUBLE_EDGE, mxShapeAws3dFlatDoubleEdge);
527
528//**********************************************************************************************************************************************************
529//AMI
530//**********************************************************************************************************************************************************
531/**
532* Extends mxShape.
533*/
534function mxShapeAws3dAMI(bounds, fill, stroke, strokewidth)
535{
536	mxShape.call(this);
537	this.bounds = bounds;
538	this.fill = fill;
539	this.stroke = stroke;
540	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
541};
542
543/**
544* Extends mxShape.
545*/
546mxUtils.extend(mxShapeAws3dAMI, mxShape);
547
548mxShapeAws3dAMI.prototype.cst = {
549		AMI : 'mxgraph.aws3d.ami',
550		SHADING_COLORS : 'shadingCols'
551};
552
553/**
554* Function: paintVertexShape
555*
556* Paints the vertex shape.
557*/
558mxShapeAws3dAMI.prototype.paintVertexShape = function(c, x, y, w, h)
559{
560	c.translate(x, y);
561
562	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
563	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
564	var strokeWidth1 = strokeWidth * w / 92;
565	var strokeWidth2 = strokeWidth * h / 60;
566
567	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
568
569	c.setStrokeWidth(strokeWidth);
570	c.setShadow(false);
571	c.save();
572	c.save();
573	c.setStrokeWidth(2 * strokeWidth);
574	c.setStrokeColor('#292929');
575	c.setLineJoin('round');
576
577	if (isShadow == 1)
578	{
579		c.setShadow(true);
580	}
581
582	c.begin();
583	c.moveTo(0, h * 0.6483);
584	c.lineTo(w * 0.0684, h * 0.4133);
585	c.lineTo(w * 0.5326, 0);
586	c.lineTo(w * 0.6685, 0);
587	c.lineTo(w * 0.9359, h * 0.2367);
588	c.lineTo(w, h * 0.465);
589	c.lineTo(w * 0.4, h);
590	c.close();
591	c.fillAndStroke();
592
593	c.restore();
594	c.setFillColor('#000000');
595	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dAMI.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
596	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
597	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
598
599	c.begin();
600	c.moveTo(0, h * 0.65);
601	c.lineTo(w * 0.0652, h * 0.5);
602	c.lineTo(w * 0.3326, h * 0.7667);
603	c.lineTo(w * 0.4663, h * 0.7667);
604	c.lineTo(w * 0.4, h);
605	c.close();
606	c.fill();
607
608	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
609	c.begin();
610	c.moveTo(w * 0.4, h);
611	c.lineTo(w * 0.4641, h * 0.77);
612	c.lineTo(w * 0.9326, h * 0.355);
613	c.lineTo(w * 0.9347, h * 0.24);
614	c.lineTo(w, h * 0.4667);
615	c.close();
616	c.fill();
617
618	c.restore();
619	c.setLineJoin('round');
620
621	c.begin();
622	c.moveTo(0, h * 0.65);
623	c.lineTo(w * 0.0652, h * 0.5);
624	c.lineTo(w * 0.3326, h * 0.7667);
625	c.lineTo(w * 0.4663, h * 0.7667);
626	c.lineTo(w * 0.4, h);
627	c.close();
628	c.stroke();
629
630	c.begin();
631	c.moveTo(w * 0.4, h);
632	c.lineTo(w * 0.4641, h * 0.77);
633	c.lineTo(w * 0.9326, h * 0.355);
634	c.lineTo(w * 0.9347, h * 0.24);
635	c.lineTo(w, h * 0.4667);
636	c.close();
637	c.stroke();
638
639	c.begin();
640	c.moveTo(w * 0.0652, h * 0.42);
641	c.lineTo(w * 0.0652, h * 0.5);
642	c.moveTo(w * 0.3337, h * 0.7667);
643	c.lineTo(w * 0.4, h);
644	c.moveTo(w * 0.9348, h * 0.355);
645	c.lineTo(w, h * 0.4733);
646	c.stroke();
647
648	c.setLineJoin('miter');
649	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
650	c.setFillColor(strokeColor);
651	c.begin();
652	c.moveTo(w * 0.1935, h * 0.42);
653	c.lineTo(w * 0.5543, h * 0.0967);
654	c.lineTo(w * 0.6652, h * 0.1967);
655	c.lineTo(w * 0.3, h * 0.5133);
656	c.close();
657	c.moveTo(w * 0.2967, h * 0.4633);
658	c.lineTo(w * 0.3837, h * 0.3883);
659	c.lineTo(w * 0.3326, h * 0.3417);
660	c.lineTo(w * 0.2467, h * 0.42);
661	c.close();
662	c.moveTo(w * 0.362, h * 0.32);
663	c.lineTo(w * 0.412, h * 0.3633);
664	c.lineTo(w * 0.5054, h * 0.2867);
665	c.lineTo(w * 0.4522, h * 0.24);
666	c.close();
667	c.moveTo(w * 0.5293, h * 0.26);
668	c.lineTo(w * 0.6109, h * 0.1933);
669	c.lineTo(w * 0.5511, h * 0.145);
670	c.lineTo(w * 0.4739, h * 0.2133);
671	c.close();
672	c.moveTo(w * 0.3528, h * 0.557);
673	c.lineTo(w * 0.7137, h * 0.2337);
674	c.lineTo(w * 0.8246, h * 0.3337);
675	c.lineTo(w * 0.4593, h * 0.6503);
676	c.close();
677	c.moveTo(w * 0.4561, h * 0.6003);
678	c.lineTo(w * 0.543, h * 0.5253);
679	c.lineTo(w * 0.492, h * 0.4787);
680	c.lineTo(w * 0.4061, h * 0.557);
681	c.close();
682	c.moveTo(w * 0.5213, h * 0.457);
683	c.lineTo(w * 0.5713, h * 0.5003);
684	c.lineTo(w * 0.6648, h * 0.4237);
685	c.lineTo(w * 0.6115, h * 0.377);
686	c.close();
687	c.moveTo(w * 0.6887, h * 0.397);
688	c.lineTo(w * 0.7702, h * 0.3303);
689	c.lineTo(w * 0.7104, h * 0.282);
690	c.lineTo(w * 0.6333, h * 0.3503);
691	c.close();
692	c.fill();
693
694	c.setStrokeWidth(2 * strokeWidth);
695	c.setStrokeColor('#292929');
696	c.setLineJoin('round');
697
698	c.begin();
699	c.moveTo(0, h * 0.6483);
700	c.lineTo(w * 0.0684, h * 0.4133);
701	c.lineTo(w * 0.5326, 0);
702	c.lineTo(w * 0.6685, 0);
703	c.lineTo(w * 0.9359, h * 0.2367);
704	c.lineTo(w, h * 0.465);
705	c.lineTo(w * 0.4, h);
706	c.close();
707	c.stroke();
708};
709
710mxCellRenderer.registerShape(mxShapeAws3dAMI.prototype.cst.AMI, mxShapeAws3dAMI);
711
712//**********************************************************************************************************************************************************
713//Snapshot
714//**********************************************************************************************************************************************************
715/**
716* Extends mxShape.
717*/
718function mxShapeAws3dSnapshot(bounds, fill, stroke, strokewidth)
719{
720	mxShape.call(this);
721	this.bounds = bounds;
722	this.fill = fill;
723	this.stroke = stroke;
724	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
725};
726
727/**
728* Extends mxShape.
729*/
730mxUtils.extend(mxShapeAws3dSnapshot, mxShape);
731
732mxShapeAws3dSnapshot.prototype.cst = {
733		SNAPSHOT : 'mxgraph.aws3d.snapshot',
734		SHADING_COLORS : 'shadingCols'
735};
736
737/**
738* Function: paintVertexShape
739*
740* Paints the vertex shape.
741*/
742mxShapeAws3dSnapshot.prototype.paintVertexShape = function(c, x, y, w, h)
743{
744	c.translate(x, y);
745
746	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
747	var strokeWidth1 = strokeWidth * w / 92;
748	var strokeWidth2 = strokeWidth * h / 60;
749	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
750
751	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
752
753	c.setStrokeWidth(strokeWidth);
754	c.setShadow(false);
755	c.save();
756	c.save();
757	c.setStrokeWidth(2 * strokeWidth);
758	c.setStrokeColor('#292929');
759	c.setLineJoin('round');
760
761	if(isShadow == 1)
762	{
763		c.setShadow(true);
764	}
765
766	c.begin();
767	c.moveTo(w, h * 0.6483);
768	c.lineTo(w * 0.9316, h * 0.4133);
769	c.lineTo(w * 0.4674, 0);
770	c.lineTo(w * 0.3315, 0);
771	c.lineTo(w * 0.0641, h * 0.2367);
772	c.lineTo(0, h * 0.465);
773	c.lineTo(w * 0.6, h);
774	c.close();
775	c.fillAndStroke();
776
777	c.restore();
778	c.setFillColor('#000000');
779
780	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSnapshot.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
781	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
782	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
783
784	c.begin();
785	c.moveTo(w, h * 0.65);
786	c.lineTo(w * 0.9348, h * 0.52);
787	c.lineTo(w * 0.6674, h * 0.7667);
788	c.lineTo(w * 0.5337, h * 0.7667);
789	c.lineTo(w * 0.6, h);
790	c.close();
791	c.fill();
792
793	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
794	c.begin();
795	c.moveTo(w * 0.6, h);
796	c.lineTo(w * 0.5359, h * 0.77);
797	c.lineTo(w * 0.0674, h * 0.355);
798	c.lineTo(w * 0.0653, h * 0.24);
799	c.lineTo(0, h * 0.4667);
800	c.close();
801	c.fill();
802
803	c.restore();
804	c.setLineJoin('round');
805
806	c.begin();
807	c.moveTo(w, h * 0.65);
808	c.lineTo(w * 0.9348, h * 0.52);
809	c.lineTo(w * 0.6674, h * 0.7667);
810	c.lineTo(w * 0.5337, h * 0.7667);
811	c.lineTo(w * 0.6, h);
812	c.close();
813	c.stroke();
814
815	c.begin();
816	c.moveTo(w * 0.6, h);
817	c.lineTo(w * 0.5359, h * 0.77);
818	c.lineTo(w * 0.0674, h * 0.355);
819	c.lineTo(w * 0.0653, h * 0.24);
820	c.lineTo(0, h * 0.4667);
821	c.close();
822	c.stroke();
823
824	c.begin();
825	c.moveTo(w * 0.9348, h * 0.42);
826	c.lineTo(w * 0.9348, h * 0.52);
827	c.moveTo(w * 0.6663, h * 0.7667);
828	c.lineTo(w * 0.6, h);
829	c.moveTo(w * 0.0652, h * 0.355);
830	c.lineTo(0, h * 0.4733);
831	c.stroke();
832
833	c.setStrokeWidth(2 * strokeWidth);
834	c.setStrokeColor('#292929');
835	c.setLineJoin('round');
836
837	c.begin();
838	c.moveTo(w, h * 0.6483);
839	c.lineTo(w * 0.9316, h * 0.4133);
840	c.lineTo(w * 0.4674, 0);
841	c.lineTo(w * 0.3315, 0);
842	c.lineTo(w * 0.0641, h * 0.2367);
843	c.lineTo(0, h * 0.465);
844	c.lineTo(w * 0.6, h);
845	c.close();
846	c.stroke();
847};
848
849mxCellRenderer.registerShape(mxShapeAws3dSnapshot.prototype.cst.SNAPSHOT, mxShapeAws3dSnapshot);
850
851//**********************************************************************************************************************************************************
852//Application
853//**********************************************************************************************************************************************************
854/**
855* Extends mxShape.
856*/
857function mxShapeAws3dApplication(bounds, fill, stroke, strokewidth)
858{
859	mxShape.call(this);
860	this.bounds = bounds;
861	this.fill = fill;
862	this.stroke = stroke;
863	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
864};
865
866/**
867* Extends mxShape.
868*/
869mxUtils.extend(mxShapeAws3dApplication, mxShape);
870
871mxShapeAws3dApplication.prototype.cst = {
872		APPLICATION : 'mxgraph.aws3d.application',
873		SHADING_COLORS : 'shadingCols'
874};
875
876/**
877* Function: paintVertexShape
878*
879* Paints the vertex shape.
880*/
881mxShapeAws3dApplication.prototype.paintVertexShape = function(c, x, y, w, h)
882{
883	c.translate(x, y);
884
885	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
886	var strokeWidth1 = strokeWidth * w / 62;
887	var strokeWidth2 = strokeWidth * h / 68.8;
888	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
889
890	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
891
892	c.setShadow(false);
893	c.setStrokeWidth(strokeWidth);
894	c.save();
895	c.save();
896	c.setStrokeWidth(2 * strokeWidth);
897	c.setStrokeColor('#292929');
898	c.setLineJoin('round');
899
900	if (isShadow == 1)
901	{
902		c.setShadow(true);
903	}
904
905	c.begin();
906	c.moveTo(0, h * 0.2544);
907	c.lineTo(w * 0.5, 0);
908	c.lineTo(w, h * 0.2544);
909	c.lineTo(w, h * 0.7485);
910	c.lineTo(w * 0.5, h);
911	c.lineTo(0, h * 0.7485);
912	c.close();
913	c.fillAndStroke();
914
915	c.restore();
916	c.setFillColor('#000000');
917	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dApplication.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
918	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
919	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
920
921	c.begin();
922	c.moveTo(0, h * 0.2544);
923	c.lineTo(w * 0.5, h * 0.5015);
924	c.lineTo(w * 0.5, h);
925	c.lineTo(0, h * 0.7485);
926	c.close();
927	c.fill();
928
929	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
930	c.begin();
931	c.moveTo(w * 0.5, h * 0.5015);
932	c.lineTo(w, h * 0.2544);
933	c.lineTo(w, h * 0.7485);
934	c.lineTo(w * 0.5, h);
935	c.close();
936	c.fill();
937
938	c.restore();
939	c.setLineJoin('round');
940
941	c.begin();
942	c.moveTo(0, h * 0.2544);
943	c.lineTo(w * 0.5, h * 0.5015);
944	c.lineTo(w * 0.5, h);
945	c.lineTo(0, h * 0.7485);
946	c.close();
947	c.stroke();
948
949	c.begin();
950	c.moveTo(w * 0.5, h * 0.5015);
951	c.lineTo(w, h * 0.2544);
952	c.lineTo(w, h * 0.7485);
953	c.lineTo(w * 0.5, h);
954	c.close();
955	c.stroke();
956
957	c.setLineJoin('miter');
958	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
959	c.setFillColor(strokeColor);
960	c.begin();
961	c.moveTo(w * 0.6694, h * 0.0872);
962	c.lineTo(w * 0.7629, h * 0.1337);
963	c.lineTo(w * 0.2661, h * 0.3882);
964	c.lineTo(w * 0.2661, h * 0.5407);
965	c.lineTo(w * 0.1742, h * 0.4953);
966	c.lineTo(w * 0.1742, h * 0.3459);
967	c.close();
968	c.moveTo(w * 0.8629, h * 0.1846);
969	c.lineTo(w * 0.379, h * 0.4331);
970	c.lineTo(w * 0.379, h * 0.5945);
971	c.lineTo(w * 0.2855, h * 0.5494);
972	c.lineTo(w * 0.2855, h * 0.3953);
973	c.lineTo(w * 0.7839, h * 0.1439);
974	c.close();
975	c.fill();
976
977	c.setStrokeWidth(2 * strokeWidth);
978	c.setStrokeColor('#292929');
979	c.setLineJoin('round');
980
981	c.begin();
982	c.moveTo(0, h * 0.2544);
983	c.lineTo(w * 0.5, 0);
984	c.lineTo(w, h * 0.2544);
985	c.lineTo(w, h * 0.7485);
986	c.lineTo(w * 0.5, h);
987	c.lineTo(0, h * 0.7485);
988	c.close();
989	c.stroke();
990};
991
992mxCellRenderer.registerShape(mxShapeAws3dApplication.prototype.cst.APPLICATION, mxShapeAws3dApplication);
993
994//**********************************************************************************************************************************************************
995//Application Server
996//**********************************************************************************************************************************************************
997/**
998* Extends mxShape.
999*/
1000function mxShapeAws3dApplicationServer(bounds, fill, stroke, strokewidth)
1001{
1002	mxShape.call(this);
1003	this.bounds = bounds;
1004	this.fill = fill;
1005	this.stroke = stroke;
1006	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
1007};
1008
1009/**
1010* Extends mxShape.
1011*/
1012mxUtils.extend(mxShapeAws3dApplicationServer, mxShape);
1013
1014mxShapeAws3dApplicationServer.prototype.cst = {
1015		APPLICATION_SERVER : 'mxgraph.aws3d.application_server',
1016		SHADING_COLORS : 'shadingCols'
1017};
1018
1019/**
1020* Function: paintVertexShape
1021*
1022* Paints the vertex shape.
1023*/
1024mxShapeAws3dApplicationServer.prototype.paintVertexShape = function(c, x, y, w, h)
1025{
1026	c.translate(x, y);
1027
1028	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
1029	var strokeWidth1 = strokeWidth * w / 123;
1030	var strokeWidth2 = strokeWidth * h / 124;
1031
1032	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
1033
1034	this.background(c, 0, 0, w, h, strokeWidth);
1035	c.setShadow(false);
1036	this.foreground(c, 0, 0, w, h, strokeWidth);
1037};
1038
1039mxShapeAws3dApplicationServer.prototype.background = function(c, x, y, w, h, strokeWidth)
1040{
1041	c.setStrokeWidth(strokeWidth);
1042	c.save();
1043	c.save();
1044	c.setStrokeWidth(2 * strokeWidth);
1045	c.setStrokeColor('#292929');
1046	c.setLineJoin('round');
1047
1048	c.begin();
1049	c.moveTo(0, h * 0.7236);
1050	c.lineTo(0, h * 0.2863);
1051	c.lineTo(w * 0.5, 0);
1052	c.lineTo(w, h * 0.2863);
1053	c.lineTo(w, h * 0.7236);
1054	c.lineTo(w * 0.5, h);
1055	c.close();
1056	c.fillAndStroke();
1057};
1058
1059mxShapeAws3dApplicationServer.prototype.foreground = function(c, x, y, w, h, strokeWidth)
1060{
1061	c.restore();
1062	c.setShadow(false);
1063	c.setFillColor('#000000');
1064	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dApplicationServer.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
1065	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
1066	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
1067
1068	c.begin();
1069	c.moveTo(0, h * 0.2863);
1070	c.lineTo(w * 0.5, h * 0.5726);
1071	c.lineTo(w * 0.5, h);
1072	c.lineTo(0, h * 0.7177);
1073	c.close();
1074	c.fill();
1075
1076	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
1077	c.begin();
1078	c.moveTo(w, h * 0.2863);
1079	c.lineTo(w * 0.5, h * 0.5726);
1080	c.lineTo(w * 0.5, h);
1081	c.lineTo(w, h * 0.7177);
1082	c.close();
1083	c.fill();
1084
1085	c.restore();
1086	c.setShadow(false);
1087	c.setLineJoin('round');
1088
1089	c.begin();
1090	c.moveTo(0, h * 0.2863);
1091	c.lineTo(w * 0.5, h * 0.5726);
1092	c.lineTo(w * 0.5, h);
1093	c.lineTo(0, h * 0.7177);
1094	c.close();
1095	c.stroke();
1096
1097	c.begin();
1098	c.moveTo(w, h * 0.2863);
1099	c.lineTo(w * 0.5, h * 0.5726);
1100	c.lineTo(w * 0.5, h);
1101	c.lineTo(w, h * 0.7177);
1102	c.close();
1103	c.stroke();
1104
1105	c.setLineJoin('miter');
1106	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
1107	c.setFillColor(strokeColor);
1108	c.begin();
1109	c.moveTo(w * 0.374, h * 0.4435);
1110	c.arcTo(w * 0.0325, h * 0.0202, 0, 0, 1, w * 0.374, h * 0.4153);
1111	c.lineTo(w * 0.4797, h * 0.3548);
1112	c.arcTo(w * 0.0325, h * 0.0161, 0, 0, 1, w * 0.5203, h * 0.3548);
1113	c.lineTo(w * 0.626, h * 0.4153);
1114	c.arcTo(w * 0.0325, h * 0.0202, 0, 0, 1, w * 0.626, h * 0.4411);
1115	c.lineTo(w * 0.5203, h * 0.5016);
1116	c.arcTo(w * 0.0325, h * 0.0161, 0, 0, 1, w * 0.4797, h * 0.5016);
1117	c.close();
1118	c.fill();
1119
1120	c.setStrokeWidth(2 * strokeWidth);
1121	c.setStrokeColor('#292929');
1122	c.setLineJoin('round');
1123
1124	c.begin();
1125	c.moveTo(0, h * 0.7236);
1126	c.lineTo(0, h * 0.2863);
1127	c.lineTo(w * 0.5, 0);
1128	c.lineTo(w, h * 0.2863);
1129	c.lineTo(w, h * 0.7236);
1130	c.lineTo(w * 0.5, h);
1131	c.close();
1132	c.stroke();
1133};
1134
1135mxCellRenderer.registerShape(mxShapeAws3dApplicationServer.prototype.cst.APPLICATION_SERVER, mxShapeAws3dApplicationServer);
1136
1137//**********************************************************************************************************************************************************
1138//CloudFront
1139//**********************************************************************************************************************************************************
1140/**
1141* Extends mxShape.
1142*/
1143function mxShapeAws3dCloudFront(bounds, fill, stroke, strokewidth)
1144{
1145	mxShape.call(this);
1146	this.bounds = bounds;
1147	this.fill = fill;
1148	this.stroke = stroke;
1149	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
1150};
1151
1152/**
1153* Extends mxShape.
1154*/
1155mxUtils.extend(mxShapeAws3dCloudFront, mxShape);
1156
1157mxShapeAws3dCloudFront.prototype.cst = {
1158		CLOUDFRONT : 'mxgraph.aws3d.cloudfront',
1159		SHADING_COLORS : 'shadingCols'
1160};
1161
1162/**
1163* Function: paintVertexShape
1164*
1165* Paints the vertex shape.
1166*/
1167mxShapeAws3dCloudFront.prototype.paintVertexShape = function(c, x, y, w, h)
1168{
1169	c.translate(x, y);
1170
1171	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
1172	var strokeWidth1 = strokeWidth * w / 103.8;
1173	var strokeWidth2 = strokeWidth * h / 169.8;
1174	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
1175
1176	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
1177
1178	c.setShadow(false);
1179	c.setStrokeWidth(strokeWidth);
1180	c.save();
1181	c.save();
1182	c.setStrokeWidth(2 * strokeWidth);
1183	c.setStrokeColor('#292929');
1184	c.setLineJoin('round');
1185
1186	if (isShadow == 1)
1187	{
1188		c.setShadow(true);
1189	}
1190
1191	c.begin();
1192	c.moveTo(0, h * 0.7915);
1193	c.lineTo(0, h * 0.7491);
1194	c.lineTo(w * 0.0588, h * 0.7279);
1195	c.lineTo(w * 0.0588, h * 0.1036);
1196	c.lineTo(w * 0.3526, 0);
1197	c.lineTo(w * 0.9422, h * 0.2073);
1198	c.lineTo(w * 0.9422, h * 0.8316);
1199	c.lineTo(w, h * 0.8539);
1200	c.lineTo(w, h * 0.894);
1201	c.lineTo(w * 0.7013, h);
1202	c.lineTo(w * 0.5877, h);
1203	c.close();
1204	c.fillAndStroke();
1205
1206	c.restore();
1207	c.setFillColor('#000000');
1208	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dCloudFront.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
1209	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
1210	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
1211
1212	c.begin();
1213	c.moveTo(w * 0.0588, h * 0.106);
1214	c.lineTo(w * 0.6474, h * 0.3121);
1215	c.lineTo(w * 0.6474, h * 0.9352);
1216	c.lineTo(w * 0.7052, h);
1217	c.lineTo(w * 0.5915, h);
1218	c.lineTo(0, h * 0.7915);
1219	c.lineTo(0, h * 0.7491);
1220	c.lineTo(w * 0.0588, h * 0.7279);
1221	c.close();
1222	c.fill();
1223
1224	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
1225	c.begin();
1226	c.moveTo(w * 0.6474, h * 0.3121);
1227	c.lineTo(w * 0.9422, h * 0.2073);
1228	c.lineTo(w * 0.9422, h * 0.8363);
1229	c.lineTo(w, h * 0.8539);
1230	c.lineTo(w, h * 0.894);
1231	c.lineTo(w * 0.7013, h);
1232	c.lineTo(w * 0.6474, h * 0.9305);
1233	c.close();
1234	c.fill();
1235
1236	c.restore();
1237	c.setLineJoin('round');
1238	c.begin();
1239	c.moveTo(0, h * 0.7915);
1240	c.lineTo(w * 0.0559, h * 0.7291);
1241	c.lineTo(w * 0.6474, h * 0.9364);
1242	c.lineTo(w * 0.5896, h);
1243	c.moveTo(w * 0.6493, h * 0.9364);
1244	c.lineTo(w * 0.9412, h * 0.8333);
1245	c.lineTo(w, h * 0.894);
1246	c.stroke();
1247
1248	c.begin();
1249	c.moveTo(w * 0.0588, h * 0.106);
1250	c.lineTo(w * 0.6474, h * 0.3121);
1251	c.lineTo(w * 0.6474, h * 0.9352);
1252	c.lineTo(w * 0.7052, h);
1253	c.lineTo(w * 0.5915, h);
1254	c.lineTo(0, h * 0.7915);
1255	c.lineTo(0, h * 0.7491);
1256	c.lineTo(w * 0.0588, h * 0.7279);
1257	c.close();
1258	c.stroke();
1259
1260	c.begin();
1261	c.moveTo(w * 0.6474, h * 0.3121);
1262	c.lineTo(w * 0.9422, h * 0.2073);
1263	c.lineTo(w * 0.9422, h * 0.8363);
1264	c.lineTo(w, h * 0.8539);
1265	c.lineTo(w, h * 0.894);
1266	c.lineTo(w * 0.7013, h);
1267	c.lineTo(w * 0.6474, h * 0.9305);
1268	c.close();
1269	c.stroke();
1270
1271	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
1272	c.setFillColor(strokeColor);
1273
1274	c.begin();
1275	c.moveTo(w * 0.3333, h * 0.6643);
1276	c.arcTo(w * 0.3372, h * 0.2061, 0, 0, 1, w * 0.2351, h * 0.6042);
1277	c.arcTo(w * 0.4528, h * 0.2768, 0, 0, 1, w * 0.1724, h * 0.523);
1278	c.lineTo(w * 0.2428, h * 0.5677);
1279	c.lineTo(w * 0.2427, h * 0.5895);
1280	c.lineTo(w * 0.2765, h * 0.5995);
1281	c.close();
1282	c.moveTo(w * 0.1599, h * 0.4935);
1283	c.arcTo(w * 0.3372, h * 0.2061, 0, 0, 1, w * 0.1522, h * 0.4146);
1284	c.arcTo(w * 0.1156, h * 0.0883, 0, 0, 1, w * 0.2071, h * 0.3486);
1285	c.lineTo(w * 0.2013, h * 0.4187);
1286	c.lineTo(w * 0.1859, h * 0.4146);
1287	c.lineTo(w * 0.1859, h * 0.4464);
1288	c.lineTo(w * 0.1907, h * 0.4493);
1289	c.close();
1290	c.moveTo(w * 0.2235, h * 0.3445);
1291	c.arcTo(w * 0.1927, h * 0.1767, 0, 0, 1, w * 0.368, h * 0.361);
1292	c.arcTo(w * 0.3854, h * 0.2356, 0, 0, 1, w * 0.468, h * 0.4299);
1293	c.lineTo(w * 0.368, h * 0.4034);
1294	c.lineTo(w * 0.368, h * 0.394);
1295	c.lineTo(w * 0.3256, h * 0.3799);
1296	c.lineTo(w * 0.3256, h * 0.3887);
1297	c.close();
1298	c.moveTo(w * 0.4855, h * 0.4499);
1299	c.arcTo(w * 0.3854, h * 0.2356, 0, 0, 1, w * 0.5337, h * 0.5395);
1300	c.arcTo(w * 0.3854, h * 0.2356, 0, 0, 1, w * 0.5328, h * 0.6302);
1301	c.lineTo(w * 0.4952, h * 0.5589);
1302	c.lineTo(w * 0.5019, h * 0.5595);
1303	c.lineTo(w * 0.5019, h * 0.5265);
1304	c.lineTo(w * 0.4855, h * 0.5194);
1305	c.close();
1306	c.moveTo(w * 0.5241, h * 0.6455);
1307	c.arcTo(w * 0.0963, h * 0.0589, 0, 0, 1, w * 0.4663, h * 0.682);
1308	c.arcTo(w * 0.1445, h * 0.0883, 0, 0, 1, w * 0.3642, h * 0.6761);
1309	c.lineTo(w * 0.4239, h * 0.6525);
1310	c.lineTo(w * 0.4566, h * 0.6643);
1311	c.lineTo(w * 0.4566, h * 0.6413);
1312	c.close();
1313	c.moveTo(w * 0.3507, h * 0.6667);
1314	c.lineTo(w * 0.2871, h * 0.5919);
1315	c.lineTo(w * 0.4123, h * 0.6366);
1316	c.close();
1317	c.moveTo(w * 0.2563, h * 0.5595);
1318	c.lineTo(w * 0.1753, h * 0.5088);
1319	c.lineTo(w * 0.2052, h * 0.4594);
1320	c.close();
1321	c.moveTo(w * 0.2139, h * 0.4229);
1322	c.lineTo(w * 0.2197, h * 0.3528);
1323	c.lineTo(w * 0.3256, h * 0.4028);
1324	c.lineTo(w * 0.2283, h * 0.4252);
1325	c.close();
1326	c.moveTo(w * 0.2264, h * 0.4417);
1327	c.lineTo(w * 0.3218, h * 0.4146);
1328	c.lineTo(w * 0.3353, h * 0.4181);
1329	c.lineTo(w * 0.3353, h * 0.4971);
1330	c.lineTo(w * 0.3208, h * 0.4912);
1331	c.lineTo(w * 0.3208, h * 0.4965);
1332	c.lineTo(w * 0.2264, h * 0.4482);
1333	c.close();
1334	c.moveTo(w * 0.2697, h * 0.5618);
1335	c.lineTo(w * 0.2245, h * 0.4635);
1336	c.lineTo(w * 0.2331, h * 0.4588);
1337	c.lineTo(w * 0.3256, h * 0.5112);
1338	c.lineTo(w * 0.3237, h * 0.5241);
1339	c.close();
1340	c.moveTo(w * 0.2852, h * 0.576);
1341	c.lineTo(w * 0.2852, h * 0.5654);
1342	c.lineTo(w * 0.3391, h * 0.53);
1343	c.lineTo(w * 0.3516, h * 0.5347);
1344	c.lineTo(w * 0.4133, h * 0.6213);
1345	c.close();
1346	c.moveTo(w * 0.368, h * 0.5141);
1347	c.lineTo(w * 0.368, h * 0.5088);
1348	c.lineTo(w * 0.3526, h * 0.5029);
1349	c.lineTo(w * 0.3526, h * 0.4234);
1350	c.lineTo(w * 0.3622, h * 0.4276);
1351	c.lineTo(w * 0.4547, h * 0.5177);
1352	c.lineTo(w * 0.4557, h * 0.5277);
1353	c.close();
1354	c.moveTo(w * 0.3671, h * 0.417);
1355	c.lineTo(w * 0.4692, h * 0.4411);
1356	c.lineTo(w * 0.4721, h * 0.52);
1357	c.close();
1358	c.moveTo(w * 0.368, h * 0.5253);
1359	c.lineTo(w * 0.4566, h * 0.5359);
1360	c.lineTo(w * 0.4566, h * 0.5453);
1361	c.lineTo(w * 0.4663, h * 0.5465);
1362	c.lineTo(w * 0.4335, h * 0.6201);
1363	c.lineTo(w * 0.422, h * 0.616);
1364	c.lineTo(w * 0.368, h * 0.5389);
1365	c.close();
1366	c.moveTo(w * 0.4798, h * 0.5583);
1367	c.lineTo(w * 0.5183, h * 0.629);
1368	c.lineTo(w * 0.4557, h * 0.6313);
1369	c.lineTo(w * 0.4557, h * 0.6237);
1370	c.lineTo(w * 0.447, h * 0.6225);
1371	c.close();
1372	c.fill();
1373
1374	c.setStrokeWidth(2 * strokeWidth);
1375	c.setStrokeColor('#292929');
1376	c.setLineJoin('round');
1377
1378	c.begin();
1379	c.moveTo(0, h * 0.7915);
1380	c.lineTo(0, h * 0.7491);
1381	c.lineTo(w * 0.0588, h * 0.7279);
1382	c.lineTo(w * 0.0588, h * 0.1036);
1383	c.lineTo(w * 0.3526, 0);
1384	c.lineTo(w * 0.9422, h * 0.2073);
1385	c.lineTo(w * 0.9422, h * 0.8316);
1386	c.lineTo(w, h * 0.8539);
1387	c.lineTo(w, h * 0.894);
1388	c.lineTo(w * 0.7013, h);
1389	c.lineTo(w * 0.5877, h);
1390	c.close();
1391	c.stroke();
1392};
1393
1394mxCellRenderer.registerShape(mxShapeAws3dCloudFront.prototype.cst.CLOUDFRONT, mxShapeAws3dCloudFront);
1395
1396//**********************************************************************************************************************************************************
1397//Data Center
1398//**********************************************************************************************************************************************************
1399/**
1400* Extends mxShape.
1401*/
1402function mxShapeAws3dDataCenter(bounds, fill, stroke, strokewidth)
1403{
1404	mxShape.call(this);
1405	this.bounds = bounds;
1406	this.fill = fill;
1407	this.stroke = stroke;
1408	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
1409};
1410
1411/**
1412* Extends mxShape.
1413*/
1414mxUtils.extend(mxShapeAws3dDataCenter, mxShape);
1415
1416mxShapeAws3dDataCenter.prototype.cst = {
1417		DATA_CENTER : 'mxgraph.aws3d.dataCenter',
1418		SHADING_COLORS : 'shadingCols'
1419};
1420
1421/**
1422* Function: paintVertexShape
1423*
1424* Paints the vertex shape.
1425*/
1426mxShapeAws3dDataCenter.prototype.paintVertexShape = function(c, x, y, w, h)
1427{
1428	c.translate(x, y);
1429
1430	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
1431	var strokeWidth1 = strokeWidth * w / 123;
1432	var strokeWidth2 = strokeWidth * h / 142;
1433	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
1434
1435	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
1436
1437	c.setShadow(false);
1438	c.setStrokeWidth(strokeWidth);
1439	c.save();
1440	c.save();
1441	c.setStrokeWidth(2 * strokeWidth);
1442	c.setStrokeColor('#292929');
1443	c.setLineJoin('round');
1444
1445	if (isShadow == 1)
1446	{
1447		c.setShadow(true);
1448	}
1449
1450	c.begin();
1451	c.moveTo(0, h * 0.7465);
1452	c.lineTo(0, h * 0.25);
1453	c.lineTo(w * 0.5, 0);
1454	c.lineTo(w, h * 0.25);
1455	c.lineTo(w, h * 0.7465);
1456	c.lineTo(w * 0.5, h);
1457	c.close();
1458	c.fillAndStroke();
1459
1460	c.restore();
1461	c.setFillColor('#000000');
1462	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDataCenter.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
1463	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
1464	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
1465
1466	c.begin();
1467	c.moveTo(0, h * 0.7465);
1468	c.lineTo(0, h * 0.25);
1469	c.lineTo(w * 0.5, h * 0.5);
1470	c.lineTo(w * 0.5, h);
1471	c.close();
1472	c.fill();
1473
1474	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
1475	c.begin();
1476	c.moveTo(w, h * 0.7465);
1477	c.lineTo(w, h * 0.25);
1478	c.lineTo(w * 0.5, h * 0.5);
1479	c.lineTo(w * 0.5, h);
1480	c.close();
1481	c.fill();
1482
1483	c.restore();
1484	c.setLineJoin('round');
1485	c.begin();
1486	c.moveTo(0, h * 0.7465);
1487	c.lineTo(0, h * 0.25);
1488	c.lineTo(w * 0.5, h * 0.5);
1489	c.lineTo(w * 0.5, h);
1490	c.close();
1491	c.stroke();
1492
1493	c.begin();
1494	c.moveTo(w, h * 0.7465);
1495	c.lineTo(w, h * 0.25);
1496	c.lineTo(w * 0.5, h * 0.5);
1497	c.lineTo(w * 0.5, h);
1498	c.close();
1499	c.stroke();
1500
1501	c.setLineCap('round');
1502	c.setStrokeWidth(3 * strokeWidth);
1503
1504	c.begin();
1505	c.moveTo(w * 0.0894, h * 0.3838);
1506	c.lineTo(w * 0.4187, h * 0.5493);
1507	c.moveTo(w * 0.0894, h * 0.4331);
1508	c.lineTo(w * 0.4187, h * 0.5986);
1509	c.moveTo(w * 0.0894, h * 0.4824);
1510	c.lineTo(w * 0.4187, h * 0.6479);
1511	c.moveTo(w * 0.5854, h * 0.5493);
1512	c.lineTo(w * 0.9146, h * 0.3838);
1513	c.moveTo(w * 0.5854, h * 0.5986);
1514	c.lineTo(w * 0.9146, h * 0.4331);
1515	c.moveTo(w * 0.5854, h * 0.6479);
1516	c.lineTo(w * 0.9146, h * 0.4824);
1517	c.stroke();
1518
1519	c.setStrokeWidth(2 * strokeWidth);
1520	c.setStrokeColor('#292929');
1521	c.setLineJoin('round');
1522
1523	c.begin();
1524	c.moveTo(0, h * 0.7465);
1525	c.lineTo(0, h * 0.25);
1526	c.lineTo(w * 0.5, 0);
1527	c.lineTo(w, h * 0.25);
1528	c.lineTo(w, h * 0.7465);
1529	c.lineTo(w * 0.5, h);
1530	c.close();
1531	c.stroke();
1532};
1533
1534mxCellRenderer.registerShape(mxShapeAws3dDataCenter.prototype.cst.DATA_CENTER, mxShapeAws3dDataCenter);
1535
1536//**********************************************************************************************************************************************************
1537//Data Server
1538//**********************************************************************************************************************************************************
1539/**
1540* Extends mxShape.
1541*/
1542function mxShapeAws3dDataServer(bounds, fill, stroke, strokewidth)
1543{
1544	mxShape.call(this);
1545	this.bounds = bounds;
1546	this.fill = fill;
1547	this.stroke = stroke;
1548	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
1549};
1550
1551/**
1552* Extends mxShape.
1553*/
1554mxUtils.extend(mxShapeAws3dDataServer, mxShape);
1555
1556mxShapeAws3dDataServer.prototype.cst = {
1557		DATA_SERVER : 'mxgraph.aws3d.dataServer',
1558		SHADING_COLORS : 'shadingCols'
1559};
1560
1561/**
1562* Function: paintVertexShape
1563*
1564* Paints the vertex shape.
1565*/
1566mxShapeAws3dDataServer.prototype.paintVertexShape = function(c, x, y, w, h)
1567{
1568	c.translate(x, y);
1569
1570	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
1571	var strokeWidth1 = strokeWidth * w / 123;
1572	var strokeWidth2 = strokeWidth * h / 106;
1573	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
1574
1575	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
1576
1577	c.setShadow(false);
1578	c.setStrokeWidth(strokeWidth);
1579	c.save();
1580	c.save();
1581	c.setStrokeWidth(2 * strokeWidth);
1582	c.setStrokeColor('#292929');
1583	c.setLineJoin('round');
1584
1585	if (isShadow == 1)
1586	{
1587		c.setShadow(true);
1588	}
1589
1590	c.begin();
1591	c.moveTo(0, h * 0.6651);
1592	c.lineTo(0, h * 0.3349);
1593	c.lineTo(w * 0.5, 0);
1594	c.lineTo(w, h * 0.3349);
1595	c.lineTo(w, h * 0.6651);
1596	c.lineTo(w * 0.5, h);
1597	c.close();
1598	c.fillAndStroke();
1599
1600	c.restore();
1601	c.setFillColor('#000000');
1602	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDataServer.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
1603	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
1604	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
1605
1606	c.begin();
1607	c.moveTo(0, h * 0.6651);
1608	c.lineTo(0, h * 0.3349);
1609	c.lineTo(w * 0.5, h * 0.6698);
1610	c.lineTo(w * 0.5, h);
1611	c.close();
1612	c.fill();
1613
1614	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
1615	c.begin();
1616	c.moveTo(w, h * 0.6651);
1617	c.lineTo(w, h * 0.3349);
1618	c.lineTo(w * 0.5, h * 0.6698);
1619	c.lineTo(w * 0.5, h);
1620	c.close();
1621	c.fill();
1622
1623	c.restore();
1624	c.setLineJoin('round');
1625	c.begin();
1626	c.moveTo(0, h * 0.6651);
1627	c.lineTo(0, h * 0.3349);
1628	c.lineTo(w * 0.5, h * 0.6698);
1629	c.lineTo(w * 0.5, h);
1630	c.close();
1631	c.stroke();
1632
1633	c.begin();
1634	c.moveTo(w, h * 0.6651);
1635	c.lineTo(w, h * 0.3349);
1636	c.lineTo(w * 0.5, h * 0.6698);
1637	c.lineTo(w * 0.5, h);
1638	c.close();
1639	c.stroke();
1640
1641	c.setLineCap('round');
1642	c.setStrokeWidth(3 * strokeWidth);
1643
1644	c.begin();
1645	c.moveTo(w * 0.0878, h * 0.4858);
1646	c.lineTo(w * 0.4187, h * 0.7094);
1647	c.moveTo(w * 0.587, h * 0.7094);
1648	c.lineTo(w * 0.9187, h * 0.4858);
1649	c.stroke();
1650
1651	c.setStrokeWidth(2 * strokeWidth);
1652	c.setStrokeColor('#292929');
1653	c.setLineJoin('round');
1654
1655	c.begin();
1656	c.moveTo(0, h * 0.6651);
1657	c.lineTo(0, h * 0.3349);
1658	c.lineTo(w * 0.5, 0);
1659	c.lineTo(w, h * 0.3349);
1660	c.lineTo(w, h * 0.6651);
1661	c.lineTo(w * 0.5, h);
1662	c.close();
1663	c.stroke();
1664};
1665
1666mxCellRenderer.registerShape(mxShapeAws3dDataServer.prototype.cst.DATA_SERVER, mxShapeAws3dDataServer);
1667
1668//**********************************************************************************************************************************************************
1669//Elastic Load Balancing
1670//**********************************************************************************************************************************************************
1671/**
1672* Extends mxShape.
1673*/
1674function mxShapeAws3dElasticLoadBalancing(bounds, fill, stroke, strokewidth)
1675{
1676	mxShape.call(this);
1677	this.bounds = bounds;
1678	this.fill = fill;
1679	this.stroke = stroke;
1680	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
1681};
1682
1683/**
1684* Extends mxShape.
1685*/
1686mxUtils.extend(mxShapeAws3dElasticLoadBalancing, mxShape);
1687
1688mxShapeAws3dElasticLoadBalancing.prototype.cst = {
1689		ELASTIC_LOAD_BALANCING : 'mxgraph.aws3d.elasticLoadBalancing',
1690		SHADING_COLORS : 'shadingCols'
1691};
1692
1693/**
1694* Function: paintVertexShape
1695*
1696* Paints the vertex shape.
1697*/
1698mxShapeAws3dElasticLoadBalancing.prototype.paintVertexShape = function(c, x, y, w, h)
1699{
1700	c.translate(x, y);
1701
1702	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
1703	var strokeWidth1 = strokeWidth * w / 92;
1704	var strokeWidth2 = strokeWidth * h / 88.17;
1705	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
1706	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
1707
1708	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
1709
1710	c.setShadow(false);
1711	c.setStrokeWidth(strokeWidth);
1712	c.save();
1713	c.save();
1714	c.save();
1715	c.save();
1716	c.setStrokeWidth(2 * strokeWidth);
1717	c.setStrokeColor('#292929');
1718	c.setLineJoin('round');
1719
1720	if (isShadow == 1)
1721	{
1722		c.setShadow(true);
1723	}
1724
1725	c.begin();
1726	c.moveTo(0, h * 0.7996);
1727	c.lineTo(0, h * 0.1985);
1728	c.lineTo(w * 0.3315, 0);
1729	c.lineTo(w * 0.6685, 0);
1730	c.lineTo(w, h * 0.1985);
1731	c.lineTo(w, h * 0.7996);
1732	c.lineTo(w * 0.6685, h);
1733	c.lineTo(w * 0.3315, h);
1734	c.close();
1735	c.fillAndStroke();
1736
1737	c.restore();
1738	c.setFillColor('#000000');
1739	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dElasticLoadBalancing.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
1740	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
1741	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
1742
1743	c.begin();
1744	c.moveTo(0, h * 0.4026);
1745	c.lineTo(w * 0.3315, h * 0.6011);
1746	c.lineTo(w * 0.6685, h * 0.6011);
1747	c.lineTo(w * 0.6685, h);
1748	c.lineTo(w * 0.3315, h);
1749	c.lineTo(0, h * 0.7996);
1750	c.close();
1751	c.fill();
1752
1753	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
1754	c.begin();
1755	c.moveTo(w * 0.6685, h * 0.6011);
1756	c.lineTo(w, h * 0.4026);
1757	c.lineTo(w, h * 0.7996);
1758	c.lineTo(w * 0.6685, h);
1759	c.close();
1760	c.fill();
1761
1762	c.restore();
1763	c.setLineJoin('round');
1764	c.begin();
1765	c.moveTo(0, h * 0.4026);
1766	c.lineTo(w * 0.3315, h * 0.6011);
1767	c.lineTo(w * 0.6685, h * 0.6011);
1768	c.lineTo(w * 0.6685, h);
1769	c.lineTo(w * 0.3315, h);
1770	c.lineTo(0, h * 0.7996);
1771	c.close();
1772	c.stroke();
1773
1774	c.begin();
1775	c.moveTo(w * 0.6685, h * 0.6011);
1776	c.lineTo(w, h * 0.4026);
1777	c.lineTo(w, h * 0.7996);
1778	c.lineTo(w * 0.6685, h);
1779	c.close();
1780	c.moveTo(w * 0.3315, h * 0.6011);
1781	c.lineTo(w * 0.3315, h);
1782	c.stroke();
1783
1784	c.restore();
1785	c.setFillColor(strokeColor);
1786	c.begin();
1787	c.moveTo(w * 0.337, h * 0.1395);
1788	c.arcTo(w * 0.3043, h * 0.1928, 0, 0, 1, w * 0.5, h * 0.1191);
1789	c.arcTo(w * 0.3043, h * 0.1928, 0, 0, 1, w * 0.6739, h * 0.1645);
1790	c.arcTo(w * 0.3261, h * 0.2155, 0, 0, 1, w * 0.8152, h * 0.3176);
1791	c.arcTo(w * 0.3261, h * 0.1701, 0, 0, 1, w * 0.75, h * 0.4367);
1792	c.arcTo(w * 0.3261, h * 0.3403, 0, 0, 1, w * 0.6033, h * 0.4854);
1793	c.arcTo(w * 0.3261, h * 0.2268, 0, 0, 1, w * 0.4348, h * 0.4741);
1794	c.arcTo(w * 0.3261, h * 0.2268, 0, 0, 1, w * 0.2848, h * 0.4094);
1795	c.arcTo(w * 0.3261, h * 0.2268, 0, 0, 1, w * 0.2065, h * 0.3062);
1796	c.arcTo(w * 0.3261, h * 0.1701, 0, 0, 1, w * 0.2446, h * 0.1928);
1797	c.arcTo(w * 0.2717, h * 0.1701, 0, 0, 1, w * 0.337, h * 0.1395);
1798	c.fill();
1799
1800	c.restore();
1801	c.begin();
1802	c.moveTo(w * 0.2826, h * 0.372);
1803	c.lineTo(w * 0.362, h * 0.3232);
1804	c.lineTo(w * 0.4054, h * 0.3482);
1805	c.lineTo(w * 0.4457, h * 0.2654);
1806	c.lineTo(w * 0.4185, h * 0.2643);
1807	c.lineTo(w * 0.4728, h * 0.2132);
1808	c.lineTo(w * 0.4348, h * 0.1928);
1809	c.lineTo(w * 0.5141, h * 0.144);
1810	c.lineTo(w * 0.5837, h * 0.1883);
1811	c.lineTo(w * 0.5043, h * 0.2348);
1812	c.lineTo(w * 0.4848, h * 0.2223);
1813	c.lineTo(w * 0.4967, h * 0.2688);
1814	c.lineTo(w * 0.463, h * 0.2665);
1815	c.lineTo(w * 0.4304, h * 0.3346);
1816	c.lineTo(w * 0.4946, h * 0.2949);
1817	c.lineTo(w * 0.4761, h * 0.2858);
1818	c.lineTo(w * 0.5511, h * 0.2631);
1819	c.lineTo(w * 0.5261, h * 0.2472);
1820	c.lineTo(w * 0.6043, h * 0.1996);
1821	c.lineTo(w * 0.6761, h * 0.2404);
1822	c.lineTo(w * 0.5978, h * 0.2892);
1823	c.lineTo(w * 0.5652, h * 0.2699);
1824	c.lineTo(w * 0.5293, h * 0.3198);
1825	c.lineTo(w * 0.5087, h * 0.3051);
1826	c.lineTo(w * 0.4543, h * 0.3391);
1827	c.lineTo(w * 0.563, h * 0.3221);
1828	c.lineTo(w * 0.5598, h * 0.3017);
1829	c.lineTo(w * 0.6326, h * 0.3096);
1830	c.lineTo(w * 0.6163, h * 0.2994);
1831	c.lineTo(w * 0.6957, h * 0.2529);
1832	c.lineTo(w * 0.7674, h * 0.2938);
1833	c.lineTo(w * 0.687, h * 0.3425);
1834	c.lineTo(w * 0.6489, h * 0.321);
1835	c.lineTo(w * 0.5707, h * 0.3539);
1836	c.lineTo(w * 0.5674, h * 0.3369);
1837	c.lineTo(w * 0.4293, h * 0.3618);
1838	c.lineTo(w * 0.4641, h * 0.3834);
1839	c.lineTo(w * 0.3859, h * 0.4299);
1840	c.close();
1841	c.fill();
1842
1843	c.setStrokeWidth(2 * strokeWidth);
1844	c.setStrokeColor('#292929');
1845	c.setLineJoin('round');
1846
1847	c.begin();
1848	c.moveTo(0, h * 0.7996);
1849	c.lineTo(0, h * 0.1985);
1850	c.lineTo(w * 0.3315, 0);
1851	c.lineTo(w * 0.6685, 0);
1852	c.lineTo(w, h * 0.1985);
1853	c.lineTo(w, h * 0.7996);
1854	c.lineTo(w * 0.6685, h);
1855	c.lineTo(w * 0.3315, h);
1856	c.close();
1857	c.stroke();
1858};
1859
1860mxCellRenderer.registerShape(mxShapeAws3dElasticLoadBalancing.prototype.cst.ELASTIC_LOAD_BALANCING, mxShapeAws3dElasticLoadBalancing);
1861
1862//**********************************************************************************************************************************************************
1863//Instance
1864//**********************************************************************************************************************************************************
1865/**
1866* Extends mxShape.
1867*/
1868function mxShapeAws3dInstance(bounds, fill, stroke, strokewidth)
1869{
1870	mxShape.call(this);
1871	this.bounds = bounds;
1872	this.fill = fill;
1873	this.stroke = stroke;
1874	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
1875};
1876
1877/**
1878* Extends mxShape.
1879*/
1880mxUtils.extend(mxShapeAws3dInstance, mxShape);
1881
1882mxShapeAws3dInstance.prototype.cst = {
1883		INSTANCE : 'mxgraph.aws3d.instance',
1884		SHADING_COLORS : 'shadingCols'
1885};
1886
1887/**
1888* Function: paintVertexShape
1889*
1890* Paints the vertex shape.
1891*/
1892mxShapeAws3dInstance.prototype.paintVertexShape = function(c, x, y, w, h)
1893{
1894	c.translate(x, y);
1895
1896	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
1897	var strokeWidth1 = strokeWidth * w / 123;
1898	var strokeWidth2 = strokeWidth * h / 97;
1899
1900	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
1901
1902	this.background(c, 0, 0, w, h, strokeWidth);
1903	c.setShadow(false);
1904	this.foreground(c, 0, 0, w, h, strokeWidth);
1905};
1906
1907mxShapeAws3dInstance.prototype.background = function(c, x, y, w, h, strokeWidth)
1908{
1909	c.setStrokeWidth(strokeWidth);
1910	c.save();
1911	c.save();
1912	c.setStrokeWidth(2 * strokeWidth);
1913	c.setStrokeColor('#292929');
1914	c.setLineJoin('round');
1915
1916	c.begin();
1917	c.moveTo(0, h * 0.634);
1918	c.lineTo(0, h * 0.2732);
1919	c.lineTo(w * 0.374, 0);
1920	c.lineTo(w * 0.622, 0);
1921	c.lineTo(w, h * 0.2732);
1922	c.lineTo(w, h * 0.634);
1923	c.lineTo(w * 0.5, h);
1924	c.close();
1925	c.fillAndStroke();
1926};
1927
1928mxShapeAws3dInstance.prototype.foreground = function(c, x, y, w, h, strokeWidth)
1929{
1930	c.restore();
1931	c.setShadow(false);
1932	c.setFillColor('#000000');
1933	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dInstance.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
1934	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
1935	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
1936
1937	c.begin();
1938	c.moveTo(0, h * 0.2732);
1939	c.lineTo(w * 0.5, h * 0.6392);
1940	c.lineTo(w * 0.5, h);
1941	c.lineTo(0, h * 0.634);
1942	c.close();
1943	c.fill();
1944
1945	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
1946	c.begin();
1947	c.moveTo(w * 0.5, h * 0.6392);
1948	c.lineTo(w, h * 0.2732);
1949	c.lineTo(w, h * 0.6392);
1950	c.lineTo(w * 0.5, h);
1951	c.close();
1952	c.fill();
1953
1954	c.restore();
1955	c.setShadow(false);
1956	c.setLineJoin('round');
1957
1958	c.begin();
1959	c.moveTo(0, h * 0.2732);
1960	c.lineTo(w * 0.5, h * 0.6392);
1961	c.lineTo(w * 0.5, h);
1962	c.lineTo(0, h * 0.634);
1963	c.close();
1964	c.stroke();
1965
1966	c.begin();
1967	c.moveTo(w * 0.5, h * 0.6392);
1968	c.lineTo(w, h * 0.2732);
1969	c.lineTo(w, h * 0.6392);
1970	c.lineTo(w * 0.5, h);
1971	c.close();
1972	c.stroke();
1973
1974	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
1975	c.setFillColor(strokeColor);
1976	c.begin();
1977	c.moveTo(w * 0.374, h * 0.4742);
1978	c.arcTo(w * 0.0325, h * 0.0258, 0, 0, 1, w * 0.374, h * 0.4381);
1979	c.lineTo(w * 0.4797, h * 0.3608);
1980	c.arcTo(w * 0.0325, h * 0.0206, 0, 0, 1, w * 0.5203, h * 0.3608);
1981	c.lineTo(w * 0.626, h * 0.4381);
1982	c.arcTo(w * 0.0325, h * 0.0258, 0, 0, 1, w * 0.626, h * 0.4711);
1983	c.lineTo(w * 0.5203, h * 0.5485);
1984	c.arcTo(w * 0.0325, h * 0.0206, 0, 0, 1, w * 0.4797, h * 0.5485);
1985	c.close();
1986	c.fill();
1987
1988	c.setStrokeWidth(2 * strokeWidth);
1989	c.setStrokeColor('#292929');
1990	c.setLineJoin('round');
1991
1992	c.begin();
1993	c.moveTo(0, h * 0.634);
1994	c.lineTo(0, h * 0.2732);
1995	c.lineTo(w * 0.374, 0);
1996	c.lineTo(w * 0.622, 0);
1997	c.lineTo(w, h * 0.2732);
1998	c.lineTo(w, h * 0.634);
1999	c.lineTo(w * 0.5, h);
2000	c.close();
2001	c.stroke();
2002};
2003
2004mxCellRenderer.registerShape(mxShapeAws3dInstance.prototype.cst.INSTANCE, mxShapeAws3dInstance);
2005
2006//**********************************************************************************************************************************************************
2007//Internet Gateway
2008//**********************************************************************************************************************************************************
2009/**
2010* Extends mxShape.
2011*/
2012function mxShapeAws3dInternetGateway(bounds, fill, stroke, strokewidth)
2013{
2014	mxShape.call(this);
2015	this.bounds = bounds;
2016	this.fill = fill;
2017	this.stroke = stroke;
2018	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
2019};
2020
2021/**
2022* Extends mxShape.
2023*/
2024mxUtils.extend(mxShapeAws3dInternetGateway, mxShape);
2025
2026mxShapeAws3dInternetGateway.prototype.cst = {
2027		INTERNET_GATEWAY : 'mxgraph.aws3d.internetGateway',
2028		SHADING_COLORS : 'shadingCols'
2029};
2030
2031/**
2032* Function: paintVertexShape
2033*
2034* Paints the vertex shape.
2035*/
2036mxShapeAws3dInternetGateway.prototype.paintVertexShape = function(c, x, y, w, h)
2037{
2038	c.translate(x, y);
2039
2040	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
2041	var strokeWidth1 = strokeWidth * w / 116.7;
2042	var strokeWidth2 = strokeWidth * h / 102.8;
2043
2044	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
2045
2046	this.background(c, 0, 0, w, h, strokeWidth);
2047	c.setShadow(false);
2048	this.foreground(c, 0, 0, w, h, strokeWidth);
2049};
2050
2051mxShapeAws3dInternetGateway.prototype.background = function(c, x, y, w, h, strokeWidth)
2052{
2053	c.setStrokeWidth(strokeWidth);
2054	c.save();
2055	c.save();
2056	c.save();
2057	c.save();
2058	c.save();
2059	c.setStrokeWidth(2 * strokeWidth);
2060	c.setStrokeColor('#292929');
2061	c.setLineJoin('round');
2062
2063	c.begin();
2064	c.moveTo(w * 0.4199, h * 0.5447);
2065	c.lineTo(w * 0.4199, h * 0.035);
2066	c.lineTo(w * 0.8946, 0);
2067	c.lineTo(w, h * 0.0691);
2068	c.lineTo(w, h * 0.4134);
2069	c.lineTo(w * 0.6812, h * 0.7247);
2070	c.close();
2071	c.fillAndStroke();
2072
2073	c.restore();
2074	c.save();
2075	c.setShadow(false);
2076	c.setFillColor('#000000');
2077	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dInternetGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
2078	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
2079	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
2080	c.begin();
2081	c.moveTo(w * 0.4199, h * 0.5447);
2082	c.lineTo(w * 0.4199, h * 0.035);
2083	c.lineTo(w * 0.6838, h * 0.2072);
2084	c.lineTo(w * 0.6838, h * 0.7247);
2085	c.close();
2086	c.fill();
2087
2088	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
2089	c.begin();
2090	c.moveTo(w * 0.6838, h * 0.2072);
2091	c.lineTo(w, h * 0.0691);
2092	c.lineTo(w, h * 0.4134);
2093	c.lineTo(w * 0.6838, h * 0.7247);
2094	c.close();
2095	c.fill();
2096
2097	c.restore();
2098	c.setShadow(false);
2099	c.begin();
2100	c.moveTo(w * 0.4199, h * 0.5447);
2101	c.lineTo(w * 0.4199, h * 0.035);
2102	c.lineTo(w * 0.6838, h * 0.2072);
2103	c.lineTo(w * 0.6838, h * 0.7247);
2104	c.close();
2105	c.stroke();
2106
2107	c.restore();
2108	c.setLineJoin('round');
2109	c.setShadow(false);
2110
2111	c.begin();
2112	c.moveTo(w * 0.6838, h * 0.2072);
2113	c.lineTo(w, h * 0.0691);
2114	c.lineTo(w, h * 0.4134);
2115	c.lineTo(w * 0.6838, h * 0.7247);
2116	c.close();
2117	c.stroke();
2118
2119	c.setStrokeWidth(2 * strokeWidth);
2120	c.setStrokeColor('#292929');
2121
2122	c.begin();
2123	c.moveTo(w * 0.4199, h * 0.5447);
2124	c.lineTo(w * 0.4199, h * 0.035);
2125	c.lineTo(w * 0.8946, 0);
2126	c.lineTo(w, h * 0.0691);
2127	c.lineTo(w, h * 0.4134);
2128	c.lineTo(w * 0.6812, h * 0.7247);
2129	c.close();
2130	c.stroke();
2131
2132	c.restore();
2133	c.setStrokeWidth(2 * strokeWidth);
2134	c.setStrokeColor('#292929');
2135	c.setLineJoin('round');
2136
2137	c.begin();
2138	c.moveTo(0, h * 0.929);
2139	c.lineTo(0, h * 0.5866);
2140	c.lineTo(w * 0.3171, h * 0.1031);
2141	c.lineTo(w * 0.5784, h * 0.2753);
2142	c.lineTo(w * 0.5784, h * 0.7928);
2143	c.lineTo(w * 0.1054, h);
2144	c.close();
2145	c.fillAndStroke();
2146};
2147
2148mxShapeAws3dInternetGateway.prototype.foreground = function(c, x, y, w, h, strokeWidth)
2149{
2150	c.restore();
2151	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
2152	c.setShadow(false);
2153	c.setLineJoin('round');
2154	c.setFillColor('#000000');
2155	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dInternetGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
2156	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
2157	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
2158
2159	c.begin();
2160	c.moveTo(0, h * 0.929);
2161	c.lineTo(0, h * 0.5866);
2162	c.lineTo(w * 0.1054, h * 0.6537);
2163	c.lineTo(w * 0.1054, h);
2164	c.close();
2165	c.fill();
2166
2167	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
2168	c.begin();
2169	c.moveTo(w * 0.1054, h);
2170	c.lineTo(w * 0.1054, h * 0.6537);
2171	c.lineTo(w * 0.5784, h * 0.2753);
2172	c.lineTo(w * 0.5784, h * 0.7928);
2173	c.close();
2174	c.fill();
2175
2176	c.restore();
2177	c.setShadow(false);
2178	c.setLineJoin('round');
2179
2180	c.begin();
2181	c.moveTo(0, h * 0.929);
2182	c.lineTo(0, h * 0.5866);
2183	c.lineTo(w * 0.1054, h * 0.6537);
2184	c.lineTo(w * 0.1054, h);
2185	c.close();
2186	c.stroke();
2187
2188	c.begin();
2189	c.moveTo(w * 0.1054, h);
2190	c.lineTo(w * 0.1054, h * 0.6537);
2191	c.lineTo(w * 0.5784, h * 0.2753);
2192	c.lineTo(w * 0.5784, h * 0.7928);
2193	c.close();
2194	c.stroke();
2195
2196	c.setStrokeWidth(2 * strokeWidth);
2197	c.setStrokeColor('#292929');
2198	c.setLineJoin('round');
2199
2200	c.begin();
2201	c.moveTo(0, h * 0.929);
2202	c.lineTo(0, h * 0.5866);
2203	c.lineTo(w * 0.3171, h * 0.1031);
2204	c.lineTo(w * 0.5784, h * 0.2753);
2205	c.lineTo(w * 0.5784, h * 0.7928);
2206	c.lineTo(w * 0.1054, h);
2207	c.close();
2208	c.stroke();
2209
2210	c.setFillColor(strokeColor);
2211	c.begin();
2212	c.moveTo(w * 0.7849, h * 0.5039);
2213	c.arcTo(w * 0.0343, h * 0.0632, 0, 0, 1, w * 0.7481, h * 0.4796);
2214	c.arcTo(w * 0.0857, h * 0.0973, 0, 0, 1, w * 0.7661, h * 0.3911);
2215	c.arcTo(w * 0.06, h * 0.0681, 0, 0, 1, w * 0.7712, h * 0.3356);
2216	c.arcTo(w * 0.0257, h * 0.0292, 0, 0, 1, w * 0.7952, h * 0.32);
2217	c.arcTo(w * 0.1285, h * 0.1459, 0, 0, 1, w * 0.8166, h * 0.2461);
2218	c.arcTo(w * 0.06, h * 0.0973, 0, 0, 1, w * 0.8595, h * 0.2238);
2219	c.arcTo(w * 0.0514, h * 0.0973, 0, 0, 1, w * 0.8937, h * 0.2743);
2220	c.arcTo(w * 0.0428, h * 0.0778, 0, 0, 1, w * 0.9323, h * 0.3093);
2221	c.arcTo(w * 0.0686, h * 0.0778, 0, 0, 1, w * 0.928, h * 0.3716);
2222	c.arcTo(w * 0.0857, h * 0.0973, 0, 0, 1, w * 0.8972, h * 0.4125);
2223	c.close();
2224	c.fill();
2225};
2226
2227mxCellRenderer.registerShape(mxShapeAws3dInternetGateway.prototype.cst.INTERNET_GATEWAY, mxShapeAws3dInternetGateway);
2228
2229//**********************************************************************************************************************************************************
2230//Oracle Data Center
2231//**********************************************************************************************************************************************************
2232/**
2233* Extends mxShape.
2234*/
2235function mxShapeAws3dOracleDataCenter(bounds, fill, stroke, strokewidth)
2236{
2237	mxShape.call(this);
2238	this.bounds = bounds;
2239	this.fill = fill;
2240	this.stroke = stroke;
2241	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
2242};
2243
2244/**
2245* Extends mxShape.
2246*/
2247mxUtils.extend(mxShapeAws3dOracleDataCenter, mxShape);
2248
2249mxShapeAws3dOracleDataCenter.prototype.cst = {
2250		ORACLE_DATA_CENTER : 'mxgraph.aws3d.oracleDataCenter'
2251};
2252
2253/**
2254* Function: paintVertexShape
2255*
2256* Paints the vertex shape.
2257*/
2258mxShapeAws3dOracleDataCenter.prototype.paintVertexShape = function(c, x, y, w, h)
2259{
2260	c.translate(x, y);
2261
2262	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
2263	var strokeWidth1 = strokeWidth * w / 123;
2264	var strokeWidth2 = strokeWidth * h /142;
2265
2266	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
2267	c.setStrokeWidth(strokeWidth);
2268
2269	this.background(c, 0, 0, w, h, strokeWidth);
2270	c.setShadow(false);
2271	this.foreground(c, 0, 0, w, h, strokeWidth);
2272};
2273
2274mxShapeAws3dOracleDataCenter.prototype.background = function(c, x, y, w, h, strokeWidth)
2275{
2276	c.save();
2277	c.save();
2278	c.save();
2279	c.setStrokeWidth(2 * strokeWidth);
2280	c.setStrokeColor('#292929');
2281	c.setLineJoin('round');
2282
2283	c.begin();
2284	c.moveTo(0, h * 0.7464);
2285	c.lineTo(0, h * 0.25);
2286	c.lineTo(w * 0.5, 0);
2287	c.lineTo(w, h * 0.25);
2288	c.lineTo(w, h * 0.7464);
2289	c.lineTo(w * 0.5, h);
2290	c.close();
2291	c.fillAndStroke();
2292};
2293
2294mxShapeAws3dOracleDataCenter.prototype.foreground = function(c, x, y, w, h, strokeWidth)
2295{
2296	c.restore();
2297	c.setShadow(false);
2298	c.setFillColor('#000000');
2299	c.setAlpha('0.1');
2300
2301	c.begin();
2302	c.moveTo(0, h * 0.7464);
2303	c.lineTo(0, h * 0.25);
2304	c.lineTo(w * 0.5, h * 0.5);
2305	c.lineTo(w * 0.5, h);
2306	c.close();
2307	c.fill();
2308
2309	c.setAlpha('0.3');
2310	c.begin();
2311	c.moveTo(w * 0.5, h * 0.5);
2312	c.lineTo(w, h * 0.25);
2313	c.lineTo(w, h * 0.7464);
2314	c.lineTo(w * 0.5, h);
2315	c.close();
2316	c.fill();
2317
2318	c.restore();
2319	c.setShadow(false);
2320	c.setLineJoin('round');
2321
2322	c.setFillColor('#ff0000');
2323
2324	c.begin();
2325	c.moveTo(0, h * 0.5866);
2326	c.lineTo(w * 0.5, h * 0.8359);
2327	c.lineTo(w, h * 0.5866);
2328	c.lineTo(w, h * 0.6986);
2329	c.lineTo(w * 0.5, h * 0.9486);
2330	c.lineTo(0, h * 0.6986);
2331	c.fill();
2332
2333	c.setStrokeWidth(0.5 * strokeWidth);
2334	c.setStrokeColor('#ffffff');
2335	c.setFillColor('#ffffff');
2336
2337	c.begin();
2338	c.moveTo(0, h * 0.5866);
2339	c.lineTo(w * 0.5, h * 0.8359);
2340	c.lineTo(w, h * 0.5866);
2341	c.moveTo(w, h * 0.6986);
2342	c.lineTo(w * 0.5, h * 0.9486);
2343	c.lineTo(0, h * 0.6986);
2344	c.stroke();
2345
2346	c.begin();
2347	c.moveTo(w * 0.0813, h * 0.7113);
2348	c.arcTo(w * 0.0569, h * 0.0493, 0, 0, 1, w * 0.065, h * 0.6831);
2349	c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.065, h * 0.6613);
2350	c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.0797, h * 0.6549);
2351	c.lineTo(w * 0.122, h * 0.6754);
2352	c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.1358, h * 0.6937);
2353	c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.139, h * 0.7232);
2354	c.arcTo(w * 0.0179, h * 0.0155, 0, 0, 1, w * 0.1187, h * 0.7296);
2355	c.close();
2356	c.moveTo(w * 0.1163, h * 0.7183);
2357	c.arcTo(w * 0.0089, h * 0.0077, 0, 0, 0, w * 0.1285, h * 0.7148);
2358	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.1293, h * 0.7021);
2359	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.1179, h * 0.6831);
2360	c.lineTo(w * 0.087, h * 0.6676);
2361	c.arcTo(w * 0.0081, h * 0.007, 0, 0, 0, w * 0.0764, h * 0.6697);
2362	c.arcTo(w * 0.0325, h * 0.0352, 0, 0, 0, w * 0.078, h * 0.6937);
2363	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.087, h * 0.7035);
2364	c.close();
2365	c.moveTo(w * 0.1439, h * 0.743);
2366	c.lineTo(w * 0.1439, h * 0.6866);
2367	c.lineTo(w * 0.1846, h * 0.707);
2368	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.1967, h * 0.7183);
2369	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2, h * 0.738);
2370	c.arcTo(w * 0.0138, h * 0.0155, 0, 0, 1, w * 0.1813, h * 0.743);
2371	c.lineTo(w * 0.1992, h * 0.769);
2372	c.lineTo(w * 0.187, h * 0.7641);
2373	c.lineTo(w * 0.1577, h * 0.7218);
2374	c.lineTo(w * 0.1854, h * 0.7345);
2375	c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 0, w * 0.1911, h * 0.7317);
2376	c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 0, w * 0.1894, h * 0.7225);
2377	c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.1821, h * 0.7155);
2378	c.lineTo(w * 0.1528, h * 0.7007);
2379	c.lineTo(w * 0.1528, h * 0.7472);
2380	c.close();
2381	c.moveTo(w * 0.2008, h * 0.7711);
2382	c.lineTo(w * 0.2293, h * 0.7338);
2383	c.arcTo(w * 0.0065, h * 0.0056, 0, 0, 1, w * 0.2382, h * 0.7324);
2384	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2431, h * 0.7415);
2385	c.lineTo(w * 0.2699, h * 0.8035);
2386	c.lineTo(w * 0.2602, h * 0.8007);
2387	c.lineTo(w * 0.252, h * 0.7859);
2388	c.lineTo(w * 0.2293, h * 0.7754);
2389	c.lineTo(w * 0.2244, h * 0.7634);
2390	c.lineTo(w * 0.248, h * 0.7739);
2391	c.lineTo(w * 0.235, h * 0.7444);
2392	c.lineTo(w * 0.2122, h * 0.7768);
2393	c.close();
2394	c.moveTo(w * 0.3244, h * 0.8225);
2395	c.lineTo(w * 0.3171, h * 0.8289);
2396	c.lineTo(w * 0.2854, h * 0.8127);
2397	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2724, h * 0.7986);
2398	c.arcTo(w * 0.0569, h * 0.0493, 0, 0, 1, w * 0.265, h * 0.7746);
2399	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2683, h * 0.762);
2400	c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.2829, h * 0.757);
2401	c.lineTo(w * 0.3228, h * 0.7761);
2402	c.lineTo(w * 0.3179, h * 0.7831);
2403	c.lineTo(w * 0.2878, h * 0.7683);
2404	c.arcTo(w * 0.0081, h * 0.007, 0, 0, 0, w * 0.2789, h * 0.7697);
2405	c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.2748, h * 0.7831);
2406	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.2878, h * 0.8042);
2407	c.close();
2408	c.moveTo(w * 0.3276, h * 0.7789);
2409	c.lineTo(w * 0.3366, h * 0.7831);
2410	c.lineTo(w * 0.3366, h * 0.8289);
2411	c.lineTo(w * 0.3805, h * 0.8507);
2412	c.lineTo(w * 0.3748, h * 0.857);
2413	c.lineTo(w * 0.3317, h * 0.8359);
2414	c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.3276, h * 0.8275);
2415	c.close();
2416	c.moveTo(w * 0.435, h * 0.8775);
2417	c.lineTo(w * 0.4325, h * 0.8866);
2418	c.lineTo(w * 0.3959, h * 0.8683);
2419	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.3862, h * 0.8563);
2420	c.arcTo(w * 0.0528, h * 0.0458, 0, 0, 1, w * 0.3805, h * 0.8183);
2421	c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.3951, h * 0.8134);
2422	c.lineTo(w * 0.435, h * 0.8324);
2423	c.lineTo(w * 0.4285, h * 0.838);
2424	c.lineTo(w * 0.4008, h * 0.8246);
2425	c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.3878, h * 0.831);
2426	c.lineTo(w * 0.4333, h * 0.8542);
2427	c.lineTo(w * 0.426, h * 0.8606);
2428	c.lineTo(w * 0.3878, h * 0.8415);
2429	c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.3976, h * 0.8585);
2430	c.close();
2431
2432	c.moveTo(w * 0.6171, h * 0.8063);
2433	c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.6366, h * 0.8092);
2434	c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 1, w * 0.639, h * 0.8303);
2435	c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.6211, h * 0.8592);
2436	c.lineTo(w * 0.5894, h * 0.8761);
2437	c.arcTo(w * 0.0203, h * 0.0176, 0, 0, 1, w * 0.565, h * 0.8732);
2438	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.5659, h * 0.8458);
2439	c.arcTo(w * 0.0488, h * 0.0422, 0, 0, 1, w * 0.5805, h * 0.8246);
2440	c.close();
2441	c.moveTo(w * 0.5886, h * 0.8296);
2442	c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.5748, h * 0.8472);
2443	c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.574, h * 0.862);
2444	c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.587, h * 0.8676);
2445	c.lineTo(w * 0.6163, h * 0.8528);
2446	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.6285, h * 0.8359);
2447	c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.6293, h * 0.8225);
2448	c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.6163, h * 0.8155);
2449	c.close();
2450
2451	c.moveTo(w * 0.64, h * 0.85);
2452	c.lineTo(w * 0.64, h * 0.7930);
2453	c.lineTo(w * 0.6854, h * 0.7718);
2454	c.arcTo(w * 0.0106, h * 0.0092, 0, 0, 1, w * 0.7008, h * 0.7782);
2455	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.6959, h * 0.8);
2456	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.6805, h * 0.8127);
2457	c.lineTo(w * 0.6992, h * 0.8218);
2458	c.lineTo(w * 0.6854, h * 0.8282);
2459	c.lineTo(w * 0.6569, h * 0.8141);
2460	c.lineTo(w * 0.6805, h * 0.8021);
2461	c.arcTo(w * 0.0203, h * 0.0176, 0, 0, 0, w * 0.6894, h * 0.7923);
2462	c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.6894, h * 0.7845);
2463	c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 0, w * 0.6837, h * 0.7831);
2464	c.lineTo(w * 0.6528, h * 0.7979);
2465	c.lineTo(w * 0.6528, h * 0.8437);
2466	c.close();
2467	c.moveTo(w * 0.7, h * 0.8204);
2468	c.lineTo(w * 0.7301, h * 0.7507);
2469	c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 1, w * 0.7358, h * 0.7444);
2470	c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 1, w * 0.7415, h * 0.7486);
2471	c.lineTo(w * 0.7699, h * 0.7852);
2472	c.lineTo(w * 0.7602, h * 0.7908);
2473	c.lineTo(w * 0.7537, h * 0.7838);
2474	c.lineTo(w * 0.7276, h * 0.7958);
2475	c.lineTo(w * 0.7228, h * 0.788);
2476	c.lineTo(w * 0.748, h * 0.7768);
2477	c.lineTo(w * 0.7358, h * 0.7585);
2478	c.lineTo(w * 0.7114, h * 0.8155);
2479	c.close();
2480	c.moveTo(w * 0.8244, h * 0.7486);
2481	c.lineTo(w * 0.8171, h * 0.762);
2482	c.lineTo(w * 0.7894, h * 0.7761);
2483	c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 1, w * 0.7683, h * 0.7746);
2484	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.7667, h * 0.7507);
2485	c.arcTo(w * 0.0488, h * 0.0423, 0, 0, 1, w * 0.7937, h * 0.7162);
2486	c.lineTo(w * 0.822, h * 0.7035);
2487	c.lineTo(w * 0.8171, h * 0.7155);
2488	c.lineTo(w * 0.7902, h * 0.7296);
2489	c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.778, h * 0.743);
2490	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.7756, h * 0.7606);
2491	c.arcTo(w * 0.0077, h * 0.0067, 0, 0, 0, w * 0.787, h * 0.767);
2492	c.close();
2493	c.moveTo(w * 0.8366, h * 0.6949);
2494	c.lineTo(w * 0.8366, h * 0.7423);
2495	c.lineTo(w * 0.878, h * 0.7231);
2496	c.lineTo(w * 0.874, h * 0.7338);
2497	c.lineTo(w * 0.8333, h * 0.7535);
2498	c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 1, w * 0.8268, h * 0.75);
2499	c.lineTo(w * 0.8268, h * 0.7007);
2500	c.close();
2501	c.moveTo(w * 0.9342, h * 0.6472);
2502	c.lineTo(w * 0.9293, h * 0.6599);
2503	c.lineTo(w * 0.9033, h * 0.6725);
2504	c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.8927, h * 0.6817);
2505	c.arcTo(w * 0.0406, h * 0.0352, 0, 0, 0, w * 0.887, h * 0.6937);
2506	c.lineTo(w * 0.9309, h * 0.6725);
2507	c.lineTo(w * 0.9268, h * 0.6845);
2508	c.lineTo(w * 0.887, h * 0.7035);
2509	c.arcTo(w * 0.0089, h * 0.0077, 0, 0, 0, w * 0.8992, h * 0.7106);
2510	c.lineTo(w * 0.935, h * 0.693);
2511	c.lineTo(w * 0.9285, h * 0.7063);
2512	c.lineTo(w * 0.9008, h * 0.7197);
2513	c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.8829, h * 0.7204);
2514	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.8764, h * 0.7028);
2515	c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.8959, h * 0.6669);
2516	c.fill();
2517
2518	c.restore();
2519	c.setShadow(false);
2520	c.setLineJoin('round');
2521
2522	c.begin();
2523	c.moveTo(0, h * 0.7464);
2524	c.lineTo(0, h * 0.25);
2525	c.lineTo(w * 0.5, h * 0.5);
2526	c.lineTo(w * 0.5, h);
2527	c.close();
2528	c.stroke();
2529
2530	c.begin();
2531	c.moveTo(w * 0.5, h * 0.5);
2532	c.lineTo(w, h * 0.25);
2533	c.lineTo(w, h * 0.7464);
2534	c.lineTo(w * 0.5, h);
2535	c.close();
2536	c.stroke();
2537
2538	c.setStrokeWidth(2 * strokeWidth);
2539	c.setStrokeColor('#292929');
2540	c.setLineJoin('round');
2541
2542	c.begin();
2543	c.moveTo(0, h * 0.7464);
2544	c.lineTo(0, h * 0.25);
2545	c.lineTo(w * 0.5, 0);
2546	c.lineTo(w, h * 0.25);
2547	c.lineTo(w, h * 0.7464);
2548	c.lineTo(w * 0.5, h);
2549	c.close();
2550	c.stroke();
2551
2552	c.restore();
2553	c.setShadow(false);
2554	c.setStrokeWidth(3 * strokeWidth);
2555	c.setLineCap('round');
2556	c.begin();
2557	c.moveTo(w * 0.0894, h * 0.3838);
2558	c.lineTo(w * 0.4187, h * 0.5493);
2559	c.moveTo(w * 0.0894, h * 0.4331);
2560	c.lineTo(w * 0.4187, h * 0.5986);
2561	c.moveTo(w * 0.0894, h * 0.4824);
2562	c.lineTo(w * 0.4187, h * 0.6479);
2563	c.moveTo(w * 0.5854, h * 0.5492);
2564	c.lineTo(w * 0.9146, h * 0.3838);
2565	c.moveTo(w * 0.5854, h * 0.5986);
2566	c.lineTo(w * 0.9146, h * 0.4331);
2567	c.moveTo(w * 0.5854, h * 0.6479);
2568	c.lineTo(w * 0.9146, h * 0.4824);
2569	c.stroke();
2570};
2571
2572mxCellRenderer.registerShape(mxShapeAws3dOracleDataCenter.prototype.cst.ORACLE_DATA_CENTER, mxShapeAws3dOracleDataCenter);
2573
2574//**********************************************************************************************************************************************************
2575//Oracle Database Server
2576//**********************************************************************************************************************************************************
2577/**
2578* Extends mxShape.
2579*/
2580function mxShapeAws3dOracleDatabaseServer(bounds, fill, stroke, strokewidth)
2581{
2582	mxShape.call(this);
2583	this.bounds = bounds;
2584	this.fill = fill;
2585	this.stroke = stroke;
2586	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
2587};
2588
2589/**
2590* Extends mxShape.
2591*/
2592mxUtils.extend(mxShapeAws3dOracleDatabaseServer, mxShape);
2593
2594mxShapeAws3dOracleDatabaseServer.prototype.cst = {
2595		ORACLE_DB_SERVER : 'mxgraph.aws3d.oracleDbServer'
2596};
2597
2598/**
2599* Function: paintVertexShape
2600*
2601* Paints the vertex shape.
2602*/
2603mxShapeAws3dOracleDatabaseServer.prototype.paintVertexShape = function(c, x, y, w, h)
2604{
2605	c.translate(x, y);
2606
2607	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
2608	var strokeWidth1 = strokeWidth * w / 123;
2609	var strokeWidth2 = strokeWidth * h /142;
2610
2611	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
2612	c.setStrokeWidth(strokeWidth);
2613
2614	this.background(c, 0, 0, w, h, strokeWidth);
2615	c.setShadow(false);
2616	this.foreground(c, 0, 0, w, h, strokeWidth);
2617};
2618
2619mxShapeAws3dOracleDatabaseServer.prototype.background = function(c, x, y, w, h, strokeWidth)
2620{
2621	c.save();
2622	c.save();
2623	c.save();
2624	c.setStrokeWidth(2 * strokeWidth);
2625	c.setStrokeColor('#292929');
2626	c.setLineJoin('round');
2627
2628	c.begin();
2629	c.moveTo(0, h * 0.7331);
2630	c.lineTo(0, h * 0.3346);
2631	c.lineTo(w * 0.126, h * 0.1316);
2632	c.lineTo(w * 0.374, 0);
2633	c.lineTo(w * 0.626, 0);
2634	c.lineTo(w * 0.874, h * 0.1316);
2635	c.lineTo(w, h * 0.3346);
2636	c.lineTo(w, h * 0.7331);
2637	c.lineTo(w * 0.5, h);
2638	c.close();
2639	c.fillAndStroke();
2640};
2641
2642mxShapeAws3dOracleDatabaseServer.prototype.foreground = function(c, x, y, w, h, strokeWidth)
2643{
2644	c.restore();
2645	c.setShadow(false);
2646	c.setFillColor('#000000');
2647	c.setAlpha('0.1');
2648
2649	c.begin();
2650	c.moveTo(w * 0.126, h * 0.1316);
2651	c.lineTo(w * 0.126, h * 0.267);
2652	c.lineTo(w * 0.378, h * 0.4023);
2653	c.lineTo(w * 0.5, h * 0.6015);
2654	c.lineTo(w * 0.5, h);
2655	c.lineTo(0, h * 0.7331);
2656	c.lineTo(0, h * 0.3346);
2657	c.close();
2658	c.moveTo(w * 0.874, h * 0.267);
2659	c.lineTo(w * 0.874, h * 0.1316);
2660	c.lineTo(w, h * 0.3308);
2661	c.fill();
2662
2663	c.setAlpha('0.3');
2664	c.begin();
2665	c.moveTo(w * 0.5, h);
2666	c.lineTo(w * 0.5, h * 0.6015);
2667	c.lineTo(w * 0.622, h * 0.4023);
2668	c.lineTo(w * 0.874, h * 0.267);
2669	c.lineTo(w, h * 0.3308);
2670	c.lineTo(w, h * 0.7331);
2671	c.close();
2672	c.fill();
2673
2674	c.restore();
2675	c.setShadow(false);
2676	c.setLineJoin('round');
2677
2678	c.setFillColor('#ff0000');
2679
2680	c.begin();
2681	c.moveTo(0, h * 0.5586);
2682	c.lineTo(w * 0.5, h * 0.8248);
2683	c.lineTo(w, h * 0.5586);
2684	c.lineTo(w, h * 0.6782);
2685	c.lineTo(w * 0.5, h * 0.9453);
2686	c.lineTo(0, h * 0.6782);
2687	c.fill();
2688
2689	c.setStrokeWidth(0.5 * strokeWidth);
2690	c.setStrokeColor('#ffffff');
2691	c.setFillColor('#ffffff');
2692
2693	c.begin();
2694	c.moveTo(0, h * 0.5586);
2695	c.lineTo(w * 0.5, h * 0.8248);
2696	c.lineTo(w, h * 0.5586);
2697	c.moveTo(w, h * 0.6782);
2698	c.lineTo(w * 0.5, h * 0.9453);
2699	c.lineTo(0, h * 0.6782);
2700	c.stroke();
2701
2702	c.begin();
2703	c.moveTo(w * 0.0813, h * 0.6918);
2704	c.arcTo(w * 0.0569, h * 0.0526, 0, 0, 1, w * 0.065, h * 0.6616);
2705	c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.065, h * 0.6384);
2706	c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.0797, h * 0.6315);
2707	c.lineTo(w * 0.122, h * 0.6534);
2708	c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.1358, h * 0.673);
2709	c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.139, h * 0.7045);
2710	c.arcTo(w * 0.0179, h * 0.0165, 0, 0, 1, w * 0.1187, h * 0.7113);
2711	c.close();
2712	c.moveTo(w * 0.1163, h * 0.6992);
2713	c.arcTo(w * 0.0089, h * 0.0082, 0, 0, 0, w * 0.1285, h * 0.6955);
2714	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.1293, h * 0.6819);
2715	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.1179, h * 0.6616);
2716	c.lineTo(w * 0.087, h * 0.6451);
2717	c.arcTo(w * 0.0081, h * 0.0075, 0, 0, 0, w * 0.0764, h * 0.6473);
2718	c.arcTo(w * 0.0325, h * 0.0376, 0, 0, 0, w * 0.078, h * 0.673);
2719	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.087, h * 0.6834);
2720	c.close();
2721	c.moveTo(w * 0.1439, h * 0.7256);
2722	c.lineTo(w * 0.1439, h * 0.6654);
2723	c.lineTo(w * 0.1846, h * 0.6872);
2724	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.1967, h * 0.6992);
2725	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.2, h * 0.7203);
2726	c.arcTo(w * 0.0138, h * 0.0165, 0, 0, 1, w * 0.1813, h * 0.7256);
2727	c.lineTo(w * 0.1992, h * 0.7534);
2728	c.lineTo(w * 0.187, h * 0.7481);
2729	c.lineTo(w * 0.1577, h * 0.7029);
2730	c.lineTo(w * 0.1854, h * 0.7165);
2731	c.arcTo(w * 0.0041, h * 0.0037, 0, 0, 0, w * 0.1911, h * 0.7135);
2732	c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 0, w * 0.1894, h * 0.7037);
2733	c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.1821, h * 0.6962);
2734	c.lineTo(w * 0.1528, h * 0.6804);
2735	c.lineTo(w * 0.1528, h * 0.7301);
2736	c.close();
2737	c.moveTo(w * 0.2008, h * 0.7556);
2738	c.lineTo(w * 0.2293, h * 0.7158);
2739	c.arcTo(w * 0.0065, h * 0.006, 0, 0, 1, w * 0.2382, h * 0.7143);
2740	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.2431, h * 0.724);
2741	c.lineTo(w * 0.2699, h * 0.7902);
2742	c.lineTo(w * 0.2602, h * 0.7872);
2743	c.lineTo(w * 0.252, h * 0.7714);
2744	c.lineTo(w * 0.2293, h * 0.7602);
2745	c.lineTo(w * 0.2244, h * 0.7474);
2746	c.lineTo(w * 0.248, h * 0.7586);
2747	c.lineTo(w * 0.235, h * 0.7271);
2748	c.lineTo(w * 0.2122, h * 0.7617);
2749	c.close();
2750	c.moveTo(w * 0.3244, h * 0.8105);
2751	c.lineTo(w * 0.3171, h * 0.8173);
2752	c.lineTo(w * 0.2854, h * 0.8);
2753	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.2724, h * 0.785);
2754	c.arcTo(w * 0.0569, h * 0.0526, 0, 0, 1, w * 0.265, h * 0.7593);
2755	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.2683, h * 0.7459);
2756	c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.2829, h * 0.7405);
2757	c.lineTo(w * 0.3228, h * 0.7609);
2758	c.lineTo(w * 0.3179, h * 0.7684);
2759	c.lineTo(w * 0.2878, h * 0.7526);
2760	c.arcTo(w * 0.0081, h * 0.0075, 0, 0, 0, w * 0.2789, h * 0.7541);
2761	c.arcTo(w * 0.0244, h * 0.0225, 0, 0, 0, w * 0.2748, h * 0.7684);
2762	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.2878, h * 0.7909);
2763	c.close();
2764	c.moveTo(w * 0.3276, h * 0.7639);
2765	c.lineTo(w * 0.3366, h * 0.7684);
2766	c.lineTo(w * 0.3366, h * 0.8173);
2767	c.lineTo(w * 0.3805, h * 0.8406);
2768	c.lineTo(w * 0.3748, h * 0.8473);
2769	c.lineTo(w * 0.3317, h * 0.8248);
2770	c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.3276, h * 0.8158);
2771	c.close();
2772	c.moveTo(w * 0.435, h * 0.8692);
2773	c.lineTo(w * 0.4325, h * 0.8789);
2774	c.lineTo(w * 0.3959, h * 0.8594);
2775	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.3862, h * 0.8466);
2776	c.arcTo(w * 0.0528, h * 0.0489, 0, 0, 1, w * 0.3805, h * 0.806);
2777	c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.3951, h * 0.8008);
2778	c.lineTo(w * 0.435, h * 0.821);
2779	c.lineTo(w * 0.4285, h * 0.827);
2780	c.lineTo(w * 0.4008, h * 0.8127);
2781	c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 0, w * 0.3878, h * 0.8196);
2782	c.lineTo(w * 0.4333, h * 0.8443);
2783	c.lineTo(w * 0.426, h * 0.8512);
2784	c.lineTo(w * 0.3878, h * 0.8308);
2785	c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.3976, h * 0.8489);
2786	c.close();
2787
2788	c.moveTo(w * 0.6171, h * 0.7932);
2789	c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.6366, h * 0.7963);
2790	c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 1, w * 0.639, h * 0.8188);
2791	c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.6211, h * 0.8497);
2792	c.lineTo(w * 0.5894, h * 0.8677);
2793	c.arcTo(w * 0.0203, h * 0.0188, 0, 0, 1, w * 0.565, h * 0.8646);
2794	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.5659, h * 0.8354);
2795	c.arcTo(w * 0.0488, h * 0.0451, 0, 0, 1, w * 0.5805, h * 0.8127);
2796	c.close();
2797	c.moveTo(w * 0.5886, h * 0.8181);
2798	c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.5748, h * 0.8368);
2799	c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.574, h * 0.8527);
2800	c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 0, w * 0.587, h * 0.8586);
2801	c.lineTo(w * 0.6163, h * 0.8428);
2802	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.6285, h * 0.8248);
2803	c.arcTo(w * 0.0244, h * 0.0225, 0, 0, 0, w * 0.6293, h * 0.8105);
2804	c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 0, w * 0.6163, h * 0.803);
2805	c.close();
2806	c.moveTo(w * 0.64, h * 0.8398);
2807	c.lineTo(w * 0.64, h * 0.779);
2808	c.lineTo(w * 0.6854, h * 0.7563);
2809	c.arcTo(w * 0.0106, h * 0.0098, 0, 0, 1, w * 0.7008, h * 0.7632);
2810	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.6959, h * 0.7865);
2811	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.6805, h * 0.8);
2812	c.lineTo(w * 0.6992, h * 0.8097);
2813	c.lineTo(w * 0.6854, h * 0.8166);
2814	c.lineTo(w * 0.6569, h * 0.8015);
2815	c.lineTo(w * 0.6805, h * 0.7887);
2816	c.arcTo(w * 0.0203, h * 0.0188, 0, 0, 0, w * 0.6894, h * 0.7782);
2817	c.arcTo(w * 0.0244, h * 0.0225, 0, 0, 0, w * 0.6894, h * 0.7699);
2818	c.arcTo(w * 0.0041, h * 0.0037, 0, 0, 0, w * 0.6837, h * 0.7684);
2819	c.lineTo(w * 0.6528, h * 0.7842);
2820	c.lineTo(w * 0.6528, h * 0.8331);
2821	c.close();
2822	c.moveTo(w * 0.7, h * 0.8082);
2823	c.lineTo(w * 0.7301, h * 0.7338);
2824	c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 1, w * 0.7358, h * 0.7271);
2825	c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 1, w * 0.7415, h * 0.7316);
2826	c.lineTo(w * 0.7699, h * 0.7707);
2827	c.lineTo(w * 0.7602, h * 0.7766);
2828	c.lineTo(w * 0.7537, h * 0.7692);
2829	c.lineTo(w * 0.7276, h * 0.782);
2830	c.lineTo(w * 0.7228, h * 0.7736);
2831	c.lineTo(w * 0.748, h * 0.7617);
2832	c.lineTo(w * 0.7358, h * 0.7421);
2833	c.lineTo(w * 0.7114, h * 0.803);
2834	c.close();
2835	c.moveTo(w * 0.8244, h * 0.7316);
2836	c.lineTo(w * 0.8171, h * 0.7459);
2837	c.lineTo(w * 0.7894, h * 0.7609);
2838	c.arcTo(w * 0.0244, h * 0.0225, 0, 0, 1, w * 0.7683, h * 0.7593);
2839	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.7667, h * 0.7338);
2840	c.arcTo(w * 0.0488, h * 0.0452, 0, 0, 1, w * 0.7937, h * 0.697);
2841	c.lineTo(w * 0.822, h * 0.6834);
2842	c.lineTo(w * 0.8171, h * 0.6962);
2843	c.lineTo(w * 0.7902, h * 0.7113);
2844	c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.778, h * 0.7256);
2845	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.7756, h * 0.7444);
2846	c.arcTo(w * 0.0077, h * 0.0072, 0, 0, 0, w * 0.787, h * 0.7512);
2847	c.close();
2848	c.moveTo(w * 0.8366, h * 0.6742);
2849	c.lineTo(w * 0.8366, h * 0.7248);
2850	c.lineTo(w * 0.878, h * 0.7043);
2851	c.lineTo(w * 0.874, h * 0.7158);
2852	c.lineTo(w * 0.8333, h * 0.7368);
2853	c.arcTo(w * 0.0041, h * 0.0037, 0, 0, 1, w * 0.8268, h * 0.7324);
2854	c.lineTo(w * 0.8268, h * 0.6804);
2855	c.close();
2856	c.moveTo(w * 0.9342, h * 0.6233);
2857	c.lineTo(w * 0.9293, h * 0.6369);
2858	c.lineTo(w * 0.9033, h * 0.6503);
2859	c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.8927, h * 0.6601);
2860	c.arcTo(w * 0.0406, h * 0.0376, 0, 0, 0, w * 0.887, h * 0.6729);
2861	c.lineTo(w * 0.9309, h * 0.6503);
2862	c.lineTo(w * 0.9268, h * 0.6631);
2863	c.lineTo(w * 0.887, h * 0.6834);
2864	c.arcTo(w * 0.0089, h * 0.0082, 0, 0, 0, w * 0.8992, h * 0.691);
2865	c.lineTo(w * 0.935, h * 0.6722);
2866	c.lineTo(w * 0.9285, h * 0.6864);
2867	c.lineTo(w * 0.9008, h * 0.7007);
2868	c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.8829, h * 0.7015);
2869	c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.8764, h * 0.6827);
2870	c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.8959, h * 0.6443);
2871	c.fill();
2872
2873	c.restore();
2874	c.setShadow(false);
2875	c.setLineJoin('round');
2876
2877	c.begin();
2878	c.moveTo(w * 0.126, h * 0.1316);
2879	c.lineTo(w * 0.126, h * 0.267);
2880	c.lineTo(w * 0.378, h * 0.4023);
2881	c.lineTo(w * 0.5, h * 0.6015);
2882	c.lineTo(w * 0.622, h * 0.4023);
2883	c.lineTo(w * 0.874, h * 0.267);
2884	c.lineTo(w * 0.874, h * 0.1316);
2885	c.moveTo(0, h * 0.3346);
2886	c.lineTo(w * 0.126, h * 0.267);
2887	c.moveTo(w * 0.5, h * 0.6015);
2888	c.lineTo(w * 0.5, h);
2889	c.moveTo(w, h * 0.3346);
2890	c.lineTo(w * 0.87, h * 0.267);
2891	c.moveTo(w * 0.378, h * 0.4023);
2892	c.lineTo(w * 0.622, h * 0.4023);
2893	c.stroke();
2894
2895	c.setStrokeWidth(2 * strokeWidth);
2896	c.setStrokeColor('#292929');
2897
2898	c.begin();
2899	c.moveTo(0, h * 0.7331);
2900	c.lineTo(0, h * 0.3346);
2901	c.lineTo(w * 0.126, h * 0.1316);
2902	c.lineTo(w * 0.374, 0);
2903	c.lineTo(w * 0.626, 0);
2904	c.lineTo(w * 0.874, h * 0.1316);
2905	c.lineTo(w, h * 0.3346);
2906	c.lineTo(w, h * 0.7331);
2907	c.lineTo(w * 0.5, h);
2908	c.close();
2909	c.stroke();
2910};
2911
2912mxCellRenderer.registerShape(mxShapeAws3dOracleDatabaseServer.prototype.cst.ORACLE_DB_SERVER, mxShapeAws3dOracleDatabaseServer);//zzz
2913
2914//**********************************************************************************************************************************************************
2915//RDS Master
2916//**********************************************************************************************************************************************************
2917/**
2918* Extends mxShape.
2919*/
2920function mxShapeAws3dRdsMaster(bounds, fill, stroke, strokewidth)
2921{
2922	mxShape.call(this);
2923	this.bounds = bounds;
2924	this.fill = fill;
2925	this.stroke = stroke;
2926	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
2927};
2928
2929/**
2930* Extends mxShape.
2931*/
2932mxUtils.extend(mxShapeAws3dRdsMaster, mxShape);
2933
2934mxShapeAws3dRdsMaster.prototype.cst = {
2935		RDS_MASTER : 'mxgraph.aws3d.rdsMaster',
2936		SHADING_COLORS : 'shadingCols'
2937};
2938
2939/**
2940* Function: paintVertexShape
2941*
2942* Paints the vertex shape.
2943*/
2944mxShapeAws3dRdsMaster.prototype.paintVertexShape = function(c, x, y, w, h)
2945{
2946	c.translate(x, y);
2947
2948	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
2949	var strokeWidth1 = strokeWidth * w / 123;
2950	var strokeWidth2 = strokeWidth * h /133;
2951
2952	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
2953	c.setStrokeWidth(strokeWidth);
2954
2955	this.background(c, 0, 0, w, h, strokeWidth);
2956	c.setShadow(false);
2957	this.foreground(c, 0, 0, w, h, strokeWidth);
2958};
2959
2960mxShapeAws3dRdsMaster.prototype.background = function(c, x, y, w, h, strokeWidth)
2961{
2962	c.save();
2963	c.save();
2964	c.setStrokeWidth(2 * strokeWidth);
2965	c.setStrokeColor('#292929');
2966	c.setLineJoin('round');
2967
2968	c.begin();
2969	c.moveTo(0, h * 0.7331);
2970	c.lineTo(0, h * 0.3346);
2971	c.lineTo(w * 0.126, h * 0.1316);
2972	c.lineTo(w * 0.374, 0);
2973	c.lineTo(w * 0.626, 0);
2974	c.lineTo(w * 0.874, h * 0.1316);
2975	c.lineTo(w, h * 0.3346);
2976	c.lineTo(w, h * 0.7331);
2977	c.lineTo(w * 0.5, h);
2978	c.close();
2979	c.fillAndStroke();
2980};
2981
2982mxShapeAws3dRdsMaster.prototype.foreground = function(c, x, y, w, h, strokeWidth)
2983{
2984	c.restore();
2985	c.setShadow(false);
2986	c.setFillColor('#000000');
2987	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dRdsMaster.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
2988	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
2989	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
2990
2991	c.begin();
2992	c.moveTo(w * 0.126, h * 0.1316);
2993	c.lineTo(w * 0.126, h * 0.267);
2994	c.lineTo(w * 0.378, h * 0.4023);
2995	c.lineTo(w * 0.5, h * 0.6015);
2996	c.lineTo(w * 0.5, h);
2997	c.lineTo(0, h * 0.7331);
2998	c.lineTo(0, h * 0.3346);
2999	c.close();
3000	c.moveTo(w * 0.874, h * 0.267);
3001	c.lineTo(w * 0.874, h * 0.1316);
3002	c.lineTo(w, h * 0.3308);
3003	c.fill();
3004
3005	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
3006	c.begin();
3007	c.moveTo(w * 0.5, h);
3008	c.lineTo(w * 0.5, h * 0.6015);
3009	c.lineTo(w * 0.622, h * 0.4023);
3010	c.lineTo(w * 0.874, h * 0.267);
3011	c.lineTo(w, h * 0.3308);
3012	c.lineTo(w, h * 0.7331);
3013	c.close();
3014	c.fill();
3015
3016	c.restore();
3017
3018	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
3019	c.setFillColor(strokeColor);
3020	c.setShadow(false);
3021
3022	c.begin();
3023	c.moveTo(w * 0.1878, h * 0.1932);
3024	c.lineTo(w * 0.4854, h * 0.0414);
3025	c.lineTo(w * 0.5886, h * 0.094);
3026	c.lineTo(w * 0.4455, h * 0.2308);
3027	c.lineTo(w * 0.7122, h * 0.1579);
3028	c.lineTo(w * 0.8171, h * 0.2098);
3029	c.lineTo(w * 0.5187, h * 0.3617);
3030	c.lineTo(w * 0.4537, h * 0.3293);
3031	c.lineTo(w * 0.7016, h * 0.2053);
3032	c.lineTo(w * 0.3854, h * 0.2947);
3033	c.lineTo(w * 0.3187, h * 0.2602);
3034	c.lineTo(w * 0.4959, h * 0.0992);
3035	c.lineTo(w * 0.2504, h * 0.2256);
3036	c.close();
3037	c.fill();
3038
3039	c.setLineJoin('round');
3040
3041	c.begin();
3042	c.moveTo(w * 0.126, h * 0.1316);
3043	c.lineTo(w * 0.126, h * 0.267);
3044	c.lineTo(w * 0.378, h * 0.4023);
3045	c.lineTo(w * 0.5, h * 0.6015);
3046	c.lineTo(w * 0.622, h * 0.4023);
3047	c.lineTo(w * 0.874, h * 0.267);
3048	c.lineTo(w * 0.874, h * 0.1316);
3049	c.moveTo(0, h * 0.3346);
3050	c.lineTo(w * 0.126, h * 0.267);
3051	c.moveTo(w * 0.5, h * 0.6015);
3052	c.lineTo(w * 0.5, h);
3053	c.moveTo(w, h * 0.3346);
3054	c.lineTo(w * 0.87, h * 0.267);
3055	c.moveTo(w * 0.378, h * 0.4023);
3056	c.lineTo(w * 0.622, h * 0.4023);
3057	c.stroke();
3058
3059	c.setStrokeWidth(2 * strokeWidth);
3060	c.setStrokeColor('#292929');
3061
3062	c.begin();
3063	c.moveTo(0, h * 0.7331);
3064	c.lineTo(0, h * 0.3346);
3065	c.lineTo(w * 0.126, h * 0.1316);
3066	c.lineTo(w * 0.374, 0);
3067	c.lineTo(w * 0.626, 0);
3068	c.lineTo(w * 0.874, h * 0.1316);
3069	c.lineTo(w, h * 0.3346);
3070	c.lineTo(w, h * 0.7331);
3071	c.lineTo(w * 0.5, h);
3072	c.close();
3073	c.stroke();
3074};
3075
3076mxCellRenderer.registerShape(mxShapeAws3dRdsMaster.prototype.cst.RDS_MASTER, mxShapeAws3dRdsMaster);
3077
3078//**********************************************************************************************************************************************************
3079//RDS
3080//**********************************************************************************************************************************************************
3081/**
3082* Extends mxShape.
3083*/
3084function mxShapeAws3dRds(bounds, fill, stroke, strokewidth)
3085{
3086	mxShape.call(this);
3087	this.bounds = bounds;
3088	this.fill = fill;
3089	this.stroke = stroke;
3090	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
3091};
3092
3093/**
3094* Extends mxShape.
3095*/
3096mxUtils.extend(mxShapeAws3dRds, mxShape);
3097
3098mxShapeAws3dRds.prototype.cst = {
3099		RDS : 'mxgraph.aws3d.rds',
3100		SHADING_COLORS : 'shadingCols'
3101};
3102
3103/**
3104* Function: paintVertexShape
3105*
3106* Paints the vertex shape.
3107*/
3108mxShapeAws3dRds.prototype.paintVertexShape = function(c, x, y, w, h)
3109{
3110	c.translate(x, y);
3111
3112	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
3113	var strokeWidth1 = strokeWidth * w / 123;
3114	var strokeWidth2 = strokeWidth * h /133;
3115
3116	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
3117	c.setStrokeWidth(strokeWidth);
3118
3119	this.background(c, 0, 0, w, h, strokeWidth);
3120	c.setShadow(false);
3121	this.foreground(c, 0, 0, w, h, strokeWidth);
3122};
3123
3124mxShapeAws3dRds.prototype.background = function(c, x, y, w, h, strokeWidth)
3125{
3126	c.save();
3127	c.save();
3128	c.setStrokeWidth(2 * strokeWidth);
3129	c.setStrokeColor('#292929');
3130	c.setLineJoin('round');
3131
3132	c.begin();
3133	c.moveTo(0, h * 0.7331);
3134	c.lineTo(0, h * 0.3346);
3135	c.lineTo(w * 0.126, h * 0.1316);
3136	c.lineTo(w * 0.374, 0);
3137	c.lineTo(w * 0.626, 0);
3138	c.lineTo(w * 0.874, h * 0.1316);
3139	c.lineTo(w, h * 0.3346);
3140	c.lineTo(w, h * 0.7331);
3141	c.lineTo(w * 0.5, h);
3142	c.close();
3143	c.fillAndStroke();
3144};
3145
3146mxShapeAws3dRds.prototype.foreground = function(c, x, y, w, h, strokeWidth)
3147{
3148	c.restore();
3149	c.setShadow(false);
3150	c.setFillColor('#000000');
3151	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dRds.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
3152	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
3153	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
3154
3155	c.begin();
3156	c.moveTo(w * 0.126, h * 0.1316);
3157	c.lineTo(w * 0.126, h * 0.267);
3158	c.lineTo(w * 0.378, h * 0.4023);
3159	c.lineTo(w * 0.5, h * 0.6015);
3160	c.lineTo(w * 0.5, h);
3161	c.lineTo(0, h * 0.7331);
3162	c.lineTo(0, h * 0.3346);
3163	c.close();
3164	c.moveTo(w * 0.874, h * 0.267);
3165	c.lineTo(w * 0.874, h * 0.1316);
3166	c.lineTo(w, h * 0.3308);
3167	c.fill();
3168
3169	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
3170	c.begin();
3171	c.moveTo(w * 0.5, h);
3172	c.lineTo(w * 0.5, h * 0.6015);
3173	c.lineTo(w * 0.622, h * 0.4023);
3174	c.lineTo(w * 0.874, h * 0.267);
3175	c.lineTo(w, h * 0.3308);
3176	c.lineTo(w, h * 0.7331);
3177	c.close();
3178	c.fill();
3179
3180	c.restore();
3181
3182	c.setFillColor('#ffffff');
3183	c.setShadow(false);
3184	c.begin();
3185	c.moveTo(0, h * 0.6053);
3186	c.lineTo(w * 0.5, h * 0.8722);
3187	c.lineTo(w, h * 0.6053);
3188	c.lineTo(w, h * 0.6278);
3189	c.lineTo(w * 0.5, h * 0.8947);
3190	c.lineTo(0, h * 0.6278);
3191	c.close();
3192	c.fill();
3193
3194	c.setLineJoin('round');
3195
3196	c.begin();
3197	c.moveTo(w * 0.126, h * 0.1316);
3198	c.lineTo(w * 0.126, h * 0.267);
3199	c.lineTo(w * 0.378, h * 0.4023);
3200	c.lineTo(w * 0.5, h * 0.6015);
3201	c.lineTo(w * 0.622, h * 0.4023);
3202	c.lineTo(w * 0.874, h * 0.267);
3203	c.lineTo(w * 0.874, h * 0.1316);
3204	c.moveTo(0, h * 0.3346);
3205	c.lineTo(w * 0.126, h * 0.267);
3206	c.moveTo(w * 0.5, h * 0.6015);
3207	c.lineTo(w * 0.5, h);
3208	c.moveTo(w, h * 0.3346);
3209	c.lineTo(w * 0.87, h * 0.267);
3210	c.moveTo(w * 0.378, h * 0.4023);
3211	c.lineTo(w * 0.622, h * 0.4023);
3212	c.stroke();
3213
3214	c.setStrokeWidth(2 * strokeWidth);
3215	c.setStrokeColor('#292929');
3216
3217	c.begin();
3218	c.moveTo(0, h * 0.7331);
3219	c.lineTo(0, h * 0.3346);
3220	c.lineTo(w * 0.126, h * 0.1316);
3221	c.lineTo(w * 0.374, 0);
3222	c.lineTo(w * 0.626, 0);
3223	c.lineTo(w * 0.874, h * 0.1316);
3224	c.lineTo(w, h * 0.3346);
3225	c.lineTo(w, h * 0.7331);
3226	c.lineTo(w * 0.5, h);
3227	c.close();
3228	c.stroke();
3229};
3230
3231mxCellRenderer.registerShape(mxShapeAws3dRds.prototype.cst.RDS, mxShapeAws3dRds);
3232
3233//**********************************************************************************************************************************************************
3234//Route 53
3235//**********************************************************************************************************************************************************
3236/**
3237* Extends mxShape.
3238*/
3239function mxShapeAws3dRoute53(bounds, fill, stroke, strokewidth)
3240{
3241	mxShape.call(this);
3242	this.bounds = bounds;
3243	this.fill = fill;
3244	this.stroke = stroke;
3245	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
3246};
3247
3248/**
3249* Extends mxShape.
3250*/
3251mxUtils.extend(mxShapeAws3dRoute53, mxShape);
3252
3253mxShapeAws3dRoute53.prototype.cst = {
3254		ROUTE_53 : 'mxgraph.aws3d.route53',
3255		SHADING_COLORS : 'shadingCols'
3256};
3257
3258/**
3259* Function: paintVertexShape
3260*
3261* Paints the vertex shape.
3262*/
3263mxShapeAws3dRoute53.prototype.paintVertexShape = function(c, x, y, w, h)
3264{
3265	c.translate(x, y);
3266
3267	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
3268	var strokeWidth1 = strokeWidth * w / 117;
3269	var strokeWidth2 = strokeWidth * h /134.4;
3270
3271	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
3272	c.setStrokeWidth(strokeWidth);
3273
3274	this.background(c, 0, 0, w, h, strokeWidth);
3275	c.setShadow(false);
3276	this.foreground(c, 0, 0, w, h, strokeWidth);
3277};
3278
3279mxShapeAws3dRoute53.prototype.background = function(c, x, y, w, h, strokeWidth)
3280{
3281	c.save();
3282	c.save();
3283	c.setStrokeWidth(2 * strokeWidth);
3284	c.setStrokeColor('#292929');
3285	c.setLineJoin('round');
3286
3287	c.begin();
3288	c.moveTo(0, h * 0.6994);
3289	c.lineTo(0, h * 0.2009);
3290	c.lineTo(w * 0.0427, h * 0.0781);
3291	c.lineTo(w * 0.7974, 0);
3292	c.lineTo(w, h * 0.1004);
3293	c.lineTo(w, h * 0.5915);
3294	c.lineTo(w * 0.8376, h * 0.9784);
3295	c.lineTo(w * 0.5983, h);
3296	c.close();
3297	c.fillAndStroke();
3298};
3299
3300mxShapeAws3dRoute53.prototype.foreground = function(c, x, y, w, h, strokeWidth)
3301{
3302	c.restore();
3303	c.setShadow(false);
3304	c.setFillColor('#000000');
3305	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dRoute53.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
3306	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
3307	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
3308
3309	c.begin();
3310	c.moveTo(0, h * 0.2009);
3311	c.lineTo(w * 0.6009, h * 0.5007);
3312	c.lineTo(w * 0.8376, h * 0.4799);
3313	c.lineTo(w * 0.8376, h * 0.9784);
3314	c.lineTo(w * 0.5966, h);
3315	c.lineTo(0, h * 0.6979);
3316	c.close();
3317	c.fill();
3318
3319	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
3320	c.begin();
3321	c.moveTo(w * 0.8348, h * 0.4861);
3322	c.lineTo(w * 0.9985, h * 0.0992);
3323	c.lineTo(w, h * 0.5952);
3324	c.lineTo(w * 0.8404, h * 0.9747);
3325	c.close();
3326	c.fill();
3327
3328	c.restore();
3329	c.setShadow(false);
3330	c.setLineJoin('round');
3331
3332	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
3333	c.setFillColor(strokeColor);
3334
3335	c.begin();
3336	c.moveTo(w * 0.5855, h * 0.1079);
3337	c.arcTo(w * 0.094, h * 0.0744, 0, 0, 0, w * 0.6863, h * 0.1548);
3338	c.arcTo(w * 0.0855, h * 0.0446, 0, 0, 0, w * 0.7761, h * 0.2031);
3339	c.lineTo(w * 0.7726, h * 0.2455);
3340	c.arcTo(w * 0.0769, h * 0.0298, 0, 0, 0, w * 0.694, h * 0.2693);
3341	c.arcTo(w * 0.0684, h * 0.0446, 0, 0, 1, w * 0.5897, h * 0.3051);
3342	c.arcTo(w * 0.4274, h * 0.372, 0, 0, 0, w * 0.4573, h * 0.2753);
3343	c.arcTo(w * 0.0855, h * 0.0744, 0, 0, 0, w * 0.4188, h * 0.2344);
3344	c.lineTo(w * 0.3846, h * 0.2083);
3345	c.arcTo(w * 0.0769, h * 0.0372, 0, 0, 1, w * 0.4103, h * 0.1525);
3346	c.arcTo(w * 0.0855, h * 0.0409, 0, 0, 0, w * 0.4906, h * 0.1079);
3347	c.close();
3348	c.fill();
3349
3350	c.begin();
3351	c.moveTo(0, h * 0.2009);
3352	c.lineTo(w * 0.6009, h * 0.5007);
3353	c.lineTo(w * 0.8376, h * 0.4799);
3354	c.lineTo(w * 0.8376, h * 0.9784);
3355	c.lineTo(w * 0.5966, h);
3356	c.lineTo(0, h * 0.6979);
3357	c.close();
3358	c.moveTo(w * 0.8348, h * 0.4861);
3359	c.lineTo(w * 0.9985, h * 0.0992);
3360	c.lineTo(w, h * 0.5952);
3361	c.lineTo(w * 0.8404, h * 0.9747);
3362	c.close();
3363	c.moveTo(w * 0.6009, h * 0.5007);
3364	c.lineTo(w * 0.6009, h);
3365	c.stroke();
3366
3367	c.setStrokeWidth(2 * strokeWidth);
3368	c.setStrokeColor('#292929');
3369
3370	c.begin();
3371	c.moveTo(0, h * 0.6994);
3372	c.lineTo(0, h * 0.2009);
3373	c.lineTo(w * 0.0427, h * 0.0781);
3374	c.lineTo(w * 0.7974, 0);
3375	c.lineTo(w, h * 0.1004);
3376	c.lineTo(w, h * 0.5915);
3377	c.lineTo(w * 0.8376, h * 0.9784);
3378	c.lineTo(w * 0.5983, h);
3379	c.close();
3380	c.stroke();
3381};
3382
3383mxCellRenderer.registerShape(mxShapeAws3dRoute53.prototype.cst.ROUTE_53, mxShapeAws3dRoute53);
3384
3385//**********************************************************************************************************************************************************
3386//S3 Bucket
3387//**********************************************************************************************************************************************************
3388/**
3389* Extends mxShape.
3390*/
3391function mxShapeAws3dS3Bucket(bounds, fill, stroke, strokewidth)
3392{
3393	mxShape.call(this);
3394	this.bounds = bounds;
3395	this.fill = fill;
3396	this.stroke = stroke;
3397	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
3398};
3399
3400/**
3401* Extends mxShape.
3402*/
3403mxUtils.extend(mxShapeAws3dS3Bucket, mxShape);
3404
3405mxShapeAws3dS3Bucket.prototype.cst = {
3406		S3_BUCKET : 'mxgraph.aws3d.s3Bucket',
3407		SHADING_COLORS : 'shadingCols'
3408};
3409
3410/**
3411* Function: paintVertexShape
3412*
3413* Paints the vertex shape.
3414*/
3415mxShapeAws3dS3Bucket.prototype.paintVertexShape = function(c, x, y, w, h)
3416{
3417	c.translate(x, y);
3418
3419	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
3420	var strokeWidth1 = strokeWidth * w / 61.5;
3421	var strokeWidth2 = strokeWidth * h / 63.8;
3422	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
3423
3424	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
3425
3426	c.setShadow(false);
3427	c.setStrokeWidth(strokeWidth);
3428	c.save();
3429	c.save();
3430	c.setStrokeWidth(2 * strokeWidth);
3431	c.setStrokeColor('#292929');
3432	c.setLineJoin('round');
3433
3434	if (isShadow == 1)
3435	{
3436		c.setShadow(true);
3437	}
3438
3439	c.begin();
3440	c.moveTo(0, h * 0.2774);
3441	c.lineTo(w * 0.5, 0);
3442	c.lineTo(w, h * 0.2774);
3443	c.lineTo(w * 0.7967, h * 0.8307);
3444	c.lineTo(w * 0.5, h);
3445	c.lineTo(w * 0.1951, h * 0.8307);
3446	c.close();
3447	c.fillAndStroke();
3448
3449	c.restore();
3450	c.setFillColor('#000000');
3451	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dS3Bucket.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
3452	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
3453	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
3454
3455	c.begin();
3456	c.moveTo(0, h * 0.2774);
3457	c.lineTo(w * 0.5, h * 0.5564);
3458	c.lineTo(w * 0.5, h);
3459	c.lineTo(w * 0.1984, h * 0.8307);
3460	c.close();
3461	c.fill();
3462
3463	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
3464	c.begin();
3465	c.moveTo(w * 0.5, h * 0.5533);
3466	c.lineTo(w, h * 0.2774);
3467	c.lineTo(w * 0.7967, h * 0.8307);
3468	c.lineTo(w * 0.5, h);
3469	c.close();
3470	c.fill();
3471
3472	c.restore();
3473	c.setLineJoin('round');
3474
3475	c.begin();
3476	c.moveTo(0, h * 0.2774);
3477	c.lineTo(w * 0.5, h * 0.5564);
3478	c.lineTo(w, h * 0.2774);
3479	c.stroke();
3480
3481	c.begin();
3482	c.moveTo(w * 0.5, h * 0.5564);
3483	c.lineTo(w * 0.5, h);
3484	c.stroke();
3485
3486	c.setStrokeWidth(2 * strokeWidth);
3487	c.setStrokeColor('#292929');
3488	c.setLineJoin('round');
3489
3490	c.begin();
3491	c.moveTo(0, h * 0.2774);
3492	c.lineTo(w * 0.5008, 0);
3493	c.lineTo(w, h * 0.2774);
3494	c.lineTo(w * 0.7967, h * 0.8307);
3495	c.lineTo(w * 0.5008, h);
3496	c.lineTo(w * 0.1951, h * 0.8307);
3497	c.close();
3498	c.stroke();
3499};
3500
3501mxCellRenderer.registerShape(mxShapeAws3dS3Bucket.prototype.cst.S3_BUCKET, mxShapeAws3dS3Bucket);
3502
3503//**********************************************************************************************************************************************************
3504//S3
3505//**********************************************************************************************************************************************************
3506/**
3507* Extends mxShape.
3508*/
3509function mxShapeAws3dS3(bounds, fill, stroke, strokewidth)
3510{
3511	mxShape.call(this);
3512	this.bounds = bounds;
3513	this.fill = fill;
3514	this.stroke = stroke;
3515	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
3516};
3517
3518/**
3519* Extends mxShape.
3520*/
3521mxUtils.extend(mxShapeAws3dS3, mxShape);
3522
3523mxShapeAws3dS3.prototype.cst = {
3524		S3 : 'mxgraph.aws3d.s3',
3525		SHADING_COLORS : 'shadingCols'
3526};
3527
3528/**
3529* Function: paintVertexShape
3530*
3531* Paints the vertex shape.
3532*/
3533mxShapeAws3dS3.prototype.paintVertexShape = function(c, x, y, w, h)
3534{
3535	c.translate(x, y);
3536
3537	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
3538	var strokeWidth1 = strokeWidth * w / 231.5;
3539	var strokeWidth2 = strokeWidth * h / 239;
3540
3541	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
3542
3543	this.background(c, 0, 0, w, h, strokeWidth);
3544	c.setShadow(false);
3545	this.foreground(c, 0, 0, w, h, strokeWidth);
3546};
3547
3548mxShapeAws3dS3.prototype.background = function(c, x, y, w, h, strokeWidth)
3549{
3550	c.setStrokeWidth(strokeWidth);
3551	c.save();
3552	c.save();
3553	c.setStrokeWidth(2 * strokeWidth);
3554	c.setStrokeColor('#292929');
3555	c.setLineJoin('round');
3556
3557	c.begin();
3558	c.moveTo(0, h * 0.7782);
3559	c.lineTo(0, h * 0.3406);
3560	c.lineTo(w * 0.5974, 0);
3561	c.lineTo(w, h * 0.2218);
3562	c.lineTo(w, h * 0.6674);
3563	c.lineTo(w * 0.3991, h);
3564	c.close();
3565	c.fillAndStroke();
3566};
3567
3568mxShapeAws3dS3.prototype.foreground = function(c, x, y, w, h, strokeWidth)
3569{
3570	c.restore();
3571	c.setShadow(false);
3572	c.setFillColor('#000000');
3573	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dS3.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
3574	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
3575	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
3576
3577	c.begin();
3578	c.moveTo(0, h * 0.3406);
3579	c.lineTo(w * 0.3991, h * 0.5548);
3580	c.lineTo(w * 0.3991, h);
3581	c.lineTo(0, h * 0.7782);
3582	c.close();
3583	c.fill();
3584
3585	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
3586	c.begin();
3587	c.moveTo(w * 0.3991, h * 0.5548);
3588	c.lineTo(w, h * 0.2218);
3589	c.lineTo(w, h * 0.6661);
3590	c.lineTo(w * 0.3991, h);
3591	c.close();
3592	c.fill();
3593
3594	c.restore();
3595	c.setShadow(false);
3596	c.setLineJoin('round');
3597
3598	c.begin();
3599	c.moveTo(0, h * 0.3406);
3600	c.lineTo(w * 0.3991, h * 0.5548);
3601	c.lineTo(w, h * 0.2218);
3602	c.moveTo(w * 0.3991, h * 0.5548);
3603	c.lineTo(w * 0.3991, h);
3604	c.moveTo(w * 0.3991, h * 0.3335);
3605	c.lineTo(w * 0.2009, h * 0.448);
3606	c.lineTo(w * 0.2009, h * 0.8891);
3607	c.moveTo(w * 0.5983, h * 0.2209);
3608	c.lineTo(w * 0.7948, h * 0.1109);
3609	c.moveTo(w * 0.2022, h * 0.2218);
3610	c.lineTo(w * 0.5991, h * 0.4448);
3611	c.lineTo(w * 0.5991, h * 0.8891);
3612	c.moveTo(w * 0.4004, h * 0.1117);
3613	c.lineTo(w * 0.7978, h * 0.3335);
3614	c.lineTo(w * 0.7978, h * 0.7791);
3615	c.stroke();
3616
3617	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
3618	c.setFillColor(strokeColor);
3619	c.begin();
3620	c.moveTo(w * 0.4773, h * 0.2155);
3621	c.arcTo(w * 0.0086, h * 0.0046, 0, 0, 1, w * 0.4903, h * 0.2096);
3622	c.arcTo(w * 0.2808, h * 0.272, 0, 0, 1, w * 0.6004, h * 0.2619);
3623	c.arcTo(w * 0.108, h * 0.105, 0, 0, 1, w * 0.6177, h * 0.277);
3624	c.arcTo(w * 0.0065, h * 0.0063, 0, 0, 1, w * 0.6099, h * 0.2879);
3625	c.arcTo(w * 0.1944, h * 0.1883, 0, 0, 1, w * 0.5378, h * 0.2607);
3626	c.arcTo(w * 0.216, h * 0.2092, 0, 0, 1, w * 0.4773, h * 0.2155);
3627	c.close();
3628	c.fill();
3629
3630	c.begin();
3631	c.moveTo(w * 0.4687, h * 0.2138);
3632	c.arcTo(w * 0.1512, h * 0.1464, 0, 0, 0, w * 0.4838, h * 0.2343);
3633	c.arcTo(w * 0.2376, h * 0.2301, 0, 0, 0, w * 0.5529, h * 0.2774);
3634	c.arcTo(w * 0.1728, h * 0.1674, 0, 0, 0, w * 0.6091, h * 0.2954);
3635	c.lineTo(w * 0.4946, h * 0.3339);
3636	c.arcTo(w * 0.1944, h * 0.1883, 0, 0, 1, w * 0.4549, h * 0.3205);
3637	c.arcTo(w * 0.1944, h * 0.1883, 0, 0, 1, w * 0.419, h * 0.3004);
3638	c.arcTo(w * 0.1944, h * 0.1883, 0, 0, 1, w * 0.3965, h * 0.2795);
3639	c.close();
3640	c.fill();
3641
3642	c.setStrokeWidth(2 * strokeWidth);
3643	c.setStrokeColor('#292929');
3644	c.setLineJoin('round');
3645
3646	c.begin();
3647	c.moveTo(0, h * 0.7782);
3648	c.lineTo(0, h * 0.3406);
3649	c.lineTo(w * 0.5974, 0);
3650	c.lineTo(w, h * 0.2218);
3651	c.lineTo(w, h * 0.6674);
3652	c.lineTo(w * 0.3991, h);
3653	c.close();
3654	c.stroke();
3655};
3656
3657mxCellRenderer.registerShape(mxShapeAws3dS3.prototype.cst.S3, mxShapeAws3dS3);
3658
3659//**********************************************************************************************************************************************************
3660//SimpleDB
3661//**********************************************************************************************************************************************************
3662/**
3663* Extends mxShape.
3664*/
3665function mxShapeAws3dSimpleDB(bounds, fill, stroke, strokewidth)
3666{
3667	mxShape.call(this);
3668	this.bounds = bounds;
3669	this.fill = fill;
3670	this.stroke = stroke;
3671	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
3672};
3673
3674/**
3675* Extends mxShape.
3676*/
3677mxUtils.extend(mxShapeAws3dSimpleDB, mxShape);
3678
3679mxShapeAws3dSimpleDB.prototype.cst = {
3680		SIMPLE_DB : 'mxgraph.aws3d.simpleDb',
3681		SHADING_COLORS : 'shadingCols'
3682};
3683
3684/**
3685* Function: paintVertexShape
3686*
3687* Paints the vertex shape.
3688*/
3689mxShapeAws3dSimpleDB.prototype.paintVertexShape = function(c, x, y, w, h)
3690{
3691	c.translate(x, y);
3692
3693	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
3694	var strokeWidth1 = strokeWidth * w / 123;
3695	var strokeWidth2 = strokeWidth * h /133;
3696
3697	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
3698	c.setStrokeWidth(strokeWidth);
3699
3700	this.background(c, 0, 0, w, h, strokeWidth);
3701	c.setShadow(false);
3702	this.foreground(c, 0, 0, w, h, strokeWidth);
3703};
3704
3705mxShapeAws3dSimpleDB.prototype.background = function(c, x, y, w, h, strokeWidth)
3706{
3707	c.save();
3708	c.save();
3709	c.save();
3710	c.setStrokeWidth(2 * strokeWidth);
3711	c.setStrokeColor('#292929');
3712	c.setLineJoin('round');
3713
3714	c.begin();
3715	c.moveTo(0, h * 0.7331);
3716	c.lineTo(0, h * 0.3346);
3717	c.lineTo(w * 0.126, h * 0.1316);
3718	c.lineTo(w * 0.374, 0);
3719	c.lineTo(w * 0.626, 0);
3720	c.lineTo(w * 0.874, h * 0.1316);
3721	c.lineTo(w, h * 0.3346);
3722	c.lineTo(w, h * 0.7331);
3723	c.lineTo(w * 0.5, h);
3724	c.close();
3725	c.fillAndStroke();
3726};
3727
3728mxShapeAws3dSimpleDB.prototype.foreground = function(c, x, y, w, h, strokeWidth)
3729{
3730	c.restore();
3731	c.setShadow(false);
3732	c.setFillColor('#000000');
3733	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSimpleDB.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
3734	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
3735	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
3736
3737	c.begin();
3738	c.moveTo(w * 0.126, h * 0.1316);
3739	c.lineTo(w * 0.126, h * 0.267);
3740	c.lineTo(w * 0.378, h * 0.4023);
3741	c.lineTo(w * 0.5, h * 0.6015);
3742	c.lineTo(w * 0.5, h);
3743	c.lineTo(0, h * 0.7331);
3744	c.lineTo(0, h * 0.3346);
3745	c.close();
3746	c.moveTo(w * 0.874, h * 0.267);
3747	c.lineTo(w * 0.874, h * 0.1316);
3748	c.lineTo(w, h * 0.3308);
3749	c.fill();
3750
3751	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
3752	c.begin();
3753	c.moveTo(w * 0.5, h);
3754	c.lineTo(w * 0.5, h * 0.6015);
3755	c.lineTo(w * 0.622, h * 0.4023);
3756	c.lineTo(w * 0.874, h * 0.267);
3757	c.lineTo(w, h * 0.3308);
3758	c.lineTo(w, h * 0.7331);
3759	c.close();
3760	c.fill();
3761
3762	c.restore();
3763
3764	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
3765	c.setFillColor(strokeColor);
3766	c.setShadow(false);
3767
3768	c.begin();
3769	c.moveTo(w * 0.1821, h * 0.182);
3770	c.lineTo(w * 0.4659, h * 0.0308);
3771	c.lineTo(w * 0.822, h * 0.2218);
3772	c.lineTo(w * 0.539, h * 0.3714);
3773	c.close();
3774	c.fill();
3775
3776	c.setLineJoin('round');
3777
3778	c.begin();
3779	c.moveTo(w * 0.126, h * 0.1316);
3780	c.lineTo(w * 0.126, h * 0.267);
3781	c.lineTo(w * 0.378, h * 0.4023);
3782	c.lineTo(w * 0.5, h * 0.6015);
3783	c.lineTo(w * 0.622, h * 0.4023);
3784	c.lineTo(w * 0.874, h * 0.267);
3785	c.lineTo(w * 0.874, h * 0.1316);
3786	c.moveTo(0, h * 0.3346);
3787	c.lineTo(w * 0.126, h * 0.267);
3788	c.moveTo(w * 0.5, h * 0.6015);
3789	c.lineTo(w * 0.5, h);
3790	c.moveTo(w, h * 0.3346);
3791	c.lineTo(w * 0.87, h * 0.267);
3792	c.moveTo(w * 0.378, h * 0.4023);
3793	c.lineTo(w * 0.622, h * 0.4023);
3794	c.stroke();
3795
3796	c.restore();
3797	c.setShadow(false);
3798	var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#ffffff');
3799	c.setStrokeColor(fillColor);
3800	c.setStrokeWidth(2.2 * strokeWidth);
3801	c.begin();
3802	c.moveTo(w * 0.2382, h * 0.2218);
3803	c.lineTo(w * 0.5415, h * 0.0602);
3804
3805	c.moveTo(w * 0.3821, h * 0.0564);
3806	c.lineTo(w * 0.7737, h * 0.2656);
3807
3808	c.moveTo(w * 0.2967, h * 0.0915);
3809	c.lineTo(w * 0.7114, h * 0.312);
3810
3811	c.moveTo(w * 0.2209, h * 0.1316);
3812	c.lineTo(w * 0.6179, h * 0.3434);
3813	c.stroke();
3814
3815	c.setStrokeWidth(2 * strokeWidth);
3816	c.setStrokeColor('#292929');
3817
3818	c.begin();
3819	c.moveTo(0, h * 0.7331);
3820	c.lineTo(0, h * 0.3346);
3821	c.lineTo(w * 0.126, h * 0.1316);
3822	c.lineTo(w * 0.374, 0);
3823	c.lineTo(w * 0.626, 0);
3824	c.lineTo(w * 0.874, h * 0.1316);
3825	c.lineTo(w, h * 0.3346);
3826	c.lineTo(w, h * 0.7331);
3827	c.lineTo(w * 0.5, h);
3828	c.close();
3829	c.stroke();
3830};
3831
3832mxCellRenderer.registerShape(mxShapeAws3dSimpleDB.prototype.cst.SIMPLE_DB, mxShapeAws3dSimpleDB);
3833
3834//**********************************************************************************************************************************************************
3835//SQS
3836//**********************************************************************************************************************************************************
3837/**
3838* Extends mxShape.
3839*/
3840function mxShapeAws3dSqs(bounds, fill, stroke, strokewidth)
3841{
3842	mxShape.call(this);
3843	this.bounds = bounds;
3844	this.fill = fill;
3845	this.stroke = stroke;
3846	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
3847};
3848
3849/**
3850* Extends mxShape.
3851*/
3852mxUtils.extend(mxShapeAws3dSqs, mxShape);
3853
3854mxShapeAws3dSqs.prototype.cst = {
3855		SQS : 'mxgraph.aws3d.sqs',
3856		SHADING_COLORS : 'shadingCols'
3857};
3858
3859/**
3860* Function: paintVertexShape
3861*
3862* Paints the vertex shape.
3863*/
3864mxShapeAws3dSqs.prototype.paintVertexShape = function(c, x, y, w, h)
3865{
3866	c.translate(x, y);
3867
3868	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
3869	var strokeWidth1 = strokeWidth * w / 184;
3870	var strokeWidth2 = strokeWidth * h / 212.75;
3871
3872	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
3873
3874	this.background(c, 0, 0, w, h, strokeWidth);
3875	c.setShadow(false);
3876	this.foreground(c, 0, 0, w, h, strokeWidth);
3877};
3878
3879mxShapeAws3dSqs.prototype.background = function(c, x, y, w, h, strokeWidth)
3880{
3881	c.setStrokeWidth(strokeWidth);
3882	c.save();
3883	c.save();
3884	c.setStrokeWidth(2 * strokeWidth);
3885	c.setStrokeColor('#292929');
3886	c.setLineJoin('round');
3887
3888	c.begin();
3889	c.moveTo(0, h * 0.7485);
3890	c.lineTo(0, h * 0.584);
3891	c.lineTo(w * 0.1658, h * 0.1666);
3892	c.lineTo(w * 0.5, 0);
3893	c.lineTo(w * 0.8337, h * 0.1666);
3894	c.lineTo(w, h * 0.584);
3895	c.lineTo(w, h * 0.7485);
3896	c.lineTo(w * 0.5, h);
3897	c.close();
3898	c.fillAndStroke();
3899};
3900
3901mxShapeAws3dSqs.prototype.foreground = function(c, x, y, w, h, strokeWidth)
3902{
3903	c.restore();
3904	c.setShadow(false);
3905	c.setFillColor('#000000');
3906	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSqs.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
3907	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
3908	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
3909
3910	c.begin();
3911	c.moveTo(w * 0.1658, h * 0.1671);
3912	c.lineTo(w * 0.5, h * 0.334);
3913	c.lineTo(w * 0.5, h);
3914	c.lineTo(0, h * 0.7485);
3915	c.lineTo(0, h * 0.584);
3916	c.close();
3917	c.fill();
3918
3919	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
3920	c.begin();
3921	c.moveTo(w * 0.5, h * 0.3344);
3922	c.lineTo(w * 0.8332, h * 0.1671);
3923	c.lineTo(w, h * 0.584);
3924	c.lineTo(w, h * 0.7509);
3925	c.lineTo(w * 0.5, h);
3926	c.close();
3927	c.fill();
3928
3929	c.restore();
3930	c.setShadow(false);
3931	c.setLineJoin('round');
3932
3933	c.begin();
3934	c.moveTo(w * 0.6674, h * 0.0844);
3935	c.lineTo(w * 0.3337, h * 0.2512);
3936	c.lineTo(w * 0.25, h * 0.7109);
3937	c.lineTo(w * 0.25, h * 0.8736);
3938
3939	c.moveTo(w * 0.3326, h * 0.0839);
3940	c.lineTo(w * 0.6674, h * 0.2512);
3941	c.lineTo(w * 0.75, h * 0.7053);
3942	c.lineTo(w * 0.75, h * 0.874);
3943
3944	c.moveTo(0, h * 0.584);
3945	c.lineTo(w * 0.5, h * 0.8331);
3946	c.lineTo(w, h * 0.584);
3947
3948	c.moveTo(w * 0.1658, h * 0.1671);
3949	c.lineTo(w * 0.5, h * 0.334);
3950	c.lineTo(w * 0.8332, h * 0.1671);
3951
3952	c.moveTo(w * 0.5, h * 0.334);
3953	c.lineTo(w * 0.5, h);
3954	c.stroke();
3955
3956	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
3957	c.setFillColor(strokeColor);
3958	c.begin();
3959	c.moveTo(w * 0.3337, h * 0.1511);
3960	c.lineTo(w * 0.4668, h * 0.0848);
3961	c.lineTo(w * 0.6663, h * 0.184);
3962	c.lineTo(w * 0.5337, h * 0.2503);
3963	c.close();
3964	c.fill();
3965
3966	var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#000000');
3967	c.setFillColor(fillColor);
3968
3969	c.begin();
3970	c.moveTo(w * 0.3902, h * 0.153);
3971	c.lineTo(w * 0.4701, h * 0.113);
3972	c.lineTo(w * 0.4701, h * 0.153);
3973	c.close();
3974	c.moveTo(w * 0.4402, h * 0.1784);
3975	c.lineTo(w * 0.5196, h * 0.1384);
3976	c.lineTo(w * 0.5196, h * 0.1784);
3977	c.close();
3978	c.moveTo(w * 0.4908, h * 0.2033);
3979	c.lineTo(w * 0.5701, h * 0.1633);
3980	c.lineTo(w * 0.5701, h * 0.2033);
3981	c.close();
3982	c.fill();
3983
3984	c.setStrokeWidth(2 * strokeWidth);
3985	c.setStrokeColor('#292929');
3986	c.setLineJoin('round');
3987
3988	c.begin();
3989	c.moveTo(0, h * 0.7485);
3990	c.lineTo(0, h * 0.584);
3991	c.lineTo(w * 0.1658, h * 0.1666);
3992	c.lineTo(w * 0.5, 0);
3993	c.lineTo(w * 0.8337, h * 0.1666);
3994	c.lineTo(w, h * 0.584);
3995	c.lineTo(w, h * 0.7485);
3996	c.lineTo(w * 0.5, h);
3997	c.close();
3998	c.stroke();
3999};
4000
4001mxCellRenderer.registerShape(mxShapeAws3dSqs.prototype.cst.SQS, mxShapeAws3dSqs);
4002
4003//**********************************************************************************************************************************************************
4004//VPC Gateway
4005//**********************************************************************************************************************************************************
4006/**
4007* Extends mxShape.
4008*/
4009function mxShapeAws3dVpcGateway(bounds, fill, stroke, strokewidth)
4010{
4011	mxShape.call(this);
4012	this.bounds = bounds;
4013	this.fill = fill;
4014	this.stroke = stroke;
4015	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
4016};
4017
4018/**
4019* Extends mxShape.
4020*/
4021mxUtils.extend(mxShapeAws3dVpcGateway, mxShape);
4022
4023mxShapeAws3dVpcGateway.prototype.cst = {
4024		VPC_GATEWAY : 'mxgraph.aws3d.vpcGateway',
4025		SHADING_COLORS : 'shadingCols'
4026};
4027
4028/**
4029* Function: paintVertexShape
4030*
4031* Paints the vertex shape.
4032*/
4033mxShapeAws3dVpcGateway.prototype.paintVertexShape = function(c, x, y, w, h)
4034{
4035	c.translate(x, y);
4036
4037	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
4038	var strokeWidth1 = strokeWidth * w / 116.7;
4039	var strokeWidth2 = strokeWidth * h / 102.8;
4040
4041	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
4042
4043	this.background(c, 0, 0, w, h, strokeWidth);
4044	c.setShadow(false);
4045	this.foreground(c, 0, 0, w, h, strokeWidth);
4046};
4047
4048mxShapeAws3dVpcGateway.prototype.background = function(c, x, y, w, h, strokeWidth)
4049{
4050	c.setStrokeWidth(strokeWidth);
4051	c.save();
4052	c.save();
4053	c.save();
4054	c.save();
4055	c.save();
4056	c.setStrokeWidth(2 * strokeWidth);
4057	c.setStrokeColor('#292929');
4058	c.setLineJoin('round');
4059
4060	c.begin();
4061	c.moveTo(w * 0.5801, h * 0.5447);
4062	c.lineTo(w * 0.5801, h * 0.035);
4063	c.lineTo(w * 0.1054, 0);
4064	c.lineTo(0, h * 0.0691);
4065	c.lineTo(0, h * 0.4134);
4066	c.lineTo(w * 0.3188, h * 0.7247);
4067	c.close();
4068	c.fillAndStroke();
4069
4070	c.restore();
4071	c.save();
4072	c.setShadow(false);
4073	c.setFillColor('#000000');
4074	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dVpcGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
4075	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
4076	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
4077	c.begin();
4078	c.moveTo(w * 0.5801, h * 0.5447);
4079	c.lineTo(w * 0.5801, h * 0.035);
4080	c.lineTo(w * 0.3162, h * 0.2072);
4081	c.lineTo(w * 0.3162, h * 0.7247);
4082	c.close();
4083	c.fill();
4084
4085	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
4086	c.begin();
4087	c.moveTo(w * 0.3162, h * 0.2072);
4088	c.lineTo(0, h * 0.0691);
4089	c.lineTo(0, h * 0.4134);
4090	c.lineTo(w * 0.3162, h * 0.7247);
4091	c.close();
4092	c.fill();
4093
4094	c.restore();
4095	c.setShadow(false);
4096	c.begin();
4097	c.moveTo(w * 0.5801, h * 0.5447);
4098	c.lineTo(w * 0.5801, h * 0.035);
4099	c.lineTo(w * 0.3162, h * 0.2072);
4100	c.lineTo(w * 0.3162, h * 0.7247);
4101	c.close();
4102	c.stroke();
4103
4104	c.restore();
4105	c.setLineJoin('round');
4106	c.setShadow(false);
4107
4108	c.begin();
4109	c.moveTo(w * 0.3162, h * 0.2072);
4110	c.lineTo(0, h * 0.0691);
4111	c.lineTo(0, h * 0.4134);
4112	c.lineTo(w * 0.3162, h * 0.7247);
4113	c.close();
4114	c.stroke();
4115
4116	c.setStrokeWidth(2 * strokeWidth);
4117	c.setStrokeColor('#292929');
4118
4119	c.begin();
4120	c.moveTo(w * 0.5801, h * 0.5447);
4121	c.lineTo(w * 0.5801, h * 0.035);
4122	c.lineTo(w * 0.1054, 0);
4123	c.lineTo(0, h * 0.0691);
4124	c.lineTo(0, h * 0.4134);
4125	c.lineTo(w * 0.3188, h * 0.7247);
4126	c.close();
4127	c.stroke();
4128
4129	c.restore();
4130	c.setStrokeWidth(2 * strokeWidth);
4131	c.setStrokeColor('#292929');
4132	c.setLineJoin('round');
4133
4134	c.begin();
4135	c.moveTo(w, h * 0.929);
4136	c.lineTo(w, h * 0.5866);
4137	c.lineTo(w * 0.6829, h * 0.1031);
4138	c.lineTo(w * 0.4216, h * 0.2753);
4139	c.lineTo(w * 0.4216, h * 0.7928);
4140	c.lineTo(w * 0.8946, h);
4141	c.close();
4142	c.fillAndStroke();
4143};
4144
4145mxShapeAws3dVpcGateway.prototype.foreground = function(c, x, y, w, h, strokeWidth)
4146{
4147	c.restore();
4148	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
4149	c.setShadow(false);
4150	c.setLineJoin('round');
4151	c.setFillColor('#000000');
4152	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dVpcGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
4153	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
4154	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
4155
4156	c.begin();
4157	c.moveTo(w, h * 0.929);
4158	c.lineTo(w, h * 0.5866);
4159	c.lineTo(w * 0.8946, h * 0.6537);
4160	c.lineTo(w * 0.8946, h);
4161	c.close();
4162	c.fill();
4163
4164	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
4165	c.begin();
4166	c.moveTo(w * 0.8946, h);
4167	c.lineTo(w * 0.8946, h * 0.6537);
4168	c.lineTo(w * 0.4216, h * 0.2753);
4169	c.lineTo(w * 0.4216, h * 0.7928);
4170	c.close();
4171	c.fill();
4172
4173	c.restore();
4174	c.setShadow(false);
4175	c.setLineJoin('round');
4176
4177	c.begin();
4178	c.moveTo(w, h * 0.929);
4179	c.lineTo(w, h * 0.5866);
4180	c.lineTo(w * 0.8946, h * 0.6537);
4181	c.lineTo(w * 0.8946, h);
4182	c.close();
4183	c.stroke();
4184
4185	c.begin();
4186	c.moveTo(w * 0.8946, h);
4187	c.lineTo(w * 0.8946, h * 0.6537);
4188	c.lineTo(w * 0.4216, h * 0.2753);
4189	c.lineTo(w * 0.4216, h * 0.7928);
4190	c.close();
4191	c.stroke();
4192
4193	c.setStrokeWidth(2 * strokeWidth);
4194	c.setStrokeColor('#292929');
4195	c.setLineJoin('round');
4196
4197	c.begin();
4198	c.moveTo(w, h * 0.929);
4199	c.lineTo(w, h * 0.5866);
4200	c.lineTo(w * 0.6829, h * 0.1031);
4201	c.lineTo(w * 0.4216, h * 0.2753);
4202	c.lineTo(w * 0.4216, h * 0.7928);
4203	c.lineTo(w * 0.8946, h);
4204	c.close();
4205	c.stroke();
4206
4207	c.setFillColor(strokeColor);
4208	c.begin();
4209	c.moveTo(w * 0.5587, h * 0.7743);
4210	c.lineTo(w * 0.5587, h * 0.6274);
4211	c.lineTo(w * 0.5775, h * 0.6342);
4212	c.lineTo(w * 0.5775, h * 0.57);
4213	c.arcTo(w * 0.0428, h * 0.0486, 0, 0, 1, w * 0.6058, h * 0.5253);
4214	c.arcTo(w * 0.0686, h * 0.0778, 0, 0, 1, w * 0.6564, h * 0.5447);
4215	c.arcTo(w * 0.0857, h * 0.0973, 0, 0, 1, w * 0.6847, h * 0.607);
4216	c.lineTo(w * 0.6847, h * 0.6877);
4217	c.lineTo(w * 0.7001, h * 0.6946);
4218	c.lineTo(w * 0.7001, h * 0.8405);
4219	c.close();
4220	c.moveTo(w * 0.6564, h * 0.6741);
4221	c.lineTo(w * 0.6564, h * 0.6177);
4222	c.arcTo(w * 0.06, h * 0.0681, 0, 0, 0, w * 0.6392, h * 0.57);
4223	c.arcTo(w * 0.0343, h * 0.0389, 0, 0, 0, w * 0.6195, h * 0.5574);
4224	c.arcTo(w * 0.0111, h * 0.0126, 0, 0, 0, w * 0.6058, h * 0.5691);
4225	c.lineTo(w * 0.6058, h * 0.6498);
4226	c.close();
4227	c.fill();
4228};
4229
4230mxCellRenderer.registerShape(mxShapeAws3dVpcGateway.prototype.cst.VPC_GATEWAY, mxShapeAws3dVpcGateway);
4231
4232//**********************************************************************************************************************************************************
4233//Web Server
4234//**********************************************************************************************************************************************************
4235/**
4236* Extends mxShape.
4237*/
4238function mxShapeAws3dWebServer(bounds, fill, stroke, strokewidth)
4239{
4240	mxShape.call(this);
4241	this.bounds = bounds;
4242	this.fill = fill;
4243	this.stroke = stroke;
4244	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
4245};
4246
4247/**
4248* Extends mxShape.
4249*/
4250mxUtils.extend(mxShapeAws3dWebServer, mxShape);
4251
4252mxShapeAws3dWebServer.prototype.cst = {
4253		WEB_SERVER : 'mxgraph.aws3d.webServer',
4254		SHADING_COLORS : 'shadingCols'
4255};
4256
4257/**
4258* Function: paintVertexShape
4259*
4260* Paints the vertex shape.
4261*/
4262mxShapeAws3dWebServer.prototype.paintVertexShape = function(c, x, y, w, h)
4263{
4264	c.translate(x, y);
4265
4266	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
4267	var strokeWidth1 = strokeWidth * w / 123;
4268	var strokeWidth2 = strokeWidth * h / 106;
4269
4270	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
4271
4272	this.background(c, 0, 0, w, h, strokeWidth);
4273	c.setShadow(false);
4274	this.foreground(c, 0, 0, w, h, strokeWidth);
4275};
4276
4277mxShapeAws3dWebServer.prototype.background = function(c, x, y, w, h, strokeWidth)
4278{
4279	c.setStrokeWidth(strokeWidth);
4280	c.save();
4281	c.save();
4282	c.setStrokeWidth(2 * strokeWidth);
4283	c.setStrokeColor('#292929');
4284	c.setLineJoin('round');
4285
4286	c.begin();
4287	c.moveTo(0, h * 0.6651);
4288	c.lineTo(0, h * 0.3349);
4289	c.lineTo(w * 0.5, 0);
4290	c.lineTo(w, h * 0.3349);
4291	c.lineTo(w, h * 0.6651);
4292	c.lineTo(w * 0.5, h);
4293	c.close();
4294	c.fillAndStroke();
4295};
4296
4297mxShapeAws3dWebServer.prototype.foreground = function(c, x, y, w, h, strokeWidth)
4298{
4299	c.restore();
4300	c.setShadow(false);
4301	c.setFillColor('#000000');
4302	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dWebServer.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
4303	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
4304	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
4305
4306	c.begin();
4307	c.moveTo(0, h * 0.3349);
4308	c.lineTo(w * 0.5, h * 0.6651);
4309	c.lineTo(w * 0.5, h);
4310	c.lineTo(0, h * 0.6651);
4311	c.close();
4312	c.fill();
4313
4314	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
4315	c.begin();
4316	c.moveTo(w * 0.5, h * 0.6651);
4317	c.lineTo(w, h * 0.3349);
4318	c.lineTo(w, h * 0.6651);
4319	c.lineTo(w * 0.5, h);
4320	c.close();
4321	c.fill();
4322
4323	c.restore();
4324	c.setShadow(false);
4325	c.setLineJoin('round');
4326
4327	c.begin();
4328	c.moveTo(0, h * 0.3349);
4329	c.lineTo(w * 0.5, h * 0.6651);
4330	c.lineTo(w * 0.5, h);
4331	c.lineTo(0, h * 0.6651);
4332	c.close();
4333	c.stroke();
4334
4335	c.begin();
4336	c.moveTo(w * 0.5, h * 0.6651);
4337	c.lineTo(w, h * 0.3349);
4338	c.lineTo(w, h * 0.6651);
4339	c.lineTo(w * 0.5, h);
4340	c.close();
4341	c.stroke();
4342
4343	c.setLineJoin('miter');
4344	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
4345	c.setFillColor(strokeColor);
4346	c.begin();
4347	c.moveTo(w * 0.374, h * 0.5189);
4348	c.arcTo(w * 0.0325, h * 0.0236, 0, 0, 1, w * 0.374, h * 0.4858);
4349	c.lineTo(w * 0.4797, h * 0.4151);
4350	c.arcTo(w * 0.0325, h * 0.0236, 0, 0, 1, w * 0.5203, h * 0.4151);
4351	c.lineTo(w * 0.626, h * 0.4858);
4352	c.arcTo(w * 0.0325, h * 0.0236, 0, 0, 1, w * 0.626, h * 0.516);
4353	c.lineTo(w * 0.5203, h * 0.5868);
4354	c.arcTo(w * 0.0325, h * 0.0236, 0, 0, 1, w * 0.4797, h * 0.5868);
4355	c.close();
4356	c.fill();
4357
4358	c.setStrokeWidth(2 * strokeWidth);
4359	c.setStrokeColor('#292929');
4360	c.setLineJoin('round');
4361
4362	c.begin();
4363	c.moveTo(0, h * 0.6651);
4364	c.lineTo(0, h * 0.3349);
4365	c.lineTo(w * 0.5, 0);
4366	c.lineTo(w, h * 0.3349);
4367	c.lineTo(w, h * 0.6651);
4368	c.lineTo(w * 0.5, h);
4369	c.close();
4370	c.stroke();
4371};
4372
4373mxCellRenderer.registerShape(mxShapeAws3dWebServer.prototype.cst.WEB_SERVER, mxShapeAws3dWebServer);
4374
4375//**********************************************************************************************************************************************************
4376//DynamoDB
4377//**********************************************************************************************************************************************************
4378/**
4379* Extends mxShape.
4380*/
4381function mxShapeAws3dDynamoDB(bounds, fill, stroke, strokewidth)
4382{
4383	mxShape.call(this);
4384	this.bounds = bounds;
4385	this.fill = fill;
4386	this.stroke = stroke;
4387	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
4388};
4389
4390/**
4391* Extends mxShape.
4392*/
4393mxUtils.extend(mxShapeAws3dDynamoDB, mxShape);
4394
4395mxShapeAws3dDynamoDB.prototype.cst = {
4396		DYNAMO_DB : 'mxgraph.aws3d.dynamoDb',
4397		SHADING_COLORS : 'shadingCols'
4398};
4399
4400/**
4401* Function: paintVertexShape
4402*
4403* Paints the vertex shape.
4404*/
4405mxShapeAws3dDynamoDB.prototype.paintVertexShape = function(c, x, y, w, h)
4406{
4407	c.translate(x, y);
4408
4409	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
4410	var strokeWidth1 = strokeWidth * w / 181.5;
4411	var strokeWidth2 = strokeWidth * h / 210;
4412
4413	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
4414
4415	this.background(c, 0, 0, w, h, strokeWidth);
4416	c.setShadow(false);
4417	this.foreground(c, 0, 0, w, h, strokeWidth);
4418};
4419
4420mxShapeAws3dDynamoDB.prototype.background = function(c, x, y, w, h, strokeWidth)
4421{
4422	c.setStrokeWidth(strokeWidth);
4423	c.save();
4424	c.save();
4425	c.setStrokeWidth(2 * strokeWidth);
4426	c.setStrokeColor('#292929');
4427	c.setLineJoin('round');
4428
4429	c.begin();
4430	c.moveTo(0, h * 0.8333);
4431	c.lineTo(0, h * 0.1667);
4432	c.lineTo(w * 0.3333, h * 0.0014);
4433	c.lineTo(w * 0.4986, h * 0.1667);
4434	c.lineTo(w * 0.6639, 0);
4435	c.lineTo(w, h * 0.169);
4436	c.lineTo(w, h * 0.8333);
4437	c.lineTo(w * 0.6667, h);
4438	c.lineTo(w * 0.5014, h * 0.9162);
4439	c.lineTo(w * 0.3333, h);
4440	c.close();
4441	c.fillAndStroke();
4442};
4443
4444mxShapeAws3dDynamoDB.prototype.foreground = function(c, x, y, w, h, strokeWidth)
4445{
4446	c.restore();
4447	c.setShadow(false);
4448	c.setFillColor('#000000');
4449	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDynamoDB.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
4450	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
4451	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
4452
4453	c.begin();
4454	c.moveTo(w * 0.168, h * 0.3333);
4455	c.lineTo(0, h * 0.3333);
4456	c.lineTo(w * 0.3333, h * 0.5);
4457	c.lineTo(w * 0.3333, h);
4458	c.lineTo(0, h * 0.8333);
4459	c.lineTo(0, h * 0.1714);
4460	c.close();
4461	c.moveTo(w * 0.4986, h * 0.1667);
4462	c.lineTo(w * 0.6667, 0);
4463	c.lineTo(w, h * 0.169);
4464	c.lineTo(w * 0.832, h * 0.3348);//
4465	c.lineTo(w, h * 0.3333);
4466	c.lineTo(w * 0.6667, h * 0.5);
4467	c.lineTo(w * 0.5014, h * 0.5);
4468	c.lineTo(w * 0.832, h * 0.3348);
4469	c.fill();
4470
4471	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
4472	c.begin();
4473	c.moveTo(w * 0.3333, h * 0.5);
4474	c.lineTo(w * 0.4986, h * 0.5);
4475	c.lineTo(w * 0.4986, h * 0.9162);
4476	c.lineTo(w * 0.3333, h);
4477	c.close();
4478	c.moveTo(w * 0.6667, h);
4479	c.lineTo(w * 0.6667, h * 0.5);
4480	c.lineTo(w, h * 0.3333);
4481	c.lineTo(w * 0.832, h * 0.3348);
4482	c.lineTo(w, h * 0.169);
4483	c.lineTo(w, h * 0.831);
4484	c.close();
4485	c.fill();
4486
4487	c.restore();
4488	c.setShadow(false);
4489	c.setLineJoin('round');
4490
4491	c.begin();
4492	c.moveTo(w * 0.168, h * 0.3333);
4493	c.lineTo(0, h * 0.3333);
4494	c.lineTo(w * 0.3333, h * 0.5);
4495	c.lineTo(w * 0.3333, h);
4496	c.lineTo(0, h * 0.8333);
4497	c.lineTo(0, h * 0.1714);
4498	c.close();
4499	c.moveTo(w * 0.4986, h * 0.1667);
4500	c.lineTo(w * 0.6667, 0);
4501	c.lineTo(w, h * 0.169);
4502	c.lineTo(w * 0.832, h * 0.3348);
4503	c.lineTo(w, h * 0.3333);
4504	c.lineTo(w * 0.6667, h * 0.5);
4505	c.lineTo(w * 0.5014, h * 0.5);
4506	c.lineTo(w * 0.832, h * 0.3348);
4507	c.close();
4508	c.moveTo(w * 0.3333, h * 0.5);
4509	c.lineTo(w * 0.4986, h * 0.5);
4510	c.lineTo(w * 0.4986, h * 0.9162);
4511	c.lineTo(w * 0.3333, h);
4512	c.close();
4513	c.moveTo(w * 0.6667, h);
4514	c.lineTo(w * 0.6667, h * 0.5);
4515	c.lineTo(w, h * 0.3333);
4516	c.lineTo(w, h * 0.831);
4517	c.close();
4518	c.moveTo(w * 0.168, h * 0.3333);
4519	c.lineTo(w * 0.5, h * 0.1667);
4520	c.moveTo(w * 0.168, h * 0.3333);
4521	c.lineTo(w * 0.5014, h * 0.5);
4522	c.stroke();
4523
4524	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
4525	c.setFillColor(strokeColor);
4526	c.begin();
4527	c.moveTo(w * 0.4876, h * 0.2262);
4528	c.arcTo(w * 0.303, h * 0.2619, 0, 0, 1, w * 0.5647, h * 0.25);
4529	c.arcTo(w * 0.4407, h * 0.381, 0, 0, 1, w * 0.6419, h * 0.2905);
4530	c.arcTo(w * 0.303, h * 0.2619, 0, 0, 1, w * 0.6799, h * 0.32);
4531	c.arcTo(w * 0.0132, h * 0.0076, 0, 0, 1, w * 0.6634, h * 0.3314);
4532	c.arcTo(w * 0.303, h * 0.2619, 0, 0, 1, w * 0.5978, h * 0.3119);
4533	c.arcTo(w * 0.4408, h * 0.381, 0, 0, 1, w * 0.508, h * 0.2667);
4534	c.arcTo(w * 0.303, h * 0.2619, 0, 0, 1, w * 0.4711, h * 0.2343);
4535	c.arcTo(w * 0.0132, h * 0.0076, 0, 0, 1, w * 0.4876, h * 0.2262);
4536	c.close();
4537	c.fill();
4538
4539	c.begin();
4540	c.moveTo(w * 0.5124, h * 0.4143);
4541	c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 1, w * 0.4683, h * 0.4095);
4542	c.arcTo(w * 0.4408, h * 0.381, 0, 0, 1, w * 0.3829, h * 0.3757);
4543	c.arcTo(w * 0.4408, h * 0.381, 0, 0, 1, w * 0.3196, h * 0.3371);
4544	c.arcTo(w * 0.0661, h * 0.0357, 0, 0, 1, w * 0.3058, h * 0.3081);
4545	c.lineTo(w * 0.4612, h * 0.2333);
4546	c.arcTo(w * 0.0661, h * 0.0476, 0, 0, 0, w * 0.4744, h * 0.2548);
4547	c.arcTo(w * 0.3306, h * 0.2857, 0, 0, 0, w * 0.53, h * 0.2905);
4548	c.arcTo(w * 0.4408, h * 0.381, 0, 0, 0, w * 0.6198, h * 0.3295);
4549	c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 0, w * 0.665, h * 0.3367);
4550	c.close();
4551	c.moveTo(w * 0.5052, h * 0.3714);
4552	c.arcTo(w * 0.0275, h * 0.019, 0, 0, 1, w * 0.5135, h * 0.3581);
4553	c.arcTo(w * 0.0275, h * 0.0238, 0, 0, 1, w * 0.5344, h * 0.3571);
4554	c.lineTo(w * 0.5405, h * 0.3471);
4555	c.arcTo(w * 0.0275, h * 0.0143, 0, 0, 1, w * 0.5278, h * 0.3381);
4556	c.arcTo(w * 0.022, h * 0.0119, 0, 0, 1, w * 0.5372, h * 0.3271);
4557	c.lineTo(w * 0.5306, h * 0.3186);
4558	c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.5041, h * 0.3143);
4559	c.arcTo(w * 0.0275, h * 0.0143, 0, 0, 1, w * 0.4975, h * 0.3029);
4560	c.lineTo(w * 0.4777, h * 0.2995);
4561	c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4628, h * 0.3033);
4562	c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4408, h * 0.2967);
4563	c.lineTo(w * 0.4187, h * 0.3);
4564	c.arcTo(w * 0.011, h * 0.0081, 0, 0, 1, w * 0.4132, h * 0.3124);
4565	c.arcTo(w * 0.0386, h * 0.0333, 0, 0, 1, w * 0.395, h * 0.3129);
4566	c.lineTo(w * 0.3873, h * 0.3224);
4567	c.arcTo(w * 0.0165, h * 0.0143, 0, 0, 1, w * 0.3994, h * 0.3333);
4568	c.arcTo(w * 0.0138, h * 0.0119, 0, 0, 1, w * 0.3901, h * 0.3433);
4569	c.lineTo(w * 0.3994, h * 0.3514);
4570	c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4215, h * 0.3548);
4571	c.arcTo(w * 0.0165, h * 0.0119, 0, 0, 1, w * 0.4298, h * 0.3667);
4572	c.lineTo(w * 0.449, h * 0.3714);
4573	c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4711, h * 0.3657);
4574	c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4887, h * 0.3724);
4575	c.close();
4576	c.moveTo(w * 0.4986, h * 0.351);
4577	c.arcTo(w * 0.0441, h * 0.0381, 0, 0, 1, w * 0.4804, h * 0.3552);
4578	c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 1, w * 0.443, h * 0.349);
4579	c.lineTo(w * 0.4413, h * 0.3529);
4580	c.lineTo(w * 0.4242, h * 0.3371);
4581	c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 0, w * 0.4545, h * 0.3462);
4582	c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 0, w * 0.4793, h * 0.3476);
4583	c.arcTo(w * 0.0441, h * 0.0381, 0, 0, 0, w * 0.4986, h * 0.3448);
4584	c.close();
4585	c.moveTo(w * 0.503, h * 0.3349);
4586	c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 0, w * 0.4766, h * 0.3233);
4587	c.arcTo(w * 0.0826, h * 0.0714, 0, 0, 0, w * 0.4529, h * 0.32);
4588	c.arcTo(w * 0.0551, h * 0.0476, 0, 0, 0, w * 0.4325, h * 0.3238);
4589	c.lineTo(w * 0.427, h * 0.3195);
4590	c.arcTo(w * 0.0826, h * 0.0714, 0, 0, 1, w * 0.4556, h * 0.3157);
4591	c.arcTo(w * 0.0826, h * 0.0714, 0, 0, 1, w * 0.4851, h * 0.3232);
4592	c.lineTo(w * 0.4876, h * 0.3181);
4593	c.close();
4594	c.fill();
4595
4596	c.setStrokeWidth(2 * strokeWidth);
4597	c.setStrokeColor('#292929');
4598	c.setLineJoin('round');
4599
4600	c.begin();
4601	c.moveTo(0, h * 0.8333);
4602	c.lineTo(0, h * 0.1667);
4603	c.lineTo(w * 0.3333, h * 0.0014);
4604	c.lineTo(w * 0.4986, h * 0.1667);
4605	c.lineTo(w * 0.6639, 0);
4606	c.lineTo(w, h * 0.169);
4607	c.lineTo(w, h * 0.8333);
4608	c.lineTo(w * 0.6667, h);
4609	c.lineTo(w * 0.5014, h * 0.9162);
4610	c.lineTo(w * 0.3333, h);
4611	c.close();
4612	c.stroke();
4613};
4614
4615mxCellRenderer.registerShape(mxShapeAws3dDynamoDB.prototype.cst.DYNAMO_DB, mxShapeAws3dDynamoDB);
4616
4617//**********************************************************************************************************************************************************
4618//Elastic MapReduce
4619//**********************************************************************************************************************************************************
4620/**
4621* Extends mxShape.
4622*/
4623function mxShapeAws3dElasticMapReduce(bounds, fill, stroke, strokewidth)
4624{
4625	mxShape.call(this);
4626	this.bounds = bounds;
4627	this.fill = fill;
4628	this.stroke = stroke;
4629	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
4630};
4631
4632/**
4633* Extends mxShape.
4634*/
4635mxUtils.extend(mxShapeAws3dElasticMapReduce, mxShape);
4636
4637mxShapeAws3dElasticMapReduce.prototype.cst = {
4638		ELASTIC_MAP_REDUCE : 'mxgraph.aws3d.elasticMapReduce',
4639		SHADING_COLORS : 'shadingCols'
4640};
4641
4642/**
4643* Function: paintVertexShape
4644*
4645* Paints the vertex shape.
4646*/
4647mxShapeAws3dElasticMapReduce.prototype.paintVertexShape = function(c, x, y, w, h)
4648{
4649	c.translate(x, y);
4650
4651	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
4652	var strokeWidth1 = strokeWidth * w / 123;
4653	var strokeWidth2 = strokeWidth * h /133;
4654
4655	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
4656	c.setStrokeWidth(strokeWidth);
4657
4658	this.background(c, 0, 0, w, h, strokeWidth);
4659	c.setShadow(false);
4660	this.foreground(c, 0, 0, w, h, strokeWidth);
4661};
4662
4663mxShapeAws3dElasticMapReduce.prototype.background = function(c, x, y, w, h, strokeWidth)
4664{
4665	c.save();
4666	c.save();
4667	c.setStrokeWidth(2 * strokeWidth);
4668	c.setStrokeColor('#292929');
4669	c.setLineJoin('round');
4670
4671	c.begin();
4672	c.moveTo(0, h * 0.7331);
4673	c.lineTo(0, h * 0.3346);
4674	c.lineTo(w * 0.126, h * 0.1316);
4675	c.lineTo(w * 0.374, 0);
4676	c.lineTo(w * 0.626, 0);
4677	c.lineTo(w * 0.874, h * 0.1316);
4678	c.lineTo(w, h * 0.3346);
4679	c.lineTo(w, h * 0.7331);
4680	c.lineTo(w * 0.5, h);
4681	c.close();
4682	c.fillAndStroke();
4683};
4684
4685mxShapeAws3dElasticMapReduce.prototype.foreground = function(c, x, y, w, h, strokeWidth)
4686{
4687	c.restore();
4688	c.setShadow(false);
4689	c.setFillColor('#000000');
4690	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDynamoDB.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
4691	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
4692	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
4693
4694	c.begin();
4695	c.moveTo(w * 0.126, h * 0.1316);
4696	c.lineTo(w * 0.126, h * 0.267);
4697	c.lineTo(w * 0.378, h * 0.4023);
4698	c.lineTo(w * 0.5, h * 0.6015);
4699	c.lineTo(w * 0.5, h);
4700	c.lineTo(0, h * 0.7331);
4701	c.lineTo(0, h * 0.3346);
4702	c.close();
4703	c.moveTo(w * 0.874, h * 0.267);
4704	c.lineTo(w * 0.874, h * 0.1316);
4705	c.lineTo(w, h * 0.3308);
4706	c.fill();
4707
4708	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
4709	c.begin();
4710	c.moveTo(w * 0.5, h);
4711	c.lineTo(w * 0.5, h * 0.6015);
4712	c.lineTo(w * 0.622, h * 0.4023);
4713	c.lineTo(w * 0.874, h * 0.267);
4714	c.lineTo(w, h * 0.3308);
4715	c.lineTo(w, h * 0.7331);
4716	c.close();
4717	c.fill();
4718
4719	c.restore();
4720
4721	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
4722	c.setFillColor(strokeColor);
4723	c.setShadow(false);
4724
4725	c.begin();
4726	c.moveTo(w * 0.3336, h * 0.1789);
4727	c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.359, h * 0.1789);
4728	c.lineTo(w * 0.4001, h * 0.2015);
4729	c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.4008, h * 0.2135);
4730	c.lineTo(w * 0.3574, h * 0.2368);
4731	c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.3352, h * 0.2368);
4732	c.lineTo(w * 0.2934, h * 0.2143);
4733	c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.2934, h * 0.2015);
4734	c.close();
4735	c.moveTo(w * 0.3705, h * 0.1729);
4736	c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.3705, h * 0.1602);
4737	c.lineTo(w * 0.4139, h * 0.1368);
4738	c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.4336, h * 0.1368);
4739	c.lineTo(w * 0.4811, h * 0.1617);
4740	c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.4811, h * 0.1708);
4741	c.lineTo(w * 0.4328, h * 0.1955);
4742	c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.4156, h * 0.1955);
4743	c.close();
4744	c.moveTo(w * 0.4467, h * 0.1308);
4745	c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.4467, h * 0.1203);
4746	c.lineTo(w * 0.491, h * 0.0962);
4747	c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.5123, h * 0.0962);
4748	c.lineTo(w * 0.559, h * 0.1203);
4749	c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.559, h * 0.1293);
4750	c.lineTo(w * 0.5123, h * 0.1549);
4751	c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.4918, h * 0.1549);
4752	c.close();
4753	c.moveTo(w * 0.568, h * 0.1383);
4754	c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.5918, h * 0.1383);
4755	c.lineTo(w * 0.6361, h * 0.1624);
4756	c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.6366, h * 0.1714);
4757	c.lineTo(w * 0.5885, h * 0.1955);
4758	c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.568, h * 0.1955);
4759	c.lineTo(w * 0.523, h * 0.1714);
4760	c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.523, h * 0.1616);
4761	c.close();
4762	c.moveTo(w * 0.6451, h * 0.1789);
4763	c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.6697, h * 0.1789);
4764	c.lineTo(w * 0.7123, h * 0.2023);
4765	c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.7123, h * 0.2128);
4766	c.lineTo(w * 0.6664, h * 0.2376);
4767	c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.6492, h * 0.2376);
4768	c.lineTo(w * 0.6016, h * 0.2135);
4769	c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.6016, h * 0.2023);
4770	c.close();
4771	c.moveTo(w * 0.6369, h * 0.2451);
4772	c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.6369, h * 0.2526);
4773	c.lineTo(w * 0.5172, h * 0.3173);
4774	c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.4893, h * 0.3173);
4775	c.lineTo(w * 0.3697, h * 0.2541);
4776	c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.3697, h * 0.2436);
4777	c.lineTo(w * 0.4918, h * 0.1782);
4778	c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.5131, h * 0.1782);
4779	c.close();
4780	c.fill();
4781
4782	c.moveTo(w * 0., h * 0.);
4783	c.lineTo(w * 0., h * 0.);
4784	c.arcTo(w * 0., h * 0., 0, 0, 1, w * 0., h * 0.);
4785
4786	c.setLineJoin('round');
4787
4788	c.begin();
4789	c.moveTo(w * 0.126, h * 0.1316);
4790	c.lineTo(w * 0.126, h * 0.267);
4791	c.lineTo(w * 0.378, h * 0.4023);
4792	c.lineTo(w * 0.5, h * 0.6015);
4793	c.lineTo(w * 0.622, h * 0.4023);
4794	c.lineTo(w * 0.874, h * 0.267);
4795	c.lineTo(w * 0.874, h * 0.1316);
4796	c.moveTo(0, h * 0.3346);
4797	c.lineTo(w * 0.126, h * 0.267);
4798	c.moveTo(w * 0.5, h * 0.6015);
4799	c.lineTo(w * 0.5, h);
4800	c.moveTo(w, h * 0.3346);
4801	c.lineTo(w * 0.87, h * 0.267);
4802	c.moveTo(w * 0.378, h * 0.4023);
4803	c.lineTo(w * 0.622, h * 0.4023);
4804	c.stroke();
4805
4806	c.setStrokeWidth(2 * strokeWidth);
4807	c.setStrokeColor('#292929');
4808
4809	c.begin();
4810	c.moveTo(0, h * 0.7331);
4811	c.lineTo(0, h * 0.3346);
4812	c.lineTo(w * 0.126, h * 0.1316);
4813	c.lineTo(w * 0.374, 0);
4814	c.lineTo(w * 0.626, 0);
4815	c.lineTo(w * 0.874, h * 0.1316);
4816	c.lineTo(w, h * 0.3346);
4817	c.lineTo(w, h * 0.7331);
4818	c.lineTo(w * 0.5, h);
4819	c.close();
4820	c.stroke();
4821};
4822
4823mxCellRenderer.registerShape(mxShapeAws3dElasticMapReduce.prototype.cst.ELASTIC_MAP_REDUCE, mxShapeAws3dElasticMapReduce);
4824
4825//**********************************************************************************************************************************************************
4826//RDS Slave
4827//**********************************************************************************************************************************************************
4828/**
4829* Extends mxShape.
4830*/
4831function mxShapeAws3dRdsSlave(bounds, fill, stroke, strokewidth)
4832{
4833	mxShape.call(this);
4834	this.bounds = bounds;
4835	this.fill = fill;
4836	this.stroke = stroke;
4837	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
4838};
4839
4840/**
4841* Extends mxShape.
4842*/
4843mxUtils.extend(mxShapeAws3dRdsSlave, mxShape);
4844
4845mxShapeAws3dRdsSlave.prototype.cst = {
4846		RDS_SLAVE : 'mxgraph.aws3d.rdsSlave'
4847};
4848
4849/**
4850* Function: paintVertexShape
4851*
4852* Paints the vertex shape.
4853*/
4854mxShapeAws3dRdsSlave.prototype.paintVertexShape = function(c, x, y, w, h)
4855{
4856	c.translate(x, y);
4857
4858	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
4859	var strokeWidth1 = strokeWidth * w / 123;
4860	var strokeWidth2 = strokeWidth * h /133;
4861
4862	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
4863	c.setStrokeWidth(strokeWidth);
4864
4865	this.background(c, 0, 0, w, h, strokeWidth);
4866	c.setShadow(false);
4867	this.foreground(c, 0, 0, w, h, strokeWidth);
4868};
4869
4870mxShapeAws3dRdsSlave.prototype.background = function(c, x, y, w, h, strokeWidth)
4871{
4872	c.save();
4873	c.save();
4874	c.setStrokeWidth(2 * strokeWidth);
4875	c.setStrokeColor('#292929');
4876	c.setLineJoin('round');
4877
4878	c.begin();
4879	c.moveTo(0, h * 0.7331);
4880	c.lineTo(0, h * 0.3346);
4881	c.lineTo(w * 0.126, h * 0.1316);
4882	c.lineTo(w * 0.374, 0);
4883	c.lineTo(w * 0.626, 0);
4884	c.lineTo(w * 0.874, h * 0.1316);
4885	c.lineTo(w, h * 0.3346);
4886	c.lineTo(w, h * 0.7331);
4887	c.lineTo(w * 0.5, h);
4888	c.close();
4889	c.fillAndStroke();
4890};
4891
4892mxShapeAws3dRdsSlave.prototype.foreground = function(c, x, y, w, h, strokeWidth)
4893{
4894	c.restore();
4895	c.setShadow(false);
4896	c.setFillColor('#000000');
4897	c.setAlpha('0.1');
4898
4899	c.begin();
4900	c.moveTo(w * 0.126, h * 0.1316);
4901	c.lineTo(w * 0.126, h * 0.267);
4902	c.lineTo(w * 0.378, h * 0.4023);
4903	c.lineTo(w * 0.5, h * 0.6015);
4904	c.lineTo(w * 0.5, h);
4905	c.lineTo(0, h * 0.7331);
4906	c.lineTo(0, h * 0.3346);
4907	c.close();
4908	c.moveTo(w * 0.874, h * 0.267);
4909	c.lineTo(w * 0.874, h * 0.1316);
4910	c.lineTo(w, h * 0.3308);
4911	c.fill();
4912
4913	c.setAlpha('0.3');
4914	c.begin();
4915	c.moveTo(w * 0.5, h);
4916	c.lineTo(w * 0.5, h * 0.6015);
4917	c.lineTo(w * 0.622, h * 0.4023);
4918	c.lineTo(w * 0.874, h * 0.267);
4919	c.lineTo(w, h * 0.3308);
4920	c.lineTo(w, h * 0.7331);
4921	c.close();
4922	c.fill();
4923
4924	c.restore();
4925
4926	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
4927	c.setFillColor(strokeColor);
4928	c.setShadow(false);
4929
4930	c.begin();
4931	c.moveTo(w * 0.2457, h * 0.2137);
4932	c.lineTo(w * 0.5393, h * 0.0593);
4933	c.lineTo(w * 0.6875, h * 0.1377);
4934	c.arcTo(w * 0.0871, h * 0.0799, 0, 0, 1, w * 0.7137, h * 0.1625);
4935	c.arcTo(w * 0.0348, h * 0.032, 0, 0, 1, w * 0.7076, h * 0.1968);
4936	c.arcTo(w * 0.1743, h * 0.1599, 0, 0, 1, w * 0.6597, h * 0.2249);
4937	c.arcTo(w * 0.1307, h * 0.1199, 0, 0, 1, w * 0.5943, h * 0.232);
4938	c.arcTo(w * 0.1307, h * 0.1199, 0, 0, 1, w * 0.5542, h * 0.2225);
4939	c.arcTo(w * 0.0871, h * 0.0799, 0, 0, 1, w * 0.5673, h * 0.2353);
4940	c.arcTo(w * 0.0261, h * 0.024, 0, 0, 1, w * 0.5611, h * 0.2729);
4941	c.lineTo(w * 0.4889, h * 0.316);
4942	c.arcTo(w * 0.0261, h * 0.024, 0, 0, 0, w * 0.4766, h * 0.3352);
4943	c.lineTo(w * 0.4052, h * 0.2992);
4944	c.arcTo(w * 0.0173, h * 0.0159, 0, 0, 1, w * 0.4121, h * 0.2841);
4945	c.lineTo(w * 0.4914, h * 0.2368);
4946	c.arcTo(w * 0.0218, h * 0.02, 0, 0, 0, w * 0.4897, h * 0.2129);
4947	c.lineTo(w * 0.4409, h * 0.1857);
4948	c.lineTo(w * 0.3145, h * 0.2529);
4949	c.close();
4950	c.moveTo(w * 0.4801, h * 0.1633);
4951	c.lineTo(w * 0.5263, h * 0.1865);
4952	c.arcTo(w * 0.0871, h * 0.0799, 0, 0, 0, w * 0.583, h * 0.1905);
4953	c.arcTo(w * 0.1307, h * 0.1199, 0, 0, 0, w * 0.6196, h * 0.1721);
4954	c.arcTo(w * 0.0261, h * 0.024, 0, 0, 0, w * 0.6117, h * 0.1441);
4955	c.lineTo(w * 0.5655, h * 0.1193);
4956	c.fill();
4957
4958	c.setLineJoin('round');
4959
4960	c.begin();
4961	c.moveTo(w * 0.126, h * 0.1316);
4962	c.lineTo(w * 0.126, h * 0.267);
4963	c.lineTo(w * 0.378, h * 0.4023);
4964	c.lineTo(w * 0.5, h * 0.6015);
4965	c.lineTo(w * 0.622, h * 0.4023);
4966	c.lineTo(w * 0.874, h * 0.267);
4967	c.lineTo(w * 0.874, h * 0.1316);
4968	c.moveTo(0, h * 0.3346);
4969	c.lineTo(w * 0.126, h * 0.267);
4970	c.moveTo(w * 0.5, h * 0.6015);
4971	c.lineTo(w * 0.5, h);
4972	c.moveTo(w, h * 0.3346);
4973	c.lineTo(w * 0.87, h * 0.267);
4974	c.moveTo(w * 0.378, h * 0.4023);
4975	c.lineTo(w * 0.622, h * 0.4023);
4976	c.stroke();
4977
4978	c.setStrokeWidth(2 * strokeWidth);
4979	c.setStrokeColor('#292929');
4980
4981	c.begin();
4982	c.moveTo(0, h * 0.7331);
4983	c.lineTo(0, h * 0.3346);
4984	c.lineTo(w * 0.126, h * 0.1316);
4985	c.lineTo(w * 0.374, 0);
4986	c.lineTo(w * 0.626, 0);
4987	c.lineTo(w * 0.874, h * 0.1316);
4988	c.lineTo(w, h * 0.3346);
4989	c.lineTo(w, h * 0.7331);
4990	c.lineTo(w * 0.5, h);
4991	c.close();
4992	c.stroke();
4993};
4994
4995mxCellRenderer.registerShape(mxShapeAws3dRdsSlave.prototype.cst.RDS_SLAVE, mxShapeAws3dRdsSlave);
4996
4997//**********************************************************************************************************************************************************
4998//AMI
4999//**********************************************************************************************************************************************************
5000/**
5001* Extends mxShape.
5002*/
5003function mxShapeAws3dAMI2(bounds, fill, stroke, strokewidth)
5004{
5005	mxShape.call(this);
5006	this.bounds = bounds;
5007	this.fill = fill;
5008	this.stroke = stroke;
5009	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
5010};
5011
5012/**
5013* Extends mxShape.
5014*/
5015mxUtils.extend(mxShapeAws3dAMI2, mxShape);
5016
5017mxShapeAws3dAMI2.prototype.cst = {
5018		AMI_2 : 'mxgraph.aws3d.ami2',
5019		SHADING_COLORS : 'shadingCols'
5020};
5021
5022/**
5023* Function: paintVertexShape
5024*
5025* Paints the vertex shape.
5026*/
5027mxShapeAws3dAMI2.prototype.paintVertexShape = function(c, x, y, w, h)
5028{
5029	c.translate(x, y);
5030
5031	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
5032	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
5033	var strokeWidth1 = strokeWidth * w / 92;
5034	var strokeWidth2 = strokeWidth * h / 60;
5035
5036	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
5037
5038	c.setStrokeWidth(strokeWidth);
5039	c.setShadow(false);
5040	c.save();
5041	c.save();
5042	c.setStrokeWidth(2 * strokeWidth);
5043	c.setStrokeColor('#292929');
5044	c.setLineJoin('round');
5045
5046	if (isShadow == 1)
5047	{
5048		c.setShadow(true);
5049	}
5050
5051	c.begin();
5052	c.moveTo(0, h * 0.572);
5053	c.lineTo(w * 0.0865, h * 0.284);
5054	c.lineTo(w * 0.4203, 0);
5055	c.lineTo(w * 0.5865, 0);
5056	c.lineTo(w * 0.919, h * 0.286);
5057	c.lineTo(w, h * 0.566);
5058	c.lineTo(w * 0.5027, h);
5059	c.close();
5060	c.fillAndStroke();
5061
5062	c.restore();
5063	c.setFillColor('#000000');
5064	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dAMI2.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
5065	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
5066	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
5067
5068	c.begin();
5069	c.moveTo(0, h * 0.566);
5070	c.lineTo(w * 0.0892, h * 0.282);
5071	c.lineTo(w * 0.0878, h * 0.426);
5072	c.lineTo(w * 0.4216, h * 0.712);
5073	c.lineTo(w * 0.5865, h * 0.712);
5074	c.lineTo(w * 0.5027, h);
5075	c.close();
5076	c.fill();
5077
5078	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
5079	c.begin();
5080	c.moveTo(w * 0.5027, h);
5081	c.lineTo(w * 0.5865, h * 0.712);
5082	c.lineTo(w * 0.9176, h * 0.43);
5083	c.lineTo(w, h * 0.566);
5084	c.close();
5085	c.fill();
5086
5087	c.restore();
5088	c.setLineJoin('round');
5089
5090	c.begin();
5091	c.moveTo(0, h * 0.566);
5092	c.lineTo(w * 0.0892, h * 0.282);
5093	c.lineTo(w * 0.0878, h * 0.426);
5094	c.lineTo(w * 0.4216, h * 0.712);
5095	c.lineTo(w * 0.5865, h * 0.712);
5096	c.lineTo(w * 0.5027, h);
5097	c.close();
5098	c.moveTo(w * 0.5027, h);
5099	c.lineTo(w * 0.5865, h * 0.712);
5100	c.lineTo(w * 0.9176, h * 0.43);
5101	c.lineTo(w, h * 0.566);
5102	c.close();
5103	c.moveTo(0, h * 0.572);
5104	c.lineTo(w * 0.0892, h * 0.422);
5105	c.moveTo(w * 0.5027, h);
5106	c.lineTo(w * 0.4189, h * 0.708);
5107	c.moveTo(w * 0.9176, h * 0.43);
5108	c.lineTo(w * 0.9176, h * 0.29);
5109	c.stroke();
5110
5111	c.setStrokeWidth(2 * strokeWidth);
5112	c.setLineJoin('round');
5113	c.begin();
5114	c.moveTo(w * 0.2095, h * 0.376);
5115	c.lineTo(w * 0.527, h * 0.104);
5116	c.lineTo(w * 0.6338, h * 0.194);
5117	c.lineTo(w * 0.3149, h * 0.468);
5118	c.close();
5119	c.moveTo(w * 0.3716, h * 0.518);
5120	c.lineTo(w * 0.6892, h * 0.246);
5121	c.lineTo(w * 0.796, h * 0.336);
5122	c.lineTo(w * 0.477, h * 0.61);
5123	c.close();
5124	c.moveTo(w * 0.3108, h * 0.282);
5125	c.lineTo(w * 0.4257, h * 0.38);
5126	c.moveTo(w * 0.4189, h * 0.194);
5127	c.lineTo(w * 0.5297, h * 0.288);
5128	c.moveTo(w * 0.5838, h * 0.338);
5129	c.lineTo(w * 0.6892, h * 0.426);
5130	c.moveTo(w * 0.4757, h * 0.426);
5131	c.lineTo(w * 0.5838, h * 0.518);
5132	c.stroke();
5133
5134	c.setStrokeColor('#292929');
5135
5136	c.begin();
5137	c.moveTo(0, h * 0.572);
5138	c.lineTo(w * 0.0865, h * 0.284);
5139	c.lineTo(w * 0.4203, 0);
5140	c.lineTo(w * 0.5865, 0);
5141	c.lineTo(w * 0.919, h * 0.286);
5142	c.lineTo(w, h * 0.566);
5143	c.lineTo(w * 0.5027, h);
5144	c.close();
5145	c.stroke();
5146};
5147
5148mxCellRenderer.registerShape(mxShapeAws3dAMI2.prototype.cst.AMI_2, mxShapeAws3dAMI2);
5149
5150//**********************************************************************************************************************************************************
5151//EBS
5152//**********************************************************************************************************************************************************
5153/**
5154* Extends mxShape.
5155*/
5156function mxShapeAws3dEbs(bounds, fill, stroke, strokewidth)
5157{
5158	mxShape.call(this);
5159	this.bounds = bounds;
5160	this.fill = fill;
5161	this.stroke = stroke;
5162	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
5163};
5164
5165/**
5166* Extends mxShape.
5167*/
5168mxUtils.extend(mxShapeAws3dEbs, mxShape);
5169
5170mxShapeAws3dEbs.prototype.cst = {
5171		EBS : 'mxgraph.aws3d.ebs',
5172		SHADING_COLORS : 'shadingCols'
5173};
5174
5175/**
5176* Function: paintVertexShape
5177*
5178* Paints the vertex shape.
5179*/
5180mxShapeAws3dEbs.prototype.paintVertexShape = function(c, x, y, w, h)
5181{
5182	c.translate(x, y);
5183
5184	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
5185	var strokeWidth1 = strokeWidth * w / 92;
5186	var strokeWidth2 = strokeWidth * h / 60;
5187	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
5188
5189	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
5190
5191	c.setStrokeWidth(strokeWidth);
5192	c.setShadow(false);
5193	c.save();
5194	c.save();
5195	c.setStrokeWidth(2 * strokeWidth);
5196	c.setStrokeColor('#292929');
5197	c.setLineJoin('round');
5198
5199	if(isShadow == 1)
5200	{
5201		c.setShadow(true);
5202	}
5203
5204	c.begin();
5205	c.moveTo(0, h * 0.5276);
5206	c.lineTo(0, h * 0.4188);
5207	c.lineTo(w * 0.071, h * 0.2898);
5208	c.lineTo(w * 0.4033, 0);
5209	c.lineTo(w * 0.9301, h * 0.464);
5210	c.lineTo(w, h * 0.5863);
5211	c.lineTo(w, h * 0.7035);
5212	c.lineTo(w * 0.6667, h);
5213	c.lineTo(w * 0.5355, h);
5214	c.close();
5215	c.fillAndStroke();
5216
5217	c.restore();
5218	c.setFillColor('#000000');
5219
5220	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dEbs.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
5221	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
5222	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
5223
5224	c.begin();
5225	c.moveTo(w * 0.071, h * 0.2948);
5226	c.lineTo(w * 0.6011, h * 0.7621);
5227	c.lineTo(w * 0.6667, h);
5228	c.lineTo(w * 0.5355, h);
5229	c.lineTo(0, h * 0.5276);
5230	c.lineTo(0, h * 0.4137);
5231	c.close();
5232	c.fill();
5233
5234	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
5235	c.begin();
5236	c.moveTo(w * 0.6011, h * 0.7655);
5237	c.lineTo(w * 0.9344, h * 0.4724);
5238	c.lineTo(w, h * 0.7035);
5239	c.lineTo(w * 0.6667, h);
5240	c.close();
5241	c.fill();
5242
5243	c.restore();
5244	c.setLineJoin('round');
5245
5246	c.begin();
5247	c.moveTo(w * 0.071, h * 0.2948);
5248	c.lineTo(w * 0.6011, h * 0.7621);
5249	c.lineTo(w * 0.6667, h);
5250	c.lineTo(w * 0.5355, h);
5251	c.lineTo(0, h * 0.5276);
5252	c.lineTo(0, h * 0.4137);
5253	c.close();
5254	c.moveTo(w * 0.6011, h * 0.7655);
5255	c.lineTo(w * 0.9344, h * 0.4724);
5256	c.lineTo(w, h * 0.7035);
5257	c.lineTo(w * 0.6667, h);
5258	c.close();
5259	c.moveTo(w * 0.0033, h * 0.5276);
5260	c.lineTo(w * 0.071, h * 0.2898);
5261	c.moveTo(w * 0.5325, h * 0.9976);
5262	c.lineTo(w * 0.603, h * 0.7593);
5263	c.stroke();
5264
5265	c.setStrokeWidth(2 * strokeWidth);
5266	c.setStrokeColor('#292929');
5267	c.setLineJoin('round');
5268
5269	c.begin();
5270	c.moveTo(0, h * 0.5276);
5271	c.lineTo(0, h * 0.4188);
5272	c.lineTo(w * 0.071, h * 0.2898);
5273	c.lineTo(w * 0.4033, 0);
5274	c.lineTo(w * 0.9301, h * 0.464);
5275	c.lineTo(w, h * 0.5863);
5276	c.lineTo(w, h * 0.7035);
5277	c.lineTo(w * 0.6667, h);
5278	c.lineTo(w * 0.5355, h);
5279	c.close();
5280	c.stroke();
5281};
5282
5283mxCellRenderer.registerShape(mxShapeAws3dEbs.prototype.cst.EBS, mxShapeAws3dEbs);
5284
5285//**********************************************************************************************************************************************************
5286//Oracle  Server
5287//**********************************************************************************************************************************************************
5288/**
5289* Extends mxShape.
5290*/
5291function mxShapeAws3dOracleServer(bounds, fill, stroke, strokewidth)
5292{
5293	mxShape.call(this);
5294	this.bounds = bounds;
5295	this.fill = fill;
5296	this.stroke = stroke;
5297	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
5298};
5299
5300/**
5301* Extends mxShape.
5302*/
5303mxUtils.extend(mxShapeAws3dOracleServer, mxShape);
5304
5305mxShapeAws3dOracleServer.prototype.cst = {
5306		ORACLE_SERVER : 'mxgraph.aws3d.oracleServer'
5307};
5308
5309/**
5310* Function: paintVertexShape
5311*
5312* Paints the vertex shape.
5313*/
5314mxShapeAws3dOracleServer.prototype.paintVertexShape = function(c, x, y, w, h)
5315{
5316	c.translate(x, y);
5317
5318	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
5319	var strokeWidth1 = strokeWidth * w / 123;
5320	var strokeWidth2 = strokeWidth * h /133;
5321
5322	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
5323	c.setStrokeWidth(strokeWidth);
5324
5325	this.background(c, 0, 0, w, h, strokeWidth);
5326	c.setShadow(false);
5327	this.foreground(c, 0, 0, w, h, strokeWidth);
5328};
5329
5330mxShapeAws3dOracleServer.prototype.background = function(c, x, y, w, h, strokeWidth)
5331{
5332	c.save();
5333	c.save();
5334	c.save();
5335	c.setStrokeWidth(2 * strokeWidth);
5336	c.setStrokeColor('#292929');
5337	c.setLineJoin('round');
5338
5339	c.begin();
5340	c.moveTo(0, h * 0.7464);
5341	c.lineTo(0, h * 0.25);
5342	c.lineTo(w * 0.5, 0);
5343	c.lineTo(w, h * 0.25);
5344	c.lineTo(w, h * 0.7464);
5345	c.lineTo(w * 0.5, h);
5346	c.close();
5347	c.fillAndStroke();
5348};
5349
5350mxShapeAws3dOracleServer.prototype.foreground = function(c, x, y, w, h, strokeWidth)
5351{
5352	c.restore();
5353	c.setShadow(false);
5354	c.setFillColor('#000000');
5355	c.setAlpha('0.1');
5356
5357	c.begin();
5358	c.moveTo(0, h * 0.7464);
5359	c.lineTo(0, h * 0.25);
5360	c.lineTo(w * 0.5, h * 0.5);
5361	c.lineTo(w * 0.5, h);
5362	c.close();
5363	c.fill();
5364
5365	c.setAlpha('0.3');
5366	c.begin();
5367	c.moveTo(w * 0.5, h * 0.5);
5368	c.lineTo(w, h * 0.25);
5369	c.lineTo(w, h * 0.7464);
5370	c.lineTo(w * 0.5, h);
5371	c.close();
5372	c.fill();
5373
5374	c.restore();
5375	c.setShadow(false);
5376	c.setLineJoin('round');
5377
5378	c.setFillColor('#ff0000');
5379
5380	c.begin();
5381	c.moveTo(0, h * 0.5866);
5382	c.lineTo(w * 0.5, h * 0.8359);
5383	c.lineTo(w, h * 0.5866);
5384	c.lineTo(w, h * 0.6986);
5385	c.lineTo(w * 0.5, h * 0.9486);
5386	c.lineTo(0, h * 0.6986);
5387	c.fill();
5388
5389	c.setStrokeWidth(0.5 * strokeWidth);
5390	c.setStrokeColor('#ffffff');
5391	c.setFillColor('#ffffff');
5392
5393	c.begin();
5394	c.moveTo(0, h * 0.5866);
5395	c.lineTo(w * 0.5, h * 0.8359);
5396	c.lineTo(w, h * 0.5866);
5397	c.moveTo(w, h * 0.6986);
5398	c.lineTo(w * 0.5, h * 0.9486);
5399	c.lineTo(0, h * 0.6986);
5400	c.stroke();
5401
5402	c.begin();
5403	c.moveTo(w * 0.0813, h * 0.7113);
5404	c.arcTo(w * 0.0569, h * 0.0493, 0, 0, 1, w * 0.065, h * 0.6831);
5405	c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.065, h * 0.6613);
5406	c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.0797, h * 0.6549);
5407	c.lineTo(w * 0.122, h * 0.6754);
5408	c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.1358, h * 0.6937);
5409	c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.139, h * 0.7232);
5410	c.arcTo(w * 0.0179, h * 0.0155, 0, 0, 1, w * 0.1187, h * 0.7296);
5411	c.close();
5412	c.moveTo(w * 0.1163, h * 0.7183);
5413	c.arcTo(w * 0.0089, h * 0.0077, 0, 0, 0, w * 0.1285, h * 0.7148);
5414	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.1293, h * 0.7021);
5415	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.1179, h * 0.6831);
5416	c.lineTo(w * 0.087, h * 0.6676);
5417	c.arcTo(w * 0.0081, h * 0.007, 0, 0, 0, w * 0.0764, h * 0.6697);
5418	c.arcTo(w * 0.0325, h * 0.0352, 0, 0, 0, w * 0.078, h * 0.6937);
5419	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.087, h * 0.7035);
5420	c.close();
5421	c.moveTo(w * 0.1439, h * 0.743);
5422	c.lineTo(w * 0.1439, h * 0.6866);
5423	c.lineTo(w * 0.1846, h * 0.707);
5424	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.1967, h * 0.7183);
5425	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2, h * 0.738);
5426	c.arcTo(w * 0.0138, h * 0.0155, 0, 0, 1, w * 0.1813, h * 0.743);
5427	c.lineTo(w * 0.1992, h * 0.769);
5428	c.lineTo(w * 0.187, h * 0.7641);
5429	c.lineTo(w * 0.1577, h * 0.7218);
5430	c.lineTo(w * 0.1854, h * 0.7345);
5431	c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 0, w * 0.1911, h * 0.7317);
5432	c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 0, w * 0.1894, h * 0.7225);
5433	c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.1821, h * 0.7155);
5434	c.lineTo(w * 0.1528, h * 0.7007);
5435	c.lineTo(w * 0.1528, h * 0.7472);
5436	c.close();
5437	c.moveTo(w * 0.2008, h * 0.7711);
5438	c.lineTo(w * 0.2293, h * 0.7338);
5439	c.arcTo(w * 0.0065, h * 0.0056, 0, 0, 1, w * 0.2382, h * 0.7324);
5440	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2431, h * 0.7415);
5441	c.lineTo(w * 0.2699, h * 0.8035);
5442	c.lineTo(w * 0.2602, h * 0.8007);
5443	c.lineTo(w * 0.252, h * 0.7859);
5444	c.lineTo(w * 0.2293, h * 0.7754);
5445	c.lineTo(w * 0.2244, h * 0.7634);
5446	c.lineTo(w * 0.248, h * 0.7739);
5447	c.lineTo(w * 0.235, h * 0.7444);
5448	c.lineTo(w * 0.2122, h * 0.7768);
5449	c.close();
5450	c.moveTo(w * 0.3244, h * 0.8225);
5451	c.lineTo(w * 0.3171, h * 0.8289);
5452	c.lineTo(w * 0.2854, h * 0.8127);
5453	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2724, h * 0.7986);
5454	c.arcTo(w * 0.0569, h * 0.0493, 0, 0, 1, w * 0.265, h * 0.7746);
5455	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2683, h * 0.762);
5456	c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.2829, h * 0.757);
5457	c.lineTo(w * 0.3228, h * 0.7761);
5458	c.lineTo(w * 0.3179, h * 0.7831);
5459	c.lineTo(w * 0.2878, h * 0.7683);
5460	c.arcTo(w * 0.0081, h * 0.007, 0, 0, 0, w * 0.2789, h * 0.7697);
5461	c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.2748, h * 0.7831);
5462	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.2878, h * 0.8042);
5463	c.close();
5464	c.moveTo(w * 0.3276, h * 0.7789);
5465	c.lineTo(w * 0.3366, h * 0.7831);
5466	c.lineTo(w * 0.3366, h * 0.8289);
5467	c.lineTo(w * 0.3805, h * 0.8507);
5468	c.lineTo(w * 0.3748, h * 0.857);
5469	c.lineTo(w * 0.3317, h * 0.8359);
5470	c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.3276, h * 0.8275);
5471	c.close();
5472	c.moveTo(w * 0.435, h * 0.8775);
5473	c.lineTo(w * 0.4325, h * 0.8866);
5474	c.lineTo(w * 0.3959, h * 0.8683);
5475	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.3862, h * 0.8563);
5476	c.arcTo(w * 0.0528, h * 0.0458, 0, 0, 1, w * 0.3805, h * 0.8183);
5477	c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.3951, h * 0.8134);
5478	c.lineTo(w * 0.435, h * 0.8324);
5479	c.lineTo(w * 0.4285, h * 0.838);
5480	c.lineTo(w * 0.4008, h * 0.8246);
5481	c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.3878, h * 0.831);
5482	c.lineTo(w * 0.4333, h * 0.8542);
5483	c.lineTo(w * 0.426, h * 0.8606);
5484	c.lineTo(w * 0.3878, h * 0.8415);
5485	c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.3976, h * 0.8585);
5486	c.close();
5487
5488	c.moveTo(w * 0.6171, h * 0.8063);
5489	c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.6366, h * 0.8092);
5490	c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 1, w * 0.639, h * 0.8303);
5491	c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.6211, h * 0.8592);
5492	c.lineTo(w * 0.5894, h * 0.8761);
5493	c.arcTo(w * 0.0203, h * 0.0176, 0, 0, 1, w * 0.565, h * 0.8732);
5494	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.5659, h * 0.8458);
5495	c.arcTo(w * 0.0488, h * 0.0422, 0, 0, 1, w * 0.5805, h * 0.8246);
5496	c.close();
5497	c.moveTo(w * 0.5886, h * 0.8296);
5498	c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.5748, h * 0.8472);
5499	c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.574, h * 0.862);
5500	c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.587, h * 0.8676);
5501	c.lineTo(w * 0.6163, h * 0.8528);
5502	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.6285, h * 0.8359);
5503	c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.6293, h * 0.8225);
5504	c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.6163, h * 0.8155);
5505	c.close();
5506
5507	c.moveTo(w * 0.64, h * 0.85);
5508	c.lineTo(w * 0.64, h * 0.7930);
5509	c.lineTo(w * 0.6854, h * 0.7718);
5510	c.arcTo(w * 0.0106, h * 0.0092, 0, 0, 1, w * 0.7008, h * 0.7782);
5511	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.6959, h * 0.8);
5512	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.6805, h * 0.8127);
5513	c.lineTo(w * 0.6992, h * 0.8218);
5514	c.lineTo(w * 0.6854, h * 0.8282);
5515	c.lineTo(w * 0.6569, h * 0.8141);
5516	c.lineTo(w * 0.6805, h * 0.8021);
5517	c.arcTo(w * 0.0203, h * 0.0176, 0, 0, 0, w * 0.6894, h * 0.7923);
5518	c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.6894, h * 0.7845);
5519	c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 0, w * 0.6837, h * 0.7831);
5520	c.lineTo(w * 0.6528, h * 0.7979);
5521	c.lineTo(w * 0.6528, h * 0.8437);
5522	c.close();
5523	c.moveTo(w * 0.7, h * 0.8204);
5524	c.lineTo(w * 0.7301, h * 0.7507);
5525	c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 1, w * 0.7358, h * 0.7444);
5526	c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 1, w * 0.7415, h * 0.7486);
5527	c.lineTo(w * 0.7699, h * 0.7852);
5528	c.lineTo(w * 0.7602, h * 0.7908);
5529	c.lineTo(w * 0.7537, h * 0.7838);
5530	c.lineTo(w * 0.7276, h * 0.7958);
5531	c.lineTo(w * 0.7228, h * 0.788);
5532	c.lineTo(w * 0.748, h * 0.7768);
5533	c.lineTo(w * 0.7358, h * 0.7585);
5534	c.lineTo(w * 0.7114, h * 0.8155);
5535	c.close();
5536	c.moveTo(w * 0.8244, h * 0.7486);
5537	c.lineTo(w * 0.8171, h * 0.762);
5538	c.lineTo(w * 0.7894, h * 0.7761);
5539	c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 1, w * 0.7683, h * 0.7746);
5540	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.7667, h * 0.7507);
5541	c.arcTo(w * 0.0488, h * 0.0423, 0, 0, 1, w * 0.7937, h * 0.7162);
5542	c.lineTo(w * 0.822, h * 0.7035);
5543	c.lineTo(w * 0.8171, h * 0.7155);
5544	c.lineTo(w * 0.7902, h * 0.7296);
5545	c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.778, h * 0.743);
5546	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.7756, h * 0.7606);
5547	c.arcTo(w * 0.0077, h * 0.0067, 0, 0, 0, w * 0.787, h * 0.767);
5548	c.close();
5549	c.moveTo(w * 0.8366, h * 0.6949);
5550	c.lineTo(w * 0.8366, h * 0.7423);
5551	c.lineTo(w * 0.878, h * 0.7231);
5552	c.lineTo(w * 0.874, h * 0.7338);
5553	c.lineTo(w * 0.8333, h * 0.7535);
5554	c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 1, w * 0.8268, h * 0.75);
5555	c.lineTo(w * 0.8268, h * 0.7007);
5556	c.close();
5557	c.moveTo(w * 0.9342, h * 0.6472);
5558	c.lineTo(w * 0.9293, h * 0.6599);
5559	c.lineTo(w * 0.9033, h * 0.6725);
5560	c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.8927, h * 0.6817);
5561	c.arcTo(w * 0.0406, h * 0.0352, 0, 0, 0, w * 0.887, h * 0.6937);
5562	c.lineTo(w * 0.9309, h * 0.6725);
5563	c.lineTo(w * 0.9268, h * 0.6845);
5564	c.lineTo(w * 0.887, h * 0.7035);
5565	c.arcTo(w * 0.0089, h * 0.0077, 0, 0, 0, w * 0.8992, h * 0.7106);
5566	c.lineTo(w * 0.935, h * 0.693);
5567	c.lineTo(w * 0.9285, h * 0.7063);
5568	c.lineTo(w * 0.9008, h * 0.7197);
5569	c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.8829, h * 0.7204);
5570	c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.8764, h * 0.7028);
5571	c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.8959, h * 0.6669);
5572	c.fill();
5573
5574	c.restore();
5575	c.setShadow(false);
5576	c.setLineJoin('round');
5577
5578	c.begin();
5579	c.moveTo(0, h * 0.7464);
5580	c.lineTo(0, h * 0.25);
5581	c.lineTo(w * 0.5, h * 0.5);
5582	c.lineTo(w * 0.5, h);
5583	c.close();
5584	c.moveTo(w * 0.5, h * 0.5);
5585	c.lineTo(w, h * 0.25);
5586	c.lineTo(w, h * 0.7464);
5587	c.lineTo(w * 0.5, h);
5588	c.close();
5589	c.stroke();
5590
5591	c.setLineJoin('miter');
5592	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
5593	c.setFillColor(strokeColor);
5594	c.begin();
5595	c.moveTo(w * 0.374, h * 0.3873);
5596	c.arcTo(w * 0.0325, h * 0.01764, 0, 0, 1, w * 0.374, h * 0.3626);
5597	c.lineTo(w * 0.4797, h * 0.3098);
5598	c.arcTo(w * 0.0325, h * 0.0141, 0, 0, 1, w * 0.5203, h * 0.3098);
5599	c.lineTo(w * 0.626, h * 0.3626);
5600	c.arcTo(w * 0.0325, h * 0.01764, 0, 0, 1, w * 0.626, h * 0.3852);
5601	c.lineTo(w * 0.5203, h * 0.438);
5602	c.arcTo(w * 0.0325, h * 0.0141, 0, 0, 1, w * 0.4797, h * 0.438);
5603	c.close();
5604	c.fill();
5605
5606	c.setStrokeWidth(2 * strokeWidth);
5607	c.setStrokeColor('#292929');
5608	c.setLineJoin('round');
5609
5610	c.begin();
5611	c.moveTo(0, h * 0.7464);
5612	c.lineTo(0, h * 0.25);
5613	c.lineTo(w * 0.5, 0);
5614	c.lineTo(w, h * 0.25);
5615	c.lineTo(w, h * 0.7464);
5616	c.lineTo(w * 0.5, h);
5617	c.close();
5618	c.stroke();
5619};
5620
5621mxCellRenderer.registerShape(mxShapeAws3dOracleServer.prototype.cst.ORACLE_SERVER, mxShapeAws3dOracleServer);
5622
5623//**********************************************************************************************************************************************************
5624//Secure Connection
5625//**********************************************************************************************************************************************************
5626/**
5627* Extends mxShape.
5628*/
5629function mxShapeAws3dSecureConnection(bounds, fill, stroke, strokewidth)
5630{
5631	mxShape.call(this);
5632	this.bounds = bounds;
5633	this.fill = fill;
5634	this.stroke = stroke;
5635	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
5636};
5637
5638/**
5639* Extends mxShape.
5640*/
5641mxUtils.extend(mxShapeAws3dSecureConnection, mxShape);
5642
5643mxShapeAws3dSecureConnection.prototype.cst = {
5644		SECURE_CONNECTION : 'mxgraph.aws3d.secureConnection'
5645};
5646
5647/**
5648* Function: paintVertexShape
5649*
5650* Paints the vertex shape.
5651*/
5652mxShapeAws3dSecureConnection.prototype.paintVertexShape = function(c, x, y, w, h)
5653{
5654	c.translate(x, y);
5655
5656	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
5657	var strokeWidth1 = strokeWidth * w / 57;
5658	var strokeWidth2 = strokeWidth * h /34;
5659
5660	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
5661	c.setStrokeWidth(strokeWidth);
5662
5663	this.background(c, 0, 0, w, h, strokeWidth);
5664	c.setShadow(false);
5665	this.foreground(c, 0, 0, w, h, strokeWidth);
5666};
5667
5668mxShapeAws3dSecureConnection.prototype.background = function(c, x, y, w, h, strokeWidth)
5669{
5670	c.begin();
5671	c.moveTo(w * 0.0058, h * 0.3889);
5672	c.arcTo(w * 0.2096, h * 0.3536, 0, 0, 1, w * 0.0774, h * 0.1856);
5673	c.arcTo(w * 0.5241, h * 0.8839, 0, 0, 1, w * 0.308, h * 0.0262);
5674	c.arcTo(w * 0.8735, h * 1.4732, 0, 0, 1, w * 0.6417, h * 0.056);
5675	c.arcTo(w * 0.6988, h * 1.1786, 0, 0, 1, w * 0.9106, h * 0.277);
5676	c.arcTo(w * 0.2621, h * 0.442, 0, 0, 1, w, h * 0.5451);
5677	c.arcTo(w * 0.2096, h * 0.3536, 0, 0, 1, w * 0.9474, h * 0.7808);
5678	c.arcTo(w * 0.4368, h * 0.7366, 0, 0, 1, w * 0.7186, h * 0.9605);
5679	c.arcTo(w * 0.8735, h * 1.4732, 0, 0, 1, w * 0.3045, h * 0.9104);
5680	c.arcTo(w * 0.6115, h * 1.0312, 0, 0, 1, w * 0.0687, h * 0.6747);
5681	c.arcTo(w * 0.2096, h * 0.3536, 0, 0, 1, w * 0.0058, h * 0.3889);
5682	c.close();
5683	c.fill();
5684};
5685
5686mxShapeAws3dSecureConnection.prototype.foreground = function(c, x, y, w, h, strokeWidth)
5687{
5688	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
5689	c.setFillColor(strokeColor);
5690
5691	c.begin();
5692	c.moveTo(w * 0.2661, h * 0.5068);
5693	c.lineTo(w * 0.5002, h * 0.7336);
5694	c.lineTo(w * 0.6626, h * 0.5775);
5695	c.lineTo(w * 0.6469, h * 0.5539);
5696	c.lineTo(w * 0.6958, h * 0.5097);
5697	c.arcTo(w * 0.0874, h * 0.1473, 0, 0, 0, w * 0.7325, h * 0.4066);
5698	c.arcTo(w * 0.0874, h * 0.1473, 0, 0, 0, w * 0.6889, h * 0.3153);
5699	c.arcTo(w * 0.1747, h * 0.2946, 0, 0, 0, w * 0.5928, h * 0.2622);
5700	c.arcTo(w * 0.1398, h * 0.2357, 0, 0, 0, w * 0.5107, h * 0.3005);
5701	c.lineTo(w * 0.446, h * 0.3654);
5702	c.lineTo(w * 0.4268, h * 0.3477);
5703	c.close();
5704	c.moveTo(w * 0.4949, h * 0.4184);
5705	c.lineTo(w * 0.5491, h * 0.3624);
5706	c.arcTo(w * 0.1222, h * 0.2062, 0, 0, 1, w * 0.6277, h * 0.3536);
5707	c.arcTo(w * 0.0874, h * 0.1179, 0, 0, 1, w * 0.6679, h * 0.3978);
5708	c.arcTo(w * 0.0175, h * 0.0295, 0, 0, 1, w * 0.6626, h * 0.439);
5709	c.lineTo(w * 0.5928, h * 0.5068);
5710	c.close();
5711	c.fill();
5712};
5713
5714mxCellRenderer.registerShape(mxShapeAws3dSecureConnection.prototype.cst.SECURE_CONNECTION, mxShapeAws3dSecureConnection);
5715
5716//**********************************************************************************************************************************************************
5717//Email Service
5718//**********************************************************************************************************************************************************
5719/**
5720* Extends mxShape.
5721*/
5722function mxShapeAws3dEmailService(bounds, fill, stroke, strokewidth)
5723{
5724	mxShape.call(this);
5725	this.bounds = bounds;
5726	this.fill = fill;
5727	this.stroke = stroke;
5728	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
5729};
5730
5731/**
5732* Extends mxShape.
5733*/
5734mxUtils.extend(mxShapeAws3dEmailService, mxShape);
5735
5736mxShapeAws3dEmailService.prototype.cst = {
5737		EMAIL_SERVICE : 'mxgraph.aws3d.email_service',
5738		SHADING_COLORS : 'shadingCols'
5739};
5740
5741/**
5742* Function: paintVertexShape
5743*
5744* Paints the vertex shape.
5745*/
5746mxShapeAws3dEmailService.prototype.paintVertexShape = function(c, x, y, w, h)
5747{
5748	c.translate(x, y);
5749
5750	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
5751	var strokeWidth1 = strokeWidth * w / 151;
5752	var strokeWidth2 = strokeWidth * h / 192;
5753
5754	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
5755
5756	this.background(c, 0, 0, w, h, strokeWidth);
5757	c.setShadow(false);
5758	this.foreground(c, 0, 0, w, h, strokeWidth);
5759};
5760
5761mxShapeAws3dEmailService.prototype.background = function(c, x, y, w, h, strokeWidth)
5762{
5763	c.setStrokeWidth(strokeWidth);
5764	c.save();
5765	c.save();
5766	c.setStrokeWidth(2 * strokeWidth);
5767	c.setStrokeColor('#292929');
5768	c.setLineJoin('round');
5769
5770	c.begin();
5771	c.moveTo(0, h * 0.8182);
5772	c.lineTo(0, h * 0.1818);
5773	c.lineTo(w * 0.4007, 0);
5774	c.lineTo(w * 0.606, 0);
5775	c.lineTo(w, h * 0.1792);
5776	c.lineTo(w, h * 0.8182);
5777	c.lineTo(w * 0.5993, h);
5778	c.lineTo(w * 0.4007, h);
5779	c.close();
5780	c.fillAndStroke();
5781};
5782
5783mxShapeAws3dEmailService.prototype.foreground = function(c, x, y, w, h, strokeWidth)
5784{
5785	c.restore();
5786	c.setShadow(false);
5787	c.setFillColor('#000000');
5788	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dEmailService.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
5789	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
5790	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
5791
5792	c.begin();
5793	c.moveTo(0, h * 0.2727);
5794	c.lineTo(w * 0.4007, h * 0.4546);
5795	c.lineTo(w * 0.5993, h * 0.4546);
5796	c.lineTo(w * 0.5993, h);
5797	c.lineTo(w * 0.4007, h);
5798	c.lineTo(0, h * 0.8182);
5799	c.close();
5800	c.fill();
5801
5802	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
5803	c.begin();
5804	c.moveTo(w * 0.5993, h * 0.4546);
5805	c.lineTo(w, h * 0.2727);
5806	c.lineTo(w * 0.8013, h * 0.1792);
5807	c.lineTo(w * 0.8013, h * 0.0883);
5808	c.lineTo(w, h * 0.1792);
5809	c.lineTo(w, h * 0.8182);
5810	c.lineTo(w * 0.5993, h);
5811	c.close();
5812	c.fill();
5813
5814	c.restore();
5815	c.setShadow(false);
5816	c.setLineJoin('round');
5817
5818	c.begin();
5819	c.moveTo(0, h * 0.2727);
5820	c.lineTo(w * 0.4007, h * 0.4546);
5821	c.lineTo(w * 0.5993, h * 0.4546);
5822	c.lineTo(w * 0.5993, h);
5823	c.lineTo(w * 0.4007, h);
5824	c.lineTo(0, h * 0.8182);
5825	c.close();
5826	c.stroke();
5827
5828	c.begin();
5829	c.moveTo(w * 0.5993, h * 0.4546);
5830	c.lineTo(w, h * 0.2727);
5831	c.lineTo(w * 0.8013, h * 0.1792);
5832	c.lineTo(w * 0.8013, h * 0.0883);
5833	c.lineTo(w, h * 0.1792);
5834	c.lineTo(w, h * 0.8182);
5835	c.lineTo(w * 0.5993, h);
5836	c.close();
5837	c.stroke();
5838
5839	c.begin();
5840	c.moveTo(w * 0.202, h * 0.0883);
5841	c.lineTo(w * 0.202, h * 0.1818);
5842	c.lineTo(w * 0.4007, h * 0.2727);
5843	c.lineTo(w * 0.5993, h * 0.2727);
5844	c.lineTo(w * 0.798, h * 0.1818);
5845	c.moveTo(w * 0.2053, h * 0.1818);
5846	c.lineTo(w * 0.0033, h * 0.2714);
5847	c.moveTo(w * 0.4007, h * 0.2727);
5848	c.lineTo(w * 0.4007, h * 0.9961);
5849	c.moveTo(w * 0.5993, h * 0.2727);
5850	c.lineTo(w * 0.5993, h * 0.4546);
5851	c.stroke();
5852
5853	c.setLineJoin('miter');
5854	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
5855	c.setFillColor(strokeColor);
5856	c.begin();
5857	c.moveTo(w * 0.4437, h * 0.0779);
5858	c.arcTo(w * 0.0662, h * 0.0519, 0, 0, 1, w * 0.404, h * 0.0706);
5859	c.arcTo(w * 0.0464, h * 0.0364, 0, 0, 1, w * 0.3815, h * 0.0421);
5860	c.arcTo(w * 0.053, h * 0.026, 0, 0, 1, w * 0.4205, h * 0.0187);
5861	c.arcTo(w * 0.1987, h * 0.1558, 0, 0, 1, w * 0.4768, h * 0.0203);
5862	c.arcTo(w * 0.0795, h * 0.0364, 0, 0, 1, w * 0.5199, h * 0.0494);
5863	c.arcTo(w * 0.0265, h * 0.0208, 0, 0, 1, w * 0.5099, h * 0.0649);
5864	c.arcTo(w * 0.0795, h * 0.0623, 0, 0, 1, w * 0.4536, h * 0.0727);
5865	c.arcTo(w * 0.0199, h * 0.0156, 0, 0, 1, w * 0.4404, h * 0.0597);
5866	c.arcTo(w * 0.0265, h * 0.0208, 0, 0, 1, w * 0.4219, h * 0.0566);
5867	c.arcTo(w * 0.0199, h * 0.0114, 0, 0, 1, w * 0.4172, h * 0.0431);
5868	c.arcTo(w * 0.0265, h * 0.0208, 0, 0, 1, w * 0.4483, h * 0.0416);
5869	c.arcTo(w * 0.0132, h * 0.0104, 0, 0, 1, w * 0.457, h * 0.053);
5870	c.arcTo(w * 0.0132, h * 0.0104, 0, 0, 0, w * 0.4669, h * 0.0431);
5871	c.arcTo(w * 0.0166, h * 0.0166, 0, 0, 0, w * 0.4464, h * 0.0358);
5872	c.lineTo(w * 0.4437, h * 0.0338);
5873	c.arcTo(w * 0.0199, h * 0.0156, 0, 0, 1, w * 0.4603, h * 0.0322);
5874	c.arcTo(w * 0.0397, h * 0.0156, 0, 0, 1, w * 0.4755, h * 0.0462);
5875	c.arcTo(w * 0.0199, h * 0.0156, 0, 0, 1, w * 0.4669, h * 0.0545);
5876	c.arcTo(w * 0.053, h * 0.0416, 0, 0, 1, w * 0.453, h * 0.0608);
5877	c.arcTo(w * 0.0099, h * 0.0078, 0, 0, 0, w * 0.4636, h * 0.0675);
5878	c.arcTo(w * 0.0662, h * 0.0519, 0, 0, 0, w * 0.498, h * 0.0623);
5879	c.arcTo(w * 0.0185, h * 0.0145, 0, 0, 0, w * 0.5079, h * 0.0457);
5880	c.arcTo(w * 0.053, h * 0.0416, 0, 0, 0, w * 0.4848, h * 0.0296);
5881	c.arcTo(w * 0.0993, h * 0.0779, 0, 0, 0, w * 0.455, h * 0.0234);
5882	c.arcTo(w * 0.1325, h * 0.1039, 0, 0, 0, w * 0.4172, h * 0.026);
5883	c.arcTo(w * 0.0397, h * 0.0312, 0, 0, 0, w * 0.3927, h * 0.039);
5884	c.arcTo(w * 0.0265, h * 0.0208, 0, 0, 0, w * 0.3974, h * 0.0571);
5885	c.arcTo(w * 0.053, h * 0.0416, 0, 0, 0, w * 0.4205, h * 0.0701);
5886	c.arcTo(w * 0.0331, h * 0.026, 0, 0, 0, w * 0.4404, h * 0.0722);
5887	c.moveTo(w * 0.42, h * 0.049);
5888	c.arcTo(w * 0.02, h * 0.02, 0, 0, 0, w * 0.435, h * 0.055);
5889	c.arcTo(w * 0.02, h * 0.02, 0, 0, 0, w * 0.45, h * 0.049);
5890	c.arcTo(w * 0.02, h * 0.02, 0, 0, 0, w * 0.435, h * 0.043);
5891	c.arcTo(w * 0.02, h * 0.02, 0, 0, 0, w * 0.42, h * 0.049);
5892	c.close();
5893	c.moveTo(w * 0.4669, h * 0.0894);
5894	c.arcTo(w * 0.1325, h * 0.1039, 0, 0, 0, w * 0.5099, h * 0.0831);
5895	c.lineTo(w * 0.6689, h * 0.1543);
5896	c.lineTo(w * 0.4887, h * 0.1371);
5897	c.close();
5898	c.moveTo(w * 0.3887, h * 0.0769);
5899	c.arcTo(w * 0.0662, h * 0.0519, 0, 0, 0, w * 0.4205, h * 0.0888);
5900	c.arcTo(w * 0.0662, h * 0.026, 0, 0, 0, w * 0.447, h * 0.0894);
5901	c.lineTo(w * 0.4735, h * 0.1512);
5902	c.lineTo(w * 0.6689, h * 0.1688);
5903	c.lineTo(w * 0.5199, h * 0.2364);
5904	c.lineTo(w * 0.2815, h * 0.1273);
5905	c.close();
5906	c.fill();
5907
5908	c.setStrokeWidth(2 * strokeWidth);
5909	c.setStrokeColor('#292929');
5910	c.setLineJoin('round');
5911
5912	c.begin();
5913	c.moveTo(0, h * 0.8182);
5914	c.lineTo(0, h * 0.1818);
5915	c.lineTo(w * 0.4007, 0);
5916	c.lineTo(w * 0.606, 0);
5917	c.lineTo(w, h * 0.1792);
5918	c.lineTo(w, h * 0.8182);
5919	c.lineTo(w * 0.5993, h);
5920	c.lineTo(w * 0.4007, h);
5921	c.close();
5922	c.stroke();
5923};
5924
5925mxCellRenderer.registerShape(mxShapeAws3dEmailService.prototype.cst.EMAIL_SERVICE, mxShapeAws3dEmailService);
5926
5927//**********************************************************************************************************************************************************
5928//Worker
5929//**********************************************************************************************************************************************************
5930/**
5931* Extends mxShape.
5932*/
5933function mxShapeAws3dWorker(bounds, fill, stroke, strokewidth)
5934{
5935	mxShape.call(this);
5936	this.bounds = bounds;
5937	this.fill = fill;
5938	this.stroke = stroke;
5939	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
5940};
5941
5942/**
5943* Extends mxShape.
5944*/
5945mxUtils.extend(mxShapeAws3dWorker, mxShape);
5946
5947mxShapeAws3dWorker.prototype.cst = {
5948		WORKER : 'mxgraph.aws3d.worker',
5949		SHADING_COLORS : 'shadingCols'
5950};
5951
5952/**
5953* Function: paintVertexShape
5954*
5955* Paints the vertex shape.
5956*/
5957mxShapeAws3dWorker.prototype.paintVertexShape = function(c, x, y, w, h)
5958{
5959	c.translate(x, y);
5960
5961	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
5962	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
5963	var strokeWidth1 = strokeWidth * w / 74;
5964	var strokeWidth2 = strokeWidth * h / 50;
5965
5966	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
5967
5968	c.setStrokeWidth(strokeWidth);
5969	c.setShadow(false);
5970	c.save();
5971	c.save();
5972	c.setStrokeWidth(2 * strokeWidth);
5973	c.setStrokeColor('#292929');
5974	c.setLineJoin('round');
5975
5976	if (isShadow == 1)
5977	{
5978		c.setShadow(true);
5979	}
5980
5981	c.begin();
5982	c.moveTo(0, h * 0.572);
5983	c.lineTo(w * 0.0865, h * 0.284);
5984	c.lineTo(w * 0.4203, 0);
5985	c.lineTo(w * 0.5865, 0);
5986	c.lineTo(w * 0.919, h * 0.286);
5987	c.lineTo(w, h * 0.566);
5988	c.lineTo(w * 0.5027, h);
5989	c.close();
5990	c.fillAndStroke();
5991
5992	c.restore();
5993	c.setFillColor('#000000');
5994	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dWorker.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
5995	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
5996	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
5997
5998	c.begin();
5999	c.moveTo(0, h * 0.566);
6000	c.lineTo(w * 0.0892, h * 0.282);
6001	c.lineTo(w * 0.0878, h * 0.426);
6002	c.lineTo(w * 0.4216, h * 0.712);
6003	c.lineTo(w * 0.5865, h * 0.712);
6004	c.lineTo(w * 0.5027, h);
6005	c.close();
6006	c.fill();
6007
6008	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
6009	c.begin();
6010	c.moveTo(w * 0.5027, h);
6011	c.lineTo(w * 0.5865, h * 0.712);
6012	c.lineTo(w * 0.9176, h * 0.43);
6013	c.lineTo(w, h * 0.566);
6014	c.close();
6015	c.fill();
6016
6017	c.restore();
6018	c.setLineJoin('round');
6019
6020	c.begin();
6021	c.moveTo(0, h * 0.566);
6022	c.lineTo(w * 0.0892, h * 0.282);
6023	c.lineTo(w * 0.0878, h * 0.426);
6024	c.lineTo(w * 0.4216, h * 0.712);
6025	c.lineTo(w * 0.5865, h * 0.712);
6026	c.lineTo(w * 0.5027, h);
6027	c.close();
6028	c.moveTo(w * 0.5027, h);
6029	c.lineTo(w * 0.5865, h * 0.712);
6030	c.lineTo(w * 0.9176, h * 0.43);
6031	c.lineTo(w, h * 0.566);
6032	c.close();
6033	c.moveTo(0, h * 0.572);
6034	c.lineTo(w * 0.0892, h * 0.422);
6035	c.moveTo(w * 0.5027, h);
6036	c.lineTo(w * 0.4189, h * 0.708);
6037	c.moveTo(w * 0.9176, h * 0.43);
6038	c.lineTo(w * 0.9176, h * 0.29);
6039	c.stroke();
6040
6041	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
6042	c.setFillColor(strokeColor);
6043	c.setLineJoin('round');
6044	c.begin();
6045	c.moveTo(w * 0.2892, h * 0.2104);
6046	c.lineTo(w * 0.3595, h * 0.1503);
6047	c.lineTo(w * 0.3973, h * 0.1844);
6048	c.arcTo(w * 0.2703, h * 0.4008, 0, 0, 1, w * 0.4486, h * 0.1703);
6049	c.lineTo(w * 0.4486, h * 0.1242);
6050	c.lineTo(w * 0.5527, h * 0.1242);
6051	c.lineTo(w * 0.5527, h * 0.1703);
6052	c.arcTo(w * 0.2703, h * 0.4008, 0, 0, 1, w * 0.6149, h * 0.1924);
6053	c.lineTo(w * 0.6527, h * 0.1603);
6054	c.lineTo(w * 0.7257, h * 0.2224);
6055	c.lineTo(w * 0.6892, h * 0.2545);
6056	c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.7162, h * 0.3106);
6057	c.lineTo(w * 0.7676, h * 0.3106);
6058	c.lineTo(w * 0.7676, h * 0.3988);
6059	c.lineTo(w * 0.7162, h * 0.3988);
6060	c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.6973, h * 0.4409);
6061	c.lineTo(w * 0.7378, h * 0.475);
6062	c.lineTo(w * 0.6635, h * 0.5371);
6063	c.lineTo(w * 0.6297, h * 0.505);
6064	c.arcTo(w * 0.2703, h * 0.4008, 0, 0, 1, w * 0.5527, h * 0.5351);
6065	c.lineTo(w * 0.5527, h * 0.5812);
6066	c.lineTo(w * 0.45, h * 0.5812);
6067	c.lineTo(w * 0.45, h * 0.5351);
6068	c.arcTo(w * 0.2703, h * 0.4008, 0, 0, 1, w * 0.3878, h * 0.513);
6069	c.lineTo(w * 0.3514, h * 0.5431);
6070	c.lineTo(w * 0.2784, h * 0.481);
6071	c.lineTo(w * 0.3149, h * 0.4509);
6072	c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.2865, h * 0.3968);
6073	c.lineTo(w * 0.2351, h * 0.3968);
6074	c.lineTo(w * 0.2351, h * 0.3086);
6075	c.lineTo(w * 0.2865, h * 0.3086);
6076	c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.3203, h * 0.2425);
6077	c.close();
6078	c.moveTo(w * 0.4054, h * 0.2445);
6079	c.arcTo(w * 0.1351, h * 0.2004, 0, 0, 0, w * 0.3554, h * 0.2986);
6080	c.arcTo(w * 0.0676, h * 0.1002, 0, 0, 0, w * 0.3432, h * 0.3567);
6081	c.arcTo(w * 0.0811, h * 0.1202, 0, 0, 0, w * 0.3635, h * 0.4208);
6082	c.arcTo(w * 0.1351, h * 0.2004, 0, 0, 0, w * 0.4122, h * 0.4649);
6083	c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 0, w * 0.4122, h * 0.4649);
6084	c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 0, w * 0.5676, h * 0.4749);
6085	c.arcTo(w * 0.1351, h * 0.2004, 0, 0, 0, w * 0.6351, h * 0.4228);
6086	c.arcTo(w * 0.0676, h * 0.1002, 0, 0, 0, w * 0.6595, h * 0.3467);
6087	c.arcTo(w * 0.0811, h * 0.1202, 0, 0, 0, w * 0.6149, h * 0.2605);
6088	c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 0, w * 0.5419, h * 0.2204);
6089	c.arcTo(w * 0.3378, h * 0.501, 0, 0, 0, w * 0.4649, h * 0.2184);
6090	c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 0, w * 0.4054, h * 0.2445);
6091	c.close();
6092	c.moveTo(w * 0.473, h * 0.2806);
6093	c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.55, h * 0.2866);
6094	c.arcTo(w * 0.0676, h * 0.1002, 0, 0, 1, w * 0.5892, h * 0.3307);
6095	c.arcTo(w * 0.0338, h * 0.0501, 0, 0, 1, w * 0.5824, h * 0.3888);
6096	c.arcTo(w * 0.0946, h * 0.1403, 0, 0, 1, w * 0.5216, h * 0.4269);
6097	c.arcTo(w * 0.1622, h * 0.2405, 0, 0, 1, w * 0.4432, h * 0.4128);
6098	c.arcTo(w * 0.0541, h * 0.0802, 0, 0, 1, w * 0.4108, h * 0.3527);
6099	c.arcTo(w * 0.0541, h * 0.0802, 0, 0, 1, w * 0.4351, h * 0.2986);
6100	c.arcTo(w * 0.0811, h * 0.1202, 0, 0, 1, w * 0.473, h * 0.2806);
6101	c.close();
6102	c.fill();
6103
6104	c.setStrokeWidth(2 * strokeWidth);
6105	c.setStrokeColor('#292929');
6106
6107	c.begin();
6108	c.moveTo(0, h * 0.572);
6109	c.lineTo(w * 0.0865, h * 0.284);
6110	c.lineTo(w * 0.4203, 0);
6111	c.lineTo(w * 0.5865, 0);
6112	c.lineTo(w * 0.919, h * 0.286);
6113	c.lineTo(w, h * 0.566);
6114	c.lineTo(w * 0.5027, h);
6115	c.close();
6116	c.stroke();
6117};
6118
6119mxCellRenderer.registerShape(mxShapeAws3dWorker.prototype.cst.WORKER, mxShapeAws3dWorker);
6120
6121//**********************************************************************************************************************************************************
6122//Application
6123//**********************************************************************************************************************************************************
6124/**
6125* Extends mxShape.
6126*/
6127function mxShapeAws3dApplication2(bounds, fill, stroke, strokewidth)
6128{
6129	mxShape.call(this);
6130	this.bounds = bounds;
6131	this.fill = fill;
6132	this.stroke = stroke;
6133	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
6134};
6135
6136/**
6137* Extends mxShape.
6138*/
6139mxUtils.extend(mxShapeAws3dApplication2, mxShape);
6140
6141mxShapeAws3dApplication2.prototype.cst = {
6142		APPLICATION2 : 'mxgraph.aws3d.application2',
6143		SHADING_COLORS : 'shadingCols'
6144};
6145
6146/**
6147* Function: paintVertexShape
6148*
6149* Paints the vertex shape.
6150*/
6151mxShapeAws3dApplication2.prototype.paintVertexShape = function(c, x, y, w, h)
6152{
6153	c.translate(x, y);
6154
6155	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
6156	var strokeWidth1 = strokeWidth * w / 62;
6157	var strokeWidth2 = strokeWidth * h / 53.5;
6158	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
6159
6160	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
6161
6162	c.setShadow(false);
6163	c.setStrokeWidth(strokeWidth);
6164	c.save();
6165	c.save();
6166	c.setStrokeWidth(2 * strokeWidth);
6167	c.setStrokeColor('#292929');
6168	c.setLineJoin('round');
6169
6170	if (isShadow == 1)
6171	{
6172		c.setShadow(true);
6173	}
6174
6175	c.begin();
6176	c.moveTo(0, h * 0.6766);
6177	c.lineTo(0, h * 0.3271);
6178	c.lineTo(w * 0.5, 0);
6179	c.lineTo(w, h * 0.3271);
6180	c.lineTo(w, h * 0.6766);
6181	c.lineTo(w * 0.5, h);
6182	c.close();
6183	c.fillAndStroke();
6184
6185	c.restore();
6186	c.setFillColor('#000000');
6187	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dApplication2.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
6188	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
6189	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
6190
6191	c.begin();
6192	c.moveTo(0, h * 0.3271);
6193	c.lineTo(w * 0.5, h * 0.6449);
6194	c.lineTo(w * 0.5, h);
6195	c.lineTo(0, h * 0.6766);
6196	c.close();
6197	c.fill();
6198
6199	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
6200	c.begin();
6201	c.moveTo(w * 0.5, h * 0.6449);
6202	c.lineTo(w, h * 0.3271);
6203	c.lineTo(w, h * 0.6766);
6204	c.lineTo(w * 0.5, h);
6205	c.close();
6206	c.fill();
6207
6208	c.restore();
6209	c.setLineJoin('round');
6210
6211	c.begin();
6212	c.moveTo(0, h * 0.3271);
6213	c.lineTo(w * 0.5, h * 0.6449);
6214	c.lineTo(w * 0.5, h);
6215	c.lineTo(0, h * 0.6766);
6216	c.close();
6217	c.stroke();
6218
6219	c.begin();
6220	c.moveTo(w * 0.5, h * 0.6449);
6221	c.lineTo(w, h * 0.3271);
6222	c.lineTo(w, h * 0.6766);
6223	c.lineTo(w * 0.5, h);
6224	c.close();
6225	c.stroke();
6226
6227	c.setLineJoin('miter');
6228	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
6229	c.setFillColor(strokeColor);
6230	c.begin();
6231	c.moveTo(w * 0.1742, h * 0.6355);
6232	c.lineTo(w * 0.1742, h * 0.4393);
6233	c.lineTo(w * 0.6726, h * 0.1121);
6234	c.lineTo(w * 0.7661, h * 0.1738);
6235	c.lineTo(w * 0.2661, h * 0.4991);
6236	c.lineTo(w * 0.2661, h * 0.6916);
6237	c.close();
6238	c.moveTo(w * 0.2871, h * 0.7084);
6239	c.lineTo(w * 0.2871, h * 0.514);
6240	c.lineTo(w * 0.7823, h * 0.1869);
6241	c.lineTo(w * 0.8629, h * 0.2374);
6242	c.lineTo(w * 0.379, h * 0.5626);
6243	c.lineTo(w * 0.379, h * 0.7607);
6244	c.close();
6245	c.fill();
6246
6247	c.setStrokeWidth(2 * strokeWidth);
6248	c.setStrokeColor('#292929');
6249	c.setLineJoin('round');
6250
6251	c.begin();
6252	c.moveTo(0, h * 0.6766);
6253	c.lineTo(0, h * 0.3271);
6254	c.lineTo(w * 0.5, 0);
6255	c.lineTo(w, h * 0.3271);
6256	c.lineTo(w, h * 0.6766);
6257	c.lineTo(w * 0.5, h);
6258	c.close();
6259	c.stroke();
6260};
6261
6262mxCellRenderer.registerShape(mxShapeAws3dApplication2.prototype.cst.APPLICATION2, mxShapeAws3dApplication2);
6263
6264//**********************************************************************************************************************************************************
6265//Elastic Beanstalk
6266//**********************************************************************************************************************************************************
6267/**
6268* Extends mxShape.
6269*/
6270function mxShapeAws3dElasticBeanstalk(bounds, fill, stroke, strokewidth)
6271{
6272	mxShape.call(this);
6273	this.bounds = bounds;
6274	this.fill = fill;
6275	this.stroke = stroke;
6276	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
6277};
6278
6279/**
6280* Extends mxShape.
6281*/
6282mxUtils.extend(mxShapeAws3dElasticBeanstalk, mxShape);
6283
6284mxShapeAws3dElasticBeanstalk.prototype.cst = {
6285		ELASTIC_BEANSTALK : 'mxgraph.aws3d.elasticBeanstalk',
6286		SHADING_COLORS : 'shadingCols'
6287};
6288
6289/**
6290* Function: paintVertexShape
6291*
6292* Paints the vertex shape.
6293*/
6294mxShapeAws3dElasticBeanstalk.prototype.paintVertexShape = function(c, x, y, w, h)
6295{
6296	c.translate(x, y);
6297
6298	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
6299	var strokeWidth1 = strokeWidth * w / 181.5;
6300	var strokeWidth2 = strokeWidth * h / 140;
6301	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
6302
6303	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
6304
6305	c.setShadow(false);
6306	c.setStrokeWidth(strokeWidth);
6307	c.save();
6308	c.save();
6309	c.save();
6310	c.setStrokeWidth(2 * strokeWidth);
6311	c.setStrokeColor('#292929');
6312	c.setLineJoin('round');
6313
6314	if (isShadow == 1)
6315	{
6316		c.setShadow(true);
6317	}
6318
6319	c.begin();
6320	c.moveTo(0, h * 0.6239);
6321	c.lineTo(0, h * 0.3754);
6322	c.lineTo(w * 0.5, 0);
6323	c.lineTo(w, h * 0.3754);
6324	c.lineTo(w, h * 0.6239);
6325	c.lineTo(w * 0.5, h);
6326	c.close();
6327	c.fillAndStroke();
6328
6329	c.restore();
6330	c.setFillColor('#000000');
6331	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dElasticBeanstalk.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
6332	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
6333	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
6334
6335	c.begin();
6336	c.moveTo(0, h * 0.3754);
6337	c.lineTo(w * 0.5, h * 0.7514);
6338	c.lineTo(w * 0.5, h);
6339	c.lineTo(0, h * 0.6239);
6340	c.close();
6341	c.fill();
6342
6343	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
6344	c.begin();
6345	c.moveTo(w * 0.5, h * 0.7514);
6346	c.lineTo(w, h * 0.3754);
6347	c.lineTo(w, h * 0.6239);
6348	c.lineTo(w * 0.5, h);
6349	c.close();
6350	c.fill();
6351
6352	c.restore();
6353	c.setLineJoin('round');
6354
6355	c.begin();
6356	c.moveTo(0, h * 0.3754);
6357	c.lineTo(w * 0.5, h * 0.7514);
6358	c.lineTo(w * 0.5, h);
6359	c.lineTo(0, h * 0.6239);
6360	c.close();
6361	c.moveTo(w * 0.5, h * 0.7514);
6362	c.lineTo(w, h * 0.3754);
6363	c.lineTo(w, h * 0.6239);
6364	c.lineTo(w * 0.5, h);
6365	c.close();
6366	c.moveTo(w * 0.2485, h * 0.187);
6367	c.lineTo(w * 0.7493, h * 0.5623);
6368	c.lineTo(w * 0.7493, h * 0.8123);
6369	c.stroke();
6370
6371	c.setLineJoin('miter');
6372	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
6373	c.setFillColor(strokeColor);
6374	c.begin();
6375	c.moveTo(w * 0.7763, h * 0.2063);
6376	c.lineTo(w * 0.2749, h * 0.5817);
6377	c.lineTo(w * 0.2749, h * 0.8309);
6378	c.lineTo(w * 0.2204, h * 0.7894);
6379	c.lineTo(w * 0.2204, h * 0.5394);
6380	c.lineTo(w * 0.7185, h * 0.1619);
6381	c.close();
6382	c.fill();
6383
6384	c.restore();
6385	c.begin();
6386	c.moveTo(w * 0.1713, h * 0.543);
6387	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2028, h * 0.5723);
6388	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2281, h * 0.6096);
6389	c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.2402, h * 0.644);
6390	c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.2424, h * 0.6848);
6391	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.216, h * 0.6612);
6392	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.1895, h * 0.6239);
6393	c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.1719, h * 0.5824);
6394	c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.1713, h * 0.543);
6395	c.close();
6396	c.moveTo(w * 0.2507, h * 0.7794);
6397	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.254, h * 0.7421);
6398	c.arcTo(w * 0.022, h * 0.0287, 0, 0, 1, w * 0.27, h * 0.7264);
6399	c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.2986, h * 0.73);
6400	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3234, h * 0.7457);
6401	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3218, h * 0.7815);
6402	c.arcTo(w * 0.022, h * 0.0287, 0, 0, 1, w * 0.3019, h * 0.7987);
6403	c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.27, h * 0.7923);
6404	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2507, h * 0.7794);
6405	c.close();
6406	c.moveTo(w * 0.2799, h * 0.5265);
6407	c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.3003, h * 0.515);
6408	c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.3317, h * 0.515);
6409	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3774, h * 0.5315);
6410	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.4033, h * 0.5487);
6411	c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.3906, h * 0.5595);
6412	c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.3493, h * 0.5616);
6413	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3069, h * 0.5444);
6414	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2799, h * 0.5265);
6415	c.close();
6416	c.moveTo(w * 0.2887, h * 0.3933);
6417	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.314, h * 0.414);
6418	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3322, h * 0.4391);
6419	c.arcTo(w * 0.0193, h * 0.0251, 0, 0, 1, w * 0.3344, h * 0.4699);
6420	c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.3196, h * 0.485);
6421	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2887, h * 0.4592);
6422	c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.27, h * 0.4269);
6423	c.arcTo(w * 0.0165, h * 0.0215, 0, 0, 1, w * 0.2727, h * 0.4054);
6424	c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.2887, h * 0.3933);
6425	c.close();
6426	c.moveTo(w * 0.4613, h * 0.262);
6427	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.4867, h * 0.2827);
6428	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.5049, h * 0.3078);
6429	c.arcTo(w * 0.0193, h * 0.0251, 0, 0, 1, w * 0.5071, h * 0.3386);
6430	c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.4922, h * 0.3537);
6431	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.4613, h * 0.3279);
6432	c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.4426, h * 0.2956);
6433	c.arcTo(w * 0.0165, h * 0.0215, 0, 0, 1, w * 0.4453, h * 0.2741);
6434	c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.4613, h * 0.262);
6435	c.close();
6436	c.moveTo(w * 0.4525, h * 0.3952);
6437	c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.4729, h * 0.3837);
6438	c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.5043, h * 0.3837);
6439	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.55, h * 0.4002);
6440	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.5759, h * 0.4174);
6441	c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.5633, h * 0.4282);
6442	c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.5219, h * 0.4303);
6443	c.arcTo(w * 0.1653, h * 0.1074, 0, 0, 1, w * 0.4795, h * 0.4131);
6444	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.4525, h * 0.3952);
6445	c.close();
6446	c.moveTo(w * 0.6217, h * 0.1426);
6447	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6471, h * 0.1633);
6448	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6652, h * 0.1884);
6449	c.arcTo(w * 0.0193, h * 0.0251, 0, 0, 1, w * 0.6674, h * 0.2192);
6450	c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.6526, h * 0.2342);
6451	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6217, h * 0.2085);
6452	c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.603, h * 0.1762);
6453	c.arcTo(w * 0.0165, h * 0.0215, 0, 0, 1, w * 0.6057, h * 0.1547);
6454	c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.6217, h * 0.1426);
6455	c.close();
6456	c.moveTo(w * 0.6129, h * 0.2758);
6457	c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.6333, h * 0.2643);
6458	c.arcTo(w * 0.0826, h * 0.1433, 0, 0, 1, w * 0.6647, h * 0.2643);
6459	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.7104, h * 0.2808);
6460	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.7363, h * 0.298);
6461	c.arcTo(w * 0.0826, h * 0.2149, 0, 0, 1, w * 0.7363, h * 0.298);
6462	c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.6823, h * 0.3109);
6463	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6399, h * 0.2937);
6464	c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6129, h * 0.2758);
6465	c.close();
6466	c.fillAndStroke();
6467
6468	c.setStrokeWidth(2 * strokeWidth);
6469	c.setStrokeColor('#292929');
6470	c.setLineJoin('round');
6471
6472	c.begin();
6473	c.moveTo(0, h * 0.6239);
6474	c.lineTo(0, h * 0.3754);
6475	c.lineTo(w * 0.5, 0);
6476	c.lineTo(w, h * 0.3754);
6477	c.lineTo(w, h * 0.6239);
6478	c.lineTo(w * 0.5, h);
6479	c.close();
6480	c.stroke();
6481};
6482
6483mxCellRenderer.registerShape(mxShapeAws3dElasticBeanstalk.prototype.cst.ELASTIC_BEANSTALK, mxShapeAws3dElasticBeanstalk);
6484
6485//**********************************************************************************************************************************************************
6486//SimpleDB 2
6487//**********************************************************************************************************************************************************
6488/**
6489* Extends mxShape.
6490*/
6491function mxShapeAws3dSimpleDB2(bounds, fill, stroke, strokewidth)
6492{
6493	mxShape.call(this);
6494	this.bounds = bounds;
6495	this.fill = fill;
6496	this.stroke = stroke;
6497	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
6498};
6499
6500/**
6501* Extends mxShape.
6502*/
6503mxUtils.extend(mxShapeAws3dSimpleDB2, mxShape);
6504
6505mxShapeAws3dSimpleDB2.prototype.cst = {
6506		SIMPLE_DB_2 : 'mxgraph.aws3d.simpleDb2',
6507		SHADING_COLORS : 'shadingCols'
6508};
6509
6510/**
6511* Function: paintVertexShape
6512*
6513* Paints the vertex shape.
6514*/
6515mxShapeAws3dSimpleDB2.prototype.paintVertexShape = function(c, x, y, w, h)
6516{
6517	c.translate(x, y);
6518
6519	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
6520	var strokeWidth1 = strokeWidth * w / 181.5;
6521	var strokeWidth2 = strokeWidth * h / 210;
6522
6523	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
6524
6525	this.background(c, 0, 0, w, h, strokeWidth);
6526	c.setShadow(false);
6527	this.foreground(c, 0, 0, w, h, strokeWidth);
6528};
6529
6530mxShapeAws3dSimpleDB2.prototype.background = function(c, x, y, w, h, strokeWidth)
6531{
6532	c.setStrokeWidth(strokeWidth);
6533	c.save();
6534	c.save();
6535	c.save();
6536	c.setStrokeWidth(2 * strokeWidth);
6537	c.setStrokeColor('#292929');
6538	c.setLineJoin('round');
6539
6540	c.begin();
6541	c.moveTo(0, h * 0.8183);
6542	c.lineTo(0, h * 0.1848);
6543	c.lineTo(w * 0.3366, 0);
6544	c.lineTo(w * 0.6293, h * 0.0021);
6545	c.lineTo(w, h * 0.1833);
6546	c.lineTo(w, h * 0.8183);
6547	c.lineTo(w * 0.6694, h);
6548	c.lineTo(w * 0.4986, h * 0.9091);
6549	c.lineTo(w * 0.3333, h);
6550	c.close();
6551	c.fillAndStroke();
6552};
6553
6554mxShapeAws3dSimpleDB2.prototype.foreground = function(c, x, y, w, h, strokeWidth)
6555{
6556	c.restore();
6557	c.setShadow(false);
6558	c.setFillColor('#000000');
6559	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSimpleDB2.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
6560	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
6561	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
6562
6563	c.begin();
6564	c.moveTo(0, h * 0.1848);
6565	c.lineTo(w * 0.168, h * 0.1833);
6566	c.lineTo(0, h * 0.365);
6567	c.lineTo(w * 0.3333, h * 0.5467);
6568	c.lineTo(w * 0.3333, h);
6569	c.lineTo(0, h * 0.8183);
6570	c.close();
6571	c.moveTo(w * 0.4986, h * 0.9078);
6572	c.lineTo(w * 0.4986, h * 0.3655);
6573	c.lineTo(w * 0.6667, h * 0.5457);
6574	c.lineTo(w * 0.6667, h);
6575	c.close();
6576	c.fill();
6577
6578	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
6579	c.begin();
6580	c.moveTo(w * 0.3333, h * 0.5467);
6581	c.lineTo(w * 0.4986, h * 0.3655);
6582	c.lineTo(w * 0.4986, h * 0.9076);
6583	c.lineTo(w * 0.3333, h);
6584	c.close();
6585	c.moveTo(w * 0.8292, h * 0.1822);
6586	c.lineTo(w, h * 0.1848);
6587	c.lineTo(w, h * 0.8183);
6588	c.lineTo(w * 0.6667, h);
6589	c.lineTo(w * 0.6667, h * 0.5441);
6590	c.lineTo(w, h * 0.3666);
6591	c.close();
6592	c.fill();
6593
6594	c.restore();
6595	c.setShadow(false);
6596	c.setLineJoin('round');
6597
6598	c.begin();
6599	c.moveTo(0, h * 0.1848);
6600	c.lineTo(w * 0.168, h * 0.1833);
6601	c.lineTo(0, h * 0.365);
6602	c.lineTo(w * 0.3333, h * 0.5467);
6603	c.lineTo(w * 0.3333, h);
6604	c.lineTo(0, h * 0.8183);
6605	c.close();
6606	c.moveTo(w * 0.4986, h * 0.9078);
6607	c.lineTo(w * 0.4986, h * 0.3655);
6608	c.lineTo(w * 0.6667, h * 0.5457);
6609	c.lineTo(w * 0.6667, h);
6610	c.close();
6611	c.moveTo(w * 0.3333, h * 0.5467);
6612	c.lineTo(w * 0.4986, h * 0.3655);
6613	c.lineTo(w * 0.4986, h * 0.9076);
6614	c.lineTo(w * 0.3333, h);
6615	c.close();
6616	c.moveTo(w * 0.8292, h * 0.1822);
6617	c.lineTo(w, h * 0.1848);
6618	c.lineTo(w, h * 0.8183);
6619	c.lineTo(w * 0.6667, h);
6620	c.lineTo(w * 0.6667, h * 0.5441);
6621	c.lineTo(w, h * 0.3666);
6622	c.close();
6623	c.moveTo(w * 0.1669, h * 0.1828);
6624	c.lineTo(w * 0.4986, h * 0.3655);
6625	c.lineTo(w * 0.8314, h * 0.1833);
6626	c.lineTo(w * 0.4986, h * 0.0031);
6627	c.close();
6628	c.stroke();
6629
6630	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
6631	c.setFillColor(strokeColor);
6632	c.begin();
6633	c.moveTo(w * 0.2634, h * 0.1833);
6634	c.lineTo(w * 0.5003, h * 0.0535);
6635	c.lineTo(w * 0.7394, h * 0.1833);
6636	c.lineTo(w * 0.5003, h * 0.3136);
6637	c.close();
6638	c.fill();
6639
6640	var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#000000');
6641	c.restore();
6642	c.setShadow(false);
6643	c.setStrokeWidth(3 * strokeWidth);
6644	c.setStrokeColor(fillColor);
6645
6646	c.begin();
6647	c.moveTo(w * 0.3003, h * 0.2108);
6648	c.lineTo(w * 0.5642, h * 0.068);
6649	c.moveTo(w * 0.4429, h * 0.0693);
6650	c.lineTo(w * 0.7059, h * 0.2121);
6651	c.moveTo(w * 0.6667, h * 0.2458);
6652	c.lineTo(w * 0.3974, h * 0.0992);
6653	c.moveTo(w * 0.3499, h * 0.1277);
6654	c.lineTo(w * 0.6088, h * 0.2698);
6655	c.moveTo(w * 0.3009, h * 0.1556);
6656	c.lineTo(w * 0.5496, h * 0.2913);
6657	c.stroke();
6658
6659	c.setStrokeWidth(2 * strokeWidth);
6660	c.setStrokeColor('#292929');
6661	c.setLineJoin('round');
6662
6663	c.begin();
6664	c.moveTo(0, h * 0.8183);
6665	c.lineTo(0, h * 0.1848);
6666	c.lineTo(w * 0.3366, 0);
6667	c.lineTo(w * 0.6293, h * 0.0021);
6668	c.lineTo(w, h * 0.1833);
6669	c.lineTo(w, h * 0.8183);
6670	c.lineTo(w * 0.6694, h);
6671	c.lineTo(w * 0.4986, h * 0.9091);
6672	c.lineTo(w * 0.3333, h);
6673	c.close();
6674	c.stroke();
6675};
6676
6677mxCellRenderer.registerShape(mxShapeAws3dSimpleDB2.prototype.cst.SIMPLE_DB_2, mxShapeAws3dSimpleDB2);
6678
6679//**********************************************************************************************************************************************************
6680//Workflow Service
6681//**********************************************************************************************************************************************************
6682/**
6683* Extends mxShape.
6684*/
6685function mxShapeAws3dWorkflowService(bounds, fill, stroke, strokewidth)
6686{
6687	mxShape.call(this);
6688	this.bounds = bounds;
6689	this.fill = fill;
6690	this.stroke = stroke;
6691	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
6692};
6693
6694/**
6695* Extends mxShape.
6696*/
6697mxUtils.extend(mxShapeAws3dWorkflowService, mxShape);
6698
6699mxShapeAws3dWorkflowService.prototype.cst = {
6700		WORKFLOW_SERVICE : 'mxgraph.aws3d.workflowService',
6701		SHADING_COLORS : 'shadingCols'
6702};
6703
6704/**
6705* Function: paintVertexShape
6706*
6707* Paints the vertex shape.
6708*/
6709mxShapeAws3dWorkflowService.prototype.paintVertexShape = function(c, x, y, w, h)
6710{
6711	c.translate(x, y);
6712
6713	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
6714	var strokeWidth1 = strokeWidth * w / 181.5;
6715	var strokeWidth2 = strokeWidth * h / 210;
6716
6717	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
6718
6719	this.background(c, 0, 0, w, h, strokeWidth);
6720	c.setShadow(false);
6721	this.foreground(c, 0, 0, w, h, strokeWidth);
6722};
6723
6724mxShapeAws3dWorkflowService.prototype.background = function(c, x, y, w, h, strokeWidth)
6725{
6726	c.setStrokeWidth(strokeWidth);
6727	c.save();
6728	c.save();
6729	c.save();
6730	c.setStrokeWidth(2 * strokeWidth);
6731	c.setStrokeColor('#292929');
6732	c.setLineJoin('round');
6733
6734	c.begin();
6735	c.moveTo(0, h * 0.6456);
6736	c.lineTo(w * 0.2481, 0);
6737	c.lineTo(w * 0.7497, 0);
6738	c.lineTo(w, h * 0.6456);
6739	c.lineTo(w * 0.4984, h);
6740	c.close();
6741	c.fillAndStroke();
6742};
6743
6744mxShapeAws3dWorkflowService.prototype.foreground = function(c, x, y, w, h, strokeWidth)
6745{
6746	c.restore();
6747	c.setShadow(false);
6748	c.setFillColor('#000000');
6749	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dWorkflowService.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
6750	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
6751	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
6752
6753	c.begin();
6754	c.moveTo(0, h * 0.6456);
6755	c.lineTo(w * 0.2486, 0);
6756	c.lineTo(w * 0.2486, h * 0.3531);
6757	c.lineTo(w * 0.4984, h);
6758	c.close();
6759	c.moveTo(w * 0.7497, h * 0.3531);
6760	c.lineTo(w * 0.7497, 0);
6761	c.lineTo(w, h * 0.6456);
6762	c.close();
6763	c.fill();
6764
6765	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
6766	c.begin();
6767	c.moveTo(w * 0.4984, h);
6768	c.lineTo(w * 0.7486, h * 0.3531);
6769	c.lineTo(w, h * 0.6456);
6770	c.lineTo(w * 0.4967, h);
6771	c.close();
6772	c.fill();
6773
6774	c.restore();
6775	c.setShadow(false);
6776	c.setLineJoin('round');
6777
6778	c.begin();
6779	c.moveTo(w * 0.7497, h * 0.3531);
6780	c.lineTo(w * 0.7497, 0);
6781	c.lineTo(w, h * 0.6456);
6782	c.close();
6783	c.moveTo(0, h * 0.6456);
6784	c.lineTo(w * 0.2486, 0);
6785	c.lineTo(w * 0.2486, h * 0.3531);
6786	c.lineTo(w * 0.4984, h);
6787	c.lineTo(w * 0.7486, h * 0.3531);
6788	c.lineTo(w, h * 0.6456);
6789	c.lineTo(w * 0.4967, h);
6790	c.close();
6791	c.moveTo(w * 0.2486, h * 0.3531);
6792	c.lineTo(w * 0.7508, h * 0.3531);
6793	c.moveTo(w * 0.2488, h * 0.353);
6794	c.lineTo(0, h * 0.6486);
6795	c.stroke();
6796
6797	c.restore();
6798	c.setShadow(false);
6799	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
6800	c.setFillColor(strokeColor);
6801	c.setStrokeWidth(2 * strokeWidth);
6802
6803	c.begin();
6804	c.ellipse(w * 0.2925, h * 0.031, w * 0.4116, h * 0.2925);
6805	c.fill();
6806
6807	var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#ffffff');
6808	c.setStrokeColor(fillColor);
6809
6810	c.begin();
6811	c.moveTo(w * 0.5252, h * 0.0465);
6812	c.lineTo(w * 0.5873, h * 0.0903);
6813	c.lineTo(w * 0.5483, h * 0.1173);
6814	c.lineTo(w * 0.4874, h * 0.0728);
6815	c.close();
6816	c.moveTo(w * 0.4896, h * 0.1132);
6817	c.lineTo(w * 0.5005, h * 0.1705);
6818	c.lineTo(w * 0.4182, h * 0.1631);
6819	c.lineTo(w * 0.4122, h * 0.1058);
6820	c.close();
6821	c.moveTo(w * 0.3584, h * 0.1631);
6822	c.lineTo(w * 0.4204, h * 0.2062);
6823	c.lineTo(w * 0.3825, h * 0.2332);
6824	c.lineTo(w * 0.32, h * 0.19);
6825	c.close();
6826	c.moveTo(w * 0.4594, h * 0.2338);
6827	c.lineTo(w * 0.5214, h * 0.2783);
6828	c.lineTo(w * 0.4835, h * 0.3053);
6829	c.lineTo(w * 0.4215, h * 0.2608);
6830	c.close();
6831	c.moveTo(w * 0.5187, h * 0.0943);
6832	c.lineTo(w * 0.4879, h * 0.1152);
6833	c.moveTo(w * 0.421, h * 0.1624);
6834	c.lineTo(w * 0.3895, h * 0.1846);
6835	c.moveTo(w * 0.5, h * 0.1698);
6836	c.lineTo(w * 0.5554, h * 0.2089);
6837	c.lineTo(w * 0.4885, h * 0.2567);
6838	c.stroke();
6839
6840	c.setStrokeWidth(2 * strokeWidth);
6841	c.setStrokeColor('#292929');
6842	c.setLineJoin('round');
6843
6844	c.begin();
6845	c.moveTo(0, h * 0.6456);
6846	c.lineTo(w * 0.2481, 0);
6847	c.lineTo(w * 0.7497, 0);
6848	c.lineTo(w, h * 0.6456);
6849	c.lineTo(w * 0.4984, h);
6850	c.close();
6851	c.close();
6852	c.stroke();
6853};
6854
6855mxCellRenderer.registerShape(mxShapeAws3dWorkflowService.prototype.cst.WORKFLOW_SERVICE, mxShapeAws3dWorkflowService);
6856
6857//**********************************************************************************************************************************************************
6858//Decider
6859//**********************************************************************************************************************************************************
6860/**
6861* Extends mxShape.
6862*/
6863function mxShapeAws3dDecider(bounds, fill, stroke, strokewidth)
6864{
6865	mxShape.call(this);
6866	this.bounds = bounds;
6867	this.fill = fill;
6868	this.stroke = stroke;
6869	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
6870};
6871
6872/**
6873* Extends mxShape.
6874*/
6875mxUtils.extend(mxShapeAws3dDecider, mxShape);
6876
6877mxShapeAws3dDecider.prototype.cst = {
6878		DECIDER : 'mxgraph.aws3d.decider',
6879		SHADING_COLORS : 'shadingCols'
6880};
6881
6882/**
6883* Function: paintVertexShape
6884*
6885* Paints the vertex shape.
6886*/
6887mxShapeAws3dDecider.prototype.paintVertexShape = function(c, x, y, w, h)
6888{
6889	c.translate(x, y);
6890
6891	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
6892	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
6893	var strokeWidth1 = strokeWidth * w / 74;
6894	var strokeWidth2 = strokeWidth * h / 50;
6895
6896	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
6897
6898	c.setStrokeWidth(strokeWidth);
6899	c.setShadow(false);
6900	c.save();
6901	c.save();
6902	c.setStrokeWidth(2 * strokeWidth);
6903	c.setStrokeColor('#292929');
6904	c.setLineJoin('round');
6905
6906	if (isShadow == 1)
6907	{
6908		c.setShadow(true);
6909	}
6910
6911	c.begin();
6912	c.moveTo(0, h * 0.572);
6913	c.lineTo(w * 0.0865, h * 0.284);
6914	c.lineTo(w * 0.4203, 0);
6915	c.lineTo(w * 0.5865, 0);
6916	c.lineTo(w * 0.919, h * 0.286);
6917	c.lineTo(w, h * 0.566);
6918	c.lineTo(w * 0.5027, h);
6919	c.close();
6920	c.fillAndStroke();
6921
6922	c.restore();
6923	c.setFillColor('#000000');
6924	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDecider.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
6925	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
6926	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
6927
6928	c.begin();
6929	c.moveTo(0, h * 0.566);
6930	c.lineTo(w * 0.0892, h * 0.282);
6931	c.lineTo(w * 0.0878, h * 0.426);
6932	c.lineTo(w * 0.4216, h * 0.712);
6933	c.lineTo(w * 0.5865, h * 0.712);
6934	c.lineTo(w * 0.5027, h);
6935	c.close();
6936	c.fill();
6937
6938	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
6939	c.begin();
6940	c.moveTo(w * 0.5027, h);
6941	c.lineTo(w * 0.5865, h * 0.712);
6942	c.lineTo(w * 0.9176, h * 0.43);
6943	c.lineTo(w, h * 0.566);
6944	c.close();
6945	c.fill();
6946
6947	c.restore();
6948	c.setLineJoin('round');
6949
6950	c.begin();
6951	c.moveTo(0, h * 0.566);
6952	c.lineTo(w * 0.0892, h * 0.282);
6953	c.lineTo(w * 0.0878, h * 0.426);
6954	c.lineTo(w * 0.4216, h * 0.712);
6955	c.lineTo(w * 0.5865, h * 0.712);
6956	c.lineTo(w * 0.5027, h);
6957	c.close();
6958	c.moveTo(w * 0.5027, h);
6959	c.lineTo(w * 0.5865, h * 0.712);
6960	c.lineTo(w * 0.9176, h * 0.43);
6961	c.lineTo(w, h * 0.566);
6962	c.close();
6963	c.moveTo(0, h * 0.572);
6964	c.lineTo(w * 0.0892, h * 0.422);
6965	c.moveTo(w * 0.5027, h);
6966	c.lineTo(w * 0.4189, h * 0.708);
6967	c.moveTo(w * 0.9176, h * 0.43);
6968	c.lineTo(w * 0.9176, h * 0.29);
6969	c.stroke();
6970
6971	c.setStrokeWidth(1.6 * strokeWidth);
6972	c.setLineJoin('square');
6973	c.begin();
6974	c.moveTo(w * 0.4973, h * 0.1523);
6975	c.lineTo(w * 0.5608, h * 0.0982);
6976	c.lineTo(w * 0.6581, h * 0.1844);
6977	c.lineTo(w * 0.5986, h * 0.2365);
6978	c.close();
6979	c.moveTo(w * 0.3784, h * 0.2164);
6980	c.lineTo(w * 0.5054, h * 0.2305);
6981	c.lineTo(w * 0.5203, h * 0.3407);
6982	c.lineTo(w * 0.3892, h * 0.3246);
6983	c.close();
6984	c.moveTo(w * 0.2932, h * 0.3246);
6985	c.lineTo(w * 0.3919, h * 0.4128);
6986	c.lineTo(w * 0.3334, h * 0.4647);
6987	c.lineTo(w * 0.2357, h * 0.38);
6988	c.close();
6989	c.moveTo(w * 0.4568, h * 0.4649);
6990	c.lineTo(w * 0.5554, h * 0.5511);
6991	c.lineTo(w * 0.4932, h * 0.6032);
6992	c.lineTo(w * 0.3946, h * 0.517);
6993	c.close();
6994	c.moveTo(w * 0.5473, h * 0.1924);
6995	c.lineTo(w * 0.5027, h * 0.2365);
6996	c.moveTo(w * 0.4, h * 0.3186);
6997	c.lineTo(w * 0.3446, h * 0.3667);
6998	c.moveTo(w * 0.5189, h * 0.3387);
6999	c.lineTo(w * 0.6081, h * 0.4148);
7000	c.lineTo(w * 0.5068, h * 0.501);
7001	c.stroke();
7002
7003	c.setStrokeColor('#292929');
7004
7005	c.begin();
7006	c.moveTo(0, h * 0.572);
7007	c.lineTo(w * 0.0865, h * 0.284);
7008	c.lineTo(w * 0.4203, 0);
7009	c.lineTo(w * 0.5865, 0);
7010	c.lineTo(w * 0.919, h * 0.286);
7011	c.lineTo(w, h * 0.566);
7012	c.lineTo(w * 0.5027, h);
7013	c.close();
7014	c.stroke();
7015};
7016
7017mxCellRenderer.registerShape(mxShapeAws3dDecider.prototype.cst.DECIDER, mxShapeAws3dDecider);
7018
7019//**********************************************************************************************************************************************************
7020//Search Engine
7021//**********************************************************************************************************************************************************
7022/**
7023* Extends mxShape.
7024*/
7025function mxShapeAws3dSearchEngine(bounds, fill, stroke, strokewidth)
7026{
7027	mxShape.call(this);
7028	this.bounds = bounds;
7029	this.fill = fill;
7030	this.stroke = stroke;
7031	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
7032};
7033
7034/**
7035* Extends mxShape.
7036*/
7037mxUtils.extend(mxShapeAws3dSearchEngine, mxShape);
7038
7039mxShapeAws3dSearchEngine.prototype.cst = {
7040		SEARCH_ENGINE : 'mxgraph.aws3d.searchEngine',
7041		SHADING_COLORS : 'shadingCols'
7042};
7043
7044/**
7045* Function: paintVertexShape
7046*
7047* Paints the vertex shape.
7048*/
7049mxShapeAws3dSearchEngine.prototype.paintVertexShape = function(c, x, y, w, h)
7050{
7051	c.translate(x, y);
7052
7053	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
7054	var strokeWidth1 = strokeWidth * w / 180;
7055	var strokeWidth2 = strokeWidth * h / 192;
7056
7057	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
7058
7059	this.background(c, 0, 0, w, h, strokeWidth);
7060	c.setShadow(false);
7061	this.foreground(c, 0, 0, w, h, strokeWidth);
7062};
7063
7064mxShapeAws3dSearchEngine.prototype.background = function(c, x, y, w, h, strokeWidth)
7065{
7066	c.setStrokeWidth(strokeWidth);
7067	c.save();
7068	c.save();
7069	c.save();
7070	c.setStrokeWidth(2 * strokeWidth);
7071	c.setStrokeColor('#292929');
7072	c.setLineJoin('round');
7073
7074	c.begin();
7075	c.moveTo(0, h * 0.7281);
7076	c.lineTo(w * 0.1667, h * 0.5444);
7077	c.lineTo(w * 0.1667, h * 0.1832);
7078	c.lineTo(w * 0.5011, 0);
7079	c.lineTo(w * 0.8333, h * 0.1832);
7080	c.lineTo(w * 0.8333, h * 0.5446);
7081	c.lineTo(w, h * 0.7281);
7082	c.lineTo(w * 0.7486, h * 0.7735);
7083	c.lineTo(w * 0.5819, h * 0.8617);
7084	c.lineTo(w * 0.5011, h);
7085	c.lineTo(w * 0.4169, h * 0.8653);
7086	c.lineTo(w * 0.2475, h * 0.7704);
7087	c.close();
7088	c.fillAndStroke();
7089};
7090
7091mxShapeAws3dSearchEngine.prototype.foreground = function(c, x, y, w, h, strokeWidth)
7092{
7093	c.restore();
7094	c.setShadow(false);
7095	c.setFillColor('#000000');
7096	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSearchEngine.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
7097	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
7098	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
7099
7100	c.begin();
7101	c.moveTo(w * 0.1672, h * 0.1837);
7102	c.lineTo(w * 0.4989, h * 0.3638);
7103	c.lineTo(w * 0.4989, h * 0.7291);
7104	c.lineTo(w * 0.5825, h * 0.8633);
7105	c.lineTo(w * 0.4989, h);
7106	c.lineTo(w * 0.4164, h * 0.8622);
7107	c.lineTo(w * 0.2458, h * 0.7719);
7108	c.lineTo(0, h * 0.7276);
7109	c.lineTo(w * 0.1661, h * 0.5454);
7110	c.close();
7111	c.moveTo(w * 0.7486, h * 0.7714);
7112	c.lineTo(w * 0.8317, h * 0.5459);
7113	c.lineTo(w, h * 0.727);
7114	c.close();
7115	c.fill();
7116
7117	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
7118	c.begin();
7119	c.moveTo(w * 0.4989, h * 0.3643);
7120	c.lineTo(w * 0.8317, h * 0.1827);
7121	c.lineTo(w * 0.8317, h * 0.5465);
7122	c.lineTo(w * 0.7508, h * 0.7714);
7123	c.lineTo(w * 0.5836, h * 0.8633);
7124	c.lineTo(w * 0.4989, h * 0.727);
7125	c.close();
7126	c.fill();
7127
7128	c.restore();
7129	c.setShadow(false);
7130	c.setLineJoin('round');
7131
7132	c.begin();
7133	c.moveTo(w * 0.1672, h * 0.1837);
7134	c.lineTo(w * 0.4989, h * 0.3638);
7135	c.lineTo(w * 0.4989, h * 0.7291);
7136	c.lineTo(w * 0.5825, h * 0.8633);
7137	c.lineTo(w * 0.4989, h);
7138	c.lineTo(w * 0.4164, h * 0.8622);
7139	c.lineTo(w * 0.2458, h * 0.7719);
7140	c.lineTo(0, h * 0.7276);
7141	c.lineTo(w * 0.1661, h * 0.5454);
7142	c.close();
7143	c.moveTo(w * 0.7486, h * 0.7714);
7144	c.lineTo(w * 0.8317, h * 0.5459);
7145	c.lineTo(w, h * 0.727);
7146	c.close();
7147	c.moveTo(w * 0.4989, h * 0.3643);
7148	c.lineTo(w * 0.8317, h * 0.1827);
7149	c.lineTo(w * 0.8317, h * 0.5465);
7150	c.lineTo(w * 0.7508, h * 0.7714);
7151	c.lineTo(w * 0.5836, h * 0.8633);
7152	c.lineTo(w * 0.4989, h * 0.727);
7153	c.close();
7154	c.moveTo(w * 0.1667, h * 0.5459);
7155	c.lineTo(w * 0.2486, h * 0.7704);
7156	c.moveTo(w * 0.4164, h * 0.8633);
7157	c.lineTo(w * 0.4989, h * 0.727);
7158	c.lineTo(w * 0.4989, h);
7159	c.stroke();
7160
7161	c.restore();
7162	c.setShadow(false);
7163	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
7164	c.setFillColor(strokeColor);
7165
7166	c.begin();
7167	c.moveTo(w * 0.3427, h * 0.179);
7168	c.arcTo(w * 0.0277, h * 0.0261, 0, 0, 1, w * 0.3267, h * 0.1487);
7169	c.arcTo(w * 0.0664, h * 0.0365, 0, 0, 1, w * 0.3621, h * 0.1227);
7170	c.arcTo(w * 0.1052, h * 0.0992, 0, 0, 1, w * 0.4247, h * 0.1195);
7171	c.arcTo(w * 0.1274, h * 0.12, 0, 0, 1, w * 0.4884, h * 0.1018);
7172	c.arcTo(w * 0.1329, h * 0.1253, 0, 0, 1, w * 0.5548, h * 0.1112);
7173	c.arcTo(w * 0.0377, h * 0.0344, 0, 0, 1, w * 0.572, h * 0.166);
7174	c.arcTo(w * 0.0388, h * 0.0365, 0, 0, 1, w * 0.6047, h * 0.1775);
7175	c.arcTo(w * 0.021, h * 0.0198, 0, 0, 1, w * 0.5936, h * 0.2046);
7176	c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 1, w * 0.6008, h * 0.2416);
7177	c.arcTo(w * 0.072, h * 0.0678, 0, 0, 1, w * 0.5437, h * 0.2677);
7178	c.arcTo(w * 0.1052, h * 0.0939, 0, 0, 1, w * 0.4828, h * 0.2563);
7179	c.close();
7180	c.moveTo(w * 0.448, h * 0.2156);
7181	c.arcTo(w * 0.0111, h * 0.0104, 0, 0, 0, w * 0.459, h * 0.2255);
7182	c.arcTo(w * 0.0138, h * 0.013, 0, 0, 0, w * 0.4729, h * 0.2182);
7183	c.lineTo(w * 0.4773, h * 0.1874);
7184	c.arcTo(w * 0.0664, h * 0.0626, 0, 0, 0, w * 0.5116, h * 0.1759);
7185	c.arcTo(w * 0.0277, h * 0.0626, 0, 0, 0, w * 0.5233, h * 0.1503);
7186	c.arcTo(w * 0.0554, h * 0.0261, 0, 0, 0, w * 0.5022, h * 0.1336);
7187	c.arcTo(w * 0.0886, h * 0.0835, 0, 0, 0, w * 0.4607, h * 0.1305);
7188	c.arcTo(w * 0.0664, h * 0.0626, 0, 0, 0, w * 0.4313, h * 0.142);
7189	c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 0, w * 0.4175, h * 0.1597);
7190	c.arcTo(w * 0.0249, h * 0.0235, 0, 0, 0, w * 0.4313, h * 0.1822);
7191	c.arcTo(w * 0.0443, h * 0.0418, 0, 0, 0, w * 0.4535, h * 0.1884);
7192	c.close();
7193	c.moveTo(w * 0.4718, h * 0.1764);
7194	c.arcTo(w * 0.0443, h * 0.0418, 0, 0, 1, w * 0.4496, h * 0.1754);
7195	c.arcTo(w * 0.0221, h * 0.0157, 0, 0, 1, w * 0.4369, h * 0.1634);
7196	c.arcTo(w * 0.0221, h * 0.0183, 0, 0, 1, w * 0.4496, h * 0.1467);
7197	c.arcTo(w * 0.0609, h * 0.0574, 0, 0, 1, w * 0.4759, h * 0.1414);
7198	c.arcTo(w * 0.0388, h * 0.0365, 0, 0, 1, w * 0.5033, h * 0.1514);
7199	c.arcTo(w * 0.0443, h * 0.0209, 0, 0, 1, w * 0.495, h * 0.1701);
7200	c.arcTo(w * 0.0388, h * 0.0365, 0, 0, 1, w * 0.4718, h * 0.1764);
7201	c.close();
7202	c.fill();
7203
7204	c.setStrokeWidth(2 * strokeWidth);
7205	c.setStrokeColor('#292929');
7206	c.setLineJoin('round');
7207
7208	c.begin();
7209	c.moveTo(0, h * 0.7281);
7210	c.lineTo(w * 0.1667, h * 0.5444);
7211	c.lineTo(w * 0.1667, h * 0.1832);
7212	c.lineTo(w * 0.5011, 0);
7213	c.lineTo(w * 0.8333, h * 0.1832);
7214	c.lineTo(w * 0.8333, h * 0.5446);
7215	c.lineTo(w, h * 0.7281);
7216	c.lineTo(w * 0.7486, h * 0.7735);
7217	c.lineTo(w * 0.5819, h * 0.8617);
7218	c.lineTo(w * 0.5011, h);
7219	c.lineTo(w * 0.4169, h * 0.8653);
7220	c.lineTo(w * 0.2475, h * 0.7704);
7221	c.close();
7222	c.stroke();
7223};
7224
7225mxCellRenderer.registerShape(mxShapeAws3dSearchEngine.prototype.cst.SEARCH_ENGINE, mxShapeAws3dSearchEngine);
7226
7227//**********************************************************************************************************************************************************
7228//Security Token Service
7229//**********************************************************************************************************************************************************
7230/**
7231* Extends mxShape.
7232*/
7233function mxShapeAws3dSecurityTokenService(bounds, fill, stroke, strokewidth)
7234{
7235	mxShape.call(this);
7236	this.bounds = bounds;
7237	this.fill = fill;
7238	this.stroke = stroke;
7239	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
7240};
7241
7242/**
7243* Extends mxShape.
7244*/
7245mxUtils.extend(mxShapeAws3dSecurityTokenService, mxShape);
7246
7247mxShapeAws3dSecurityTokenService.prototype.cst = {
7248		SECURITY_TOKEN_SERVICE : 'mxgraph.aws3d.securityTokenService',
7249		SHADING_COLORS : 'shadingCols'
7250};
7251
7252/**
7253* Function: paintVertexShape
7254*
7255* Paints the vertex shape.
7256*/
7257mxShapeAws3dSecurityTokenService.prototype.paintVertexShape = function(c, x, y, w, h)
7258{
7259	c.translate(x, y);
7260
7261	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
7262	var strokeWidth1 = strokeWidth * w / 180;
7263	var strokeWidth2 = strokeWidth * h / 192;
7264
7265	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
7266
7267	this.background(c, 0, 0, w, h, strokeWidth);
7268	c.setShadow(false);
7269	this.foreground(c, 0, 0, w, h, strokeWidth);
7270};
7271
7272mxShapeAws3dSecurityTokenService.prototype.background = function(c, x, y, w, h, strokeWidth)
7273{
7274	c.setStrokeWidth(strokeWidth);
7275	c.save();
7276	c.save();
7277	c.save();
7278	c.setStrokeWidth(2 * strokeWidth);
7279	c.setStrokeColor('#292929');
7280	c.setLineJoin('round');
7281
7282	c.begin();
7283	c.moveTo(0, h * 0.7281);
7284	c.lineTo(w * 0.1667, h * 0.5444);
7285	c.lineTo(w * 0.1667, h * 0.1832);
7286	c.lineTo(w * 0.5011, 0);
7287	c.lineTo(w * 0.8333, h * 0.1832);
7288	c.lineTo(w * 0.8333, h * 0.5446);
7289	c.lineTo(w, h * 0.7281);
7290	c.lineTo(w * 0.7486, h * 0.7735);
7291	c.lineTo(w * 0.5819, h * 0.8617);
7292	c.lineTo(w * 0.5011, h);
7293	c.lineTo(w * 0.4169, h * 0.8653);
7294	c.lineTo(w * 0.2475, h * 0.7704);
7295	c.close();
7296	c.fillAndStroke();
7297};
7298
7299mxShapeAws3dSecurityTokenService.prototype.foreground = function(c, x, y, w, h, strokeWidth)
7300{
7301	c.restore();
7302	c.setShadow(false);
7303	c.setFillColor('#000000');
7304	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSecurityTokenService.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
7305	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
7306	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
7307
7308	c.begin();
7309	c.moveTo(w * 0.1672, h * 0.1837);
7310	c.lineTo(w * 0.4989, h * 0.3638);
7311	c.lineTo(w * 0.4989, h * 0.7291);
7312	c.lineTo(w * 0.5825, h * 0.8633);
7313	c.lineTo(w * 0.4989, h);
7314	c.lineTo(w * 0.4164, h * 0.8622);
7315	c.lineTo(w * 0.2458, h * 0.7719);
7316	c.lineTo(0, h * 0.7276);
7317	c.lineTo(w * 0.1661, h * 0.5454);
7318	c.close();
7319	c.moveTo(w * 0.7486, h * 0.7714);
7320	c.lineTo(w * 0.8317, h * 0.5459);
7321	c.lineTo(w, h * 0.727);
7322	c.close();
7323	c.fill();
7324
7325	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
7326	c.begin();
7327	c.moveTo(w * 0.4989, h * 0.3643);
7328	c.lineTo(w * 0.8317, h * 0.1827);
7329	c.lineTo(w * 0.8317, h * 0.5465);
7330	c.lineTo(w * 0.7508, h * 0.7714);
7331	c.lineTo(w * 0.5836, h * 0.8633);
7332	c.lineTo(w * 0.4989, h * 0.727);
7333	c.close();
7334	c.fill();
7335
7336	c.restore();
7337	c.setShadow(false);
7338	c.setLineJoin('round');
7339
7340	c.begin();
7341	c.moveTo(w * 0.1672, h * 0.1837);
7342	c.lineTo(w * 0.4989, h * 0.3638);
7343	c.lineTo(w * 0.4989, h * 0.7291);
7344	c.lineTo(w * 0.5825, h * 0.8633);
7345	c.lineTo(w * 0.4989, h);
7346	c.lineTo(w * 0.4164, h * 0.8622);
7347	c.lineTo(w * 0.2458, h * 0.7719);
7348	c.lineTo(0, h * 0.7276);
7349	c.lineTo(w * 0.1661, h * 0.5454);
7350	c.close();
7351	c.moveTo(w * 0.7486, h * 0.7714);
7352	c.lineTo(w * 0.8317, h * 0.5459);
7353	c.lineTo(w, h * 0.727);
7354	c.close();
7355	c.moveTo(w * 0.4989, h * 0.3643);
7356	c.lineTo(w * 0.8317, h * 0.1827);
7357	c.lineTo(w * 0.8317, h * 0.5465);
7358	c.lineTo(w * 0.7508, h * 0.7714);
7359	c.lineTo(w * 0.5836, h * 0.8633);
7360	c.lineTo(w * 0.4989, h * 0.727);
7361	c.close();
7362	c.moveTo(w * 0.1667, h * 0.5459);
7363	c.lineTo(w * 0.2486, h * 0.7704);
7364	c.moveTo(w * 0.4164, h * 0.8633);
7365	c.lineTo(w * 0.4989, h * 0.727);
7366	c.lineTo(w * 0.4989, h);
7367	c.stroke();
7368
7369	c.restore();
7370	c.setShadow(false);
7371	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
7372	c.setFillColor(strokeColor);
7373
7374	c.begin();
7375	c.moveTo(w * 0.4773, h * 0.1915);
7376	c.arcTo(w * 0.1274, h * 0.12, 0, 0, 1, w * 0.4358, h * 0.1968);
7377	c.arcTo(w * 0.1107, h * 0.1044, 0, 0, 1, w * 0.3937, h * 0.1905);
7378	c.arcTo(w * 0.0554, h * 0.0522, 0, 0, 1, w * 0.3682, h * 0.1707);
7379	c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 1, w * 0.3699, h * 0.1414);
7380	c.arcTo(w * 0.0775, h * 0.0731, 0, 0, 1, w * 0.4009, h * 0.118);
7381	c.arcTo(w * 0.1107, h * 0.1044, 0, 0, 1, w * 0.4524, h * 0.1059);
7382	c.arcTo(w * 0.1107, h * 0.1044, 0, 0, 1, w * 0.5028, h * 0.1112);
7383	c.arcTo(w * 0.0664, h * 0.0626, 0, 0, 1, w * 0.531, h * 0.1315);
7384	c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 1, w * 0.531, h * 0.1597);
7385	c.lineTo(w * 0.5615, h * 0.1754);
7386	c.lineTo(w * 0.5526, h * 0.1905);
7387	c.lineTo(w * 0.5759, h * 0.1999);
7388	c.lineTo(w * 0.5753, h * 0.2109);
7389	c.lineTo(w * 0.5792, h * 0.2161);
7390	c.lineTo(w * 0.6135, h * 0.2182);
7391	c.lineTo(w * 0.6113, h * 0.2416);
7392	c.lineTo(w * 0.5819, h * 0.2474);
7393	c.close();
7394
7395	c.moveTo(w * 0.4756, h * 0.1816);
7396	c.arcTo(w * 0.0554, h * 0.0522, 0, 0, 0, w * 0.5, h * 0.1691);
7397	c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 0, w * 0.5144, h * 0.1435);
7398	c.arcTo(w * 0.0277, h * 0.0261, 0, 0, 0, w * 0.4967, h * 0.1247);
7399	c.arcTo(w * 0.0554, h * 0.0522, 0, 0, 0, w * 0.4729, h * 0.1174);
7400	c.arcTo(w * 0.1107, h * 0.1044, 0, 0, 0, w * 0.4452, h * 0.1169);
7401	c.arcTo(w * 0.0831, h * 0.0783, 0, 0, 0, w * 0.4197, h * 0.1232);
7402	c.arcTo(w * 0.0554, h * 0.0522, 0, 0, 0, w * 0.397, h * 0.1357);
7403	c.arcTo(w * 0.0388, h * 0.0365, 0, 0, 0, w * 0.3859, h * 0.1555);
7404	c.arcTo(w * 0.0305, h * 0.0287, 0, 0, 0, w * 0.4053, h * 0.178);
7405	c.arcTo(w * 0.072, h * 0.0678, 0, 0, 0, w * 0.4385, h * 0.1863);
7406	c.arcTo(w * 0.0831, h * 0.0783, 0, 0, 0, w * 0.4596, h * 0.1848);
7407	c.arcTo(w * 0.0664, h * 0.0626, 0, 0, 0, w * 0.4756, h * 0.1816);
7408	c.fill();
7409
7410	c.setStrokeWidth(1.5 * strokeWidth);
7411	c.setLineJoin('round');
7412	c.setLineCap('round');
7413	c.begin();
7414	c.moveTo(w * 0.4939, h * 0.1326);
7415	c.lineTo(w * 0.4474, h * 0.1508);
7416	c.lineTo(w * 0.4812, h * 0.1576);
7417	c.moveTo(w * 0.4889, h * 0.1733);
7418	c.lineTo(w * 0.4939, h * 0.1775);
7419	c.moveTo(w * 0.5061, h * 0.1576);
7420	c.lineTo(w * 0.5199, h * 0.1597);
7421	c.moveTo(w * 0.5094, h * 0.1394);
7422	c.lineTo(w * 0.5244, h * 0.1378);
7423	c.moveTo(w * 0.4945, h * 0.1247);
7424	c.lineTo(w * 0.4994, h * 0.1185);
7425	c.moveTo(w * 0.4679, h * 0.1175);
7426	c.lineTo(w * 0.4707, h * 0.1117);
7427	c.moveTo(w * 0.4396, h * 0.1195);
7428	c.lineTo(w * 0.4374, h * 0.1138);
7429	c.moveTo(w * 0.412, h * 0.1284);
7430	c.lineTo(w * 0.4059, h * 0.1232);
7431	c.moveTo(w * 0.3948, h * 0.1441);
7432	c.lineTo(w * 0.3804, h * 0.1425);
7433	c.moveTo(w * 0.3931, h * 0.1608);
7434	c.lineTo(w * 0.3804, h * 0.1649);
7435	c.moveTo(w * 0.4059, h * 0.1754);
7436	c.lineTo(w * 0.3998, h * 0.1801);
7437	c.moveTo(w * 0.4308, h * 0.1822);
7438	c.lineTo(w * 0.4286, h * 0.1884);
7439	c.moveTo(w * 0.4618, h * 0.1827);
7440	c.lineTo(w * 0.4635, h * 0.1868);
7441	c.stroke();
7442
7443	c.setStrokeWidth(2 * strokeWidth);
7444	c.setStrokeColor('#292929');
7445
7446	c.begin();
7447	c.moveTo(0, h * 0.7281);
7448	c.lineTo(w * 0.1667, h * 0.5444);
7449	c.lineTo(w * 0.1667, h * 0.1832);
7450	c.lineTo(w * 0.5011, 0);
7451	c.lineTo(w * 0.8333, h * 0.1832);
7452	c.lineTo(w * 0.8333, h * 0.5446);
7453	c.lineTo(w, h * 0.7281);
7454	c.lineTo(w * 0.7486, h * 0.7735);
7455	c.lineTo(w * 0.5819, h * 0.8617);
7456	c.lineTo(w * 0.5011, h);
7457	c.lineTo(w * 0.4169, h * 0.8653);
7458	c.lineTo(w * 0.2475, h * 0.7704);
7459	c.close();
7460	c.stroke();
7461};
7462
7463mxCellRenderer.registerShape(mxShapeAws3dSecurityTokenService.prototype.cst.SECURITY_TOKEN_SERVICE, mxShapeAws3dSecurityTokenService);
7464
7465//**********************************************************************************************************************************************************
7466//Glacier
7467//**********************************************************************************************************************************************************
7468/**
7469* Extends mxShape.
7470*/
7471function mxShapeAws3dGlacier(bounds, fill, stroke, strokewidth)
7472{
7473	mxShape.call(this);
7474	this.bounds = bounds;
7475	this.fill = fill;
7476	this.stroke = stroke;
7477	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
7478};
7479
7480/**
7481* Extends mxShape.
7482*/
7483mxUtils.extend(mxShapeAws3dGlacier, mxShape);
7484
7485mxShapeAws3dGlacier.prototype.cst = {
7486		GLACIER : 'mxgraph.aws3d.glacier',
7487		SHADING_COLORS : 'shadingCols'
7488};
7489
7490/**
7491* Function: paintVertexShape
7492*
7493* Paints the vertex shape.
7494*/
7495mxShapeAws3dGlacier.prototype.paintVertexShape = function(c, x, y, w, h)
7496{
7497	c.translate(x, y);
7498
7499	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
7500	var strokeWidth1 = strokeWidth * w / 180;
7501	var strokeWidth2 = strokeWidth * h / 192;
7502
7503	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
7504
7505	this.background(c, 0, 0, w, h, strokeWidth);
7506	c.setShadow(false);
7507	this.foreground(c, 0, 0, w, h, strokeWidth);
7508};
7509
7510mxShapeAws3dGlacier.prototype.background = function(c, x, y, w, h, strokeWidth)
7511{
7512	c.setStrokeWidth(strokeWidth);
7513	c.save();
7514	c.save();
7515	c.setStrokeWidth(2 * strokeWidth);
7516	c.setStrokeColor('#292929');
7517	c.setLineJoin('round');
7518
7519	c.begin();
7520	c.moveTo(0, h * 0.8177);
7521	c.lineTo(0, h * 0.5448);
7522	c.lineTo(w * 0.168, h * 0.1792);
7523	c.lineTo(w * 0.5008, 0);
7524	c.lineTo(w * 0.8309, h * 0.1812);
7525	c.lineTo(w, h * 0.5469);
7526	c.lineTo(w, h * 0.8188);
7527	c.lineTo(w * 0.6661, h);
7528	c.lineTo(w * 0.3333, h);
7529	c.close();
7530	c.fillAndStroke();
7531};
7532
7533mxShapeAws3dGlacier.prototype.foreground = function(c, x, y, w, h, strokeWidth)
7534{
7535	c.restore();
7536	c.setShadow(false);
7537	c.setFillColor('#000000');
7538	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dGlacier.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
7539	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
7540	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
7541
7542	c.begin();
7543	c.moveTo(w * 0.1658, h * 0.1802);
7544	c.lineTo(w * 0.5008, h * 0.3651);
7545	c.lineTo(w * 0.6661, h * 0.9089);
7546	c.lineTo(w * 0.6661, h);
7547	c.lineTo(w * 0.3339, h);
7548	c.lineTo(0, h * 0.8177);
7549	c.lineTo(0, h * 0.5427);
7550	c.close();
7551	c.fill();
7552
7553	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
7554	c.begin();
7555	c.moveTo(w * 0.5008, h * 0.362);
7556	c.lineTo(w * 0.8314, h * 0.1823);
7557	c.lineTo(w, h * 0.5469);
7558	c.lineTo(w, h * 0.8177);
7559	c.lineTo(w * 0.6661, h);
7560	c.lineTo(w * 0.6661, h * 0.9089);
7561	c.close();
7562	c.fill();
7563
7564	c.restore();
7565	c.setShadow(false);
7566	c.setLineJoin('round');
7567
7568	c.begin();
7569	c.moveTo(w * 0.1658, h * 0.1802);
7570	c.lineTo(w * 0.5008, h * 0.3651);
7571	c.lineTo(w * 0.6661, h * 0.9089);
7572	c.lineTo(w * 0.6661, h);
7573	c.lineTo(w * 0.3339, h);
7574	c.lineTo(0, h * 0.8177);
7575	c.lineTo(0, h * 0.5427);
7576	c.close();
7577	c.moveTo(w * 0.5008, h * 0.362);
7578	c.lineTo(w * 0.8314, h * 0.1823);
7579	c.lineTo(w, h * 0.5469);
7580	c.lineTo(w, h * 0.8177);
7581	c.lineTo(w * 0.6661, h);
7582	c.lineTo(w * 0.6661, h * 0.9089);
7583	c.close();
7584	c.moveTo(w * 0.1675, h * 0.1797);
7585	c.lineTo(0, h * 0.7281);
7586	c.lineTo(w * 0.3284, h * 0.9089);
7587	c.lineTo(w * 0.6661, h * 0.9089);
7588	c.lineTo(w, h * 0.7266);
7589	c.lineTo(w * 0.8309, h * 0.1823);
7590	c.moveTo(w * 0.5003, h * 0.362);
7591	c.lineTo(w * 0.3311, h * 0.9089);
7592	c.lineTo(w * 0.3311, h);
7593	c.stroke();
7594
7595	c.setStrokeWidth(2 * strokeWidth);
7596	c.setStrokeColor('#292929');
7597
7598	c.begin();
7599	c.moveTo(0, h * 0.8177);
7600	c.lineTo(0, h * 0.5448);
7601	c.lineTo(w * 0.168, h * 0.1792);
7602	c.lineTo(w * 0.5008, 0);
7603	c.lineTo(w * 0.8309, h * 0.1812);
7604	c.lineTo(w, h * 0.5469);
7605	c.lineTo(w, h * 0.8188);
7606	c.lineTo(w * 0.6661, h);
7607	c.lineTo(w * 0.3333, h);
7608	c.close();
7609	c.stroke();
7610};
7611
7612mxCellRenderer.registerShape(mxShapeAws3dGlacier.prototype.cst.GLACIER, mxShapeAws3dGlacier);
7613
7614//**********************************************************************************************************************************************************
7615//Customer Gateway
7616//**********************************************************************************************************************************************************
7617/**
7618* Extends mxShape.
7619*/
7620function mxShapeAws3dCustomerGateway(bounds, fill, stroke, strokewidth)
7621{
7622	mxShape.call(this);
7623	this.bounds = bounds;
7624	this.fill = fill;
7625	this.stroke = stroke;
7626	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
7627};
7628
7629/**
7630* Extends mxShape.
7631*/
7632mxUtils.extend(mxShapeAws3dCustomerGateway, mxShape);
7633
7634mxShapeAws3dCustomerGateway.prototype.cst = {
7635		CUSTOMER_GATEWAY : 'mxgraph.aws3d.customerGateway',
7636		SHADING_COLORS : 'shadingCols'
7637};
7638
7639/**
7640* Function: paintVertexShape
7641*
7642* Paints the vertex shape.
7643*/
7644mxShapeAws3dCustomerGateway.prototype.paintVertexShape = function(c, x, y, w, h)
7645{
7646	c.translate(x, y);
7647
7648	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
7649	var strokeWidth1 = strokeWidth * w / 116.7;
7650	var strokeWidth2 = strokeWidth * h / 102.8;
7651
7652	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
7653
7654	this.background(c, 0, 0, w, h, strokeWidth);
7655	c.setShadow(false);
7656	this.foreground(c, 0, 0, w, h, strokeWidth);
7657};
7658
7659mxShapeAws3dCustomerGateway.prototype.background = function(c, x, y, w, h, strokeWidth)
7660{
7661	c.setStrokeWidth(strokeWidth);
7662	c.save();
7663	c.save();
7664	c.save();
7665	c.save();
7666	c.save();
7667	c.setStrokeWidth(2 * strokeWidth);
7668	c.setStrokeColor('#292929');
7669	c.setLineJoin('round');
7670
7671	c.begin();
7672	c.moveTo(w * 0.4199, h * 0.5447);
7673	c.lineTo(w * 0.4199, h * 0.035);
7674	c.lineTo(w * 0.8946, 0);
7675	c.lineTo(w, h * 0.0691);
7676	c.lineTo(w, h * 0.4134);
7677	c.lineTo(w * 0.6812, h * 0.7247);
7678	c.close();
7679	c.fillAndStroke();
7680
7681	c.restore();
7682	c.save();
7683	c.setShadow(false);
7684	c.setFillColor('#000000');
7685	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dCustomerGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
7686	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
7687	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
7688	c.begin();
7689	c.moveTo(w * 0.4199, h * 0.5447);
7690	c.lineTo(w * 0.4199, h * 0.035);
7691	c.lineTo(w * 0.6838, h * 0.2072);
7692	c.lineTo(w * 0.6838, h * 0.7247);
7693	c.close();
7694	c.fill();
7695
7696	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
7697	c.begin();
7698	c.moveTo(w * 0.6838, h * 0.2072);
7699	c.lineTo(w, h * 0.0691);
7700	c.lineTo(w, h * 0.4134);
7701	c.lineTo(w * 0.6838, h * 0.7247);
7702	c.close();
7703	c.fill();
7704
7705	c.restore();
7706	c.setShadow(false);
7707	c.begin();
7708	c.moveTo(w * 0.4199, h * 0.5447);
7709	c.lineTo(w * 0.4199, h * 0.035);
7710	c.lineTo(w * 0.6838, h * 0.2072);
7711	c.lineTo(w * 0.6838, h * 0.7247);
7712	c.close();
7713	c.stroke();
7714
7715	c.restore();
7716	c.setLineJoin('round');
7717	c.setShadow(false);
7718
7719	c.begin();
7720	c.moveTo(w * 0.6838, h * 0.2072);
7721	c.lineTo(w, h * 0.0691);
7722	c.lineTo(w, h * 0.4134);
7723	c.lineTo(w * 0.6838, h * 0.7247);
7724	c.close();
7725	c.stroke();
7726
7727	c.setStrokeWidth(2 * strokeWidth);
7728	c.setStrokeColor('#292929');
7729
7730	c.begin();
7731	c.moveTo(w * 0.4199, h * 0.5447);
7732	c.lineTo(w * 0.4199, h * 0.035);
7733	c.lineTo(w * 0.8946, 0);
7734	c.lineTo(w, h * 0.0691);
7735	c.lineTo(w, h * 0.4134);
7736	c.lineTo(w * 0.6812, h * 0.7247);
7737	c.close();
7738	c.stroke();
7739
7740	c.restore();
7741	c.setStrokeWidth(2 * strokeWidth);
7742	c.setStrokeColor('#292929');
7743	c.setLineJoin('round');
7744
7745	c.begin();
7746	c.moveTo(0, h * 0.929);
7747	c.lineTo(0, h * 0.5866);
7748	c.lineTo(w * 0.3171, h * 0.1031);
7749	c.lineTo(w * 0.5784, h * 0.2753);
7750	c.lineTo(w * 0.5784, h * 0.7928);
7751	c.lineTo(w * 0.1054, h);
7752	c.close();
7753	c.fillAndStroke();
7754};
7755
7756mxShapeAws3dCustomerGateway.prototype.foreground = function(c, x, y, w, h, strokeWidth)
7757{
7758	c.restore();
7759	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
7760	c.setShadow(false);
7761	c.setLineJoin('round');
7762	c.setFillColor('#000000');
7763	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dCustomerGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
7764	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
7765	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
7766
7767	c.begin();
7768	c.moveTo(0, h * 0.929);
7769	c.lineTo(0, h * 0.5866);
7770	c.lineTo(w * 0.1054, h * 0.6537);
7771	c.lineTo(w * 0.1054, h);
7772	c.close();
7773	c.fill();
7774
7775	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
7776	c.begin();
7777	c.moveTo(w * 0.1054, h);
7778	c.lineTo(w * 0.1054, h * 0.6537);
7779	c.lineTo(w * 0.5784, h * 0.2753);
7780	c.lineTo(w * 0.5784, h * 0.7928);
7781	c.close();
7782	c.fill();
7783
7784	c.restore();
7785	c.setShadow(false);
7786	c.setLineJoin('round');
7787
7788	c.begin();
7789	c.moveTo(0, h * 0.929);
7790	c.lineTo(0, h * 0.5866);
7791	c.lineTo(w * 0.1054, h * 0.6537);
7792	c.lineTo(w * 0.1054, h);
7793	c.close();
7794	c.stroke();
7795
7796	c.begin();
7797	c.moveTo(w * 0.1054, h);
7798	c.lineTo(w * 0.1054, h * 0.6537);
7799	c.lineTo(w * 0.5784, h * 0.2753);
7800	c.lineTo(w * 0.5784, h * 0.7928);
7801	c.close();
7802	c.stroke();
7803
7804	c.setStrokeWidth(2 * strokeWidth);
7805	c.setStrokeColor('#292929');
7806	c.setLineJoin('round');
7807
7808	c.begin();
7809	c.moveTo(0, h * 0.929);
7810	c.lineTo(0, h * 0.5866);
7811	c.lineTo(w * 0.3171, h * 0.1031);
7812	c.lineTo(w * 0.5784, h * 0.2753);
7813	c.lineTo(w * 0.5784, h * 0.7928);
7814	c.lineTo(w * 0.1054, h);
7815	c.close();
7816	c.stroke();
7817
7818	c.setFillColor(strokeColor);
7819	c.begin();
7820	c.moveTo(w * 0.7575, h * 0.3969);
7821	c.arcTo(w * 0.2142, h * 0.2432, 0, 0, 1, w * 0.7686, h * 0.3259);
7822	c.arcTo(w * 0.2142, h * 0.2432, 0, 0, 1, w * 0.8055, h * 0.2481);
7823	c.arcTo(w * 0.2142, h * 0.2432, 0, 0, 1, w * 0.8406, h * 0.2091);
7824	c.lineTo(w * 0.8269, h * 0.2665);
7825	c.lineTo(w * 0.8372, h * 0.2607);
7826	c.lineTo(w * 0.8372, h * 0.3444);
7827	c.lineTo(w * 0.7832, h * 0.3804);
7828	c.lineTo(w * 0.7832, h * 0.3658);
7829	c.close();
7830	c.moveTo(w * 0.8466, h * 0.2082);
7831	c.arcTo(w * 0.0514, h * 0.0584, 0, 0, 1, w * 0.8766, h * 0.1955);
7832	c.arcTo(w * 0.0514, h * 0.0584, 0, 0, 1, w * 0.9186, h * 0.2286);
7833	c.arcTo(w * 0.12, h * 0.1362, 0, 0, 1, w * 0.9297, h * 0.2821);
7834	c.lineTo(w * 0.9006, h * 0.2831);
7835	c.lineTo(w * 0.9006, h * 0.3016);
7836	c.lineTo(w * 0.85, h * 0.3366);
7837	c.lineTo(w * 0.85, h * 0.251);
7838	c.lineTo(w * 0.8586, h * 0.2471);
7839	c.close();
7840	c.moveTo(w * 0.9297, h * 0.2967);
7841	c.arcTo(w * 0.2142, h * 0.2432, 0, 0, 1, w * 0.9195, h * 0.3667);
7842	c.arcTo(w * 0.2571, h * 0.2918, 0, 0, 1, w * 0.8869, h * 0.4436);
7843	c.arcTo(w * 0.1714, h * 0.1946, 0, 0, 1, w * 0.8466, h * 0.4903);
7844	c.lineTo(w * 0.8595, h * 0.4358);
7845	c.lineTo(w * 0.8492, h * 0.4416);
7846	c.lineTo(w * 0.8492, h * 0.357);
7847	c.lineTo(w * 0.9006, h * 0.32004);
7848	c.lineTo(w * 0.9006, h * 0.3346);
7849	c.close();
7850	c.moveTo(w * 0.838, h * 0.4942);
7851	c.arcTo(w * 0.0857, h * 0.0973, 0, 0, 1, w * 0.8072, h * 0.5049);
7852	c.arcTo(w * 0.0514, h * 0.0584, 0, 0, 1, w * 0.7712, h * 0.4815);
7853	c.arcTo(w * 0.1714, h * 0.1946, 0, 0, 1, w * 0.7566, h * 0.4163);
7854	c.lineTo(w * 0.7832, h * 0.4173);
7855	c.lineTo(w * 0.7832, h * 0.4008);
7856	c.lineTo(w * 0.8372, h * 0.3638);
7857	c.lineTo(w * 0.8372, h * 0.4494);
7858	c.lineTo(w * 0.8278, h * 0.4562);
7859	c.close();
7860	c.fill();
7861};
7862
7863mxCellRenderer.registerShape(mxShapeAws3dCustomerGateway.prototype.cst.CUSTOMER_GATEWAY, mxShapeAws3dCustomerGateway);
7864
7865//**********************************************************************************************************************************************************
7866//Redshift
7867//**********************************************************************************************************************************************************
7868/**
7869* Extends mxShape.
7870*/
7871function mxShapeAws3dRedshift(bounds, fill, stroke, strokewidth)
7872{
7873	mxShape.call(this);
7874	this.bounds = bounds;
7875	this.fill = fill;
7876	this.stroke = stroke;
7877	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
7878};
7879
7880/**
7881* Extends mxShape.
7882*/
7883mxUtils.extend(mxShapeAws3dRedshift, mxShape);
7884
7885mxShapeAws3dRedshift.prototype.cst = {
7886		REDSHIFT : 'mxgraph.aws3d.redshift',
7887		SHADING_COLORS : 'shadingCols'
7888};
7889
7890/**
7891* Function: paintVertexShape
7892*
7893* Paints the vertex shape.
7894*/
7895mxShapeAws3dRedshift.prototype.paintVertexShape = function(c, x, y, w, h)
7896{
7897	c.translate(x, y);
7898
7899	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
7900	var strokeWidth1 = strokeWidth * w / 149.5;
7901	var strokeWidth2 = strokeWidth * h / 187.5;
7902
7903	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
7904
7905	this.background(c, 0, 0, w, h, strokeWidth);
7906	c.setShadow(false);
7907	this.foreground(c, 0, 0, w, h, strokeWidth);
7908};
7909
7910mxShapeAws3dRedshift.prototype.background = function(c, x, y, w, h, strokeWidth)
7911{
7912	c.setStrokeWidth(strokeWidth);
7913	c.save();
7914	c.save();
7915	c.save();
7916	c.setStrokeWidth(2 * strokeWidth);
7917	c.setStrokeColor('#292929');
7918	c.setLineJoin('round');
7919
7920	c.begin();
7921	c.moveTo(0, h * 0.6517);
7922	c.lineTo(0, h * 0.0912);
7923	c.lineTo(w * 0.0368, h * 0.0155);
7924	c.lineTo(w * 0.2047, 0);
7925	c.lineTo(w * 0.3378, h * 0.0619);
7926	c.lineTo(w * 0.3378, h * 0.0912);
7927	c.lineTo(w * 0.3819, h * 0.0693);
7928	c.lineTo(w * 0.6154, h * 0.0693);
7929	c.lineTo(w * 0.8502, h * 0.1776);
7930	c.lineTo(w * 0.8502, h * 0.3083);
7931	c.lineTo(w * 0.8682, h * 0.3061);
7932	c.lineTo(w, h * 0.3664);
7933	c.lineTo(w, h * 0.9099);
7934	c.lineTo(w * 0.9672, h * 0.9861);
7935	c.lineTo(w * 0.7926, h);
7936	c.lineTo(w * 0.6629, h * 0.9392);
7937	c.lineTo(w * 0.6629, h * 0.9099);
7938	c.lineTo(w * 0.6167, h * 0.9317);
7939	c.lineTo(w * 0.3813, h * 0.9317);
7940	c.lineTo(w * 0.1478, h * 0.8219);
7941	c.lineTo(w * 0.1478, h * 0.7093);
7942	c.lineTo(w * 0.1365, h * 0.7163);
7943	c.close();
7944	c.fillAndStroke();
7945};
7946
7947mxShapeAws3dRedshift.prototype.foreground = function(c, x, y, w, h, strokeWidth)
7948{
7949	c.restore();
7950	c.setShadow(false);
7951	c.setFillColor('#000000');
7952	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dRedshift.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
7953	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
7954	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
7955
7956	c.begin();
7957	c.moveTo(0, h * 0.6541);
7958	c.lineTo(0, h * 0.0933);
7959	c.lineTo(w * 0.1371, h * 0.1573);
7960	c.lineTo(w * 0.1371, h * 0.7157);
7961	c.close();
7962	c.moveTo(w * 0.1485, h * 0.8219);
7963	c.lineTo(w * 0.1485, h * 0.2864);
7964	c.lineTo(w * 0.3846, h * 0.3941);
7965	c.lineTo(w * 0.3846, h * 0.9317);
7966	c.close();
7967	c.moveTo(w * 0.6642, h * 0.9392);
7968	c.lineTo(w * 0.6642, h * 0.4011);
7969	c.lineTo(w * 0.796, h * 0.4597);
7970	c.lineTo(w * 0.796, h);
7971	c.close();
7972	c.fill();
7973
7974	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
7975	c.begin();
7976	c.moveTo(w * 0.1371, h * 0.7157);
7977	c.lineTo(w * 0.1371, h * 0.1568);
7978	c.lineTo(w * 0.2027, h * 0.1525);
7979	c.lineTo(w * 0.1498, h * 0.1771);
7980	c.lineTo(w * 0.1498, h * 0.7061);
7981	c.close();
7982	c.moveTo(w * 0.3846, h * 0.3941);
7983	c.lineTo(w * 0.614, h * 0.3941);
7984	c.lineTo(w * 0.6809, h * 0.3632);
7985	c.lineTo(w * 0.6642, h * 0.4);
7986	c.lineTo(w * 0.6642, h * 0.9067);
7987	c.lineTo(w * 0.6191, h * 0.9317);
7988	c.lineTo(w * 0.3833, h * 0.9317);
7989	c.close();
7990	c.moveTo(w * 0.796, h * 0.4608);
7991	c.lineTo(w * 0.9639, h * 0.4469);
7992	c.lineTo(w, h * 0.3691);
7993	c.lineTo(w, h * 0.9077);
7994	c.lineTo(w * 0.9686, h * 0.9856);
7995	c.lineTo(w * 0.796, h);
7996	c.close();
7997	c.moveTo(w * 0.3378, h * 0.0608);
7998	c.lineTo(w * 0.3378, h * 0.0907);
7999	c.lineTo(w * 0.3197, h * 0.1008);
8000	c.close();
8001	c.moveTo(w * 0.8502, h * 0.2843);
8002	c.lineTo(w * 0.8502, h * 0.3083);
8003	c.lineTo(w * 0.794, h * 0.3136);
8004	c.close();
8005	c.fill();
8006
8007	c.restore();
8008	c.setShadow(false);
8009	c.setLineJoin('round');
8010
8011	c.begin();
8012	c.moveTo(0, h * 0.6541);
8013	c.lineTo(0, h * 0.0933);
8014	c.lineTo(w * 0.1371, h * 0.1573);
8015	c.lineTo(w * 0.1371, h * 0.7157);
8016	c.close();
8017	c.moveTo(w * 0.1485, h * 0.8219);
8018	c.lineTo(w * 0.1485, h * 0.2864);
8019	c.lineTo(w * 0.3846, h * 0.3941);
8020	c.lineTo(w * 0.3846, h * 0.9317);
8021	c.close();
8022	c.moveTo(w * 0.6642, h * 0.9392);
8023	c.lineTo(w * 0.6642, h * 0.4011);
8024	c.lineTo(w * 0.796, h * 0.4597);
8025	c.lineTo(w * 0.796, h);
8026	c.close();
8027	c.moveTo(w * 0.1371, h * 0.7157);
8028	c.lineTo(w * 0.1371, h * 0.1568);
8029	c.lineTo(w * 0.2027, h * 0.1525);
8030	c.lineTo(w * 0.1498, h * 0.1771);
8031	c.lineTo(w * 0.1498, h * 0.7061);
8032	c.close();
8033	c.moveTo(w * 0.3846, h * 0.3941);
8034	c.lineTo(w * 0.614, h * 0.3941);
8035	c.lineTo(w * 0.6809, h * 0.3632);
8036	c.lineTo(w * 0.6642, h * 0.4);
8037	c.lineTo(w * 0.6642, h * 0.9067);
8038	c.lineTo(w * 0.6191, h * 0.9317);
8039	c.lineTo(w * 0.3833, h * 0.9317);
8040	c.close();
8041	c.moveTo(w * 0.796, h * 0.4608);
8042	c.lineTo(w * 0.9639, h * 0.4469);
8043	c.lineTo(w, h * 0.3691);
8044	c.lineTo(w, h * 0.9077);
8045	c.lineTo(w * 0.9686, h * 0.9856);
8046	c.lineTo(w * 0.796, h);
8047	c.close();
8048	c.moveTo(w * 0.3378, h * 0.0608);
8049	c.lineTo(w * 0.3378, h * 0.0907);
8050	c.lineTo(w * 0.3197, h * 0.1008);
8051	c.close();
8052	c.moveTo(w * 0.8502, h * 0.2843);
8053	c.lineTo(w * 0.8502, h * 0.3083);
8054	c.lineTo(w * 0.794, h * 0.3136);
8055	c.close();
8056	c.moveTo(w * 0.6167, h * 0.3941);
8057	c.lineTo(w * 0.6167, h * 0.9317);
8058	c.moveTo(w * 0.9652, h * 0.4448);
8059	c.lineTo(w * 0.9652, h * 0.9851);
8060	c.stroke();
8061
8062	c.restore();
8063	c.setShadow(false);
8064	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
8065	c.setFillColor(strokeColor);
8066
8067	c.begin();
8068	c.moveTo(w * 0.4903, h * 0.1259);
8069	c.arcTo(w * 0.01, h * 0.008, 0, 0, 1, w * 0.5023, h * 0.1189);
8070	c.arcTo(w * 0.2007, h * 0.16, 0, 0, 1, w * 0.5639, h * 0.1333);
8071	c.arcTo(w * 0.602, h * 0.48, 0, 0, 1, w * 0.7157, h * 0.2005);
8072	c.arcTo(w * 0.2006, h * 0.16, 0, 0, 1, w * 0.7565, h * 0.2315);
8073	c.arcTo(w * 0.01, h * 0.008, 0, 0, 1, w * 0.7445, h * 0.2421);
8074	c.arcTo(w * 0.2676, h * 0.2133, 0, 0, 1, w * 0.6742, h * 0.2251);
8075	c.arcTo(w * 0.602, h * 0.48, 0, 0, 1, w * 0.5204, h * 0.1541);
8076	c.arcTo(w * 0.1338, h * 0.1067, 0, 0, 1, w * 0.4903, h * 0.1259);
8077	c.close();
8078	c.moveTo(w * 0.4789, h * 0.1275);
8079	c.arcTo(w * 0.0334, h * 0.0267, 0, 0, 0, w * 0.487, h * 0.1461);
8080	c.arcTo(w * 0.1672, h * 0.1333, 0, 0, 0, w * 0.5237, h * 0.1728);
8081	c.arcTo(w * 0.6689, h * 0.5333, 0, 0, 0, w * 0.6609, h * 0.2352);
8082	c.arcTo(w * 0.2676, h * 0.2133, 0, 0, 0, w * 0.7244, h * 0.2501);
8083	c.arcTo(w * 0.0201, h * 0.016, 0, 0, 0, w * 0.7411, h * 0.2475);
8084	c.lineTo(w * 0.5385, h * 0.3408);
8085	c.arcTo(w * 0.0669, h * 0.05333, 0, 0, 1, w * 0.512, h * 0.3397);
8086	c.arcTo(w * 0.2676, h * 0.2133, 0, 0, 1, w * 0.4548, h * 0.3248);
8087	c.arcTo(w * 0.6689, h * 0.5333, 0, 0, 1, w * 0.3084, h * 0.2565);
8088	c.arcTo(w * 0.1672, h * 0.1333, 0, 0, 1, w * 0.2776, h * 0.2304);
8089	c.arcTo(w * 0.01, h * 0.008, 0, 0, 1, w * 0.2776, h * 0.2197);
8090	c.close();
8091	c.fill();
8092
8093	var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#ffffff');
8094	c.setFillColor(fillColor);
8095	c.setLineJoin('round');
8096	c.setLineCap('round');
8097	c.begin();
8098	c.moveTo(w * 0.3398, h * 0.2421);
8099	c.lineTo(w * 0.4769, h * 0.1797);
8100	c.lineTo(w * 0.6341, h * 0.2512);
8101	c.lineTo(w * 0.4936, h * 0.3147);
8102	c.fill();
8103
8104	c.begin();
8105	c.moveTo(w * 0.4334, h * 0.1941);
8106	c.lineTo(w * 0.6207, h * 0.2811);
8107	c.moveTo(w * 0.5338, h * 0.1995);
8108	c.lineTo(w * 0.3866, h * 0.2688);
8109	c.moveTo(w * 0.5873, h * 0.2235);
8110	c.lineTo(w * 0.4334, h * 0.2955);
8111	c.stroke();
8112	c.setStrokeWidth(2 * strokeWidth);
8113	c.setStrokeColor('#292929');
8114
8115	c.begin();
8116	c.moveTo(0, h * 0.6517);
8117	c.lineTo(0, h * 0.0912);
8118	c.lineTo(w * 0.0368, h * 0.0155);
8119	c.lineTo(w * 0.2047, 0);
8120	c.lineTo(w * 0.3378, h * 0.0619);
8121	c.lineTo(w * 0.3378, h * 0.0912);
8122	c.lineTo(w * 0.3819, h * 0.0693);
8123	c.lineTo(w * 0.6154, h * 0.0693);
8124	c.lineTo(w * 0.8502, h * 0.1776);
8125	c.lineTo(w * 0.8502, h * 0.3083);
8126	c.lineTo(w * 0.8682, h * 0.3061);
8127	c.lineTo(w, h * 0.3664);
8128	c.lineTo(w, h * 0.9099);
8129	c.lineTo(w * 0.9672, h * 0.9861);
8130	c.lineTo(w * 0.7926, h);
8131	c.lineTo(w * 0.6629, h * 0.9392);
8132	c.lineTo(w * 0.6629, h * 0.9099);
8133	c.lineTo(w * 0.6167, h * 0.9317);
8134	c.lineTo(w * 0.3813, h * 0.9317);
8135	c.lineTo(w * 0.1478, h * 0.8219);
8136	c.lineTo(w * 0.1478, h * 0.7093);
8137	c.lineTo(w * 0.1365, h * 0.7163);
8138	c.close();
8139	c.stroke();
8140};
8141
8142mxCellRenderer.registerShape(mxShapeAws3dRedshift.prototype.cst.REDSHIFT, mxShapeAws3dRedshift);
8143
8144//**********************************************************************************************************************************************************
8145//Lambda
8146//**********************************************************************************************************************************************************
8147/**
8148* Extends mxShape.
8149*/
8150function mxShapeAws3dLambda(bounds, fill, stroke, strokewidth)
8151{
8152	mxShape.call(this);
8153	this.bounds = bounds;
8154	this.fill = fill;
8155	this.stroke = stroke;
8156	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
8157};
8158
8159/**
8160* Extends mxShape.
8161*/
8162mxUtils.extend(mxShapeAws3dLambda, mxShape);
8163
8164mxShapeAws3dLambda.prototype.cst = {
8165		LAMBDA : 'mxgraph.aws3d.lambda',
8166		SHADING_COLORS : 'shadingCols'
8167};
8168
8169/**
8170* Function: paintVertexShape
8171*
8172* Paints the vertex shape.
8173*/
8174mxShapeAws3dLambda.prototype.paintVertexShape = function(c, x, y, w, h)
8175{
8176	c.translate(x, y);
8177
8178	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
8179	var strokeWidth1 = strokeWidth * w / 92;
8180	var strokeWidth2 = strokeWidth * h / 109.5;
8181
8182	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
8183
8184	this.background(c, 0, 0, w, h, strokeWidth);
8185	c.setShadow(false);
8186	this.foreground(c, 0, 0, w, h, strokeWidth);
8187};
8188
8189mxShapeAws3dLambda.prototype.background = function(c, x, y, w, h, strokeWidth)
8190{
8191	c.setStrokeWidth(strokeWidth);
8192	c.save();
8193	c.save();
8194	c.setStrokeWidth(2 * strokeWidth);
8195	c.setStrokeColor('#292929');
8196	c.setLineJoin('round');
8197
8198	c.begin();
8199	c.moveTo(0, h * 0.1671);
8200	c.lineTo(w * 0.3424, 0);
8201	c.lineTo(w * 0.663, 0);
8202	c.lineTo(w, h * 0.1671);
8203	c.lineTo(w, h * 0.8365);
8204	c.lineTo(w * 0.663, h);
8205	c.lineTo(w * 0.3424, h);
8206	c.lineTo(0, h * 0.8365);
8207	c.close();
8208	c.fillAndStroke();
8209};
8210
8211mxShapeAws3dLambda.prototype.foreground = function(c, x, y, w, h, strokeWidth)
8212{
8213	c.restore();
8214	c.setShadow(false);
8215	c.setFillColor('#000000');
8216	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dLambda.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
8217	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
8218	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
8219
8220	c.begin();
8221	c.moveTo(0, h * 0.3242);
8222	c.lineTo(w * 0.3424, h * 0.4895);
8223	c.lineTo(w * 0.663, h * 0.4895);
8224	c.lineTo(w * 0.663, h);
8225	c.lineTo(w * 0.3424, h);
8226	c.lineTo(0, h * 0.8365);
8227	c.close();
8228	c.moveTo(w * 0., h * 0.);
8229	c.lineTo(w * 0., h * 0.);
8230	c.lineTo(w * 0., h * 0.);
8231	c.lineTo(w * 0., h * 0.);
8232	c.lineTo(w * 0., h * 0.);
8233	c.lineTo(w * 0., h * 0.);
8234	c.close();
8235	c.moveTo(w * 0., h * 0.);
8236	c.lineTo(w * 0., h * 0.);
8237	c.lineTo(w * 0., h * 0.);
8238	c.lineTo(w * 0., h * 0.);
8239	c.lineTo(w * 0., h * 0.);
8240	c.lineTo(w * 0., h * 0.);
8241	c.close();
8242	c.fill();
8243
8244	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
8245	c.begin();
8246	c.moveTo(w * 0.663, h * 0.4895);
8247	c.lineTo(w, h * 0.3242);
8248	c.lineTo(w, h * 0.8365);
8249	c.lineTo(w * 0.663, h);
8250	c.close();
8251	c.fill();
8252
8253	c.restore();
8254	c.setShadow(false);
8255	c.setLineJoin('round');
8256
8257	c.begin();
8258	c.moveTo(0, h * 0.3242);
8259	c.lineTo(w * 0.3424, h * 0.4895);
8260	c.lineTo(w * 0.663, h * 0.4895);
8261	c.lineTo(w, h * 0.3242);
8262	c.moveTo(w * 0.3424, h * 0.4895);
8263	c.lineTo(w * 0.3424, h);
8264	c.moveTo(w * 0.663, h * 0.4895);
8265	c.lineTo(w * 0.663, h);
8266	c.stroke();
8267
8268	c.setFillColor("#5E5E5E");
8269
8270	c.begin();
8271	c.moveTo(w * 0.3804, h * 0.1169);
8272	c.arcTo(w * 0.5435, h * 0.4566, 0, 0, 1, w * 0.6087, h * 0.1123);
8273	c.arcTo(w * 0.33804, h * 0.3196, 0, 0, 1, w * 0.725, h * 0.1553);
8274	c.arcTo(w * 0.1304, h * 0.1096, 0, 0, 1, w * 0.7924, h * 0.2402);
8275	c.arcTo(w * 0.1522, h * 0.1279, 0, 0, 1, w * 0.725, h * 0.3333);
8276	c.arcTo(w * 0.4416, h * 0.274, 0, 0, 1, w * 0.6087, h * 0.3772);
8277	c.arcTo(w * 0.5435, h * 0.4566, 0, 0, 1, w * 0.3804, h * 0.3708);
8278	c.arcTo(w * 0.3804, h * 0.3196, 0, 0, 1, w * 0.2772, h * 0.3324);
8279	c.arcTo(w * 0.1522, h * 0.1279, 0, 0, 1, w * 0.2163, h * 0.2539);
8280	c.arcTo(w * 0.1522, h * 0.1279, 0, 0, 1, w * 0.2663, h * 0.1644);
8281	c.arcTo(w * 0.3804, h * 0.3196, 0, 0, 1, w * 0.3804, h * 0.1169);
8282	c.fill();
8283
8284	c.setFillColor("#ffffff");
8285
8286	c.begin();
8287	c.moveTo(w * 0.5565, h * 0.2174);
8288	c.arcTo(w * 0.0652, h * 0.0548, 0, 0, 0, w * 0.5837, h * 0.1945);
8289	c.arcTo(w * 0.0326, h * 0.0274, 0, 0, 0, w * 0.5793, h * 0.1671);
8290	c.arcTo(w * 0.0652, h * 0.0548, 0, 0, 0, w * 0.525, h * 0.1598);
8291	c.arcTo(w * 0.0652, h * 0.0548, 0, 0, 1, w * 0.5543, h * 0.1443);
8292	c.arcTo(w * 0.0761, h * 0.0639, 0, 0, 1, w * 0.6163, h * 0.1662);
8293	c.arcTo(w * 0.0598, h * 0.0502, 0, 0, 1, w * 0.6087, h * 0.2091);
8294	c.lineTo(w * 0.5, h * 0.3032);
8295	c.arcTo(w * 0.0978, h * 0.0822, 0, 0, 0, w * 0.4728, h * 0.3379);
8296	c.arcTo(w * 0.0272, h * 0.0228, 0, 0, 0, w * 0.4924, h * 0.3571);
8297	c.arcTo(w * 0.0326, h * 0.0274, 0, 0, 1, w * 0.4489, h * 0.3571);
8298	c.arcTo(w * 0.038, h * 0.032, 0, 0, 1, w * 0.437, h * 0.3242);
8299	c.arcTo(w * 0.1087, h * 0.0913, 0, 0, 1, w * 0.4674, h * 0.2886);
8300	c.lineTo(w * 0.5141, h * 0.2557);
8301	c.lineTo(w * 0.3185, h * 0.2895);
8302	c.lineTo(w * 0.2641, h * 0.2648);
8303	c.close();
8304	c.fill();
8305
8306	c.setStrokeWidth(2 * strokeWidth);
8307	c.setStrokeColor('#292929');
8308
8309	c.begin();
8310	c.moveTo(0, h * 0.1671);
8311	c.lineTo(w * 0.3424, 0);
8312	c.lineTo(w * 0.663, 0);
8313	c.lineTo(w, h * 0.1671);
8314	c.lineTo(w, h * 0.8365);
8315	c.lineTo(w * 0.663, h);
8316	c.lineTo(w * 0.3424, h);
8317	c.lineTo(0, h * 0.8365);
8318	c.close();
8319	c.stroke();
8320};
8321
8322mxCellRenderer.registerShape(mxShapeAws3dLambda.prototype.cst.LAMBDA, mxShapeAws3dLambda);
8323
8324//**********************************************************************************************************************************************************
8325//EBS 2
8326//**********************************************************************************************************************************************************
8327/**
8328* Extends mxShape.
8329*/
8330function mxShapeAws3dEbs2(bounds, fill, stroke, strokewidth)
8331{
8332	mxShape.call(this);
8333	this.bounds = bounds;
8334	this.fill = fill;
8335	this.stroke = stroke;
8336	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
8337};
8338
8339/**
8340* Extends mxShape.
8341*/
8342mxUtils.extend(mxShapeAws3dEbs2, mxShape);
8343
8344mxShapeAws3dEbs2.prototype.cst = {
8345		EBS2 : 'mxgraph.aws3d.ebs2',
8346		SHADING_COLORS : 'shadingCols'
8347};
8348
8349/**
8350* Function: paintVertexShape
8351*
8352* Paints the vertex shape.
8353*/
8354mxShapeAws3dEbs2.prototype.paintVertexShape = function(c, x, y, w, h)
8355{
8356	c.translate(x, y);
8357
8358	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
8359	var strokeWidth1 = strokeWidth * w / 92;
8360	var strokeWidth2 = strokeWidth * h / 60;
8361	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
8362
8363	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
8364
8365	c.setStrokeWidth(strokeWidth);
8366	c.setShadow(false);
8367	c.save();
8368	c.save();
8369	c.setStrokeWidth(2 * strokeWidth);
8370	c.setStrokeColor('#292929');
8371	c.setLineJoin('round');
8372
8373	if(isShadow == 1)
8374	{
8375		c.setShadow(true);
8376	}
8377
8378	c.begin();
8379	c.moveTo(0, h * 0.5276);
8380	c.lineTo(0, h * 0.4188);
8381	c.lineTo(w * 0.071, h * 0.2898);
8382	c.lineTo(w * 0.4033, 0);
8383	c.lineTo(w * 0.9301, h * 0.464);
8384	c.lineTo(w, h * 0.5863);
8385	c.lineTo(w, h * 0.7035);
8386	c.lineTo(w * 0.6667, h);
8387	c.lineTo(w * 0.5355, h);
8388	c.close();
8389	c.fillAndStroke();
8390
8391	c.restore();
8392	c.setFillColor('#000000');
8393
8394	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dEbs2.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
8395	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
8396	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
8397
8398	c.begin();
8399	c.moveTo(w * 0.071, h * 0.2948);
8400	c.lineTo(w * 0.6011, h * 0.7621);
8401	c.lineTo(w * 0.6667, h);
8402	c.lineTo(w * 0.5355, h);
8403	c.lineTo(0, h * 0.5276);
8404	c.lineTo(0, h * 0.4137);
8405	c.close();
8406	c.fill();
8407
8408	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
8409	c.begin();
8410	c.moveTo(w * 0.6011, h * 0.7655);
8411	c.lineTo(w * 0.9344, h * 0.4724);
8412	c.lineTo(w, h * 0.7035);
8413	c.lineTo(w * 0.6667, h);
8414	c.close();
8415	c.fill();
8416
8417	c.restore();
8418	c.setLineJoin('round');
8419
8420	c.begin();
8421	c.moveTo(w * 0.071, h * 0.2948);
8422	c.lineTo(w * 0.6011, h * 0.7621);
8423	c.lineTo(w * 0.6667, h);
8424	c.lineTo(w * 0.5355, h);
8425	c.lineTo(0, h * 0.5276);
8426	c.lineTo(0, h * 0.4137);
8427	c.close();
8428	c.moveTo(w * 0.6011, h * 0.7655);
8429	c.lineTo(w * 0.9344, h * 0.4724);
8430	c.lineTo(w, h * 0.7035);
8431	c.lineTo(w * 0.6667, h);
8432	c.close();
8433	c.moveTo(w * 0.0033, h * 0.5276);
8434	c.lineTo(w * 0.071, h * 0.2898);
8435	c.moveTo(w * 0.5325, h * 0.9976);
8436	c.lineTo(w * 0.603, h * 0.7593);
8437	c.stroke();
8438
8439	c.setStrokeWidth(2 * strokeWidth);
8440	c.setLineCap('round');
8441
8442	c.begin();
8443	c.moveTo(w * 0.3388, h * 0.3802);
8444	c.lineTo(w * 0.5027, h * 0.2345);
8445	c.lineTo(w * 0.6667, h * 0.3802);
8446	c.lineTo(w * 0.5027, h * 0.526);
8447	c.close();
8448	c.moveTo(w * 0.4426, h * 0.3802);
8449	c.lineTo(w * 0.5027, h * 0.3266);
8450	c.lineTo(w * 0.5628, h * 0.3802);
8451	c.lineTo(w * 0.5027, h * 0.4338);
8452	c.close();
8453	c.moveTo(w * 0.3867, h * 0.3284);
8454	c.lineTo(w * 0.3541, h * 0.2998);
8455	c.moveTo(w * 0.4436, h * 0.2748);
8456	c.lineTo(w * 0.4077, h * 0.2412);
8457	c.moveTo(w * 0.5704, h * 0.2803);
8458	c.lineTo(w * 0.5992, h * 0.2513);
8459	c.moveTo(w * 0.6231, h * 0.3284);
8460	c.lineTo(w * 0.6503, h * 0.3032);
8461	c.moveTo(w * 0.622, h * 0.4338);
8462	c.lineTo(w * 0.6557, h * 0.4606);
8463	c.moveTo(w * 0.5667, h * 0.4845);
8464	c.lineTo(w * 0.5992, h * 0.5156);
8465	c.moveTo(w * 0.4414, h * 0.4874);
8466	c.lineTo(w * 0.412, h * 0.5159);
8467	c.moveTo(w * 0.3889, h * 0.4405);
8468	c.lineTo(w * 0.3607, h * 0.4657);
8469	c.stroke();
8470
8471	c.setStrokeColor('#292929');
8472	c.setLineJoin('round');
8473
8474	c.begin();
8475	c.moveTo(0, h * 0.5276);
8476	c.lineTo(0, h * 0.4188);
8477	c.lineTo(w * 0.071, h * 0.2898);
8478	c.lineTo(w * 0.4033, 0);
8479	c.lineTo(w * 0.9301, h * 0.464);
8480	c.lineTo(w, h * 0.5863);
8481	c.lineTo(w, h * 0.7035);
8482	c.lineTo(w * 0.6667, h);
8483	c.lineTo(w * 0.5355, h);
8484	c.close();
8485	c.stroke();
8486};
8487
8488mxCellRenderer.registerShape(mxShapeAws3dEbs2.prototype.cst.EBS2, mxShapeAws3dEbs2);
8489
8490//**********************************************************************************************************************************************************
8491//Elasticache
8492//**********************************************************************************************************************************************************
8493///**
8494//* Extends mxShape.
8495//*/
8496//function mxShapeAws3dElasticache(bounds, fill, stroke, strokewidth)
8497//{
8498//	mxShape.call(this);
8499//	this.bounds = bounds;
8500//	this.fill = fill;
8501//	this.stroke = stroke;
8502//	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
8503//};
8504//
8505///**
8506//* Extends mxShape.
8507//*/
8508//mxUtils.extend(mxShapeAws3dElasticache, mxShape);
8509//
8510//mxShapeAws3dElasticache.prototype.cst = {
8511//		ELASTICACHE : 'mxgraph.aws3d.elasticache',
8512//		SHADING_COLORS : 'shadingCols'
8513//};
8514//
8515///**
8516//* Function: paintVertexShape
8517//*
8518//* Paints the vertex shape.
8519//*/
8520//mxShapeAws3dElasticache.prototype.paintVertexShape = function(c, x, y, w, h)
8521//{
8522//	c.translate(x, y);
8523//
8524//	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
8525//	var strokeWidth1 = strokeWidth * w / 123;
8526//	var strokeWidth2 = strokeWidth * h / 143;
8527//	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
8528//
8529//	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
8530//
8531//	c.setStrokeWidth(strokeWidth);
8532//	c.setShadow(false);
8533//	c.save();
8534//	c.save();
8535//	c.setStrokeWidth(2 * strokeWidth);
8536//	c.setStrokeColor('#292929');
8537//	c.setLineJoin('round');
8538//
8539//	if(isShadow == 1)
8540//	{
8541//		c.setShadow(true);
8542//	}
8543//
8544//	c.begin();
8545//	c.moveTo(0, h * 0.7483);
8546//	c.lineTo(0, h * 0.6294);
8547//	c.lineTo(w * 0.061, h * 0.5944);
8548//	c.lineTo(0, h * 0.563);
8549//	c.lineTo(0, h * 0.4406);
8550//	c.lineTo(w * 0.061, h * 0.4091);
8551//	c.lineTo(0, h * 0.3776);
8552//	c.lineTo(0, h * 0.2517);
8553//	c.lineTo(w * 0.5041, 0);
8554//	c.lineTo(w, h * 0.2483);
8555//	c.lineTo(w, h * 0.3741);
8556//	c.lineTo(w * 0.939, h * 0.4091);
8557//	c.lineTo(w, h * 0.4406);
8558//	c.lineTo(w, h * 0.563);
8559//	c.lineTo(w * 0.939, h * 0.5944);
8560//	c.lineTo(w, h * 0.6294);
8561//	c.lineTo(w, h * 0.751);
8562//	c.lineTo(w * 0.5041, h);
8563//	c.close();
8564//	c.fillAndStroke();
8565//
8566//	c.restore();
8567//	c.setFillColor('#000000');
8568//
8569//	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dElasticache.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
8570//	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
8571//	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
8572//
8573//	c.begin();
8574//	c.moveTo(0, h * 0.2517);
8575//	c.lineTo(w * 0.5041, h * 0.4965);
8576//	c.lineTo(w * 0.5041, h * 0.6294);
8577//	c.lineTo(0, h * 0.3776);
8578//	c.close();
8579//	c.moveTo(0, h * 0.4406);
8580//	c.lineTo(w * 0.5041, h * 0.6853);
8581//	c.lineTo(w * 0.5041, h * 0.8112);
8582//	c.lineTo(0, h * 0.5629);
8583//	c.close();
8584//	c.moveTo(0, h * 0.6294);
8585//	c.lineTo(w * 0.5041, h * 0.8741);
8586//	c.lineTo(w * 0.5041, h);
8587//	c.lineTo(0, h * 0.7483);
8588//	c.close();
8589//	c.moveTo(w * 0.6179, h * 0.2517);
8590//	c.lineTo(w * 0.752, h * 0.1853);
8591//	c.lineTo(w * 0.752, h * 0.3217);
8592//	c.close();
8593//	c.fill();
8594//
8595//	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
8596//	c.begin();
8597//	c.moveTo(w * 0.5041, h * 0.4965);
8598//	c.lineTo(w, h * 0.2517);
8599//	c.lineTo(w, h * 0.3741);
8600//	c.lineTo(w * 0.5041, h * 0.6294);
8601//	c.close();
8602//	c.moveTo(w * 0.5041, h * 0.6853);
8603//	c.lineTo(w, h * 0.4406);
8604//	c.lineTo(w, h * 0.5629);
8605//	c.lineTo(w * 0.5041, h * 0.8112);
8606//	c.close();
8607//	c.moveTo(w * 0.5041, h * 0.8741);
8608//	c.lineTo(w, h * 0.6294);
8609//	c.lineTo(w, h * 0.7483);
8610//	c.lineTo(w * 0.5041, h);
8611//	c.close();
8612//	c.moveTo(w * 0.752, h * 0.1853);
8613//	c.lineTo(w * 0.8821, h * 0.2517);
8614//	c.lineTo(w * 0.752, h * 0.3217);
8615//	c.close();
8616//	c.fill();
8617//
8618//	c.restore();
8619//	c.setLineJoin('round');
8620//
8621//	c.begin();
8622//	c.moveTo(0, h * 0.2517);
8623//	c.lineTo(w * 0.5041, h * 0.4965);
8624//	c.lineTo(w * 0.5041, h * 0.6294);
8625//	c.lineTo(0, h * 0.3776);
8626//	c.close();
8627//	c.moveTo(0, h * 0.4406);
8628//	c.lineTo(w * 0.5041, h * 0.6853);
8629//	c.lineTo(w * 0.5041, h * 0.8112);
8630//	c.lineTo(0, h * 0.5629);
8631//	c.close();
8632//	c.moveTo(0, h * 0.6294);
8633//	c.lineTo(w * 0.5041, h * 0.8741);
8634//	c.lineTo(w * 0.5041, h);
8635//	c.lineTo(0, h * 0.7483);
8636//	c.close();
8637//	c.moveTo(w * 0.5041, h * 0.4965);
8638//	c.lineTo(w, h * 0.2517);
8639//	c.lineTo(w, h * 0.3741);
8640//	c.lineTo(w * 0.5041, h * 0.6294);
8641//	c.close();
8642//	c.moveTo(w * 0.5041, h * 0.6853);
8643//	c.lineTo(w, h * 0.4406);
8644//	c.lineTo(w, h * 0.5629);
8645//	c.lineTo(w * 0.5041, h * 0.8112);
8646//	c.close();
8647//	c.moveTo(w * 0.5041, h * 0.8741);
8648//	c.lineTo(w, h * 0.6294);
8649//	c.lineTo(w, h * 0.7483);
8650//	c.lineTo(w * 0.5041, h);
8651//	c.close();
8652//	c.stroke();
8653//
8654//	c.setStrokeWidth(2 * strokeWidth);
8655//	c.setLineCap('round');
8656//	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
8657//	c.setFillColor(strokeColor);
8658//
8659//	c.begin();
8660//	c.moveTo(w * 0.222, h * 0.2028);
8661//	c.arcTo(w * 0.1463, h * 0.1259, 0, 0, 1, w * 0.3154, h * 0.2014);
8662//	c.arcTo(w * 0.122, h * 0.1049, 0, 0, 1, w * 0.3642, h * 0.2245);
8663//	c.arcTo(w * 0.0325, h * 0.028, 0, 0, 1, w * 0.3618, h * 0.2552);
8664//	c.arcTo(w * 0.122, h * 0.1049, 0, 0, 1, w * 0.3252, h * 0.2798);
8665//	c.arcTo(w * 0.1626, h * 0.1399, 0, 0, 1, w * 0.2276, h * 0.2797);
8666//	c.arcTo(w * 0.0976, h * 0.0839, 0, 0, 1, w * 0.187, h * 0.2622);
8667//	c.arcTo(w * 0.0325, h * 0.028, 0, 0, 1, w * 0.187, h * 0.2238);
8668//	c.arcTo(w * 0.0976, h * 0.0839, 0, 0, 1, w * 0.222, h * 0.2028);
8669//	c.close();
8670//	c.moveTo(w * 0.3618, h * 0.1434);
8671//	c.lineTo(w * 0.4309, h * 0.1189);
8672//	c.lineTo(w * 0.4309, h * 0.0755);
8673//	c.lineTo(w * 0.4992, h * 0.1014);
8674//	c.lineTo(w * 0.5813, h * 0.0874);
8675//	c.lineTo(w * 0.5488, h * 0.1294);
8676//	c.lineTo(w * 0.6057, h * 0.1608);
8677//	c.lineTo(w * 0.5163, h * 0.1608);
8678//	c.lineTo(w * 0.4634, h * 0.2028);
8679//	c.lineTo(w * 0.4431, h * 0.1538);
8680//	c.close();
8681//	c.moveTo(w * 0.3821, h * 0.3601);
8682//	c.lineTo(w * 0.5894, h * 0.3322);
8683//	c.lineTo(w * 0.5325, h * 0.4394);
8684//	c.close();
8685//	c.fill();
8686//
8687//	c.setStrokeColor('#292929');
8688//	c.setLineJoin('round');
8689//
8690//	c.begin();
8691//	c.moveTo(0, h * 0.7483);
8692//	c.lineTo(0, h * 0.6294);
8693//	c.lineTo(w * 0.061, h * 0.5944);
8694//	c.lineTo(0, h * 0.563);
8695//	c.lineTo(0, h * 0.4406);
8696//	c.lineTo(w * 0.061, h * 0.4091);
8697//	c.lineTo(0, h * 0.3776);
8698//	c.lineTo(0, h * 0.2517);
8699//	c.lineTo(w * 0.5041, 0);
8700//	c.lineTo(w, h * 0.2483);
8701//	c.lineTo(w, h * 0.3741);
8702//	c.lineTo(w * 0.939, h * 0.4091);
8703//	c.lineTo(w, h * 0.4406);
8704//	c.lineTo(w, h * 0.563);
8705//	c.lineTo(w * 0.939, h * 0.5944);
8706//	c.lineTo(w, h * 0.6294);
8707//	c.lineTo(w, h * 0.751);
8708//	c.lineTo(w * 0.5041, h);
8709//	c.close();
8710//	c.stroke();
8711//};
8712//
8713//mxCellRenderer.registerShape(mxShapeAws3dElasticache.prototype.cst.ELASTICACHE, mxShapeAws3dElasticache);
8714
8715//**********************************************************************************************************************************************************
8716//Kinesis Stream
8717//**********************************************************************************************************************************************************
8718/**
8719* Extends mxShape.
8720*/
8721//function mxShapeAws3dKinesisStream(bounds, fill, stroke, strokewidth)
8722//{
8723//	mxShape.call(this);
8724//	this.bounds = bounds;
8725//	this.fill = fill;
8726//	this.stroke = stroke;
8727//	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
8728//};
8729//
8730///**
8731//* Extends mxShape.
8732//*/
8733//mxUtils.extend(mxShapeAws3dKinesisStream, mxShape);
8734//
8735//mxShapeAws3dKinesisStream.prototype.cst = {
8736//		KINESIS_STREAM : 'mxgraph.aws3d.kinesisStream',
8737//		SHADING_COLORS : 'shadingCols'
8738//};
8739//
8740///**
8741//* Function: paintVertexShape
8742//*
8743//* Paints the vertex shape.
8744//*/
8745//mxShapeAws3dKinesisStream.prototype.paintVertexShape = function(c, x, y, w, h)
8746//{
8747//	c.translate(x, y);
8748//
8749//	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
8750//	var strokeWidth1 = strokeWidth * w / 220;
8751//	var strokeWidth2 = strokeWidth * h / 160;
8752//	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
8753//
8754//	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
8755//
8756//	c.setStrokeWidth(strokeWidth);
8757//	c.setShadow(false);
8758//	c.save();
8759//	c.save();
8760//	c.setStrokeWidth(2 * strokeWidth);
8761//	c.setStrokeColor('#292929');
8762//	c.setLineJoin('round');
8763//
8764//	if(isShadow == 1)
8765//	{
8766//		c.setShadow(true);
8767//	}
8768//
8769//	c.begin();
8770//	c.moveTo(0, h * 0.5503);
8771//	c.lineTo(w * 0.0455, h * 0.4623);
8772//	c.lineTo(w * 0.6054, h * 0.0157);
8773//	c.lineTo(w * 0.6623, h * 0.0629);
8774//	c.lineTo(w * 0.7396, 0);
8775//	c.lineTo(w * 0.8239, h * 0.0692);
8776//	c.lineTo(w * 0.8671, h * 0.2233);
8777//	c.lineTo(w * 0.9513, h * 0.2943);
8778//	c.lineTo(w, h * 0.4528);
8779//	c.lineTo(w * 0.9595, h * 0.5365);
8780//	c.lineTo(w * 0.396, h * 0.9843);
8781//	c.lineTo(w * 0.3391, h * 0.9403);
8782//	c.lineTo(w * 0.2617, h);
8783//	c.lineTo(w * 0.173, h * 0.9308);
8784//	c.lineTo(w * 0.1297, h * 0.7736);
8785//	c.lineTo(w * 0.0432, h * 0.7044);
8786//	c.close();
8787//	c.fillAndStroke();
8788//
8789//	c.restore();
8790//	c.setFillColor('#000000');
8791//
8792//	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dKinesisStream.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
8793//	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
8794//	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
8795//
8796//	c.begin();
8797//	c.moveTo(w * 0.0432, h * 0.4654);
8798//	c.lineTo(w * 0.132, h * 0.5314);
8799//	c.lineTo(w * 0.1775, h * 0.4465);
8800//	c.lineTo(w * 0.264, h * 0.5189);
8801//	c.lineTo(w * 0.3072, h * 0.673);
8802//	c.lineTo(w * 0.396, h * 0.7453);
8803//	c.lineTo(w * 0.4392, h * 0.8994);
8804//	c.lineTo(w * 0.396, h * 0.9843);
8805//	c.lineTo(w * 0.305, h * 0.9151);
8806//	c.lineTo(w * 0.2617, h);
8807//	c.lineTo(w * 0.173, h * 0.9308);
8808//	c.lineTo(w * 0.1297, h * 0.7736);
8809//	c.lineTo(w * 0.0432, h * 0.7044);
8810//	c.lineTo(0, h * 0.5503);
8811//	c.close();
8812//	c.fill();
8813//
8814//	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
8815//	c.begin();
8816//	c.moveTo(w * 0.264, h * 0.5204);
8817//	c.lineTo(w * 0.8239, h * 0.0676);
8818//	c.lineTo(w * 0.8694, h * 0.228);
8819//	c.lineTo(w * 0.3072, h * 0.673);
8820//	c.close();
8821//	c.moveTo(w * 0.3937, h * 0.7453);
8822//	c.lineTo(w * 0.9536, h * 0.2956);
8823//	c.lineTo(w, h * 0.4528);
8824//	c.lineTo(w * 0.9558, h * 0.5377);
8825//	c.lineTo(w * 0.396, h * 0.9843);
8826//	c.lineTo(w * 0.4392, h * 0.8994);
8827//	c.close();
8828//	c.moveTo(w * 0.2617, h);
8829//	c.lineTo(w * 0.305, h * 0.9151);
8830//	c.lineTo(w * 0.3368, h * 0.9403);
8831//	c.close();
8832//	c.fill();
8833//
8834//	c.setAlpha('0.5');
8835//	c.begin();
8836//	c.moveTo(w * 0.0546, h * 0.5094);
8837//	c.lineTo(w * 0.1161, h * 0.5597);
8838//	c.lineTo(w * 0.1479, h * 0.6761);
8839//	c.lineTo(w * 0.1183, h * 0.7264);
8840//	c.lineTo(w * 0.0569, h * 0.6792);
8841//	c.lineTo(w * 0.025, h * 0.566);
8842//	c.close();
8843//	c.moveTo(w * 0.1889, h * 0.4937);
8844//	c.lineTo(w * 0.2503, h * 0.544);
8845//	c.lineTo(w * 0.2822, h * 0.6572);
8846//	c.lineTo(w * 0.2526, h * 0.717);
8847//	c.lineTo(w * 0.1934, h * 0.6667);
8848//	c.lineTo(w * 0.1593, h * 0.5566);
8849//	c.close();
8850//	c.moveTo(w * 0.3195, h * 0.7201);
8851//	c.lineTo(w * 0.3801, h * 0.7704);
8852//	c.lineTo(w * 0.4137, h * 0.8805);
8853//	c.lineTo(w * 0.3819, h * 0.9403);
8854//	c.lineTo(w * 0.3209, h * 0.8912);
8855//	c.lineTo(w * 0.2904, h * 0.783);
8856//	c.close();
8857//	c.moveTo(w * 0.1866, h * 0.7358);
8858//	c.lineTo(w * 0.2458, h * 0.783);
8859//	c.lineTo(w * 0.2776, h * 0.8962);
8860//	c.lineTo(w * 0.2481, h * 0.956);
8861//	c.lineTo(w * 0.1866, h * 0.9057);
8862//	c.lineTo(w * 0.157, h * 0.7893);
8863//	c.close();
8864//	c.fill();
8865//
8866//	c.restore();
8867//	c.setLineJoin('round');
8868//
8869//	c.begin();
8870//	c.moveTo(w * 0.0432, h * 0.4654);
8871//	c.lineTo(w * 0.132, h * 0.5314);
8872//	c.lineTo(w * 0.1775, h * 0.4465);
8873//	c.lineTo(w * 0.264, h * 0.5189);
8874//	c.lineTo(w * 0.3072, h * 0.673);
8875//	c.lineTo(w * 0.396, h * 0.7453);
8876//	c.lineTo(w * 0.4392, h * 0.8994);
8877//	c.lineTo(w * 0.396, h * 0.9843);
8878//	c.lineTo(w * 0.305, h * 0.9151);
8879//	c.lineTo(w * 0.2617, h);
8880//	c.lineTo(w * 0.173, h * 0.9308);
8881//	c.lineTo(w * 0.1297, h * 0.7736);
8882//	c.lineTo(w * 0.0432, h * 0.7044);
8883//	c.lineTo(0, h * 0.5503);
8884//	c.close();
8885//	c.moveTo(w * 0.264, h * 0.5204);
8886//	c.lineTo(w * 0.8239, h * 0.0676);
8887//	c.lineTo(w * 0.8694, h * 0.228);
8888//	c.lineTo(w * 0.3072, h * 0.673);
8889//	c.close();
8890//	c.moveTo(w * 0.3937, h * 0.7453);
8891//	c.lineTo(w * 0.9536, h * 0.2956);
8892//	c.lineTo(w, h * 0.4528);
8893//	c.lineTo(w * 0.9558, h * 0.5377);
8894//	c.lineTo(w * 0.396, h * 0.9843);
8895//	c.lineTo(w * 0.4392, h * 0.8994);
8896//	c.close();
8897//	c.moveTo(w * 0.2617, h);
8898//	c.lineTo(w * 0.305, h * 0.9151);
8899//	c.lineTo(w * 0.3368, h * 0.9403);
8900//	c.close();
8901//	c.moveTo(w * 0.0546, h * 0.5094);
8902//	c.lineTo(w * 0.1161, h * 0.5597);
8903//	c.lineTo(w * 0.1479, h * 0.6761);
8904//	c.lineTo(w * 0.1183, h * 0.7264);
8905//	c.lineTo(w * 0.0569, h * 0.6792);
8906//	c.lineTo(w * 0.025, h * 0.566);
8907//	c.close();
8908//	c.moveTo(w * 0.1889, h * 0.4937);
8909//	c.lineTo(w * 0.2503, h * 0.544);
8910//	c.lineTo(w * 0.2822, h * 0.6572);
8911//	c.lineTo(w * 0.2526, h * 0.717);
8912//	c.lineTo(w * 0.1934, h * 0.6667);
8913//	c.lineTo(w * 0.1593, h * 0.5566);
8914//	c.close();
8915//	c.moveTo(w * 0.3195, h * 0.7201);
8916//	c.lineTo(w * 0.3801, h * 0.7704);
8917//	c.lineTo(w * 0.4137, h * 0.8805);
8918//	c.lineTo(w * 0.3819, h * 0.9403);
8919//	c.lineTo(w * 0.3209, h * 0.8912);
8920//	c.lineTo(w * 0.2904, h * 0.783);
8921//	c.close();
8922//	c.moveTo(w * 0.1866, h * 0.7358);
8923//	c.lineTo(w * 0.2458, h * 0.783);
8924//	c.lineTo(w * 0.2776, h * 0.8962);
8925//	c.lineTo(w * 0.2481, h * 0.956);
8926//	c.lineTo(w * 0.1866, h * 0.9057);
8927//	c.lineTo(w * 0.157, h * 0.7893);
8928//	c.close();
8929//	c.moveTo(w * 0.1775, h * 0.4465);
8930//	c.lineTo(w * 0.7374, 0);
8931//	c.moveTo(w * 0.4392, h * 0.8994);
8932//	c.lineTo(w, h * 0.4528);
8933//	c.moveTo(w * 0.1331, h * 0.533);
8934//	c.lineTo(w * 0.1809, h * 0.6934);
8935//	c.lineTo(w * 0.2617, h * 0.7626);
8936//	c.lineTo(w * 0.3061, h * 0.9151);
8937//	c.moveTo(w * 0.1295, h * 0.7764);
8938//	c.lineTo(w * 0.1807, h * 0.6928);
8939//	c.moveTo(w * 0.264, h * 0.7642);
8940//	c.lineTo(w * 0.3095, h * 0.673);
8941//	c.moveTo(w * 0.3641, h * 0.2327);
8942//	c.lineTo(w * 0.3241, h * 0.2673);
8943//	c.lineTo(w * 0.3619, h * 0.2987);
8944//	c.moveTo(w * 0.3468, h * 0.2736);
8945//	c.lineTo(w * 0.3596, h * 0.261);
8946//	c.moveTo(w * 0.3573, h * 0.283);
8947//	c.lineTo(w * 0.3823, h * 0.261);
8948//	c.moveTo(w * 0.4916, h * 0.217);
8949//	c.lineTo(w * 0.4483, h * 0.2547);
8950//	c.lineTo(w * 0.5052, h * 0.3019);
8951//	c.moveTo(w * 0.4679, h * 0.2591);
8952//	c.lineTo(w * 0.4802, h * 0.2478);
8953//	c.moveTo(w * 0.4811, h * 0.2673);
8954//	c.lineTo(w * 0.5098, h * 0.2421);
8955//	c.moveTo(w * 0.4939, h * 0.2767);
8956//	c.lineTo(w * 0.5121, h * 0.261);
8957//	c.moveTo(w * 0.5043, h * 0.2868);
8958//	c.lineTo(w * 0.5371, h * 0.2579);
8959//	c.moveTo(w * 0.6259, h * 0.4371);
8960//	c.lineTo(w * 0.5826, h * 0.4717);
8961//	c.lineTo(w * 0.6418, h * 0.522);
8962//	c.moveTo(w * 0.6039, h * 0.4755);
8963//	c.lineTo(w * 0.6187, h * 0.463);
8964//	c.moveTo(w * 0.6158, h * 0.4862);
8965//	c.lineTo(w * 0.6418, h * 0.4623);
8966//	c.moveTo(w * 0.6281, h * 0.4969);
8967//	c.lineTo(w * 0.6486, h * 0.478);
8968//	c.moveTo(w * 0.6395, h * 0.5063);
8969//	c.lineTo(w * 0.6736, h * 0.478);
8970//
8971//	c.stroke();
8972//
8973//	c.setStrokeWidth(2 * strokeWidth);
8974//	c.setLineCap('round');
8975//
8976//	c.setStrokeColor('#292929');
8977//	c.setLineJoin('round');
8978//
8979//	c.begin();
8980//	c.moveTo(0, h * 0.5503);
8981//	c.lineTo(w * 0.0455, h * 0.4623);
8982//	c.lineTo(w * 0.6054, h * 0.0157);
8983//	c.lineTo(w * 0.6623, h * 0.0629);
8984//	c.lineTo(w * 0.7396, 0);
8985//	c.lineTo(w * 0.8239, h * 0.0692);
8986//	c.lineTo(w * 0.8671, h * 0.2233);
8987//	c.lineTo(w * 0.9513, h * 0.2943);
8988//	c.lineTo(w, h * 0.4528);
8989//	c.lineTo(w * 0.9595, h * 0.5365);
8990//	c.lineTo(w * 0.396, h * 0.9843);
8991//	c.lineTo(w * 0.3391, h * 0.9403);
8992//	c.lineTo(w * 0.2617, h);
8993//	c.lineTo(w * 0.173, h * 0.9308);
8994//	c.lineTo(w * 0.1297, h * 0.7736);
8995//	c.lineTo(w * 0.0432, h * 0.7044);
8996//	c.close();
8997//	c.stroke();
8998//};
8999//
9000//mxCellRenderer.registerShape(mxShapeAws3dKinesisStream.prototype.cst.KINESIS_STREAM, mxShapeAws3dKinesisStream);
9001
9002//**********************************************************************************************************************************************************
9003//SQS 2
9004//**********************************************************************************************************************************************************
9005///**
9006//* Extends mxShape.
9007//*/
9008//function mxShapeAws3dSqs2(bounds, fill, stroke, strokewidth)
9009//{
9010//	mxShape.call(this);
9011//	this.bounds = bounds;
9012//	this.fill = fill;
9013//	this.stroke = stroke;
9014//	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
9015//};
9016//
9017///**
9018//* Extends mxShape.
9019//*/
9020//mxUtils.extend(mxShapeAws3dSqs2, mxShape);
9021//
9022//mxShapeAws3dSqs2.prototype.cst = {
9023//		SQS2 : 'mxgraph.aws3d.sqs2',
9024//		SHADING_COLORS : 'shadingCols'
9025//};
9026//
9027///**
9028//* Function: paintVertexShape
9029//*
9030//* Paints the vertex shape.
9031//*/
9032//mxShapeAws3dSqs2.prototype.paintVertexShape = function(c, x, y, w, h)
9033//{
9034//	c.translate(x, y);
9035//
9036//	var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1'));
9037//	var strokeWidth1 = strokeWidth * w / 160;
9038//	var strokeWidth2 = strokeWidth * h / 93;
9039//	var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0'));
9040//
9041//	strokeWidth = Math.min(strokeWidth1, strokeWidth2);
9042//
9043//	c.setStrokeWidth(strokeWidth);
9044//	c.setShadow(false);
9045//	c.save();
9046//	c.save();
9047//	c.setStrokeWidth(2 * strokeWidth);
9048//	c.setStrokeColor('#292929');
9049//	c.setLineJoin('round');
9050//
9051//	if(isShadow == 1)
9052//	{
9053//		c.setShadow(true);
9054//	}
9055//
9056//	c.begin();
9057//	c.moveTo(0, h * 0.4737);
9058//	c.lineTo(w * 0.4652, 0);
9059//	c.lineTo(w * 0.6231, h * 0.0602);
9060//	c.lineTo(w * 0.6231, h * 0.1676);
9061//	c.lineTo(w * 0.1567, h * 0.6316);
9062//	c.close();
9063//	c.moveTo(w * 0.3756, h * 0.8443);
9064//	c.lineTo(w * 0.3756, h * 0.7454);
9065//	c.lineTo(w * 0.8439, h * 0.275);
9066//	c.lineTo(w, h * 0.5328);
9067//	c.lineTo(w * 0.5311, h);
9068//	c.close();
9069//	c.fillAndStroke();
9070//
9071//	c.restore();
9072//	c.setFillColor('#000000');
9073//
9074//	var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSqs2.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(',');
9075//	var flipH = mxUtils.getValue(this.state.style, 'flipH', '0');
9076//	(flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]);
9077//
9078//	c.begin();
9079//	c.moveTo(0, h * 0.4737);
9080//	c.lineTo(w * 0.1567, h * 0.5274);
9081//	c.lineTo(w * 0.1567, h * 0.6394);
9082//	c.close();
9083//	c.moveTo(w * 0.3756, h * 0.7454);
9084//	c.lineTo(w * 0.5311, h);
9085//	c.lineTo(w * 0.3756, h * 0.8443);
9086//	c.close();
9087//	c.fill();
9088//
9089//	(flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]);
9090//	c.begin();
9091//	c.moveTo(w * 0.1567, h * 0.5274);
9092//	c.lineTo(w * 0.6231, h * 0.0602);
9093//	c.lineTo(w * 0.6231, h * 0.1676);
9094//	c.lineTo(w * 0.1567, h * 0.6294);
9095//	c.close();
9096//	c.fill();
9097//
9098//	c.restore();
9099//	c.setLineJoin('round');
9100//
9101//	c.begin();
9102//	c.moveTo(0, h * 0.4737);
9103//	c.lineTo(w * 0.1567, h * 0.5274);
9104//	c.lineTo(w * 0.1567, h * 0.6294);
9105//	c.close();
9106//	c.moveTo(w * 0.3756, h * 0.7454);
9107//	c.lineTo(w * 0.5311, h);
9108//	c.lineTo(w * 0.3756, h * 0.8443);
9109//	c.close();
9110//	c.moveTo(w * 0.1567, h * 0.5274);
9111//	c.lineTo(w * 0.6231, h * 0.0602);
9112//	c.lineTo(w * 0.6231, h * 0.1676);
9113//	c.lineTo(w * 0.1567, h * 0.6294);
9114//	c.close();
9115//	c.stroke();
9116//
9117//	c.setStrokeWidth(2 * strokeWidth);
9118//	c.setLineCap('round');
9119//
9120//	c.setStrokeColor('#292929');
9121//	c.setLineJoin('round');
9122//
9123//	c.begin();
9124//	c.moveTo(0, h * 0.4737);
9125//	c.lineTo(w * 0.4652, 0);
9126//	c.lineTo(w * 0.6231, h * 0.0602);
9127//	c.lineTo(w * 0.6231, h * 0.1676);
9128//	c.lineTo(w * 0.1567, h * 0.6316);
9129//	c.close();
9130//	c.moveTo(w * 0.3756, h * 0.8443);
9131//	c.lineTo(w * 0.3756, h * 0.7454);
9132//	c.lineTo(w * 0.8439, h * 0.275);
9133//	c.lineTo(w, h * 0.5328);
9134//	c.lineTo(w * 0.5311, h);
9135//	c.close();
9136//	c.stroke();
9137//
9138//	c.setFillColor('#F4B934');
9139//
9140//	c.begin();
9141//	c.moveTo(w * 0.1256, h * 0.812);
9142//	c.lineTo(w * 0.24, h * 0.7605);
9143//	c.lineTo(w * 0.1853, h * 0.8829);
9144//	c.close();
9145//	c.moveTo(w * 0.2417, h * 0.6957);
9146//	c.lineTo(w * 0.3562, h * 0.6441);
9147//	c.lineTo(w * 0.3014, h * 0.7666);
9148//	c.close();
9149//	c.moveTo(w * 0.3588, h * 0.5793);
9150//	c.lineTo(w * 0.4733, h * 0.5277);
9151//	c.lineTo(w * 0.4185, h * 0.6502);
9152//	c.close();
9153//	c.moveTo(w * 0.477, h * 0.4611);
9154//	c.lineTo(w * 0.5914, h * 0.4096);
9155//	c.lineTo(w * 0.5367, h * 0.532);
9156//	c.close();
9157//	c.moveTo(w * 0.591, h * 0.343);
9158//	c.lineTo(w * 0.7054, h * 0.2914);
9159//	c.lineTo(w * 0.6507, h * 0.4139);
9160//	c.close();
9161//	c.moveTo(w * 0.7091, h * 0.2302);
9162//	c.lineTo(w * 0.8236, h * 0.1786);
9163//	c.lineTo(w * 0.7688, h * 0.3011);
9164//	c.close();
9165//	c.fillAndStroke();
9166//};
9167//
9168//mxCellRenderer.registerShape(mxShapeAws3dSqs2.prototype.cst.SQS2, mxShapeAws3dSqs2);
9169
9170