1(function()
2{
3	// Adds mockup shapes
4	Sidebar.prototype.addAWS4bPalette = function()
5	{
6		var s = 1;
7		var w = 80 * s;
8		var h = 100 * s;
9		var w2 = 60 * s;
10		var n = 'sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#ffffff;fillColor=#232F3E;dashed=0;verticalLabelPosition=middle;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=10;fontStyle=1;spacing=3;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4.";
11		var n2 = 'sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#232F3E;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4.";
12		var n3 = 'sketch=0;outlineConnect=0;gradientColor=none;fontColor=#545B64;strokeColor=none;fillColor=#879196;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4.";
13		var n4 = 'sketch=0;outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4.";
14		var gn = 'mxgraph.aws4';
15		var sb = this;
16
17		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bArrows');
18		this.addAWS4bArrowsPalette(gn, sb);
19		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bGeneral Resources');
20		this.addAWS4bGeneralResourcesPalette(w, h, w2, n, n2, gn, sb);
21		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bIllustrations');
22		this.addAWS4bIllustrationsPalette(n3, gn, sb);
23		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bGroups Light');
24		this.addAWS4bGroupsLightPalette(n4, gn, sb);
25		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bGroups Dark');
26		this.addAWS4bGroupsDarkPalette(n4, gn, sb);
27		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bAnalytics');
28		this.addAWS4bAnalyticsPalette(w, h, w2, n, n2, gn, sb);
29		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bApplication Integration');
30		this.addAWS4bApplicationIntegrationPalette(w, h, w2, n, n2, gn, sb);
31		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bAR VR');
32		this.addAWS4bARVRPalette(w, h, w2, n, n2, gn, sb);
33		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bCost Management');
34		this.addAWS4bCostManagementPalette(w, h, w2, n, n2, gn, sb);
35		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bBusiness Productivity');
36		this.addAWS4bBusinessProductivityPalette(w, h, w2, n, n2, gn, sb);
37		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bCompute');
38		this.addAWS4bComputePalette(w, h, w2, n, n2, gn, sb);
39		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bCustomer Engagement');
40		this.addAWS4bCustomerEngagementPalette(w, h, w2, n, n2, gn, sb);
41		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bDatabase');
42		this.addAWS4bDatabasePalette(w, h, w2, n, n2, gn, sb);
43		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bDesktop App Streaming');
44		this.addAWS4bDesktopAppStreamingPalette(w, h, w2, n, n2, gn, sb);
45		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bDeveloper Tools');
46		this.addAWS4bDeveloperToolsPalette(w, h, w2, n, n2, gn, sb);
47		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bGame Development');
48		this.addAWS4bGameDevelopmentPalette(w, h, w2, n, n2, gn, sb);
49		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bInternet of Things');
50		this.addAWS4bInternetOfThingsPalette(w, h, w2, n, n2, gn, sb);
51		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bIoT Things');
52		this.addAWS4bIOTThingsPalette(w, h, w2, n, n2, gn, sb);
53		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bIoT Resources');
54		this.addAWS4bIOTResourcesPalette(w, h, w2, n, n2, gn, sb);
55		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bMachine Learning');
56		this.addAWS4bMachineLearningPalette(w, h, w2, n, n2, gn, sb);
57		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bManagement Tools');
58		this.addAWS4bManagementToolsPalette(w, h, w2, n, n2, gn, sb);
59		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bMedia Services');
60		this.addAWS4bMediaServicesPalette(w, h, w2, n, n2, gn, sb);
61		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bMigration');
62		this.addAWS4bMigrationPalette(w, h, w2, n, n2, gn, sb);
63		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bMobile Services');
64		this.addAWS4bMobileServicesPalette(w, h, w2, n, n2, gn, sb);
65		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bNetwork Content Delivery');
66		this.addAWS4bNetworkContentDeliveryPalette(w, h, w2, n, n2, gn, sb);
67		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bSecurity Identity Compliance');
68		this.addAWS4bSecurityIdentityCompliancePalette(w, h, w2, n, n2, gn, sb);
69		this.setCurrentSearchEntryLibrary('aws4b', 'aws4bStorage');
70		this.addAWS4bStoragePalette(w, h, w2, n, n2, gn, sb);
71		this.setCurrentSearchEntryLibrary();
72	};
73
74	Sidebar.prototype.addAWS4bArrowsPalette = function(gn, sb)
75	{
76		var dt = 'aws amazon web service arrows arrow ';
77
78		this.addPaletteFunctions('aws4bArrows', 'AWS18 / Arrows', false,
79		[
80			this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;html=1;endArrow=none;elbow=vertical;startArrow=block;startFill=1;strokeColor=#545B64;rounded=0;',
81					100, 0, '', 'Default (left)', null, this.getTagsForStencil(gn, '', dt + 'default left').join(' ')),
82			this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;elbow=vertical;startArrow=none;endFill=1;strokeColor=#545B64;rounded=0;',
83					100, 0, '', 'Default (left)', null, this.getTagsForStencil(gn, '', dt + 'default left').join(' ')),
84			this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;elbow=vertical;startArrow=block;startFill=1;endFill=1;strokeColor=#545B64;rounded=0;',
85					100, 0, '', 'Default (double)', null, this.getTagsForStencil(gn, '', dt + 'default double').join(' ')),
86			this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;html=1;endArrow=none;elbow=vertical;startArrow=openThin;startFill=0;strokeColor=#545B64;rounded=0;',
87					100, 0, '', 'Open (thin, left)', null, this.getTagsForStencil(gn, '', dt + 'open thin left').join(' ')),
88			this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;html=1;endArrow=openThin;elbow=vertical;startArrow=none;endFill=0;strokeColor=#545B64;rounded=0;',
89					100, 0, '', 'Open (thin, left)', null, this.getTagsForStencil(gn, '', dt + 'open thin left').join(' ')),
90			this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;html=1;endArrow=openThin;elbow=vertical;startArrow=openThin;startFill=0;endFill=0;strokeColor=#545B64;rounded=0;',
91					100, 0, '', 'Open (thin, double)', null, this.getTagsForStencil(gn, '', dt + 'open thin double').join(' ')),
92			this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;html=1;endArrow=none;elbow=vertical;startArrow=open;startFill=0;strokeColor=#545B64;rounded=0;',
93					100, 0, '', 'Open (left)', null, this.getTagsForStencil(gn, '', dt + 'open left').join(' ')),
94			this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;html=1;endArrow=open;elbow=vertical;startArrow=none;endFill=0;strokeColor=#545B64;rounded=0;',
95					100, 0, '', 'Open (left)', null, this.getTagsForStencil(gn, '', dt + 'open left').join(' ')),
96			this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;html=1;endArrow=open;elbow=vertical;startArrow=open;startFill=0;endFill=0;strokeColor=#545B64;rounded=0;',
97					100, 0, '', 'Open (double)', null, this.getTagsForStencil(gn, '', dt + 'open double').join(' '))
98		]);
99	};
100
101	Sidebar.prototype.addAWS4bGeneralResourcesPalette = function(w, h, w2, n, n2, gn, sb)
102	{
103		var dt = 'aws amazon web service general resources ';
104
105		this.addPaletteFunctions('aws4bGeneral Resources', 'AWS18 / General Resources', false,
106		[
107			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.aws_cloud;',
108					 w2, w2, 'AWS Cloud', null, null, null, this.getTagsForStencil(gn, 'cloud', dt).join(' ')),
109			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.client;',
110					 w2, w2, 'Client', null, null, null, this.getTagsForStencil(gn, 'client', dt).join(' ')),
111			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.corporate_data_center;',
112					 w2, w2, 'Corporate\ndata center', null, null, null, this.getTagsForStencil(gn, 'corporate data center', dt).join(' ')),
113			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.disk;',
114					 w2, w2, 'Disk', null, null, null, this.getTagsForStencil(gn, 'disk', dt).join(' ')),
115			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.forums;',
116					 w2, w2, 'Forums', null, null, null, this.getTagsForStencil(gn, 'forums', dt).join(' ')),
117			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.generic_database;',
118					 w2, w2, 'Generic\ndatabase', null, null, null, this.getTagsForStencil(gn, 'generic databas', dt).join(' ')),
119			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.internet;',
120					 w2, w2, 'Internet', null, null, null, this.getTagsForStencil(gn, 'internet', dt).join(' ')),
121			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.internet_alt1;',
122					 w2, w2, 'Internet alt1', null, null, null, this.getTagsForStencil(gn, 'internet alternative', dt).join(' ')),
123			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.internet_alt2;',
124					 w2, w2, 'Internet alt2', null, null, null, this.getTagsForStencil(gn, 'internet alternative', dt).join(' ')),
125			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.mobile_client;',
126					 w2, w2, 'Mobile client', null, null, null, this.getTagsForStencil(gn, 'mobile client', dt).join(' ')),
127			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.multimedia;',
128					 w2, w2, 'Multimedia', null, null, null, this.getTagsForStencil(gn, 'multimedia', dt).join(' ')),
129			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.office_building;',
130					 w2, w2, 'Office building', null, null, null, this.getTagsForStencil(gn, 'office building', dt).join(' ')),
131			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.saml_token;',
132					 w2, w2, 'SAML token', null, null, null, this.getTagsForStencil(gn, 'saml token', dt).join(' ')),
133			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.ssl_padlock;',
134					 w2, w2, 'SSL padlock', null, null, null, this.getTagsForStencil(gn, 'ssl padlock', dt).join(' ')),
135			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.tape_storage;',
136					 w2, w2, 'Tape storage', null, null, null, this.getTagsForStencil(gn, 'tape storage', dt).join(' ')),
137			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.traditional_server;',
138					 w2, w2, 'Traditional\nserver', null, null, null, this.getTagsForStencil(gn, 'traditional server', dt).join(' ')),
139			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.user;',
140					 w2, w2, 'User', null, null, null, this.getTagsForStencil(gn, 'user', dt).join(' ')),
141			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.users;',
142					 w2, w2, 'Users', null, null, null, this.getTagsForStencil(gn, 'users', dt).join(' ')),
143			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.virtual_private_cloud;',
144					 w2, w2, 'Virtual private\ncloud', null, null, null, this.getTagsForStencil(gn, 'virtual private cloud vpc', dt).join(' '))
145		]);
146	};
147
148	Sidebar.prototype.addAWS4bIllustrationsPalette = function(n3, gn, sb)
149	{
150		var dt = 'aws amazon web service illustrations ';
151
152		this.addPaletteFunctions('aws4bIllustrations', 'AWS18 / Illustrations', false,
153		[
154			 this.createVertexTemplateEntry(n3 + 'illustration_users;pointerEvents=1',
155					 100, 100, 'users', null, null, null, this.getTagsForStencil(gn, 'users', dt).join(' ')),
156			 this.createVertexTemplateEntry(n3 + 'illustration_notification;pointerEvents=1',
157					 100, 81, 'notification', null, null, null, this.getTagsForStencil(gn, 'users', dt).join(' ')),
158			 this.createVertexTemplateEntry(n3 + 'illustration_devices;pointerEvents=1',
159					 100, 73, 'devices', null, null, null, this.getTagsForStencil(gn, 'devices', dt).join(' ')),
160			 this.createVertexTemplateEntry(n3 + 'illustration_desktop;pointerEvents=1',
161					 100, 91, 'desktop', null, null, null, this.getTagsForStencil(gn, 'desktop', dt).join(' ')),
162			 this.createVertexTemplateEntry(n3 + 'illustration_office_building;pointerEvents=1',
163					 100, 71, 'office building', null, null, null, this.getTagsForStencil(gn, 'office building', dt).join(' '))
164		]);
165	};
166
167	Sidebar.prototype.addAWS4bGroupsLightPalette = function(n4, gn, sb)
168	{
169		var dt = 'aws amazon web service groups group light ';
170
171		this.addPaletteFunctions('aws4bGroups Light', 'AWS18 / Groups (light)', false,
172		[
173			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_aws_cloud;strokeColor=#AAB7B8;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#AAB7B8;dashed=0;',
174					 130, 130, 'AWS Cloud', 'AWS Cloud', null, null, this.getTagsForStencil(gn, 'cloud', dt).join(' ')),
175			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_region;strokeColor=#879196;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#879196;dashed=1;',
176					 130, 130, 'Region', 'Region', null, null, this.getTagsForStencil(gn, 'region', dt).join(' ')),
177			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_vpc;strokeColor=#879196;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#879196;dashed=0;',
178					 130, 130, 'VPC', 'VPC', null, null, this.getTagsForStencil(gn, 'vpc virtual private cloud', dt).join(' ')),
179			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_availability_zone;strokeColor=#545B64;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#545B64;dashed=1;',
180					 130, 130, 'Availability zone', 'Availability zone', null, null, this.getTagsForStencil(gn, 'availability zone', dt).join(' ')),
181			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_subnet;strokeColor=#879196;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#879196;dashed=0;',
182					 130, 130, 'Subnet', 'Subnet', null, null, this.getTagsForStencil(gn, 'subnet', dt).join(' ')),
183			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_on_premise;strokeColor=#AAB7B8;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#AAB7B8;dashed=0;',
184					 130, 130, 'On-Premise', 'On-Premise', null, null, this.getTagsForStencil(gn, 'on premise', dt).join(' ')),
185			 this.createVertexTemplateEntry(n4 + 'groupCenter;grIcon=' + gn + '.group_auto_scaling_group;grStroke=0;strokeColor=#879196;fillColor=#ECEFEF;verticalAlign=top;align=center;fontColor=#879196;dashed=0;spacingTop=25;',
186					 130, 130, 'Auto Scaling Group', 'Auto Scaling Group', null, null, this.getTagsForStencil(gn, 'auto scaling', dt).join(' ')),
187			 this.createVertexTemplateEntry(n4 + 'groupCenter;grIcon=' + gn + '.group_elastic_load_balancing;grStroke=1;strokeColor=#007DBC;fillColor=none;verticalAlign=top;align=center;fontColor=#007DBC;dashed=0;spacingTop=25;',
188					 130, 130, 'Elastic Load Balancing', 'Elastic Load Balancing', null, null, this.getTagsForStencil(gn, 'elastic load balancing', dt).join(' ')),
189			 this.createVertexTemplateEntry('outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;strokeColor=#879196;fillColor=none;verticalAlign=top;align=center;fontColor=#879196;dashed=1;spacingTop=3;',
190					 130, 130, 'Generic Group', 'Generic Group', null, null, this.getTagsForStencil(gn, 'generic', dt).join(' ')),
191			 this.createVertexTemplateEntry('outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;strokeColor=#FF9900;fillColor=none;verticalAlign=top;align=center;fontColor=#FF9900;dashed=0;spacingTop=3;',
192					 130, 130, 'Highlight', 'Highlight', null, null, this.getTagsForStencil(gn, 'highlight', dt).join(' ')),
193			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_aws_step_functions_workflow;strokeColor=#545B64;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#545B64;dashed=0;',
194					 130, 130, 'AWS Step Functions workflow', 'AWS Step Functions workflow', null, null, this.getTagsForStencil(gn, 'step functions workflow', dt).join(' ')),
195			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_spot_fleet;strokeColor=#232F3E;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#232F3E;dashed=0;',
196					 130, 130, 'Spot Fleet', 'Spot Fleet', null, null, this.getTagsForStencil(gn, 'spot fleet', dt).join(' '))
197		]);
198	};
199
200	Sidebar.prototype.addAWS4bGroupsDarkPalette = function(n4, gn, sb)
201	{
202		var dt = 'aws amazon web service groups group dark ';
203
204		this.addPaletteFunctions('aws4bGroups Dark', 'AWS18 / Groups (dark)', false,
205		[
206			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_aws_cloud;strokeColor=#858B94;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#858B94;dashed=0;',
207					 130, 130, 'AWS Cloud', 'AWS Cloud', null, null, this.getTagsForStencil(gn, 'cloud', dt).join(' ')),
208			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_region;strokeColor=#B6BABF;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#B6BABF;dashed=1;',
209					 130, 130, 'Region', 'Region', null, null, this.getTagsForStencil(gn, 'region', dt).join(' ')),
210			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_vpc;strokeColor=#B6BABF;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#B6BABF;dashed=0;',
211					 130, 130, 'VPC', 'VPC', null, null, this.getTagsForStencil(gn, 'vpc virtual private cloud', dt).join(' ')),
212			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_availability_zone;strokeColor=#E8E8E8;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#E8E8E8;dashed=1;',
213					 130, 130, 'Availability zone', 'Availability zone', null, null, this.getTagsForStencil(gn, 'availability zone', dt).join(' ')),
214			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_subnet;strokeColor=#E8E8E8;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#E8E8E8;dashed=0;',
215					 130, 130, 'Subnet', 'Subnet', null, null, this.getTagsForStencil(gn, 'subnet', dt).join(' ')),
216			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_on_premise;strokeColor=#858B94;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#858B94;dashed=0;',
217					 130, 130, 'On-Premise', 'On-Premise', null, null, this.getTagsForStencil(gn, 'on premise', dt).join(' ')),
218			 this.createVertexTemplateEntry(n4 + 'groupCenter;grIcon=' + gn + '.group_auto_scaling_group;grStroke=0;strokeColor=#B6BABF;fillColor=#47515E;verticalAlign=top;align=center;fontColor=#B6BABF;dashed=0;spacingTop=25;',
219					 130, 130, 'Auto Scaling Group', 'Auto Scaling Group', null, null, this.getTagsForStencil(gn, 'auto scaling', dt).join(' ')),
220			 this.createVertexTemplateEntry(n4 + 'groupCenter;grIcon=' + gn + '.group_elastic_load_balancing;grStroke=1;strokeColor=#00A1C9;fillColor=none;verticalAlign=top;align=center;fontColor=#00A1C9;dashed=0;spacingTop=25;',
221					 130, 130, 'Elastic Load Balancing', 'Elastic Load Balancing', null, null, this.getTagsForStencil(gn, 'elastic load balancing', dt).join(' ')),
222			 this.createVertexTemplateEntry('outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;strokeColor=#858B94;fillColor=none;verticalAlign=top;align=center;fontColor=#858B94;dashed=1;spacingTop=3;',
223					 130, 130, 'Generic Group', 'Generic Group', null, null, this.getTagsForStencil(gn, 'generic', dt).join(' ')),
224			 this.createVertexTemplateEntry('outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;strokeColor=#FF9900;fillColor=none;verticalAlign=top;align=center;fontColor=#FF9900;dashed=0;spacingTop=3;',
225					 130, 130, 'Highlight', 'Highlight', null, null, this.getTagsForStencil(gn, 'highlight', dt).join(' ')),
226			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_aws_step_functions_workflow;strokeColor=#E8E8E8;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#E8E8E8;dashed=0;',
227					 130, 130, 'AWS Step Functions workflow', 'AWS Step Functions workflow', null, null, this.getTagsForStencil(gn, 'step functions workflow', dt).join(' ')),
228			 this.createVertexTemplateEntry(n4 + 'group;grIcon=' + gn + '.group_spot_fleet;strokeColor=#FFFFFF;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#FFFFFF;dashed=0;',
229					 130, 130, 'Spot Fleet', 'Spot Fleet', null, null, this.getTagsForStencil(gn, 'spot fleet', dt).join(' '))
230		]);
231	};
232
233	Sidebar.prototype.addAWS4bAnalyticsPalette = function(w, h, w2, n, n2, gn, sb)
234	{
235		var dt = 'aws amazon web service analytics ';
236
237		this.addPaletteFunctions('aws4bAnalytics', 'AWS18 / Analytics', false,
238		[
239			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.athena;',
240					 w, h + 10, 'Amazon Athena', null, null, null, this.getTagsForStencil(gn, 'athena', dt).join(' ')),
241			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.cloudsearch;',
242					 w, h + 10, 'Amazon CloudSearch', null, null, null, this.getTagsForStencil(gn, 'cloudsearch cloud search', dt).join(' ')),
243			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.emr;',
244					 w, h, 'Amazon EMR', null, null, null, this.getTagsForStencil(gn, 'emr', dt).join(' ')),
245			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.elasticsearch_service;',
246					 w, h + 20, 'Amazon Elasticsearch Service', null, null, null, this.getTagsForStencil(gn, 'elasticsearch elastic search service', dt).join(' ')),
247			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.kinesis;',
248					 w, h + 10, 'Amazon Kinesis', null, null, null, this.getTagsForStencil(gn, 'kinesis', dt).join(' ')),
249			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.kinesis_data_analytics;',
250					 w, h + 20, 'Amazon Kinesis Data Analytics', null, null, null, this.getTagsForStencil(gn, 'kinesis data analytics', dt).join(' ')),
251			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.kinesis_data_firehose;',
252					 w, h + 20, 'Amazon Kinesis Data Firehose', null, null, null, this.getTagsForStencil(gn, 'kinesis data firehose', dt).join(' ')),
253			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.kinesis_data_streams;',
254					 w, h + 20, 'Amazon Kinesis Data Streams', null, null, null, this.getTagsForStencil(gn, 'kinesis data streams', dt).join(' ')),
255			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.kinesis_video_streams;',
256					 w, h + 20, 'Amazon Kinesis Video Streams', null, null, null, this.getTagsForStencil(gn, 'kinesis video streams', dt).join(' ')),
257			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.redshift;',
258					 w, h + 10, 'Amazon Redshift', null, null, null, this.getTagsForStencil(gn, 'redshift', dt).join(' ')),
259			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.quicksight;',
260					 w, h + 10, 'Amazon QuickSight', null, null, null, this.getTagsForStencil(gn, 'quicksight quick sight', dt).join(' ')),
261			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.data_pipeline;',
262					 w, h + 10, 'AWS Data Pipeline', null, null, null, this.getTagsForStencil(gn, 'data pipeline', dt).join(' ')),
263			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.glue;',
264					 w, h, 'AWS Glue', null, null, null, this.getTagsForStencil(gn, 'glue', dt).join(' ')),
265
266			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.search_documents;',
267					 w2, w2, 'Search\ndocuments', null, null, null, this.getTagsForStencil(gn, 'search documents', dt).join(' ')),
268			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.cluster;',
269					 w2, w2, 'Cluster', null, null, null, this.getTagsForStencil(gn, 'cluster', dt).join(' ')),
270			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.hdfs_cluster;',
271					 w2, w2, 'HDFS cluster', null, null, null, this.getTagsForStencil(gn, 'hdfs cluster', dt).join(' ')),
272			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.emr_engine;',
273					 w2, w2, 'EMR engine', null, null, null, this.getTagsForStencil(gn, 'emr engine', dt).join(' ')),
274			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.emr_engine_mapr_m3;',
275					 w2, w2, 'EMR engine\nMapR M3', null, null, null, this.getTagsForStencil(gn, 'emr engine mapr m3', dt).join(' ')),
276			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.emr_engine_mapr_m5;',
277					 w2, w2, 'EMR engine\nMapR M5', null, null, null, this.getTagsForStencil(gn, 'emr engine mapr m5', dt).join(' ')),
278			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.emr_engine_mapr_m7;',
279					 w2, w2, 'EMR engine\nMapR M7', null, null, null, this.getTagsForStencil(gn, 'emr engine mapr m7', dt).join(' ')),
280			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.dense_compute_node;',
281					 w2, w2, 'Dense\ncompute Node', null, null, null, this.getTagsForStencil(gn, 'dense compute node', dt).join(' ')),
282			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.dense_storage_node;',
283					 w2, w2, 'Dense\nstorage Node', null, null, null, this.getTagsForStencil(gn, 'dense storage node', dt).join(' '))
284		]);
285	};
286
287	Sidebar.prototype.addAWS4bApplicationIntegrationPalette = function(w, h, w2, n, n2, gn, sb)
288	{
289		var dt = 'aws amazon web service application integration ';
290
291		this.addPaletteFunctions('aws4bApplication Integration', 'AWS18 / Application Integration', false,
292		[
293			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.step_functions;',
294					 w, h + 10, 'AWS Step Functions', null, null, null, this.getTagsForStencil(gn, 'step functions', dt).join(' ')),
295			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.mq;',
296					 w, h, 'Amazon MQ', null, null, null, this.getTagsForStencil(gn, 'mq', dt).join(' ')),
297			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.sns;',
298					 w, h, 'Amazon SNS', null, null, null, this.getTagsForStencil(gn, 'sns', dt).join(' ')),
299			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.sqs;',
300					 w, h, 'Amazon SQS', null, null, null, this.getTagsForStencil(gn, 'sqs', dt).join(' ')),
301			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.appsync;',
302					 w, h, 'AWS AppSync', null, null, null, this.getTagsForStencil(gn, 'appsync', dt).join(' ')),
303
304			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.email_notification;',
305					 w2, w2, 'Email\nnotification', null, null, null, this.getTagsForStencil(gn, 'email notification', dt).join(' ')),
306			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.http_notification;',
307					 w2, w2, 'HTTP\nnotification', null, null, null, this.getTagsForStencil(gn, 'http notification', dt).join(' ')),
308			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.topic;',
309					 w2, w2, 'Topic', null, null, null, this.getTagsForStencil(gn, 'topic', dt).join(' ')),
310			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.message;',
311					 w2, w2, 'Message', null, null, null, this.getTagsForStencil(gn, 'message', dt).join(' ')),
312			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.queue;',
313					 w2, w2, 'Queue', null, null, null, this.getTagsForStencil(gn, 'queue', dt).join(' '))
314		]);
315	};
316
317	Sidebar.prototype.addAWS4bARVRPalette = function(w, h, w2, n, n2, gn, sb)
318	{
319		var dt = 'aws amazon web service ar vr augmented virtual reality';
320
321		this.addPaletteFunctions('aws4bAR VR', 'AWS18 / AR & VR', false,
322		[
323			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.sumerian;',
324					 w, h + 10, 'Amazon Sumerian', null, null, null, this.getTagsForStencil(gn, 'sumerian', dt).join(' '))
325		]);
326	};
327
328	Sidebar.prototype.addAWS4bCostManagementPalette = function(w, h, w2, n, n2, gn, sb)
329	{
330		var dt = 'aws amazon web service cost management ';
331
332		this.addPaletteFunctions('aws4bCost Management', 'AWS18 / Cost Management', false,
333		[
334			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.cost_explorer;',
335					 w, h + 10, 'AWS Cost Explorer', null, null, null, this.getTagsForStencil(gn, 'cost explorer', dt).join(' ')),
336			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.budgets;',
337					 w, h, 'AWS Budgets', null, null, null, this.getTagsForStencil(gn, 'budgets', dt).join(' ')),
338			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.cost_and_usage_report;',
339					 w, h + 10, 'AWS Cost and Usage Report', null, null, null, this.getTagsForStencil(gn, 'cost usage report', dt).join(' ')),
340			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.reserved_instance_reporting;',
341					 w, h + 20, 'Reserved Instance Reporting', null, null, null, this.getTagsForStencil(gn, 'reserved instance reporting', dt).join(' '))
342		]);
343	};
344
345	Sidebar.prototype.addAWS4bBusinessProductivityPalette = function(w, h, w2, n, n2, gn, sb)
346	{
347		var dt = 'aws amazon web service business productivity ';
348
349		this.addPaletteFunctions('aws4bBusiness Productivity', 'AWS18 / Business Productivity', false,
350		[
351			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.alexa_for_business;',
352					 w, h + 10, 'Alexa for Business', null, null, null, this.getTagsForStencil(gn, 'alexa for business', dt).join(' '))
353		]);
354	};
355
356	Sidebar.prototype.addAWS4bComputePalette = function(w, h, w2, n, n2, gn, sb)
357	{
358		var dt = 'aws amazon web service compute ';
359
360		this.addPaletteFunctions('aws4bCompute', 'AWS18 / Compute', false,
361		[
362			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.ec2;',
363					 w, h, 'Amazon EC2', null, null, null, this.getTagsForStencil(gn, 'ec2', dt).join(' ')),
364			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.ecr;',
365					 w, h, 'Amazon ECR', null, null, null, this.getTagsForStencil(gn, 'ecr', dt).join(' ')),
366			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.ecs;',
367					 w, h, 'Amazon ECS', null, null, null, this.getTagsForStencil(gn, 'ecs', dt).join(' ')),
368			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.eks;',
369					 w, h, 'Amazon EKS', null, null, null, this.getTagsForStencil(gn, 'eks', dt).join(' ')),
370			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.lightsail;',
371					 w, h + 10, 'Amazon Lightsail', null, null, null, this.getTagsForStencil(gn, 'lightsail', dt).join(' ')),
372			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.batch;',
373					 w, h, 'AWS Batch', null, null, null, this.getTagsForStencil(gn, 'batch', dt).join(' ')),
374			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.elastic_beanstalk;',
375					 w, h + 10, 'AWS Elastic Beanstalk', null, null, null, this.getTagsForStencil(gn, 'elastic beanstalk', dt).join(' ')),
376			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.fargate;',
377					 w, h, 'AWS Fargate', null, null, null, this.getTagsForStencil(gn, 'fargate', dt).join(' ')),
378			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.lambda;',
379					 w, h, 'AWS Lambda', null, null, null, this.getTagsForStencil(gn, 'lambda', dt).join(' ')),
380			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.serverless_application_repository;',
381					 w, h + 35, 'AWS Serverless Application Repository', null, null, null, this.getTagsForStencil(gn, 'serverless application repository', dt).join(' ')),
382			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.elastic_load_balancing;',
383					 w, h + 10, 'Elastic Load Balancing', null, null, null, this.getTagsForStencil(gn, 'elastic load balancing', dt).join(' ')),
384			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.application_load_balancer;',
385					 w, h + 10, 'Application Load Balancer', null, null, null, this.getTagsForStencil(gn, 'application load balancer', dt).join(' ')),
386			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.classic_load_balancer;',
387					 w, h + 10, 'Classic Load Balancer', null, null, null, this.getTagsForStencil(gn, 'classic load balancer', dt).join(' ')),
388			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.network_load_balancer;',
389					 w, h + 10, 'Network Load Balancer', null, null, null, this.getTagsForStencil(gn, 'network load balancer', dt).join(' ')),
390			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.vmware_cloud_on_aws;',
391					 w, h + 10, 'VMware Cloud on AWS', null, null, null, this.getTagsForStencil(gn, 'vmware cloud on', dt).join(' ')),
392
393			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.ami;',
394					 w2, w2, 'AMI', null, null, null, this.getTagsForStencil(gn, 'ami', dt).join(' ')),
395			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.auto_scaling;',
396					 w2, w2, 'Auto Scaling', null, null, null, this.getTagsForStencil(gn, 'auto scaling', dt).join(' ')),
397			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.db_on_instance;',
398					 w2, w2, 'DB on\nInstance', null, null, null, this.getTagsForStencil(gn, 'db on instance database', dt).join(' ')),
399			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.elastic_ip_address;',
400					 w2, w2, 'Elastic IP\nAddress', null, null, null, this.getTagsForStencil(gn, 'elastic ip address internet protocol', dt).join(' ')),
401			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.instance_with_cloudwatch;',
402					 w2, w2, 'Instance with\nCloudWatch', null, null, null, this.getTagsForStencil(gn, 'instance with cloudwatch', dt).join(' ')),
403			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.instance;',
404					 w2, w2, 'Instance', null, null, null, this.getTagsForStencil(gn, 'instance', dt).join(' ')),
405			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.instances;',
406					 w2, w2, 'Instances', null, null, null, this.getTagsForStencil(gn, 'instances', dt).join(' ')),
407			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.optimized_instance;',
408					 w2, w2, 'Optimized\nInstance', null, null, null, this.getTagsForStencil(gn, 'optimized_instance', dt).join(' ')),
409			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.rescue;',
410					 w2, w2, 'Rescue', null, null, null, this.getTagsForStencil(gn, 'rescue', dt).join(' ')),
411			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.spot_instance;',
412					 w2, w2, 'Spot Instance', null, null, null, this.getTagsForStencil(gn, 'spot instance', dt).join(' ')),
413			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.x1_instance;',
414					 w2, w2, 'X1 Instance', null, null, null, this.getTagsForStencil(gn, 'x1 instance', dt).join(' ')),
415			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.registry;',
416					 w2, w2, 'Registry', null, null, null, this.getTagsForStencil(gn, 'registry', dt).join(' ')),
417			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.container_1;',
418					 w2, w2, 'Container 1', null, null, null, this.getTagsForStencil(gn, 'container', dt).join(' ')),
419			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.container_2;',
420					 w2, w2, 'Container 2', null, null, null, this.getTagsForStencil(gn, 'container', dt).join(' ')),
421			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.container_3;',
422					 w2, w2, 'Container 3', null, null, null, this.getTagsForStencil(gn, 'container', dt).join(' ')),
423			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.application;',
424					 w2, w2, 'Application', null, null, null, this.getTagsForStencil(gn, 'application', dt).join(' ')),
425			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.deployment;',
426					 w2, w2, 'Deployment', null, null, null, this.getTagsForStencil(gn, 'deployment', dt).join(' ')),
427			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.lambda_function;',
428					 w2, w2, 'Lambda\nFunction', null, null, null, this.getTagsForStencil(gn, 'lambda function', dt).join(' '))
429		]);
430	};
431
432	Sidebar.prototype.addAWS4bCustomerEngagementPalette = function(w, h, w2, n, n2, gn, sb)
433	{
434		var dt = 'aws amazon web service customer engagement ';
435
436		this.addPaletteFunctions('aws4bCustomer Engagement', 'AWS18 / Customer Engagement', false,
437		[
438			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.connect;',
439					 w, h + 10, 'Amazon Connect', null, null, null, this.getTagsForStencil(gn, 'connect', dt).join(' ')),
440			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.pinpoint;',
441					 w, h + 10, 'Amazon Pinpoint', null, null, null, this.getTagsForStencil(gn, 'pinpoint', dt).join(' ')),
442			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.simple_email_service;',
443					 w, h + 10, 'Amazon Simple Email Service', null, null, null, this.getTagsForStencil(gn, 'simple email service', dt).join(' ')),
444
445			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.email;',
446					 w2, w2, 'Email', null, null, null, this.getTagsForStencil(gn, 'email', dt).join(' '))
447		]);
448	};
449
450	Sidebar.prototype.addAWS4bDatabasePalette = function(w, h, w2, n, n2, gn, sb)
451	{
452		var dt = 'aws amazon web service db database ';
453
454		this.addPaletteFunctions('aws4bDatabase', 'AWS18 / Database', false,
455		[
456			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.aurora;',
457					 w, h + 10, 'Amazon\nAurora', null, null, null, this.getTagsForStencil(gn, 'aurora', dt).join(' ')),
458			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.dynamodb;',
459					 w, h + 10, 'Amazon DynamoDB', null, null, null, this.getTagsForStencil(gn, 'dynamodb', dt).join(' ')),
460			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.elasticache;',
461					 w, h + 10, 'Amazon ElastiCache', null, null, null, this.getTagsForStencil(gn, 'elasticache', dt).join(' ')),
462			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.elasticache_for_memcached;',
463					 w, h + 20, 'Amazon ElastiCache for Memcached', null, null, null, this.getTagsForStencil(gn, 'elasticache for memcached', dt).join(' ')),
464			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.elasticache_for_redis;',
465					 w, h + 20, 'Amazon ElastiCache for Redis', null, null, null, this.getTagsForStencil(gn, 'elasticache for redis', dt).join(' ')),
466			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.neptune;',
467					 w, h + 10, 'Amazon Neptune', null, null, null, this.getTagsForStencil(gn, 'neptune', dt).join(' ')),
468			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.rds;',
469					 w, h, 'Amazon RDS', null, null, null, this.getTagsForStencil(gn, 'rds', dt).join(' ')),
470			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.redshift;',
471					 w, h + 10, 'Amazon Redshift', null, null, null, this.getTagsForStencil(gn, 'redshift', dt).join(' ')),
472			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.database_migration_service;',
473					 w, h + 20, 'AWS Database Migration Service', null, null, null, this.getTagsForStencil(gn, 'db database migration service', dt).join(' ')),
474
475			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.attribute;',
476					 w2, w2, 'Attribute', null, null, null, this.getTagsForStencil(gn, 'attribute', dt).join(' ')),
477			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.attributes;',
478					 w2, w2, 'Attributes', null, null, null, this.getTagsForStencil(gn, 'attributes', dt).join(' ')),
479			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.item;',
480					 w2, w2, 'Item', null, null, null, this.getTagsForStencil(gn, 'item', dt).join(' ')),
481			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.items;',
482					 w2, w2, 'Items', null, null, null, this.getTagsForStencil(gn, 'items', dt).join(' ')),
483			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.global_secondary_index;',
484					 w2, w2, 'Global\nsecondary\nindex', null, null, null, this.getTagsForStencil(gn, 'global secondary index', dt).join(' ')),
485			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.table;',
486					 w2, w2, 'Table', null, null, null, this.getTagsForStencil(gn, 'table', dt).join(' ')),
487			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.cache_node;',
488					 w2, w2, 'Cache node', null, null, null, this.getTagsForStencil(gn, 'cache node', dt).join(' ')),
489			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.db_instance;',
490					 w2, w2, 'DB instance', null, null, null, this.getTagsForStencil(gn, 'db instance', dt).join(' ')),
491			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.db_instance_standby;',
492					 w2, w2, 'DB instance\nstandby', null, null, null, this.getTagsForStencil(gn, 'db instance standby', dt).join(' ')),
493			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.db_instance_read_replica;',
494					 w2, w2, 'DB instance\nread replica', null, null, null, this.getTagsForStencil(gn, 'db instance read replica', dt).join(' ')),
495			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.piop;',
496					 w2, w2, 'PIOP', null, null, null, this.getTagsForStencil(gn, 'piop', dt).join(' ')),
497			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.ms_sql_instance;',
498					 w2, w2, 'MS SQL\ninstance', null, null, null, this.getTagsForStencil(gn, 'ms sql instance', dt).join(' ')),
499			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.ms_sql_instance_alternate;',
500					 w2, w2, 'MS SQL\ninstance\nalternate', null, null, null, this.getTagsForStencil(gn, 'ms sql instance', dt).join(' ')),
501			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.mysql_db_instance;',
502					 w2, w2, 'MySQL DB \ninstance', null, null, null, this.getTagsForStencil(gn, 'mysql db database instance', dt).join(' ')),
503			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.mysql_db_instance_alternate;',
504					 w2, w2, 'MySQL DB \ninstance\nalternate', null, null, null, this.getTagsForStencil(gn, 'mysql db database instance alternate', dt).join(' ')),
505			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.oracle_db_instance;',
506					 w2, w2, 'Oracle DB \ninstance', null, null, null, this.getTagsForStencil(gn, 'oracle db database instance', dt).join(' ')),
507			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.oracle_db_instance_alternate;',
508					 w2, w2, 'Oracle DB \ninstance\nalternate', null, null, null, this.getTagsForStencil(gn, 'oracle db database instance alternate', dt).join(' ')),
509			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.sql_primary;',
510					 w2, w2, 'SQL primary', null, null, null, this.getTagsForStencil(gn, 'sql primary', dt).join(' ')),
511			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.sql_replica;',
512					 w2, w2, 'SQL replica', null, null, null, this.getTagsForStencil(gn, 'sql replica', dt).join(' ')),
513			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.postgresql_instance;',
514					 w2, w2, 'PostgreSQL\ninstance', null, null, null, this.getTagsForStencil(gn, 'postresql instance', dt).join(' ')),
515			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.dense_compute_node;',
516					 w2, w2, 'Dense\ncompute node', null, null, null, this.getTagsForStencil(gn, 'dense compute node', dt).join(' ')),
517			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.dense_storage_node;',
518					 w2, w2, 'Dense\nstorage node', null, null, null, this.getTagsForStencil(gn, 'dense storage node', dt).join(' ')),
519			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.database_migration_workflow_job;',
520					 w2, w2, 'Database\nmigration\nworkflow/job', null, null, null, this.getTagsForStencil(gn, 'database migration workflow job', dt).join(' '))
521		]);
522	};
523
524	Sidebar.prototype.addAWS4bDesktopAppStreamingPalette = function(w, h, w2, n, n2, gn, sb)
525	{
526		var dt = 'aws amazon web service db database ';
527
528		this.addPaletteFunctions('aws4bDesktop App Streaming', 'AWS18 / Desktop & App Streaming', false,
529		[
530			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.appstream_20;',
531					 w, h + 10, 'Amazon AppStream 2.0', null, null, null, this.getTagsForStencil(gn, 'appstream', dt).join(' '))
532		]);
533	};
534
535	Sidebar.prototype.addAWS4bDeveloperToolsPalette = function(w, h, w2, n, n2, gn, sb)
536	{
537		var dt = 'aws amazon web service dev developer tools ';
538
539		this.addPaletteFunctions('aws4bDeveloper Tools', 'AWS18 / Developer Tools', false,
540		[
541			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.codestar;',
542					 w, h, 'AWS CodeStar', null, null, null, this.getTagsForStencil(gn, 'codestar', dt).join(' ')),
543			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.cloud9;',
544					 w, h, 'AWS Cloud9', null, null, null, this.getTagsForStencil(gn, 'cloud9', dt).join(' ')),
545			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.codebuild;',
546					 w, h + 10, 'AWS CodeBuild', null, null, null, this.getTagsForStencil(gn, 'codebuild', dt).join(' ')),
547			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.codecommit;',
548					 w, h + 10, 'AWS CodeCommit', null, null, null, this.getTagsForStencil(gn, 'codecommit', dt).join(' ')),
549			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.codedeploy;',
550					 w, h + 10, 'AWS CodeDeploy', null, null, null, this.getTagsForStencil(gn, 'codedeploy', dt).join(' ')),
551			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.codepipeline;',
552					 w, h + 10, 'AWS CodePipeline', null, null, null, this.getTagsForStencil(gn, 'codepipeline', dt).join(' ')),
553			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.command_line_interface;',
554					 w, h + 20, 'AWS\nCommand Line Interface', null, null, null, this.getTagsForStencil(gn, 'command line interface', dt).join(' ')),
555			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.tools_and_sdks;',
556					 w, h + 10, 'AWS Tools and SDKs', null, null, null, this.getTagsForStencil(gn, 'tools and sdks software development kit', dt).join(' ')),
557			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.xray;',
558					 w, h, 'AWS X-Ray', null, null, null, this.getTagsForStencil(gn, 'ray xray', dt).join(' '))
559		]);
560	};
561
562	Sidebar.prototype.addAWS4bGameDevelopmentPalette = function(w, h, w2, n, n2, gn, sb)
563	{
564		var dt = 'aws amazon web service game development ';
565
566		this.addPaletteFunctions('aws4bGame Development', 'AWS18 / Game Development', false,
567		[
568			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.gamelift;',
569					 w, h + 10, 'Amazon GameLift', null, null, null, this.getTagsForStencil(gn, 'gamelift', dt).join(' '))
570		]);
571	};
572
573	Sidebar.prototype.addAWS4bInternetOfThingsPalette = function(w, h, w2, n, n2, gn, sb)
574	{
575		var dt = 'aws amazon web service internet of things iot ';
576
577		this.addPaletteFunctions('aws4bInternet of Things', 'AWS18 / Internet of Things', false,
578		[
579			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.iot_core;',
580					 w, h + 10, 'Amazon IoT Core', null, null, null, this.getTagsForStencil(gn, 'core', dt).join(' ')),
581			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.freertos;',
582					 w, h + 10, 'Amazon FreeRTOS', null, null, null, this.getTagsForStencil(gn, 'freertos free rtos', dt).join(' ')),
583			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.greengrass;',
584					 w, h + 10, 'AWS Greengrass', null, null, null, this.getTagsForStencil(gn, 'greengrass', dt).join(' ')),
585			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.iot_1click;',
586					 w, h + 10, 'AWS IoT\n1-Click', null, null, null, this.getTagsForStencil(gn, '1click one click', dt).join(' ')),
587			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.iot_analytics;',
588					 w, h + 10, 'AWS IoT Analytics', null, null, null, this.getTagsForStencil(gn, 'analytics', dt).join(' ')),
589			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.iot_button;',
590					 w, h + 10, 'AWS IoT Button', null, null, null, this.getTagsForStencil(gn, 'button', dt).join(' ')),
591			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.iot_device_defender;',
592					 w, h + 20, 'AWS IoT Device Defender', null, null, null, this.getTagsForStencil(gn, 'device defender', dt).join(' ')),
593			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.iot_device_management;',
594					 w, h + 20, 'AWS IoT Device Management', null, null, null, this.getTagsForStencil(gn, 'device management', dt).join(' '))
595		]);
596	};
597
598	Sidebar.prototype.addAWS4bIOTThingsPalette = function(w, h, w2, n, n2, gn, sb)
599	{
600		var dt = 'aws amazon web service internet of things iot ';
601
602		this.addPaletteFunctions('aws4bIoT Things', 'AWS18 / IoT Things', false,
603		[
604			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.bank;',
605					 w2, w2, 'Bank', null, null, null, this.getTagsForStencil(gn, 'bank', dt).join(' ')),
606			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.bycicle;',
607					 w2, w2, 'Bycicle', null, null, null, this.getTagsForStencil(gn, 'bycicle', dt).join(' ')),
608			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.camera;',
609					 w2, w2, 'Camera', null, null, null, this.getTagsForStencil(gn, 'camera', dt).join(' ')),
610			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.car;',
611					 w2, w2, 'Car', null, null, null, this.getTagsForStencil(gn, 'car', dt).join(' ')),
612			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.cart;',
613					 w2, w2, 'Cart', null, null, null, this.getTagsForStencil(gn, 'cart', dt).join(' ')),
614			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.coffee_pot;',
615					 w2, w2, 'Coffee Pot', null, null, null, this.getTagsForStencil(gn, 'coffee pot', dt).join(' ')),
616			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.door_lock;',
617					 w2, w2, 'Door Lock', null, null, null, this.getTagsForStencil(gn, 'door lock', dt).join(' ')),
618			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.factory;',
619					 w2, w2, 'Factory', null, null, null, this.getTagsForStencil(gn, 'factory', dt).join(' ')),
620			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.generic;',
621					 w2, w2, 'Generic', null, null, null, this.getTagsForStencil(gn, 'generic', dt).join(' ')),
622			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.house;',
623					 w2, w2, 'House', null, null, null, this.getTagsForStencil(gn, 'house', dt).join(' ')),
624			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.lightbulb;',
625					 w2, w2, 'Lightbulb', null, null, null, this.getTagsForStencil(gn, 'lightbulb', dt).join(' ')),
626			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.medical_emergency;',
627					 w2, w2, 'Medical\nEmergency', null, null, null, this.getTagsForStencil(gn, 'medical emergency', dt).join(' ')),
628			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.police_emergency;',
629					 w2, w2, 'Police\nEmergency', null, null, null, this.getTagsForStencil(gn, 'police emergency', dt).join(' ')),
630			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.thermostat;',
631					 w2, w2, 'Thermostat', null, null, null, this.getTagsForStencil(gn, 'thermostat', dt).join(' ')),
632			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.travel;',
633					 w2, w2, 'Travel', null, null, null, this.getTagsForStencil(gn, 'travel', dt).join(' ')),
634			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.utility;',
635					 w2, w2, 'Utility', null, null, null, this.getTagsForStencil(gn, 'utility', dt).join(' ')),
636			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.windfarm;',
637					 w2, w2, 'Windfarm', null, null, null, this.getTagsForStencil(gn, 'windfarm', dt).join(' '))
638		]);
639	};
640
641	Sidebar.prototype.addAWS4bIOTResourcesPalette = function(w, h, w2, n, n2, gn, sb)
642	{
643		var dt = 'aws amazon web service internet of things iot resources ';
644
645		this.addPaletteFunctions('aws4bIoT Resources', 'AWS18 / IoT Resources', false,
646		[
647			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.action;',
648					 w2, w2, 'Action', null, null, null, this.getTagsForStencil(gn, 'action', dt).join(' ')),
649			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.actuator;',
650					 w2, w2, 'Actuator', null, null, null, this.getTagsForStencil(gn, 'actuator', dt).join(' ')),
651			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.alexa_enabled_device;',
652					 w2, w2, 'Alexa enabled\ndevice', null, null, null, this.getTagsForStencil(gn, 'alexa enabled device', dt).join(' ')),
653			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.alexa_skill;',
654					 w2, w2, 'Alexa skill', null, null, null, this.getTagsForStencil(gn, 'alexa skill', dt).join(' ')),
655			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.alexa_smart_home_skill;',
656					 w2, w2, 'Alexa smart\nhome skill', null, null, null, this.getTagsForStencil(gn, 'alexa smart home skill', dt).join(' ')),
657			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.alexa_voice_service;',
658					 w2, w2, 'Alexa voice\nservice', null, null, null, this.getTagsForStencil(gn, 'alexa voice service', dt).join(' ')),
659			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.certificate_manager;',
660					 w2, w2, 'Certificate\nmanager', null, null, null, this.getTagsForStencil(gn, 'certificate manager', dt).join(' ')),
661			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.desired_state;',
662					 w2, w2, 'Desired state', null, null, null, this.getTagsForStencil(gn, 'desired state', dt).join(' ')),
663			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.echo;',
664					 w2, w2, 'Echo', null, null, null, this.getTagsForStencil(gn, 'echo', dt).join(' ')),
665			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.firetv_stick;',
666					 w2, w2, 'FireTV stick', null, null, null, this.getTagsForStencil(gn, 'firetv fire tv stick', dt).join(' ')),
667			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.firetv;',
668					 w2, w2, 'FireTV', null, null, null, this.getTagsForStencil(gn, 'firetv fire tv', dt).join(' ')),
669			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.hardware_board;',
670					 w2, w2, 'Hardware\nboard', null, null, null, this.getTagsForStencil(gn, 'hardware board', dt).join(' ')),
671			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.http2_protocol;',
672					 w2, w2, 'HTTP/2\nprotocol', null, null, null, this.getTagsForStencil(gn, 'http2 protocol', dt).join(' ')),
673			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.http_protocol;',
674					 w2, w2, 'HTTP\nprotocol', null, null, null, this.getTagsForStencil(gn, 'http protocol', dt).join(' ')),
675			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.lambda_function;',
676					 w2, w2, 'Lambda Function', null, null, null, this.getTagsForStencil(gn, 'lambda function', dt).join(' ')),
677			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.mqtt_protocol;',
678					 w2, w2, 'MQTT\nprotocol', null, null, null, this.getTagsForStencil(gn, 'mqtt protocol', dt).join(' ')),
679			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.policy;',
680					 w2, w2, 'Policy', null, null, null, this.getTagsForStencil(gn, 'policy', dt).join(' ')),
681			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.reported_state;',
682					 w2, w2, 'Reported\nstate', null, null, null, this.getTagsForStencil(gn, 'reported state', dt).join(' ')),
683			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.rule;',
684					 w2, w2, 'Rule', null, null, null, this.getTagsForStencil(gn, 'rule', dt).join(' ')),
685			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.sensor;',
686					 w2, w2, 'Sensor', null, null, null, this.getTagsForStencil(gn, 'sensor', dt).join(' ')),
687			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.servo;',
688					 w2, w2, 'Servo', null, null, null, this.getTagsForStencil(gn, 'servo', dt).join(' ')),
689			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.shadow;',
690					 w2, w2, 'Shadow', null, null, null, this.getTagsForStencil(gn, 'shadow', dt).join(' ')),
691			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.simulator;',
692					 w2, w2, 'Simulator', null, null, null, this.getTagsForStencil(gn, 'simulator', dt).join(' ')),
693			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.topic_2;',
694					 w2, w2, 'Topic', null, null, null, this.getTagsForStencil(gn, 'topic', dt).join(' '))
695		]);
696	};
697
698	Sidebar.prototype.addAWS4bMachineLearningPalette = function(w, h, w2, n, n2, gn, sb)
699	{
700		var dt = 'aws amazon web service machine learning ';
701
702		this.addPaletteFunctions('aws4bMachine Learning', 'AWS18 / Machine Learning', false,
703		[
704			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.sagemaker;',
705					 w, h + 10, 'Amazon SageMaker', null, null, null, this.getTagsForStencil(gn, 'sagemaker', dt).join(' ')),
706			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.comprehend;',
707					 w, h + 10, 'Amazon Comprehend', null, null, null, this.getTagsForStencil(gn, 'comprehend', dt).join(' ')),
708			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.lex;',
709					 w, h, 'Amazon Lex', null, null, null, this.getTagsForStencil(gn, 'lex', dt).join(' ')),
710			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.polly;',
711					 w, h, 'Amazon Polly', null, null, null, this.getTagsForStencil(gn, 'polly', dt).join(' ')),
712			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.rekognition;',
713					 w, h + 10, 'Amazon Rekognition', null, null, null, this.getTagsForStencil(gn, 'rekognition', dt).join(' ')),
714			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.rekognition_image;',
715					 w, h + 20, 'Amazon Rekognition Image', null, null, null, this.getTagsForStencil(gn, 'rekognition image', dt).join(' ')),
716			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.rekognition_video;',
717					 w, h + 20, 'Amazon Rekognition Video', null, null, null, this.getTagsForStencil(gn, 'rekognition video', dt).join(' ')),
718			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.translate;',
719					 w, h + 10, 'Amazon Translate', null, null, null, this.getTagsForStencil(gn, 'translate', dt).join(' ')),
720			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.transcribe;',
721					 w, h + 10, 'Amazon Transcribe', null, null, null, this.getTagsForStencil(gn, 'transcribe', dt).join(' ')),
722			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.deep_learning_amis;',
723					 w, h + 10, 'AWS Deep Learning AMIs', null, null, null, this.getTagsForStencil(gn, 'deep learning amis', dt).join(' ')),
724			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.deeplens;',
725					 w, h, 'AWS DeepLens', null, null, null, this.getTagsForStencil(gn, 'deeplens', dt).join(' '))
726		]);
727	};
728
729	Sidebar.prototype.addAWS4bManagementToolsPalette = function(w, h, w2, n, n2, gn, sb)
730	{
731		var dt = 'aws amazon web service management tools ';
732
733		this.addPaletteFunctions('aws4bManagement Tools', 'AWS18 / Management Tools', false,
734		[
735			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.cloudwatch;',
736					 w, h + 10, 'Amazon CloudWatch', null, null, null, this.getTagsForStencil(gn, 'cloudwatch', dt).join(' ')),
737			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.autoscaling;',
738					 w, h + 10, 'AWS Auto Scaling', null, null, null, this.getTagsForStencil(gn, 'auto scaling', dt).join(' ')),
739			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.cloudformation;',
740					 w, h + 10, 'AWS CloudFormation', null, null, null, this.getTagsForStencil(gn, 'cloudformation', dt).join(' ')),
741			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.cloudtrail;',
742					 w, h + 10, 'AWS\nCloudTrail', null, null, null, this.getTagsForStencil(gn, 'cloudtrail', dt).join(' ')),
743			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.command_line_interface;',
744					 w, h + 20, 'AWS\nCommand Line Interface', null, null, null, this.getTagsForStencil(gn, 'command line interface', dt).join(' ')),
745			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.config;',
746					 w, h, 'AWS Config', null, null, null, this.getTagsForStencil(gn, 'config', dt).join(' ')),
747			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.management_console;',
748					 w, h + 20, 'AWS Management Console', null, null, null, this.getTagsForStencil(gn, 'management console', dt).join(' ')),
749			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.managed_services;',
750					 w, h + 10, 'AWS Managed Services', null, null, null, this.getTagsForStencil(gn, 'managed services', dt).join(' ')),
751			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.opsworks;',
752					 w, h + 10, 'AWS OpsWorks', null, null, null, this.getTagsForStencil(gn, 'opsworks', dt).join(' ')),
753			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.service_catalog;',
754					 w, h + 10, 'AWS Service Catalog', null, null, null, this.getTagsForStencil(gn, 'service catalog', dt).join(' ')),
755			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.personal_health_dashboard;',
756					 w, h + 20, 'AWS Personal Health Dashboard', null, null, null, this.getTagsForStencil(gn, 'personal health dashboard', dt).join(' ')),
757			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.systems_manager;',
758					 w, h + 10, 'AWS Systems Manager', null, null, null, this.getTagsForStencil(gn, 'systems manager', dt).join(' ')),
759			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.trusted_advisor;',
760					 w, h + 10, 'AWS Trusted Advisor', null, null, null, this.getTagsForStencil(gn, 'trusted advisor', dt).join(' ')),
761			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.marketplace;',
762					 w, h + 10, 'AWS Marketplace', null, null, null, this.getTagsForStencil(gn, 'marketplace', dt).join(' ')),
763
764			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.alarm;',
765					 w2, w2, 'Alarm', null, null, null, this.getTagsForStencil(gn, 'alarm', dt).join(' ')),
766			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.event_event_based;',
767					 w2, w2, 'Event (event-\nbased)', null, null, null, this.getTagsForStencil(gn, 'event event based', dt).join(' ')),
768			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.event_time_based;',
769					 w2, w2, 'Event (time-\nbased)', null, null, null, this.getTagsForStencil(gn, 'event time based', dt).join(' ')),
770			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.rule_2;',
771					 w2, w2, 'Rule', null, null, null, this.getTagsForStencil(gn, 'rule', dt).join(' ')),
772			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.change_set;',
773					 w2, w2, 'Change set', null, null, null, this.getTagsForStencil(gn, 'change set', dt).join(' ')),
774			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.stack;',
775					 w2, w2, 'Stack', null, null, null, this.getTagsForStencil(gn, 'stack', dt).join(' ')),
776			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.template;',
777					 w2, w2, 'Template', null, null, null, this.getTagsForStencil(gn, 'template', dt).join(' ')),
778			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.apps;',
779					 w2, w2, 'Apps', null, null, null, this.getTagsForStencil(gn, 'apps', dt).join(' ')),
780			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.deployments;',
781					 w2, w2, 'Deployments', null, null, null, this.getTagsForStencil(gn, 'deployments', dt).join(' ')),
782			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.instances_2;',
783					 w2, w2, 'Instances', null, null, null, this.getTagsForStencil(gn, 'instances', dt).join(' ')),
784			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.layers;',
785					 w2, w2, 'Layers', null, null, null, this.getTagsForStencil(gn, 'layers', dt).join(' ')),
786			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.monitoring;',
787					 w2, w2, 'Monitoring', null, null, null, this.getTagsForStencil(gn, 'monitoring', dt).join(' ')),
788			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.permissions;',
789					 w2, w2, 'Permissions', null, null, null, this.getTagsForStencil(gn, 'permissions', dt).join(' ')),
790			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.resources;',
791					 w2, w2, 'Resources', null, null, null, this.getTagsForStencil(gn, 'resources', dt).join(' ')),
792			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.stack2;',
793					 w2, w2, 'Stack2', null, null, null, this.getTagsForStencil(gn, 'stack stack2', dt).join(' ')),
794			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.automation;',
795					 w2, w2, 'Automation', null, null, null, this.getTagsForStencil(gn, 'automation', dt).join(' ')),
796			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.documents;',
797					 w2, w2, 'Documents', null, null, null, this.getTagsForStencil(gn, 'documents', dt).join(' ')),
798			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.inventory;',
799					 w2, w2, 'Inventory', null, null, null, this.getTagsForStencil(gn, 'inventory', dt).join(' ')),
800			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.maintenance_windows;',
801					 w2, w2, 'Maintenance\nwindows', null, null, null, this.getTagsForStencil(gn, 'maintenance windows', dt).join(' ')),
802			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.parameter_store;',
803					 w2, w2, 'Parameter\nStore', null, null, null, this.getTagsForStencil(gn, 'parameter store', dt).join(' ')),
804			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.patch_manager;',
805					 w2, w2, 'Patch\nmanager', null, null, null, this.getTagsForStencil(gn, 'patch manager', dt).join(' ')),
806			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.patch_manager;',
807					 w2, w2, 'Patch\nmanager', null, null, null, this.getTagsForStencil(gn, 'patch manager', dt).join(' ')),
808			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.run_command;',
809					 w2, w2, 'Run\ncommand', null, null, null, this.getTagsForStencil(gn, 'run command', dt).join(' ')),
810			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.state_manager;',
811					 w2, w2, 'State\nmanager', null, null, null, this.getTagsForStencil(gn, 'state manager', dt).join(' ')),
812			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.checklist_cost;',
813					 w2, w2, 'Checklist cost', null, null, null, this.getTagsForStencil(gn, 'checklist cost', dt).join(' ')),
814			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.checklist_fault_tolerant;',
815					 w2, w2, 'Checklist fault\ntolerant', null, null, null, this.getTagsForStencil(gn, 'checklist fault tolerant', dt).join(' ')),
816			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.checklist_performance;',
817					 w2, w2, 'Checklist\nperformance', null, null, null, this.getTagsForStencil(gn, 'checklist performance', dt).join(' ')),
818			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.checklist_security;',
819					 w2, w2, 'Checklist\nsecurity', null, null, null, this.getTagsForStencil(gn, 'checklist security', dt).join(' ')),
820			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.checklist;',
821					 w2, w2, 'Checklist', null, null, null, this.getTagsForStencil(gn, 'checklist', dt).join(' '))
822		]);
823	};
824
825	Sidebar.prototype.addAWS4bMediaServicesPalette = function(w, h, w2, n, n2, gn, sb)
826	{
827		var dt = 'aws amazon web service media services ';
828
829		this.addPaletteFunctions('aws4bMedia Services', 'AWS18 / Media Services', false,
830		[
831			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.elastic_transcoder;',
832					 w, h + 10, 'Amazon Elastic Transcoder', null, null, null, this.getTagsForStencil(gn, 'elastic transcoder', dt).join(' ')),
833			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.kinesis_video_streams;',
834					 w, h + 20, 'Amazon Kinesis Video Streams', null, null, null, this.getTagsForStencil(gn, 'kinesis video streams', dt).join(' ')),
835			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.elemental_mediaconvert;',
836					 w, h + 10, 'AWS Elemental MediaConvert', null, null, null, this.getTagsForStencil(gn, 'elemental mediaconvert', dt).join(' ')),
837			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.elemental_medialive;',
838					 w, h + 10, 'AWS Elemental MediaLive', null, null, null, this.getTagsForStencil(gn, 'elemental medialive', dt).join(' ')),
839			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.elemental_mediapackage;',
840					 w, h + 10, 'AWS Elemental MediaPackage', null, null, null, this.getTagsForStencil(gn, 'elemental mediapackage', dt).join(' ')),
841			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.elemental_mediastore;',
842					 w, h + 10, 'AWS Elemental MediaStore', null, null, null, this.getTagsForStencil(gn, 'elemental mediastore', dt).join(' ')),
843			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.elemental_mediatailor;',
844					 w, h + 10, 'AWS Elemental MediaTailor', null, null, null, this.getTagsForStencil(gn, 'elemental mediatailor', dt).join(' '))
845		]);
846	};
847
848	Sidebar.prototype.addAWS4bMigrationPalette = function(w, h, w2, n, n2, gn, sb)
849	{
850		var dt = 'aws amazon web service migration ';
851
852		this.addPaletteFunctions('aws4bMigration', 'AWS18 / Migration', false,
853		[
854			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.migration_hub;',
855					 w, h + 10, 'AWS Migration Hub', null, null, null, this.getTagsForStencil(gn, 'migration hub', dt).join(' ')),
856			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.application_discovery_service;',
857					 w, h + 35, 'AWS Application Discovery Service', null, null, null, this.getTagsForStencil(gn, 'application discovery service', dt).join(' ')),
858			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.database_migration_service;',
859					 w, h + 20, 'AWS Database Migration Service', null, null, null, this.getTagsForStencil(gn, 'db database migration service', dt).join(' ')),
860			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.server_migration_service;',
861					 w, h + 20, 'AWS Server Migration Service', null, null, null, this.getTagsForStencil(gn, 'server migration service', dt).join(' ')),
862			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.snowball;',
863					 w, h, 'AWS Snowball', null, null, null, this.getTagsForStencil(gn, 'snowball', dt).join(' ')),
864			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.snowball_edge;',
865					 w, h + 10, 'AWS Snowball Edge', null, null, null, this.getTagsForStencil(gn, 'snowball edge', dt).join(' ')),
866			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.snowmobile;',
867					 w, h + 10, 'AWS Snowmobile', null, null, null, this.getTagsForStencil(gn, 'snowmobile', dt).join(' '))
868		]);
869	};
870
871	Sidebar.prototype.addAWS4bMobileServicesPalette = function(w, h, w2, n, n2, gn, sb)
872	{
873		var dt = 'aws amazon web service mobile services ';
874
875		this.addPaletteFunctions('aws4bMobile Services', 'AWS18 / Mobile Services', false,
876		[
877			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.appsync;',
878					 w, h, 'AWS AppSync', null, null, null, this.getTagsForStencil(gn, 'appsync', dt).join(' ')),
879			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.api_gateway;',
880					 w, h + 10, 'Amazon API Gateway', null, null, null, this.getTagsForStencil(gn, 'api gateway application programming interface', dt).join(' ')),
881			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.device_farm;',
882					 w, h + 10, 'AWS Device Farm', null, null, null, this.getTagsForStencil(gn, 'device farm', dt).join(' ')),
883			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.mobile_hub;',
884					 w, h + 10, 'AWS Mobile Hub', null, null, null, this.getTagsForStencil(gn, 'mobile hub', dt).join(' ')),
885			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.pinpoint;',
886					 w, h + 10, 'Amazon Pinpoint', null, null, null, this.getTagsForStencil(gn, 'pinpoint', dt).join(' '))
887		]);
888	};
889
890	Sidebar.prototype.addAWS4bNetworkContentDeliveryPalette = function(w, h, w2, n, n2, gn, sb)
891	{
892		var dt = 'aws amazon web service netowrk content delivery ';
893
894		this.addPaletteFunctions('aws4bNetwork Content Delivery', 'AWS18 / Network & Content Delivery', false,
895		[
896			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.vpc;',
897					 w, h, 'Amazon VPC', null, null, null, this.getTagsForStencil(gn, 'vpc virtual private cloud', dt).join(' ')),
898			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.api_gateway;',
899					 w, h + 10, 'Amazon API Gateway', null, null, null, this.getTagsForStencil(gn, 'api application programming interface gateway', dt).join(' ')),
900			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.cloudfront;',
901					 w, h + 10, 'Amazon Cloudfront', null, null, null, this.getTagsForStencil(gn, 'cloudfront', dt).join(' ')),
902			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.privatelink;',
903					 w, h + 10, 'AWS PrivateLink', null, null, null, this.getTagsForStencil(gn, 'privatelink', dt).join(' ')),
904			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.route_53;',
905					 w, h + 10, 'Amazon Route 53', null, null, null, this.getTagsForStencil(gn, 'route 53', dt).join(' ')),
906			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.direct_connect;',
907					 w, h + 10, 'AWS Direct Connect', null, null, null, this.getTagsForStencil(gn, 'direct connect', dt).join(' ')),
908
909			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.customer_gateway;',
910					 w2, w2, 'Customer\ngateway', null, null, null, this.getTagsForStencil(gn, 'customer gateway', dt).join(' ')),
911			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.elastic_network_adapter;',
912					 w2, w2, 'Elastic\nnetwork\nadapter', null, null, null, this.getTagsForStencil(gn, 'elastic network adapter', dt).join(' ')),
913			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.elastic_network_interface;',
914					 w2, w2, 'Elastic\nnetwork\ninterface', null, null, null, this.getTagsForStencil(gn, 'elastic network interface', dt).join(' ')),
915			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.endpoints;',
916					 w2, w2, 'Endpoints', null, null, null, this.getTagsForStencil(gn, 'endpoints', dt).join(' ')),
917			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.flow_logs;',
918					 w2, w2, 'Flow logs', null, null, null, this.getTagsForStencil(gn, 'flow logs', dt).join(' ')),
919			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.internet_gateway;',
920					 w2, w2, 'Internet\ngateway', null, null, null, this.getTagsForStencil(gn, 'internet gateway', dt).join(' ')),
921			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.nat_gateway;',
922					 w2, w2, 'NAT gateway', null, null, null, this.getTagsForStencil(gn, 'nat gateway', dt).join(' ')),
923			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.network_access_control_list;',
924					 w2, w2, 'Network\naccess\ncontrol list', null, null, null, this.getTagsForStencil(gn, 'network access control list', dt).join(' ')),
925			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.peering;',
926					 w2, w2, 'Peering', null, null, null, this.getTagsForStencil(gn, 'peering', dt).join(' ')),
927			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.router;',
928					 w2, w2, 'Router', null, null, null, this.getTagsForStencil(gn, 'router', dt).join(' ')),
929			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.vpn_connection;',
930					 w2, w2, 'VPN\nConnection', null, null, null, this.getTagsForStencil(gn, 'vpn virtual private network connection', dt).join(' ')),
931			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.vpn_gateway;',
932					 w2, w2, 'VPN Gateway', null, null, null, this.getTagsForStencil(gn, 'vpn virtual private network gateway', dt).join(' ')),
933			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.download_distribution;',
934					 w2, w2, 'Download\ndistribution', null, null, null, this.getTagsForStencil(gn, 'download distribution', dt).join(' ')),
935			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.edge_location;',
936					 w2, w2, 'Edge location', null, null, null, this.getTagsForStencil(gn, 'edge location', dt).join(' ')),
937			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.streaming_distribution;',
938					 w2, w2, 'Streaming\ndistribution', null, null, null, this.getTagsForStencil(gn, 'streaming distribution', dt).join(' ')),
939			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.hosted_zone;',
940					 w2, w2, 'Hosted zone', null, null, null, this.getTagsForStencil(gn, 'hosted zone', dt).join(' ')),
941			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.route_table;',
942					 w2, w2, 'Route table', null, null, null, this.getTagsForStencil(gn, 'route table', dt).join(' '))
943		]);
944	};
945
946	Sidebar.prototype.addAWS4bSecurityIdentityCompliancePalette = function(w, h, w2, n, n2, gn, sb)
947	{
948		var dt = 'aws amazon web service security identity compliance ';
949
950		this.addPaletteFunctions('aws4bSecurity Identity Compliance', 'AWS18 / Security, Identity & Compliance', false,
951		[
952			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.identity_and_access_management;',
953					 w, h + 20, 'AWS Identity and Access Management', null, null, null, this.getTagsForStencil(gn, 'identity and access management', dt).join(' ')),
954			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.cognito;',
955					 w, h + 10, 'Amazon Cognito', null, null, null, this.getTagsForStencil(gn, 'cognito', dt).join(' ')),
956			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.guardduty;',
957					 w, h + 10, 'Amazon GuardDuty', null, null, null, this.getTagsForStencil(gn, 'guard duty guardduty', dt).join(' ')),
958			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.inspector;',
959					 w, h + 10, 'Amazon Inspector', null, null, null, this.getTagsForStencil(gn, 'inspector', dt).join(' ')),
960			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.artifact;',
961					 w, h, 'AWS Artifact', null, null, null, this.getTagsForStencil(gn, 'artifact', dt).join(' ')),
962			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.certificate_manager_3;',
963					 w, h + 10, 'AWS Certificate Manager', null, null, null, this.getTagsForStencil(gn, 'certificate manager', dt).join(' ')),
964			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.cloudhsm;',
965					 w, h + 10, 'AWS CloudHSM', null, null, null, this.getTagsForStencil(gn, 'cloudhsm', dt).join(' ')),
966			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.directory_service;',
967					 w, h + 10, 'AWS Directory Service', null, null, null, this.getTagsForStencil(gn, 'directory service', dt).join(' ')),
968			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.firewall_manager;',
969					 w, h + 10, 'AWS Firewall Manager', null, null, null, this.getTagsForStencil(gn, 'firewall manager', dt).join(' ')),
970			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.key_management_service;',
971					 w, h + 20, 'AWS Key Management Service', null, null, null, this.getTagsForStencil(gn, 'key management service', dt).join(' ')),
972			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.secrets_manager;',
973					 w, h + 10, 'AWS Secrets Manager', null, null, null, this.getTagsForStencil(gn, 'secrets manager', dt).join(' ')),
974			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.shield;',
975					 w, h, 'AWS Shield', null, null, null, this.getTagsForStencil(gn, 'shield', dt).join(' ')),
976			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.single_sign_on;',
977					 w, h + 10, 'AWS Single Sign-On', null, null, null, this.getTagsForStencil(gn, 'single sign on', dt).join(' ')),
978			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.waf;',
979					 w, h, 'AWS WAF', null, null, null, this.getTagsForStencil(gn, 'waf', dt).join(' ')),
980
981			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.addon;',
982					 w2, w2, 'Add-on', null, null, null, this.getTagsForStencil(gn, 'addon add on', dt).join(' ')),
983			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.sts;',
984					 w2, w2, 'AWS STS', null, null, null, this.getTagsForStencil(gn, 'sts', dt).join(' ')),
985			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.sts_alternate;',
986					 w2, w2, 'AWS STS\n(alternate)', null, null, null, this.getTagsForStencil(gn, 'sts alternate', dt).join(' ')),
987			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.data_encryption_key;',
988					 w2, w2, 'Data\nencryption\nkey', null, null, null, this.getTagsForStencil(gn, 'data encryption key', dt).join(' ')),
989			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.encrypted_data;',
990					 w2, w2, 'Encrypted\ndata', null, null, null, this.getTagsForStencil(gn, 'encrypted data', dt).join(' ')),
991			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.long_term_security_credential;',
992					 w2, w2, 'Long-term\nsecurity\ncredential', null, null, null, this.getTagsForStencil(gn, 'long term security credential', dt).join(' ')),
993			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.mfa_token;',
994					 w2, w2, 'MFA Token', null, null, null, this.getTagsForStencil(gn, 'mfa token', dt).join(' ')),
995			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.permissions;',
996					 w2, w2, 'Permissions', null, null, null, this.getTagsForStencil(gn, 'permissions', dt).join(' ')),
997			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.role;',
998					 w2, w2, 'Role', null, null, null, this.getTagsForStencil(gn, 'role', dt).join(' ')),
999			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.temporary_security_credential;',
1000					 w2, w2, 'Temporary\nsecurity\ncredential', null, null, null, this.getTagsForStencil(gn, 'temporary security credential', dt).join(' ')),
1001			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.agent;',
1002					 w2, w2, 'Agent', null, null, null, this.getTagsForStencil(gn, 'agent', dt).join(' ')),
1003			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.certificate_manager_2;',
1004					 w2, w2, 'Certificate\nmanager', null, null, null, this.getTagsForStencil(gn, 'certificate manager', dt).join(' ')),
1005			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.filtering_rule;',
1006					 w2, w2, 'Filtering rule', null, null, null, this.getTagsForStencil(gn, 'filtering rule', dt).join(' '))
1007		]);
1008	};
1009
1010	Sidebar.prototype.addAWS4bStoragePalette = function(w, h, w2, n, n2, gn, sb)
1011	{
1012		var dt = 'aws amazon web service storage ';
1013
1014		this.addPaletteFunctions('aws4bStorage', 'AWS18 / Storage', false,
1015		[
1016			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.s3;',
1017					 w, h, 'Amazon S3', null, null, null, this.getTagsForStencil(gn, 's3', dt).join(' ')),
1018			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.elastic_block_store;',
1019					 w, h + 10, 'Amazon Elastic Block Store', null, null, null, this.getTagsForStencil(gn, 'elastic block store', dt).join(' ')),
1020			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.elastic_file_system;',
1021					 w, h + 10, 'Amazon Elastic File System', null, null, null, this.getTagsForStencil(gn, 'elastic file system', dt).join(' ')),
1022			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.glacier;',
1023					 w, h + 10, 'Amazon Glacier', null, null, null, this.getTagsForStencil(gn, 'glacier', dt).join(' ')),
1024			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.snowball;',
1025					 w, h, 'AWS Snowball', null, null, null, this.getTagsForStencil(gn, 'snowball', dt).join(' ')),
1026			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.snowball_edge;',
1027					 w, h + 10, 'AWS Snowball Edge', null, null, null, this.getTagsForStencil(gn, 'snowball edge', dt).join(' ')),
1028			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.snowmobile;',
1029					 w, h + 10, 'AWS Snowmobile', null, null, null, this.getTagsForStencil(gn, 'snowmobile', dt).join(' ')),
1030			 this.createVertexTemplateEntry(n + 'productIcon;prIcon=' + gn + '.storage_gateway;',
1031					 w, h + 10, 'AWS Storage Gateway', null, null, null, this.getTagsForStencil(gn, 'storage gateway', dt).join(' ')),
1032
1033			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.bucket;',
1034					 w2, w2, 'Bucket', null, null, null, this.getTagsForStencil(gn, 'bucket', dt).join(' ')),
1035			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.snapshot;',
1036					 w2, w2, 'Snapshot', null, null, null, this.getTagsForStencil(gn, 'snapshot', dt).join(' ')),
1037			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.bucket_with_objects;',
1038					 w2, w2, 'Bucket with\nobjects', null, null, null, this.getTagsForStencil(gn, 'bucket with objects', dt).join(' ')),
1039			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.volume;',
1040					 w2, w2, 'Volume', null, null, null, this.getTagsForStencil(gn, 'volume', dt).join(' ')),
1041			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.object;',
1042					 w2, w2, 'Object', null, null, null, this.getTagsForStencil(gn, 'object', dt).join(' ')),
1043			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.archive;',
1044					 w2, w2, 'Archive', null, null, null, this.getTagsForStencil(gn, 'archive', dt).join(' ')),
1045			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.vault;',
1046					 w2, w2, 'Vault', null, null, null, this.getTagsForStencil(gn, 'vault', dt).join(' ')),
1047			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.import_export;',
1048					 w2, w2, 'Import/Export', null, null, null, this.getTagsForStencil(gn, 'import export', dt).join(' ')),
1049			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.cached_volume;',
1050					 w2, w2, 'Cached\nvolume', null, null, null, this.getTagsForStencil(gn, 'cached volume', dt).join(' ')),
1051			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.non_cached_volume;',
1052					 w2, w2, 'Non-Cached\nvolume', null, null, null, this.getTagsForStencil(gn, 'non cached volume', dt).join(' ')),
1053			 this.createVertexTemplateEntry(n2 + 'resourceIcon;resIcon=' + gn + '.virtual_tape_library;',
1054					 w2, w2, 'Virtual tape\nlibrary', null, null, null, this.getTagsForStencil(gn, 'virtual tape library vtl', dt).join(' '))
1055		]);
1056	};
1057})();
1058