@startuml
' convert it with additional command line argument -DRELATIVE_INCLUDE="./.." to use locally
!if %variable_exists("RELATIVE_INCLUDE")
  !include %get_variable_value("RELATIVE_INCLUDE")/C4_Component.puml
!else
  !include https://gitea.utapp.cn/github-mirrors/C4-PlantUML/raw/branch/ut/C4_Component.puml
!endif

System(RelFrom, RelFrom)
System(BiRelFrom, BiRelFrom)

System(RelShort, RelShort)
System(BiRelShort, BiRelShort)

System(RelLong, RelLong)
System(BiRelLong, BiRelLong)

Rel_(RelFrom, To_Rel_UP, "A label", "-UP->>")
Rel_(RelFrom, To_Rel_DOWN, "A label", "A techn", "-DOWN->>")

Rel(RelFrom, "To_Rel", "A label")
Rel(RelFrom, "To_Rel_Tech", "A label", "A techn")
Rel_Back(RelFrom, "To_Rel_Back", "A label")
Rel_Back(RelFrom, "To_Rel_Back_Tech", "A label", "A techn")
Rel_Neighbor(RelFrom, "To_Rel_Neighbor", "A label")
Rel_Neighbor(RelFrom, "To_Rel_Neighbor_Tech", "A label", "A techn")
Rel_Back_Neighbor(RelFrom, "To_Rel_Back_Neighbor", "A label")
Rel_Back_Neighbor(RelFrom, "To_Rel_Back_Neighbor_Tech", "A label", "A techn")

BiRel(BiRelFrom, "To_BiRel", "A label")
BiRel(BiRelFrom, "To_BiRel_Tech", "A label", "A techn")
BiRel_Neighbor(BiRelFrom, "To_BiRel_Neighbor", "A label")
BiRel_Neighbor(BiRelFrom, "To_BiRel_Neighbor_Tech", "A label", "A techn")

Rel_D(RelShort, "To_Rel_D", "A label")
Rel_D(RelShort, "To_Rel_D_Tech", "A label", "A techn")
Rel_Down(RelLong, "To_Rel_Down", "A label")
Rel_Down(RelLong, "To_Rel_Down_Tech", "A label", "A techn")
Rel_L(RelShort, "To_Rel_L", "A label")
Rel_L(RelShort, "To_Rel_L_Tech", "A label", "A techn")
Rel_Left(RelLong, "To_Rel_Left", "A label")
Rel_Left(RelLong, "To_Rel_Left_Tech", "A label", "A techn")
Rel_R(RelShort, "To_Rel_R", "A label")
Rel_R(RelShort, "To_Rel_R_Tech", "A label", "A techn")
Rel_Right(RelLong, "To_Rel_Right", "A label")
Rel_Right(RelLong, "To_Rel_Right_Tech", "A label", "A techn")
Rel_U(RelShort, "To_Rel_U", "A label")
Rel_U(RelShort, "To_Rel_U_Tech", "A label", "A techn")
Rel_Up(RelLong, "To_Rel_Up", "A label")
Rel_Up(RelLong, "To_Rel_Up_Tech", "A label", "A techn")

BiRel_D(BiRelShort, "To_BiRel_D", "A label")
BiRel_D(BiRelShort, "To_BiRel_D_Tech", "A label", "A techn")
BiRel_Down(BiRelLong, "To_BiRel_Down", "A label")
BiRel_Down(BiRelLong, "To_BiRel_Down_Tech", "A label", "A techn")
BiRel_L(BiRelShort, "To_BiRel_L", "A label")
BiRel_L(BiRelShort, "To_BiRel_L_Tech", "A label", "A techn")
BiRel_Left(BiRelLong, "To_BiRel_Left", "A label")
BiRel_Left(BiRelLong, "To_BiRel_Left_Tech", "A label", "A techn")
BiRel_R(BiRelShort, "To_BiRel_R", "A label")
BiRel_R(BiRelShort, "To_BiRel_R_Tech", "A label", "A techn")
BiRel_Right(BiRelLong, "To_BiRel_Right", "A label")
BiRel_Right(BiRelLong, "To_BiRel_Right_Tech", "A label", "A techn")
BiRel_U(BiRelShort, "To_BiRel_U", "A label")
BiRel_U(BiRelShort, "To_BiRel_U_Tech", "A label", "A techn")
BiRel_Up(BiRelLong, "To_BiRel_Up", "A label")
BiRel_Up(BiRelLong, "To_BiRel_Up_Tech", "A label", "A techn")

Lay_U(RelFrom, BiRelFrom)
Lay_D(RelFrom, RelShort)
Lay_D(RelShort, RelLong)
Lay_R(RelLong, BiRelShort)
Lay_L(RelLong, BiRelLong)
@enduml
