336:
48:
318:
The infrastructure layer can be partitioned into different levels (high-level or low-level technical services). Developers often focus on the persistence (data access) capabilities of the infrastructure layer and therefore only talk about the persistence layer or the data access layer (instead of an
314:
Some also identify a separate layer called the business infrastructure layer (BI), located between the business layer(s) and the infrastructure layer(s). It is also sometimes called the "low-level business layer" or the "business services layer". This layer is very general and can be used in several
458:
to the application tier that exposes methods of managing the stored data without exposing or creating dependencies on the data storage mechanisms. Avoiding dependencies on the storage mechanisms allows for updates or changes without the application tier clients being affected by or even aware of the
607:
for measuring performance and correlating transactions between tiers. Generally, the term "tiers" is used to describe physical distribution of components of a system on separate servers, computers, or networks (processing nodes). A three-tier architecture then will have three processing nodes. The
185:
by which developers can create flexible and reusable applications. By segregating an application into tiers, developers acquire the option of modifying or adding a specific tier, instead of reworking the entire application. N-tier architecture is a good fit for small and simple applications because
440:
This is the topmost level of the application. The presentation tier displays information related to such services as browsing merchandise, purchasing and shopping cart contents. It communicates with other tiers by which it puts out the results to the browser/client tier and all other tiers in the
326:
A layer is on top of another, because it depends on it. Every layer can exist without the layers above it, and requires the layers below it to function. Another common view is that layers do not always strictly depend on only the adjacent layer below. For example, in a relaxed layered system (as
327:
opposed to a strict layered system) a layer can also depend on all the layers below it. The relaxed layered system has more couplings and subsequently it's more difficult to change. Multi-tier architectures can use a hybrid approach so that some layers are strict while other layers are relaxed.
306:
The more usual convention is that the application layer (or service layer) is considered a sublayer of the business layer, typically encapsulating the API definition surfacing the supported business functionality. The application/business layers can, in fact, be further subdivided to emphasize
302:
If the application architecture has no explicit distinction between the business layer and the presentation layer (i.e., the presentation layer is considered part of the business layer), then a traditional client-server (two-tier) model has been implemented.
319:
infrastructure layer or technical services layer). In other words, the other kind of technical services is not always explicitly thought of as part of any particular layer.. The Data Access layer normally contains an object known as the
453:
The data tier includes the data persistence mechanisms (database servers, file shares, etc.) and the data access layer that encapsulates the persistence mechanisms and exposes the data. The data access layer should provide an
213:
is a physical structuring mechanism for the hardware elements that make up the system infrastructure. For example, a three-layer solution could easily be deployed on a single tier, such in the case of an extreme
820:
Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter; Stal, Michael (1996-08). Pattern-Oriented
Software Architecture, Volume 1, A System of Patterns. Wiley, August 1996.
386:
with well-defined interfaces, the three-tier architecture is intended to allow any of the three tiers to be upgraded or replaced independently in response to changes in requirements or
311:
pattern is used, the presenter sublayer might be used as an additional layer between the user interface layer and the business/application layer (as represented by the model sublayer).
954:"Three Tier Client/Server Architecture: Achieving Scalability, Performance, and Efficiency in Client Server Applications." Open Information Systems 10, 1 (January 1995): 3(20)
186:
of its simplicity and low-cost. Also, it can be a good starting point when architectural requirements are not clear yet. A three-tier architecture is typically composed of a
459:
change. As with the separation of any tier, there are costs for implementation and often costs to performance in exchange for improved scalability and maintainability.
205:
While the concepts of layer and tier are often used interchangeably, one fairly common point of view is that there is indeed a difference. This view holds that a
951:
447:
The logical tier is pulled out from the presentation tier and, as its layer, it controls an application’s functionality by performing detailed processing.
583:
is used to connect the separate tiers. Separate tiers often (but not necessarily) run on separate physical servers, and each tier may itself run on a
1687:
492:
dynamic content. In web-based application, front end is the content rendered by the browser. The content may be static or generated dynamically.
429:
that contains the computer data storage logic. The middle tier may be multitiered itself (in which case the overall architecture is called an "
1017:
863:
1677:
1697:
1044:
344:
112:
84:
65:
91:
825:
783:
580:
608:
term "layers" refers to a logical grouping of components which may or may not be physically located on one processing node.
970:
441:
network. In simple terms, it is a layer that users can access directly (such as a web page, or an operating system's GUI).
98:
1569:
921:
701:
637:
548:
20:
1702:
1594:
900:
726:
604:
455:
131:
600:
564:
80:
1542:
1367:
1166:
406:
1682:
1260:
975:
264:
160:
69:
1390:
1350:
1037:
890:
627:
215:
1360:
1355:
308:
209:
is a logical structuring mechanism for the conceptual elements that make up the software solution, while a
599:-tier systems is a challenging task which becomes more important when systems increase in complexity. The
1635:
1473:
413:, functional process logic that may consist of one or more separate modules running on a workstation or
1250:
652:
642:
547:
Data transfer between tiers is part of the architecture. Protocols involved may include one or more of
535:
1458:
1453:
1280:
829:
335:
178:
287:, logging, networking, and other services which are required to support a particular business layer)
105:
1692:
1498:
1463:
1430:
1080:
1030:
410:
1400:
1372:
1310:
1295:
1275:
1211:
1053:
622:
58:
36:
32:
28:
24:
1010:
1305:
1255:
1090:
647:
632:
572:
512:
243:
1656:
1559:
1405:
1385:
1330:
356:
260:
231:
167:
functions are physically separated. The most widespread use of multitier architecture is the
1468:
1425:
1420:
1410:
1320:
657:
352:
145:
8:
1508:
1493:
1488:
1345:
1230:
1176:
584:
477:
364:
1000:
806:
752:
Fowler, Martin "Patterns of
Enterprise Application Architecture" (2002). Addison Wesley.
741:
295:
describes some common uses for the above four layers, although its primary focus is the
1630:
1609:
1518:
1415:
1265:
1158:
1110:
1072:
852:
841:
789:
496:
426:
414:
368:
320:
1300:
1143:
1133:
1128:
1100:
1095:
917:
896:
821:
793:
779:
722:
697:
617:
402:
284:
279:
198:
1018:
Description of a concrete layered architecture for .NET/WPF Rich Client
Applications
974: prior to 1 November 2008 and incorporated under the "relicensing" terms of the
1599:
1340:
1285:
1206:
1196:
1186:
1181:
775:
771:
504:
391:
1589:
1535:
1513:
1290:
1245:
1216:
1191:
1171:
1118:
1085:
1061:
864:
Comparison/discussion of the GRASP Controller Layer vs. Application/Service Layer
807:
Deployment
Patterns (Microsoft Enterprise Architecture, Patterns, and Practices)
672:
667:
568:
469:
422:
372:
164:
1005:
742:
Deployment
Patterns (Microsoft Enterprise Architecture, Patterns, and Practices)
1574:
1435:
1138:
1123:
763:
348:
271:
192:
875:
1671:
1395:
1240:
1201:
1148:
662:
560:
516:
376:
1651:
1614:
1503:
1478:
1270:
1022:
992:
296:
853:
Martin Fowler explains that
Service Layer is the same as Application Layer
253:(a.k.a. UI layer, view layer, presentation tier in multitier architecture)
1604:
1579:
1564:
1483:
1315:
576:
360:
531:
485:
387:
242:
In a logical multilayer architecture for an information system with an
1584:
489:
375:
in Open
Environment Corporation (OEC), a tools company he founded in
307:
additional sublayers of distinct responsibility. For example, if the
47:
556:
527:
383:
830:
http://www.wiley.com/WileyCDA/WileyTitle/productCd-0471958697.html
520:
508:
500:
473:
965:
762:
Vicente, Alfonso; Etcheverry, Lorena; Sabiguero, Ariel (2021).
914:
Fundamentals of
Software Architecture: An Engineering Approach
694:
Fundamentals of
Software Architecture: An Engineering Approach
552:
444:
Application tier (business logic, logic tier, or middle tier)
418:
182:
761:
874:
Domain-Driven Design, the Book pp. 68-74. Retrieved from
495:
A middle dynamic content processing and generation level
275:(a.k.a. business logic layer (BLL), domain logic layer)
538:
software that manages and provides access to the data.
768:
2021 XLVII Latin
American Computing Conference (CLEI)
72:. Unsourced material may be challenged and removed.
886:
884:
595:The end-to-end traceability of data flows through
579:or other standard or proprietary protocols. Often
163:in which presentation, application processing and
19:Several terms redirect here. For other uses, see
764:"An RDBMS-only architecture for web applications"
1669:
401:Typically, the user interface runs on a desktop
881:
315:application tiers (e.g. a CurrencyConverter).
1038:
964:This article is based on material taken from
488:serving static content, and potentially some
480:websites, which are built using three tiers:
1052:
472:field, three-tier is often used to refer to
363:are developed and maintained as independent
234:has been described in various publications.
876:http://www.domaindrivendesign.org/books#DDD
398:would only affect the user interface code.
382:Apart from the usual advantages of modular
343:Three-tier architecture is a client-server
1045:
1031:
330:
246:, the following four are the most common:
132:Learn how and when to remove this message
1688:Architectural pattern (computer science)
1001:Microsoft Application Architecture Guide
911:
716:
691:
463:
334:
542:
1670:
816:
814:
1026:
339:Overview of a three-tier application.
971:Free On-line Dictionary of Computing
936:
534:, comprising both data sets and the
70:adding citations to reliable sources
41:
811:
13:
1678:Distributed computing architecture
638:Hierarchical internetworking model
21:Three-tier system (disambiguation)
14:
1714:
986:
1698:Software engineering terminology
1012:What Is the 3-Tier Architecture?
916:(1st ed.). O'Reilly Media.
912:Richards, Mark (March 3, 2020).
696:(1st ed.). O'Reilly Media.
601:Application Response Measurement
565:Windows Communication Foundation
237:
46:
1543:Enterprise Integration Patterns
957:
945:
930:
905:
868:
857:
590:
57:needs additional citations for
939:Software Architecture Patterns
846:
835:
800:
776:10.1109/CLEI53233.2021.9640017
755:
746:
735:
719:Software Architecture Patterns
710:
685:
222:or in a personal workstation.
1:
1006:Example of free 3-tier system
842:Martin Fowler's Service Layer
678:
628:Database-centric architecture
345:software architecture pattern
216:database-centric architecture
16:Computing system architecture
7:
1636:Portland Pattern Repository
611:
390:. For example, a change of
10:
1719:
653:Open Services Architecture
643:Load balancing (computing)
536:database management system
161:client–server architecture
18:
1644:
1623:
1552:
1527:
1444:
1329:
1229:
1157:
1109:
1071:
1060:
892:Applying UML and Patterns
367:, most often on separate
225:
1703:Software design patterns
1261:Event-based asynchronous
1054:Software design patterns
411:graphical user interface
377:Cambridge, Massachusetts
353:functional process logic
321:Data Access Object (DAO)
179:application architecture
81:"Multitier architecture"
1167:Chain of responsibility
995:Three Tier Architecture
978:, version 1.3 or later.
894:, 3rd edition, page 203
721:. O'Reilly Media, Inc.
717:Richards, Mark (2022).
692:Richards, Mark (2020).
331:Three-tier architecture
220:RDBMS-only architecture
169:three-tier architecture
37:Tier 4 (disambiguation)
33:Tier 3 (disambiguation)
29:Tier 2 (disambiguation)
25:Tier 1 (disambiguation)
1306:Scheduled-task pattern
1256:Double-checked locking
941:. O'Reilly Media, Inc.
648:Monolithic application
633:Front-end and back-end
433:-tier architecture").
371:. It was developed by
340:
244:object-oriented design
152:(often referred to as
150:multitier architecture
1683:Software architecture
1657:Architectural pattern
1560:Christopher Alexander
603:defines concepts and
464:Web development usage
357:computer data storage
338:
232:architectural pattern
1469:Dependency injection
1426:Inversion of control
1421:Data transfer object
1321:Thread-local storage
658:Rich web application
543:Other considerations
409:and uses a standard
355:("business rules"),
309:model–view–presenter
293:Domain Driven Design
146:software engineering
66:improve this article
1474:Intercepting filter
623:Client–server model
478:electronic commerce
1631:The Hillside Group
1416:Data access object
1266:Guarded suspension
1251:Binding properties
952:Eckerson, Wayne W.
497:application server
415:application server
341:
267:Controller Layer )
251:Presentation layer
157:-tier architecture
35:, and
1665:
1664:
1459:Business delegate
1391:Publish–subscribe
1225:
1224:
828:. Retrieved from
826:978-0-471-95869-7
785:978-1-6654-9503-5
618:Abstraction layer
437:Presentation tier
396:presentation tier
285:persistence layer
280:Data access layer
257:Application layer
142:
141:
134:
116:
1710:
1464:Composite entity
1341:Front controller
1081:Abstract factory
1069:
1068:
1047:
1040:
1033:
1024:
1023:
980:
979:
961:
955:
949:
943:
942:
937:Richards, Mark.
934:
928:
927:
909:
903:
888:
879:
872:
866:
861:
855:
850:
844:
839:
833:
818:
809:
804:
798:
797:
770:. pp. 1–9.
759:
753:
750:
744:
739:
733:
732:
714:
708:
707:
689:
392:operating system
351:(presentation),
137:
130:
126:
123:
117:
115:
74:
50:
42:
1718:
1717:
1713:
1712:
1711:
1709:
1708:
1707:
1693:Software design
1668:
1667:
1666:
1661:
1640:
1619:
1610:Douglas Schmidt
1590:Ward Cunningham
1548:
1536:Design Patterns
1523:
1514:Method chaining
1446:
1440:
1401:Service locator
1332:
1325:
1296:Read–write lock
1232:
1221:
1212:Template method
1153:
1105:
1063:
1056:
1051:
993:Linux journal,
989:
984:
983:
963:
962:
958:
950:
946:
935:
931:
924:
910:
906:
889:
882:
873:
869:
862:
858:
851:
847:
840:
836:
819:
812:
805:
801:
786:
760:
756:
751:
747:
740:
736:
729:
715:
711:
704:
690:
686:
681:
673:Web application
668:Shearing layers
614:
593:
545:
470:web development
466:
423:database server
373:John J. Donovan
333:
240:
228:
165:data management
138:
127:
121:
118:
75:
73:
63:
51:
40:
17:
12:
11:
5:
1716:
1706:
1705:
1700:
1695:
1690:
1685:
1680:
1663:
1662:
1660:
1659:
1654:
1648:
1646:
1642:
1641:
1639:
1638:
1633:
1627:
1625:
1621:
1620:
1618:
1617:
1612:
1607:
1602:
1597:
1592:
1587:
1582:
1577:
1575:John Vlissides
1572:
1567:
1562:
1556:
1554:
1550:
1549:
1547:
1546:
1539:
1531:
1529:
1525:
1524:
1522:
1521:
1516:
1511:
1506:
1501:
1496:
1491:
1486:
1481:
1476:
1471:
1466:
1461:
1456:
1450:
1448:
1442:
1441:
1439:
1438:
1433:
1428:
1423:
1418:
1413:
1408:
1403:
1398:
1393:
1388:
1383:
1375:
1370:
1365:
1364:
1363:
1358:
1348:
1343:
1337:
1335:
1327:
1326:
1324:
1323:
1318:
1313:
1308:
1303:
1298:
1293:
1288:
1283:
1278:
1273:
1268:
1263:
1258:
1253:
1248:
1243:
1237:
1235:
1227:
1226:
1223:
1222:
1220:
1219:
1214:
1209:
1204:
1199:
1194:
1189:
1184:
1179:
1174:
1169:
1163:
1161:
1155:
1154:
1152:
1151:
1146:
1141:
1136:
1131:
1126:
1121:
1115:
1113:
1107:
1106:
1104:
1103:
1098:
1093:
1091:Factory method
1088:
1083:
1077:
1075:
1066:
1058:
1057:
1050:
1049:
1042:
1035:
1027:
1021:
1020:
1015:
1008:
1003:
998:
988:
987:External links
985:
982:
981:
956:
944:
929:
923:978-1492043454
922:
904:
880:
867:
856:
845:
834:
810:
799:
784:
754:
745:
734:
727:
709:
703:978-1492043454
702:
683:
682:
680:
677:
676:
675:
670:
665:
660:
655:
650:
645:
640:
635:
630:
625:
620:
613:
610:
592:
589:
544:
541:
540:
539:
524:
493:
465:
462:
461:
460:
451:
448:
445:
442:
438:
349:user interface
332:
329:
289:
288:
276:
272:Business layer
268:
254:
239:
236:
227:
224:
140:
139:
54:
52:
45:
15:
9:
6:
4:
3:
2:
1715:
1704:
1701:
1699:
1696:
1694:
1691:
1689:
1686:
1684:
1681:
1679:
1676:
1675:
1673:
1658:
1655:
1653:
1650:
1649:
1647:
1643:
1637:
1634:
1632:
1629:
1628:
1626:
1622:
1616:
1613:
1611:
1608:
1606:
1603:
1601:
1600:Robert Martin
1598:
1596:
1595:Martin Fowler
1593:
1591:
1588:
1586:
1583:
1581:
1578:
1576:
1573:
1571:
1570:Ralph Johnson
1568:
1566:
1563:
1561:
1558:
1557:
1555:
1551:
1545:
1544:
1540:
1538:
1537:
1533:
1532:
1530:
1526:
1520:
1517:
1515:
1512:
1510:
1507:
1505:
1502:
1500:
1497:
1495:
1492:
1490:
1487:
1485:
1482:
1480:
1477:
1475:
1472:
1470:
1467:
1465:
1462:
1460:
1457:
1455:
1452:
1451:
1449:
1443:
1437:
1434:
1432:
1429:
1427:
1424:
1422:
1419:
1417:
1414:
1412:
1409:
1407:
1406:Active record
1404:
1402:
1399:
1397:
1396:Naked objects
1394:
1392:
1389:
1387:
1386:Specification
1384:
1382:
1380:
1376:
1374:
1371:
1369:
1366:
1362:
1359:
1357:
1354:
1353:
1352:
1349:
1347:
1344:
1342:
1339:
1338:
1336:
1334:
1331:Architectural
1328:
1322:
1319:
1317:
1314:
1312:
1309:
1307:
1304:
1302:
1299:
1297:
1294:
1292:
1289:
1287:
1284:
1282:
1279:
1277:
1274:
1272:
1269:
1267:
1264:
1262:
1259:
1257:
1254:
1252:
1249:
1247:
1244:
1242:
1241:Active object
1239:
1238:
1236:
1234:
1228:
1218:
1215:
1213:
1210:
1208:
1205:
1203:
1200:
1198:
1195:
1193:
1190:
1188:
1185:
1183:
1180:
1178:
1175:
1173:
1170:
1168:
1165:
1164:
1162:
1160:
1156:
1150:
1147:
1145:
1142:
1140:
1137:
1135:
1132:
1130:
1127:
1125:
1122:
1120:
1117:
1116:
1114:
1112:
1108:
1102:
1099:
1097:
1094:
1092:
1089:
1087:
1084:
1082:
1079:
1078:
1076:
1074:
1070:
1067:
1065:
1059:
1055:
1048:
1043:
1041:
1036:
1034:
1029:
1028:
1025:
1019:
1016:
1014:
1013:
1009:
1007:
1004:
1002:
999:
997:
996:
991:
990:
977:
973:
972:
967:
960:
953:
948:
940:
933:
925:
919:
915:
908:
902:
901:0-13-148906-2
898:
895:
893:
887:
885:
877:
871:
865:
860:
854:
849:
843:
838:
831:
827:
823:
817:
815:
808:
803:
795:
791:
787:
781:
777:
773:
769:
765:
758:
749:
743:
738:
730:
728:9781098134273
724:
720:
713:
705:
699:
695:
688:
684:
674:
671:
669:
666:
664:
663:Service layer
661:
659:
656:
654:
651:
649:
646:
644:
641:
639:
636:
634:
631:
629:
626:
624:
621:
619:
616:
615:
609:
606:
602:
598:
588:
586:
582:
578:
574:
570:
566:
562:
561:.NET Remoting
558:
554:
550:
537:
533:
529:
525:
522:
518:
514:
510:
506:
502:
498:
494:
491:
487:
483:
482:
481:
479:
475:
471:
457:
452:
449:
446:
443:
439:
436:
435:
434:
432:
428:
424:
420:
416:
412:
408:
404:
399:
397:
393:
389:
385:
380:
378:
374:
370:
366:
362:
358:
354:
350:
347:in which the
346:
337:
328:
324:
322:
316:
312:
310:
304:
300:
298:
294:
286:
282:
281:
277:
274:
273:
269:
266:
262:
261:service layer
258:
255:
252:
249:
248:
247:
245:
238:Common layers
235:
233:
230:The "Layers"
223:
221:
217:
212:
208:
203:
201:
200:
195:
194:
189:
184:
180:
176:
172:
170:
166:
162:
158:
156:
151:
147:
136:
133:
125:
114:
111:
107:
104:
100:
97:
93:
90:
86:
83: –
82:
78:
77:Find sources:
71:
67:
61:
60:
55:This article
53:
49:
44:
43:
38:
34:
30:
26:
22:
1652:Anti-pattern
1615:Linda Rising
1541:
1534:
1479:Lazy loading
1411:Identity map
1378:
1377:
1062:Gang of Four
1011:
994:
969:
959:
947:
938:
932:
913:
907:
891:
870:
859:
848:
837:
802:
767:
757:
748:
737:
718:
712:
693:
687:
596:
594:
591:Traceability
577:web services
546:
484:A front-end
467:
430:
400:
395:
381:
342:
325:
317:
313:
305:
301:
297:domain layer
292:
290:
278:
270:
256:
250:
241:
229:
219:
210:
206:
204:
197:
196:tier, and a
191:
188:presentation
187:
174:
173:
168:
154:
153:
149:
143:
128:
122:January 2008
119:
109:
102:
95:
88:
76:
64:Please help
59:verification
56:
1624:Communities
1605:Jim Coplien
1580:Grady Booch
1565:Erich Gamma
1509:Type tunnel
1494:Object pool
1489:Null object
1484:Mock object
1346:Interceptor
1316:Thread pool
1231:Concurrency
1177:Interpreter
526:A back-end
476:, commonly
407:workstation
361:data access
181:provides a
1672:Categories
1519:Delegation
1454:Blackboard
1159:Behavioral
1111:Structural
1073:Creational
966:three-tier
679:References
581:middleware
532:data store
486:web server
388:technology
92:newspapers
1585:Kent Beck
1311:Semaphore
1301:Scheduler
1144:Flyweight
1134:Decorator
1129:Composite
1101:Singleton
1096:Prototype
794:245387844
450:Data tier
427:mainframe
417:, and an
369:platforms
291:The book
1645:See also
1447:patterns
1333:patterns
1286:Proactor
1233:patterns
1207:Strategy
1197:Observer
1187:Mediator
1182:Iterator
1064:patterns
612:See also
557:Java RMI
528:database
474:websites
384:software
283:(a.k.a.
259:(a.k.a.
190:tier, a
1499:Servant
1431:Model 2
1291:Reactor
1281:Monitor
1246:Balking
1217:Visitor
1192:Memento
1172:Command
1119:Adapter
1086:Builder
968:at the
585:cluster
569:sockets
521:Node.js
509:ASP.NET
501:Symfony
499:(e.g.,
468:In the
394:in the
365:modules
218:called
159:) is a
106:scholar
1553:People
1436:Broker
1139:Facade
1124:Bridge
920:
899:
824:
792:
782:
725:
700:
513:Django
505:Spring
490:cached
226:Layers
202:tier.
177:-tier
108:
101:
94:
87:
79:
31:,
27:,
23:,
1528:Books
1445:Other
1381:-tier
1202:State
1149:Proxy
790:S2CID
553:CORBA
517:Rails
421:on a
419:RDBMS
265:GRASP
207:layer
193:logic
183:model
113:JSTOR
99:books
1504:Twin
1361:MVVM
1276:Lock
1271:Join
976:GFDL
918:ISBN
897:ISBN
822:ISBN
780:ISBN
723:ISBN
698:ISBN
605:APIs
549:SNMP
359:and
211:tier
199:data
85:news
1373:ECS
1368:ADR
1356:MVP
1351:MVC
772:doi
573:UDP
530:or
456:API
425:or
405:or
263:or
144:In
68:by
1674::
883:^
813:^
788:.
778:.
766:.
587:.
575:,
571:,
567:,
563:,
559:,
555:,
551:,
523:).
519:,
515:,
511:,
507:,
503:,
403:PC
379:.
323:.
299:.
171:.
148:,
1379:n
1046:e
1039:t
1032:v
926:.
878:.
832:.
796:.
774::
731:.
706:.
597:n
431:n
175:N
155:n
135:)
129:(
124:)
120:(
110:·
103:·
96:·
89:·
62:.
39:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.