Blame view

static/js/graph.js 80.9 KB
831eac332   zhuzhenchao   add file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
  /**
  * This file is part of Qunee for HTML5.
  * Copyright (c) 2015 by qunee.com
  **/
  var graphs = {
      clickAndLoad: {
          draw: function(g){
              g.fillStyle = '#777';
              g.translate(100, 20);
              g.font = 'lighter 18px "Open Sans", "Helvetica Neue", Arial, sans-serif';
              g.textAlign = "center";
              g.fillText('Click', 0, 0);
              g.fillText('Load Demo', 0, 20);
              g.strokeStyle = '#999';
              g.moveTo(-8, 30);
              g.lineTo(0, 35);
              g.lineTo(8, 30);
              g.lineWidth = 1;
              g.stroke();
          }
      },
      group_cloud: {
          draw: function(ctx) {
              ctx.save();
              ctx.beginPath();
              ctx.moveTo(0,0);
              ctx.lineTo(595.28,0);
              ctx.lineTo(595.28,841.89);
              ctx.lineTo(0,841.89);
              ctx.closePath();
              ctx.clip();
              ctx.strokeStyle = 'rgba(0,0,0,0)';
              ctx.lineCap = 'butt';
              ctx.lineJoin = 'miter';
              ctx.miterLimit = 4;
              ctx.save();
              ctx.fillStyle = "rgba(255,255,255,0.8)";
              ctx.strokeStyle = "#888";
              ctx.miterLimit = 10;
              ctx.beginPath();
              ctx.moveTo(19.411,28.528);
              ctx.bezierCurveTo(19.411,28.528,17.749000000000002,21.104,24.065,16.781999999999996);
              ctx.bezierCurveTo(30.381,12.459999999999997,37.252,15.229999999999997,37.252,15.229999999999997);
              ctx.bezierCurveTo(37.252,15.229999999999997,43.125,8.581999999999997,52.987,8.470999999999997);
              ctx.bezierCurveTo(62.849000000000004,8.359999999999996,69.054,13.900999999999996,70.384,15.894999999999996);
              ctx.bezierCurveTo(70.384,15.894999999999996,76.733,13.446999999999996,81.609,19.097999999999995);
              ctx.bezierCurveTo(86.029,24.220999999999997,82.463,28.526999999999994,82.463,28.526999999999994);
              ctx.bezierCurveTo(82.463,28.526999999999994,88.942,29.144999999999992,89.00099999999999,35.507999999999996);
              ctx.bezierCurveTo(89.04599999999999,40.382999999999996,84.78999999999999,42.04599999999999,84.78999999999999,42.04599999999999);
              ctx.bezierCurveTo(84.78999999999999,42.04599999999999,87.728,46.89999999999999,84.62499999999999,52.88399999999999);
              ctx.bezierCurveTo(82.22799999999998,57.507999999999996,75.70399999999998,60.10799999999999,68.94399999999999,58.888999999999996);
              ctx.bezierCurveTo(68.94399999999999,58.888999999999996,65.39799999999998,65.87899999999999,51.76799999999999,64.88199999999999);
              ctx.bezierCurveTo(38.137999999999984,63.88499999999999,35.36799999999999,56.45099999999999,35.36799999999999,56.45099999999999);
              ctx.bezierCurveTo(35.36799999999999,56.45099999999999,30.270999999999987,59.663999999999994,23.511999999999986,56.45099999999999);
              ctx.bezierCurveTo(18.722999999999985,54.17399999999999,15.754999999999987,49.57999999999999,16.641999999999985,44.92699999999999);
              ctx.bezierCurveTo(16.641999999999985,44.92699999999999,9.801999999999985,42.48899999999999,11.987999999999985,34.39999999999999);
              ctx.bezierCurveTo(13.354,29.342,19.411,28.528,19.411,28.528);
              ctx.closePath();
              ctx.lineWidth = 0.7;
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.restore();
          }
      },
      skype: {
          name: "Skype",
          draw: function(ctx){
  
  ctx.save();
  ctx.beginPath();
  ctx.moveTo(0,0);
  ctx.lineTo(40,0);
  ctx.lineTo(40,40);
  ctx.lineTo(0,40);
  ctx.closePath();
  ctx.clip();
  ctx.strokeStyle = 'rgba(0,0,0,0)';
  ctx.lineCap = 'butt';
  ctx.lineJoin = 'miter';
  ctx.miterLimit = 4;
  ctx.save();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "rgba(0, 0, 0, 0)";
  ctx.strokeStyle = "#ffffff";
  ctx.lineWidth = 3;
  ctx.lineJoin = "round";
  ctx.transform(1,0,0,1,4,4);
  ctx.globalAlpha = 0;
  ctx.beginPath();
  ctx.moveTo(28.777,18.438);
  ctx.bezierCurveTo(28.986,17.49,29.095000000000002,16.503999999999998,29.095000000000002,15.494);
  ctx.bezierCurveTo(29.095000000000002,7.9159999999999995,22.951,1.7720000000000002,15.371000000000002,1.7720000000000002);
  ctx.bezierCurveTo(14.572000000000003,1.7720000000000002,13.787000000000003,1.8410000000000002,13.025000000000002,1.9720000000000002);
  ctx.bezierCurveTo(11.801,1.199,10.35,0.75,8.793,0.75);
  ctx.bezierCurveTo(4.398,0.75,0.8349999999999991,4.311999999999999,0.8349999999999991,8.708);
  ctx.bezierCurveTo(0.8349999999999991,10.178,1.233999999999999,11.553,1.9289999999999992,12.732);
  ctx.bezierCurveTo(1.745999999999999,13.625,1.6519999999999992,14.546,1.6519999999999992,15.491999999999999);
  ctx.bezierCurveTo(1.6519999999999992,23.072,7.795999999999999,29.215,15.373999999999999,29.215);
  ctx.bezierCurveTo(16.232999999999997,29.215,17.073,29.137,17.889,28.985);
  ctx.bezierCurveTo(19.008,29.589,20.288,29.93,21.651,29.93);
  ctx.bezierCurveTo(26.046,29.93,29.608,26.368,29.608,21.971);
  ctx.bezierCurveTo(29.605,20.701,29.309,19.502,28.777,18.438);
  ctx.closePath();
  ctx.moveTo(22.412,22.051);
  ctx.bezierCurveTo(21.776999999999997,22.948999999999998,20.839,23.659999999999997,19.622999999999998,24.165999999999997);
  ctx.bezierCurveTo(18.419999999999998,24.665999999999997,16.976999999999997,24.919999999999998,15.335999999999999,24.919999999999998);
  ctx.bezierCurveTo(13.364999999999998,24.919999999999998,11.711999999999998,24.573999999999998,10.421999999999999,23.889);
  ctx.bezierCurveTo(9.5,23.391,8.74,22.717,8.163,21.885);
  ctx.bezierCurveTo(7.58,21.043000000000003,7.284000000000001,20.209000000000003,7.284000000000001,19.406000000000002);
  ctx.bezierCurveTo(7.284000000000001,18.903000000000002,7.476000000000001,18.467000000000002,7.857000000000001,18.110000000000003);
  ctx.bezierCurveTo(8.232000000000001,17.756000000000004,8.714,17.578000000000003,9.289000000000001,17.578000000000003);
  ctx.bezierCurveTo(9.760000000000002,17.578000000000003,10.167000000000002,17.719,10.498000000000001,18.000000000000004);
  ctx.bezierCurveTo(10.813,18.269000000000002,11.084000000000001,18.662000000000003,11.303,19.174000000000003);
  ctx.bezierCurveTo(11.545000000000002,19.732000000000003,11.811,20.201000000000004,12.091000000000001,20.571);
  ctx.bezierCurveTo(12.360000000000001,20.926000000000002,12.747000000000002,21.227,13.242,21.461000000000002);
  ctx.bezierCurveTo(13.739,21.696,14.41,21.815,15.234000000000002,21.815);
  ctx.bezierCurveTo(16.369000000000003,21.815,17.298000000000002,21.574,17.998,21.094);
  ctx.bezierCurveTo(18.682000000000002,20.629,19.014000000000003,20.069000000000003,19.014000000000003,19.383000000000003);
  ctx.bezierCurveTo(19.014000000000003,18.840000000000003,18.841000000000005,18.414,18.485000000000003,18.080000000000002);
  ctx.bezierCurveTo(18.112000000000002,17.732000000000003,17.620000000000005,17.459000000000003,17.020000000000003,17.273000000000003);
  ctx.bezierCurveTo(16.397000000000002,17.078000000000003,15.550000000000002,16.869000000000003,14.502000000000002,16.650000000000002);
  ctx.bezierCurveTo(13.078000000000003,16.344,11.868000000000002,15.982000000000003,10.906000000000002,15.574000000000002);
  ctx.bezierCurveTo(9.922000000000002,15.155000000000001,9.129000000000003,14.574000000000002,8.549000000000003,13.847000000000001);
  ctx.bezierCurveTo(7.959000000000003,13.111,7.660000000000003,12.185000000000002,7.660000000000003,11.097000000000001);
  ctx.bezierCurveTo(7.660000000000003,10.061000000000002,7.974000000000003,9.126000000000001,8.593000000000004,8.321000000000002);
  ctx.bezierCurveTo(9.206000000000003,7.521000000000002,10.103000000000003,6.8980000000000015,11.256000000000004,6.472000000000001);
  ctx.bezierCurveTo(12.395000000000003,6.050000000000002,13.750000000000004,5.8370000000000015,15.283000000000005,5.8370000000000015);
  ctx.bezierCurveTo(16.508000000000006,5.8370000000000015,17.586000000000006,5.9780000000000015,18.484000000000005,6.258000000000002);
  ctx.bezierCurveTo(19.388000000000005,6.540000000000002,20.152000000000005,6.920000000000002,20.751000000000005,7.388000000000002);
  ctx.bezierCurveTo(21.355000000000004,7.860000000000001,21.805000000000003,8.365000000000002,22.086000000000006,8.888000000000002);
  ctx.bezierCurveTo(22.370000000000005,9.417000000000002,22.516000000000005,9.945000000000002,22.516000000000005,10.453000000000001);
  ctx.bezierCurveTo(22.516000000000005,10.943000000000001,22.327000000000005,11.39,21.953000000000007,11.777000000000001);
  ctx.bezierCurveTo(21.578000000000007,12.168000000000001,21.102000000000007,12.366000000000001,20.545000000000005,12.366000000000001);
  ctx.bezierCurveTo(20.036000000000005,12.366000000000001,19.640000000000004,12.242,19.362000000000005,11.997000000000002);
  ctx.bezierCurveTo(19.104000000000006,11.770000000000001,18.839000000000006,11.417000000000002,18.543000000000006,10.907000000000002);
  ctx.bezierCurveTo(18.201000000000008,10.257000000000001,17.787000000000006,9.745000000000001,17.314000000000007,9.384000000000002);
  ctx.bezierCurveTo(16.851000000000006,9.033000000000001,16.082000000000008,8.855000000000002,15.022000000000007,8.855000000000002);
  ctx.bezierCurveTo(14.038000000000007,8.855000000000002,13.238000000000007,9.052000000000001,12.643000000000008,9.443000000000001);
  ctx.bezierCurveTo(12.071000000000009,9.818000000000001,11.793000000000008,10.248000000000001,11.793000000000008,10.757000000000001);
  ctx.bezierCurveTo(11.793000000000008,11.069,11.883000000000008,11.331000000000001,12.066000000000008,11.556000000000001);
  ctx.bezierCurveTo(12.261000000000008,11.794,12.537000000000008,12.003,12.884000000000007,12.177000000000001);
  ctx.bezierCurveTo(13.244000000000007,12.359000000000002,13.616000000000007,12.503000000000002,13.988000000000007,12.606000000000002);
  ctx.bezierCurveTo(14.370000000000006,12.712000000000002,15.009000000000007,12.869000000000002,15.887000000000008,13.072000000000001);
  ctx.bezierCurveTo(16.997000000000007,13.31,18.018000000000008,13.578000000000001,18.921000000000006,13.865);
  ctx.bezierCurveTo(19.834000000000007,14.158,20.624000000000006,14.519,21.269000000000005,14.937000000000001);
  ctx.bezierCurveTo(21.925000000000004,15.366000000000001,22.447000000000006,15.916,22.816000000000006,16.572000000000003);
  ctx.bezierCurveTo(23.185000000000006,17.230000000000004,23.374000000000006,18.043000000000003,23.374000000000006,18.988000000000003);
  ctx.bezierCurveTo(23.371,20.119,23.049,21.148,22.412,22.051);
  ctx.closePath();
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "#555555";
  ctx.strokeStyle = "rgba(0, 0, 0, 0)";
  ctx.transform(1,0,0,1,4,4);
  ctx.beginPath();
  ctx.moveTo(28.777,18.438);
  ctx.bezierCurveTo(28.986,17.49,29.095000000000002,16.503999999999998,29.095000000000002,15.494);
  ctx.bezierCurveTo(29.095000000000002,7.9159999999999995,22.951,1.7720000000000002,15.371000000000002,1.7720000000000002);
  ctx.bezierCurveTo(14.572000000000003,1.7720000000000002,13.787000000000003,1.8410000000000002,13.025000000000002,1.9720000000000002);
  ctx.bezierCurveTo(11.801,1.199,10.35,0.75,8.793,0.75);
  ctx.bezierCurveTo(4.398,0.75,0.8349999999999991,4.311999999999999,0.8349999999999991,8.708);
  ctx.bezierCurveTo(0.8349999999999991,10.178,1.233999999999999,11.553,1.9289999999999992,12.732);
  ctx.bezierCurveTo(1.745999999999999,13.625,1.6519999999999992,14.546,1.6519999999999992,15.491999999999999);
  ctx.bezierCurveTo(1.6519999999999992,23.072,7.795999999999999,29.215,15.373999999999999,29.215);
  ctx.bezierCurveTo(16.232999999999997,29.215,17.073,29.137,17.889,28.985);
  ctx.bezierCurveTo(19.008,29.589,20.288,29.93,21.651,29.93);
  ctx.bezierCurveTo(26.046,29.93,29.608,26.368,29.608,21.971);
  ctx.bezierCurveTo(29.605,20.701,29.309,19.502,28.777,18.438);
  ctx.closePath();
  ctx.moveTo(22.412,22.051);
  ctx.bezierCurveTo(21.776999999999997,22.948999999999998,20.839,23.659999999999997,19.622999999999998,24.165999999999997);
  ctx.bezierCurveTo(18.419999999999998,24.665999999999997,16.976999999999997,24.919999999999998,15.335999999999999,24.919999999999998);
  ctx.bezierCurveTo(13.364999999999998,24.919999999999998,11.711999999999998,24.573999999999998,10.421999999999999,23.889);
  ctx.bezierCurveTo(9.5,23.391,8.74,22.717,8.163,21.885);
  ctx.bezierCurveTo(7.58,21.043000000000003,7.284000000000001,20.209000000000003,7.284000000000001,19.406000000000002);
  ctx.bezierCurveTo(7.284000000000001,18.903000000000002,7.476000000000001,18.467000000000002,7.857000000000001,18.110000000000003);
  ctx.bezierCurveTo(8.232000000000001,17.756000000000004,8.714,17.578000000000003,9.289000000000001,17.578000000000003);
  ctx.bezierCurveTo(9.760000000000002,17.578000000000003,10.167000000000002,17.719,10.498000000000001,18.000000000000004);
  ctx.bezierCurveTo(10.813,18.269000000000002,11.084000000000001,18.662000000000003,11.303,19.174000000000003);
  ctx.bezierCurveTo(11.545000000000002,19.732000000000003,11.811,20.201000000000004,12.091000000000001,20.571);
  ctx.bezierCurveTo(12.360000000000001,20.926000000000002,12.747000000000002,21.227,13.242,21.461000000000002);
  ctx.bezierCurveTo(13.739,21.696,14.41,21.815,15.234000000000002,21.815);
  ctx.bezierCurveTo(16.369000000000003,21.815,17.298000000000002,21.574,17.998,21.094);
  ctx.bezierCurveTo(18.682000000000002,20.629,19.014000000000003,20.069000000000003,19.014000000000003,19.383000000000003);
  ctx.bezierCurveTo(19.014000000000003,18.840000000000003,18.841000000000005,18.414,18.485000000000003,18.080000000000002);
  ctx.bezierCurveTo(18.112000000000002,17.732000000000003,17.620000000000005,17.459000000000003,17.020000000000003,17.273000000000003);
  ctx.bezierCurveTo(16.397000000000002,17.078000000000003,15.550000000000002,16.869000000000003,14.502000000000002,16.650000000000002);
  ctx.bezierCurveTo(13.078000000000003,16.344,11.868000000000002,15.982000000000003,10.906000000000002,15.574000000000002);
  ctx.bezierCurveTo(9.922000000000002,15.155000000000001,9.129000000000003,14.574000000000002,8.549000000000003,13.847000000000001);
  ctx.bezierCurveTo(7.959000000000003,13.111,7.660000000000003,12.185000000000002,7.660000000000003,11.097000000000001);
  ctx.bezierCurveTo(7.660000000000003,10.061000000000002,7.974000000000003,9.126000000000001,8.593000000000004,8.321000000000002);
  ctx.bezierCurveTo(9.206000000000003,7.521000000000002,10.103000000000003,6.8980000000000015,11.256000000000004,6.472000000000001);
  ctx.bezierCurveTo(12.395000000000003,6.050000000000002,13.750000000000004,5.8370000000000015,15.283000000000005,5.8370000000000015);
  ctx.bezierCurveTo(16.508000000000006,5.8370000000000015,17.586000000000006,5.9780000000000015,18.484000000000005,6.258000000000002);
  ctx.bezierCurveTo(19.388000000000005,6.540000000000002,20.152000000000005,6.920000000000002,20.751000000000005,7.388000000000002);
  ctx.bezierCurveTo(21.355000000000004,7.860000000000001,21.805000000000003,8.365000000000002,22.086000000000006,8.888000000000002);
  ctx.bezierCurveTo(22.370000000000005,9.417000000000002,22.516000000000005,9.945000000000002,22.516000000000005,10.453000000000001);
  ctx.bezierCurveTo(22.516000000000005,10.943000000000001,22.327000000000005,11.39,21.953000000000007,11.777000000000001);
  ctx.bezierCurveTo(21.578000000000007,12.168000000000001,21.102000000000007,12.366000000000001,20.545000000000005,12.366000000000001);
  ctx.bezierCurveTo(20.036000000000005,12.366000000000001,19.640000000000004,12.242,19.362000000000005,11.997000000000002);
  ctx.bezierCurveTo(19.104000000000006,11.770000000000001,18.839000000000006,11.417000000000002,18.543000000000006,10.907000000000002);
  ctx.bezierCurveTo(18.201000000000008,10.257000000000001,17.787000000000006,9.745000000000001,17.314000000000007,9.384000000000002);
  ctx.bezierCurveTo(16.851000000000006,9.033000000000001,16.082000000000008,8.855000000000002,15.022000000000007,8.855000000000002);
  ctx.bezierCurveTo(14.038000000000007,8.855000000000002,13.238000000000007,9.052000000000001,12.643000000000008,9.443000000000001);
  ctx.bezierCurveTo(12.071000000000009,9.818000000000001,11.793000000000008,10.248000000000001,11.793000000000008,10.757000000000001);
  ctx.bezierCurveTo(11.793000000000008,11.069,11.883000000000008,11.331000000000001,12.066000000000008,11.556000000000001);
  ctx.bezierCurveTo(12.261000000000008,11.794,12.537000000000008,12.003,12.884000000000007,12.177000000000001);
  ctx.bezierCurveTo(13.244000000000007,12.359000000000002,13.616000000000007,12.503000000000002,13.988000000000007,12.606000000000002);
  ctx.bezierCurveTo(14.370000000000006,12.712000000000002,15.009000000000007,12.869000000000002,15.887000000000008,13.072000000000001);
  ctx.bezierCurveTo(16.997000000000007,13.31,18.018000000000008,13.578000000000001,18.921000000000006,13.865);
  ctx.bezierCurveTo(19.834000000000007,14.158,20.624000000000006,14.519,21.269000000000005,14.937000000000001);
  ctx.bezierCurveTo(21.925000000000004,15.366000000000001,22.447000000000006,15.916,22.816000000000006,16.572000000000003);
  ctx.bezierCurveTo(23.185000000000006,17.230000000000004,23.374000000000006,18.043000000000003,23.374000000000006,18.988000000000003);
  ctx.bezierCurveTo(23.371,20.119,23.049,21.148,22.412,22.051);
  ctx.closePath();
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "#000000";
  ctx.strokeStyle = "#000000";
  ctx.globalAlpha = 0;
  ctx.beginPath();
  ctx.moveTo(0,0);
  ctx.lineTo(32,0);
  ctx.quadraticCurveTo(32,0,32,0);
  ctx.lineTo(32,32);
  ctx.quadraticCurveTo(32,32,32,32);
  ctx.lineTo(0,32);
  ctx.quadraticCurveTo(0,32,0,32);
  ctx.lineTo(0,0);
  ctx.quadraticCurveTo(0,0,0,0);
  ctx.closePath();
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.restore();
          }
      },
      group: {
          name: "Group",
          draw: function(ctx){
  ctx.save();
  ctx.beginPath();
  ctx.moveTo(0,0);
  ctx.lineTo(40,0);
  ctx.lineTo(40,40);
  ctx.lineTo(0,40);
  ctx.closePath();
  ctx.clip();
  ctx.strokeStyle = 'rgba(0,0,0,0)';
  ctx.lineCap = 'butt';
  ctx.lineJoin = 'miter';
  ctx.miterLimit = 4;
  ctx.save();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "rgba(0, 0, 0, 0)";
  ctx.strokeStyle = "#ffffff";
  ctx.lineWidth = 3;
  ctx.lineJoin = "round";
  ctx.transform(1,0,0,1,4,4);
  ctx.globalAlpha = 0;
  ctx.beginPath();
  ctx.moveTo(21.066,20.667);
  ctx.bezierCurveTo(22.293,19.985000000000003,22.134,17.356,20.712,14.793000000000003);
  ctx.bezierCurveTo(20.101,13.689000000000004,19.353,12.795000000000003,18.603,12.170000000000002);
  ctx.bezierCurveTo(17.728,12.811000000000002,16.662000000000003,13.201000000000002,15.501000000000001,13.201000000000002);
  ctx.bezierCurveTo(14.337000000000002,13.201000000000002,13.270000000000001,12.810000000000002,12.397000000000002,12.170000000000002);
  ctx.bezierCurveTo(11.647000000000002,12.795000000000002,10.899000000000003,13.689000000000002,10.286000000000001,14.793000000000003);
  ctx.bezierCurveTo(8.864,17.356,8.708000000000002,19.985000000000003,9.936000000000002,20.667);
  ctx.bezierCurveTo(10.485000000000001,20.979000000000003,11.063000000000002,20.745,11.659000000000002,20.171000000000003);
  ctx.bezierCurveTo(11.554000000000002,20.753000000000004,11.493000000000002,21.384000000000004,11.493000000000002,22.044000000000004);
  ctx.bezierCurveTo(11.493000000000002,24.982000000000003,12.632000000000001,27.356000000000005,14.036000000000001,27.356000000000005);
  ctx.bezierCurveTo(14.882000000000001,27.356000000000005,15.301000000000002,26.491000000000007,15.502,25.168000000000006);
  ctx.bezierCurveTo(15.702,26.482000000000006,16.122,27.356000000000005,16.963,27.356000000000005);
  ctx.bezierCurveTo(18.359,27.356000000000005,19.508000000000003,24.981000000000005,19.508000000000003,22.044000000000004);
  ctx.bezierCurveTo(19.508000000000003,21.384000000000004,19.446,20.753000000000004,19.340000000000003,20.171000000000003);
  ctx.bezierCurveTo(19.939,20.745,20.516,20.983,21.066,20.667);
  ctx.closePath();
  ctx.moveTo(15.5,12.201);
  ctx.bezierCurveTo(17.861,12.201,19.777,10.285,19.777,7.922000000000001);
  ctx.bezierCurveTo(19.777,5.559000000000001,17.861,3.644,15.5,3.644);
  ctx.bezierCurveTo(13.137,3.644,11.219999999999999,5.5600000000000005,11.219999999999999,7.923);
  ctx.bezierCurveTo(11.219999999999999,10.286,13.137,12.201,15.5,12.201);
  ctx.closePath();
  ctx.moveTo(24.094,14.914);
  ctx.bezierCurveTo(26.032,14.914,27.606,13.341,27.606,11.401);
  ctx.bezierCurveTo(27.606,9.462,26.033,7.888,24.094,7.888);
  ctx.bezierCurveTo(22.154,7.888,20.581000000000003,9.461,20.581000000000003,11.401);
  ctx.bezierCurveTo(20.581,13.341,22.153,14.914,24.094,14.914);
  ctx.closePath();
  ctx.moveTo(28.374,17.043);
  ctx.bezierCurveTo(27.872,16.136,27.258,15.402,26.642,14.889);
  ctx.bezierCurveTo(25.924,15.415,25.048,15.735,24.096,15.735);
  ctx.bezierCurveTo(23.34,15.735,22.637,15.527999999999999,22.02,15.184999999999999);
  ctx.bezierCurveTo(22.516,16.278,22.823,17.384999999999998,22.881,18.375);
  ctx.bezierCurveTo(22.974,19.891,22.5,21.016,21.552,21.54);
  ctx.bezierCurveTo(21.348,21.657,21.126,21.723,20.899,21.764);
  ctx.bezierCurveTo(20.843,22.156,20.804000000000002,22.564999999999998,20.804000000000002,22.995);
  ctx.bezierCurveTo(20.804000000000002,25.407,21.739,27.356,22.892000000000003,27.356);
  ctx.bezierCurveTo(23.586000000000002,27.356,23.931000000000004,26.646,24.096000000000004,25.560000000000002);
  ctx.bezierCurveTo(24.259000000000004,26.639000000000003,24.604000000000003,27.356,25.295000000000005,27.356);
  ctx.bezierCurveTo(26.441000000000006,27.356,27.385000000000005,25.406000000000002,27.385000000000005,22.995);
  ctx.bezierCurveTo(27.385000000000005,22.453,27.333000000000006,21.935000000000002,27.246000000000006,21.457);
  ctx.bezierCurveTo(27.738000000000007,21.929000000000002,28.212000000000007,22.124000000000002,28.664000000000005,21.864);
  ctx.bezierCurveTo(29.671,21.305,29.541,19.146,28.374,17.043);
  ctx.closePath();
  ctx.moveTo(6.906,14.914);
  ctx.bezierCurveTo(8.844999999999999,14.914,10.418,13.341,10.418,11.401);
  ctx.bezierCurveTo(10.418,9.462,8.844999999999999,7.888,6.905999999999999,7.888);
  ctx.bezierCurveTo(4.965999999999999,7.888,3.391999999999999,9.461,3.391999999999999,11.401);
  ctx.bezierCurveTo(3.392,13.341,4.966,14.914,6.906,14.914);
  ctx.closePath();
  ctx.moveTo(9.441,21.536);
  ctx.bezierCurveTo(7.848000000000001,20.651,7.702000000000001,18.012,8.984,15.182000000000002);
  ctx.bezierCurveTo(8.365,15.528000000000002,7.662,15.735000000000003,6.906000000000001,15.735000000000003);
  ctx.bezierCurveTo(5.950000000000001,15.735000000000003,5.074000000000001,15.414000000000003,4.357000000000001,14.889000000000003);
  ctx.bezierCurveTo(3.741000000000001,15.402000000000003,3.128000000000001,16.136000000000003,2.624000000000001,17.043000000000003);
  ctx.bezierCurveTo(1.457000000000001,19.147000000000002,1.329000000000001,21.305000000000003,2.337000000000001,21.864000000000004);
  ctx.bezierCurveTo(2.788000000000001,22.121000000000006,3.2620000000000013,21.928000000000004,3.7510000000000012,21.457000000000004);
  ctx.bezierCurveTo(3.6650000000000014,21.936000000000003,3.615000000000001,22.453000000000003,3.615000000000001,22.995000000000005);
  ctx.bezierCurveTo(3.615000000000001,25.407000000000004,4.550000000000001,27.356000000000005,5.703000000000001,27.356000000000005);
  ctx.bezierCurveTo(6.397000000000001,27.356000000000005,6.742000000000001,26.646000000000004,6.907000000000001,25.560000000000006);
  ctx.bezierCurveTo(7.072000000000001,26.639000000000006,7.416000000000001,27.356000000000005,8.108,27.356000000000005);
  ctx.bezierCurveTo(9.254000000000001,27.356000000000005,10.197000000000001,25.406000000000006,10.197000000000001,22.995000000000005);
  ctx.bezierCurveTo(10.197000000000001,22.563000000000006,10.157000000000002,22.154000000000003,10.100000000000001,21.762000000000004);
  ctx.bezierCurveTo(9.874,21.721,9.651,21.656,9.441,21.536);
  ctx.closePath();
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "#555555";
  ctx.strokeStyle = "rgba(0, 0, 0, 0)";
  ctx.transform(1,0,0,1,4,4);
  ctx.beginPath();
  ctx.moveTo(21.066,20.667);
  ctx.bezierCurveTo(22.293,19.985000000000003,22.134,17.356,20.712,14.793000000000003);
  ctx.bezierCurveTo(20.101,13.689000000000004,19.353,12.795000000000003,18.603,12.170000000000002);
  ctx.bezierCurveTo(17.728,12.811000000000002,16.662000000000003,13.201000000000002,15.501000000000001,13.201000000000002);
  ctx.bezierCurveTo(14.337000000000002,13.201000000000002,13.270000000000001,12.810000000000002,12.397000000000002,12.170000000000002);
  ctx.bezierCurveTo(11.647000000000002,12.795000000000002,10.899000000000003,13.689000000000002,10.286000000000001,14.793000000000003);
  ctx.bezierCurveTo(8.864,17.356,8.708000000000002,19.985000000000003,9.936000000000002,20.667);
  ctx.bezierCurveTo(10.485000000000001,20.979000000000003,11.063000000000002,20.745,11.659000000000002,20.171000000000003);
  ctx.bezierCurveTo(11.554000000000002,20.753000000000004,11.493000000000002,21.384000000000004,11.493000000000002,22.044000000000004);
  ctx.bezierCurveTo(11.493000000000002,24.982000000000003,12.632000000000001,27.356000000000005,14.036000000000001,27.356000000000005);
  ctx.bezierCurveTo(14.882000000000001,27.356000000000005,15.301000000000002,26.491000000000007,15.502,25.168000000000006);
  ctx.bezierCurveTo(15.702,26.482000000000006,16.122,27.356000000000005,16.963,27.356000000000005);
  ctx.bezierCurveTo(18.359,27.356000000000005,19.508000000000003,24.981000000000005,19.508000000000003,22.044000000000004);
  ctx.bezierCurveTo(19.508000000000003,21.384000000000004,19.446,20.753000000000004,19.340000000000003,20.171000000000003);
  ctx.bezierCurveTo(19.939,20.745,20.516,20.983,21.066,20.667);
  ctx.closePath();
  ctx.moveTo(15.5,12.201);
  ctx.bezierCurveTo(17.861,12.201,19.777,10.285,19.777,7.922000000000001);
  ctx.bezierCurveTo(19.777,5.559000000000001,17.861,3.644,15.5,3.644);
  ctx.bezierCurveTo(13.137,3.644,11.219999999999999,5.5600000000000005,11.219999999999999,7.923);
  ctx.bezierCurveTo(11.219999999999999,10.286,13.137,12.201,15.5,12.201);
  ctx.closePath();
  ctx.moveTo(24.094,14.914);
  ctx.bezierCurveTo(26.032,14.914,27.606,13.341,27.606,11.401);
  ctx.bezierCurveTo(27.606,9.462,26.033,7.888,24.094,7.888);
  ctx.bezierCurveTo(22.154,7.888,20.581000000000003,9.461,20.581000000000003,11.401);
  ctx.bezierCurveTo(20.581,13.341,22.153,14.914,24.094,14.914);
  ctx.closePath();
  ctx.moveTo(28.374,17.043);
  ctx.bezierCurveTo(27.872,16.136,27.258,15.402,26.642,14.889);
  ctx.bezierCurveTo(25.924,15.415,25.048,15.735,24.096,15.735);
  ctx.bezierCurveTo(23.34,15.735,22.637,15.527999999999999,22.02,15.184999999999999);
  ctx.bezierCurveTo(22.516,16.278,22.823,17.384999999999998,22.881,18.375);
  ctx.bezierCurveTo(22.974,19.891,22.5,21.016,21.552,21.54);
  ctx.bezierCurveTo(21.348,21.657,21.126,21.723,20.899,21.764);
  ctx.bezierCurveTo(20.843,22.156,20.804000000000002,22.564999999999998,20.804000000000002,22.995);
  ctx.bezierCurveTo(20.804000000000002,25.407,21.739,27.356,22.892000000000003,27.356);
  ctx.bezierCurveTo(23.586000000000002,27.356,23.931000000000004,26.646,24.096000000000004,25.560000000000002);
  ctx.bezierCurveTo(24.259000000000004,26.639000000000003,24.604000000000003,27.356,25.295000000000005,27.356);
  ctx.bezierCurveTo(26.441000000000006,27.356,27.385000000000005,25.406000000000002,27.385000000000005,22.995);
  ctx.bezierCurveTo(27.385000000000005,22.453,27.333000000000006,21.935000000000002,27.246000000000006,21.457);
  ctx.bezierCurveTo(27.738000000000007,21.929000000000002,28.212000000000007,22.124000000000002,28.664000000000005,21.864);
  ctx.bezierCurveTo(29.671,21.305,29.541,19.146,28.374,17.043);
  ctx.closePath();
  ctx.moveTo(6.906,14.914);
  ctx.bezierCurveTo(8.844999999999999,14.914,10.418,13.341,10.418,11.401);
  ctx.bezierCurveTo(10.418,9.462,8.844999999999999,7.888,6.905999999999999,7.888);
  ctx.bezierCurveTo(4.965999999999999,7.888,3.391999999999999,9.461,3.391999999999999,11.401);
  ctx.bezierCurveTo(3.392,13.341,4.966,14.914,6.906,14.914);
  ctx.closePath();
  ctx.moveTo(9.441,21.536);
  ctx.bezierCurveTo(7.848000000000001,20.651,7.702000000000001,18.012,8.984,15.182000000000002);
  ctx.bezierCurveTo(8.365,15.528000000000002,7.662,15.735000000000003,6.906000000000001,15.735000000000003);
  ctx.bezierCurveTo(5.950000000000001,15.735000000000003,5.074000000000001,15.414000000000003,4.357000000000001,14.889000000000003);
  ctx.bezierCurveTo(3.741000000000001,15.402000000000003,3.128000000000001,16.136000000000003,2.624000000000001,17.043000000000003);
  ctx.bezierCurveTo(1.457000000000001,19.147000000000002,1.329000000000001,21.305000000000003,2.337000000000001,21.864000000000004);
  ctx.bezierCurveTo(2.788000000000001,22.121000000000006,3.2620000000000013,21.928000000000004,3.7510000000000012,21.457000000000004);
  ctx.bezierCurveTo(3.6650000000000014,21.936000000000003,3.615000000000001,22.453000000000003,3.615000000000001,22.995000000000005);
  ctx.bezierCurveTo(3.615000000000001,25.407000000000004,4.550000000000001,27.356000000000005,5.703000000000001,27.356000000000005);
  ctx.bezierCurveTo(6.397000000000001,27.356000000000005,6.742000000000001,26.646000000000004,6.907000000000001,25.560000000000006);
  ctx.bezierCurveTo(7.072000000000001,26.639000000000006,7.416000000000001,27.356000000000005,8.108,27.356000000000005);
  ctx.bezierCurveTo(9.254000000000001,27.356000000000005,10.197000000000001,25.406000000000006,10.197000000000001,22.995000000000005);
  ctx.bezierCurveTo(10.197000000000001,22.563000000000006,10.157000000000002,22.154000000000003,10.100000000000001,21.762000000000004);
  ctx.bezierCurveTo(9.874,21.721,9.651,21.656,9.441,21.536);
  ctx.closePath();
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "#000000";
  ctx.strokeStyle = "#000000";
  ctx.globalAlpha = 0;
  ctx.beginPath();
  ctx.moveTo(0,0);
  ctx.lineTo(32,0);
  ctx.quadraticCurveTo(32,0,32,0);
  ctx.lineTo(32,32);
  ctx.quadraticCurveTo(32,32,32,32);
  ctx.lineTo(0,32);
  ctx.quadraticCurveTo(0,32,0,32);
  ctx.lineTo(0,0);
  ctx.quadraticCurveTo(0,0,0,0);
  ctx.closePath();
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.restore();
  }
      },
      twitter : {
          name: "Twitter",
          draw : function(ctx) {
  ctx.save();
  ctx.beginPath();
  ctx.moveTo(0,0);
  ctx.lineTo(40,0);
  ctx.lineTo(40,40);
  ctx.lineTo(0,40);
  ctx.closePath();
  ctx.clip();
  ctx.strokeStyle = 'rgba(0,0,0,0)';
  ctx.lineCap = 'butt';
  ctx.lineJoin = 'miter';
  ctx.miterLimit = 4;
  ctx.save();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "rgba(0, 0, 0, 0)";
  ctx.strokeStyle = "#ffffff";
  ctx.lineWidth = 3;
  ctx.lineJoin = "round";
  ctx.transform(1,0,0,1,4,4);
  ctx.globalAlpha = 0;
  ctx.beginPath();
  ctx.moveTo(26.492,9.493);
  ctx.bezierCurveTo(25.721,9.836,24.89,10.067,24.019000000000002,10.171000000000001);
  ctx.bezierCurveTo(24.909000000000002,9.638000000000002,25.581000000000003,8.795000000000002,25.912000000000003,7.7890000000000015);
  ctx.bezierCurveTo(25.080000000000002,8.282000000000002,24.159000000000002,8.641000000000002,23.178000000000004,8.833000000000002);
  ctx.bezierCurveTo(22.393000000000004,7.996000000000002,21.276000000000003,7.474000000000002,20.036000000000005,7.474000000000002);
  ctx.bezierCurveTo(17.659000000000006,7.474000000000002,15.730000000000004,9.402000000000001,15.730000000000004,11.780000000000001);
  ctx.bezierCurveTo(15.730000000000004,12.117,15.769000000000004,12.446000000000002,15.842000000000004,12.759);
  ctx.bezierCurveTo(12.264000000000005,12.579,9.092000000000004,10.865,6.9680000000000035,8.260000000000002);
  ctx.bezierCurveTo(6.597000000000003,8.896,6.385000000000003,9.635000000000002,6.385000000000003,10.425);
  ctx.bezierCurveTo(6.385000000000003,11.919,7.145000000000003,13.237,8.300000000000004,14.008000000000001);
  ctx.bezierCurveTo(7.594000000000005,13.986,6.930000000000004,13.792000000000002,6.350000000000004,13.47);
  ctx.bezierCurveTo(6.350000000000004,13.488000000000001,6.350000000000004,13.506,6.350000000000004,13.523000000000001);
  ctx.bezierCurveTo(6.350000000000004,15.609000000000002,7.834000000000004,17.352,9.804000000000004,17.745);
  ctx.bezierCurveTo(9.443000000000003,17.844,9.063000000000004,17.892,8.670000000000003,17.892);
  ctx.bezierCurveTo(8.392000000000003,17.892,8.123000000000003,17.869,7.860000000000003,17.816);
  ctx.bezierCurveTo(8.408000000000003,19.526999999999997,9.998000000000003,20.771,11.882000000000003,20.805999999999997);
  ctx.bezierCurveTo(10.408000000000003,21.951999999999998,8.552000000000003,22.647999999999996,6.535000000000003,22.647999999999996);
  ctx.bezierCurveTo(6.187000000000003,22.647999999999996,5.845000000000002,22.626999999999995,5.508000000000003,22.585999999999995);
  ctx.bezierCurveTo(7.413000000000003,23.810999999999996,9.676000000000002,24.523999999999994,12.108000000000002,24.523999999999994);
  ctx.bezierCurveTo(20.027,24.523999999999994,24.356,17.961999999999993,24.356,12.273999999999994);
  ctx.bezierCurveTo(24.356,12.086999999999994,24.354000000000003,11.901999999999994,24.346,11.716999999999993);
  ctx.bezierCurveTo(25.186,11.115,25.915,10.356,26.492,9.493);
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "#555555";
  ctx.strokeStyle = "rgba(0, 0, 0, 0)";
  ctx.transform(1,0,0,1,4,4);
  ctx.beginPath();
  ctx.moveTo(26.492,9.493);
  ctx.bezierCurveTo(25.721,9.836,24.89,10.067,24.019000000000002,10.171000000000001);
  ctx.bezierCurveTo(24.909000000000002,9.638000000000002,25.581000000000003,8.795000000000002,25.912000000000003,7.7890000000000015);
  ctx.bezierCurveTo(25.080000000000002,8.282000000000002,24.159000000000002,8.641000000000002,23.178000000000004,8.833000000000002);
  ctx.bezierCurveTo(22.393000000000004,7.996000000000002,21.276000000000003,7.474000000000002,20.036000000000005,7.474000000000002);
  ctx.bezierCurveTo(17.659000000000006,7.474000000000002,15.730000000000004,9.402000000000001,15.730000000000004,11.780000000000001);
  ctx.bezierCurveTo(15.730000000000004,12.117,15.769000000000004,12.446000000000002,15.842000000000004,12.759);
  ctx.bezierCurveTo(12.264000000000005,12.579,9.092000000000004,10.865,6.9680000000000035,8.260000000000002);
  ctx.bezierCurveTo(6.597000000000003,8.896,6.385000000000003,9.635000000000002,6.385000000000003,10.425);
  ctx.bezierCurveTo(6.385000000000003,11.919,7.145000000000003,13.237,8.300000000000004,14.008000000000001);
  ctx.bezierCurveTo(7.594000000000005,13.986,6.930000000000004,13.792000000000002,6.350000000000004,13.47);
  ctx.bezierCurveTo(6.350000000000004,13.488000000000001,6.350000000000004,13.506,6.350000000000004,13.523000000000001);
  ctx.bezierCurveTo(6.350000000000004,15.609000000000002,7.834000000000004,17.352,9.804000000000004,17.745);
  ctx.bezierCurveTo(9.443000000000003,17.844,9.063000000000004,17.892,8.670000000000003,17.892);
  ctx.bezierCurveTo(8.392000000000003,17.892,8.123000000000003,17.869,7.860000000000003,17.816);
  ctx.bezierCurveTo(8.408000000000003,19.526999999999997,9.998000000000003,20.771,11.882000000000003,20.805999999999997);
  ctx.bezierCurveTo(10.408000000000003,21.951999999999998,8.552000000000003,22.647999999999996,6.535000000000003,22.647999999999996);
  ctx.bezierCurveTo(6.187000000000003,22.647999999999996,5.845000000000002,22.626999999999995,5.508000000000003,22.585999999999995);
  ctx.bezierCurveTo(7.413000000000003,23.810999999999996,9.676000000000002,24.523999999999994,12.108000000000002,24.523999999999994);
  ctx.bezierCurveTo(20.027,24.523999999999994,24.356,17.961999999999993,24.356,12.273999999999994);
  ctx.bezierCurveTo(24.356,12.086999999999994,24.354000000000003,11.901999999999994,24.346,11.716999999999993);
  ctx.bezierCurveTo(25.186,11.115,25.915,10.356,26.492,9.493);
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "#000000";
  ctx.strokeStyle = "#000000";
  ctx.globalAlpha = 0;
  ctx.beginPath();
  ctx.moveTo(0,0);
  ctx.lineTo(32,0);
  ctx.quadraticCurveTo(32,0,32,0);
  ctx.lineTo(32,32);
  ctx.quadraticCurveTo(32,32,32,32);
  ctx.lineTo(0,32);
  ctx.quadraticCurveTo(0,32,0,32);
  ctx.lineTo(0,0);
  ctx.quadraticCurveTo(0,0,0,0);
  ctx.closePath();
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.restore();
          }
      },
      windows : {
          name: "Windows",
          draw : function(ctx) {
  
  ctx.save();
  ctx.beginPath();
  ctx.moveTo(0,0);
  ctx.lineTo(40,0);
  ctx.lineTo(40,40);
  ctx.lineTo(0,40);
  ctx.closePath();
  ctx.clip();
  ctx.strokeStyle = 'rgba(0,0,0,0)';
  ctx.lineCap = 'butt';
  ctx.lineJoin = 'miter';
  ctx.miterLimit = 4;
  ctx.save();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "rgba(0, 0, 0, 0)";
  ctx.strokeStyle = "#ffffff";
  ctx.lineWidth = 3;
  ctx.lineJoin = "round";
  ctx.transform(1,0,0,1,4,4);
  ctx.globalAlpha = 0;
  ctx.beginPath();
  ctx.moveTo(20.023,17.484);
  ctx.bezierCurveTo(18.291,17.279000000000003,17.001,16.576,15.811,15.783000000000001);
  ctx.lineTo(15.811,15.783000000000001);
  ctx.lineTo(15.252,16.062);
  ctx.lineTo(12.674000000000001,24.986);
  ctx.lineTo(12.674000000000001,24.986);
  ctx.bezierCurveTo(13.891000000000002,25.791,15.579,26.693,17.356,26.900000000000002);
  ctx.bezierCurveTo(20.042,27.212000000000003,22.916,26.156000000000002,23.747,25.705000000000002);
  ctx.lineTo(26.364,16.644000000000002);
  ctx.lineTo(25.805,16.365000000000002);
  ctx.bezierCurveTo(25.805,16.365,23.193,17.857,20.023,17.484);
  ctx.closePath();
  ctx.moveTo(14.424,14.825);
  ctx.bezierCurveTo(13.157,13.955,11.846,13.173,10.049,13.008999999999999);
  ctx.bezierCurveTo(9.731,12.979999999999999,9.421999999999999,12.966999999999999,9.123999999999999,12.966999999999999);
  ctx.bezierCurveTo(6.112999999999999,12.966999999999999,4.175999999999998,14.313999999999998,4.175999999999998,14.313999999999998);
  ctx.lineTo(1.6109999999999984,23.191);
  ctx.lineTo(1.6109999999999984,23.191);
  ctx.lineTo(2.1369999999999987,23.471999999999998);
  ctx.bezierCurveTo(3.1179999999999986,22.996,4.916999999999998,22.326999999999998,7.2269999999999985,22.488);
  ctx.bezierCurveTo(8.892,22.601,10.146999999999998,23.269,11.343999999999998,24.019);
  ctx.lineTo(11.850999999999997,23.758999999999997);
  ctx.lineTo(11.850999999999997,23.758999999999997);
  ctx.lineTo(14.424,14.825);
  ctx.closePath();
  ctx.moveTo(10.201,12.094);
  ctx.bezierCurveTo(11.865,12.208,13.122,12.873999999999999,14.318000000000001,13.626999999999999);
  ctx.lineTo(14.827000000000002,13.366999999999999);
  ctx.lineTo(14.827000000000002,13.366999999999999);
  ctx.lineTo(17.4,4.431);
  ctx.bezierCurveTo(16.13,3.561,14.820999999999998,2.778,13.023,2.615);
  ctx.bezierCurveTo(12.705,2.5860000000000003,12.397,2.5730000000000004,12.099,2.5730000000000004);
  ctx.bezierCurveTo(9.088,2.573,7.15,3.92,7.15,3.92);
  ctx.lineTo(4.5840000000000005,12.798);
  ctx.lineTo(5.11,13.08);
  ctx.bezierCurveTo(6.092,12.604,7.891,11.936,10.201,12.094);
  ctx.closePath();
  ctx.moveTo(28.779,5.971);
  ctx.lineTo(28.779,5.971);
  ctx.bezierCurveTo(28.779,5.972,26.17,7.463,23,7.09);
  ctx.bezierCurveTo(21.266,6.886,19.977,6.183,18.787,5.388999999999999);
  ctx.lineTo(18.227,5.67);
  ctx.lineTo(15.651,14.593);
  ctx.lineTo(15.651,14.593);
  ctx.bezierCurveTo(16.866,15.396,18.557,16.302,20.331,16.508);
  ctx.bezierCurveTo(23.018,16.82,25.889,15.763,26.723,15.311);
  ctx.lineTo(29.338,6.252000000000001);
  ctx.lineTo(28.779,5.971);
  ctx.closePath();
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "#555555";
  ctx.strokeStyle = "rgba(0, 0, 0, 0)";
  ctx.transform(1,0,0,1,4,4);
  ctx.beginPath();
  ctx.moveTo(20.023,17.484);
  ctx.bezierCurveTo(18.291,17.279000000000003,17.001,16.576,15.811,15.783000000000001);
  ctx.lineTo(15.811,15.783000000000001);
  ctx.lineTo(15.252,16.062);
  ctx.lineTo(12.674000000000001,24.986);
  ctx.lineTo(12.674000000000001,24.986);
  ctx.bezierCurveTo(13.891000000000002,25.791,15.579,26.693,17.356,26.900000000000002);
  ctx.bezierCurveTo(20.042,27.212000000000003,22.916,26.156000000000002,23.747,25.705000000000002);
  ctx.lineTo(26.364,16.644000000000002);
  ctx.lineTo(25.805,16.365000000000002);
  ctx.bezierCurveTo(25.805,16.365,23.193,17.857,20.023,17.484);
  ctx.closePath();
  ctx.moveTo(14.424,14.825);
  ctx.bezierCurveTo(13.157,13.955,11.846,13.173,10.049,13.008999999999999);
  ctx.bezierCurveTo(9.731,12.979999999999999,9.421999999999999,12.966999999999999,9.123999999999999,12.966999999999999);
  ctx.bezierCurveTo(6.112999999999999,12.966999999999999,4.175999999999998,14.313999999999998,4.175999999999998,14.313999999999998);
  ctx.lineTo(1.6109999999999984,23.191);
  ctx.lineTo(1.6109999999999984,23.191);
  ctx.lineTo(2.1369999999999987,23.471999999999998);
  ctx.bezierCurveTo(3.1179999999999986,22.996,4.916999999999998,22.326999999999998,7.2269999999999985,22.488);
  ctx.bezierCurveTo(8.892,22.601,10.146999999999998,23.269,11.343999999999998,24.019);
  ctx.lineTo(11.850999999999997,23.758999999999997);
  ctx.lineTo(11.850999999999997,23.758999999999997);
  ctx.lineTo(14.424,14.825);
  ctx.closePath();
  ctx.moveTo(10.201,12.094);
  ctx.bezierCurveTo(11.865,12.208,13.122,12.873999999999999,14.318000000000001,13.626999999999999);
  ctx.lineTo(14.827000000000002,13.366999999999999);
  ctx.lineTo(14.827000000000002,13.366999999999999);
  ctx.lineTo(17.4,4.431);
  ctx.bezierCurveTo(16.13,3.561,14.820999999999998,2.778,13.023,2.615);
  ctx.bezierCurveTo(12.705,2.5860000000000003,12.397,2.5730000000000004,12.099,2.5730000000000004);
  ctx.bezierCurveTo(9.088,2.573,7.15,3.92,7.15,3.92);
  ctx.lineTo(4.5840000000000005,12.798);
  ctx.lineTo(5.11,13.08);
  ctx.bezierCurveTo(6.092,12.604,7.891,11.936,10.201,12.094);
  ctx.closePath();
  ctx.moveTo(28.779,5.971);
  ctx.lineTo(28.779,5.971);
  ctx.bezierCurveTo(28.779,5.972,26.17,7.463,23,7.09);
  ctx.bezierCurveTo(21.266,6.886,19.977,6.183,18.787,5.388999999999999);
  ctx.lineTo(18.227,5.67);
  ctx.lineTo(15.651,14.593);
  ctx.lineTo(15.651,14.593);
  ctx.bezierCurveTo(16.866,15.396,18.557,16.302,20.331,16.508);
  ctx.bezierCurveTo(23.018,16.82,25.889,15.763,26.723,15.311);
  ctx.lineTo(29.338,6.252000000000001);
  ctx.lineTo(28.779,5.971);
  ctx.closePath();
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "#000000";
  ctx.strokeStyle = "#000000";
  ctx.globalAlpha = 0;
  ctx.beginPath();
  ctx.moveTo(0,0);
  ctx.lineTo(32,0);
  ctx.quadraticCurveTo(32,0,32,0);
  ctx.lineTo(32,32);
  ctx.quadraticCurveTo(32,32,32,32);
  ctx.lineTo(0,32);
  ctx.quadraticCurveTo(0,32,0,32);
  ctx.lineTo(0,0);
  ctx.quadraticCurveTo(0,0,0,0);
  ctx.closePath();
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.restore();
          }
      },
      apple: {
          name: "Apple",
          draw: function(ctx){
  
  ctx.save();
  ctx.beginPath();
  ctx.moveTo(0,0);
  ctx.lineTo(40,0);
  ctx.lineTo(40,40);
  ctx.lineTo(0,40);
  ctx.closePath();
  ctx.clip();
  ctx.strokeStyle = 'rgba(0,0,0,0)';
  ctx.lineCap = 'butt';
  ctx.lineJoin = 'miter';
  ctx.miterLimit = 4;
  ctx.save();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "rgba(0, 0, 0, 0)";
  ctx.strokeStyle = "#ffffff";
  ctx.lineWidth = 3;
  ctx.lineJoin = "round";
  ctx.transform(1,0,0,1,4,4);
  ctx.globalAlpha = 0;
  ctx.beginPath();
  ctx.moveTo(24.32,10.85);
  ctx.bezierCurveTo(22.577,12.083,21.705,13.568999999999999,21.705,15.305);
  ctx.bezierCurveTo(21.705,17.384,22.782999999999998,18.978,24.936999999999998,20.091);
  ctx.bezierCurveTo(24.358999999999998,21.768,23.520999999999997,23.225,22.423,24.466);
  ctx.bezierCurveTo(21.325999999999997,25.707,20.325,26.328000000000003,19.418999999999997,26.328000000000003);
  ctx.bezierCurveTo(18.991999999999997,26.328000000000003,18.409999999999997,26.185000000000002,17.670999999999996,25.905000000000005);
  ctx.lineTo(17.316999999999997,25.767000000000003);
  ctx.bezierCurveTo(16.591999999999995,25.486000000000004,15.953999999999997,25.344000000000005,15.396999999999997,25.344000000000005);
  ctx.bezierCurveTo(14.871999999999996,25.344000000000005,14.296999999999997,25.454000000000004,13.671999999999997,25.675000000000004);
  ctx.lineTo(13.226999999999997,25.835000000000004);
  ctx.lineTo(12.666999999999996,26.064000000000004);
  ctx.bezierCurveTo(12.225999999999996,26.240000000000002,11.778999999999996,26.328000000000003,11.329999999999997,26.328000000000003);
  ctx.bezierCurveTo(10.270999999999997,26.328000000000003,9.101999999999997,25.456000000000003,7.822999999999997,23.712000000000003);
  ctx.bezierCurveTo(5.979999999999997,21.214000000000002,5.0589999999999975,18.491000000000003,5.0589999999999975,15.545000000000003);
  ctx.bezierCurveTo(5.0589999999999975,13.450000000000003,5.632999999999997,11.764000000000003,6.783999999999997,10.484000000000004);
  ctx.bezierCurveTo(7.932999999999997,9.205000000000004,9.456999999999997,8.564000000000004,11.351999999999997,8.564000000000004);
  ctx.bezierCurveTo(12.060999999999996,8.564000000000004,12.722999999999997,8.694000000000004,13.339999999999996,8.953000000000003);
  ctx.lineTo(13.762999999999996,9.125000000000004);
  ctx.lineTo(14.207999999999997,9.308000000000003);
  ctx.bezierCurveTo(14.603999999999997,9.475000000000003,14.923999999999996,9.559000000000003,15.166999999999996,9.559000000000003);
  ctx.bezierCurveTo(15.478999999999996,9.559000000000003,15.825999999999997,9.487000000000004,16.206999999999997,9.342000000000002);
  ctx.lineTo(16.788999999999998,9.113000000000003);
  ctx.lineTo(17.223999999999997,8.953000000000003);
  ctx.bezierCurveTo(17.916999999999998,8.702000000000004,18.682999999999996,8.576000000000002,19.520999999999997,8.576000000000002);
  ctx.bezierCurveTo(21.512,8.576,23.109,9.334,24.32,10.85);
  ctx.closePath();
  ctx.moveTo(19.615,3.287);
  ctx.bezierCurveTo(19.636,3.554,19.648,3.76,19.648,3.904);
  ctx.bezierCurveTo(19.648,5.221,19.169,6.377,18.21,7.371);
  ctx.bezierCurveTo(17.251,8.365000000000002,16.135,8.861,14.863000000000001,8.861);
  ctx.bezierCurveTo(14.825000000000001,8.564,14.805000000000001,8.351,14.805000000000001,8.222000000000001);
  ctx.bezierCurveTo(14.805000000000001,7.102000000000001,15.250000000000002,6.051000000000002,16.142000000000003,5.069000000000001);
  ctx.bezierCurveTo(17.033,4.087000000000001,18.064000000000004,3.511000000000001,19.238000000000003,3.3440000000000007);
  ctx.bezierCurveTo(19.32,3.329,19.447,3.311,19.615,3.287);
  ctx.closePath();
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "#555555";
  ctx.strokeStyle = "rgba(0, 0, 0, 0)";
  ctx.transform(1,0,0,1,4,4);
  ctx.beginPath();
  ctx.moveTo(24.32,10.85);
  ctx.bezierCurveTo(22.577,12.083,21.705,13.568999999999999,21.705,15.305);
  ctx.bezierCurveTo(21.705,17.384,22.782999999999998,18.978,24.936999999999998,20.091);
  ctx.bezierCurveTo(24.358999999999998,21.768,23.520999999999997,23.225,22.423,24.466);
  ctx.bezierCurveTo(21.325999999999997,25.707,20.325,26.328000000000003,19.418999999999997,26.328000000000003);
  ctx.bezierCurveTo(18.991999999999997,26.328000000000003,18.409999999999997,26.185000000000002,17.670999999999996,25.905000000000005);
  ctx.lineTo(17.316999999999997,25.767000000000003);
  ctx.bezierCurveTo(16.591999999999995,25.486000000000004,15.953999999999997,25.344000000000005,15.396999999999997,25.344000000000005);
  ctx.bezierCurveTo(14.871999999999996,25.344000000000005,14.296999999999997,25.454000000000004,13.671999999999997,25.675000000000004);
  ctx.lineTo(13.226999999999997,25.835000000000004);
  ctx.lineTo(12.666999999999996,26.064000000000004);
  ctx.bezierCurveTo(12.225999999999996,26.240000000000002,11.778999999999996,26.328000000000003,11.329999999999997,26.328000000000003);
  ctx.bezierCurveTo(10.270999999999997,26.328000000000003,9.101999999999997,25.456000000000003,7.822999999999997,23.712000000000003);
  ctx.bezierCurveTo(5.979999999999997,21.214000000000002,5.0589999999999975,18.491000000000003,5.0589999999999975,15.545000000000003);
  ctx.bezierCurveTo(5.0589999999999975,13.450000000000003,5.632999999999997,11.764000000000003,6.783999999999997,10.484000000000004);
  ctx.bezierCurveTo(7.932999999999997,9.205000000000004,9.456999999999997,8.564000000000004,11.351999999999997,8.564000000000004);
  ctx.bezierCurveTo(12.060999999999996,8.564000000000004,12.722999999999997,8.694000000000004,13.339999999999996,8.953000000000003);
  ctx.lineTo(13.762999999999996,9.125000000000004);
  ctx.lineTo(14.207999999999997,9.308000000000003);
  ctx.bezierCurveTo(14.603999999999997,9.475000000000003,14.923999999999996,9.559000000000003,15.166999999999996,9.559000000000003);
  ctx.bezierCurveTo(15.478999999999996,9.559000000000003,15.825999999999997,9.487000000000004,16.206999999999997,9.342000000000002);
  ctx.lineTo(16.788999999999998,9.113000000000003);
  ctx.lineTo(17.223999999999997,8.953000000000003);
  ctx.bezierCurveTo(17.916999999999998,8.702000000000004,18.682999999999996,8.576000000000002,19.520999999999997,8.576000000000002);
  ctx.bezierCurveTo(21.512,8.576,23.109,9.334,24.32,10.85);
  ctx.closePath();
  ctx.moveTo(19.615,3.287);
  ctx.bezierCurveTo(19.636,3.554,19.648,3.76,19.648,3.904);
  ctx.bezierCurveTo(19.648,5.221,19.169,6.377,18.21,7.371);
  ctx.bezierCurveTo(17.251,8.365000000000002,16.135,8.861,14.863000000000001,8.861);
  ctx.bezierCurveTo(14.825000000000001,8.564,14.805000000000001,8.351,14.805000000000001,8.222000000000001);
  ctx.bezierCurveTo(14.805000000000001,7.102000000000001,15.250000000000002,6.051000000000002,16.142000000000003,5.069000000000001);
  ctx.bezierCurveTo(17.033,4.087000000000001,18.064000000000004,3.511000000000001,19.238000000000003,3.3440000000000007);
  ctx.bezierCurveTo(19.32,3.329,19.447,3.311,19.615,3.287);
  ctx.closePath();
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.save();
  ctx.fillStyle = "#000000";
  ctx.strokeStyle = "#000000";
  ctx.globalAlpha = 0;
  ctx.beginPath();
  ctx.moveTo(0,0);
  ctx.lineTo(32,0);
  ctx.quadraticCurveTo(32,0,32,0);
  ctx.lineTo(32,32);
  ctx.quadraticCurveTo(32,32,32,32);
  ctx.lineTo(0,32);
  ctx.quadraticCurveTo(0,32,0,32);
  ctx.lineTo(0,0);
  ctx.quadraticCurveTo(0,0,0,0);
  ctx.closePath();
  ctx.fill();
  ctx.stroke();
  ctx.restore();
  ctx.restore();
          }
      },
      iphone : {
          name: "iPhone",
          width : 60,
          height : 80,
          draw : function(ctx) {
              ctx.save();
              ctx.beginPath();
              ctx.moveTo(0, 0);
              ctx.lineTo(48, 0);
              ctx.lineTo(48, 48);
              ctx.lineTo(0, 48);
              ctx.closePath();
              ctx.clip();
              ctx.strokeStyle = 'rgba(0,0,0,0)';
              ctx.lineCap = 'butt';
              ctx.lineJoin = 'miter';
              ctx.miterLimit = 4;
              ctx.save();
              ctx.restore();
              ctx.save();
              ctx.restore();
              ctx.save();
              ctx.save();
              var g = ctx.createRadialGradient(30.428225, 45.153285071108, 0,
                      30.428225, 45.153285071108, 13.474453);
              g.addColorStop(0, "rgba(0, 0, 0, 1)");
              g.addColorStop(1, "rgba(0, 0, 0, 0)");
              ctx.fillStyle = g;
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 1.7999999523162842;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.transform(1.001896, 0, 0, 2.0113314, -5.9859152, -48.289433);
              ctx.globalAlpha = 0.44999992847442627;
              ctx.beginPath();
              ctx.moveTo(43.902678, 45.153286);
              ctx.translate(30.428225, 45.153286);
              ctx.rotate(0);
              ctx.scale(1, 0.20187792409829178);
              ctx.arc(0, 0, 13.474453, 0, 3.141592653589793, 0);
              ctx.scale(1, 4.9534886217331655);
              ctx.rotate(0);
              ctx.translate(-30.428225, -45.153286);
              ctx.translate(30.428225, 45.153286);
              ctx.rotate(0);
              ctx.scale(1, 0.20187792409829178);
              ctx.arc(0, 0, 13.474453, 3.141592653589793, 6.283185307179586, 0);
              ctx.scale(1, 4.9534886217331655);
              ctx.rotate(0);
              ctx.translate(-30.428225, -45.153286);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#222222";
              ctx.strokeStyle = "#454545";
              ctx.lineWidth = 1;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(17.48867, 2.5);
              ctx.lineTo(31.5, 2.5);
              ctx.quadraticCurveTo(36.5, 2.5, 36.5, 7.5);
              ctx.lineTo(36.5, 39.51133);
              ctx.quadraticCurveTo(36.5, 44.51133, 31.5, 44.51133);
              ctx.lineTo(17.48867, 44.51133);
              ctx.quadraticCurveTo(12.48867, 44.51133, 12.48867, 39.51133);
              ctx.lineTo(12.48867, 7.5);
              ctx.quadraticCurveTo(12.48867, 2.5, 17.48867, 2.5);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#eaeef9";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.4888661205768585;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(15.46316305, 12);
              ctx.lineTo(33.53683695, 12);
              ctx.quadraticCurveTo(34, 12, 34, 12.4886471);
              ctx.lineTo(34, 33.5113529);
              ctx.quadraticCurveTo(34, 34, 33.53683695, 34);
              ctx.lineTo(15.46316305, 34);
              ctx.quadraticCurveTo(15, 34, 15, 33.5113529);
              ctx.lineTo(15, 12.4886471);
              ctx.quadraticCurveTo(15, 12, 15.46316305, 12);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#2e3436";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.4888661205768585;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(14.235984, 31);
              ctx.lineTo(34.747119, 31);
              ctx.quadraticCurveTo(34.747119, 31, 34.747119, 31);
              ctx.lineTo(34.747119, 34.5056648);
              ctx.quadraticCurveTo(34.747119, 34.5056648, 34.747119, 34.5056648);
              ctx.lineTo(14.235984, 34.5056648);
              ctx.quadraticCurveTo(14.235984, 34.5056648, 14.235984, 34.5056648);
              ctx.lineTo(14.235984, 31);
              ctx.quadraticCurveTo(14.235984, 31, 14.235984, 31);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#729fcf";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.4888661205768585;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(15, 14);
              ctx.lineTo(34, 14);
              ctx.quadraticCurveTo(34, 14, 34, 14);
              ctx.lineTo(34, 17);
              ctx.quadraticCurveTo(34, 17, 34, 17);
              ctx.lineTo(15, 17);
              ctx.quadraticCurveTo(15, 17, 15, 17);
              ctx.lineTo(15, 14);
              ctx.quadraticCurveTo(15, 14, 15, 14);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "rgba(0, 0, 0, 0)";
              ctx.strokeStyle = "#000000";
              ctx.lineWidth = 1;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(14.500002, 11.5);
              ctx.lineTo(34.500002, 11.5);
              ctx.quadraticCurveTo(34.500002, 11.5, 34.500002, 11.5);
              ctx.lineTo(34.500002, 34.500001999999995);
              ctx.quadraticCurveTo(34.500002, 34.500001999999995, 34.500002,
                      34.500001999999995);
              ctx.lineTo(14.500002, 34.500001999999995);
              ctx.quadraticCurveTo(14.500002, 34.500001999999995, 14.500002,
                      34.500001999999995);
              ctx.lineTo(14.500002, 11.5);
              ctx.quadraticCurveTo(14.500002, 11.5, 14.500002, 11.5);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "rgba(0, 0, 0, 0)";
              g = ctx.createLinearGradient(12.9943351, 3.0056657, 47.3693351,
                      63.7556647);
              g.addColorStop(0, "rgba(255, 255, 255, 1)");
              g.addColorStop(1, "rgba(255, 255, 255, 0)");
              ctx.strokeStyle = "[object CanvasGradient]";
              ctx.lineWidth = 0.988142192363739;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(17.488405999999998, 3.4997368);
              ctx.lineTo(31.500264, 3.4997368);
              ctx.quadraticCurveTo(35.500264, 3.4997368, 35.500264, 7.4997368);
              ctx.lineTo(35.500264, 39.5115928);
              ctx.quadraticCurveTo(35.500264, 43.5115928, 31.500264, 43.5115928);
              ctx.lineTo(17.488405999999998, 43.5115928);
              ctx.quadraticCurveTo(13.488406, 43.5115928, 13.488406, 39.5115928);
              ctx.lineTo(13.488406, 7.4997368);
              ctx.quadraticCurveTo(13.488406, 3.4997368, 17.488405999999998,
                      3.4997368);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#cee14b";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(31.49804866, 12);
              ctx.lineTo(32.50195804, 12);
              ctx.quadraticCurveTo(33.0000067, 12, 33.0000067, 12);
              ctx.lineTo(33.0000067, 12.99999988);
              ctx.quadraticCurveTo(33.0000067, 12.99999988, 32.50195804,
                      12.99999988);
              ctx.lineTo(31.49804866, 12.99999988);
              ctx.quadraticCurveTo(31, 12.99999988, 31, 12.99999988);
              ctx.lineTo(31, 12);
              ctx.quadraticCurveTo(31, 12, 31.49804866, 12);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#8d8d8d";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(21, 12);
              ctx.lineTo(28, 12);
              ctx.quadraticCurveTo(28, 12, 28, 13.2374361);
              ctx.lineTo(28, 11.7640681);
              ctx.quadraticCurveTo(28, 13.0015042, 28, 13.0015042);
              ctx.lineTo(21, 13.0015042);
              ctx.quadraticCurveTo(21, 13.0015042, 21, 11.7640681);
              ctx.lineTo(21, 13.2374361);
              ctx.quadraticCurveTo(21, 12, 21, 12);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#8d8d8d";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(16, 23.002401);
              ctx.lineTo(28, 23.002401);
              ctx.quadraticCurveTo(28, 23.002401, 28, 24.2398371);
              ctx.lineTo(28, 22.76256283);
              ctx.quadraticCurveTo(28, 23.99999893, 28, 23.99999893);
              ctx.lineTo(16, 23.99999893);
              ctx.quadraticCurveTo(16, 23.99999893, 16, 22.76256283);
              ctx.lineTo(16, 24.2398371);
              ctx.quadraticCurveTo(16, 23.002401, 16, 23.002401);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#8d8d8d";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(16, 25.002401);
              ctx.lineTo(24, 25.002401);
              ctx.quadraticCurveTo(24, 25.002401, 24, 26.2398371);
              ctx.lineTo(24, 24.76256283);
              ctx.quadraticCurveTo(24, 25.99999893, 24, 25.99999893);
              ctx.lineTo(16, 25.99999893);
              ctx.quadraticCurveTo(16, 25.99999893, 16, 24.76256283);
              ctx.lineTo(16, 26.2398371);
              ctx.quadraticCurveTo(16, 25.002401, 16, 25.002401);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#8d8d8d";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(16, 27.002401);
              ctx.lineTo(26, 27.002401);
              ctx.quadraticCurveTo(26, 27.002401, 26, 28.2398371);
              ctx.lineTo(26, 26.76256283);
              ctx.quadraticCurveTo(26, 27.99999893, 26, 27.99999893);
              ctx.lineTo(16, 27.99999893);
              ctx.quadraticCurveTo(16, 27.99999893, 16, 26.76256283);
              ctx.lineTo(16, 28.2398371);
              ctx.quadraticCurveTo(16, 27.002401, 16, 27.002401);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#8d8d8d";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(16, 29.002401);
              ctx.lineTo(26, 29.002401);
              ctx.quadraticCurveTo(26, 29.002401, 26, 30.2398371);
              ctx.lineTo(26, 28.76256283);
              ctx.quadraticCurveTo(26, 29.99999893, 26, 29.99999893);
              ctx.lineTo(16, 29.99999893);
              ctx.quadraticCurveTo(16, 29.99999893, 16, 28.76256283);
              ctx.lineTo(16, 30.2398371);
              ctx.quadraticCurveTo(16, 29.002401, 16, 29.002401);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#8d8d8d";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(32, 23.002401);
              ctx.lineTo(33, 23.002401);
              ctx.quadraticCurveTo(33, 23.002401, 33, 24.2398371);
              ctx.lineTo(33, 22.76256283);
              ctx.quadraticCurveTo(33, 23.99999893, 33, 23.99999893);
              ctx.lineTo(32, 23.99999893);
              ctx.quadraticCurveTo(32, 23.99999893, 32, 22.76256283);
              ctx.lineTo(32, 24.2398371);
              ctx.quadraticCurveTo(32, 23.002401, 32, 23.002401);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#8d8d8d";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(32, 25.002401);
              ctx.lineTo(33, 25.002401);
              ctx.quadraticCurveTo(33, 25.002401, 33, 26.2398371);
              ctx.lineTo(33, 24.76256283);
              ctx.quadraticCurveTo(33, 25.99999893, 33, 25.99999893);
              ctx.lineTo(32, 25.99999893);
              ctx.quadraticCurveTo(32, 25.99999893, 32, 24.76256283);
              ctx.lineTo(32, 26.2398371);
              ctx.quadraticCurveTo(32, 25.002401, 32, 25.002401);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#8d8d8d";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(32, 27.002401);
              ctx.lineTo(33, 27.002401);
              ctx.quadraticCurveTo(33, 27.002401, 33, 28.2398371);
              ctx.lineTo(33, 26.76256283);
              ctx.quadraticCurveTo(33, 27.99999893, 33, 27.99999893);
              ctx.lineTo(32, 27.99999893);
              ctx.quadraticCurveTo(32, 27.99999893, 32, 26.76256283);
              ctx.lineTo(32, 28.2398371);
              ctx.quadraticCurveTo(32, 27.002401, 32, 27.002401);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#8d8d8d";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(32, 29.002401);
              ctx.lineTo(33, 29.002401);
              ctx.quadraticCurveTo(33, 29.002401, 33, 30.2398371);
              ctx.lineTo(33, 28.76256283);
              ctx.quadraticCurveTo(33, 29.99999893, 33, 29.99999893);
              ctx.lineTo(32, 29.99999893);
              ctx.quadraticCurveTo(32, 29.99999893, 32, 28.76256283);
              ctx.lineTo(32, 30.2398371);
              ctx.quadraticCurveTo(32, 29.002401, 32, 29.002401);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#555753";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(27.625, 31.5);
              ctx.lineTo(29.625, 31.5);
              ctx.quadraticCurveTo(29.625, 31.5, 29.625, 31.5);
              ctx.lineTo(29.625, 33.5);
              ctx.quadraticCurveTo(29.625, 33.5, 29.625, 33.5);
              ctx.lineTo(27.625, 33.5);
              ctx.quadraticCurveTo(27.625, 33.5, 27.625, 33.5);
              ctx.lineTo(27.625, 31.5);
              ctx.quadraticCurveTo(27.625, 31.5, 27.625, 31.5);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#555753";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.5;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.transform(0.1721091, 0.1072115, -0.1023985, 0.1801987,
                      18.708736, 28.85398);
              ctx.beginPath();
              ctx.moveTo(1.4894626, 22.96164);
              ctx.lineTo(-0.37207557, 25.909981);
              ctx.lineTo(-1.5799401, 22.639033);
              ctx.lineTo(-4.9592258, 21.779693);
              ctx.lineTo(-2.2216198, 19.620167);
              ctx.lineTo(-2.4485951, 16.140724);
              ctx.lineTo(0.45120293, 18.077012);
              ctx.lineTo(3.6902102, 16.785939);
              ctx.lineTo(2.744778, 20.142156);
              ctx.lineTo(4.9735699, 22.823672);
              ctx.lineTo(1.4894626, 22.96164);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#555753";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.5;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.transform(0.627451, 0, 0, 0.627451, -5.5122557, 11.656862);
              ctx.beginPath();
              ctx.moveTo(43.25, 33.21875);
              ctx.translate(41.65625, 33.21875);
              ctx.rotate(0);
              ctx.scale(1, 1);
              ctx.arc(0, 0, 1.59375, 0, 3.141592653589793, 0);
              ctx.scale(1, 1);
              ctx.rotate(0);
              ctx.translate(-41.65625, -33.21875);
              ctx.translate(41.65625, 33.21875);
              ctx.rotate(0);
              ctx.scale(1, 1);
              ctx.arc(0, 0, 1.59375, 3.141592653589793, 6.283185307179586, 0);
              ctx.scale(1, 1);
              ctx.rotate(0);
              ctx.translate(-41.65625, -33.21875);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#555753";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.5;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.transform(0.64, 0, 0, 0.64, 5.645, 14.12);
              ctx.beginPath();
              ctx.moveTo(41.375, 28.71875);
              ctx.translate(40.59375, 28.71875);
              ctx.rotate(0);
              ctx.scale(1, 1);
              ctx.arc(0, 0, 0.78125, 0, 3.141592653589793, 0);
              ctx.scale(1, 1);
              ctx.rotate(0);
              ctx.translate(-40.59375, -28.71875);
              ctx.translate(40.59375, 28.71875);
              ctx.rotate(0);
              ctx.scale(1, 1);
              ctx.arc(0, 0, 0.78125, 3.141592653589793, 6.283185307179586, 0);
              ctx.scale(1, 1);
              ctx.rotate(0);
              ctx.translate(-40.59375, -28.71875);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#555753";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.5;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.transform(0.64, 0, 0, 0.64, 7.02, 14.12);
              ctx.beginPath();
              ctx.moveTo(41.375, 28.71875);
              ctx.translate(40.59375, 28.71875);
              ctx.rotate(0);
              ctx.scale(1, 1);
              ctx.arc(0, 0, 0.78125, 0, 3.141592653589793, 0);
              ctx.scale(1, 1);
              ctx.rotate(0);
              ctx.translate(-40.59375, -28.71875);
              ctx.translate(40.59375, 28.71875);
              ctx.rotate(0);
              ctx.scale(1, 1);
              ctx.arc(0, 0, 0.78125, 3.141592653589793, 6.283185307179586, 0);
              ctx.scale(1, 1);
              ctx.rotate(0);
              ctx.translate(-40.59375, -28.71875);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#729fcf";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.5;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.transform(0.538748, 0, 0, 0.538748, -3.4940494, 13.021049);
              ctx.beginPath();
              ctx.moveTo(53.121399, 35.227882);
              ctx.translate(52.193321499999996, 35.22839176634375);
              ctx.rotate(0);
              ctx.scale(1, 1);
              ctx.arc(0, 0, 0.92807764, -0.0005492712542802616,
                      3.142141924844066, 0);
              ctx.scale(1, 1);
              ctx.rotate(0);
              ctx.translate(-52.193321499999996, -35.22839176634375);
              ctx.translate(52.193321499999996, 35.227372233656254);
              ctx.rotate(0);
              ctx.scale(1, 1);
              ctx.arc(0, 0, 0.92807764, 3.141043382335513, 6.283734578433859, 0);
              ctx.scale(1, 1);
              ctx.rotate(0);
              ctx.translate(-52.193321499999996, -35.227372233656254);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#729fcf";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.5;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(23.84753092, 32.5);
              ctx.lineTo(25.40246908, 32.5);
              ctx.quadraticCurveTo(25.625, 32.5, 25.625, 32.72253092);
              ctx.lineTo(25.625, 33.27746908);
              ctx.quadraticCurveTo(25.625, 33.5, 25.40246908, 33.5);
              ctx.lineTo(23.84753092, 33.5);
              ctx.quadraticCurveTo(23.625, 33.5, 23.625, 33.27746908);
              ctx.lineTo(23.625, 32.72253092);
              ctx.quadraticCurveTo(23.625, 32.5, 23.84753092, 32.5);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#729fcf";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(16.49804166, 12);
              ctx.lineTo(17.50195104, 12);
              ctx.quadraticCurveTo(17.9999997, 12, 17.9999997, 12);
              ctx.lineTo(17.9999997, 12.99999988);
              ctx.quadraticCurveTo(17.9999997, 12.99999988, 17.50195104,
                      12.99999988);
              ctx.lineTo(16.49804166, 12.99999988);
              ctx
                      .quadraticCurveTo(15.999993, 12.99999988, 15.999993,
                              12.99999988);
              ctx.lineTo(15.999993, 12);
              ctx.quadraticCurveTo(15.999993, 12, 16.49804166, 12);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#729fcf";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(15, 21);
              ctx.lineTo(34, 21);
              ctx.quadraticCurveTo(34, 21, 34, 22.2404156);
              ctx.lineTo(34, 20.7595844);
              ctx.quadraticCurveTo(34, 22, 34, 22);
              ctx.lineTo(15, 22);
              ctx.quadraticCurveTo(15, 22, 15, 20.7595844);
              ctx.lineTo(15, 22.2404156);
              ctx.quadraticCurveTo(15, 21, 15, 21);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#8d8d8d";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(16, 19.002401);
              ctx.lineTo(26, 19.002401);
              ctx.quadraticCurveTo(26, 19.002401, 26, 20.2398371);
              ctx.lineTo(26, 18.76256283);
              ctx.quadraticCurveTo(26, 19.99999893, 26, 19.99999893);
              ctx.lineTo(16, 19.99999893);
              ctx.quadraticCurveTo(16, 19.99999893, 16, 18.76256283);
              ctx.lineTo(16, 20.2398371);
              ctx.quadraticCurveTo(16, 19.002401, 16, 19.002401);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#8d8d8d";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(32, 19.002401);
              ctx.lineTo(33, 19.002401);
              ctx.quadraticCurveTo(33, 19.002401, 33, 20.2398371);
              ctx.lineTo(33, 18.76256283);
              ctx.quadraticCurveTo(33, 19.99999893, 33, 19.99999893);
              ctx.lineTo(32, 19.99999893);
              ctx.quadraticCurveTo(32, 19.99999893, 32, 18.76256283);
              ctx.lineTo(32, 20.2398371);
              ctx.quadraticCurveTo(32, 19.002401, 32, 19.002401);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#3465a4";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.25;
              ctx.lineCap = "round";
              ctx.lineJoin = "round";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(30, 15);
              ctx.lineTo(33, 15);
              ctx.quadraticCurveTo(33, 15, 33, 16.2404157);
              ctx.lineTo(33, 14.7595843);
              ctx.quadraticCurveTo(33, 16, 33, 16);
              ctx.lineTo(30, 16);
              ctx.quadraticCurveTo(30, 16, 30, 14.7595843);
              ctx.lineTo(30, 16.2404157);
              ctx.quadraticCurveTo(30, 15, 30, 15);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              g = ctx.createLinearGradient(19.119335, 3.0054398033000003,
                      19.119335, 44.0054400033);
              g.addColorStop(0, "rgba(255, 255, 255, 1)");
              g.addColorStop(1, "rgba(255, 255, 255, 0)");
              ctx.fillStyle = g;
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 1;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.globalAlpha = 0.25;
              ctx.beginPath();
              ctx.moveTo(17.994339, 3.0054398);
              ctx.lineTo(30.994339, 3.0054398);
              ctx.bezierCurveTo(23.836313, 7.1381278, 20.853778, 19.364879,
                      24.494339, 23.00544);
              ctx.bezierCurveTo(33.610675, 32.121776, 17.994339, 44.00544,
                      17.994339, 44.00544);
              ctx.bezierCurveTo(15.224339, 44.00544, 12.994339, 41.77544,
                      12.994339, 39.00544);
              ctx.lineTo(12.994339, 8.0054398);
              ctx.bezierCurveTo(12.994339, 5.2354398, 15.224339, 3.0054398,
                      17.994339, 3.0054398);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#000000";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.2625642418861389;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(22.1666667, 7);
              ctx.lineTo(26.8333333, 7);
              ctx.quadraticCurveTo(28, 7, 28, 8);
              ctx.lineTo(28, 8);
              ctx.quadraticCurveTo(28, 9, 26.8333333, 9);
              ctx.lineTo(22.1666667, 9);
              ctx.quadraticCurveTo(21, 9, 21, 8);
              ctx.lineTo(21, 8);
              ctx.quadraticCurveTo(21, 7, 22.1666667, 7);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              g = ctx.createLinearGradient(24.499999250000002, 7.9999999,
                      24.499999250000002, 8.9999999);
              g.addColorStop(0, "rgba(255, 255, 255, 0)");
              g.addColorStop(1, "rgba(255, 255, 255, 1)");
              ctx.fillStyle = g;
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 0.2625642418861389;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.beginPath();
              ctx.moveTo(22.1666667, 7);
              ctx.lineTo(26.8333333, 7);
              ctx.quadraticCurveTo(28, 7, 28, 8);
              ctx.lineTo(28, 8);
              ctx.quadraticCurveTo(28, 9, 26.8333333, 9);
              ctx.lineTo(22.1666667, 9);
              ctx.quadraticCurveTo(21, 9, 21, 8);
              ctx.lineTo(21, 8);
              ctx.quadraticCurveTo(21, 7, 22.1666667, 7);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "#000000";
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 1;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.transform(1.2384383, 0, 0, 1.2374368, -51.908369, -9.0844674);
              ctx.beginPath();
              ctx.moveTo(64.523495, 38.45406);
              ctx.translate(61.695068, 38.45481212061619);
              ctx.rotate(0);
              ctx.scale(1, 1);
              ctx.arc(0, 0, 2.8284271, -0.0002659147991268235,
                      3.1418585683892366, 0);
              ctx.scale(1, 1);
              ctx.rotate(0);
              ctx.translate(-61.695068, -38.45481212061619);
              ctx.translate(61.695068, 38.45330787938381);
              ctx.rotate(0);
              ctx.scale(1, 1);
              ctx.arc(0, 0, 2.8284271, 3.1413267387906663, 6.28345122197903, 0);
              ctx.scale(1, 1);
              ctx.rotate(0);
              ctx.translate(-61.695068, -38.45330787938381);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              ctx.fillStyle = "rgba(0, 0, 0, 0)";
              ctx.strokeStyle = "#ffffff";
              ctx.lineWidth = 1;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.globalAlpha = 0.800000011920929;
              ctx.beginPath();
              ctx.moveTo(23.6125001, 36.5);
              ctx.lineTo(25.3874999, 36.5);
              ctx.quadraticCurveTo(26.5, 36.5, 26.5, 37.6125);
              ctx.lineTo(26.5, 39.3875);
              ctx.quadraticCurveTo(26.5, 40.5, 25.3874999, 40.5);
              ctx.lineTo(23.6125001, 40.5);
              ctx.quadraticCurveTo(22.5, 40.5, 22.5, 39.3875);
              ctx.lineTo(22.5, 37.6125);
              ctx.quadraticCurveTo(22.5, 36.5, 23.6125001, 36.5);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.save();
              g = ctx.createLinearGradient(24.4943322015625, 42.000000609375,
                      24.4943322015625, 38.937437259375);
              g.addColorStop(0, "rgba(255, 255, 255, 1)");
              g.addColorStop(1, "rgba(255, 255, 255, 0)");
              ctx.fillStyle = g;
              ctx.strokeStyle = "rgba(0, 0, 0, 0)";
              ctx.lineWidth = 1;
              ctx.lineCap = "butt";
              ctx.lineJoin = "miter";
              ctx.miterLimit = 4;
              ctx.globalAlpha = 0.5;
              ctx.beginPath();
              ctx.moveTo(27.953175, 38.937438);
              ctx.bezierCurveTo(27.028904, 39.748992, 25.833693, 40.249964,
                      24.508006, 40.249964);
              ctx.bezierCurveTo(23.189263, 40.249964, 21.957911, 39.768752,
                      21.035493, 38.964782);
              ctx.bezierCurveTo(21.263181, 40.677198, 22.733765, 42, 24.508006,
                      42);
              ctx.bezierCurveTo(26.291154, 42, 27.736877, 40.662361, 27.953175,
                      38.937438);
              ctx.closePath();
              ctx.fill();
              ctx.stroke();
              ctx.restore();
              ctx.restore();
              ctx.restore();
          }
      }
  }
  
  var icons = [];
  for (var a in Q.Graphs) {
      var g = Q.Graphs[a];
      if(g instanceof Object){
          if(!g.name){
              g.name = a;
          }
          icons.push(g);
      }
  }
  for (var a in graphs) {
      var g = graphs[a];
      if(!g.name){
          g.name = a;
      }
      Q.registerImage(g.name, g);
  	icons.push(g);
  }
  function randomIcon() {
  	return icons[Q.randomInt(icons.length)];
  }
  
  if(Q.loadClassPath){
      Q.loadClassPath(graphs, "graphs");
  }